@ploaness/governance 1.7.0 → 1.8.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 (45) hide show
  1. package/dist/compliance-report-assets.d.ts +20 -0
  2. package/dist/compliance-report-assets.d.ts.map +1 -0
  3. package/dist/compliance-report-assets.js +230 -0
  4. package/dist/compliance-report-assets.js.map +1 -0
  5. package/dist/compliance-report-html.d.ts +18 -0
  6. package/dist/compliance-report-html.d.ts.map +1 -0
  7. package/dist/compliance-report-html.js +365 -0
  8. package/dist/compliance-report-html.js.map +1 -0
  9. package/dist/compliance-report-markup.d.ts +62 -0
  10. package/dist/compliance-report-markup.d.ts.map +1 -0
  11. package/dist/compliance-report-markup.js +118 -0
  12. package/dist/compliance-report-markup.js.map +1 -0
  13. package/dist/compliance-report-outline.d.ts +32 -0
  14. package/dist/compliance-report-outline.d.ts.map +1 -0
  15. package/dist/compliance-report-outline.js +124 -0
  16. package/dist/compliance-report-outline.js.map +1 -0
  17. package/dist/compliance-report.d.ts +136 -0
  18. package/dist/compliance-report.d.ts.map +1 -0
  19. package/dist/compliance-report.js +241 -0
  20. package/dist/compliance-report.js.map +1 -0
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +6 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/license-allowlist.d.ts +14 -0
  26. package/dist/license-allowlist.d.ts.map +1 -1
  27. package/dist/license-allowlist.js +28 -9
  28. package/dist/license-allowlist.js.map +1 -1
  29. package/dist/license-inventory.d.ts +25 -0
  30. package/dist/license-inventory.d.ts.map +1 -0
  31. package/dist/license-inventory.js +41 -0
  32. package/dist/license-inventory.js.map +1 -0
  33. package/dist/pdf-outline.d.ts +7 -0
  34. package/dist/pdf-outline.d.ts.map +1 -0
  35. package/dist/pdf-outline.js +69 -0
  36. package/dist/pdf-outline.js.map +1 -0
  37. package/dist/sbom-policy.d.ts +17 -0
  38. package/dist/sbom-policy.d.ts.map +1 -1
  39. package/dist/sbom-policy.js +76 -1
  40. package/dist/sbom-policy.js.map +1 -1
  41. package/dist/vulnerability-policy.d.ts +24 -0
  42. package/dist/vulnerability-policy.d.ts.map +1 -1
  43. package/dist/vulnerability-policy.js +33 -6
  44. package/dist/vulnerability-policy.js.map +1 -1
  45. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance-report-outline.d.ts","sourceRoot":"","sources":["../src/compliance-report-outline.ts"],"names":[],"mappings":"AAqGA;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,KAAG,MAA8D,CAAA;AAEtG;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,EAAE,MAAM,MAAM,KAAG,MAE0B,CAAA;AAO7E;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,MAYpB,CAAA;AAEf;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,IAAI,MAAM,KAAG,MAA4C,CAAA;AAE1F;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,WAAW,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAQ9F,CAAA"}
@@ -0,0 +1,124 @@
1
+ // The report's numbered outline: one definition that both the headings and the table of contents read,
2
+ // so a section can never be numbered one way in the text and another in the contents.
3
+ const OUTLINE = [
4
+ {
5
+ id: 'summary',
6
+ title: 'Executive summary',
7
+ subsections: [
8
+ { id: 'key-figures', title: 'Key figures' },
9
+ { id: 'license-classes', title: 'License classes' },
10
+ { id: 'common-licenses', title: 'Most common licenses' },
11
+ { id: 'severities', title: 'Advisories by severity' },
12
+ { id: 'findings', title: 'Findings' },
13
+ ],
14
+ },
15
+ {
16
+ id: 'policy',
17
+ title: 'License policy',
18
+ subsections: [
19
+ { id: 'policy-permissive', title: 'Permissive licenses' },
20
+ { id: 'policy-weak-copyleft', title: 'Weak copyleft licenses' },
21
+ { id: 'policy-outside', title: 'Licenses outside the policy' },
22
+ ],
23
+ },
24
+ {
25
+ id: 'copyleft',
26
+ title: 'Copyleft and policy review',
27
+ subsections: [
28
+ { id: 'review-weak-copyleft', title: 'Weak copyleft' },
29
+ { id: 'review-outside', title: 'Outside the policy' },
30
+ ],
31
+ },
32
+ {
33
+ id: 'vulnerabilities',
34
+ title: 'Known vulnerabilities',
35
+ subsections: [
36
+ { id: 'advisories-open', title: 'Unresolved at or above the threshold' },
37
+ { id: 'advisories-excused', title: 'Excused by a recorded exception' },
38
+ { id: 'advisories-stale', title: 'Exceptions that no longer match' },
39
+ { id: 'advisories-below', title: 'Below the threshold' },
40
+ ],
41
+ },
42
+ { id: 'inventory', title: 'Package inventory', subsections: [] },
43
+ {
44
+ id: 'notices',
45
+ title: 'Third-party notices',
46
+ subsections: [
47
+ { id: 'notices-missing', title: 'Packages without a license file' },
48
+ { id: 'notices-texts', title: 'License texts' },
49
+ ],
50
+ },
51
+ {
52
+ id: 'provenance',
53
+ title: 'Provenance and reproduction',
54
+ subsections: [
55
+ { id: 'provenance-source', title: 'Source' },
56
+ { id: 'provenance-scope', title: 'Scope' },
57
+ ],
58
+ },
59
+ ];
60
+ const NUMBERED = new Map(OUTLINE.flatMap((section, index) => {
61
+ const number = String(index + 1);
62
+ return [
63
+ [section.id, { number, title: section.title }],
64
+ ...section.subsections.map((entry, position) => [
65
+ entry.id,
66
+ { number: `${number}.${String(position + 1)}`, title: entry.title },
67
+ ]),
68
+ ];
69
+ }));
70
+ const numberedOf = (id) => {
71
+ const found = NUMBERED.get(id);
72
+ if (found === undefined) {
73
+ throw new Error(`the report outline has no entry "${id}"`);
74
+ }
75
+ return found;
76
+ };
77
+ const headingText = (entry) => `<span class="adnum">${entry.number}.</span><span class="adtext">${entry.title}</span>`;
78
+ /**
79
+ * A numbered subsection heading.
80
+ * @param id the outline entry.
81
+ * @returns the heading element.
82
+ */
83
+ export const subheading = (id) => `<h3 id="${id}">${headingText(numberedOf(id))}</h3>`;
84
+ /**
85
+ * A numbered top-level section.
86
+ * @param id the outline section.
87
+ * @param body the section's markup after its heading.
88
+ * @returns the section element.
89
+ */
90
+ export const section = (id, body) => `<section class="sect1" id="${id}" aria-labelledby="${id}-title">` +
91
+ `<h2 id="${id}-title">${headingText(numberedOf(id))}</h2>${body}</section>`;
92
+ // The leader and page slots are filled only in print, where the contents list carries page numbers.
93
+ const tocLink = (id) => `<a href="#${id}">${headingText(numberedOf(id))}<span class="leader"></span><span class="page" data-for="${id}">` +
94
+ '</span></a>';
95
+ /**
96
+ * The table of contents, read from the same outline as the headings.
97
+ * @returns the contents navigation.
98
+ */
99
+ export const tableOfContents = () => '<nav id="toc" aria-labelledby="toctitle"><div id="toctitle">Table of Contents</div><ul class="sectlevel1">' +
100
+ OUTLINE.map((entry) => `<li>${tocLink(entry.id)}` +
101
+ (entry.subsections.length > 0
102
+ ? `<ul class="sectlevel2">${entry.subsections
103
+ .map((child) => `<li>${tocLink(child.id)}</li>`)
104
+ .join('')}</ul>`
105
+ : '') +
106
+ '</li>').join('') +
107
+ '</ul></nav>';
108
+ /**
109
+ * The cross-reference text for a section, such as "section 3".
110
+ * @param id the outline entry.
111
+ * @returns the reference text.
112
+ */
113
+ export const sectionReference = (id) => `section ${numberedOf(id).number}`;
114
+ /**
115
+ * The page of every outline entry, from the bookmarks of a printed report. A bookmark is titled with the
116
+ * heading's text, which starts with the entry's number, so the number is what is matched.
117
+ * @param bookmarks the page by bookmark title, as read from the PDF.
118
+ * @returns the page number by outline id, for every entry found.
119
+ */
120
+ export const contentsPages = (bookmarks) => new Map([...NUMBERED].flatMap(([id, entry]) => {
121
+ const page = [...bookmarks].find(([title]) => title.startsWith(`${entry.number}.${entry.title}`))?.[1];
122
+ return page === undefined ? [] : [[id, page]];
123
+ }));
124
+ //# sourceMappingURL=compliance-report-outline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance-report-outline.js","sourceRoot":"","sources":["../src/compliance-report-outline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ import { LICENSE_POLICY, type LicenseClass } from './license-allowlist.js';
2
+ import { type InventoryPackage } from './license-inventory.js';
3
+ import { type VulnerabilityClassification } from './vulnerability-policy.js';
4
+ /** One licence file a package ships, as read from its installed directory. */
5
+ export interface NoticeFile {
6
+ readonly name: string;
7
+ readonly text: string;
8
+ }
9
+ /** The licence files one installed package version ships. */
10
+ export interface PackageNotices {
11
+ readonly coordinate: string;
12
+ readonly files: readonly NoticeFile[];
13
+ }
14
+ /** Where the report's source stands. */
15
+ export interface ReportSource {
16
+ readonly commit: string;
17
+ readonly isDirty: boolean;
18
+ readonly fingerprint: string;
19
+ readonly lockfileSha256: string;
20
+ }
21
+ /** The SBOM the report embeds. */
22
+ export interface ReportSbom {
23
+ readonly sha256: string;
24
+ readonly components: number;
25
+ readonly generator: string;
26
+ }
27
+ /** Everything the report is built from. */
28
+ export interface ComplianceReportInput {
29
+ readonly projectName: string;
30
+ readonly projectDescription: string | undefined;
31
+ readonly source: ReportSource;
32
+ readonly generatedAt: string;
33
+ readonly harnessVersion: string;
34
+ readonly packages: readonly InventoryPackage[];
35
+ readonly production: readonly InventoryPackage[];
36
+ readonly directNames: readonly string[];
37
+ readonly vulnerabilities: VulnerabilityClassification;
38
+ readonly advisoryRecords: number;
39
+ readonly auditedAt: string;
40
+ readonly sbom: ReportSbom;
41
+ readonly notices: readonly PackageNotices[];
42
+ }
43
+ /** One installed package version as the report lists it. */
44
+ export interface ReportPackage {
45
+ readonly name: string;
46
+ /** Empty for a directory dependency, which pnpm reports without a version. */
47
+ readonly version: string;
48
+ readonly license: string;
49
+ readonly licenseClass: LicenseClass;
50
+ readonly isProduction: boolean;
51
+ readonly isDirect: boolean;
52
+ readonly homepage: string | undefined;
53
+ }
54
+ /** How many package versions declare one licence. */
55
+ export interface LicenseCount {
56
+ readonly license: string;
57
+ readonly licenseClass: LicenseClass;
58
+ readonly count: number;
59
+ }
60
+ /** One licence text and every distributed package version that ships it. */
61
+ export interface NoticeGroup {
62
+ readonly text: string;
63
+ readonly fileNames: readonly string[];
64
+ readonly coordinates: readonly string[];
65
+ }
66
+ /** How many advisories were reported at one severity. */
67
+ export interface SeverityCount {
68
+ readonly severity: string;
69
+ readonly count: number;
70
+ }
71
+ /** The assembled report. */
72
+ export interface ComplianceReport {
73
+ readonly projectName: string;
74
+ readonly projectDescription: string | undefined;
75
+ readonly source: ReportSource;
76
+ readonly generatedAt: string;
77
+ readonly harnessVersion: string;
78
+ readonly isCompliant: boolean;
79
+ /** Why the report is not release evidence; empty when it is. */
80
+ readonly draftReasons: readonly string[];
81
+ readonly packages: readonly ReportPackage[];
82
+ readonly productionCount: number;
83
+ readonly directCount: number;
84
+ readonly licenseCounts: readonly LicenseCount[];
85
+ readonly classCounts: Readonly<Record<LicenseClass, number>>;
86
+ readonly copyleft: readonly ReportPackage[];
87
+ readonly refused: readonly ReportPackage[];
88
+ readonly policy: typeof LICENSE_POLICY;
89
+ readonly vulnerabilities: VulnerabilityClassification;
90
+ readonly severityCounts: readonly SeverityCount[];
91
+ readonly advisoryRecords: number;
92
+ readonly auditedAt: string;
93
+ readonly sbom: ReportSbom;
94
+ readonly notices: readonly NoticeGroup[];
95
+ /** Distributed package versions whose installed directory carries no licence file. */
96
+ readonly withoutNotice: readonly string[];
97
+ }
98
+ /**
99
+ * Reflow a licence file for a proportional column. Words and their order are unchanged; only the
100
+ * fixed-width line breaks inside a paragraph are removed, and runs of spaces collapse to one.
101
+ * @param text the licence file as shipped.
102
+ * @returns the text with paragraphs separated by a blank line and kept line breaks by a newline.
103
+ */
104
+ export declare const reflowLicenseText: (text: string) => string;
105
+ /**
106
+ * Assemble the compliance report.
107
+ * @param input the inventory, the vulnerability classification and the provenance already read.
108
+ * @returns the report model the renderer prints.
109
+ */
110
+ export declare const buildComplianceReport: (input: ComplianceReportInput) => ComplianceReport;
111
+ /** Where the compliance report is written unless the command names another directory. */
112
+ export declare const DEFAULT_REPORT_OUTPUT: string;
113
+ /** The file name every compliance report starts with, which is also how a stale one is recognised. */
114
+ export declare const REPORT_FILE_PREFIX: string;
115
+ /**
116
+ * The report's file name without extension: the project and the commit it describes.
117
+ * @param projectName the root manifest's name, which may be scoped.
118
+ * @param commit the source commit.
119
+ * @returns a name safe on every filesystem.
120
+ */
121
+ export declare const reportFileStem: (projectName: string, commit: string) => string;
122
+ /**
123
+ * Parse the compliance report command grammar: no argument, or one output directory.
124
+ * @param arguments_ the arguments after the command name.
125
+ * @returns the output directory, or undefined when the arguments are not that grammar.
126
+ */
127
+ export declare const parseComplianceReportArguments: (arguments_: readonly string[]) => {
128
+ readonly output: string;
129
+ } | undefined;
130
+ /**
131
+ * The packages any workspace manifest declares, which is what makes a dependency direct.
132
+ * @param manifests every workspace manifest, as parsed JSON.
133
+ * @returns the declared package names, each once.
134
+ */
135
+ export declare const directDependencyNames: (manifests: readonly unknown[]) => readonly string[];
136
+ //# sourceMappingURL=compliance-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance-report.d.ts","sourceRoot":"","sources":["../src/compliance-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ // The compliance report on open source dependencies: the evidence behind the licence and vulnerability
2
+ // gates, assembled into one model a reviewer outside the project can read. Everything here is derived from
3
+ // values already read.
4
+ import { asRecord, readKey } from './json-shapes.js';
5
+ import { LICENSE_POLICY, licenseClassOf } from './license-allowlist.js';
6
+ import { coordinateOf } from './license-inventory.js';
7
+ import { SEVERITY_ORDER, } from './vulnerability-policy.js';
8
+ const byText = (left, right) => left.localeCompare(right);
9
+ const byName = (left, right) => left.name.localeCompare(right.name) || left.version.localeCompare(right.version);
10
+ // A directory dependency has no version, so it is identified by its name alone.
11
+ const coordinatesOf = (entry) => entry.versions.length === 0
12
+ ? [entry.name]
13
+ : entry.versions.map((version) => coordinateOf(entry.name, version));
14
+ const rowsOf = (entry) => (entry.versions.length === 0 ? [''] : entry.versions).map((version) => ({ version, entry }));
15
+ const reportPackages = (input) => {
16
+ const production = new Set(input.production.flatMap((entry) => coordinatesOf(entry)));
17
+ const direct = new Set(input.directNames);
18
+ return input.packages
19
+ .flatMap((entry) => rowsOf(entry))
20
+ .map(({ version, entry }) => ({
21
+ name: entry.name,
22
+ version,
23
+ license: entry.license,
24
+ licenseClass: licenseClassOf(entry.license),
25
+ isProduction: production.has(version.length > 0 ? coordinateOf(entry.name, version) : entry.name),
26
+ isDirect: direct.has(entry.name),
27
+ homepage: entry.homepage,
28
+ }))
29
+ .toSorted(byName);
30
+ };
31
+ const countLicenses = (packages) => [...new Set(packages.map((row) => row.license))]
32
+ .map((license) => ({
33
+ license,
34
+ licenseClass: licenseClassOf(license),
35
+ count: packages.filter((row) => row.license === license).length,
36
+ }))
37
+ .toSorted((left, right) => right.count - left.count || left.license.localeCompare(right.license));
38
+ const countClasses = (packages) => ({
39
+ permissive: packages.filter((row) => row.licenseClass === 'permissive').length,
40
+ 'weak-copyleft': packages.filter((row) => row.licenseClass === 'weak-copyleft').length,
41
+ refused: packages.filter((row) => row.licenseClass === 'refused').length,
42
+ });
43
+ // Every reported advisory, counted by severity from the most severe down, so the summary reads the way a
44
+ // reviewer triages. A severity the scale does not know is counted under its own name rather than dropped.
45
+ const countSeverities = (classification) => {
46
+ const all = [
47
+ ...classification.unsuppressed,
48
+ ...classification.suppressed.map((entry) => entry.advisory),
49
+ ...classification.belowThreshold,
50
+ ];
51
+ const known = SEVERITY_ORDER.toReversed();
52
+ const unknown = [
53
+ ...new Set(all
54
+ .map((advisory) => advisory.severity.toLowerCase())
55
+ .filter((severity) => !known.includes(severity))),
56
+ ];
57
+ return [...unknown, ...known].map((severity) => ({
58
+ severity,
59
+ count: all.filter((advisory) => advisory.severity.toLowerCase() === severity).length,
60
+ }));
61
+ };
62
+ // A line that opens a list item or a copyright statement starts a new line of its own, and so does the line
63
+ // after a heading or a ruled separator. Every other line of a paragraph continues the one before it:
64
+ // licence files are wrapped at a fixed width for a terminal, and keeping those breaks in a proportional
65
+ // column leaves every line ragged. A copyright statement names a year, (c) or the sign, so a sentence that
66
+ // merely wraps before "Copyright Holder" continues.
67
+ const LIST_ITEM = /^(?:[-*+\u{2022}]\s|\(?(?:\d{1,3}|[a-z]|[ivx]{2,4})[.)]\s)/iu;
68
+ const COPYRIGHT_LINE = /^(?:copyright\s+(?:\(c\)|\u{A9}|\d{4})|\u{A9})/iu;
69
+ const PARAGRAPH_BREAK = /\n[ \t]*\n/u;
70
+ // Licence files bundled into a Markdown document quote each licence (`> `) and title it with a heading
71
+ // (`## name`), and list the package's facts as `License: MIT` lines. The markers are markup, not words.
72
+ const QUOTE_MARKERS = /^[ \t]*(?:>[ \t]?)+/u;
73
+ const MARKDOWN_HEADING = /^#{1,6}[ \t]+/u;
74
+ const FIELD_LINE = /^[A-Z][A-Za-z]{1,20}(?: [A-Za-z]{1,20})?:[ \t]/u;
75
+ const SEPARATOR = /^[-=_*~]{3,}$/u;
76
+ const HEADING_LENGTH = 40;
77
+ const LOWERCASE = /\p{Ll}/u;
78
+ const LETTER = /\p{L}/u;
79
+ const HYPHENATED_END = /\p{L}-$/u;
80
+ const LOWERCASE_START = /^\p{Ll}/u;
81
+ // A short line with letters and no lowercase one is a heading such as PREAMBLE, not the start of a sentence.
82
+ const isHeading = (line) => line.length < HEADING_LENGTH && LETTER.test(line) && !LOWERCASE.test(line);
83
+ // The line itself announces something new: a list item, a copyright statement, a field, a heading, a rule.
84
+ const opensLine = (line) => LIST_ITEM.test(line) ||
85
+ COPYRIGHT_LINE.test(line) ||
86
+ FIELD_LINE.test(line) ||
87
+ MARKDOWN_HEADING.test(line) ||
88
+ SEPARATOR.test(line);
89
+ // The line before it stands alone, so nothing continues it: a field, a rule, a heading.
90
+ const endsLine = (previous) => FIELD_LINE.test(previous) || SEPARATOR.test(previous) || MARKDOWN_HEADING.test(previous) || isHeading(previous);
91
+ const startsLine = (previous, line) => opensLine(line) || endsLine(previous);
92
+ const joinLines = (lines, line) => {
93
+ const previous = lines.at(-1);
94
+ if (previous === undefined || startsLine(previous, line)) {
95
+ return [...lines, line];
96
+ }
97
+ // A word broken at a hyphen is rejoined without a space, so `non-` and `exclusive` read `non-exclusive`.
98
+ const separator = HYPHENATED_END.test(previous) && LOWERCASE_START.test(line) ? '' : ' ';
99
+ return [...lines.slice(0, -1), `${previous}${separator}${line}`];
100
+ };
101
+ /**
102
+ * Reflow a licence file for a proportional column. Words and their order are unchanged; only the
103
+ * fixed-width line breaks inside a paragraph are removed, and runs of spaces collapse to one.
104
+ * @param text the licence file as shipped.
105
+ * @returns the text with paragraphs separated by a blank line and kept line breaks by a newline.
106
+ */
107
+ export const reflowLicenseText = (text) => text
108
+ .replaceAll('\r\n', '\n')
109
+ .split('\n')
110
+ .map((line) => line.replace(QUOTE_MARKERS, ''))
111
+ .join('\n')
112
+ .trim()
113
+ .split(PARAGRAPH_BREAK)
114
+ .map((block) => block
115
+ .split('\n')
116
+ .map((line) => line.trim().replaceAll(/[ \t]+/gu, ' '))
117
+ .filter((line) => line.length > 0)
118
+ .reduce((lines, line) => joinLines(lines, line), [])
119
+ .join('\n'))
120
+ .filter((block) => block.length > 0)
121
+ .join('\n\n');
122
+ // Attribution obligations attach to what is distributed, so the notices cover the production graph.
123
+ // Identical texts are printed once; most permissive licences differ only in their copyright line, so
124
+ // the grouping is by the reflowed text rather than by the licence name.
125
+ const groupNotices = (notices, distributed) => {
126
+ const entries = notices
127
+ .filter((notice) => distributed.has(notice.coordinate))
128
+ .flatMap((notice) => notice.files.map((file) => ({
129
+ text: reflowLicenseText(file.text),
130
+ fileName: file.name,
131
+ coordinate: notice.coordinate,
132
+ })));
133
+ return [...new Set(entries.map((entry) => entry.text))]
134
+ .map((text) => {
135
+ const sharing = entries.filter((entry) => entry.text === text);
136
+ return {
137
+ text,
138
+ fileNames: [...new Set(sharing.map((entry) => entry.fileName))].toSorted(byText),
139
+ coordinates: [...new Set(sharing.map((entry) => entry.coordinate))].toSorted(byText),
140
+ };
141
+ })
142
+ .toSorted((left, right) => (left.coordinates[0] ?? '').localeCompare(right.coordinates[0] ?? ''));
143
+ };
144
+ const coordinateOfRow = (row) => row.version.length > 0 ? coordinateOf(row.name, row.version) : row.name;
145
+ const draftReasonsOf = (input, isCompliant) => [
146
+ ...(input.source.isDirty ? ['The working tree has uncommitted changes, so no commit describes this source.'] : []),
147
+ ...(isCompliant ? [] : ["The dependencies don't satisfy the policy this report states."]),
148
+ ];
149
+ /**
150
+ * Assemble the compliance report.
151
+ * @param input the inventory, the vulnerability classification and the provenance already read.
152
+ * @returns the report model the renderer prints.
153
+ */
154
+ export const buildComplianceReport = (input) => {
155
+ const packages = reportPackages(input);
156
+ const refused = packages.filter((row) => row.licenseClass === 'refused');
157
+ const isCompliant = refused.length === 0 &&
158
+ input.vulnerabilities.unsuppressed.length === 0 &&
159
+ input.vulnerabilities.deadEntries.length === 0;
160
+ const distributed = new Set(packages
161
+ .filter((row) => row.isProduction)
162
+ .map((row) => coordinateOfRow(row)));
163
+ const shipped = new Set(input.notices
164
+ .filter((notice) => notice.files.length > 0)
165
+ .map((notice) => notice.coordinate));
166
+ return {
167
+ projectName: input.projectName,
168
+ projectDescription: input.projectDescription,
169
+ source: input.source,
170
+ generatedAt: input.generatedAt,
171
+ harnessVersion: input.harnessVersion,
172
+ isCompliant,
173
+ draftReasons: draftReasonsOf(input, isCompliant),
174
+ packages,
175
+ productionCount: packages.filter((row) => row.isProduction).length,
176
+ directCount: packages.filter((row) => row.isDirect).length,
177
+ licenseCounts: countLicenses(packages),
178
+ classCounts: countClasses(packages),
179
+ copyleft: packages.filter((row) => row.licenseClass === 'weak-copyleft'),
180
+ refused,
181
+ policy: LICENSE_POLICY,
182
+ vulnerabilities: input.vulnerabilities,
183
+ severityCounts: countSeverities(input.vulnerabilities),
184
+ advisoryRecords: input.advisoryRecords,
185
+ auditedAt: input.auditedAt,
186
+ sbom: input.sbom,
187
+ notices: groupNotices(input.notices, distributed),
188
+ withoutNotice: [...distributed].filter((coordinate) => !shipped.has(coordinate)).toSorted(byText),
189
+ };
190
+ };
191
+ /** Where the compliance report is written unless the command names another directory. */
192
+ export const DEFAULT_REPORT_OUTPUT = 'dist/compliance';
193
+ /** The file name every compliance report starts with, which is also how a stale one is recognised. */
194
+ export const REPORT_FILE_PREFIX = 'oss-compliance-report-';
195
+ const SHORT_COMMIT_LENGTH = 12;
196
+ const NOT_A_NAME_CHARACTER = /[^a-z0-9]+/u;
197
+ /**
198
+ * The report's file name without extension: the project and the commit it describes.
199
+ * @param projectName the root manifest's name, which may be scoped.
200
+ * @param commit the source commit.
201
+ * @returns a name safe on every filesystem.
202
+ */
203
+ export const reportFileStem = (projectName, commit) => {
204
+ const name = projectName
205
+ .toLowerCase()
206
+ .split(NOT_A_NAME_CHARACTER)
207
+ .filter((part) => part.length > 0)
208
+ .join('-');
209
+ return `${REPORT_FILE_PREFIX}${name.length > 0 ? name : 'project'}-${commit.slice(0, SHORT_COMMIT_LENGTH)}`;
210
+ };
211
+ const OUTPUT_OPTION = '--output';
212
+ /**
213
+ * Parse the compliance report command grammar: no argument, or one output directory.
214
+ * @param arguments_ the arguments after the command name.
215
+ * @returns the output directory, or undefined when the arguments are not that grammar.
216
+ */
217
+ export const parseComplianceReportArguments = (arguments_) => {
218
+ if (arguments_.length === 0) {
219
+ return { output: DEFAULT_REPORT_OUTPUT };
220
+ }
221
+ const [option, value = '', ...extra] = arguments_;
222
+ if (option !== OUTPUT_OPTION || extra.length > 0) {
223
+ return undefined;
224
+ }
225
+ return value.length > 0 && !value.startsWith('-') ? { output: value } : undefined;
226
+ };
227
+ const DECLARING_GROUPS = [
228
+ 'dependencies',
229
+ 'devDependencies',
230
+ 'optionalDependencies',
231
+ 'peerDependencies',
232
+ ];
233
+ /**
234
+ * The packages any workspace manifest declares, which is what makes a dependency direct.
235
+ * @param manifests every workspace manifest, as parsed JSON.
236
+ * @returns the declared package names, each once.
237
+ */
238
+ export const directDependencyNames = (manifests) => [
239
+ ...new Set(manifests.flatMap((manifest) => DECLARING_GROUPS.flatMap((group) => Object.keys(asRecord(readKey(manifest, group)))))),
240
+ ];
241
+ //# sourceMappingURL=compliance-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance-report.js","sourceRoot":"","sources":["../src/compliance-report.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,10 @@ export * from './bundle-budget.js';
15
15
  export * from './checkov-check.js';
16
16
  export * from './checkov-policy.js';
17
17
  export * from './commit-message.js';
18
+ export * from './compliance-report.js';
19
+ export * from './compliance-report-assets.js';
20
+ export * from './compliance-report-html.js';
21
+ export { contentsPages } from './compliance-report-outline.js';
18
22
  export * from './config-references.js';
19
23
  export * from './container-failure.js';
20
24
  export * from './container-files.js';
@@ -42,6 +46,7 @@ export * from './layout-defects.js';
42
46
  export * from './layout-snapshot.js';
43
47
  export * from './layout-text.js';
44
48
  export * from './license-allowlist.js';
49
+ export * from './license-inventory.js';
45
50
  export * from './network-policy.js';
46
51
  export * from './oxlint-policy.js';
47
52
  export * from './oxlint-report.js';
@@ -55,6 +60,7 @@ export * from './payload-defaults.js';
55
60
  export * from './payload-policy.js';
56
61
  export * from './payload-security.js';
57
62
  export * from './payload-source.js';
63
+ export * from './pdf-outline.js';
58
64
  export * from './production-server.js';
59
65
  export * from './relationship-cleanup.js';
60
66
  export * from './release-age.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,6 +19,10 @@ export * from './bundle-budget.js';
19
19
  export * from './checkov-check.js';
20
20
  export * from './checkov-policy.js';
21
21
  export * from './commit-message.js';
22
+ export * from './compliance-report.js';
23
+ export * from './compliance-report-assets.js';
24
+ export * from './compliance-report-html.js';
25
+ export { contentsPages } from './compliance-report-outline.js';
22
26
  export * from './config-references.js';
23
27
  export * from './container-failure.js';
24
28
  export * from './container-files.js';
@@ -46,6 +50,7 @@ export * from './layout-defects.js';
46
50
  export * from './layout-snapshot.js';
47
51
  export * from './layout-text.js';
48
52
  export * from './license-allowlist.js';
53
+ export * from './license-inventory.js';
49
54
  export * from './network-policy.js';
50
55
  export * from './oxlint-policy.js';
51
56
  export * from './oxlint-report.js';
@@ -59,6 +64,7 @@ export * from './payload-defaults.js';
59
64
  export * from './payload-policy.js';
60
65
  export * from './payload-security.js';
61
66
  export * from './payload-source.js';
67
+ export * from './pdf-outline.js';
62
68
  export * from './production-server.js';
63
69
  export * from './relationship-cleanup.js';
64
70
  export * from './release-age.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,20 @@
7
7
  * @returns whether the policy permits it.
8
8
  */
9
9
  export declare const isLicenseAllowed: (expression: string) => boolean;
10
+ /** How the policy admits a declared licence. */
11
+ export type LicenseClass = 'permissive' | 'weak-copyleft' | 'refused';
12
+ /**
13
+ * Classify a declared licence by the least restrictive way the policy admits it. An expression that a
14
+ * permissive choice satisfies is permissive, even when a copyleft alternative is also offered.
15
+ * @param expression the declared licence.
16
+ * @returns the class the policy places it in.
17
+ */
18
+ export declare const licenseClassOf: (expression: string) => LicenseClass;
19
+ /** The license identifiers the policy admits, by group, for a reader of the policy. */
20
+ export declare const LICENSE_POLICY: {
21
+ readonly permissive: readonly string[];
22
+ readonly weakCopyleft: readonly string[];
23
+ };
10
24
  export interface LicensedPackage {
11
25
  readonly name: string;
12
26
  readonly license: string;