/**
 * Minified by jsDelivr using Terser v5.48.0.
 * Original file: /npm/check-outdated@3.0.0/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,getWantedOrLatest:getWantedOrLatest,compareByName:compareByName,compareByType:compareByType}=require("./helper/dependencies"),{clearFileCache:clearFileCache,getChangelogPath:getChangelogPath,getDependencyPackageJSON:getDependencyPackageJSON,getParentPackageJSONPath:getParentPackageJSONPath,parsePackageJSON:parsePackageJSON,readFileCached:readFileCached}=require("./helper/files"),{getFilteredDependencies:getFilteredDependencies}=require("./helper/filter"),generateKeyValueList=require("./helper/list"),{applyMinAgeFilter:applyMinAgeFilter}=require("./helper/min-age"),{getOutdatedPinnedDependencies:getOutdatedPinnedDependencies}=require("./helper/overrides"),splitPackageSpecifier=require("./helper/package-specifier"),{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"],AVAILABLE_COLUMNS={package:{caption:colorize.underline("Package"),getValue:async(e,n)=>{switch(semverDiffType(e.current,getWantedOrLatest(e,n))){case"major":return colorize.yellow(e.name);case"minor":return colorize.cyan(e.name);case"patch":return colorize.green(e.name);case"reverted":return colorize.red(e.name);default:return e.name}}},current:{caption:{text:colorize.underline("Current"),alignRight:!0},getValue:async(e,n)=>{if(""===e.current)return{text:colorize.gray("-"),alignRight:!0};return{text:semverDiff([e.current,getWantedOrLatest(e,n)],[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,n)=>semverDiffType(e.current,getWantedOrLatest(e,n))||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 n=getParentPackageJSONPath(e.location),t=readFileCached(n);if(void 0!==t){const a=void 0!==e.specKey?e.specKey:e.name;let r=e.spec;if(void 0===r){const n=parsePackageJSON(t);r=void 0!==n&&e.type&&e.type in n?n[e.type][e.name]:void 0}const i=new RegExp(`"${escapeRegExp(a)}"[^:]*:[^"]*"[^"]*${r?escapeRegExp(r):""}"`,"u"),[o,s]=getRegExpPosition(t,i);if(o&&s)return`${n}:${o}:${s}`}return colorize.gray("-")}},changes:{caption:colorize.underline("Changes"),getValue:async(e,n,t)=>(t.packageJSON=t.packageJSON||getDependencyPackageJSON(e.location),await getPackageRepository(t.packageJSON,!0)||getPackageHomepage(t.packageJSON)||getNpmJSLink(e.resolvedName)||colorize.gray("-"))},changesPreferLocal:{caption:colorize.underline("Changes"),getValue:async(e,n,t)=>{const a=getChangelogPath(e.location);return a||(t.packageJSON=t.packageJSON||getDependencyPackageJSON(e.location),await getPackageRepository(t.packageJSON,!0)||getPackageHomepage(t.packageJSON)||getNpmJSLink(e.resolvedName)||colorize.gray("-"))}},homepage:{caption:colorize.underline("Homepage"),getValue:async(e,n,t)=>(t.packageJSON=t.packageJSON||getDependencyPackageJSON(e.location),e.homepage||getPackageHomepage(t.packageJSON)||await getPackageRepository(t.packageJSON)||getPackageAuthor(t.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-resolution-dependencies":{ignoreResolutionDependencies:!0},"--ignore-linked-packages":{ignoreLinkedPackages:!0},"--ignore-packages":e=>{const n=e.split(",");return 1!==n.length||""!==n[0]&&!n[0].startsWith("-")?{ignorePackages:n}:help("Invalid value of --ignore-packages")},"--prefer-wanted":{preferWanted:!0},"--columns":e=>{const n=e.split(",").filter(e=>""!==e),t=Object.keys(AVAILABLE_COLUMNS);if(0===n.length||1===n.length&&n[0].startsWith("-"))return help("Invalid value of --columns");const a=n.find(e=>!t.includes(e));return void 0!==a?help(`Invalid column name "${a}" in --columns\nAvailable columns are:\n${t.join(", ")}`):{columns:n}},"--types":e=>{const n=e.split(",").filter(e=>""!==e),t=["major","minor","patch","prerelease","build","reverted"];if(0===n.length||1===n.length&&n[0].startsWith("-"))return help("Invalid value of --types");const a=n.find(e=>!t.includes(e));return void 0!==a?help(`Invalid type name "${a}" in --types\nAvailable types are:\n${t.join(", ")}`):{types:n}},"--global":{global:!0},"--depth":e=>{const n=Number.parseInt(e,10);return!Number.isFinite(n)||n<0?help("Invalid value of --depth (must be a non-negative integer)"):{depth:n}},"--min-age":e=>{const n=Number.parseInt(e,10);return!Number.isFinite(n)||n<0?help("Invalid value of --min-age (must be a non-negative integer)"):{minAge:n}},"--min-age-patch":e=>{const n=Number.parseInt(e,10);return!Number.isFinite(n)||n<0?help("Invalid value of --min-age-patch (must be a non-negative integer)"):{minAgePatch:n}}};if(require.main===module){process.title=pkg.name;const e=process.argv.slice(2);(async()=>{process.exitCode=await checkOutdated(e)})().catch(e=>{process.stdout.write(`${colorize.red("Unexpected error:")} ${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1})}else module.exports=checkOutdated;async function checkOutdated(e){let n;try{n=parseArguments(e,AVAILABLE_ARGUMENTS)}catch(e){n=e instanceof Error?help(e.message):help()}if("string"==typeof n)return process.stdout.write(n),1;if(void 0!==n.minAgePatch&&void 0===n.minAge)return process.stdout.write(help("The argument --min-age-patch requires the argument --min-age")),1;if(void 0!==n.minAge&&void 0!==n.minAgePatch&&n.minAgePatch>n.minAge)return process.stdout.write(help("The value of --min-age-patch must not be greater than the value of --min-age")),1;clearFileCache();try{const[e,t]=await Promise.all([getOutdatedDependencies(n),getOutdatedPinnedDependencies(n)]),a=new Set(e.map(({name:e})=>e)),r=t.dependencies.filter(e=>!a.has(e.name)),i=e.concat(r);t.warnings.length>0&&process.stdout.write(`${t.warnings.map(e=>`${colorize.yellow("Warning:")} ${e}`).join("\n")}\n\n`);let o=i;if(void 0!==n.minAge){const e=await applyMinAgeFilter(i,n.minAge,n.minAgePatch);o=e.dependencies,e.warnings.length>0&&process.stdout.write(`${e.warnings.map(e=>`${colorize.yellow("Warning:")} ${e}`).join("\n")}\n\n`)}const s=getFilteredDependencies(o,n);if(0===s.length)return process.stdout.write("All dependencies are up-to-date.\n"),0;1===s.length?process.stdout.write("1 outdated dependency found:\n\n"):process.stdout.write(`${s.length} outdated dependencies found:\n\n`);const c=void 0===n.columns||0===n.columns.length?DEFAULT_COLUMNS:n.columns;await writeOutdatedDependenciesToStdout(c,s,n),writeUnnecessaryIgnoredPackagesToStdout(o,n)}catch(e){if("object"==typeof e&&null!==e){const n=e,t=generateKeyValueList(Object.getOwnPropertyNames(n).map(e=>[colorize.magenta(e),n[e]]));process.stdout.write(`${colorize.red("Error while gathering outdated dependencies:")}\n\n${t}\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-resolution-dependencies]","[--ignore-linked-packages]","[--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 pre-release versions (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-resolution-dependencies",'Do not check the version pins in the "overrides" and "resolutions" fields of the package.json.'],["--ignore-linked-packages","Do not warn if linked packages are outdated (e.g. workspaces of a monorepo, or packages added with npm link)."],["--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 (requires --min-age; default: 0, must not be greater than --min-age). Allows newer bug fixes."]]),...e.length>0?[""].concat(e):[],""].join("\n")}async function writeOutdatedDependenciesToStdout(e,n,t){const a=[e.map(e=>AVAILABLE_COLUMNS[e].caption)],r=!e.includes("packageType");let i=Symbol("none");n.sort(r?compareByType:compareByName);for(const o of n)r&&i!==o.type&&(a.push(`\n${colorize.underline(o.type||colorize.gray("unknown"))}`),i=o.type),a.push((async()=>{const n={};return Promise.all(e.map(async e=>AVAILABLE_COLUMNS[e].getValue(o,t,n)))})());process.stdout.write([prettifyTable(await Promise.all(a)),"",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,n){if(n.ignorePackages)for(const t of n.ignorePackages){const a=splitPackageSpecifier(t);if(null!==a){const r=e.find(({name:e})=>e===a.name);r&&!semverInRange(getWantedOrLatest(r,n),a.version)&&process.stdout.write(`The --ignore-packages filter "${t}" has no effect, the ${n.preferWanted?"wanted":"latest"} version is ${getWantedOrLatest(r,n)}.\n\n`)}}}
//# sourceMappingURL=/sm/ace3ab5077ce6bc7e6dc2f15639f4ebebd15ca66b652eb7e35edbb5f5847e4de.map