@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-managers.js","sourceRoot":"","sources":["../../../../../../packages/plugin-js-packages/src/lib/package-managers/package-managers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,CAAC,MAAM,eAAe,GAA6C;IACvE,GAAG,EAAE,iBAAiB;IACtB,cAAc,EAAE,oBAAoB;IACpC,aAAa,EAAE,oBAAoB;IACnC,IAAI,EAAE,kBAAkB;CACzB,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { AuditResult } from '../../runner/audit/types';
1
+ import type { AuditResult } from '../../runner/audit/types.js';
2
2
  export declare function pnpmToAuditResult(output: string): AuditResult;
3
3
  export declare function pnpmToDirectDependency(path: string): string | true;
@@ -0,0 +1,34 @@
1
+ import { getVulnerabilitiesTotal } from '../../runner/audit/utils.js';
2
+ import { filterOutWarnings } from './utils.js';
3
+ export function pnpmToAuditResult(output) {
4
+ const pnpmResult = JSON.parse(filterOutWarnings(output));
5
+ const vulnerabilities = Object.values(pnpmResult.advisories).map(({ module_name: name, id, title, url, severity, vulnerable_versions: versionRange, recommendation: fixInformation, findings, }) => {
6
+ const path = findings[0]?.paths[0];
7
+ return {
8
+ name,
9
+ id,
10
+ title,
11
+ url,
12
+ severity,
13
+ versionRange,
14
+ directDependency: path == null ? true : pnpmToDirectDependency(path),
15
+ fixInformation,
16
+ };
17
+ });
18
+ return {
19
+ vulnerabilities,
20
+ summary: {
21
+ ...pnpmResult.metadata.vulnerabilities,
22
+ total: getVulnerabilitiesTotal(pnpmResult.metadata.vulnerabilities),
23
+ },
24
+ };
25
+ }
26
+ export function pnpmToDirectDependency(path) {
27
+ // the format is ". > <direct dependency>@<version> > ... > <current dependency>@<version>"
28
+ const deps = path.split(' > ').slice(1);
29
+ if (deps.length <= 1) {
30
+ return true;
31
+ }
32
+ return deps[0]?.split('@')[0] ?? true;
33
+ }
34
+ //# sourceMappingURL=audit-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-result.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/pnpm/audit-result.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,iBAAiB,CAAC,MAAM,CAAC,CACH,CAAC;IAEzB,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAC9D,CAAC,EACC,WAAW,EAAE,IAAI,EACjB,EAAE,EACF,KAAK,EACL,GAAG,EACH,QAAQ,EACR,mBAAmB,EAAE,YAAY,EACjC,cAAc,EAAE,cAAc,EAC9B,QAAQ,GACT,EAAiB,EAAE;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAEnC,OAAO;YACL,IAAI;YACJ,EAAE;YACF,KAAK;YACL,GAAG;YACH,QAAQ;YACR,YAAY;YACZ,gBAAgB,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACpE,cAAc;SACf,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO;QACL,eAAe;QACf,OAAO,EAAE;YACP,GAAG,UAAU,CAAC,QAAQ,CAAC,eAAe;YACtC,KAAK,EAAE,uBAAuB,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC;SACpE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,2FAA2F;IAC3F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxC,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { OutdatedResult } from '../../runner/outdated/types';
1
+ import type { OutdatedResult } from '../../runner/outdated/types.js';
2
2
  export declare function pnpmToOutdatedResult(output: string): OutdatedResult;
@@ -0,0 +1,12 @@
1
+ import { objectToEntries } from '@code-pushup/utils';
2
+ import { filterOutWarnings } from './utils.js';
3
+ export function pnpmToOutdatedResult(output) {
4
+ const pnpmOutdated = JSON.parse(filterOutWarnings(output));
5
+ return objectToEntries(pnpmOutdated).map(([name, { current, latest, dependencyType: type }]) => ({
6
+ name,
7
+ current,
8
+ latest,
9
+ type,
10
+ }));
11
+ }
12
+ //# sourceMappingURL=outdated-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated-result.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/pnpm/outdated-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,iBAAiB,CAAC,MAAM,CAAC,CACA,CAAC;IAE5B,OAAO,eAAe,CAAC,YAAY,CAAC,CAAC,GAAG,CACtC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI;QACJ,OAAO;QACP,MAAM;QACN,IAAI;KACL,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { PackageManager } from '../types';
1
+ import type { PackageManager } from '../types.js';
2
2
  export declare const pnpmPackageManager: PackageManager;
@@ -0,0 +1,49 @@
1
+ import { objectToKeys } from '@code-pushup/utils';
2
+ import { filterAuditResult } from '../../runner/utils.js';
3
+ import { COMMON_AUDIT_ARGS, COMMON_OUTDATED_ARGS } from '../constants.js';
4
+ import { pnpmToAuditResult } from './audit-result.js';
5
+ import { pnpmToOutdatedResult } from './outdated-result.js';
6
+ const pnpmDependencyOptions = {
7
+ prod: ['--prod', '--no-optional'],
8
+ dev: ['--dev', '--no-optional'],
9
+ optional: [],
10
+ };
11
+ export const pnpmPackageManager = {
12
+ slug: 'pnpm',
13
+ name: 'pnpm',
14
+ command: 'pnpm',
15
+ icon: 'pnpm',
16
+ docs: {
17
+ homepage: 'https://pnpm.io/pnpm-cli',
18
+ audit: 'https://pnpm.io/cli/audit/',
19
+ outdated: 'https://pnpm.io/cli/outdated',
20
+ },
21
+ audit: {
22
+ getCommandArgs: groupDep => [
23
+ ...COMMON_AUDIT_ARGS,
24
+ ...pnpmDependencyOptions[groupDep],
25
+ ],
26
+ ignoreExitCode: true,
27
+ unifyResult: pnpmToAuditResult,
28
+ // optional dependencies don't have an exclusive option so they need duplicates filtered out
29
+ postProcessResult: (results) => {
30
+ const depGroups = objectToKeys(results);
31
+ const prodFilter = results.optional && results.prod
32
+ ? filterAuditResult(results.optional, 'id', results.prod)
33
+ : results.optional;
34
+ const devFilter = prodFilter && results.dev
35
+ ? filterAuditResult(prodFilter, 'id', results.dev)
36
+ : results.optional;
37
+ return {
38
+ ...(depGroups.includes('prod') && { prod: results.prod }),
39
+ ...(depGroups.includes('dev') && { dev: results.dev }),
40
+ ...(results.optional && { optional: devFilter }),
41
+ };
42
+ },
43
+ },
44
+ outdated: {
45
+ commandArgs: COMMON_OUTDATED_ARGS,
46
+ unifyResult: pnpmToOutdatedResult,
47
+ },
48
+ };
49
+ //# sourceMappingURL=pnpm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnpm.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/pnpm/pnpm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,qBAAqB,GAAsC;IAC/D,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;IACjC,GAAG,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE;QACJ,QAAQ,EAAE,0BAA0B;QACpC,KAAK,EAAE,4BAA4B;QACnC,QAAQ,EAAE,8BAA8B;KACzC;IACD,KAAK,EAAE;QACL,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1B,GAAG,iBAAiB;YACpB,GAAG,qBAAqB,CAAC,QAAQ,CAAC;SACnC;QACD,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,iBAAiB;QAC9B,4FAA4F;QAC5F,iBAAiB,EAAE,CAAC,OAAqB,EAAE,EAAE;YAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,UAAU,GACd,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI;gBAC9B,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;gBACzD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACvB,MAAM,SAAS,GACb,UAAU,IAAI,OAAO,CAAC,GAAG;gBACvB,CAAC,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;gBAClD,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YAEvB,OAAO;gBACL,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;gBACzD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;gBACtD,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC;KACF;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,oBAAoB;KAClC;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { PackageAuditLevel } from '../../config';
2
- import type { DependencyGroupLong } from '../../runner/outdated/types';
1
+ import type { PackageAuditLevel } from '../../config.js';
2
+ import type { DependencyGroupLong } from '../../runner/outdated/types.js';
3
3
  export type PnpmAuditAdvisory = {
4
4
  module_name: string;
5
5
  id: number;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/pnpm/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export const filterOutWarnings = (output) => output
2
+ .split('\n')
3
+ .filter(line => !line.trim().startsWith('WARN'))
4
+ .join('\n');
5
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/pnpm/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAU,EAAE,CAC1D,MAAM;KACH,KAAK,CAAC,IAAI,CAAC;KACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KAC/C,IAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaterialIcon } from '@code-pushup/models';
2
- import type { DependencyGroup, PackageManagerId } from '../config';
3
- import type { AuditResult } from '../runner/audit/types';
4
- import type { OutdatedResult } from '../runner/outdated/types';
2
+ import type { DependencyGroup, PackageManagerId } from '../config.js';
3
+ import type { AuditResult } from '../runner/audit/types.js';
4
+ import type { OutdatedResult } from '../runner/outdated/types.js';
5
5
  export type AuditResults = Partial<Record<DependencyGroup, AuditResult>>;
6
6
  export type PackageManager = {
7
7
  slug: PackageManagerId;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugin-js-packages/src/lib/package-managers/types.ts"],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- import type { AuditResult } from '../../runner/audit/types';
1
+ import type { AuditResult } from '../../runner/audit/types.js';
2
2
  export declare function yarnv1ToAuditResult(output: string): AuditResult;
@@ -0,0 +1,36 @@
1
+ import { fromJsonLines } from '@code-pushup/utils';
2
+ import { filterAuditResult } from '../../runner/utils.js';
3
+ export function yarnv1ToAuditResult(output) {
4
+ const yarnv1Result = fromJsonLines(output);
5
+ const [yarnv1Advisory, yarnv1Summary] = validateYarnv1Result(yarnv1Result);
6
+ const vulnerabilities = yarnv1Advisory.map(({ data: { resolution, advisory } }) => {
7
+ const { id, path } = resolution;
8
+ const directDependency = path.slice(0, path.indexOf('>'));
9
+ const { module_name: name, title, url, severity, vulnerable_versions: versionRange, recommendation: fixInformation, } = advisory;
10
+ return {
11
+ name,
12
+ title,
13
+ id,
14
+ url,
15
+ severity,
16
+ versionRange,
17
+ directDependency: name === directDependency ? true : directDependency,
18
+ fixInformation,
19
+ };
20
+ });
21
+ const summary = {
22
+ ...yarnv1Summary.data.vulnerabilities,
23
+ total: Object.values(yarnv1Summary.data.vulnerabilities).reduce((acc, amount) => acc + amount, 0),
24
+ };
25
+ // duplicates are filtered out based on their ID
26
+ return filterAuditResult({ vulnerabilities, summary }, 'id');
27
+ }
28
+ function validateYarnv1Result(result) {
29
+ const summary = result.at(-1);
30
+ if (summary?.type !== 'auditSummary') {
31
+ throw new Error('Invalid Yarn v1 audit result - no summary found.');
32
+ }
33
+ const vulnerabilities = result.filter((item) => item.type === 'auditAdvisory');
34
+ return [vulnerabilities, summary];
35
+ }
36
+ //# sourceMappingURL=audit-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-result.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-classic/audit-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,YAAY,GAAG,aAAa,CAAwB,MAAM,CAAC,CAAC;IAClE,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAE3E,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CACxC,CAAC,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAiB,EAAE;QACpD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;QAChC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1D,MAAM,EACJ,WAAW,EAAE,IAAI,EACjB,KAAK,EACL,GAAG,EACH,QAAQ,EACR,mBAAmB,EAAE,YAAY,EACjC,cAAc,EAAE,cAAc,GAC/B,GAAG,QAAQ,CAAC;QAEb,OAAO;YACL,IAAI;YACJ,KAAK;YACL,EAAE;YACF,GAAG;YACH,QAAQ;YACR,YAAY;YACZ,gBAAgB,EAAE,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;YACrE,cAAc;SACf,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe;QACrC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAC7D,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EAC7B,CAAC,CACF;KACF,CAAC;IAEF,gDAAgD;IAChD,OAAO,iBAAiB,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,OAAO,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CACnC,CAAC,IAAI,EAA+B,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CACrE,CAAC;IAEF,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { OutdatedDependency } from '../../runner/outdated/types';
2
- import type { Yarnv1FieldName } from './types';
1
+ import type { OutdatedDependency } from '../../runner/outdated/types.js';
2
+ import type { Yarnv1FieldName } from './types.js';
3
3
  export declare const outdatedtoFieldMapper: Record<keyof OutdatedDependency, Yarnv1FieldName>;
4
4
  export declare const REQUIRED_OUTDATED_FIELDS: Yarnv1FieldName[];
@@ -0,0 +1,14 @@
1
+ export const outdatedtoFieldMapper = {
2
+ name: 'Package',
3
+ current: 'Current',
4
+ latest: 'Latest',
5
+ type: 'Package Type',
6
+ url: 'URL',
7
+ };
8
+ export const REQUIRED_OUTDATED_FIELDS = [
9
+ 'Package',
10
+ 'Current',
11
+ 'Latest',
12
+ 'Package Type',
13
+ ];
14
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-classic/constants.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAG9B;IACF,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,SAAS;IACT,SAAS;IACT,QAAQ;IACR,cAAc;CACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { OutdatedDependency, OutdatedResult } from '../../runner/outdated/types';
1
+ import type { OutdatedDependency, OutdatedResult } from '../../runner/outdated/types.js';
2
2
  export declare function yarnv1ToOutdatedResult(output: string): OutdatedResult;
3
3
  export declare function validateOutdatedFields(head: string[]): boolean;
4
4
  export declare function getOutdatedFieldIndexes(all: string[]): Record<keyof OutdatedDependency, number>;
@@ -0,0 +1,39 @@
1
+ import { fromJsonLines, objectFromEntries, objectToEntries, objectToKeys, } from '@code-pushup/utils';
2
+ import { REQUIRED_OUTDATED_FIELDS, outdatedtoFieldMapper, } from './constants.js';
3
+ import { yarnv1FieldNames, } from './types.js';
4
+ export function yarnv1ToOutdatedResult(output) {
5
+ const yarnv1Outdated = fromJsonLines(output);
6
+ const fields = yarnv1Outdated[1].data.head;
7
+ const dependencies = yarnv1Outdated[1].data.body;
8
+ // no outdated dependencies
9
+ if (dependencies.length === 0) {
10
+ return [];
11
+ }
12
+ // map dynamic fields
13
+ validateOutdatedFields(fields);
14
+ const indexMapping = getOutdatedFieldIndexes(fields);
15
+ return dependencies.map(dep => objectFromEntries(objectToKeys(indexMapping)
16
+ .map(field => [field, dep[indexMapping[field]]])
17
+ .filter((entry) => entry[1] != null)));
18
+ }
19
+ export function validateOutdatedFields(head) {
20
+ const relevantFields = head.filter(isYarnv1FieldName);
21
+ if (hasAllRequiredFields(relevantFields)) {
22
+ return true;
23
+ }
24
+ throw new Error(`Yarn v1 outdated: Template [${head.join(', ')}] does not contain all required fields [${yarnv1FieldNames.join(', ')}]`);
25
+ }
26
+ function isYarnv1FieldName(value) {
27
+ const names = yarnv1FieldNames;
28
+ return names.includes(value);
29
+ }
30
+ function hasAllRequiredFields(head) {
31
+ return REQUIRED_OUTDATED_FIELDS.every(field => head.includes(field));
32
+ }
33
+ export function getOutdatedFieldIndexes(all) {
34
+ return objectFromEntries(objectToEntries(outdatedtoFieldMapper).map(([outdatedField, yarnField]) => [
35
+ outdatedField,
36
+ all.indexOf(yarnField),
37
+ ]));
38
+ }
39
+ //# sourceMappingURL=outdated-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated-result.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-classic/outdated-result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,MAAM,cAAc,GAAG,aAAa,CAA2B,MAAM,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAEjD,2BAA2B;IAC3B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB;IACrB,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO,YAAY,CAAC,GAAG,CACrB,GAAG,CAAC,EAAE,CACJ,iBAAiB,CACf,YAAY,CAAC,YAAY,CAAC;SACvB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAU,CAAC;SACxD,MAAM,CACL,CAAC,KAAK,EAA+C,EAAE,CACrD,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CACnB,CACkB,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACnD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtD,IAAI,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,IAAI,CACtC,IAAI,CACL,2CAA2C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC3E,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,KAAK,GAAsB,gBAAgB,CAAC;IAClD,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAuB;IACnD,OAAO,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAa;IACnD,OAAO,iBAAiB,CACtB,eAAe,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC;QACzE,aAAa;QACb,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;KACvB,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { PackageAuditLevel } from '../../config';
1
+ import type { PackageAuditLevel } from '../../config.js';
2
2
  export type Yarnv1AuditAdvisory = {
3
3
  type: 'auditAdvisory';
4
4
  data: {
@@ -0,0 +1,8 @@
1
+ export const yarnv1FieldNames = [
2
+ 'Package',
3
+ 'Current',
4
+ 'Latest',
5
+ 'Package Type',
6
+ 'URL',
7
+ ];
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-classic/types.ts"],"names":[],"mappings":"AAkCA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,SAAS;IACT,QAAQ;IACR,cAAc;IACd,KAAK;CACG,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { PackageManager } from '../types';
1
+ import type { PackageManager } from '../types.js';
2
2
  export declare const yarnv1PackageManager: PackageManager;
@@ -0,0 +1,29 @@
1
+ import { dependencyGroupToLong } from '../../constants.js';
2
+ import { COMMON_AUDIT_ARGS, COMMON_OUTDATED_ARGS } from '../constants.js';
3
+ import { yarnv1ToAuditResult } from './audit-result.js';
4
+ import { yarnv1ToOutdatedResult } from './outdated-result.js';
5
+ export const yarnv1PackageManager = {
6
+ slug: 'yarn-classic',
7
+ name: 'Yarn v1',
8
+ command: 'yarn',
9
+ icon: 'yarn',
10
+ docs: {
11
+ homepage: 'https://classic.yarnpkg.com/docs/',
12
+ audit: 'https://classic.yarnpkg.com/docs/cli/audit',
13
+ outdated: 'https://classic.yarnpkg.com/docs/cli/outdated/',
14
+ },
15
+ audit: {
16
+ getCommandArgs: groupDep => [
17
+ ...COMMON_AUDIT_ARGS,
18
+ '--groups',
19
+ dependencyGroupToLong[groupDep],
20
+ ],
21
+ ignoreExitCode: true,
22
+ unifyResult: yarnv1ToAuditResult,
23
+ },
24
+ outdated: {
25
+ commandArgs: COMMON_OUTDATED_ARGS,
26
+ unifyResult: yarnv1ToOutdatedResult,
27
+ },
28
+ };
29
+ //# sourceMappingURL=yarn-classic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarn-classic.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-classic/yarn-classic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE;QACJ,QAAQ,EAAE,mCAAmC;QAC7C,KAAK,EAAE,4CAA4C;QACnD,QAAQ,EAAE,gDAAgD;KAC3D;IACD,KAAK,EAAE;QACL,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1B,GAAG,iBAAiB;YACpB,UAAU;YACV,qBAAqB,CAAC,QAAQ,CAAC;SAChC;QACD,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,mBAAmB;KACjC;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,sBAAsB;KACpC;CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { AuditResult } from '../../runner/audit/types';
1
+ import type { AuditResult } from '../../runner/audit/types.js';
2
2
  export declare function yarnv2ToAuditResult(output: string): AuditResult;
@@ -0,0 +1,25 @@
1
+ import { getVulnerabilitiesTotal } from '../../runner/audit/utils.js';
2
+ export function yarnv2ToAuditResult(output) {
3
+ const yarnv2Audit = JSON.parse(output);
4
+ const vulnerabilities = Object.values(yarnv2Audit.advisories).map(({ module_name: name, severity, title, url, vulnerable_versions: versionRange, recommendation: fixInformation, findings, }) => {
5
+ // TODO missing example of an indirect dependency to verify this
6
+ const directDep = findings[0]?.paths[0];
7
+ return {
8
+ name,
9
+ severity,
10
+ title,
11
+ url,
12
+ versionRange,
13
+ fixInformation,
14
+ directDependency: directDep != null && directDep !== name ? directDep : true,
15
+ };
16
+ });
17
+ return {
18
+ vulnerabilities,
19
+ summary: {
20
+ ...yarnv2Audit.metadata.vulnerabilities,
21
+ total: getVulnerabilitiesTotal(yarnv2Audit.metadata.vulnerabilities),
22
+ },
23
+ };
24
+ }
25
+ //# sourceMappingURL=audit-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-result.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-modern/audit-result.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA0B,CAAC;IAEhE,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,CAC/D,CAAC,EACC,WAAW,EAAE,IAAI,EACjB,QAAQ,EACR,KAAK,EACL,GAAG,EACH,mBAAmB,EAAE,YAAY,EACjC,cAAc,EAAE,cAAc,EAC9B,QAAQ,GACT,EAAiB,EAAE;QAClB,gEAAgE;QAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK;YACL,GAAG;YACH,YAAY;YACZ,cAAc;YACd,gBAAgB,EACd,SAAS,IAAI,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC7D,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,OAAO;QACL,eAAe;QACf,OAAO,EAAE;YACP,GAAG,WAAW,CAAC,QAAQ,CAAC,eAAe;YACvC,KAAK,EAAE,uBAAuB,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC;SACrE;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { OutdatedResult } from '../../runner/outdated/types';
1
+ import type { OutdatedResult } from '../../runner/outdated/types.js';
2
2
  export declare function yarnv2ToOutdatedResult(output: string): OutdatedResult;
@@ -0,0 +1,10 @@
1
+ export function yarnv2ToOutdatedResult(output) {
2
+ const npmOutdated = JSON.parse(output);
3
+ return npmOutdated.map(({ name, current, latest, type }) => ({
4
+ name,
5
+ current,
6
+ latest,
7
+ type,
8
+ }));
9
+ }
10
+ //# sourceMappingURL=outdated-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated-result.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-modern/outdated-result.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA6B,CAAC;IAEnE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI;QACJ,OAAO;QACP,MAAM;QACN,IAAI;KACL,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,5 +1,5 @@
1
- import type { PackageAuditLevel } from '../../config';
2
- import type { DependencyGroupLong } from '../../runner/outdated/types';
1
+ import type { PackageAuditLevel } from '../../config.js';
2
+ import type { DependencyGroupLong } from '../../runner/outdated/types.js';
3
3
  export type Yarnv2AuditAdvisory = {
4
4
  module_name: string;
5
5
  severity: PackageAuditLevel;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-modern/types.ts"],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- import type { PackageManager } from '../types';
1
+ import type { PackageManager } from '../types.js';
2
2
  export declare const yarnv2PackageManager: PackageManager;
@@ -0,0 +1,36 @@
1
+ import { COMMON_AUDIT_ARGS, COMMON_OUTDATED_ARGS } from '../constants.js';
2
+ import { yarnv2ToAuditResult } from './audit-result.js';
3
+ import { yarnv2ToOutdatedResult } from './outdated-result.js';
4
+ // see https://github.com/yarnpkg/berry/blob/master/packages/plugin-npm-cli/sources/npmAuditTypes.ts#L5
5
+ const yarnv2EnvironmentOptions = {
6
+ prod: 'production',
7
+ dev: 'development',
8
+ optional: '',
9
+ };
10
+ export const yarnv2PackageManager = {
11
+ slug: 'yarn-modern',
12
+ name: 'yarn-modern',
13
+ command: 'yarn',
14
+ icon: 'yarn',
15
+ docs: {
16
+ homepage: 'https://yarnpkg.com/getting-started',
17
+ audit: 'https://yarnpkg.com/cli/npm/audit',
18
+ outdated: 'https://github.com/mskelton/yarn-plugin-outdated',
19
+ },
20
+ audit: {
21
+ getCommandArgs: groupDep => [
22
+ 'npm',
23
+ ...COMMON_AUDIT_ARGS,
24
+ '--environment',
25
+ yarnv2EnvironmentOptions[groupDep],
26
+ ],
27
+ supportedDepGroups: ['prod', 'dev'], // Yarn v2 does not support audit for optional dependencies
28
+ unifyResult: yarnv2ToAuditResult,
29
+ ignoreExitCode: true,
30
+ },
31
+ outdated: {
32
+ commandArgs: COMMON_OUTDATED_ARGS,
33
+ unifyResult: yarnv2ToOutdatedResult,
34
+ },
35
+ };
36
+ //# sourceMappingURL=yarn-modern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarn-modern.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/package-managers/yarn-modern/yarn-modern.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,uGAAuG;AACvG,MAAM,wBAAwB,GAAoC;IAChE,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,aAAa;IAClB,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE;QACJ,QAAQ,EAAE,qCAAqC;QAC/C,KAAK,EAAE,mCAAmC;QAC1C,QAAQ,EAAE,kDAAkD;KAC7D;IACD,KAAK,EAAE;QACL,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC1B,KAAK;YACL,GAAG,iBAAiB;YACpB,eAAe;YACf,wBAAwB,CAAC,QAAQ,CAAC;SACnC;QACD,kBAAkB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,2DAA2D;QAChG,WAAW,EAAE,mBAAmB;QAChC,cAAc,EAAE,IAAI;KACrB;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,sBAAsB;KACpC;CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import type { PackageAuditLevel } from '../../config';
1
+ import type { PackageAuditLevel } from '../../config.js';
2
2
  export declare const auditScoreModifiers: Record<PackageAuditLevel, number>;
@@ -0,0 +1,10 @@
1
+ export const auditScoreModifiers = {
2
+ /* eslint-disable @typescript-eslint/no-magic-numbers */
3
+ critical: 1,
4
+ high: 0.1,
5
+ moderate: 0.05,
6
+ low: 0.02,
7
+ info: 0.01,
8
+ /* eslint-enable @typescript-eslint/no-magic-numbers */
9
+ };
10
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/audit/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAsC;IACpE,wDAAwD;IACxD,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,uDAAuD;CACxD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AuditOutput, Issue } from '@code-pushup/models';
2
- import { type AuditSeverity, type DependencyGroup, type PackageManagerId } from '../../config';
3
- import type { AuditResult, AuditSummary, Vulnerability } from './types';
2
+ import { type AuditSeverity, type DependencyGroup, type PackageManagerId } from '../../config.js';
3
+ import type { AuditResult, AuditSummary, Vulnerability } from './types.js';
4
4
  export declare function auditResultToAuditOutput(result: AuditResult, id: PackageManagerId, depGroup: DependencyGroup, auditLevelMapping: AuditSeverity): AuditOutput;
5
5
  export declare function calculateAuditScore(stats: AuditSummary): number;
6
6
  export declare function summaryToDisplayValue(summary: AuditSummary): string;
@@ -0,0 +1,63 @@
1
+ import { md } from 'build-md';
2
+ import { objectToEntries } from '@code-pushup/utils';
3
+ import { packageAuditLevels, } from '../../config.js';
4
+ import { auditScoreModifiers } from './constants.js';
5
+ export function auditResultToAuditOutput(result, id, depGroup, auditLevelMapping) {
6
+ const issues = vulnerabilitiesToIssues(result.vulnerabilities, auditLevelMapping);
7
+ return {
8
+ slug: `${id}-audit-${depGroup}`,
9
+ score: calculateAuditScore(result.summary),
10
+ value: result.summary.total,
11
+ displayValue: summaryToDisplayValue(result.summary),
12
+ details: { issues },
13
+ };
14
+ }
15
+ export function calculateAuditScore(stats) {
16
+ if (stats.total === 0) {
17
+ return 1;
18
+ }
19
+ return objectToEntries(stats).reduce((score, [level, vulnerabilities]) => {
20
+ if (level === 'total') {
21
+ return score;
22
+ }
23
+ const reducedScore = score - auditScoreModifiers[level] * vulnerabilities;
24
+ return Math.max(reducedScore, 0);
25
+ }, 1);
26
+ }
27
+ export function summaryToDisplayValue(summary) {
28
+ if (summary.total === 0) {
29
+ return '0 vulnerabilities';
30
+ }
31
+ const vulnerabilityStats = packageAuditLevels
32
+ .map(level => (summary[level] > 0 ? `${summary[level]} ${level}` : ''))
33
+ .filter(text => text !== '')
34
+ .join(', ');
35
+ return `${summary.total} ${summary.total === 1 ? 'vulnerability' : 'vulnerabilities'} (${vulnerabilityStats})`;
36
+ }
37
+ export function vulnerabilitiesToIssues(vulnerabilities, auditLevelMapping) {
38
+ if (vulnerabilities.length === 0) {
39
+ return [];
40
+ }
41
+ return vulnerabilities.map((detail) => {
42
+ const versionRange = detail.versionRange === '*'
43
+ ? md `${md.bold('all')} versions`
44
+ : md `versions ${md.bold(detail.versionRange)}`;
45
+ const directDependency = typeof detail.directDependency === 'string' &&
46
+ detail.directDependency !== ''
47
+ ? md.code(detail.directDependency)
48
+ : '';
49
+ const depHierarchy = directDependency
50
+ ? md `${directDependency}'s dependency ${md.code(detail.name)}`
51
+ : md `${md.code(detail.name)} dependency`;
52
+ const vulnerabilitySummary = md `has a ${md.bold(detail.severity)} vulnerability in ${versionRange}.`;
53
+ const fixInfo = detail.fixInformation ? ` ${detail.fixInformation}` : '';
54
+ const additionalInfo = detail.title != null && detail.url != null
55
+ ? md ` More information: ${md.link(detail.url, detail.title)}`
56
+ : '';
57
+ return {
58
+ message: md `${depHierarchy} ${vulnerabilitySummary}${fixInfo}${additionalInfo}`.toString(),
59
+ severity: auditLevelMapping[detail.severity],
60
+ };
61
+ });
62
+ }
63
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/audit/transform.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PackageAuditLevel } from '../../config';
1
+ import type { PackageAuditLevel } from '../../config.js';
2
2
  export type Vulnerability = {
3
3
  name: string;
4
4
  id?: number;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../packages/plugin-js-packages/src/lib/runner/audit/types.ts"],"names":[],"mappings":""}