@baicie/ncu 0.1.21 → 0.1.25

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.
@@ -0,0 +1,374 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n&&t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let u=require(`path`);u=l(u);let d=require(`prompts-ncu`);d=l(d);let f=require(`spawn-please`);f=l(f);let p=require(`fs`);p=l(p);let m=require(`os`);m=l(m);let h=require(`cli-table3`);h=l(h);let g=require(`fs/promises`);g=l(g);let _=require(`hosted-git-info`);_=l(_);let v=require(`url`),y=require(`parse-github-url`);y=l(y);let b=require(`semver`);b=l(b);let x=require(`semver-utils`);x=l(x);let S=require(`util`);S=l(S);let C=require(`camelcase`);C=l(C);let w=require(`fast-memoize`);w=l(w);let T=require(`ini`);T=l(T);let E=require(`npm-registry-fetch`);E=l(E);let D=require(`untildify`);D=l(D);let O=require(`find-up`),k=require(`node:fs`);k=l(k);let A=require(`node:os`);A=l(A);let j=require(`node:path`);j=l(j);let M=require(`js-yaml`);M=l(M);let N=require(`jsonlines`);N=l(N);let ee=require(`node:stream/consumers`),te=require(`fast-glob`);te=l(te);let ne=require(`picomatch`);ne=l(ne);let re=require(`rc-config-loader`),ie=require(`dequal`),ae=require(`node:child_process`);ae=l(ae);let oe=require(`node:util`),se=require(`fp-and-or`),ce=require(`p-map`);ce=l(ce);let le=require(`progress`);le=l(le);let ue=require(`jsonc-parser`);var de=`0.1.25`,fe=`https://github.com/baicie/npm-check-updates`,pe={url:`https://github.com/raineorshine/npm-check-updates/issues`},me={name:`@baicie/ncu`,version:de,author:`Tomas Junnonen <tomas1@gmail.com>`,license:`Apache-2.0`,type:`module`,contributors:[`Raine Revere (https://github.com/raineorshine)`,`Imamuzzaki Abu Salam <imamuzzaki@gmail.com>`],description:`Find newer versions of dependencies than what your package.json allows`,keywords:[`dependencies`,`npm`,`package.json`,`update`,`upgrade`,`versions`],engines:{node:`>=20.0.0`,npm:`>=8.12.1`},main:`dist/cjs/index.cjs`,types:`dist/esm/index.mjs`,exports:{".":{types:`./dist/esm/index.d.mts`,module:`./dist/esm/index.mjs`,import:`./dist/esm/index.mjs`,require:`./dist/esm/index.cjs`}},scripts:{dev:`rolldown --watch -c`,build:`rimraf dist && npm run build:options && rolldown -m -c`,"build:options":`vite-node src/scripts/build-options.ts`,"build:analyze":`rimraf dist && npm run build:options && ANALYZER=true vite build`,lint:`cross-env FORCE_COLOR=1 npm-run-all --parallel --aggregate-output lint:*`,"lint:markdown":`markdownlint "**/*.md" --ignore "**/node_modules/**/*.md" --ignore build --config .markdownlint.cjs`,"lint:src":`eslint --cache`,prepublishOnly:`npm run build`,prettier:`prettier . --check`,"prettier:fix":`prettier . --write`,test:`npm run test:unit && npm run test:e2e`,"test:bun":`test/bun-install.sh && mocha test/bun`,"test:unit":`mocha test test/package-managers/*`,"test:e2e":`./test/e2e.sh`,ncu:`node dist/cjs/cli.cjs`,release:`tsx scripts/release.ts`,"ci-publish":`tsx scripts/publish.ts`,postinstall:`simple-git-hooks`},"simple-git-hooks":{"pre-commit":`pnpm lint-staged`,"commit-msg":`node -e "import('@baicie/scripts').then(m => m.verifyCommit())"`},"lint-staged":{"*.{js,json}":[`prettier --write`],"*.ts?(x)":[`eslint --fix`,`prettier --parser=typescript --write`]},bin:{"npm-check-updates":`dist/cjs/cli.cjs`,ncu:`dist/cjs/cli.cjs`},repository:{type:`git`,url:`git+https://github.com/baicie/npm-check-updates.git`},homepage:fe,bugs:pe,overrides:{ip:`2.0.1`,jsonparse:`https://github.com/ARitz-Cracker/jsonparse/tree/patch-1`,"@yarnpkg/parsers":`2.6.0`},dependencies:{camelcase:`^9.0.0`,chalk:`^5.6.2`,"cli-table3":`^0.6.5`,commander:`^14.0.2`,dequal:`^2.0.3`,"fast-glob":`^3.3.3`,"fast-memoize":`^2.5.2`,"find-up":`8.0.0`,"fp-and-or":`^1.0.2`,"hosted-git-info":`^9.0.2`,ini:`^6.0.0`,"js-yaml":`^4.1.1`,"jsonc-parser":`^3.3.1`,jsonlines:`^0.1.1`,lodash:`^4.17.21`,"npm-registry-fetch":`^19.1.1`,"p-map":`^7.0.4`,"parse-github-url":`^1.0.3`,picomatch:`^4.0.3`,progress:`^2.0.3`,"prompts-ncu":`^3.0.2`,"rc-config-loader":`^4.1.3`,rfdc:`^1.4.1`,semver:`^7.7.3`,"semver-utils":`^1.1.4`,"spawn-please":`^3.0.0`,untildify:`^6.0.0`,"update-notifier":`^7.3.1`},devDependencies:{"@baicie/release":`^0.1.11`,"@baicie/scripts":`^0.1.2`,"@eslint/js":`^9.39.2`,"@trivago/prettier-plugin-sort-imports":`^6.0.2`,"@types/bun":`^1.3.6`,"@types/chai":`^5.2.3`,"@types/chai-as-promised":`^8.0.2`,"@types/chai-string":`^1.4.5`,"@types/cli-table":`^0.3.4`,"@types/hosted-git-info":`^3.0.5`,"@types/ini":`^4.1.1`,"@types/js-yaml":`^4.0.9`,"@types/jsonlines":`^0.1.5`,"@types/lodash":`^4.17.23`,"@types/mocha":`^10.0.10`,"@types/node":`^25.0.8`,"@types/npm-registry-fetch":`^8.0.9`,"@types/parse-github-url":`^1.0.3`,"@types/picomatch":`^4.0.2`,"@types/progress":`^2.0.7`,"@types/prompts":`^2.4.9`,"@types/semver":`^7.7.1`,"@types/semver-utils":`^1.1.3`,"@types/sinon":`^21.0.0`,"@types/update-notifier":`^6.0.8`,"@typescript-eslint/eslint-plugin":`^8.53.0`,"@typescript-eslint/parser":`^8.53.0`,chai:`^6.2.2`,"chai-as-promised":`^8.0.2`,"chai-string":`^1.6.0`,"cross-env":`^10.1.0`,eslint:`^9.39.2`,"eslint-config-prettier":`^10.1.8`,"eslint-config-raine":`^0.5.0`,"eslint-config-standard":`^17.1.0`,"eslint-plugin-import":`^2.32.0`,"eslint-plugin-jsdoc":`^62.0.0`,"eslint-plugin-n":`^17.23.2`,"eslint-plugin-promise":`^7.2.1`,"lint-staged":`^16.2.7`,"markdownlint-cli":`^0.47.0`,mocha:`^11.7.5`,"npm-run-all":`^4.1.5`,prettier:`^3.8.0`,rimraf:`^6.1.2`,rolldown:`1.0.0-beta.60`,"rolldown-plugin-dts":`^0.21.1`,"rollup-plugin-node-externals":`^8.1.2`,"rollup-plugin-visualizer":`^6.0.5`,should:`^13.2.3`,"simple-git-hooks":`^2.13.1`,sinon:`^21.0.1`,"source-map-support":`^0.5.21`,"strip-ansi":`^7.1.2`,"ts-node":`^10.9.2`,tsx:`^4.21.0`,typescript:`^5.9.3`,"typescript-eslint":`^8.53.0`,"typescript-json-schema":`^0.67.1`,verdaccio:`^6.2.4`,vite:`^7.3.1`,"vite-bundle-analyzer":`^1.3.2`,"vite-node":`^5.2.0`,"vite-plugin-dts":`^4.5.4`,yarn:`^1.22.22`},files:[`dist`,`!**/test/**`],mocha:{"check-leaks":!0,extension:[`test.ts`],require:[`source-map-support/register`,`ts-node/register`],timeout:6e4,"trace-deprecation":!0,"trace-warnings":!0,use_strict:!0},packageManager:`pnpm@10.28.0`,publishConfig:{access:`public`,registry:`https://registry.npmjs.org/`}};function P(e,t,n={}){let r=Array.isArray(e);return t||=(e=>({[e]:!0})),Object.entries(e||{}).forEach(([e,i],a)=>{let o=r?t(i,a,n):t(e,i,n);Object.entries(o||{}).forEach(e=>{n[e[0]]=e[1]})}),n}var F=P;const he={blue:!0,bold:!0,cyan:!0,gray:!0,green:!0,magenta:!0,red:!0,yellow:!0},ge=F(he,e=>({[e]:e=>e.toString()}));let _e;const ve=async e=>{let{default:t,Chalk:n}=await import(`chalk`);_e=e===!0?new n({level:1}):e===null?ge:t},ye=()=>{if(!_e)throw Error(`Chalk has not been imported yet. Chalk is a dynamic import and requires that you await { chalkInit } from './lib/chalk'.`)},be=F(he,e=>{let t=t=>(ye(),_e[e].bold(t)),n=t=>(ye(),_e[e](t));return n.bold=t,{[e]:n}});var I=be;const xe=(e,t)=>F(e,(e,n)=>t(e,n)?{[e]:n}:null);var L=xe;const Se=e=>g.default.stat(e).then(()=>!0,()=>!1);var Ce=Se;async function we(e,{pkgFile:t}={}){let n=require.resolve.paths(e)||[],r=t?[u.default.join(u.default.dirname(t),`node_modules`)]:[],i=[u.default.join(process.cwd(),`node_modules`)],a=[...r,...i,...n];for(let t of a){let n=u.default.join(t,e,`package.json`);if(await Ce(n))try{return JSON.parse(await g.default.readFile(n,`utf-8`))}catch{}}return null}var Te=we;async function Ee(e,t,{pkgFile:n}={}){return t?t.version:(await Te(e,{pkgFile:n}))?.version??null}var De=Ee;async function Oe(e,{pkgFile:t}={}){return(await Te(e,{pkgFile:t}))?.repository??null}async function ke(e,t,{pkgFile:n}={}){let r=t?t.repository?t.repository:null:await Oe(e,{pkgFile:n});if(!r)return null;let i,a=``;if(typeof r==`string`){i=r;try{let e=new v.URL(i);if(e.protocol===`https:`||e.protocol===`http:`)return i}catch{}}else typeof r.url==`string`&&(i=r.url,typeof r.directory==`string`&&(a=r.directory));if(typeof i==`string`&&typeof a==`string`){let e=_.default.fromUrl(i)?.browse(a);return e===void 0?i:e.replace(/\/$/,``).replace(/\/tree\/HEAD$/,``)}return null}var Ae=ke,R=o(((e,t)=>{t.exports=Array.isArray})),je=o(((e,t)=>{t.exports=typeof global==`object`&&global&&global.Object===Object&&global})),z=o(((e,t)=>{var n=je(),r=typeof self==`object`&&self&&self.Object===Object&&self;t.exports=n||r||Function(`return this`)()})),Me=o(((e,t)=>{t.exports=z().Symbol})),Ne=o(((e,t)=>{var n=Me(),r=Object.prototype,i=r.hasOwnProperty,a=r.toString,o=n?n.toStringTag:void 0;function s(e){var t=i.call(e,o),n=e[o];try{e[o]=void 0;var r=!0}catch{}var s=a.call(e);return r&&(t?e[o]=n:delete e[o]),s}t.exports=s})),Pe=o(((e,t)=>{var n=Object.prototype.toString;function r(e){return n.call(e)}t.exports=r})),Fe=o(((e,t)=>{var n=Me(),r=Ne(),i=Pe(),a=`[object Null]`,o=`[object Undefined]`,s=n?n.toStringTag:void 0;function c(e){return e==null?e===void 0?o:a:s&&s in Object(e)?r(e):i(e)}t.exports=c})),Ie=o(((e,t)=>{function n(e){return typeof e==`object`&&!!e}t.exports=n})),Le=o(((e,t)=>{var n=Fe(),r=Ie(),i=`[object Symbol]`;function a(e){return typeof e==`symbol`||r(e)&&n(e)==i}t.exports=a})),Re=o(((e,t)=>{var n=R(),r=Le(),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;function o(e,t){if(n(e))return!1;var o=typeof e;return o==`number`||o==`symbol`||o==`boolean`||e==null||r(e)?!0:a.test(e)||!i.test(e)||t!=null&&e in Object(t)}t.exports=o})),ze=o(((e,t)=>{function n(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}t.exports=n})),Be=o(((e,t)=>{var n=Fe(),r=ze(),i=`[object AsyncFunction]`,a=`[object Function]`,o=`[object GeneratorFunction]`,s=`[object Proxy]`;function c(e){if(!r(e))return!1;var t=n(e);return t==a||t==o||t==i||t==s}t.exports=c})),Ve=o(((e,t)=>{t.exports=z()[`__core-js_shared__`]})),He=o(((e,t)=>{var n=Ve(),r=function(){var e=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function i(e){return!!r&&r in e}t.exports=i})),Ue=o(((e,t)=>{var n=Function.prototype.toString;function r(e){if(e!=null){try{return n.call(e)}catch{}try{return e+``}catch{}}return``}t.exports=r})),We=o(((e,t)=>{var n=Be(),r=He(),i=ze(),a=Ue(),o=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,d=l.hasOwnProperty,f=RegExp(`^`+u.call(d).replace(o,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function p(e){return!i(e)||r(e)?!1:(n(e)?f:s).test(a(e))}t.exports=p})),Ge=o(((e,t)=>{function n(e,t){return e?.[t]}t.exports=n})),Ke=o(((e,t)=>{var n=We(),r=Ge();function i(e,t){var i=r(e,t);return n(i)?i:void 0}t.exports=i})),qe=o(((e,t)=>{t.exports=Ke()(Object,`create`)})),Je=o(((e,t)=>{var n=qe();function r(){this.__data__=n?n(null):{},this.size=0}t.exports=r})),Ye=o(((e,t)=>{function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}t.exports=n})),Xe=o(((e,t)=>{var n=qe(),r=`__lodash_hash_undefined__`,i=Object.prototype.hasOwnProperty;function a(e){var t=this.__data__;if(n){var a=t[e];return a===r?void 0:a}return i.call(t,e)?t[e]:void 0}t.exports=a})),Ze=o(((e,t)=>{var n=qe(),r=Object.prototype.hasOwnProperty;function i(e){var t=this.__data__;return n?t[e]!==void 0:r.call(t,e)}t.exports=i})),Qe=o(((e,t)=>{var n=qe(),r=`__lodash_hash_undefined__`;function i(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=n&&t===void 0?r:t,this}t.exports=i})),$e=o(((e,t)=>{var n=Je(),r=Ye(),i=Xe(),a=Ze(),o=Qe();function s(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=n,s.prototype.delete=r,s.prototype.get=i,s.prototype.has=a,s.prototype.set=o,t.exports=s})),et=o(((e,t)=>{function n(){this.__data__=[],this.size=0}t.exports=n})),tt=o(((e,t)=>{function n(e,t){return e===t||e!==e&&t!==t}t.exports=n})),nt=o(((e,t)=>{var n=tt();function r(e,t){for(var r=e.length;r--;)if(n(e[r][0],t))return r;return-1}t.exports=r})),rt=o(((e,t)=>{var n=nt(),r=Array.prototype.splice;function i(e){var t=this.__data__,i=n(t,e);return i<0?!1:(i==t.length-1?t.pop():r.call(t,i,1),--this.size,!0)}t.exports=i})),it=o(((e,t)=>{var n=nt();function r(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}t.exports=r})),at=o(((e,t)=>{var n=nt();function r(e){return n(this.__data__,e)>-1}t.exports=r})),ot=o(((e,t)=>{var n=nt();function r(e,t){var r=this.__data__,i=n(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}t.exports=r})),st=o(((e,t)=>{var n=et(),r=rt(),i=it(),a=at(),o=ot();function s(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=n,s.prototype.delete=r,s.prototype.get=i,s.prototype.has=a,s.prototype.set=o,t.exports=s})),ct=o(((e,t)=>{t.exports=Ke()(z(),`Map`)})),lt=o(((e,t)=>{var n=$e(),r=st(),i=ct();function a(){this.size=0,this.__data__={hash:new n,map:new(i||r),string:new n}}t.exports=a})),ut=o(((e,t)=>{function n(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}t.exports=n})),dt=o(((e,t)=>{var n=ut();function r(e,t){var r=e.__data__;return n(t)?r[typeof t==`string`?`string`:`hash`]:r.map}t.exports=r})),ft=o(((e,t)=>{var n=dt();function r(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}t.exports=r})),pt=o(((e,t)=>{var n=dt();function r(e){return n(this,e).get(e)}t.exports=r})),mt=o(((e,t)=>{var n=dt();function r(e){return n(this,e).has(e)}t.exports=r})),ht=o(((e,t)=>{var n=dt();function r(e,t){var r=n(this,e),i=r.size;return r.set(e,t),this.size+=r.size==i?0:1,this}t.exports=r})),gt=o(((e,t)=>{var n=lt(),r=ft(),i=pt(),a=mt(),o=ht();function s(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=n,s.prototype.delete=r,s.prototype.get=i,s.prototype.has=a,s.prototype.set=o,t.exports=s})),_t=o(((e,t)=>{var n=gt(),r=`Expected a function`;function i(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(r);var a=function(){var n=arguments,r=t?t.apply(this,n):n[0],i=a.cache;if(i.has(r))return i.get(r);var o=e.apply(this,n);return a.cache=i.set(r,o)||i,o};return a.cache=new(i.Cache||n),a}i.Cache=n,t.exports=i})),vt=o(((e,t)=>{var n=_t(),r=500;function i(e){var t=n(e,function(e){return i.size===r&&i.clear(),e}),i=t.cache;return t}t.exports=i})),yt=o(((e,t)=>{var n=vt(),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g;t.exports=n(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(r,function(e,n,r,a){t.push(r?a.replace(i,`$1`):n||e)}),t})})),bt=o(((e,t)=>{function n(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}t.exports=n})),xt=o(((e,t)=>{var n=Me(),r=bt(),i=R(),a=Le(),o=1/0,s=n?n.prototype:void 0,c=s?s.toString:void 0;function l(e){if(typeof e==`string`)return e;if(i(e))return r(e,l)+``;if(a(e))return c?c.call(e):``;var t=e+``;return t==`0`&&1/e==-o?`-0`:t}t.exports=l})),St=o(((e,t)=>{var n=xt();function r(e){return e==null?``:n(e)}t.exports=r})),Ct=o(((e,t)=>{var n=R(),r=Re(),i=yt(),a=St();function o(e,t){return n(e)?e:r(e,t)?[e]:i(a(e))}t.exports=o})),wt=o(((e,t)=>{var n=Le(),r=1/0;function i(e){if(typeof e==`string`||n(e))return e;var t=e+``;return t==`0`&&1/e==-r?`-0`:t}t.exports=i})),Tt=o(((e,t)=>{var n=Ct(),r=wt();function i(e,t){t=n(t,e);for(var i=0,a=t.length;e!=null&&i<a;)e=e[r(t[i++])];return i&&i==a?e:void 0}t.exports=i})),Et=o(((e,t)=>{var n=Tt();function r(e){return function(t){return e==null?void 0:n(e,t)}}t.exports=r}));function Dt(e,t){return e?e.map(e=>({item:e,key:t(e)})).sort((e,t)=>e.key>t.key?1:e.key<t.key?-1:0).map(({item:e})=>e):[]}var Ot=l(Et(),1);const kt=[`major`,`minor`,`patch`],At=[`release`,`build`],B=[...kt,...At],jt={major:``,minor:`.`,patch:`.`,release:`-`,build:`+`},Mt=`^`,Nt=[`^`,`~`,`.*`,`.x`],Pt=RegExp(`^(${[`^`,`~`,`^*`,`*`,`x`,`x.x`,`x.x.x`].join(`|`).replace(/\^/g,`\\^`).replace(/\*/g,`\\*`)})$`),Ft=/^npm:(.*)@(.*)/;function It(e){let[t]=x.default.parseRange(e);if(!t)throw Error(S.default.format(`semverutils.parseRange returned null when trying to parse "%s". This is probably a problem with the "semver-utils" dependency. Please report an issue at https://github.com/raineorshine/npm-check-updates/issues.`,e));return B.reduce((e,n)=>t[n]?e+1:e,0)}function V(e,t){return(t?B.slice(0,B.indexOf(t)+1):B).filter(n=>t&&kt.includes(t)||e[n]).map(t=>jt[t]+(e[t]||`0`)).join(``)}function Lt(e){let[t]=x.default.parseRange(e);return B.slice().reverse().find((0,Ot.default)(t))}function Rt(e,t){let[n]=x.default.parseRange(e);return V(n,t)}function zt(e,t){return t===`^`||t===`~`?t+e:Rt(e,`major`)+t}function Bt(e){return Pt.test(e)}function Vt(e){return e===`*`||e===`x`}function Ht(e,t){if(e===t)return`none`;/^[~^]/.test(t)&&t[0]===e[0]&&(t=t.slice(1),e=e.slice(1));let n=t.split(`.`),r=e.split(`.`),i=n.findIndex((e,t)=>e!==r[t]);return i=i>=0?i:n.length,n[0]===`0`?`majorVersionZero`:i===0?`major`:i===1?`minor`:`patch`}function Ut(e,t,n){let r=P(e,(r,i,a)=>{let o=t[r],s=Ht(o,i),c=n.groupFunction?.(r,s,(0,x.parseRange)(o),(0,x.parseRange)(i),(0,x.parse)(e[r]))??s;return c===`none`?a:{...a,[c]:{...a[c],[r]:i}}}),i={patch:I.green(I.bold(`Patch`)+` Backwards-compatible bug fixes`),minor:I.cyan(I.bold(`Minor`)+` Backwards-compatible features`),major:I.red(I.bold(`Major`)+` Potentially breaking API changes`),majorVersionZero:I.magenta(I.bold(`Major version zero`)+` Anything may change`)};return Array.from(new Set([`patch`,`minor`,`major`,`majorVersionZero`,...Object.keys(r).sort()])).filter(e=>e in r).map(e=>({groupName:e,heading:e in i?i[e]:e,packages:r[e]}))}function Wt(e,t){let n=``;/^[~^]/.test(t)&&t[0]===e[0]&&(n=t[0],t=t.slice(1),e=e.slice(1));let r=t.split(`.`),i=e.split(`.`),a=r.findIndex((e,t)=>e!==i[t]);a=a>=0?a:r.length;let o=a===0||r[0]===`0`?`red`:a===1?`cyan`:`green`,s=a>0&&a<r.length?`.`:``;return n+r.slice(0,a).join(`.`)+s+I[o](r.slice(a).join(`.`))}const Gt=e=>{let t=b.default.prerelease(e);return t&&t.slice(0,-1).join(`.`)};function Kt(e,t){let n=Gt(e),r=Gt(t);return typeof n!=`string`||typeof r!=`string`||n===r}function qt(e,t){return(b.default.valid(e)&&b.default.valid(t)?b.default.gt(e,t):e>t)?1:e===t?0:-1}function Jt(e,t,n){if(!b.default.validRange(t))return null;let r=b.default.minVersion(t);return[...e].sort(qt).filter(e=>{let t=b.default.parse(e);return t&&(n===`major`||t.major===r?.major)&&(n===`major`||n===`minor`||t.minor===r?.minor)}).at(-1)||null}function Yt(e){return Lt(e)===`release`}const Xt=e=>/^[vV]?\d+$/.test(e),Zt=e=>/^[vV]?\d+\.\d+$/.test(e),Qt=e=>e.replace(/^[vV]/,``),$t=e=>Xt(e)?e+`.0.0`:e,en=e=>Zt(e)?e+`.0`:e,tn=e=>en($t(Qt(e)));function nn(e){return e&&(e[0]===`v`||e[1]===`v`)?`v`:``}const rn=(e,t)=>`npm:${e}@${t}`,an=e=>{let t=e&&e.match&&e.match(Ft);return t&&t.slice(1)},on=e=>e&&!!e.match(Ft),sn=(e,t)=>{let n=an(e);return n?rn(n[0],t):null},cn=e=>{if(!e)return!1;let t=null;try{t=(0,y.default)(e)}catch{}if(!t||!t.branch)return!1;let n=decodeURIComponent(t.branch).replace(/^semver:/,``);return!!b.default.validRange(n)},ln=e=>{if(!e)return null;let t=(0,y.default)(e);if(!t||!t.branch)return null;let n=decodeURIComponent(t.branch).replace(/^semver:/,``);return t&&t.branch&&b.default.validRange(n)?n:null};function un(e,t,n={}){if(n.wildcard=n.wildcard||`^`,!t)return e;let[r]=x.default.parseRange(t);if(!r)return e;if(n.removeRange)return t;if(Bt(e))return e;let i=Dt(x.default.parseRange(e).filter(e=>e.operator!==`||`&&e.operator!==`-`),e=>It(V(e))),[a]=i;function o(e){return(Vt(a[e])?a[e]:kt.includes(e)&&a[e]||At.includes(e)?r[e]:null)||null}let s=V(P(B,e=>({[e]:o(e)}))),c=nn(a.semver)+s,l=Array.from(new Set(i.map(e=>e.operator))),u=l[0]||``,d=Nt.some(e=>s.includes(e)),f=l[0]===`<`||l[0]===`<=`,p=l[0]===`>`,m=l.length>1;return!d&&(f||m)?zt(c,n.wildcard):(p?`>=`:u)+c}const dn=(e,t)=>{let n=nn(e),r=n?n+t:t;return r=Xt(e)?r.slice(0,r.length-4):r,r=Zt(e)?r.slice(0,r.length-2):r,r},fn=(e,t)=>{let n=tn(t),r=(0,y.default)(e);if(!r)return e;let i=decodeURIComponent(r.branch).replace(/^semver:/,``);return e.replace(i,un(i,dn(i,n)))},pn={silent:0,error:1,minimal:2,warn:3,info:4,verbose:5,silly:6},mn=e=>!e.startsWith(`file:`)&&!e.startsWith(`link:`)&&!e.startsWith(`workspace:`)&&!/^[^/:@]+\/\w+/.test(e);function H(e,t,n=null,r=`log`){!e.json&&e.loglevel!==`silent`&&(n==null||pn[e.loglevel??`warn`]>=pn[n])&&console[r](t)}function hn(e,t){e.loglevel!==`silent`&&console.log(JSON.stringify(t,null,2))}function gn(e,t){console.log(Object.keys(e).map(t=>t+`@`+e[t]).join(t))}function U(e,t,n){H(e,Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}),n)}function _n(e){let t=new h.default({colAligns:[`left`,`right`,`right`,`right`,`left`,`left`],chars:{top:``,"top-mid":``,"top-left":``,"top-right":``,bottom:``,"bottom-mid":``,"bottom-left":``,"bottom-right":``,left:``,"left-mid":``,mid:``,"mid-mid":``,right:``,"right-mid":``,middle:``}});return t.push(...e),t.toString().split(`
2
+ `).map(e=>e.trimEnd()).join(`
3
+ `)}function vn(e){return cn(e)?ln(e):on(e)?an(e)[1]:e}async function yn({from:e,to:t,format:n,ownersChangedDeps:r,pkgFile:i,time:a}){let o=n?.includes(`dep`)&&i?JSON.parse(await g.default.readFile(i,`utf-8`)):null;return _n(await Promise.all(Object.keys(t).sort().map(async s=>{let c=(n?.includes(`installedVersion`)?await De(s,void 0,{pkgFile:i}):e[s])||``,l=s in(o?.devDependencies??{})?`dev`:s in(o?.peerDependencies??{})?`peer`:s in(o?.optionalDependencies??{})?`optional`:``,u=vn(t[s]||``),d=r?s in r?r[s]?`*owner changed*`:``:`*unknown*`:``,f=Wt(vn(c),u),p=n?.includes(`repo`)&&await Ae(s,void 0,{pkgFile:i})||``,m=n?.includes(`time`)&&a?.[s]?a[s]:``;return[s,...n?.includes(`dep`)?[l?I.gray(l):``]:[],c,`→`,f,d,...[p,m].filter(e=>e)]})))}async function bn({current:e,upgraded:t,ownersChangedDeps:n,pkgFile:r,time:i},a){if(a.format?.includes(`group`)){let o=Ut(t,e,a);for(let{heading:t,packages:s}of o)H(a,`
4
+ `+t),H(a,await yn({from:e,to:s,format:a.format,ownersChangedDeps:n,pkgFile:r,time:i}))}else a.format?.includes(`lines`)?gn(t,`
5
+ `):H(a,await yn({from:e,to:t,format:a.format,ownersChangedDeps:n,pkgFile:r,time:i}))}function xn(e,t){if(t&&Object.keys(t).length>0){let n=new h.default({colAligns:[`left`,`right`,`right`,`right`,`left`,`left`],chars:{top:``,"top-mid":``,"top-left":``,"top-right":``,bottom:``,"bottom-mid":``,"bottom-left":``,"bottom-right":``,left:``,"left-mid":``,mid:``,"mid-mid":``,right:``,"right-mid":``,middle:``}});n.push(...Object.entries(t).map(([e,t])=>[e,I.yellow(t)])),H(e,`
6
+ `+n.toString())}}async function Sn(e,{current:t,latest:n,upgraded:r,total:i,ownersChangedDeps:a,pkgFile:o,time:s,errors:c}){e.format?.includes(`group`)||H(e,``);let l=I.green.bold(`:)`),u=Object.keys(c||{}).length,d=typeof e.target==`string`?e.target:`target`,f=Object.keys(r).length;f===0&&i===0&&u===0?Object.keys(t).length===0?H(e,`No dependencies.`):n&&Object.keys(n).length===0&&Object.values(L(t,(e,t)=>mn(t))).length>0?H(e,`No package versions were returned. This may be a problem with your installed ${e.packageManager}, the npm registry, or your Internet connection. Make sure ${I.cyan(`npx pacote packument ncu-test-v2`)} is working before reporting an issue.`):e.global?H(e,`All global packages are up-to-date ${l}`):H(e,`All dependencies match the ${d} package versions ${l}`):f===0&&i>0?H(e,`No dependencies upgraded ${l}`):f>0&&await bn({current:t,upgraded:r,ownersChangedDeps:a,pkgFile:o,time:s},e),xn(e,c)}function Cn(e,t){H(e,`
7
+ Ignored incompatible updates (peer dependencies):
8
+ `),H(e,_n(Object.entries(t).map(([e,{from:t,to:n,reason:r}])=>{let i=`reason: `+Object.entries(r).map(([e,t])=>e+` requires `+t).join(`, `);return[e,t,`→`,Wt(t,n),i]})))}function wn(e,t){H(e,`
9
+ Ignored incompatible updates (engines node):
10
+ `),H(e,_n(Object.entries(t).map(([e,{from:t,to:n,enginesNode:r}])=>[e,t,`→`,Wt(t,n),`reason: requires node ${r}`])))}const Tn=`___`;function En(e,t=10){return typeof e.timestamp==`number`?e.timestamp+60*1e3*t<Date.now():!1}const Dn=`.ncu-cache.json`,On=`~/${Dn}`,kn=u.default.join(m.default.homedir(),Dn);function An(e){return e===On?kn:e}async function jn(e){e.cacheFile&&await p.default.promises.rm(An(e.cacheFile),{force:!0})}async function Mn(e){if(!e.cache||!e.cacheFile)return;let t=An(e.cacheFile),n={},r=new Set;try{n=JSON.parse(await p.default.promises.readFile(t,`utf-8`)),En(n,e.cacheExpiration)&&(p.default.promises.rm(t,{force:!0}),n={})}catch{}return typeof n.timestamp!=`number`&&(n.timestamp=Date.now()),n.packages||={},n.peers||={},{get:(e,t)=>{if(!n.packages)return;let i=`${e}___${t}`,a=n.packages[i];return a&&!i.includes(a)&&r.add(e),a},set:(e,t,r)=>{if(!n.packages)return;let i=`${e}___${t}`;n.packages[i]=r},getPeers:(e,t)=>{if(!n.peers)return;let i=`${e}___${t}`,a=n.peers[i];return a&&r.add(e),a},setPeers:(e,t,r)=>{let i=`${e}___${t}`;n.peers&&(n.peers[i]=r)},save:async()=>{await p.default.promises.writeFile(t,JSON.stringify(n))},log:t=>{let n=r.size;n!==0&&(H(e,`\nUsing ${n} cached package ${t?`peer`:`version`}${n>1?`s`:``}`,`warn`),H(e,r,`verbose`),r.clear())}}}const Nn=(e,t=92)=>{let n=e.split(`
11
+ `),r=[];return n.forEach(e=>{let n=0;if(e.length===0){r.push(``);return}for(;n<e.length;){let i=e.slice(n,n+t+1),a=i.trimEnd();if(a.length<=t){r.push(a);break}let o=i.split(``).reverse().join(``).match(/[ -][^\W]/)?.index||0,s=i.slice(0,i.length-o);if(s.length===0)break;r.push(s.trimEnd()),n+=s.length}n=0}),r.join(`
12
+ `).trim()};var Pn=Nn;const Fn=e=>e.map(([e,t])=>[e,Pn(t)]),In=e=>`
13
+ <tr>`+e.map(e=>`<td>${e}</td>`).join(``)+`</tr>`,Ln=({colAligns:e,markdown:t,rows:n})=>{if(t)return`<table>${n.map(In).join(``)}\n</table>`;{let r=new h.default({...e?{colAligns:e}:null});return r.push(...t?n:Fn(n)),r.toString()}};var W=Ln;const Rn=[`latest`,`newest`,`greatest`,`minor`,`patch`,`semver`],G=(e,t)=>e.split(`
14
+ `).map(e=>`${``.padStart(t,` `)}${e}`).join(`
15
+ `),K=(e,{markdown:t}={})=>`${t?"```js\n":``}${G(e,t?0:4)}${t?"\n```":``}`,zn=e=>e.replace(/`/g,``),Bn=(e,{markdown:t}={})=>{let n=``;if(e.cli!==!1&&(n=`Usage:
16
+
17
+ ncu --${e.long}${e.arg?` [${e.arg}]`:``}${e.long===`doctor`?` -u`:``}\n`),e.type===`boolean`&&(n+=` ncu --no-${e.long}\n`),e.short&&(n+=` ncu -${e.short}${e.arg?` [${e.arg}]`:``}${e.long===`doctor`?`u`:``}\n`),e.default!==void 0&&!(Array.isArray(e.default)&&e.default.length===0)&&(n+=`\nDefault: ${e.default}\n`),e.help){let r=typeof e.help==`function`?t?e.help({markdown:t}):zn(e.help({markdown:t})):e.help;n+=`\n${r.trim()}\n\n`}else if(e.description){let r=t?e.description:zn(e.description);n+=`\n${r.replace(/`/g,``)}\n`}return n.trim()},Vn=({markdown:e})=>`Iteratively installs upgrades and runs your project's tests to identify breaking upgrades. Reverts broken upgrades and updates package.json with working upgrades.
18
+
19
+ ${I.yellow("Requires `-u` to execute")} (modifies your package file, lock file, and node_modules)
20
+
21
+ To be more precise:
22
+
23
+ 1. Runs \`npm install\` and \`npm test\` to ensure tests are currently passing.
24
+ 2. Runs \`ncu -u\` to optimistically upgrade all dependencies.
25
+ 3. If tests pass, hurray!
26
+ 4. If tests fail, restores package file and lock file.
27
+ 5. For each dependency, install upgrade and run tests.
28
+ 6. Prints broken upgrades with test error.
29
+ 7. Saves working upgrades to package.json.
30
+
31
+ Additional options:
32
+
33
+ ${W({markdown:e,rows:[[I.cyan(`--doctorInstall`),"specify a custom install script (default: `npm install` or `yarn`)"],[I.cyan(`--doctorTest`),"specify a custom test script (default: `npm test`)"]]})}
34
+
35
+ Example:
36
+
37
+ $ ncu --doctor -u
38
+ Running tests before upgrading
39
+ npm install
40
+ npm run test
41
+ Upgrading all dependencies and re-running tests
42
+ ncu -u
43
+ npm install
44
+ npm run test
45
+ Tests failed
46
+ Identifying broken dependencies
47
+ npm install
48
+ npm install --no-save react@16.0.0
49
+ npm run test
50
+ ✓ react 15.0.0 → 16.0.0
51
+ npm install --no-save react-redux@7.0.0
52
+ npm run test
53
+ ✗ react-redux 6.0.0 → 7.0.0
54
+
55
+ /projects/myproject/test.js:13
56
+ throw new Error('Test failed!')
57
+ ^
58
+
59
+ npm install --no-save react-dnd@11.1.3
60
+ npm run test
61
+ ✓ react-dnd 10.0.0 → 11.1.3
62
+ Saving partially upgraded package.json
63
+ `,Hn=({markdown:e})=>{let t=t=>e?`\`${t}\``:t;return`Filters results based on a user provided predicate function after fetching new versions.
64
+
65
+ ${t(`filterResults`)} runs _after_ new versions are fetched, in contrast to ${t(`filter`)}, ${t(`reject`)}, ${t(`filterVersion`)}, and ${t(`rejectVersion`)}, which run _before_. This allows you to exclude upgrades with ${t(`filterResults`)} based on how the version has changed (e.g. a major version change).
66
+
67
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions.
68
+
69
+ ${K(`${I.gray(`/** Exclude major version updates. Note this could also be achieved with --target semver.
70
+ @param {string} packageName The name of the dependency.
71
+ @param {string} current Current version declaration (may be a range).
72
+ @param {SemVer[]} currentVersionSemver Current version declaration in semantic versioning format (may be a range).
73
+ @param {string} upgraded Upgraded version.
74
+ @param {SemVer} upgradedVersionSemver Upgraded version in semantic versioning format.
75
+ @returns {boolean} Return true if the upgrade should be kept; otherwise, it will be ignored.
76
+ */`)}
77
+ ${I.green(`filterResults`)}: (packageName, { current, currentVersionSemver, upgraded, upgradedVersionSemver }) ${I.cyan(`=>`)} {
78
+ ${I.cyan(`const`)} currentMajor ${I.red(`=`)} parseInt(currentVersionSemver[${I.cyan(`0`)}]?.major, ${I.cyan(`10`)})
79
+ ${I.cyan(`const`)} upgradedMajor ${I.red(`=`)} parseInt(upgradedVersionSemver?.major, ${I.cyan(`10`)})
80
+ ${I.red(`if`)} (currentMajor ${I.red(`&&`)} upgradedMajor) {
81
+ ${I.red(`return`)} currentMajor ${I.red(`>=`)} upgradedMajor
82
+ }
83
+ ${I.red(`return`)} ${I.cyan(`true`)}
84
+ }`,{markdown:e})}
85
+
86
+ For the SemVer type definition, see: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring
87
+
88
+ `},Un=({markdown:e})=>`Modify the output formatting or show additional information. Specify one or more comma-delimited values.\n\n${G(W({colAligns:[`right`,`left`],markdown:e,rows:[[`dep`,`Prints the dependency type (dev, peer, optional) of each package.`],[`group`,`Groups packages by major, minor, patch, and major version zero updates.`],[`installedVersion`,`Prints the exact current version number instead of a range.`],[`lines`,`Prints name@version on separate lines. Useful for piping to npm install.`],[`ownerChanged`,`Shows if the package owner has changed.`],[`repo`,`Infers and displays links to the package's source code repository. Requires packages to be installed.`],[`time`,`Shows the publish time of each upgrade.`]]}),e?0:4)}
89
+ `,Wn=({markdown:e})=>`Control the auto-install behavior.\n\n${G(W({colAligns:[`right`,`left`],markdown:e,rows:[[`always`,`Runs your package manager's install command automatically after upgrading.`],[`never`,`Does not install and does not prompt.`],[`prompt`,`Shows a message after upgrading that recommends an install, but does not install. In interactive mode, prompts for install. (default)`]]}),e?0:4)}
90
+ `,Gn=({markdown:e})=>{let t=t=>e?`\`${t}\``:t;return`Include only package names matching the given string, wildcard, glob, comma-or-space-delimited list, /regex/, or predicate function. Only included packages will be checked with ${t(`--peer`)}.
91
+
92
+ ${t(`--filter`)} runs _before_ new versions are fetched, in contrast to ${t(`--filterResults`)} which runs _after_.
93
+
94
+ You can also specify a custom function in your .ncurc.js file, or when importing npm-check-updates as a module.
95
+
96
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions.
97
+
98
+ ${K(`${I.gray(`/**
99
+ @param name The name of the dependency.
100
+ @param semver A parsed Semver array of the current version.
101
+ (See: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring)
102
+ @returns True if the package should be included, false if it should be excluded.
103
+ */`)}
104
+ ${I.green(`filter`)}: (name, semver) ${I.cyan(`=>`)} {
105
+ ${I.red(`if`)} (name.startsWith(${I.yellow(`'@myorg/'`)})) {
106
+ ${I.red(`return`)} ${I.cyan(`false`)}
107
+ }
108
+ ${I.red(`return`)} ${I.cyan(`true`)}
109
+ }`,{markdown:e})}
110
+
111
+ `},Kn=({markdown:e})=>{let t=t=>e?`\`${t}\``:t;return`Include only versions matching the given string, wildcard, glob, comma-or-space-delimited list, /regex/, or predicate function.
112
+
113
+ ${t(`--filterVersion`)} runs _before_ new versions are fetched, in contrast to ${t(`--filterResults`)} which runs _after_.
114
+
115
+ You can also specify a custom function in your .ncurc.js file, or when importing npm-check-updates as a module.
116
+
117
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions. This function is an alias for the ${t(`filter`)} option function.
118
+
119
+ ${K(`${I.gray(`/**
120
+ @param name The name of the dependency.
121
+ @param semver A parsed Semver array of the current version.
122
+ (See: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring)
123
+ @returns True if the package should be included, false if it should be excluded.
124
+ */`)}
125
+ ${I.green(`filterVersion`)}: (name, semver) ${I.cyan(`=>`)} {
126
+ ${I.red(`if`)} (name.startsWith(${I.yellow(`'@myorg/'`)}) ${I.red(`&&`)} parseInt(semver[0]?.major) ${I.cyan(`>`)} ${I.cyan(`5`)}) {
127
+ ${I.red(`return`)} ${I.cyan(`false`)}
128
+ }
129
+ ${I.red(`return`)} ${I.cyan(`true`)}
130
+ }`,{markdown:e})}
131
+
132
+ `},qn=({markdown:e})=>{let t=t=>e?`\`${t}\``:t;return`The inverse of ${t(`--filter`)}. Exclude package names matching the given string, wildcard, glob, comma-or-space-delimited list, /regex/, or predicate function. This will also exclude them from the ${t(`--peer`)} check.
133
+
134
+ ${t(`--reject`)} runs _before_ new versions are fetched, in contrast to ${t(`--filterResults`)} which runs _after_.
135
+
136
+ You can also specify a custom function in your .ncurc.js file, or when importing npm-check-updates as a module.
137
+
138
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions.
139
+
140
+ ${K(`${I.gray(`/**
141
+ @param name The name of the dependency.
142
+ @param semver A parsed Semver array of the current version.
143
+ (See: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring)
144
+ @returns True if the package should be excluded, false if it should be included.
145
+ */`)}
146
+ ${I.green(`reject`)}: (name, semver) ${I.cyan(`=>`)} {
147
+ ${I.red(`if`)} (name.startsWith(${I.yellow(`'@myorg/'`)})) {
148
+ ${I.red(`return`)} ${I.cyan(`true`)}
149
+ }
150
+ ${I.red(`return`)} ${I.cyan(`false`)}
151
+ }`,{markdown:e})}
152
+
153
+ `},Jn=({markdown:e})=>{let t=t=>e?`\`${t}\``:t;return`The inverse of ${t(`--filterVersion`)}. Exclude versions matching the given string, wildcard, glob, comma-or-space-delimited list, /regex/, or predicate function.
154
+
155
+ ${t(`--rejectVersion`)} runs _before_ new versions are fetched, in contrast to ${t(`--filterResults`)} which runs _after_.
156
+
157
+ You can also specify a custom function in your .ncurc.js file, or when importing npm-check-updates as a module.
158
+
159
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions. This function is an alias for the reject option function.
160
+
161
+ ${K(`${I.gray(`/**
162
+ @param name The name of the dependency.
163
+ @param semver A parsed Semver array of the current version.
164
+ (See: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring)
165
+ @returns True if the package should be excluded, false if it should be included.
166
+ */`)}
167
+ ${I.green(`rejectVersion`)}: (name, semver) ${I.cyan(`=>`)} {
168
+ ${I.red(`if`)} (name.startsWith(${I.yellow(`'@myorg/'`)}) ${I.red(`&&`)} parseInt(semver[0]?.major) ${I.cyan(`>`)} ${I.cyan(`5`)}) {
169
+ ${I.red(`return`)} ${I.cyan(`true`)}
170
+ }
171
+ ${I.red(`return`)} ${I.cyan(`false`)}
172
+ }`,{markdown:e})}
173
+
174
+ `},Yn=({markdown:e})=>`Customize how packages are divided into groups when using \`--format group\`.
175
+
176
+ Only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions.
177
+
178
+ ${K(`${I.gray(`/**
179
+ @param name The name of the dependency.
180
+ @param defaultGroup The predefined group name which will be used by default.
181
+ @param currentSpec The current version range in your package.json.
182
+ @param upgradedSpec The upgraded version range that will be written to your package.json.
183
+ @param upgradedVersion The upgraded version number returned by the registry.
184
+ @returns A predefined group name ('major' | 'minor' | 'patch' | 'majorVersionZero' | 'none') or a custom string to create your own group.
185
+ */`)}
186
+ ${I.green(`groupFunction`)}: (name, defaultGroup, currentSpec, upgradedSpec, upgradedVersion) ${I.cyan(`=>`)} {
187
+ ${I.red(`if`)} (name ${I.red(`===`)} ${I.yellow(`'typescript'`)} ${I.red(`&&`)} defaultGroup ${I.red(`===`)} ${I.yellow(`'minor'`)}) {
188
+ ${I.red(`return`)} ${I.yellow(`'major'`)}
189
+ }
190
+ ${I.red(`if`)} (name.startsWith(${I.yellow(`'@myorg/'`)})) {
191
+ ${I.red(`return`)} ${I.yellow(`'My Org'`)}
192
+ }
193
+ ${I.red(`return`)} defaultGroup
194
+ }`,{markdown:e})}
195
+
196
+ `,Xn=({markdown:e})=>`Determines the version to upgrade to. (default: "latest")
197
+
198
+ ${G(W({colAligns:[`right`,`left`],markdown:e,rows:[[`greatest`,`Upgrade to the highest version number published, regardless of release date or tag. Includes prereleases.`],[`latest`,`Upgrade to whatever the package's "latest" git tag points to. Excludes prereleases unless --pre is specified.`],[`minor`,`Upgrade to the highest minor version without bumping the major version.`],[`newest`,`Upgrade to the version with the most recent publish date, even if there are other version numbers that are higher. Includes prereleases.`],[`patch`,`Upgrade to the highest patch version without bumping the minor or major versions.`],[`semver`,`Upgrade to the highest version within the semver range specified in your package.json.`],[`@[tag]`,`Upgrade to the version published to a specific tag, e.g. 'next' or 'beta'.`]]}),e?0:4)}
199
+
200
+ e.g.
201
+
202
+ ${K(`ncu --target semver`)}
203
+
204
+ You can also specify a custom function in your .ncurc.js file, or when importing npm-check-updates as a module.
205
+
206
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions.
207
+
208
+ ${K(`${I.gray(`/** Upgrade major version zero to the next minor version, and everything else to latest.
209
+ @param name The name of the dependency.
210
+ @param semver A parsed Semver object of the upgraded version.
211
+ (See: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring)
212
+ @returns One of the valid target values (specified in the table above).
213
+ */`)}
214
+ ${I.green(`target`)}: (name, semver) ${I.cyan(`=>`)} {
215
+ ${I.red(`if`)} (parseInt(semver[0]?.major) ${I.red(`===`)} ${I.yellow(`'0'`)}) ${I.red(`return`)} ${I.yellow(`'minor'`)}
216
+ ${I.red(`return`)} ${I.yellow(`'latest'`)}
217
+ }`,{markdown:e})}
218
+ `,Zn=({markdown:e})=>`Specifies the package manager to use when looking up versions.\n\n${G(W({colAligns:[`right`,`left`],markdown:e,rows:[[`npm`,`System-installed npm. Default.`],[`yarn`,`System-installed yarn. Automatically used if yarn.lock is present.`],[`pnpm`,`System-installed pnpm. Automatically used if pnpm-lock.yaml is present.`],[`bun`,`System-installed bun. Automatically used if bun.lock or bun.lockb is present.`]]}),e?0:4)}
219
+ `,Qn=({markdown:e})=>`${`Specify whether ${(t=>e?`\`${t}\``:t)(`--registry`)} refers to a full npm registry or a simple JSON file.`}\n\n${G(W({colAligns:[`right`,`left`],markdown:e,rows:[[`npm`,`Default npm registry`],[`json`,`Checks versions from a file or url to a simple JSON registry. Must include the ${I.cyan("`--registry`")} option.
220
+
221
+ Example:
222
+
223
+ ${I.gray(`// local file`)}
224
+ ${I.cyan(`$`)} ncu --registryType json --registry ./registry.json
225
+
226
+ ${I.gray(`// url`)}
227
+ ${I.cyan(`$`)} ncu --registryType json --registry https://api.mydomain/registry.json
228
+
229
+ ${I.gray(`// you can omit --registryType when the registry ends in .json`)}
230
+ ${I.cyan(`$`)} ncu --registry ./registry.json
231
+ ${I.cyan(`$`)} ncu --registry https://api.mydomain/registry.json
232
+
233
+ registry.json:
234
+
235
+ {
236
+ "prettier": "2.7.1",
237
+ "typescript": "4.7.4"
238
+ }
239
+
240
+ `]]}),e?0:4)}
241
+ `,$n=({markdown:e})=>{let t=t=>e?`\`${t}\``:t;return`Check peer dependencies of installed packages and filter updates to compatible versions.
242
+
243
+ ${I.bold(`Example`)}:
244
+
245
+ The following example demonstrates how \`--peer\` works, and how it uses peer dependencies from upgraded modules.
246
+
247
+ The package ${I.bold(`ncu-test-peer-update`)} has two versions published:
248
+
249
+ - 1.0.0 has peer dependency ${t(`"ncu-test-return-version": "1.0.x"`)}
250
+ - 1.1.0 has peer dependency ${t(`"ncu-test-return-version": "1.1.x"`)}
251
+
252
+ Our test app has the following dependencies:
253
+
254
+ "ncu-test-peer-update": "1.0.0",
255
+ "ncu-test-return-version": "1.0.0"
256
+
257
+ The latest versions of these packages are:
258
+
259
+ "ncu-test-peer-update": "1.1.0",
260
+ "ncu-test-return-version": "2.0.0"
261
+
262
+ ${I.bold("With `--peer`")}:
263
+
264
+ ncu upgrades packages to the highest version that still adheres to the peer dependency constraints:
265
+
266
+ ncu-test-peer-update 1.0.0 → 1.${I.cyan(`1.0`)}
267
+ ncu-test-return-version 1.0.0 → 1.${I.cyan(`1.0`)}
268
+
269
+ ${I.bold("Without `--peer`")}:
270
+
271
+ As a comparison: without using the \`--peer\` option, ncu will suggest the latest versions, ignoring peer dependencies:
272
+
273
+ ncu-test-peer-update 1.0.0 → 1.${I.cyan(`1.0`)}
274
+ ncu-test-return-version 1.0.0 → ${I.red(`2.0.0`)}
275
+ `},er=({markdown:e})=>`The cooldown option helps protect against supply chain attacks by requiring package versions to be published at least the given number of days before considering them for upgrade.
276
+
277
+ Note that previous stable versions will ${I.bold(`not`)} be suggested. The package will be completely ignored if its latest published version is within the cooldown period. This is due to a limitation of the npm registry, which does not provide a way to query previous stable versions.
278
+
279
+ ${I.bold(`Example`)}:
280
+
281
+ Let's examine how cooldown works with a package that has these versions available:
282
+
283
+ 1.0.0 Released 7 days ago (initial version)
284
+ 1.1.0 Released 6 days ago (minor update)
285
+ 1.1.1 Released 5 days ago (patch update)
286
+ 1.2.0 Released 5 days ago (minor update)
287
+ 2.0.0-beta.1 Released 5 days ago (beta release)
288
+ 1.2.1 Released 4 days ago (patch update)
289
+ 1.3.0 Released 4 days ago (minor update) [latest]
290
+ 2.0.0-beta.2 Released 3 days ago (beta release)
291
+ 2.0.0-beta.3 Released 2 days ago (beta release) [beta]
292
+
293
+ ${I.bold(`With default target (latest)`)}:
294
+
295
+ ${K(`${I.cyan(`$`)} ncu --cooldown 5`,{markdown:e})}
296
+
297
+ No update will be suggested because:
298
+
299
+ - Latest version (1.3.0) is only 4 days old.
300
+ - Cooldown requires versions to be at least 5 days old
301
+ - Use \`--cooldown 4\` or lower to allow this update
302
+
303
+ ${I.bold("With `@beta`/`@tag` target")}:
304
+
305
+ ${K(`${I.cyan(`$`)} ncu --cooldown 3 --target @beta`,{markdown:e})}
306
+
307
+ No update will be suggested because:
308
+
309
+ - Current beta (2.0.0-beta.3) is only 2 days old
310
+ - Cooldown requires versions to be at least 3 days old
311
+ - Use \`--cooldown 2\` or lower to allow this update
312
+
313
+ ${I.bold(`With other targets`)}:
314
+
315
+ ${K(`${I.cyan(`$`)} ncu --cooldown 5 --target greatest|newest|minor|patch|semver`,{markdown:e})}
316
+
317
+ Each target will select the best version that is at least 5 days old:
318
+
319
+ greatest → 1.2.0 (highest version number outside cooldown)
320
+ newest → 2.0.0-beta.1 (most recently published version outside cooldown)
321
+ minor → 1.2.0 (highest minor version outside cooldown)
322
+ patch → 1.1.1 (highest patch version outside cooldown)
323
+
324
+ ${I.bold(`Note for latest/tag targets`)}:
325
+
326
+ > :warning: For packages that update frequently (e.g. daily releases), using a long cooldown period (7+ days) with the default \`--target latest\` or \`--target @tag\` may prevent all updates since new versions will be published before older ones meet the cooldown requirement. Please consider this when setting your cooldown period.
327
+
328
+ You can also provide a custom function in your .ncurc.js file or when importing npm-check-updates as a module.
329
+
330
+ > :warning: The predicate function is only available in .ncurc.js or when importing npm-check-updates as a module, not on the command line. To convert a JSON config to a JS config, follow the instructions at https://github.com/raineorshine/npm-check-updates#config-functions.
331
+
332
+ ${K(`${I.gray(`/** Set cooldown to 3 days but skip it for \`@my-company\` packages.
333
+ @param packageName The name of the dependency.
334
+ @returns Cooldown days restriction for given package.
335
+ */`)}
336
+ ${I.green(`cooldown`)}: packageName ${I.cyan(`=>`)} (packageName.startsWith(${I.yellow(`'@my-company'`)}) ? ${I.cyan(`0`)} : ${I.cyan(`3`)})`,{markdown:e})}
337
+ `,tr=[{long:`cache`,description:`Cache versions to a local cache file. Default \`--cacheFile\` is ${On} and default \`--cacheExpiration\` is 10 minutes.`,type:`boolean`},{long:`cacheClear`,description:"Clear the default cache, or the cache file specified by `--cacheFile`.",type:`boolean`},{long:`cacheExpiration`,arg:`min`,description:"Cache expiration in minutes. Only works with `--cache`.",parse:e=>parseInt(e,10),default:10,type:`number`},{long:`cacheFile`,arg:`path`,description:"Filepath for the cache file. Only works with `--cache`.",parse:e=>u.default.isAbsolute(e)?e:u.default.join(process.cwd(),e),default:On,type:`string`},{long:`color`,description:`Force color in terminal.`,type:`boolean`},{long:`concurrency`,arg:`n`,description:`Max number of concurrent HTTP requests to registry.`,parse:e=>parseInt(e,10),default:8,type:`number`},{long:`configFileName`,arg:`s`,description:`Config file name. (default: .ncurc.{json,yml,js,cjs})`,type:`string`},{long:`configFilePath`,arg:`path`,description:"Directory of .ncurc config file. (default: directory of `packageFile`)",type:`string`},{long:`cwd`,arg:`path`,description:`Working directory in which npm will be executed.`,type:`string`},{long:`deep`,description:"Run recursively in current working directory. Alias of (`--packageFile '**/package.json'`).",type:`boolean`},{long:`ignore`,arg:`dirs`,description:`Ignore directories containing package.json files (comma-delimited).`,type:`string | readonly string[]`,parse:e=>e&&typeof e==`string`?e.split(`,`):e},{long:`dep`,arg:`value`,description:`Check one or more sections of dependencies only: dev, optional, peer, prod, or packageManager (comma-delimited).`,default:[`prod`,`dev`,`optional`,`packageManager`],parse:e=>e&&typeof e==`string`?e.split(`,`):e,type:`string | readonly string[]`},{long:`deprecated`,default:!0,description:"Include deprecated packages. Use `--no-deprecated` to exclude deprecated packages (20–25% slower).",type:`boolean`},{long:`doctor`,short:`d`,description:"Iteratively installs upgrades and runs tests to identify breaking upgrades. Requires `-u` to execute.",type:`boolean`,help:Vn},{long:`doctorInstall`,arg:`command`,description:"Specifies the install script to use in doctor mode. (default: `npm install` or the equivalent for your package manager)",type:`string`},{long:`doctorTest`,arg:`command`,description:"Specifies the test script to use in doctor mode. (default: `npm test`)",type:`string`},{long:`enginesNode`,description:`Include only packages that satisfy engines.node as specified in the package file.`,type:`boolean`},{long:`errorLevel`,short:`e`,arg:`n`,description:`Set the error level. 1: exits with error code 0 if no errors occur. 2: exits with error code 0 if no packages need updating (useful for continuous integration).`,parse:e=>parseInt(e,10),default:1,type:`number`},{long:`filter`,short:`f`,arg:`p`,description:`Include only package names matching the given string, wildcard, glob, comma-or-space-delimited list, /regex/, or predicate function.`,type:`string | RegExp | readonly (string | RegExp)[] | FilterFunction`,parse:(e,t)=>[...t||[],e],help:Gn},{long:`filterResults`,arg:`fn`,cli:!1,description:`Filters results based on a user provided predicate function after fetching new versions.`,type:`FilterResultsFunction`,help:Hn},{long:`filterVersion`,arg:`p`,description:`Filter on package version using comma-or-space-delimited list, /regex/, or predicate function.`,type:`string | RegExp | readonly (string | RegExp)[] | FilterFunction`,parse:(e,t)=>[...t||[],e],help:Kn},{long:`format`,arg:`value`,description:`Modify the output formatting or show additional information. Specify one or more comma-delimited values: dep, group, ownerChanged, repo, time, lines, installedVersion.`,parse:e=>typeof e==`string`?e.split(`,`):e,default:[],type:`readonly string[]`,choices:[`dep`,`group`,`ownerChanged`,`repo`,`time`,`lines`,`installedVersion`],help:Un},{long:`global`,short:`g`,description:`Check global packages instead of in the current project.`,type:`boolean`},{long:`groupFunction`,arg:`fn`,cli:!1,description:"Customize how packages are divided into groups when using `--format group`.",type:`GroupFunction`,help:Yn},{long:`install`,arg:`value`,description:`Control the auto-install behavior: always, never, prompt.`,help:Wn,default:`prompt`,choices:[`always`,`never`,`prompt`],type:`'always' | 'never' | 'prompt'`},{long:`interactive`,short:`i`,description:"Enable interactive prompts for each dependency; implies `-u` unless one of the json options are set.",type:`boolean`},{long:`jsonAll`,short:`j`,description:`Output new package file instead of human-readable message.`,type:`boolean`},{long:`jsonDeps`,description:"Like `jsonAll` but only lists `dependencies`, `devDependencies`, `optionalDependencies`, etc of the new package data.",type:`boolean`},{long:`jsonUpgraded`,description:`Output upgraded dependencies in json.`,type:`boolean`},{long:`loglevel`,short:`l`,arg:`n`,description:`Amount to log: silent, error, minimal, warn, info, verbose, silly.`,default:`warn`,type:`string`},{long:`mergeConfig`,description:"Merges nested configs with the root config file for `--deep` or `--packageFile` options. (default: false)",type:`boolean`},{long:`minimal`,short:`m`,description:`Do not upgrade newer versions that are already satisfied by the version range according to semver.`,type:`boolean`},{long:`packageData`,arg:`value`,description:`Package file data (you can also use stdin).`,type:`string | PackageFile`},{long:`packageFile`,arg:`path|glob`,description:`Package file(s) location. (default: ./package.json)`,type:`string`},{long:`packageManager`,short:`p`,arg:`s`,description:`npm, yarn, pnpm, deno, bun, staticRegistry (default: npm).`,help:Zn,type:`'npm' | 'yarn' | 'pnpm' | 'deno' | 'bun' | 'staticRegistry'`},{long:`peer`,description:`Check peer dependencies of installed packages and filter updates to compatible versions.`,type:`boolean`,help:$n},{long:`pre`,arg:`n`,description:"Include prerelease versions, e.g. -alpha.0, -beta.5, -rc.2. Automatically set to 1 when `--target` is newest or greatest, or when the current version is a prerelease. (default: 0)",parse:e=>!!parseInt(e,10),type:`number`},{long:`prefix`,arg:`path`,description:`Current working directory of npm.`,type:`string`},{long:`registry`,short:`r`,arg:`uri`,description:`Specify the registry to use when looking up package versions.`,type:`string`},{long:`registryType`,arg:`type`,description:`Specify whether --registry refers to a full npm registry or a simple JSON file or url: npm, json. (default: npm)`,help:Qn,type:`'npm' | 'json'`},{long:`reject`,short:`x`,arg:`p`,description:`Exclude packages matching the given string, wildcard, glob, comma-or-space-delimited list, /regex/, or predicate function.`,type:`string | RegExp | readonly (string | RegExp)[] | FilterFunction`,parse:(e,t)=>[...t||[],e],help:qn},{long:`rejectVersion`,arg:`p`,description:`Exclude package.json versions using comma-or-space-delimited list, /regex/, or predicate function.`,type:`string | RegExp | readonly (string | RegExp)[] | FilterFunction`,parse:(e,t)=>[...t||[],e],help:Jn},{long:`removeRange`,description:`Remove version ranges from the final package version.`,type:`boolean`},{long:`root`,default:!0,description:"Runs updates on the root project in addition to specified workspaces. Only allowed with `--workspace` or `--workspaces`.",type:`boolean`},{long:`retry`,arg:`n`,description:`Number of times to retry failed requests for package info.`,parse:e=>parseInt(e,10),default:3,type:`number`},{long:`silent`,short:`s`,description:"Don't output anything. Alias for `--loglevel` silent.",type:`boolean`},{long:`stdin`,description:`Read package.json from stdin.`,type:`string`},{long:`target`,short:`t`,arg:`value`,description:"Determines the version to upgrade to: latest, newest, greatest, minor, patch, semver, `@[tag]`, or [function]. (default: latest)",help:Xn,type:`${Rn.map(e=>`'${e}'`).join(` | `)} | \`@\${string}\` | TargetFunction`},{long:`timeout`,arg:`ms`,description:`Global timeout in milliseconds. (default: no global timeout and 30 seconds per npm-registry-fetch)`,parse:e=>parseInt(e,10),type:`number`},{long:`upgrade`,short:`u`,description:`Overwrite package file with upgraded versions instead of just outputting to console.`,type:`boolean`},{long:`verbose`,description:"Log additional information for debugging. Alias for `--loglevel` verbose.",type:`boolean`},{long:`workspace`,arg:`s`,parse:(e,t)=>[...t,e],default:[],description:"Run on one or more specified workspaces. Add `--no-root` to exclude the root project.",type:`readonly string[]`},{long:`workspaces`,short:`w`,description:"Run on all workspaces. Add `--no-root` to exclude the root project.",type:`boolean`},{long:`cooldown`,short:`c`,arg:`n`,description:`Sets a minimum age (in days) for package versions to be considered for upgrade, reducing the risk of installing newly published, potentially compromised packages.`,type:`number | CooldownFunction`,help:er,parse:e=>typeof e==`function`?e:parseInt(e,10)}],q=tr.reduce((e,t)=>({...e,...t.short?{[t.short]:t}:null,...t.long?{[t.long]:t}:null}),{}),nr=Dt(tr,e=>e.long);var rr=nr;const ir=[`package-lock.json`,`yarn.lock`,`pnpm-lock.yaml`,`deno.json`,`deno.jsonc`,`bun.lock`,`bun.lockb`];async function ar(e,t=g.default.readdir){try{let n=m.default.homedir(),r=m.default.tmpdir(),i=e.cwd?e.cwd:e.packageFile?u.default.dirname(e.packageFile):`.`;for(i=u.default.resolve(i);;){let e=await t(i);for(let t of ir)if(e.includes(t))return{directoryPath:i,filename:t};let a=u.default.resolve(i,`..`);if(a===i||a===n||a===r)break;i=a}}catch{}return null}const or={"package-lock":`npm`,yarn:`yarn`,"pnpm-lock":`pnpm`,deno:`deno`,bun:`bun`},sr=()=>{let e=process.env.npm_config_user_agent??``,t=process.env.npm_execpath??``;return e.startsWith(`yarn/`)||t.includes(`yarn`)||__dirname.includes(`/yarn/`)||__dirname.includes(`\\Yarn\\`)?`yarn`:e.startsWith(`pnpm/`)||t.includes(`pnpm`)||__dirname.includes(`/pnpm/`)||__dirname.includes(`\\pnpm\\`)?`pnpm`:e.startsWith(`bun/`)||typeof Bun<`u`||process.versions.bun||__dirname.includes(`/.bun/`)||__dirname.includes(`\\.bun\\`)?`bun`:`npm`},cr=async(e,t=g.default.readdir)=>{if(e.packageManager)return e.packageManager;if(e.global)return sr();let n=(await ar(e,t))?.filename;return n?or[n.split(`.`)[0]]:`npm`};var lr=cr,ur=class e{constructor(e,t,n){this.__specs=e||{},this.__opts=t||{},this.__providers=hr(n.filter(e=>typeof e==`object`&&!!e)),this.__isFiggyPudding=!0}get(e){return dr(this,e,!0)}toJSON(){let e={};return this.forEach((t,n)=>{e[n]=t}),e}forEach(e,t=this){for(let[n,r]of this.entries())e.call(t,r,n,this)}*entries(e){for(let e of Object.keys(this.__specs))yield[e,this.get(e)];let t=e||this.__opts.other;if(t){let e=new Set;for(let n of this.__providers){let r=n.entries?n.entries(t):gr(n);for(let[n,i]of r)t(n)&&!e.has(n)&&(e.add(n),yield[n,i])}}}concat(...t){return new Proxy(new e(this.__specs,this.__opts,hr(this.__providers).concat(t)),pr)}};function dr(e,t,n){let r=e.__specs[t];r||={};let i;for(let n of e.__providers)if(i=fr(t,n),i!==void 0)break;return i===void 0&&r.default!==void 0?typeof r.default==`function`?r.default(e):r.default:i}function fr(e,t){let n;return n=t.__isFiggyPudding?dr(t,e,!1):t[e],n}const pr={get(e,t){return typeof t==`symbol`||t.slice(0,2)===`__`||t in ur.prototype?e[t]:e.get(t)}};function mr(e,t){function n(...n){return new Proxy(new ur(e,t,n),pr)}return n}function hr(e){let t=[];return e.forEach(e=>t.unshift(e)),t}function gr(e){return Object.keys(e).map(t=>[t,e[t]])}const _r=mr({},{other(){return!0}}),vr=mr({cache:{default:j.default.join(process.env.HOME||A.default.homedir(),`.npm`)},configNames:{default:[`npmrc`,`.npmrc`]},envPrefix:{default:/^npm_config_/i},cwd:{default:()=>process.cwd()},globalconfig:{default:()=>j.default.join(xr(),`etc`,`npmrc`)},userconfig:{default:j.default.join(process.env.HOME||A.default.homedir(),`.npmrc`)}});function yr(e,t){let n=vr(t),r={};Object.keys(process.env).forEach(e=>{if(!e.match(n.envPrefix))return;let t=e.toLowerCase().replace(n.envPrefix,``).replace(/(?!^)_/g,`-`);r[t]=process.env[e]});let i=_r(e),a=n.userconfig||i.userconfig||r.userconfig,o=a&&br(a),s=n.globalconfig||i.globalconfig||r.globalconfig,c=s&&br(s),l=(0,O.findUpSync)(n.configNames,{cwd:n.cwd}),u={};l&&l!==a&&(u=br(l));let d=_r(n,c,o,u,r,i);return d.cache?d.concat({cache:j.default.resolve(i.cache||r.cache?n.cwd:u.cache?j.default.dirname(l):o.cache?j.default.dirname(a):c.cache?j.default.dirname(s):j.default.dirname(a),d.cache)}):d}function br(e){let t;try{t=k.default.readFileSync(e,`utf8`)}catch(e){if(e.code===`ENOENT`)return``;throw e}return T.default.parse(t)}function xr(){if(process.env.PREFIX)return process.env.PREFIX;if(process.platform===`win32`)return j.default.dirname(process.execPath);{let e=j.default.dirname(j.default.dirname(process.execPath));return process.env.DESTDIR&&(e=j.default.join(process.env.DESTDIR,e)),e}}var Sr=yr;function Cr(e,t){return t.deprecated||!e.deprecated}function wr(e,t){return t.pre?!0:!e.version||!Yt(e.version)}function Tr(e,t){if(!t)return!0;let n=b.default.minVersion(t)?.version;if(!n)return!0;let r=e?.engines?.node;return!r||b.default.satisfies(n,r)}function Er(e,t){return t?Object.values(t).every(t=>t[e.name]===void 0||b.default.satisfies(e.version,t[e.name])):!0}function Dr(e,t){let n=e.version,r=e?.time?.[n];if(!t)return!0;if(!r)return!1;let i=new Date(r),a=typeof t==`function`?t(e.name)??0:t;return Date.now()-i.getTime()>=a*864e5}function Or(e){let t=[t=>Cr(t,e),t=>wr(t,e),e.enginesNode?t=>Tr(t,e.nodeEngineVersion):null,e.peerDependencies?t=>Er(t,e.peerDependencies):null,e.cooldown?t=>Dr(t,e.cooldown):null];return e=>t.every(t=>t?t(e):!0)}var kr=s({default:()=>ni,defaultPrefix:()=>Gr,distTag:()=>Xr,fetchUpgradedPackumentMemo:()=>J,getEngines:()=>Jr,getPeerDependencies:()=>qr,greatest:()=>Kr,latest:()=>Zr,list:()=>Yr,minor:()=>$r,mockFetchUpgradedPackument:()=>Vr,newest:()=>Qr,normalizeNpmConfig:()=>Fr,packageAuthorChanged:()=>zr,parseJson:()=>Rr,patch:()=>ei,semver:()=>ti});const Ar=new Set([`-`,`||`,`&&`,`<`,`<=`,`>`,`>=`]),jr=e=>(0,x.parseRange)(e).some(e=>Ar.has(e.operator||``)),Mr=e=>e&&(!b.default.validRange(e)||Bt(e)),Nr=async(e,t,n,r={},i)=>{let a=E.default.pickRegistry(e,r),o={"user-agent":r.userAgent||`npm-check-updates/${de} node/${process.version}`,"ncu-version":de,"ncu-pkg-id":`registry:${e}`,accept:r.fullMetadata?`application/json`:`application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*`,...r.headers},s=new URL(encodeURIComponent(e),a.endsWith(`/`)?a:`${a}/`);i&&(s.pathname+=`/${i}`);let c={...r,headers:o,spec:e};try{if(r.fullMetadata)return E.default.json(s.href,c);{n||=`latest`;let r=E.default.json.stream(s.href,`$*`,c),i={name:e};for await(let{key:e,value:n}of r)if(t.includes(e)&&(i[e]=n,Object.keys(i).length===t.length+1))break;return i}}catch(a){if(a.code!==`E404`||r.fullMetadata)throw a;return Nr(e,t,n,{...r,fullMetadata:!0},i)}},Pr=(e,t)=>{let n=e.version;return{...e,name:t.name,...t?.time?.[n]?{time:t.time}:null}},Fr=(e,t)=>{let n={cafile:e=>{if(!e)return;let n=p.default.readFileSync(u.default.resolve(t||``,(0,D.default)(e)),`utf8`),r=`-----END CERTIFICATE-----`;return{ca:n.split(r).filter(e=>!!e.trim()).map(e=>`${e.trimStart()}${r}`)}},maxsockets:`maxSockets`,"strict-ssl":`strictSSL`},r={all:`boolean`,allowsameversion:`boolean`,audit:`boolean`,binlinks:`boolean`,color:`boolean`,commithooks:`boolean`,description:`boolean`,dev:`boolean`,diffignoreallspace:`boolean`,diffnameonly:`boolean`,diffnoprefix:`boolean`,difftext:`boolean`,dryrun:`boolean`,enginestrict:`boolean`,force:`boolean`,foregroundscripts:`boolean`,formatpackagelock:`boolean`,fund:`boolean`,gittagversion:`boolean`,global:`boolean`,globalstyle:`boolean`,ifpresent:`boolean`,ignorescripts:`boolean`,includestaged:`boolean`,includeworkspaceroot:`boolean`,installlinks:`boolean`,json:`boolean`,legacybundling:`boolean`,legacypeerdeps:`boolean`,link:`boolean`,long:`boolean`,offline:`boolean`,omitlockfileregistryresolved:`boolean`,packagelock:`boolean`,packagelockonly:`boolean`,parseable:`boolean`,preferoffline:`boolean`,preferonline:`boolean`,progress:`boolean`,readonly:`boolean`,rebuildbundle:`boolean`,save:`boolean`,savebundle:`boolean`,savedev:`boolean`,saveexact:`boolean`,saveoptional:`boolean`,savepeer:`boolean`,saveprod:`boolean`,shrinkwrap:`boolean`,signgitcommit:`boolean`,signgittag:`boolean`,strictpeerdeps:`boolean`,strictssl:`boolean`,timing:`boolean`,unicode:`boolean`,updatenotifier:`boolean`,usage:`boolean`,version:`boolean`,versions:`boolean`,workspacesupdate:`boolean`,diffunified:`number`,fetchretries:`number`,fetchretryfactor:`number`,fetchretrymaxtimeout:`number`,fetchretrymintimeout:`number`,fetchtimeout:`number`,logsmax:`number`,maxsockets:`number`,searchlimit:`number`,searchstaleness:`number`,ssopollfrequency:`number`,timeout:`number`},i=e=>!!e&&e!==`false`&&e!==`0`,a=e=>parseInt(e)||0;return P(e,(e,t)=>{let o=typeof t==`string`?r[e.replace(/-/g,``).toLowerCase()]===`boolean`?i(t):r[e.replace(/-/g,``).toLowerCase()]===`number`?a(t):t.replace(/\${([^}]+)}/,(e,t)=>process.env[t]):t,{[e]:s}=n;return typeof s==`string`?{[s]:o}:typeof s==`function`?{...s(o.toString())}:{[e.match(/^[a-z]/i)?(0,C.default)(e):e]:o}})},Ir=(0,w.default)(e=>{let t;if(e)try{t=T.default.parse(p.default.readFileSync(e,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}else t={...Sr(null,{userconfig:process.env.npm_config_userconfig||process.env.NPM_CONFIG_USERCONFIG}).toJSON(),cache:!1};return Fr(t,e)}),Lr=Ir();function Rr(e,t){let n;try{n=JSON.parse(e)}catch{throw Error(`Expected JSON from "${t.command}".${t.packageName?` There could be problems with the ${t.packageName} package.`:``} ${e?`Instead received: `+e:`Received empty response.`}`)}return n}async function zr(e,t,n,r={},i){let a=await Nr(e,[`versions`],null,{...i,...Lr,fullMetadata:!0,...r.registry?{registry:r.registry,silent:!0}:null});if(a.versions){let e=Object.keys(a.versions),r=b.default.minSatisfying(e,t),i=b.default.maxSatisfying(e,n);if(r&&i&&a.versions[r]._npmUser&&a.versions[i]._npmUser)return a.versions[r]._npmUser?.name!==a.versions[i]._npmUser?.name}return!1}const Br=e=>!!(e&&(e.name||e.engines||e.version||e.versions)),Vr=e=>(t,n,r,i)=>{let a=typeof e==`function`?e(i)?.[t]:typeof e==`string`||Br(e)?e:e[t],o=Br(a)?a.version:a;if(!o)throw Error(`fetchUpgradedPackument is mocked, but no mock version was supplied for ${t}. Make sure that all dependencies are mocked. `);let s=Br(a)&&a.time?.[o]||new Date().toISOString(),c={name:t,"dist-tags":{[i.distTag||`latest`]:o},engines:{node:``},time:{[o]:s},version:o,versions:{},...Br(a)?a:null},{versions:l,...u}=c;return Promise.resolve({...c,versions:{...Br(a)&&a.versions||{[o]:u}}})},Hr=(0,w.default)(({npmConfigLocal:e,npmConfigUser:t,npmConfigWorkspaceProject:n},r)=>{let i=r.packageFile?u.default.join(r.packageFile,`../.npmrc`):null,a=r.packageFile?Ir(i||void 0):null,o=r.cwd?u.default.join(r.cwd,`.npmrc`):null,s=r.cwd?Ir(o):null;if(n&&Object.keys(n).length>0){H(r,`
338
+ npm config (workspace project):`,`verbose`);let{cache:e,...t}=n;U(r,t,`verbose`)}if(t&&Object.keys(t).length>0){H(r,`
339
+ npm config (user):`,`verbose`);let{cache:e,...n}=t;U(r,n,`verbose`)}if(e&&Object.keys(e).length>0){H(r,`
340
+ npm config (local override):`,`verbose`);let{cache:t,...n}=e;U(r,n,`verbose`)}if(a&&Object.keys(a).length>0){H(r,`\nnpm config (project: ${i}):`,`verbose`);let{cache:e,...t}=a;U(r,t,`verbose`)}if(s&&Object.keys(s).length>0){H(r,`\nnpm config (cwd: ${o}):`,`verbose`);let{cache:e,...t}=s;U(r,t,`verbose`)}let c={...n,...t,...e,...a,...s,...r.registry?{registry:r.registry,silent:!0}:null,...r.timeout?{timeout:r.timeout}:null};if(n||e||a||s){H(r,`
341
+ merged npm config:`,`verbose`);let{cache:e,...t}=c;U(r,t,`verbose`)}return c});async function Ur(e,t,n,r,i=0,a,o){if(process.env.STUB_VERSIONS)return Vr(JSON.parse(process.env.STUB_VERSIONS))(e,t,n,r);if(Mr(n))return Promise.resolve({});let s=r.format?.includes(`time`)&&!t.includes(`time`)?[...t,`time`]:t,c=s.includes(`time`),l=Hr({npmConfigUser:{...Lr,fullMetadata:c},npmConfigLocal:a,npmConfigWorkspaceProject:o},r),u;try{let n=r.distTag||`latest`;u=await Nr(e,Array.from(new Set([`dist-tags`,...t,...r.deprecated?[]:[`deprecated`,`versions`],...r.enginesNode?[`engines`,`versions`]:[]])),c?null:n,l)}catch(t){if(r.retry&&++i<=r.retry)return Ur(e,s,n,r,i,a);throw t}return u}const J=(0,w.default)(Ur,{serializer:(([e,t,n,r,i,a,o])=>{let{packageFile:s,...c}=r;return JSON.stringify([e,t,Mr(n),c,i,a,o])})});async function Wr(e,t={},n={},r={}){let{stdout:i}=await(0,f.default)(process.platform===`win32`?`npm.cmd`:`npm`,[...t.global?[`--global`]:[],...t.prefix?[`--prefix=${t.prefix}`]:[],`--json`,...Array.isArray(e)?e:[e]],n,r);return i}async function Gr(e){if(e.prefix)return Promise.resolve(e.prefix);let t=process.platform===`win32`?`npm.cmd`:`npm`,n;try{let{stdout:e}=await(0,f.default)(t,[`config`,`get`,`prefix`]);n=e}catch(t){H(e,"Error executing `npm config get prefix`. Caught and ignored. Unsolved: https://github.com/raineorshine/npm-check-updates/issues/703. ERROR: "+(t.message||t||``).toString(),`verbose`,`error`)}return e.global&&n?.match(`Cellar`)?`/usr/local`:process.platform===`win32`&&e.global&&!process.env.prefix?n?n.trim():`${process.env.AppData}\\npm`:void 0}const Kr=async(e,t,n={},r,i)=>{let a=[`versions`];n.cooldown&&a.push(`time`);let o=await J(e,a,t,n,0,r,i),s=o?.versions;return{version:Object.values(s||{}).filter(e=>Or(n)(Pr(e,o))).map(e=>e.version).sort(qt).at(-1)||null}},qr=async(e,t,n)=>{let r=[`view`,`${e}@${t}`,`peerDependencies`],i=await Wr(r,{},{rejectOnError:!1},n);return i?Rr(i,{command:[...r,`--json`].join(` `)}):{}},Jr=async(e,t,n={},r)=>(await Nr(e,[`engines`],null,{...r,...Lr,...n.registry?{registry:n.registry,silent:!0}:null},t)).engines||{},Yr=async(e={})=>{let t=Rr(await Wr([`ls`,`--depth=0`],{...e.global?{global:!0}:null,...e.prefix?{prefix:e.prefix}:null},{rejectOnError:!1},{...e.cwd?{cwd:e.cwd}:null}),{command:`npm${process.platform===`win32`?`.cmd`:``} ls --json${e.global?` --global`:``}`}).dependencies;return P(t,(e,t)=>({[e]:t.version||t.required?.version}))},Xr=async(e,t,n={},r,i)=>{let a=[`dist-tags`];n.cooldown&&a.push(`time`);let o=await J(e,a,t,n,0,r,i),s=o?.[`dist-tags`]?.[n.distTag||`latest`],c=o?.versions?o.versions?.[s]:{name:e,version:s},l=Pr(c,o);return c&&Or(n)(l)?{version:c.version,...o?.time?.[s]?{time:o.time[s]}:null}:n.cooldown||n.distTag&&n.distTag!==`latest`?{}:Kr(e,t,n,r,i)},Zr=async(e,t,n={},r,i)=>Xr(e,t,{...n,distTag:`latest`},r,i),Qr=async(e,t,n={},r,i)=>{let a=await J(e,[`time`,`versions`],t,n,0,r,i),o=P(a?.versions||{},(e,t)=>Tr(t,n.nodeEngineVersion)?{[t.version]:!0}:null),s=L(a?.time||{},e=>o[e]&&(n.pre!==!1||!Yt(e))),c=Dt(Object.entries(s),e=>e[1]).map(([e])=>e);return n.cooldown?{version:c.filter(e=>Dr(Pr(a.versions[e],a),n.cooldown)).at(-1)}:{version:c.at(-1)}},$r=async(e,t,n={},r,i)=>{let a=[`versions`];n.cooldown&&a.push(`time`);let o=await J(e,a,t,n,0,r,i),s=o?.versions;return{version:Jt(Object.values(s||{}).filter(e=>Or(n)(Pr(e,o))).map(e=>e.version),t,`minor`)}},ei=async(e,t,n={},r,i)=>{let a=[`versions`];n.cooldown&&a.push(`time`);let o=await J(e,a,t,n,0,r,i),s=o?.versions;return{version:Jt(Object.values(s||{}).filter(e=>Or(n)(Pr(e,o))).map(e=>e.version),t,`patch`)}},ti=async(e,t,n={},r,i)=>{let a=[`versions`];n.cooldown&&a.push(`time`);let o=await J(e,a,t,n,0,r,i),s=o?.versions;if(jr(t))return{version:null};let c=Object.values(s||{}).filter(e=>Or(n)(Pr(e,o))).map(e=>e.version);return{version:b.default.maxSatisfying(c,t)}};var ni=Wr,ri=s({default:()=>si,defaultPrefix:()=>ai,distTag:()=>Xr,getEngines:()=>Jr,getPeerDependencies:()=>qr,greatest:()=>Kr,latest:()=>Zr,list:()=>oi,minor:()=>$r,newest:()=>Qr,packageAuthorChanged:()=>zr,patch:()=>ei,semver:()=>ti});async function ii(e,t={},n={},r={}){return(0,f.default)(`bun`,[...t.global?[`--global`]:[],...t.prefix?[`--prefix=${t.prefix}`]:[],...Array.isArray(e)?e:[e]],n,r)}const ai=async e=>e.global?e.prefix||process.env.BUN_INSTALL||u.default.dirname((await(0,f.default)(`bun`,[`pm`,`-g`,`bin`])).stdout):void 0,oi=async(e={})=>{let{default:t}=await Promise.resolve().then(()=>require(`./strip-ansi.cjs`)),{stdout:n}=await ii([`pm`,`ls`],{...e.global?{global:!0}:null,...e.prefix?{prefix:e.prefix}:null},{rejectOnError:!1},{env:{...process.env,NO_COLOR:`1`},...e.cwd?{cwd:e.cwd}:null});return F(t(n).split(`
342
+ `),e=>{let t=e.match(/.* (.+?)@(.+)/);if(t){let[,e,n]=t;return{[e]:n}}return null})};var si=ii,ci=s({default:()=>yi,defaultPrefix:()=>Gr,distTag:()=>di,getEngines:()=>Jr,getPeerDependencies:()=>qr,greatest:()=>fi,latest:()=>pi,list:()=>ui,minor:()=>mi,newest:()=>hi,packageAuthorChanged:()=>zr,patch:()=>gi,semver:()=>_i});const li=(0,w.default)(async e=>{let t=await(0,O.findUp)(`pnpm-workspace.yaml`);if(!t)return{};let n=u.default.dirname(t),r=u.default.join(n,`.npmrc`),i;try{i=await g.default.readFile(r,`utf-8`)}catch{return{}}H(e,`\nUsing pnpm workspace config at ${r}:`,`verbose`);let a=Fr(T.default.parse(i),n);return H(e,a,`verbose`),a}),ui=async(e={})=>{if(!e.global)return Yr(e);let{stdout:t}=await(0,f.default)(process.platform===`win32`?`pnpm.cmd`:`pnpm`,[`ls`,`-g`,`--json`]);return F(JSON.parse(t)[0].dependencies||{},(e,{version:t})=>({[e]:t}))},Y=e=>async(t,n,r={})=>e(t,n,r,{},await li(r)),di=Y(Xr),fi=Y(Kr),pi=Y(Zr),mi=Y($r),hi=Y(Qr),gi=Y(ei),_i=Y(ti);async function vi(e,t={},n,r){let{stdout:i}=await(0,f.default)(process.platform===`win32`?`pnpm.cmd`:`pnpm`,[...t.global?`global`:[],...Array.isArray(e)?e:[e],...t.prefix?`--prefix=${t.prefix}`:[]],r,n);return i}var yi=vi,bi=o(((e,t)=>{function n(e){return e}t.exports=n})),xi=o(((e,t)=>{t.exports=Ke()(z(),`WeakMap`)})),Si=o(((e,t)=>{var n=xi();t.exports=n&&new n})),Ci=o(((e,t)=>{var n=bi(),r=Si();t.exports=r?function(e,t){return r.set(e,t),e}:n})),wi=o(((e,t)=>{var n=ze(),r=Object.create;t.exports=function(){function e(){}return function(t){if(!n(t))return{};if(r)return r(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}()})),Ti=o(((e,t)=>{var n=wi(),r=ze();function i(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var i=n(e.prototype),a=e.apply(i,t);return r(a)?a:i}}t.exports=i})),Ei=o(((e,t)=>{var n=Ti(),r=z(),i=1;function a(e,t,a){var o=t&i,s=n(e);function c(){return(this&&this!==r&&this instanceof c?s:e).apply(o?a:this,arguments)}return c}t.exports=a})),Di=o(((e,t)=>{function n(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}t.exports=n})),Oi=o(((e,t)=>{var n=Math.max;function r(e,t,r,i){for(var a=-1,o=e.length,s=r.length,c=-1,l=t.length,u=n(o-s,0),d=Array(l+u),f=!i;++c<l;)d[c]=t[c];for(;++a<s;)(f||a<o)&&(d[r[a]]=e[a]);for(;u--;)d[c++]=e[a++];return d}t.exports=r})),ki=o(((e,t)=>{var n=Math.max;function r(e,t,r,i){for(var a=-1,o=e.length,s=-1,c=r.length,l=-1,u=t.length,d=n(o-c,0),f=Array(d+u),p=!i;++a<d;)f[a]=e[a];for(var m=a;++l<u;)f[m+l]=t[l];for(;++s<c;)(p||a<o)&&(f[m+r[s]]=e[a++]);return f}t.exports=r})),Ai=o(((e,t)=>{function n(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}t.exports=n})),ji=o(((e,t)=>{function n(){}t.exports=n})),Mi=o(((e,t)=>{var n=wi(),r=ji(),i=4294967295;function a(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=i,this.__views__=[]}a.prototype=n(r.prototype),a.prototype.constructor=a,t.exports=a})),Ni=o(((e,t)=>{function n(){}t.exports=n})),Pi=o(((e,t)=>{var n=Si(),r=Ni();t.exports=n?function(e){return n.get(e)}:r})),Fi=o(((e,t)=>{t.exports={}})),Ii=o(((e,t)=>{var n=Fi(),r=Object.prototype.hasOwnProperty;function i(e){for(var t=e.name+``,i=n[t],a=r.call(n,t)?i.length:0;a--;){var o=i[a],s=o.func;if(s==null||s==e)return o.name}return t}t.exports=i})),Li=o(((e,t)=>{var n=wi(),r=ji();function i(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}i.prototype=n(r.prototype),i.prototype.constructor=i,t.exports=i})),Ri=o(((e,t)=>{function n(e,t){var n=-1,r=e.length;for(t||=Array(r);++n<r;)t[n]=e[n];return t}t.exports=n})),zi=o(((e,t)=>{var n=Mi(),r=Li(),i=Ri();function a(e){if(e instanceof n)return e.clone();var t=new r(e.__wrapped__,e.__chain__);return t.__actions__=i(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}t.exports=a})),Bi=o(((e,t)=>{var n=Mi(),r=Li(),i=ji(),a=R(),o=Ie(),s=zi(),c=Object.prototype.hasOwnProperty;function l(e){if(o(e)&&!a(e)&&!(e instanceof n)){if(e instanceof r)return e;if(c.call(e,`__wrapped__`))return s(e)}return new r(e)}l.prototype=i.prototype,l.prototype.constructor=l,t.exports=l})),Vi=o(((e,t)=>{var n=Mi(),r=Pi(),i=Ii(),a=Bi();function o(e){var t=i(e),o=a[t];if(typeof o!=`function`||!(t in n.prototype))return!1;if(e===o)return!0;var s=r(o);return!!s&&e===s[0]}t.exports=o})),Hi=o(((e,t)=>{var n=800,r=16,i=Date.now;function a(e){var t=0,a=0;return function(){var o=i(),s=r-(o-a);if(a=o,s>0){if(++t>=n)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}t.exports=a})),Ui=o(((e,t)=>{var n=Ci();t.exports=Hi()(n)})),Wi=o(((e,t)=>{var n=/\{\n\/\* \[wrapped with (.+)\] \*/,r=/,? & /;function i(e){var t=e.match(n);return t?t[1].split(r):[]}t.exports=i})),Gi=o(((e,t)=>{var n=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function r(e,t){var r=t.length;if(!r)return e;var i=r-1;return t[i]=(r>1?`& `:``)+t[i],t=t.join(r>2?`, `:` `),e.replace(n,`{
343
+ /* [wrapped with `+t+`] */
344
+ `)}t.exports=r})),Ki=o(((e,t)=>{function n(e){return function(){return e}}t.exports=n})),qi=o(((e,t)=>{var n=Ke();t.exports=function(){try{var e=n(Object,`defineProperty`);return e({},``,{}),e}catch{}}()})),Ji=o(((e,t)=>{var n=Ki(),r=qi(),i=bi();t.exports=r?function(e,t){return r(e,`toString`,{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:i})),Yi=o(((e,t)=>{var n=Ji();t.exports=Hi()(n)})),Xi=o(((e,t)=>{function n(e,t){for(var n=-1,r=e==null?0:e.length;++n<r&&t(e[n],n,e)!==!1;);return e}t.exports=n})),Zi=o(((e,t)=>{function n(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}t.exports=n})),Qi=o(((e,t)=>{function n(e){return e!==e}t.exports=n})),$i=o(((e,t)=>{function n(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}t.exports=n})),ea=o(((e,t)=>{var n=Zi(),r=Qi(),i=$i();function a(e,t,a){return t===t?i(e,t,a):n(e,r,a)}t.exports=a})),ta=o(((e,t)=>{var n=ea();function r(e,t){return!!(e!=null&&e.length)&&n(e,t,0)>-1}t.exports=r})),na=o(((e,t)=>{var n=Xi(),r=ta(),i=[[`ary`,128],[`bind`,1],[`bindKey`,2],[`curry`,8],[`curryRight`,16],[`flip`,512],[`partial`,32],[`partialRight`,64],[`rearg`,256]];function a(e,t){return n(i,function(n){var i=`_.`+n[0];t&n[1]&&!r(e,i)&&e.push(i)}),e.sort()}t.exports=a})),ra=o(((e,t)=>{var n=Wi(),r=Gi(),i=Yi(),a=na();function o(e,t,o){var s=t+``;return i(e,r(s,a(n(s),o)))}t.exports=o})),ia=o(((e,t)=>{var n=Vi(),r=Ui(),i=ra(),a=1,o=2,s=4,c=8,l=32,u=64;function d(e,t,d,f,p,m,h,g,_,v){var y=t&c,b=y?h:void 0,x=y?void 0:h,S=y?m:void 0,C=y?void 0:m;t|=y?l:u,t&=~(y?u:l),t&s||(t&=~(a|o));var w=[e,t,p,S,b,C,x,g,_,v],T=d.apply(void 0,w);return n(e)&&r(T,w),T.placeholder=f,i(T,e,t)}t.exports=d})),aa=o(((e,t)=>{function n(e){return e.placeholder}t.exports=n})),oa=o(((e,t)=>{var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function i(e,t){var i=typeof e;return t??=n,!!t&&(i==`number`||i!=`symbol`&&r.test(e))&&e>-1&&e%1==0&&e<t}t.exports=i})),sa=o(((e,t)=>{var n=Ri(),r=oa(),i=Math.min;function a(e,t){for(var a=e.length,o=i(t.length,a),s=n(e);o--;){var c=t[o];e[o]=r(c,a)?s[c]:void 0}return e}t.exports=a})),ca=o(((e,t)=>{var n=`__lodash_placeholder__`;function r(e,t){for(var r=-1,i=e.length,a=0,o=[];++r<i;){var s=e[r];(s===t||s===n)&&(e[r]=n,o[a++]=r)}return o}t.exports=r})),la=o(((e,t)=>{var n=Oi(),r=ki(),i=Ai(),a=Ti(),o=ia(),s=aa(),c=sa(),l=ca(),u=z(),d=1,f=2,p=8,m=16,h=128,g=512;function _(e,t,v,y,b,x,S,C,w,T){var E=t&h,D=t&d,O=t&f,k=t&(p|m),A=t&g,j=O?void 0:a(e);function M(){for(var d=arguments.length,f=Array(d),p=d;p--;)f[p]=arguments[p];if(k)var m=s(M),h=i(f,m);if(y&&(f=n(f,y,b,k)),x&&(f=r(f,x,S,k)),d-=h,k&&d<T){var g=l(f,m);return o(e,t,_,M.placeholder,v,f,g,C,w,T-d)}var N=D?v:this,ee=O?N[e]:e;return d=f.length,C?f=c(f,C):A&&d>1&&f.reverse(),E&&w<d&&(f.length=w),this&&this!==u&&this instanceof M&&(ee=j||a(ee)),ee.apply(N,f)}return M}t.exports=_})),ua=o(((e,t)=>{var n=Di(),r=Ti(),i=la(),a=ia(),o=aa(),s=ca(),c=z();function l(e,t,l){var u=r(e);function d(){for(var r=arguments.length,f=Array(r),p=r,m=o(d);p--;)f[p]=arguments[p];var h=r<3&&f[0]!==m&&f[r-1]!==m?[]:s(f,m);return r-=h.length,r<l?a(e,t,i,d.placeholder,void 0,f,h,void 0,void 0,l-r):n(this&&this!==c&&this instanceof d?u:e,this,f)}return d}t.exports=l})),da=o(((e,t)=>{var n=Di(),r=Ti(),i=z(),a=1;function o(e,t,o,s){var c=t&a,l=r(e);function u(){for(var t=-1,r=arguments.length,a=-1,d=s.length,f=Array(d+r),p=this&&this!==i&&this instanceof u?l:e;++a<d;)f[a]=s[a];for(;r--;)f[a++]=arguments[++t];return n(p,c?o:this,f)}return u}t.exports=o})),fa=o(((e,t)=>{var n=Oi(),r=ki(),i=ca(),a=`__lodash_placeholder__`,o=1,s=2,c=4,l=8,u=128,d=256,f=Math.min;function p(e,t){var p=e[1],m=t[1],h=p|m,g=h<(o|s|u),_=m==u&&p==l||m==u&&p==d&&e[7].length<=t[8]||m==(u|d)&&t[7].length<=t[8]&&p==l;if(!(g||_))return e;m&o&&(e[2]=t[2],h|=p&o?0:c);var v=t[3];if(v){var y=e[3];e[3]=y?n(y,v,t[4]):v,e[4]=y?i(e[3],a):t[4]}return v=t[5],v&&(y=e[5],e[5]=y?r(y,v,t[6]):v,e[6]=y?i(e[5],a):t[6]),v=t[7],v&&(e[7]=v),m&u&&(e[8]=e[8]==null?t[8]:f(e[8],t[8])),e[9]??=t[9],e[0]=t[0],e[1]=h,e}t.exports=p})),pa=o(((e,t)=>{var n=/\s/;function r(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t}t.exports=r})),ma=o(((e,t)=>{var n=pa(),r=/^\s+/;function i(e){return e&&e.slice(0,n(e)+1).replace(r,``)}t.exports=i})),ha=o(((e,t)=>{var n=ma(),r=ze(),i=Le(),a=NaN,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;function u(e){if(typeof e==`number`)return e;if(i(e))return a;if(r(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=r(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=n(e);var u=s.test(e);return u||c.test(e)?l(e.slice(2),u?2:8):o.test(e)?a:+e}t.exports=u})),ga=o(((e,t)=>{var n=ha(),r=1/0,i=17976931348623157e292;function a(e){return e?(e=n(e),e===r||e===-r?(e<0?-1:1)*i:e===e?e:0):e===0?e:0}t.exports=a})),_a=o(((e,t)=>{var n=ga();function r(e){var t=n(e),r=t%1;return t===t?r?t-r:t:0}t.exports=r})),va=o(((e,t)=>{var n=Ci(),r=Ei(),i=ua(),a=la(),o=da(),s=Pi(),c=fa(),l=Ui(),u=ra(),d=_a(),f=`Expected a function`,p=1,m=2,h=8,g=16,_=32,v=64,y=Math.max;function b(e,t,b,x,S,C,w,T){var E=t&m;if(!E&&typeof e!=`function`)throw TypeError(f);var D=x?x.length:0;if(D||(t&=~(_|v),x=S=void 0),w=w===void 0?w:y(d(w),0),T=T===void 0?T:d(T),D-=S?S.length:0,t&v){var O=x,k=S;x=S=void 0}var A=E?void 0:s(e),j=[e,t,b,x,S,O,k,C,w,T];if(A&&c(j,A),e=j[0],t=j[1],b=j[2],x=j[3],S=j[4],T=j[9]=j[9]===void 0?E?0:e.length:y(j[9]-D,0),!T&&t&(h|g)&&(t&=~(h|g)),!t||t==p)var M=r(e,t,b);else M=t==h||t==g?i(e,t,T):(t==_||t==(p|_))&&!S.length?o(e,t,b,x):a.apply(void 0,j);return u((A?n:l)(M,j),e,t)}t.exports=b})),ya=o(((e,t)=>{var n=va(),r=8;function i(e,t,a){t=a?void 0:t;var o=n(e,r,void 0,void 0,void 0,void 0,void 0,t);return o.placeholder=i.placeholder,o}i.placeholder={},t.exports=i})),ba=s({default:()=>Ua,defaultPrefix:()=>ja,distTag:()=>Na,getEngines:()=>Va,getPathToLookForYarnrc:()=>Ta,getPeerDependencies:()=>Ba,greatest:()=>Pa,latest:()=>Fa,list:()=>Ma,minor:()=>Ia,newest:()=>La,npmAuthTokenKeyValue:()=>Ca,packageAuthorChanged:()=>Ha,patch:()=>Ra,semver:()=>za}),xa=l(ya(),1);const Sa=(e,t)=>e.replace(/\$\{([^:-]+)(?:(:)?-([^}]*))?\}/g,(e,n,r,i,a)=>t[n]||(i?a:``)),Ca=(0,xa.default)((e,t,n)=>{if(n.npmAuthToken){let r=n.npmRegistryServer||e[`@${t}:registry`];if(r){let e=r.replace(/^https?:/,``);return e.endsWith(`/`)&&(e=e.slice(0,-1)),{[`${e}/:_authToken`]:Sa(n.npmAuthToken,process.env)}}}return null}),wa=(e,t)=>t.npmRegistryServer?{[`@${e}:registry`]:Sa(t.npmRegistryServer,process.env)}:null;async function Ta(e,t=g.default.readdir){if(e.global)return;let n=(await ar(e,t))?.directoryPath;if(n)return u.default.join(n,`.yarnrc.yml`)}const Ea=(0,w.default)(async e=>{let t=await Ta(e),n=u.default.join(m.default.homedir(),`.yarnrc.yml`),r=typeof t==`string`&&await Ce(t),i=await Ce(n),a=r?await g.default.readFile(t,`utf-8`):``,o=i?await g.default.readFile(n,`utf-8`):``,s=M.default.load(a),c=M.default.load(o),l={...P(c?.npmScopes||{},wa),...P(s?.npmScopes||{},wa)};return l={...l,...P(c?.npmScopes||{},Ca(l)),...P(s?.npmScopes||{},Ca(l))},r&&(H(e,`\nUsing local yarn config at ${t}:`,`verbose`),H(e,s,`verbose`)),i&&(H(e,`\nUsing user yarn config at ${n}:`,`verbose`),H(e,s,`verbose`)),Object.keys(l)&&(H(e,`
345
+ Merged yarn config in npm format:`,`verbose`),H(e,l,`verbose`)),l});function Da(e){return new Promise((t,n)=>{let r={},i=N.default.parse();i.on(`data`,e=>{if(e.type===`info`&&!e.data.match(/^Visit/)){let[,t,n]=e.data.match(/"(@?.*)@(.*)"/)||[];r[t]={version:n,from:t}}else e.type===`error`&&n(Error(e.data))}),i.on(`end`,()=>{t({dependencies:r})}),i.on(`error`,n),i.write(e),i.end()})}function Oa(e){return new Promise((t,n)=>{let r=N.default.parse(),i=!1;r.on(`data`,e=>{i||(i=!0,t(JSON.stringify(e)))}),r.on(`error`,n),r.write(e),r.end()})}const ka=process.platform===`win32`?`yarn.cmd`:`yarn`;async function Aa(e,t={},n={},r={}){let{stdout:i}=await(0,f.default)(ka,[...t.global?[`global`]:[],...t.prefix?[`--prefix=${t.prefix}`]:[],`--depth=0`,`--json`,`--no-progress`,...Array.isArray(e)?e:[e]],n,r);return i}async function ja(e){if(e.prefix)return Promise.resolve(e.prefix);let{stdout:t}=await(0,f.default)(ka,[`global`,`dir`]).catch(()=>({stdout:null}));return e.global&&t&&t.match(`Cellar`)?`/usr/local`:process.platform===`win32`&&e.global&&!process.env.prefix?t?t.trim():`${process.env.LOCALAPPDATA}\\Yarn\\Data\\global`:null}const Ma=async(e={},t)=>P((await Da(await Aa(`list`,e,{},{...e.cwd?{cwd:e.cwd}:{},...t}))).dependencies,(e,t)=>({[e]:t.version||t.required?.version})),X=e=>async(t,n,r={})=>e(t,n,r,await Ea(r)),Na=X(Xr),Pa=X(Kr),Fa=X(Zr),Ia=X($r),La=X(Qr),Ra=X(ei),za=X(ti),Ba=async(e,t,n)=>{let{stdout:r}=await(0,f.default)(ka,[`--version`],{rejectOnError:!1},n);if(r.startsWith(`1`)){let r=[`--json`,`info`,`${e}@${t}`,`peerDependencies`],{stdout:i}=await(0,f.default)(ka,r,{rejectOnError:!1},n);return i&&Rr(i,{command:r.join(` `)}).data||{}}else{let r=[`--json`,`npm`,`info`,`${e}@${t}`,`--fields`,`peerDependencies`],{stdout:i}=await(0,f.default)(ka,r,{rejectOnError:!1},n);if(!i)return{};try{return Rr(i,{command:r.join(` `)}).peerDependencies||{}}catch(e){try{let e=await Oa(i);if(e)return Rr(e,{command:r.join(` `)}).peerDependencies||{}}catch{}throw e}}},Va=async(e,t,n={})=>Jr(e,t,n,await Ea(n)),Ha=async(e,t,n,r={})=>zr(e,t,n,r,await Ea(r));var Ua=Aa;function Wa(e,t,{color:n=!0}={}){if(e.cli)H(e,n?I.red(t):t,null,`error`),process.exit(1);else throw Error(t)}var Z=Wa;const Ga=async(e,t)=>{let n,r;try{r=await g.default.readFile(t,`utf-8`),n=JSON.parse(r)}catch{Z(e,`Missing or invalid ${t}`)}return{name:void 0,pkg:n,pkgFile:r,filepath:t}};var Ka=Ga;const qa={dev:`devDependencies`,peer:`peerDependencies`,prod:`dependencies`,optional:`optionalDependencies`},Ja=e=>(e?typeof e==`string`?e.split(`,`):e:q.dep.default).map(e=>qa[e]||e);var Ya=Ja;function Xa(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,`\\$&`)}async function Za(e,t,n){let r=await g.default.readFile(e,`utf-8`);return Object.entries(n).filter(([e])=>t[e]).reduce((e,[n,r])=>{let i=t[n],a=`(${Xa(n)}\\s*:\\s*["'])(${Xa(i)})(["'])`,o=`(${Xa(n)}\\s*:\\s*)(${Xa(i)})(\\s*(?:\\n|$))`,s=new RegExp(a,`g`),c=new RegExp(o,`g`);return e.replace(s,`$1${r}$3`).replace(c,`$1${r}$3`)},r)}async function Qa(e,t,n){let r=await g.default.readFile(e,`utf-8`);return Object.entries(n).filter(([e])=>t[e]).reduce((e,[n,r])=>{let i=t[n],a=`("${Xa(n)}"\\s*:\\s*")(${Xa(i)})(")`,o=new RegExp(a,`g`);return e.replace(o,`$1${r}$3`)},r)}async function $a(e,t,n){let r=u.default.extname(e);if(r===`.yaml`||r===`.yml`)return Za(e,t,n);if(r===`.json`)return Qa(e,t,n);throw Error(`Unsupported catalog file type: ${e}`)}var eo=$a;function to(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,`\\$&`)}async function no(e,t,n,r,i){if(i){let r=u.default.basename(i),a=u.default.extname(i);if(i.includes(`#catalog`)){let e=i.replace(`#catalog`,``);if(u.default.extname(e)===`.json`)return eo(e,t,n)}if(r===`pnpm-workspace.yaml`||r.includes(`catalog`)&&(a===`.yaml`||a===`.yml`)){let r=JSON.parse(e);if(typeof r==`object`&&r.name===`catalog-dependencies`&&typeof r.dependencies==`object`&&Object.keys(r).length<=3){let e=await g.default.readFile(i,`utf-8`),t=M.default.load(e);if(t.catalogs&&=Object.entries(t.catalogs).reduce((e,[t,r])=>({...e,[t]:{...r,...Object.entries(n).filter(([e])=>r[e]).reduce((e,[t,n])=>({...e,[t]:n}),{})}}),{}),t.catalog){let e=t.catalog;t.catalog={...e,...Object.entries(n).filter(([t])=>e[t]).reduce((e,[t,n])=>({...e,[t]:n}),{})}}return t.catalogs?.default&&(t.catalog=t.catalogs.default),JSON.stringify(t,null,2)}return eo(i,t,n)}if(a===`.json`){let r=JSON.parse(e),a=r.catalog||r.catalogs,o=r.workspaces&&!Array.isArray(r.workspaces)&&(r.workspaces.catalog||r.workspaces.catalogs);if(a||o)return eo(i,t,n)}}let a=[...Ya(r.dep),`overrides`],o=RegExp(`"(${a.join(`|`)})"s*:[^}]*`,`g`),s=e.replace(o,e=>Object.entries(n).reduce((e,[r])=>{let i=`"${r}"\\s*:\\s*("|{\\s*"."\\s*:\\s*")(${to(t[r])})"`,a=new RegExp(i,`g`);return e.replace(a,(e,t)=>`"${r}${t?`": ${t}`:`: `}${n[r]}"`)},e));if(a.includes(`packageManager`)){let t=JSON.parse(e);if(t.packageManager){let[e]=t.packageManager.split(`@`);n[e]&&(s=s.replace(/"packageManager"\s*:\s*".*?@[^"]*"/,`"packageManager": "${e}@${n[e]}"`))}}return s}var ro=no;const io=(e,t,n,{spawnOptions:r,spawnPleaseOptions:i}={})=>{n&&console.log(I.blue([t.packageManager,...e].join(` `)));let a={cwd:t.cwd||process.cwd(),env:{...process.env,...t.packageManager===`pnpm`?null:{CI:`1`},FORCE_COLOR:`1`,...r?.env},...r},o={...t.global?{global:!0}:null,...t.prefix?{prefix:t.prefix}:null};return(t.packageManager===`pnpm`?yi:t.packageManager===`yarn`?Ua:t.packageManager===`bun`?si:ni)(e,o,i,a)},ao=async e=>{(e.packageData||e.packageFile)&&(console.error(`--packageData and --packageFile are not allowed with --doctor. You must execute "ncu --doctor" in a directory with a package file so it can install dependencies and test them.`),process.exit(1));let t;try{t=await Ka(e,`package.json`)}catch{console.error(`Missing or invalid package.json`),process.exit(1)}return!e.doctorTest&&!t.pkg.scripts?.test&&(console.error(`No npm "test" script defined. You must define a "test" script in the "scripts" section of your package.json to use --doctor.`),process.exit(1)),t},oo=async(e,t)=>{await ve();let n=t.packageManager===`yarn`?`yarn.lock`:t.packageManager===`pnpm`?`pnpm-lock.yaml`:t.packageManager===`bun`?`bun.lock`:`package-lock.json`,{pkg:r,pkgFile:i}=await ao(t),a={...r.dependencies,...r.devDependencies,...r.optionalDependencies},o=async()=>{if(t.doctorInstall){let[e,...n]=t.doctorInstall.split(` `);console.log(I.blue(t.doctorInstall)),await(0,f.default)(e,n)}else await io([`install`],{packageManager:t.packageManager},!0)},s=async()=>{let e={stderr:e=>{console.error(I.red(e.toString()))},stdout:e=>{process.stdout.write(e.toString())}};if(t.doctorTest){let n=t.doctorTest.matchAll(/"(.+?)"|'(.+?)'|[^ ]+/g),r=[];for(let e of n)r=[...r,e[2]||e[1]||e[0]];let[i,...a]=r;console.log(I.blue(t.doctorTest)),await(0,f.default)(i,a,e)}else await io([`run`,`test`],{packageManager:t.packageManager},!0,{spawnPleaseOptions:e})};console.log(`Running tests before upgrading`),await o();let c=``;try{c=await g.default.readFile(n,`utf-8`)}catch{if(t.packageManager===`bun`){n=`bun.lockb`;try{c=await g.default.readFile(n,`utf-8`)}catch{}}}try{await s()}catch{console.error(`Tests failed before we even got started!`),process.exit(1)}t.interactive||console.log(`Upgrading all dependencies and re-running tests`),console.log(I.blue(`ncu `+process.argv.slice(2).filter(e=>e!==`--doctor`).join(` `))),process.env.NCU_DOCTOR=`1`;let l=await e({...t,silent:!0,doctor:!1});if(Object.keys(l||{}).length===0){console.log(`All dependencies are up-to-date `+I.green.bold(`:)`));return}let u=!1;try{await o(),u=!0,await s(),console.log(`${I.green(`✓`)} Tests pass`),await Sn(t,{current:a,upgraded:l,total:Object.keys(l||{}).length}),console.log(`\n${t.interactive?`Chosen`:`All`} dependencies upgraded and installed ${I.green(`:)`)}`)}catch{console.error(I.red(u?`Tests failed`:`Install failed`)),console.log(`Identifying broken dependencies`),await g.default.writeFile(`package.json`,i),c?await g.default.writeFile(n,c):await g.default.rm(n,{recursive:!0,force:!0});let e=i;if(u)try{await o()}catch{let e=(t.packageManager||`npm`)+` install`;throw Error(`Error: Doctor mode was about to test individual upgrades, but ${I.cyan(e)} failed after rolling back to your existing package and lock files. This is unexpected since the initial install before any upgrades succeeded. Either npm failed to revert a partial install, or failed anomalously on the second run. Please check your internet connection and retry. If doctor mode fails consistently, report a bug with your complete list of dependency versions at https://github.com/raineorshine/npm-check-updates/issues.`)}let d,f;for([d,f]of Object.entries(l))try{if(await io([...t.packageManager===`yarn`||t.packageManager===`pnpm`||t.packageManager===`bun`?[`add`]:[`install`,`--no-save`],`${d}@${f}`],{packageManager:t.packageManager},!0),r.scripts?.prepare)try{await io([`run`,`prepare`],{packageManager:t.packageManager},!0)}catch(e){throw console.error(I.red(`Prepare script failed`)),e}await s(),console.log(` ${I.green(`✓`)} ${d} ${a[d]} → ${f}`),e=await ro(e,{[d]:a[d]},{[d]:f},t),c=await g.default.readFile(n,`utf-8`)}catch(r){console.error(` ${I.red(`✗`)} ${d} ${a[d]} → ${f}\n`),console.error(I.red(r)),await g.default.writeFile(n,c),(t.packageManager===`yarn`||t.packageManager===`pnpm`||t.packageManager===`bun`)&&await g.default.writeFile(`package.json`,e)}e!==i&&(console.log(`Saving partially upgraded package.json`),await g.default.writeFile(`package.json`,e)),await o()}};var so=oo;async function co(e){let t,n=null,r=e.packageFile||`package.json`;function i(t,n){if(t!=null){let n=u.default.resolve(t);H(e,`${e.upgrade?`Upgrading`:`Checking`} ${n}`)}else Z(e,`${I.red(`No ${n}`)}\n\nPlease add a ${n} to the current directory, specify the ${I.cyan(`--packageFile`)} or ${I.cyan(`--packageData`)} options, or pipe a ${n} to stdin and specify ${I.cyan(`--stdin`)}.`,{color:!1});return g.default.readFile(t,`utf-8`).catch(t=>{Z(e,t)})}if(H(e,`Running in local mode`,`verbose`),H(e,`Finding package file data`,`verbose`),e.packageData)n=null,t=Promise.resolve(e.packageData);else if(e.packageFile)n=e.packageFile,t=i(n,r);else if(e.stdin){H(e,`Waiting for package data on stdin`,`verbose`);let a=await(0,ee.text)(process.stdin),o=a.trim().length>0?a:null;n=o||!r?null:await(0,O.findUp)(r),t=o||i(await n,r)}else n=r?await(0,O.findUp)(!e.packageFile&&e.packageManager===`deno`?[`deno.json`,`deno.jsonc`]:r,{cwd:e.cwd||process.cwd()}):null,t=i(n,r);return{pkgData:await t,pkgFile:n||null,pkgPath:r}}var lo=co;function uo(e){return{ignore:[`**/node_modules/**`,...typeof e.ignore==`string`?[e.ignore]:e.ignore||[]]}}const fo=async e=>{let t=u.default.join(u.default.dirname(e),`pnpm-workspace.yaml`),n;try{n=await g.default.readFile(t,`utf-8`)}catch{return null}return M.default.load(n)},po=async(e,t)=>{let n={};if(e.packageManager===`pnpm`){let e=await fo(t);e&&!Array.isArray(e)&&(e.catalog&&Object.assign(n,e.catalog),e.catalogs&&Object.assign(n,...Object.values(e.catalogs)))}let r=JSON.parse(await g.default.readFile(t,`utf-8`));return Object.assign(n,r.catalog,...Object.values(r.catalogs??{})),r.workspaces&&!Array.isArray(r.workspaces)&&Object.assign(n,r.workspaces.catalog,...Object.values(r.workspaces.catalogs??{})),Object.keys(n).length>0?n:null};async function mo(e,t,n,r){let{pkgData:i,pkgPath:a}=await lo({...e,packageFile:n,loglevel:`silent`}),o=(typeof i==`string`?JSON.parse(i):i).workspaces||await fo(a||``),s=Array.isArray(o)?o:o?.packages;s||Z(e,`workspaces property missing from package.json. --workspace${e.workspaces?`s`:``} only works when you specify a "workspaces" property in your package.json.`);let c=(s||[]).map(e=>u.default.join(r,e,`package.json`).replace(/\\/g,`/`)),l=uo(e),d=te.default.sync(c,l),f=await Promise.all(d.map(async t=>{let n=await Ka(e,t);return n.name=n.pkg.name||t.split(`/`).slice(-2)[0],n})),p=f.map(e=>e.name||``);return e.workspaces===!0?[f,p]:[f.filter(n=>e.workspace?.some(e=>s?.some(i=>n.name===e||n.filepath===u.default.join(r,u.default.dirname(i),e,t).replace(/\\/g,`/`)))),p]}async function ho(e,t){if(!t)return null;let n=await po(e,t);if(!n)return null;let r={name:`catalog-dependencies`,version:`1.0.0`,dependencies:n};return{filepath:e.packageManager===`pnpm`?u.default.join(u.default.dirname(t),`pnpm-workspace.yaml`):`${t}#catalog`,pkg:r,pkgFile:JSON.stringify(r,null,2),name:`catalogs`}}async function go(e){let t=e.packageFile||`package.json`,n=e.cwd?(0,D.default)(e.cwd):`./`,r=e.packageFile||(e.cwd?u.default.join(n,`package.json`):`package.json`),i=e.workspaces===!0||e.workspace!==void 0&&e.workspace.length!==0,a=[];if(!i||e.root===!0){let t=r.replace(/\\/g,`/`),n=uo(e),i=te.default.sync(t,n),o=await Promise.all(i.map(async t=>await Ka(e,t)));a=[...a,...o]}if(!i)return[a,[]];let o=null;if(i){let{pkgPath:t}=await lo({...e,packageFile:r,loglevel:`silent`});t&&(o=await ho(e,t))}let[s,c]=await mo(e,t,r,n);if(a=[...a,...s],o&&(a=[...a,o]),e.ignore){let t=Array.isArray(e.ignore)?e.ignore:[e.ignore];a=a.filter(e=>{let r=u.default.relative(n,e.filepath).replace(/\\/g,`/`),i=u.default.dirname(r).replace(/\\/g,`/`);return!t.some(e=>{let t=(0,ne.default)(e);return t(r)||t(i)||t(`${i}/`)})})}return[a,c]}var _o=go;async function vo({configFileName:e,configFilePath:t,packageFile:n,global:r,options:i}){let{default:a,Chalk:o}=await import(`chalk`),s=i?.color?new o({level:1}):a,c=(0,re.rcFile)(`ncurc`,{configFileName:e||`.ncurc`,defaultExtension:[`.json`,`.yml`,`.js`],cwd:t||(r?m.default.homedir():n?u.default.dirname(n):void 0)}),l=c?.filePath;e&&!l&&Z(i,`Config file ${e} not found in ${t||process.cwd()}`);let{$schema:d,...f}=c?.config||{},p=f;typeof p.format==`string`&&(p.format=q.format.parse(p.format));let h=Object.keys(p).filter(e=>!q[e]);return h.length>0&&(console.error(s.red(`Unknown option${h.length===1?``:`s`} found in config file:`),s.gray(h.join(`, `))),console.info(`Using config file `+l),console.info(`You can change the config file path with ${s.blue(`--configFilePath`)}`)),{filePath:l,args:Object.entries(p).flatMap(([e,t])=>typeof t==`boolean`||q[e]?.type===`boolean`?t?[`--${e}`]:[]:[`--${e}`,t]),config:p}}var yo=vo,bo=s({greatest:()=>To,greatestLevel:()=>Eo,latest:()=>wo,minor:()=>Do,newest:()=>Ao,patch:()=>Oo,semver:()=>ko});const xo=(0,oe.promisify)(ae.default.execFile);async function So(e){let t=(await xo(`git`,[`ls-remote`,`--tags`,e])).stdout,n={};for(let e of t.trim().split(`
346
+ `)){let t=e.split(` `);n[t[1].replace(/^refs\/tags\/|\^{}$/g,``)]=t[0]}return n}async function Co(e,t,n){t=t.replace(/^github:/,``);let{auth:r,protocol:i,host:a,path:o}=(0,y.default)(t),s;try{if(i!==null)s=await So(`${i?i.replace(`git+`,``):`https:`}//${r?r+`@`:``}${a}/${o?.replace(/^:/,``)}`);else try{s=await So(`ssh://git@${a}/${o?.replace(/^:/,``)}`)}catch{s=await So(`https://${r?r+`@`:``}${a}/${o}`)}}catch{H(n??{},`Invalid, private repo, or no tags for ${e}: ${t}`,`verbose`);return}return Object.keys(s).map(tn).filter(e=>(0,b.valid)(e)).sort(qt)}const wo=async(e,t,n)=>{let r=await Co(e,t,n);if(!r)return{version:null};let i=n?.pre?r:r.filter(e=>!Yt(e)),a=i[i.length-1];return{version:a?fn(t,a):null}},To=async(e,t,n)=>{let r=await Co(e,t,n);if(!r)return{version:null};let i=r[r.length-1];return{version:i?fn(t,i):null}},Eo=e=>async(t,n,r={})=>{let i=decodeURIComponent((0,y.default)(n).branch).replace(/^semver:/,``),a=await Co(t,n,r);if(!a)return{version:null};let o=Jt(a.map(e=>e.replace(/^v/,``)),i,e);return{version:o?fn(n,o):null}},Do=Eo(`minor`),Oo=Eo(`patch`),ko=async(e,t,n)=>({version:null}),Ao=To;var jo=s({latest:()=>Fo});const Mo=e=>e&&e.startsWith(`http://`)||e.startsWith(`https://`),No=async e=>{let t=e.registry,n;if(Mo(t))n=await(await fetch(t)).text();else try{n=await g.default.readFile(t,`utf8`)}catch{Z(e,`\nThe specified static registry file does not exist: ${e.registry}`)}return JSON.parse(n)},Po=(0,w.default)(No),Fo=async(e,t,n)=>({version:(await Po(n||{}))[e]||null});var Q={npm:kr,pnpm:ci,yarn:ba,bun:ri,gitTags:bo,staticRegistry:jo};function Io(e){if(typeof e==`string`)return e.trim();if(Array.isArray(e)&&(e.length===0||typeof e[0]==`string`)){let t=e.map(e=>typeof e==`string`?e.trim():e).filter(e=>e);return t.length>0?t:void 0}else return e}function Lo(e){try{return new URL(e),!0}catch{return!1}}async function Ro(e,{cli:t}={}){let{default:n,Chalk:r}=await import(`chalk`),i=e.color?new r({level:1}):n;if(!t){let t=rr.reduce((e,t)=>({...e,...t.default==null?null:{[t.long]:t.default}}),{}),n={jsonUpgraded:!0,silent:e.silent||e.loglevel===void 0&&!e.verbose,args:[]};e={...t,...n,...e}}let a={...e,...e.packageData&&typeof e.packageData!=`string`?{packageData:JSON.stringify(e.packageData,null,2)}:null,cli:t},o=a.silent||a.format?.includes(`lines`)?`silent`:a.verbose?`verbose`:a.loglevel,s=Object.keys(a).filter(e=>e.startsWith(`json`)).some((0,Ot.default)(a));!s&&o!==`silent`&&a.rcConfigPath&&!a.doctor&&H(a,`Using config file ${a.rcConfigPath}`);let c=rr.filter(({long:e,deprecated:t})=>t&&a[e]||e===`packageManager`&&a.packageManager===`staticRegistry`);c.length>0&&(c.forEach(({long:e,description:t})=>{let n=e===`packageManager`?`--packageManager staticRegistry is deprecated. Use --registryType json.`:`--${e}: ${t}`;H(a,i.yellow(n),`warn`)}),H(a,``,`warn`)),rr.forEach(({long:e,choices:t})=>{if(!t||t.length===0)return;let n=a[e],r=Array.isArray(n)?n:[n];r.length!==0&&r.every(e=>!t.includes(e))&&Z(a,`Invalid option value: --${e} ${n}. Valid values are: ${t.join(`, `)}.`)}),a.cwd&&!await Ce(a.cwd)&&Z(a,`No such directory: ${a.cwd}`);let l=Io(a.args),u=Io(a.filter),d=Io(a.filterVersion),f=Io(a.reject),p=Io(a.rejectVersion),m=a.registryType||(a.registry?.endsWith(`.json`)?`json`:`npm`);if(a.filter&&l&&!(0,ie.dequal)(l.join(` `),Array.isArray(u)?u.join(` `):u)?Z(a,`Cannot specify a filter using both --filter and args. Did you forget to quote an argument?
347
+ See: https://github.com/raineorshine/npm-check-updates/issues/759#issuecomment-723587297`):a.packageFile&&a.deep?Z(a,`Cannot specify both --packageFile and --deep. --deep is an alias for --packageFile '**/package.json'`):a.format?.includes(`lines`)&&a.jsonUpgraded?Z(a,`Cannot specify both --format lines and --jsonUpgraded.`):a.format?.includes(`lines`)&&a.jsonAll?Z(a,`Cannot specify both --format lines and --jsonAll.`):a.format?.includes(`lines`)&&a.format.length>1?Z(a,`Cannot use --format lines with other formatting options.`):a.workspace?.length&&a.workspaces?Z(a,`Cannot specify both --workspace and --workspaces.`):a.deep&&(a.workspace?.length||a.workspaces)?Z(a,`Cannot specify both --deep and --workspace${a.workspaces?`s`:``}.`):a.doctor&&(a.workspace?.length||a.workspaces)?Z(a,`Doctor mode is not currently supported with --workspace${a.workspaces?`s`:``}.`):a.packageManager===`staticRegistry`&&!a.registry?Z(a,`When --package-manager staticRegistry is specified, you must provide the path for the registry file with --registry.`):a.registryType===`json`&&!a.registry?Z(a,`When --registryType json is specified, you must provide the path for the registry file with --registry. Run "ncu --help registryType" for details.`):m!==`json`&&a.registry&&!Lo(a.registry)&&Z(a,`--registry must be a valid URL. Invalid value: "${a.registry}"`),a.cooldown!=null){let e=typeof a.cooldown==`number`&&!isNaN(a.cooldown)&&a.cooldown>=0,t=typeof a.cooldown==`function`;!e&&!t&&Z(a,`Cooldown must be a non-negative integer representing days since published or a function`)}let h=a.target||`latest`,g=h===`newest`||h===`greatest`,_=await lr(a),v={...a,...a.deep?{packageFile:`**/package.json`}:null,..._===`deno`?{dep:[`imports`]}:null,...a.format&&a.format.length>0?{format:a.format}:null,filter:l||u,filterVersion:d,json:s,loglevel:o,minimal:a.minimal===void 0?!1:a.minimal,...a.pre!=null||g?{pre:a.pre==null?g:!!a.pre}:null,reject:f,rejectVersion:p,target:h,...a.interactive&&a.upgrade===void 0?{upgrade:!s}:null,packageManager:_,...a.prefix?{prefix:await(Q[_||``]?.defaultPrefix||Q.npm.defaultPrefix)(a)}:null,registryType:m};v.cacher=await Mn(v);let y=F(v,(e,t)=>t===void 0?null:{[e]:t});return!a.packageManager&&_!==`npm`&&H(y,`Using ${_}`),y}var zo=Ro;function Bo(e,t){return Array.from(new Set([...e||[],...t||[]]))}function Vo(e,t){let n=e||{},r=t||{},i={...n,...r};return Object.keys(i).forEach(e=>{Array.isArray(n[e])&&Array.isArray(r[e])&&(i[e]=Bo(n[e],r[e]))}),i}var Ho=Vo,Uo=l(bi(),1);function Wo(e){let t;if(!e)t=Uo.default;else if(typeof e==`string`)if(e[0]===`/`&&e.at(-1)===`/`){let n=new RegExp(e.slice(1,-1));t=e=>n.test(e)}else{let n=e.split(/[\s,]+/);t=e=>n.some((0,se.or)(t=>(0,ne.default)(t)(e),t=>!t.includes(`/`)&&e.includes(`/`)&&(0,ne.default)(t)(e.replace(/\//g,`_`))))}else if(Array.isArray(e))t=(t,n)=>e.some(e=>Wo(e)(t,n));else if(e instanceof RegExp)t=t=>e.test(t);else if(typeof e==`function`)t=(t,n)=>e(t,(0,x.parseRange)(n??t));else throw TypeError(`Invalid filter. Must be a RegExp, array, or comma-or-space-delimited list.`);return t}function Go(e,t,n,r){return(0,se.and)((n,r)=>(0,se.and)(e?Wo(e):!0,t?(...e)=>!Wo(t)(...e):!0)(n,r),(e,t)=>(0,se.and)(n?Wo(n):!0,r?(...e)=>!Wo(r)(...e):!0)(t))}var Ko=Go;function qo(e,t){return!t||t===`deno`?Q.npm:e.registryType===`json`?Q.staticRegistry:(Q[t]||Z(e,`Invalid package manager: ${t}`),Q[t])}var Jo=qo;async function Yo(e={}){let t=await Jo(e,e.packageManager).list?.({cwd:e.cwd,prefix:e.prefix,global:e.global});t||Z(e,`Unable to retrieve package list`);let n=Ko(e.filter,e.reject,e.filterVersion,e.rejectVersion),r={};try{r=L(t,(e,t)=>!!t&&!Vt(t)&&n(e,t))}catch(t){Z(e,`Invalid filter: `+t.message||t)}return r}var Xo=Yo;function Zo(e,t){let n=[[t]];for(;n.length>0;){let t=[];for(let r of n){let n=Object.keys(e[r[0]]??{});for(let e of n){if(e===r.at(-1))return{isCircular:!0,offendingPackage:r[0]};t.push([e,...r])}}n=t}return{isCircular:!1}}async function Qo(e,t){let n=Jo(t,t.packageManager);if(!n.getPeerDependencies)return{};let r=Object.keys(e).length,i;!t.json&&t.loglevel!==`silent`&&t.loglevel!==`verbose`&&r>0&&(i=new le.default(`[:bar] :current/:total :percent`,{total:r,width:20}),i.render());let a=Object.entries(e),o=await(0,ce.default)(a,async([e,r])=>{let a,o=t.cacher?.getPeers(e,r);return o?a=o:(a=await n.getPeerDependencies(e,r,{cwd:t.cwd}),t.cacher?.setPeers(e,r,a)),i&&i.tick(),{pkg:e,dependencies:a}},{concurrency:t.concurrency}),s={};for(let{pkg:e,dependencies:t}of o){s[e]=t;let n=Zo(s,e);n.isCircular&&delete s[e][n.offendingPackage]}return await t.cacher?.save(),t.cacher?.log(!0),s}var $o=Qo;function es(e,t){let n={};for(let r of t)n[r]=e[r];return n}function $(e,t){let n={};for(let[r,i]of Object.entries(e??{})){let e=r;t(i,e)&&(n[e]=i)}return n}const ts=[`latest`,`newest`,`greatest`,`minor`,`patch`,`semver`];async function ns(e,t={}){let{default:n,Chalk:r}=await import(`chalk`),i=t.color?new r({level:1}):n,a=Object.keys(e),o=Jo(t,t.packageManager),s;!t.json&&t.loglevel!==`silent`&&t.loglevel!==`verbose`&&a.length>0&&(s=new le.default(`[:bar] :current/:total :percent`,{total:a.length,width:20}),s.render());async function c(n){let r=an(e[n]),[a,c]=r||[n,e[n]],l=t.target||`latest`,u=typeof l==`string`?l:l(a,(0,x.parseRange)(c)),[d,f]=u.startsWith(`@`)?[`distTag`,u.slice(1)]:[u,`latest`],p=t.cacher?.get(a,d);if(p)return s?.tick(),{version:p};let m,h=cn(e[n]),g=h?Q.gitTags:o,_=h?`github urls`:t.packageManager||`npm`,v=g[d];if(!v){let e=ts.filter(e=>e in g);Z(t,i.red(`\nUnsupported target "${d}" using ${_}`)+`
348
+ Supported version targets are: `+e.join(`, `)+(h?``:`, and tags (e.g. @next)`),{color:!1})}try{m=await v(a,c,{...t,distTag:f,pre:t.pre==null?u.startsWith(`@`)||Yt(c):t.pre,retry:t.retry??2}).catch(e=>({error:e?.body?.error||e.toString()})),m.version=!h&&r&&m?.version?rn(a,m.version):m?.version??null}catch(e){let n=e?(e.message||e).toString():``;if(n.match(/E504|Gateway Timeout/i))return{error:`${n}. All ${t.retry} retry attempts failed.`};if(n.match(/E400|E404|ENOTFOUND|404 Not Found|400 Bad Request/i))return{error:`${n.replace(/ - Not found$/i,``)}. All ${t.retry} retry attempts failed. Either your internet connection is down, the registry is inaccessible, the authentication credentials are invalid, or the package does not exist.`};if(e.code===`ERR_INVALID_URL`)return{error:n||`Invalid URL`};throw!process.env.NCU_TESTS&&/(Response|network) timeout/i.test(n)&&console.error(`
349
+
350
+ `+i.red(`FetchError: Request Timeout. npm-registry-fetch defaults to 30000 (30 seconds). Try setting the --timeout option (in milliseconds) to override this.`)+`
351
+ `),e}return s?.tick(),m.version&&t.cacher?.set(a,d,m.version),m}let l=await(0,ce.default)(a,c,{concurrency:t.concurrency});return await t.cacher?.save(),t.cacher?.log(),F(l,(e,t)=>e.version||e.error?{[a[t]]:e}:null)}var rs=ns,is=o(((e,t)=>{function n(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}t.exports=n})),as=o(((e,t)=>{var n=Fe(),r=Ie(),i=`[object Arguments]`;function a(e){return r(e)&&n(e)==i}t.exports=a})),os=o(((e,t)=>{var n=as(),r=Ie(),i=Object.prototype,a=i.hasOwnProperty,o=i.propertyIsEnumerable;t.exports=n(function(){return arguments}())?n:function(e){return r(e)&&a.call(e,`callee`)&&!o.call(e,`callee`)}})),ss=o(((e,t)=>{var n=Me(),r=os(),i=R(),a=n?n.isConcatSpreadable:void 0;function o(e){return i(e)||r(e)||!!(a&&e&&e[a])}t.exports=o})),cs=o(((e,t)=>{var n=is(),r=ss();function i(e,t,a,o,s){var c=-1,l=e.length;for(a||=r,s||=[];++c<l;){var u=e[c];t>0&&a(u)?t>1?i(u,t-1,a,o,s):n(s,u):o||(s[s.length]=u)}return s}t.exports=i})),ls=o(((e,t)=>{var n=cs();function r(e){return e!=null&&e.length?n(e,1):[]}t.exports=r})),us=o(((e,t)=>{var n=Di(),r=Math.max;function i(e,t,i){return t=r(t===void 0?e.length-1:t,0),function(){for(var a=arguments,o=-1,s=r(a.length-t,0),c=Array(s);++o<s;)c[o]=a[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=a[o];return l[t]=i(c),n(e,this,l)}}t.exports=i})),ds=o(((e,t)=>{var n=ls(),r=us(),i=Yi();function a(e){return i(r(e,void 0,n),e+``)}t.exports=a})),fs=o(((e,t)=>{var n=Li(),r=ds(),i=Pi(),a=Ii(),o=R(),s=Vi(),c=`Expected a function`,l=8,u=32,d=128,f=256;function p(e){return r(function(t){var r=t.length,p=r,m=n.prototype.thru;for(e&&t.reverse();p--;){var h=t[p];if(typeof h!=`function`)throw TypeError(c);if(m&&!g&&a(h)==`wrapper`)var g=new n([],!0)}for(p=g?p:r;++p<r;){h=t[p];var _=a(h),v=_==`wrapper`?i(h):void 0;g=v&&s(v[0])&&v[1]==(d|l|u|f)&&!v[4].length&&v[9]==1?g[a(v[0])].apply(g,v[3]):h.length==1&&s(h)?g[_]():g.thru(h)}return function(){var e=arguments,n=e[0];if(g&&e.length==1&&o(n))return g.plant(n).value();for(var i=0,a=r?t[i].apply(this,e):n;++i<r;)a=t[i].call(this,a);return a}})}t.exports=p})),ps=o(((e,t)=>{t.exports=fs()()}));function ms(e){if(Object.keys(e).length===0)return null;let t=Object.values(e).reduce((e,t)=>{let n=Nt.find(e=>t&&t.includes(e));return n!==void 0&&(e[n]||=[],e[n].push(t)),e},{}),n=Dt(Object.entries(t).map(([e,t])=>({wildcard:e,instances:t})),e=>-e.instances.length);return n.length>0?n[0].wildcard:null}var hs=ms;function gs(e,t,{downgrade:n}={}){if(!b.validRange(e)||Bt(e))return!1;let[r]=x.default.parseRange(e);if(!r)throw Error(`"${e}" could not be parsed by semver-utils. This is probably a bug. Please file an issue at https://github.com/raineorshine/npm-check-updates.`);let i=tn(t),a=V(r),o=!!b.validRange(a),s=!!b.valid(i);return o&&s&&(!Kt(i,a)||!b.satisfies(i,r.operator===`<`?e:a)&&(n||!b.ltr(i,a)))}var _s=gs,vs=l(ps(),1);function ys(e,t,n={}){let r=n.target||`latest`;e=L(e,(e,t)=>!!t);let i=hs(e)||`^`,a=(e,t)=>un(e,t,{wildcard:i,removeRange:n.removeRange});return(0,vs.default)([e=>$(e,(e,n)=>n in t),e=>Object.entries(e).reduce((e,[n,r])=>{let i=t[n],a=null,o=null;if(on(r)&&(a=an(r)[1]),on(i)&&(o=an(i)[1]),cn(r)){let[e]=(0,x.parseRange)(ln(r));a=V(e)}if(cn(i)){let[e]=(0,x.parseRange)(ln(i));o=V(e)}return e[n]={current:r,currentParsed:a,latest:i,latestParsed:o},e},{}),e=>$(e,({current:e,currentParsed:t,latest:n,latestParsed:i},a)=>{let o=Yt(e)&&(typeof r==`string`?r:r(a,(0,x.parseRange)(e))).startsWith(`@`);return _s(t||e,i||n,{downgrade:o})}),e=>Object.entries(e).reduce((e,[t,{current:n,currentParsed:r,latest:i,latestParsed:o}])=>{let s=a(r||n,o||i);return e[t]=on(n)?sn(n,s):cn(n)?fn(n,s):s,e},{})])(e)}var bs=ys;const xs=(e,t,n)=>{let r={...e,...t},i=$(t,(e,t)=>{let i=n[t];return i?Object.entries(i).every(([e,t])=>r[e]===void 0||!(0,b.validRange)(t)||(0,b.intersects)(r[e],t)):!0}),a=Object.keys(t).length>Object.keys(i).length,o=n;return a&&(o=$(n,(e,n)=>i[n]||!t[n])),{violated:a,filteredUpgradedDependencies:i,upgradedPeerDependencies:o}};async function Ss(e,t){let n=await rs(e,t),r=F(n,(n,r)=>r?.version&&(!t.filterResults||t.filterResults(n,{currentVersion:e[n],currentVersionSemver:(0,x.parseRange)(e[n]),upgradedVersion:r.version,upgradedVersionSemver:(0,x.parse)(r.version)}))?{[n]:r.version}:null),i=$(bs(e,r,t),(n,i)=>!t.jsonUpgraded||!t.minimal||!(0,b.satisfies)(r[i],e[i])),a=$(r,(e,t)=>i[t]),o=[i,n,t.peerDependencies];if(!t.peer||Object.keys(a).length===0)return o;if(t.peer&&Object.keys(a).length>0){let r=await $o(a,t),s;if((0,ie.dequal)(t.peerDependencies,{...t.peerDependencies,...r})){if(s=xs(e,i,t.peerDependencies),!s.violated)return o}else s={violated:!1,filteredUpgradedDependencies:i,upgradedPeerDependencies:r};let c=0;do{if(c++>6)throw Error(`Stuck in a while loop. Please report an issue`);let r={...t.peerDependencies,...s.upgradedPeerDependencies};if((0,ie.dequal)(t.peerDependencies,r))return[{},n,t.peerDependencies];let[i,a,l]=await Ss({...e,...s.filteredUpgradedDependencies},{...t,peerDependencies:r,loglevel:`silent`});o=[{...s.filteredUpgradedDependencies,...i},{...n,...a},l],s=xs(e,o[0],o[2])}while(s.violated)}return o}var Cs=Ss;async function ws(e){H(e,`
352
+ Options:`,`verbose`),U(e,e,`verbose`),H(e,`
353
+ Getting installed packages`,`verbose`);let t={};try{let{cli:n,cwd:r,filter:i,filterVersion:a,global:o,packageManager:s,prefix:c,reject:l,rejectVersion:u}=e;t=await Xo({cli:n,cwd:r,filter:i,filterVersion:a,global:o,packageManager:s,prefix:c,reject:l,rejectVersion:u})}catch(t){Z(e,t.message)}H(e,`globalPackages:`,`verbose`),H(e,t,`verbose`),H(e,``,`verbose`),H(e,`Fetching ${e.target} versions`,`verbose`);let[n,r]=await Cs(t,e);H(e,r,`verbose`);let i=P(r,(e,t)=>t.time?{[e]:t.time}:null),a=Object.keys(n);await Sn(e,{current:t,upgraded:n,latest:r,total:a.length,time:i});let o=n?a.map(e=>e+`@`+n[e]).join(` `):`[package]`;if(e.json)hn(e,n);else if(o.length){let t=e.packageManager===`yarn`?`yarn global upgrade`:e.packageManager===`pnpm`?`pnpm -g add`:e.packageManager===`bun`?`bun add -g`:`npm -g install`;H(e,`
354
+ `+I.cyan(`ncu`)+` itself cannot upgrade global packages. Run the following to upgrade all global packages:
355
+
356
+ `+I.cyan(`${t} `+o)+`
357
+ `)}return e.cli&&e.errorLevel===2&&a.length>0&&process.exit(1),n}var Ts=ws;const Es=(e,t)=>b.validRange(e)&&b.validRange(t)&&b.gt(b.minVersion(e),b.minVersion(t)),Ds=e=>{if(!e.packageManager)return{};let[t,n]=e.packageManager.split(`@`);return{[t]:n}};function Os(e={},t={}){let n=Ya(t.dep).reduce((t,n)=>({...t,...n===`packageManager`?Ds(e):L(e[n]||{},(e,n)=>!Es(n,t[e]))}),{}),r=P(t.workspacePackages||[]),i={};try{i=L(L(n,e=>!r[e]),Ko(t.filter||null,t.reject||null,t.filterVersion||null,t.rejectVersion||null))}catch(e){Z(t,`Invalid filter: `+e.message||e)}return i}var ks=Os;async function As(e,t){let n=Jo(t,t.packageManager);if(!n.getEngines)return{};let r=Object.keys(e).length,i;return!t.json&&t.loglevel!==`silent`&&t.loglevel!==`verbose`&&r>0&&(i=new le.default(`[:bar] :current/:total :percent`,{total:r,width:20}),i.render()),Object.entries(e).reduce(async(e,[r,a])=>{let o=(await n.getEngines(r,a,t)).node;return i&&i.tick(),{...await e,[r]:o}},Promise.resolve({}))}var js=As;const Ms=(e,t)=>!e||(0,b.satisfies)(t,e);async function Ns(e,t,n={}){if(!n.nodeEngineVersion)return{};let r=(0,b.minVersion)(n.nodeEngineVersion)?.version;if(!r)return{};let[i,a]=await Cs(e,{...n,enginesNode:!1,nodeEngineVersion:void 0,loglevel:`silent`}),o=await js(F(a,(e,t)=>i[e]&&t?.version?{[e]:t.version}:null),n);return Object.entries(i).filter(([e,n])=>t[e]!==n&&!Ms(o[e],r)).reduce((t,[n,r])=>({...t,[n]:{from:e[n],to:r,enginesNode:o[n]}}),{})}async function Ps(e,t,n,r={}){let i={...e,...t},[a,o]=await Cs(e,{...r,peer:!1,peerDependencies:void 0,loglevel:`silent`}),s=await $o(Object.fromEntries(Object.entries(a).map(([e,t])=>[e,(0,b.validRange)(t)?(0,b.minVersion)(t)?.version??t:t])),r);return Object.entries(a).filter(([e,n])=>t[e]!==n).reduce((t,[r,a])=>{let c=Object.entries(n).filter(([,e])=>e[r]!==void 0&&o[r]?.version&&!(0,b.satisfies)(o[r].version,e[r])).reduce((e,[t,n])=>({...e,[t]:(0,b.validRange)(n[r])?n[r]:`a range that semver does not understand: ${n[r]}. This range does not work with semver.satisfies or semver.intersects, which npm-check-updates relies on to determine peer dependency compatibility. Either this is a mistake in ${t}, or it relies on a new syntax that is not compatible with the semver package.`}),{});if(Object.keys(c).length===0){let e=s?.[r]||{};c=Object.entries(e).filter(([e,t])=>i[e]&&!(!(0,b.validRange)(t)||(0,b.intersects)(i[e],t))).reduce((e,[t,n])=>({...e,[r]:`${t} ${n}`}),{})}return{...t,[r]:{from:e[r],to:a,reason:c}}},{})}var Fs=Ps;const Is=process.stdout.columns||80;function Ls(e){return`${e.length?e.slice(0,Math.min(e.length,Is)):`<empty>`}\n`}function Rs(e){return e>Is?``:`${` `.repeat(e-1)}^\n`}function zs(e,t,n){let r=e.length;if(r===0)return`<empty>`;if(r===1)return`${Ls(e[0])}${Rs(n)}`;let i=Math.min(t+2,r),a=``;for(let r=Math.max(t-2,1);r<=i;r++)a+=Ls(e[r-1]),r===t&&(a+=Rs(n));return`${a}\n`}function Bs(e){e=(0,ue.stripComments)(e);try{return JSON.parse(e)}catch{let t=[],n=(0,ue.parse)(e,t);if(t.length===0)return n;let r=``,i=e.split(`
358
+ `);for(let e of t){let t=e.offset,n=1,a=1,o=0;for(let e of i){if(o+e.length>=t){a=t-o+1;break}o+=e.length+1,n++}r+=`Error at line ${n}, column ${a}: ${ue.ParseErrorCode[e.error]}\n${zs(i,n,a)}\n`}throw SyntaxError(r)}}const Vs=`
359
+ ↑/↓: Select a package
360
+ Space: Toggle selection
361
+ a: Toggle all
362
+ Enter: Upgrade`;function Hs(e,t){let n=e?Vs.split(`
363
+ `).length:0;return process.stdout.rows?Math.max(3,process.stdout.rows-n-1-(t?.length??0)*2):50}async function Us(e,t,n){let r=Jo(n,n.packageManager);return await Object.keys(t).reduce(async(i,a)=>{let o=e[a]||null,s=t[a]||null,c=await r.packageAuthorChanged(a,o,s,n);return{...await i,[a]:c}},{})}const Ws=async(e,t,n,r)=>{let i=[],a=process.stdout.rows>18,o=F((await yn({from:e,to:t,format:r.format,pkgFile:n||void 0})).toString().split(`
364
+ `),e=>({[e.trim().split(` `)[0]]:e.trim()}));if(Object.keys(t).length>0)if(H(r,``),r.format?.includes(`group`)){let n=Ut(t,e,r);i=(await(0,d.default)({choices:[...n.flatMap(({heading:e,groupName:t,packages:n})=>[{title:`
365
+ `+e,heading:!0},...Object.keys(n).sort().map(e=>({title:o[e],value:e,selected:[`patch`,`minor`].includes(t)}))]),{title:` `,heading:!0}],hint:a&&Vs,instructions:!1,message:`Choose which packages to update`,name:`value`,optionsPerPage:Hs(a,n),type:`multiselect`,onState:e=>{e.aborted&&process.nextTick(()=>process.exit(1))}})).value}else i=(await(0,d.default)({choices:[...Object.keys(t).sort().map(e=>({title:o[e],value:e,selected:!0})),{title:` `,heading:!0}],hint:a&&Vs+`
366
+ `,instructions:!1,message:`Choose which packages to update`,name:`value`,optionsPerPage:Hs(a),type:`multiselect`,onState:e=>{e.aborted&&process.nextTick(()=>process.exit(1))}})).value;return F(i,e=>({[e]:t[e]}))};async function Gs(e,t,n){H(e,`
367
+ Options:`,`verbose`),U(e,e,`verbose`);let r;try{t?r=Bs(t):Z(e,`Missing package data`)}catch(t){Z(e,`Invalid package file${n?`: ${n}`:` from stdin`}. Error details:\n${t.message}`)}let i=ks(r,e);H(e,`
368
+ Current versions:`,`verbose`),H(e,i,`verbose`),e.enginesNode&&(e.nodeEngineVersion=r?.engines?.node),e.peer&&(e.peerDependencies=await $o(Object.fromEntries(Object.entries(i).map(([e,t])=>[e,b.default.validRange(t)?b.default.minVersion(t)?.version??t:t])),e));let[a,o,s]=await Cs(i,e),c=F(o,(e,t)=>t.version?{[e]:t.version}:null),l=F(o,(e,t)=>t.error?{[e]:t.error}:null),u=F(o,(e,t)=>t.time?{[e]:t.time}:null);e.peer&&(H(e,`
369
+ upgradedPeerDependencies:`,`verbose`),H(e,s,`verbose`)),H(e,`\n${typeof e.target==`string`?`${e.target[0].toUpperCase()}${e.target.slice(1)}`:`Fetched`} versions:`,`verbose`),H(e,c,`verbose`),H(e,`
370
+ Upgraded versions:`,`verbose`),H(e,a,`verbose`);let d=e.minimal?F(a,(e,t)=>b.default.satisfies(c[e],i[e])?null:{[e]:t}):a,f=(e.format||[]).includes(`ownerChanged`)?await Us(i,d,e):void 0,p=e.interactive?await Ws(i,d,n,e):d;if(!e.json||e.deep){if(await Sn(e.interactive?{...e,format:(e.format||[]).filter(e=>e!==`group`)}:e,{current:i,upgraded:p,total:Object.keys(a).length,latest:o,ownersChangedDeps:f,pkgFile:n||void 0,errors:l,time:u}),e.peer){let t=await Fs(i,a,s,e);Object.keys(t).length>0&&Cn(e,t)}if(e.enginesNode){let t=await Ns(i,a,e);Object.keys(t).length>0&&wn(e,t)}}let m=await ro(t,i,p,e,n||void 0),h=e.jsonAll?Bs(m):e.jsonDeps?es(Bs(m),Ya(e.dep)):p,_;if(e.json&&!e.deep&&hn(e,h),Object.keys(d).length>0&&n)if(e.upgrade)_=g.default.writeFile(n.replace(`#catalog`,``),m);else{let t=process.env.npm_lifecycle_event===`npx`?`npx npm-check-updates`:`ncu`,n=process.argv.slice(2).map(e=>e.includes(` `)?`"${e}"`:e).join(` `),r=n&&` `+n;H(e,`\nRun ${I.cyan(`${t}${r} -u`)} to upgrade ${e.packageFile||`package.json`}`)}return await _,h}function Ks(e){return e}var qs=Ks;process.env.INJECT_PROMPTS&&d.default.inject(JSON.parse(process.env.INJECT_PROMPTS));let Js=!1;process.on(`unhandledRejection`,e=>{console.error(e),Js=!0});const Ys=e=>{e.global&&(process.env.VOLTA_HOME||process.env.PATH?.includes(`\\Volta`))&&(H(e,`It appears you are using Volta. \`npm-check-updates --global\` cannot be used with Volta because Volta has its own system for managing global packages which circumvents npm.
371
+
372
+ If you are still receiving this message after uninstalling Volta, ensure your PATH does not contain an entry for Volta and your shell profile does not define VOLTA_HOME. You may need to reboot for changes to your shell profile to take effect.`,`error`),process.exit(1))},Xs=async(e,t)=>{let n={...e,cwd:e.cwd||u.default.resolve(t,`..`),packageFile:t};return e.packageManager===`staticRegistry`?await lr({...n,packageManager:void 0}):e.packageManager&&e.packageManager!==`npm`?e.packageManager:await lr(n)},Zs=(e,t)=>{let n=e.length===1?{[e[0]]:t}:t;return Object.values(n).some(e=>Object.keys(e).length>0)},Qs=async(e,t,n)=>{if(n.install===`never`){H(n,``);return}if(!Zs(e,t))return;let r=await Xs(n,e[0]),i=`Run ${I.cyan(r+` install`)}${e.length>1&&!n.workspace&&!n.workspaces?` in each project directory`:``} to install new versions`,a=n.interactive&&(process.env.NCU_TESTS||!process.env.NCU_DOCTOR),o;if(a&&n.install===`prompt`&&(H(n,``),o=await(0,d.default)({type:`confirm`,name:`value`,message:`${i}?`,initial:!0,onState:e=>{e.aborted&&process.nextTick(()=>process.exit(1))}})),n.install===`always`||a&&o.value){n.install===`always`&&H(n,``),H(n,`Installing dependencies...`);let t=n.workspaces||n.workspace?.length?[`package.json`]:e;for await(let e of t){let t=await Xs(n,e),r=t+(process.platform===`win32`&&t!==`bun`?`.cmd`:``),i=n.cwd||u.default.resolve(e,`..`),a=``;try{await(0,f.default)(r,[`install`],{stdout:e=>{a+=e},stderr:e=>{console.error(I.red(e.toString()))}},{cwd:i,env:{...process.env,...n.color===!1?null:{FORCE_COLOR:!0},...t===`pnpm`?{npm_config_strict_peer_dependencies:!1}:null}}),H(n,a),H(n,`Done`)}catch(e){throw Error(e?.message||e||a)}}}else a||H(n,`\n${i}.`)};async function $s(e,t){let[n,r]=await _o(e),i=n.map(e=>e.filepath),a=e.workspaces||!!e.workspace?.length;e.deep=e.deep||a||n.length>1;let o;if(e.global){let n=await Ts(e);return clearTimeout(t),n}else if(e.deep)o=await n.reduce(async(t,n)=>{let i=await t,a=(await yo({packageFile:n.filepath,options:e})).config;e.mergeConfig&&Object.keys(a).length&&(a=Ho(e,a));let o={...e,...a,packageFile:n.filepath,workspacePackages:r},s,c,l;if(n.filepath.includes(`#`)||n.name===`catalogs`){s=n.pkgFile,c=n.filepath,l=n.filepath.includes(`#catalog`)?n.filepath.replace(`#catalog`,``):n.filepath;let e=u.default.resolve(l);H(o,`${o.upgrade?`Upgrading`:`Checking`} ${e} catalog dependencies`)}else{let e=await lo(o);s=e.pkgData,c=e.pkgFile||n.filepath,l=c}return{...i,[o.cwd?u.default.relative(u.default.resolve(o.cwd),l).replace(/\\/g,`/`):l]:await Gs(o,s,c)}},Promise.resolve({})),e.json&&hn(e,o);else{n.length===1&&n[0].filepath!==(e.packageFile||`package.json`)&&(e.packageFile=n[0].filepath);let{pkgData:t,pkgFile:r}=await lo(e);o=await Gs(e,t,r)}return clearTimeout(t),e.errorLevel===2&&Zs(i,o)&&Z(e,`
373
+ Dependencies not up-to-date`),e.upgrade&&(e.packageManager===`deno`?H(e,``):await Qs(i,o,e)),o}async function ec(e={},{cli:t}={}){let n=await zo(e,{cli:t}),r=pe.url;process.on(`exit`,()=>{Js&&Z(n,`Unhandled Rejection! This is a bug and should be reported: ${r}`)}),await ve(n.color),Ys(n),H(n,`Initializing`,`verbose`),n.cacheClear&&await jn(n);let i,a=new Promise(()=>null);if(n.timeout){let e=typeof n.timeout==`string`?Number.parseInt(n.timeout,10):n.timeout;a=new Promise((t,r)=>{i=setTimeout(()=>{let t=`Exceeded global timeout of ${e}ms`;r(t);try{Z(n,t)}catch{}},e)})}if(n.doctor){if(n.upgrade)return Promise.race([a,so(ec,n)]);H(n,`Usage: ncu --doctor\n\n${typeof q.doctor.help==`function`?q.doctor.help({}):q.doctor.help}`,`warn`)}else return Promise.race([a,$s(n,i)])}var tc=ec;Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return yo}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return tc}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return rr}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return qs}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Bn}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ec}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return me}});
374
+ //# sourceMappingURL=src.cjs.map