@code-pushup/js-packages-plugin 0.55.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +4 -4
  2. package/package.json +8 -7
  3. package/src/bin.js +3 -0
  4. package/src/bin.js.map +1 -0
  5. package/src/index.d.ts +2 -2
  6. package/src/index.js +3 -0
  7. package/src/index.js.map +1 -0
  8. package/src/lib/config.d.ts +4 -4
  9. package/src/lib/config.js +59 -0
  10. package/src/lib/config.js.map +1 -0
  11. package/src/lib/constants.d.ts +2 -2
  12. package/src/lib/constants.js +25 -0
  13. package/src/lib/constants.js.map +1 -0
  14. package/src/lib/js-packages-plugin.d.ts +1 -1
  15. package/src/lib/js-packages-plugin.js +101 -0
  16. package/src/lib/js-packages-plugin.js.map +1 -0
  17. package/src/lib/package-managers/constants.js +3 -0
  18. package/src/lib/package-managers/constants.js.map +1 -0
  19. package/src/lib/package-managers/derive-package-manager.d.ts +2 -2
  20. package/src/lib/package-managers/derive-package-manager.js +43 -0
  21. package/src/lib/package-managers/derive-package-manager.js.map +1 -0
  22. package/src/lib/package-managers/derive-yarn.js +16 -0
  23. package/src/lib/package-managers/derive-yarn.js.map +1 -0
  24. package/src/lib/package-managers/npm/audit-result.d.ts +2 -2
  25. package/src/lib/package-managers/npm/audit-result.js +65 -0
  26. package/src/lib/package-managers/npm/audit-result.js.map +1 -0
  27. package/src/lib/package-managers/npm/npm.d.ts +1 -1
  28. package/src/lib/package-managers/npm/npm.js +49 -0
  29. package/src/lib/package-managers/npm/npm.js.map +1 -0
  30. package/src/lib/package-managers/npm/outdated-result.d.ts +1 -1
  31. package/src/lib/package-managers/npm/outdated-result.js +16 -0
  32. package/src/lib/package-managers/npm/outdated-result.js.map +1 -0
  33. package/src/lib/package-managers/npm/types.d.ts +3 -3
  34. package/src/lib/package-managers/npm/types.js +2 -0
  35. package/src/lib/package-managers/npm/types.js.map +1 -0
  36. package/src/lib/package-managers/package-managers.d.ts +2 -2
  37. package/src/lib/package-managers/package-managers.js +11 -0
  38. package/src/lib/package-managers/package-managers.js.map +1 -0
  39. package/src/lib/package-managers/pnpm/audit-result.d.ts +1 -1
  40. package/src/lib/package-managers/pnpm/audit-result.js +34 -0
  41. package/src/lib/package-managers/pnpm/audit-result.js.map +1 -0
  42. package/src/lib/package-managers/pnpm/outdated-result.d.ts +1 -1
  43. package/src/lib/package-managers/pnpm/outdated-result.js +12 -0
  44. package/src/lib/package-managers/pnpm/outdated-result.js.map +1 -0
  45. package/src/lib/package-managers/pnpm/pnpm.d.ts +1 -1
  46. package/src/lib/package-managers/pnpm/pnpm.js +49 -0
  47. package/src/lib/package-managers/pnpm/pnpm.js.map +1 -0
  48. package/src/lib/package-managers/pnpm/types.d.ts +2 -2
  49. package/src/lib/package-managers/pnpm/types.js +2 -0
  50. package/src/lib/package-managers/pnpm/types.js.map +1 -0
  51. package/src/lib/package-managers/pnpm/utils.js +5 -0
  52. package/src/lib/package-managers/pnpm/utils.js.map +1 -0
  53. package/src/lib/package-managers/types.d.ts +3 -3
  54. package/src/lib/package-managers/types.js +2 -0
  55. package/src/lib/package-managers/types.js.map +1 -0
  56. package/src/lib/package-managers/yarn-classic/audit-result.d.ts +1 -1
  57. package/src/lib/package-managers/yarn-classic/audit-result.js +36 -0
  58. package/src/lib/package-managers/yarn-classic/audit-result.js.map +1 -0
  59. package/src/lib/package-managers/yarn-classic/constants.d.ts +2 -2
  60. package/src/lib/package-managers/yarn-classic/constants.js +14 -0
  61. package/src/lib/package-managers/yarn-classic/constants.js.map +1 -0
  62. package/src/lib/package-managers/yarn-classic/outdated-result.d.ts +1 -1
  63. package/src/lib/package-managers/yarn-classic/outdated-result.js +39 -0
  64. package/src/lib/package-managers/yarn-classic/outdated-result.js.map +1 -0
  65. package/src/lib/package-managers/yarn-classic/types.d.ts +1 -1
  66. package/src/lib/package-managers/yarn-classic/types.js +8 -0
  67. package/src/lib/package-managers/yarn-classic/types.js.map +1 -0
  68. package/src/lib/package-managers/yarn-classic/yarn-classic.d.ts +1 -1
  69. package/src/lib/package-managers/yarn-classic/yarn-classic.js +29 -0
  70. package/src/lib/package-managers/yarn-classic/yarn-classic.js.map +1 -0
  71. package/src/lib/package-managers/yarn-modern/audit-result.d.ts +1 -1
  72. package/src/lib/package-managers/yarn-modern/audit-result.js +25 -0
  73. package/src/lib/package-managers/yarn-modern/audit-result.js.map +1 -0
  74. package/src/lib/package-managers/yarn-modern/outdated-result.d.ts +1 -1
  75. package/src/lib/package-managers/yarn-modern/outdated-result.js +10 -0
  76. package/src/lib/package-managers/yarn-modern/outdated-result.js.map +1 -0
  77. package/src/lib/package-managers/yarn-modern/types.d.ts +2 -2
  78. package/src/lib/package-managers/yarn-modern/types.js +2 -0
  79. package/src/lib/package-managers/yarn-modern/types.js.map +1 -0
  80. package/src/lib/package-managers/yarn-modern/yarn-modern.d.ts +1 -1
  81. package/src/lib/package-managers/yarn-modern/yarn-modern.js +36 -0
  82. package/src/lib/package-managers/yarn-modern/yarn-modern.js.map +1 -0
  83. package/src/lib/runner/audit/constants.d.ts +1 -1
  84. package/src/lib/runner/audit/constants.js +10 -0
  85. package/src/lib/runner/audit/constants.js.map +1 -0
  86. package/src/lib/runner/audit/transform.d.ts +2 -2
  87. package/src/lib/runner/audit/transform.js +63 -0
  88. package/src/lib/runner/audit/transform.js.map +1 -0
  89. package/src/lib/runner/audit/types.d.ts +1 -1
  90. package/src/lib/runner/audit/types.js +2 -0
  91. package/src/lib/runner/audit/types.js.map +1 -0
  92. package/src/lib/runner/audit/utils.d.ts +1 -1
  93. package/src/lib/runner/audit/utils.js +4 -0
  94. package/src/lib/runner/audit/utils.js.map +1 -0
  95. package/src/lib/runner/constants.js +6 -0
  96. package/src/lib/runner/constants.js.map +1 -0
  97. package/src/lib/runner/index.d.ts +1 -1
  98. package/src/lib/runner/index.js +82 -0
  99. package/src/lib/runner/index.js.map +1 -0
  100. package/src/lib/runner/outdated/constants.js +13 -0
  101. package/src/lib/runner/outdated/constants.js.map +1 -0
  102. package/src/lib/runner/outdated/transform.d.ts +2 -2
  103. package/src/lib/runner/outdated/transform.js +60 -0
  104. package/src/lib/runner/outdated/transform.js.map +1 -0
  105. package/src/lib/runner/outdated/types.js +6 -0
  106. package/src/lib/runner/outdated/types.js.map +1 -0
  107. package/src/lib/runner/utils.d.ts +2 -2
  108. package/src/lib/runner/utils.js +56 -0
  109. package/src/lib/runner/utils.js.map +1 -0
  110. package/src/lib/utils.d.ts +3 -3
  111. package/src/lib/utils.js +17 -0
  112. package/src/lib/utils.js.map +1 -0
  113. package/bin.js +0 -1759
  114. package/index.js +0 -1651
  115. package/src/lib/package-managers/index.d.ts +0 -2
@@ -1,2 +1,2 @@
1
- import type { PackageAuditLevel } from '../../config';
1
+ import type { PackageAuditLevel } from '../../config.js';
2
2
  export declare function getVulnerabilitiesTotal(summary: Record<PackageAuditLevel, number>): number;
@@ -0,0 +1,4 @@
1
+ export function getVulnerabilitiesTotal(summary) {
2
+ return Object.values(summary).reduce((acc, value) => acc + value, 0);
3
+ }
4
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/audit/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,OAA0C;IAE1C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import path from 'node:path';
2
+ import { pluginWorkDir } from '@code-pushup/utils';
3
+ export const WORKDIR = pluginWorkDir('js-packages');
4
+ export const RUNNER_OUTPUT_PATH = path.join(WORKDIR, 'runner-output.json');
5
+ export const PLUGIN_CONFIG_PATH = path.join(process.cwd(), WORKDIR, 'plugin-config.json');
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugin-js-packages/src/lib/runner/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CACzC,OAAO,CAAC,GAAG,EAAE,EACb,OAAO,EACP,oBAAoB,CACrB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { RunnerConfig } from '@code-pushup/models';
2
- import { type FinalJSPackagesPluginConfig } from '../config';
2
+ import { type FinalJSPackagesPluginConfig } from '../config.js';
3
3
  export declare function createRunnerConfig(scriptPath: string, config: FinalJSPackagesPluginConfig): Promise<RunnerConfig>;
4
4
  export declare function executeRunner(): Promise<void>;
@@ -0,0 +1,82 @@
1
+ import { writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { ensureDirectoryExists, executeProcess, filePathToCliArg, isPromiseFulfilledResult, isPromiseRejectedResult, objectFromEntries, readJsonFile, } from '@code-pushup/utils';
4
+ import { dependencyGroups, } from '../config.js';
5
+ import { dependencyGroupToLong } from '../constants.js';
6
+ import { packageManagers } from '../package-managers/package-managers.js';
7
+ import { auditResultToAuditOutput } from './audit/transform.js';
8
+ import { PLUGIN_CONFIG_PATH, RUNNER_OUTPUT_PATH } from './constants.js';
9
+ import { outdatedResultToAuditOutput } from './outdated/transform.js';
10
+ import { findAllPackageJson, getTotalDependencies } from './utils.js';
11
+ export async function createRunnerConfig(scriptPath, config) {
12
+ await ensureDirectoryExists(path.dirname(PLUGIN_CONFIG_PATH));
13
+ await writeFile(PLUGIN_CONFIG_PATH, JSON.stringify(config));
14
+ return {
15
+ command: 'node',
16
+ args: [filePathToCliArg(scriptPath)],
17
+ outputFile: RUNNER_OUTPUT_PATH,
18
+ };
19
+ }
20
+ export async function executeRunner() {
21
+ const { packageManager, checks, auditLevelMapping, packageJsonPaths, dependencyGroups: depGroups, } = await readJsonFile(PLUGIN_CONFIG_PATH);
22
+ const auditResults = checks.includes('audit')
23
+ ? await processAudit(packageManager, depGroups, auditLevelMapping)
24
+ : [];
25
+ const outdatedResults = checks.includes('outdated')
26
+ ? await processOutdated(packageManager, depGroups, packageJsonPaths)
27
+ : [];
28
+ const checkResults = [...auditResults, ...outdatedResults];
29
+ await ensureDirectoryExists(path.dirname(RUNNER_OUTPUT_PATH));
30
+ await writeFile(RUNNER_OUTPUT_PATH, JSON.stringify(checkResults));
31
+ }
32
+ async function processOutdated(id, depGroups, packageJsonPaths) {
33
+ const pm = packageManagers[id];
34
+ const { stdout, stderr } = await executeProcess({
35
+ command: pm.command,
36
+ args: pm.outdated.commandArgs,
37
+ cwd: process.cwd(),
38
+ ignoreExitCode: true, // outdated returns exit code 1 when outdated dependencies are found
39
+ });
40
+ // Successful outdated check has empty stderr
41
+ if (stderr) {
42
+ throw new Error(`JS packages plugin: outdated error: ${stderr}`);
43
+ }
44
+ // Locate all package.json files in the repository if not provided
45
+ const finalPaths = Array.isArray(packageJsonPaths)
46
+ ? packageJsonPaths
47
+ : await findAllPackageJson();
48
+ const depTotals = await getTotalDependencies(finalPaths);
49
+ const normalizedResult = pm.outdated.unifyResult(stdout);
50
+ return depGroups.map(depGroup => outdatedResultToAuditOutput(normalizedResult, id, depGroup, depTotals[dependencyGroupToLong[depGroup]]));
51
+ }
52
+ async function processAudit(id, depGroups, auditLevelMapping) {
53
+ const pm = packageManagers[id];
54
+ const supportedAuditDepGroups = pm.audit.supportedDepGroups ?? dependencyGroups;
55
+ const compatibleAuditDepGroups = depGroups.filter(group => supportedAuditDepGroups.includes(group));
56
+ const auditResults = await Promise.allSettled(compatibleAuditDepGroups.map(async (depGroup) => {
57
+ const { stdout, stderr } = await executeProcess({
58
+ command: pm.command,
59
+ args: pm.audit.getCommandArgs(depGroup),
60
+ cwd: process.cwd(),
61
+ ignoreExitCode: pm.audit.ignoreExitCode,
62
+ });
63
+ // Successful audit check has empty stderr
64
+ if (stderr) {
65
+ throw new Error(`JS packages plugin: audit error: ${stderr}`);
66
+ }
67
+ return [depGroup, pm.audit.unifyResult(stdout)];
68
+ }));
69
+ const rejected = auditResults.filter(isPromiseRejectedResult);
70
+ if (rejected.length > 0) {
71
+ rejected.forEach(result => {
72
+ console.error(result.reason);
73
+ });
74
+ throw new Error(`JS Packages plugin: Running ${pm.name} audit failed.`);
75
+ }
76
+ const fulfilled = objectFromEntries(auditResults.filter(isPromiseFulfilledResult).map(x => x.value));
77
+ const uniqueResults = pm.audit.postProcessResult?.(fulfilled) ?? fulfilled;
78
+ return compatibleAuditDepGroups.map(depGroup => auditResultToAuditOutput(
79
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
80
+ uniqueResults[depGroup], id, depGroup, auditLevelMapping));
81
+ }
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugin-js-packages/src/lib/runner/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { objectToKeys } from '@code-pushup/utils';
2
+ export const outdatedSeverity = {
3
+ major: 'error',
4
+ premajor: 'info',
5
+ minor: 'warning',
6
+ preminor: 'info',
7
+ patch: 'info',
8
+ prepatch: 'info',
9
+ prerelease: 'info',
10
+ };
11
+ // RELEASE_TYPES directly exported from semver don't work out of the box
12
+ export const RELEASE_TYPES = objectToKeys(outdatedSeverity);
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/outdated/constants.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAuC;IAClE,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;CACnB,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AuditOutput, Issue } from '@code-pushup/models';
2
- import type { DependencyGroup, PackageManagerId } from '../../config';
3
- import type { OutdatedResult, PackageVersion } from './types';
2
+ import type { DependencyGroup, PackageManagerId } from '../../config.js';
3
+ import type { OutdatedResult, PackageVersion } from './types.js';
4
4
  export declare function outdatedResultToAuditOutput(result: OutdatedResult, packageManager: PackageManagerId, depGroup: DependencyGroup, totalDeps: number): AuditOutput;
5
5
  export declare function calculateOutdatedScore(majorOutdated: number, totalDeps: number): number;
6
6
  export declare function outdatedToDisplayValue(stats: PackageVersion): string;
@@ -0,0 +1,60 @@
1
+ import { md } from 'build-md';
2
+ import { clean, diff, neq } from 'semver';
3
+ import { objectFromEntries, pluralize } from '@code-pushup/utils';
4
+ import { dependencyGroupToLong } from '../../constants.js';
5
+ import { RELEASE_TYPES, outdatedSeverity } from './constants.js';
6
+ export function outdatedResultToAuditOutput(result, packageManager, depGroup, totalDeps) {
7
+ const relevantDependencies = result.filter(dep => dep.type === dependencyGroupToLong[depGroup]);
8
+ const validDependencies = relevantDependencies
9
+ .map(dep => ({
10
+ ...dep,
11
+ current: clean(dep.current),
12
+ latest: clean(dep.latest),
13
+ }))
14
+ .filter((dep) => dep.current != null && dep.latest != null);
15
+ const outdatedDependencies = validDependencies.filter(dep => neq(dep.current, dep.latest));
16
+ const outdatedStats = outdatedDependencies.reduce((acc, dep) => {
17
+ const outdatedLevel = diff(dep.current, dep.latest);
18
+ if (outdatedLevel == null) {
19
+ return acc;
20
+ }
21
+ return { ...acc, [outdatedLevel]: acc[outdatedLevel] + 1 };
22
+ }, objectFromEntries(RELEASE_TYPES.map(versionType => [versionType, 0])));
23
+ const issues = outdatedDependencies.length === 0
24
+ ? []
25
+ : outdatedToIssues(outdatedDependencies);
26
+ return {
27
+ slug: `${packageManager}-outdated-${depGroup}`,
28
+ score: calculateOutdatedScore(outdatedStats.major, totalDeps),
29
+ value: outdatedDependencies.length,
30
+ displayValue: outdatedToDisplayValue(outdatedStats),
31
+ details: { issues },
32
+ };
33
+ }
34
+ export function calculateOutdatedScore(majorOutdated, totalDeps) {
35
+ return totalDeps > 0 ? (totalDeps - majorOutdated) / totalDeps : 1;
36
+ }
37
+ export function outdatedToDisplayValue(stats) {
38
+ const total = Object.values(stats).reduce((acc, value) => acc + value, 0);
39
+ const versionBreakdown = RELEASE_TYPES.map(version => stats[version] > 0 ? `${stats[version]} ${version}` : '').filter(text => text !== '');
40
+ if (versionBreakdown.length === 0) {
41
+ return 'all dependencies are up to date';
42
+ }
43
+ if (versionBreakdown.length > 1) {
44
+ return `${total} outdated package versions (${versionBreakdown.join(', ')})`;
45
+ }
46
+ return `${versionBreakdown[0]} outdated package ${pluralize('version', total)}`;
47
+ }
48
+ export function outdatedToIssues(dependencies) {
49
+ return dependencies.map(dep => {
50
+ const { name, current, latest, url } = dep;
51
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
52
+ const outdatedLevel = diff(current, latest);
53
+ const packageReference = url == null ? md.code(name) : md.link(url, md.code(name));
54
+ return {
55
+ message: md `Package ${packageReference} requires a ${md.bold(outdatedLevel)} update from ${md.bold(current)} to ${md.bold(latest)}.`.toString(),
56
+ severity: outdatedSeverity[outdatedLevel],
57
+ };
58
+ });
59
+ }
60
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/outdated/transform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export const dependencyGroupLong = [
2
+ 'dependencies',
3
+ 'devDependencies',
4
+ 'optionalDependencies',
5
+ ];
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/outdated/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc;IACd,iBAAiB;IACjB,sBAAsB;CACd,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { AuditResult, Vulnerability } from './audit/types';
2
- import { type DependencyTotals } from './outdated/types';
1
+ import type { AuditResult, Vulnerability } from './audit/types.js';
2
+ import { type DependencyTotals } from './outdated/types.js';
3
3
  export declare function filterAuditResult(result: AuditResult, key: keyof Vulnerability, referenceResult?: AuditResult): AuditResult;
4
4
  export declare function findAllPackageJson(): Promise<string[]>;
5
5
  export declare function getTotalDependencies(packageJsonPaths: string[]): Promise<DependencyTotals>;
@@ -0,0 +1,56 @@
1
+ import path from 'node:path';
2
+ import { crawlFileSystem, objectFromEntries, objectToKeys, readJsonFile, } from '@code-pushup/utils';
3
+ import { dependencyGroupLong, } from './outdated/types.js';
4
+ export function filterAuditResult(result, key, referenceResult) {
5
+ if (result.vulnerabilities.length === 0) {
6
+ return result;
7
+ }
8
+ const uniqueResult = result.vulnerabilities.reduce((acc, ref) => {
9
+ const matchReference = referenceResult ?? acc;
10
+ const isMatch = matchReference.vulnerabilities
11
+ .map(vulnerability => vulnerability[key])
12
+ .includes(ref[key]);
13
+ if (isMatch) {
14
+ return {
15
+ vulnerabilities: acc.vulnerabilities,
16
+ summary: {
17
+ ...acc.summary,
18
+ [ref.severity]: acc.summary[ref.severity] - 1,
19
+ total: acc.summary.total - 1,
20
+ },
21
+ };
22
+ }
23
+ return {
24
+ vulnerabilities: [...acc.vulnerabilities, ref],
25
+ summary: acc.summary,
26
+ };
27
+ }, { vulnerabilities: [], summary: result.summary });
28
+ return {
29
+ vulnerabilities: uniqueResult.vulnerabilities,
30
+ summary: uniqueResult.summary,
31
+ };
32
+ }
33
+ // TODO: use .gitignore
34
+ export async function findAllPackageJson() {
35
+ return (await crawlFileSystem({
36
+ directory: '.',
37
+ pattern: /(^|[\\/])package\.json$/,
38
+ })).filter(filePath => !filePath.startsWith(`node_modules${path.sep}`) &&
39
+ !filePath.includes(`${path.sep}node_modules${path.sep}`) &&
40
+ !filePath.startsWith(`.nx${path.sep}`));
41
+ }
42
+ export async function getTotalDependencies(packageJsonPaths) {
43
+ const parsedDeps = await Promise.all(packageJsonPaths.map((readJsonFile)));
44
+ const mergedDeps = parsedDeps.reduce((acc, depMapper) => objectFromEntries(dependencyGroupLong.map(group => {
45
+ const deps = depMapper[group];
46
+ return [
47
+ group,
48
+ [...acc[group], ...(deps == null ? [] : objectToKeys(deps))],
49
+ ];
50
+ })), { dependencies: [], devDependencies: [], optionalDependencies: [] });
51
+ return objectFromEntries(objectToKeys(mergedDeps).map(deps => [
52
+ deps,
53
+ new Set(mergedDeps[deps]).size,
54
+ ]));
55
+ }
56
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/plugin-js-packages/src/lib/runner/utils.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { type JSPackagesPluginConfig } from './config';
1
+ import { type JSPackagesPluginConfig } from './config.js';
2
2
  export declare function normalizeConfig(config?: JSPackagesPluginConfig): Promise<{
3
- packageManager: import("./package-managers").PackageManager;
3
+ packageManager: import("./package-managers/types.js").PackageManager;
4
4
  checks: ("audit" | "outdated")[];
5
5
  depGroups: ("prod" | "dev" | "optional")[];
6
- auditLevelMapping: import("./config").AuditSeverity;
6
+ auditLevelMapping: import("./config.js").AuditSeverity;
7
7
  packageJsonPaths: string[] | {
8
8
  autoSearch: true;
9
9
  };
@@ -0,0 +1,17 @@
1
+ import { jsPackagesPluginConfigSchema, } from './config.js';
2
+ import { derivePackageManager } from './package-managers/derive-package-manager.js';
3
+ import { packageManagers } from './package-managers/package-managers.js';
4
+ export async function normalizeConfig(config) {
5
+ const jsPackagesPluginConfig = jsPackagesPluginConfigSchema.parse(config ?? {});
6
+ const { packageManager, dependencyGroups: dependencyGroupsCfg = [], checks: checksCfg = [], ...jsPackagesPluginConfigRest } = jsPackagesPluginConfig;
7
+ const checks = [...new Set(checksCfg)];
8
+ const depGroups = [...new Set(dependencyGroupsCfg)];
9
+ const pm = packageManagers[packageManager ?? (await derivePackageManager())];
10
+ return {
11
+ ...jsPackagesPluginConfigRest,
12
+ packageManager: pm,
13
+ checks,
14
+ depGroups,
15
+ };
16
+ }
17
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../packages/plugin-js-packages/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAA+B;IACnE,MAAM,sBAAsB,GAAG,4BAA4B,CAAC,KAAK,CAC/D,MAAM,IAAI,EAAE,CACb,CAAC;IAEF,MAAM,EACJ,cAAc,EACd,gBAAgB,EAAE,mBAAmB,GAAG,EAAE,EAC1C,MAAM,EAAE,SAAS,GAAG,EAAE,EACtB,GAAG,0BAA0B,EAC9B,GAAG,sBAAsB,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,eAAe,CAAC,cAAc,IAAI,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,GAAG,0BAA0B;QAC7B,cAAc,EAAE,EAAE;QAClB,MAAM;QACN,SAAS;KACV,CAAC;AACJ,CAAC"}