/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/check-outdated@2.16.1/check-outdated.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
#!/usr/bin/env node
const parseArguments=require("./helper/args"),colorize=require("./helper/colorize"),{getOutdatedDependencies:getOutdatedDependencies,compareByName:compareByName,compareByType:compareByType}=require("./helper/dependencies"),{getChangelogPath:getChangelogPath,getDependencyPackageJSON:getDependencyPackageJSON,getParentPackageJSONPath:getParentPackageJSONPath,readFile:readFile}=require("./helper/files"),generateKeyValueList=require("./helper/list"),{applyMinAgeFilter:applyMinAgeFilter}=require("./helper/min-age"),{getRegExpPosition:getRegExpPosition,escapeRegExp:escapeRegExp}=require("./helper/regexp"),{semverDiff:semverDiff,semverDiffType:semverDiffType,semverInRange:semverInRange}=require("./helper/semver"),prettifyTable=require("./helper/table"),{getNpmJSLink:getNpmJSLink,getPackageAuthor:getPackageAuthor,getPackageHomepage:getPackageHomepage,getPackageRepository:getPackageRepository}=require("./helper/urls"),pkg=require("./package.json"),DEFAULT_COLUMNS=["package","current","wanted","latest","reference","changes","location"],packageJsonCache={},AVAILABLE_COLUMNS={package:{caption:colorize.underline("Package"),getValue:async(e,t)=>{switch(semverDiffType(e.current,getWantedOrLatest(e,t))){case"major":return colorize.yellow(e.name);case"minor":return colorize.cyan(e.name);case"patch":return colorize.green(e.name);case"revert":return colorize.red(e.name);default:return e.name}}},current:{caption:{text:colorize.underline("Current"),alignRight:!0},getValue:async(e,t)=>{if(""===e.current)return{text:colorize.gray("-"),alignRight:!0};return{text:semverDiff([e.current,getWantedOrLatest(e,t)],[colorize,colorize.magenta],[colorize.underline,colorize.magenta.underline])[0],alignRight:!0}}},wanted:{caption:{text:colorize.underline("Wanted"),alignRight:!0},getValue:async e=>{if(""===e.wanted)return{text:colorize.gray("-"),alignRight:!0};return{text:semverDiff([e.current,e.wanted],[colorize,colorize.green],[colorize.underline,colorize.green.underline])[1],alignRight:!0}}},latest:{caption:{text:colorize.underline("Latest"),alignRight:!0},getValue:async e=>{if(""===e.latest)return{text:colorize.gray("-"),alignRight:!0};return{text:semverDiff([e.current,e.latest],[colorize,colorize.magenta],[colorize.underline,colorize.magenta.underline])[1],alignRight:!0}}},type:{caption:colorize.underline("Type"),getValue:async(e,t)=>semverDiffType(e.current,getWantedOrLatest(e,t))||colorize.gray("-")},location:{caption:colorize.underline("Location"),getValue:async e=>e.location||colorize.gray("-")},packageType:{caption:colorize.underline("Package Type"),getValue:async e=>e.type||colorize.gray("-")},reference:{caption:colorize.underline("Reference"),getValue:async e=>{const t=getParentPackageJSONPath(e.location);let a=packageJsonCache[t]||readFile(t);if(void 0!==a){a=a.replace(/\r\n|\r/gu,"\n"),"filePath"in packageJsonCache||(packageJsonCache[t]=a);const n=JSON.parse(a),r=e.type&&e.type in n?n[e.type][e.name]:void 0,o=new RegExp(`"${escapeRegExp(e.name)}"[^:]*:[^"]*"[^"]*${r?escapeRegExp(r):""}"`,"u"),[i,c]=getRegExpPosition(a,o);if(i&&c)return`${t}:${i}:${c}`}return colorize.gray("-")}},changes:{caption:colorize.underline("Changes"),getValue:async(e,t,a)=>(a.packageJSON=a.packageJSON||getDependencyPackageJSON(e.location),await getPackageRepository(a.packageJSON,!0)||getPackageHomepage(a.packageJSON)||getNpmJSLink(e.resolvedName)||colorize.gray("-"))},changesPreferLocal:{caption:colorize.underline("Changes"),getValue:async(e,t,a)=>{const n=getChangelogPath(e.location);return n||(a.packageJSON=a.packageJSON||getDependencyPackageJSON(e.location),await getPackageRepository(a.packageJSON,!0)||getPackageHomepage(a.packageJSON)||getNpmJSLink(e.resolvedName)||colorize.gray("-"))}},homepage:{caption:colorize.underline("Homepage"),getValue:async(e,t,a)=>(a.packageJSON=a.packageJSON||getDependencyPackageJSON(e.location),e.homepage||getPackageHomepage(a.packageJSON)||await getPackageRepository(a.packageJSON)||getPackageAuthor(a.packageJSON)||getNpmJSLink(e.resolvedName)||colorize.gray("-"))},npmjs:{caption:colorize.underline("npmjs.com"),getValue:async e=>getNpmJSLink(e.resolvedName)||colorize.gray("-")}};AVAILABLE_COLUMNS.name=AVAILABLE_COLUMNS.package;const AVAILABLE_ARGUMENTS={"--help":()=>help(),"-h":()=>help(),"--ignore-pre-releases":{ignorePreReleases:!0},"--ignore-dev-dependencies":{ignoreDevDependencies:!0},"--ignore-packages":e=>{const t=e.split(",");return 1!==t.length||""!==t[0]&&!t[0].startsWith("-")?{ignorePackages:t}:help("Invalid value of --ignore-packages")},"--prefer-wanted":{preferWanted:!0},"--columns":e=>{const t=e.split(","),a=Object.keys(AVAILABLE_COLUMNS);if(1===t.length&&(""===t[0]||t[0].startsWith("-")))return help("Invalid value of --columns");const n=t.find((e=>!a.includes(e)));return n?help(`Invalid column name "${n}" in --columns\nAvailable columns are:\n${a.join(", ")}`):{columns:t}},"--types":e=>{const t=e.split(","),a=["major","minor","patch","prerelease","build","reverted"];if(1===t.length&&(""===t[0]||t[0].startsWith("-")))return help("Invalid value of --types");const n=t.find((e=>!a.includes(e)));return n?help(`Invalid type name "${n}" in --types\nAvailable types are:\n${a.join(", ")}`):{types:t}},"--global":{global:!0},"--depth":e=>{const t=Number.parseInt(e,10);return Number.isFinite(t)?{depth:t}:help("Invalid value of --depth")},"--min-age":e=>{const t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?help("Invalid value of --min-age (must be a non-negative integer)"):{minAge:t}},"--min-age-patch":e=>{const t=Number.parseInt(e,10);return!Number.isFinite(t)||t<0?help("Invalid value of --min-age-patch (must be a non-negative integer)"):{minAgePatch:t}}};if(require.main===module){process.title=pkg.name;const e=process.argv.slice(2);(async()=>{process.exitCode=await checkOutdated(e)})()}else module.exports=checkOutdated;async function checkOutdated(e){let t;try{t=parseArguments(e,AVAILABLE_ARGUMENTS)}catch(e){t=e instanceof Error?help(e.message):help()}if("string"==typeof t)return process.stdout.write(t),1;try{const e=Object.values(await getOutdatedDependencies(t));let a=e;if(void 0!==t.minAge){const n=await applyMinAgeFilter(e,t.minAge,t.minAgePatch);a=n.dependencies,n.warnings.length>0&&process.stdout.write(`${n.warnings.map((e=>`${colorize.yellow("Warning:")} ${e}`)).join("\n")}\n\n`)}const n=getFilteredDependencies(a,t);if(0===n.length)return process.stdout.write("All dependencies are up-to-date.\n"),0;1===n.length?process.stdout.write("1 outdated dependency found:\n\n"):process.stdout.write(`${n.length} outdated dependencies found:\n\n`);const r=void 0===t.columns||0===t.columns.length?DEFAULT_COLUMNS:t.columns;await writeOutdatedDependenciesToStdout(r,n,t),writeUnnecessaryIgnoredPackagesToStdout(n,t)}catch(e){if("object"==typeof e&&null!==e){const t=e,a=generateKeyValueList(Object.getOwnPropertyNames(t).map((e=>[colorize.magenta(e),t[e]])));process.stdout.write(`${colorize.red("Error while gathering outdated dependencies:")}\n\n${a}\n`)}else process.stdout.write(`${colorize.red("Unknown error while gathering outdated dependencies.")}\n`)}return 1}function help(...e){return[`${pkg.name} v${pkg.version} - ${pkg.description}`,"Usage: ",["[--ignore-pre-releases]","[--ignore-dev-dependencies]","[--ignore-packages <comma-separated-list-of-package-names>]","[--prefer-wanted]","[--columns <comma-separated-list-of-columns>]","[--types <comma-separated-list-of-update-types>]","[--global]","[--depth <number>]","[--min-age <days>]","[--min-age-patch <days>]"].join(" "),"","Arguments:",prettifyTable([["--help, -h","Show this help."],["--ignore-pre-releases",'Don\'t recommend to update to versions which contain a hyphen (e.g. "2.1.0-alpha", "2.1.0-beta", "2.1.0-rc.1").'],["--ignore-dev-dependencies","Do not warn if devDependencies are outdated."],["--ignore-packages <comma-separated-list-of-package-names>","Ignore the listed packages, even if they are outdated."],["--prefer-wanted",'Compare the "Current" version to the "Wanted" version, instead of the "Latest" version.'],["--columns <comma-separated-list-of-columns>","Defines which columns should be shown in which order."],["",`Possible values: ${Object.keys(AVAILABLE_COLUMNS).join(",")}`],["--types <comma-separated-list-of-update-types>","Restrict the update type (e.g. only show minor updates, or reverted versions)"],["","Possible values: major,minor,patch,prerelease,build,reverted"],["--global","Check packages in the global install prefix instead of in the current project (equal to the npm outdated-option)."],["--depth <number>","Max depth for checking dependency tree (equal to the npm outdated-option)."],["--min-age <days>","Only recommend release lines (Major.Minor) with at least one version published <days> days ago."],["--min-age-patch <days>","Min age for patches within the --min-age release line (default: 0). Allows newer bug fixes."]]),...Array.isArray(e)?[""].concat(e):[],""].join("\n")}function getFilteredDependencies(e,t){let a=e.filter((e=>{if(["git","linked","remote"].includes(getWantedOrLatest(e,t)))return!1;if(e.type)try{const t=readFile(getParentPackageJSONPath(e.location));if(t){if("*"===JSON.parse(t)[e.type][e.name])return!1}}catch{}return!0}));if(t.ignorePackages){const e=t.ignorePackages,n=/^(.+?)@(.*)$/u;a=a.filter((a=>{for(const r of e){const e=n.exec(r);if(null===e){if(r===a.name)return!1}else if(e[1]===a.name&&semverInRange(getWantedOrLatest(a,t),e[2]))return!1}return!0}))}return t.ignoreDevDependencies&&(a=a.filter((({type:e})=>"devDependencies"!==e))),t.ignorePreReleases&&(a=a.filter((e=>!e.current.includes("-")&&!getWantedOrLatest(e,t).includes("-")))),t.preferWanted&&(a=a.filter((({current:e,wanted:t})=>e!==t))),t.types&&(a=a.filter((({current:e,latest:a})=>t.types&&t.types.includes(semverDiffType(e,a)||"")))),a}function getWantedOrLatest(e,t){return t.preferWanted?e.wanted:e.latest}async function writeOutdatedDependenciesToStdout(e,t,a){const n=[e.map((e=>AVAILABLE_COLUMNS[e].caption))],r=!e.includes("packageType");let o;t.sort(r?compareByType:compareByName);for(const i of t)r&&o!==i.type&&(n.push(`\n${colorize.underline(i.type||colorize.gray("unknown"))}`),o=i.type),n.push((async()=>{const t={};return Promise.all(e.map((async e=>AVAILABLE_COLUMNS[e].getValue(i,a,t))))})());process.stdout.write([prettifyTable(await Promise.all(n)),"",colorize.underline("Color legend"),`${colorize.yellow("Major update")}: backward-incompatible updates`,`${colorize.cyan("Minor update")}: backward-compatible features`,`${colorize.green("Patch update")}: backward-compatible bug fixes`,`${colorize.red("Reverted")}:     latest available version is lower than the installed version`,"",""].join("\n"))}function writeUnnecessaryIgnoredPackagesToStdout(e,t){const a=/^(.+?)@(.*)$/u;if(t.ignorePackages)for(const n of t.ignorePackages){const t=a.exec(n);if(null!==t){const a=e.find((({name:e})=>e===t[1]));a&&process.stdout.write(`The --ignore-packages filter "${n}" has no effect, the latest version is ${a.latest}.\n\n`)}}}
//# sourceMappingURL=/sm/0b397168491a9547f6c7e12b56761b6bf57dc920fd8ce2fa368029873895ec80.map