@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.
- package/dist/compliance-report-assets.d.ts +20 -0
- package/dist/compliance-report-assets.d.ts.map +1 -0
- package/dist/compliance-report-assets.js +230 -0
- package/dist/compliance-report-assets.js.map +1 -0
- package/dist/compliance-report-html.d.ts +18 -0
- package/dist/compliance-report-html.d.ts.map +1 -0
- package/dist/compliance-report-html.js +365 -0
- package/dist/compliance-report-html.js.map +1 -0
- package/dist/compliance-report-markup.d.ts +62 -0
- package/dist/compliance-report-markup.d.ts.map +1 -0
- package/dist/compliance-report-markup.js +118 -0
- package/dist/compliance-report-markup.js.map +1 -0
- package/dist/compliance-report-outline.d.ts +32 -0
- package/dist/compliance-report-outline.d.ts.map +1 -0
- package/dist/compliance-report-outline.js +124 -0
- package/dist/compliance-report-outline.js.map +1 -0
- package/dist/compliance-report.d.ts +136 -0
- package/dist/compliance-report.d.ts.map +1 -0
- package/dist/compliance-report.js +241 -0
- package/dist/compliance-report.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/license-allowlist.d.ts +14 -0
- package/dist/license-allowlist.d.ts.map +1 -1
- package/dist/license-allowlist.js +28 -9
- package/dist/license-allowlist.js.map +1 -1
- package/dist/license-inventory.d.ts +25 -0
- package/dist/license-inventory.d.ts.map +1 -0
- package/dist/license-inventory.js +41 -0
- package/dist/license-inventory.js.map +1 -0
- package/dist/pdf-outline.d.ts +7 -0
- package/dist/pdf-outline.d.ts.map +1 -0
- package/dist/pdf-outline.js +69 -0
- package/dist/pdf-outline.js.map +1 -0
- package/dist/sbom-policy.d.ts +17 -0
- package/dist/sbom-policy.d.ts.map +1 -1
- package/dist/sbom-policy.js +76 -1
- package/dist/sbom-policy.js.map +1 -1
- package/dist/vulnerability-policy.d.ts +24 -0
- package/dist/vulnerability-policy.d.ts.map +1 -1
- package/dist/vulnerability-policy.js +33 -6
- package/dist/vulnerability-policy.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** One embedded typeface file. */
|
|
2
|
+
export interface EmbeddedFont {
|
|
3
|
+
readonly family: string;
|
|
4
|
+
readonly style: 'normal' | 'italic';
|
|
5
|
+
/** The weight range a variable font covers, such as `200 900`. */
|
|
6
|
+
readonly weight: string;
|
|
7
|
+
/** The WOFF2 file, base64-encoded. */
|
|
8
|
+
readonly data: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The `@font-face` rules for the embedded typefaces, so the document reads the same with no font installed.
|
|
12
|
+
* @param fonts the typefaces.
|
|
13
|
+
* @returns the CSS rules.
|
|
14
|
+
*/
|
|
15
|
+
export declare const fontFaces: (fonts: readonly EmbeddedFont[]) => string;
|
|
16
|
+
/** The report's stylesheet: the screen layout with its contents panel, then the A4 print layout. */
|
|
17
|
+
export declare const REPORT_STYLE: string;
|
|
18
|
+
/** Table filtering, sorting and the embedded downloads. The document reads completely without it. */
|
|
19
|
+
export declare const REPORT_SCRIPT: string;
|
|
20
|
+
//# sourceMappingURL=compliance-report-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-report-assets.d.ts","sourceRoot":"","sources":["../src/compliance-report-assets.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACnC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,YAAY,EAAE,KAAG,MAO9C,CAAA;AAEb,oGAAoG;AACpG,eAAO,MAAM,YAAY,EAAE,MA2L1B,CAAA;AAED,qGAAqG;AACrG,eAAO,MAAM,aAAa,EAAE,MA4B3B,CAAA"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// The stylesheet, typefaces and script the compliance report inlines, kept apart from the markup that uses them.
|
|
2
|
+
/**
|
|
3
|
+
* The `@font-face` rules for the embedded typefaces, so the document reads the same with no font installed.
|
|
4
|
+
* @param fonts the typefaces.
|
|
5
|
+
* @returns the CSS rules.
|
|
6
|
+
*/
|
|
7
|
+
export const fontFaces = (fonts) => fonts
|
|
8
|
+
.map((font) => `@font-face{font-family:"${font.family}";font-style:${font.style};font-weight:${font.weight};` +
|
|
9
|
+
`font-display:block;src:url(data:font/woff2;base64,${font.data}) format("woff2")}`)
|
|
10
|
+
.join('');
|
|
11
|
+
/** The report's stylesheet: the screen layout with its contents panel, then the A4 print layout. */
|
|
12
|
+
export const REPORT_STYLE = String.raw `
|
|
13
|
+
:root{color-scheme:light;--ink:#1b1f26;--ink-strong:#0a0d12;--muted:#4d5560;--accent:#1b3a6b;--accent-deep:#16315c;
|
|
14
|
+
--rule:#d5dae1;--hair:#e2e6ec;--grid:#c3cfe0;--panel:#f6f8fa;--stripe:#f9fafc;--code-bg:#f3f6fb;--code-edge:#b4c1d4;
|
|
15
|
+
--good:#166a2f;--good-bg:#edf4ef;--bad:#ae2a20;--bad-bg:#f9eeec;--warn:#8a5a00;--warn-bg:#fbf5e6;
|
|
16
|
+
--permissive:#1b3a6b;--weak:#b7791f;--refused:#ae2a20;--other:#9aa6b8;
|
|
17
|
+
--serif:"Source Serif 4",Charter,Georgia,"Times New Roman",serif;
|
|
18
|
+
--display:"Playfair Display","Iowan Old Style",Georgia,serif;
|
|
19
|
+
--mono:"Source Code Pro",SFMono-Regular,Menlo,Consolas,monospace}
|
|
20
|
+
*{box-sizing:border-box}
|
|
21
|
+
html{-webkit-text-size-adjust:100%;background:#fff;font-size:16px}
|
|
22
|
+
body{margin:0;padding:0 0 0 22rem;background:#fff;color:var(--ink);font-family:var(--serif);font-size:17px;
|
|
23
|
+
line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-kerning:normal;
|
|
24
|
+
font-feature-settings:"lnum" 1}
|
|
25
|
+
table,code,.mono,#toc,.count,.adnum,.figure b{font-feature-settings:"lnum" 1,"tnum" 1}
|
|
26
|
+
#header,#content,#footer{max-width:58.5em;margin-left:auto;margin-right:auto;padding-left:1.6em;padding-right:1.6em}
|
|
27
|
+
#header{padding-top:48px}
|
|
28
|
+
#header>h1{margin:0;padding:1.1rem 0 0;border-top:6px solid var(--accent);font-family:var(--display);font-size:3em;
|
|
29
|
+
font-weight:600;line-height:1.12;letter-spacing:-.015em;color:var(--ink-strong);hyphens:none;text-align:left}
|
|
30
|
+
#header::after{content:"";display:block;margin-top:.69rem;border-top:1px solid var(--rule)}
|
|
31
|
+
#content{margin-top:1.25em;margin-bottom:1.25em}
|
|
32
|
+
p{margin:0 0 .9em;text-align:justify;text-justify:inter-word;hyphens:auto;letter-spacing:-.01em}
|
|
33
|
+
table p,#toc p{text-align:left;hyphens:manual;letter-spacing:normal}
|
|
34
|
+
a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(27,58,107,.5);
|
|
35
|
+
transition:color .12s ease,border-color .12s ease,background-color .12s ease}
|
|
36
|
+
a:hover{color:var(--ink-strong);border-bottom-color:var(--ink-strong);background:rgba(27,58,107,.08)}
|
|
37
|
+
code{margin:0 .09em;padding:.06em .36em;font-family:var(--mono);font-size:.86em;color:var(--accent);
|
|
38
|
+
background:var(--code-bg);border:1px solid var(--code-edge);white-space:nowrap}
|
|
39
|
+
td code,.ids code{white-space:normal;overflow-wrap:anywhere}
|
|
40
|
+
.nowrap code,code.nowrap{white-space:nowrap;overflow-wrap:normal}
|
|
41
|
+
.mono{font-family:var(--mono);font-size:.86em}
|
|
42
|
+
h2,h3,#toctitle{font-family:var(--display);color:var(--accent);font-weight:600;line-height:1.22;hyphens:none;
|
|
43
|
+
text-align:left;font-style:normal}
|
|
44
|
+
h2{display:flex;gap:.3em;margin:40px 0 .8rem;padding-top:.8rem;border-top:3px solid var(--accent);font-size:1.9em;
|
|
45
|
+
letter-spacing:-.005em}
|
|
46
|
+
h3{display:flex;gap:.3em;margin:27px 0 .55rem;padding-bottom:.35em;border-bottom:1px solid var(--hair);
|
|
47
|
+
font-size:1.36em}
|
|
48
|
+
h2 .adnum,h3 .adnum{flex:0 0 auto;letter-spacing:.02em}
|
|
49
|
+
h3 .adnum{font-weight:700;font-size:.86em;align-self:center}
|
|
50
|
+
.olist>ol{margin:0 0 1em 1.75em;padding:0;list-style-type:upper-alpha}
|
|
51
|
+
.olist li::marker{color:var(--accent)}
|
|
52
|
+
.olist li>p{margin:0 0 .9em}
|
|
53
|
+
.admonitionblock{margin:0 0 1.25em}
|
|
54
|
+
.admonitionblock>table{width:100%;border:0;border-collapse:separate;background:none}
|
|
55
|
+
.admonitionblock td.icon{width:3.25em;padding:.5625em .7em .5625em .625em;text-align:center;vertical-align:middle}
|
|
56
|
+
.admonitionblock td.icon svg{display:inline-block;width:1.6em;height:1.6em;vertical-align:middle}
|
|
57
|
+
.admonitionblock td.content{padding:.5625em 1.25em .5625em 1em;border-left:2px solid var(--rule);
|
|
58
|
+
vertical-align:middle;
|
|
59
|
+
text-align:justify;hyphens:auto;letter-spacing:-.01em}
|
|
60
|
+
.admonitionblock td.content p{margin:0;letter-spacing:-.01em}
|
|
61
|
+
.admonitionblock td.content ul{margin:.3em 0 0;padding-left:1.2em}
|
|
62
|
+
.admonitionblock .title{font-family:var(--display);font-weight:600;color:var(--accent-deep)}
|
|
63
|
+
.icon-warning{color:var(--bad)}
|
|
64
|
+
.icon-ok{color:var(--good)}
|
|
65
|
+
.icon-fail{color:var(--bad)}
|
|
66
|
+
.table-wrap{overflow-x:auto;margin:0 0 1.5em}
|
|
67
|
+
table.tableblock{width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0;font-size:1em;
|
|
68
|
+
line-height:1.3;border-left:1px solid var(--rule);border-right:1px solid var(--rule);
|
|
69
|
+
border-bottom:2px solid var(--accent)}
|
|
70
|
+
table.tableblock th,table.tableblock td{padding:.55em .75em;border:solid var(--rule);border-width:0 1px;
|
|
71
|
+
vertical-align:middle;text-align:left;overflow-wrap:break-word}
|
|
72
|
+
table.tableblock th{font-family:var(--display);font-weight:700;color:var(--accent);border-color:var(--grid);
|
|
73
|
+
border-top:2px solid var(--accent);border-bottom:1px solid var(--accent);white-space:nowrap}
|
|
74
|
+
table.tableblock tbody tr:first-child td{border-top:2px solid var(--accent)}
|
|
75
|
+
table.tableblock thead+tbody tr:first-child td{border-top:0}
|
|
76
|
+
table.tableblock tbody tr+tr td{border-top:1px solid var(--hair)}
|
|
77
|
+
table.tableblock tbody tr:nth-child(even){background:var(--stripe)}
|
|
78
|
+
table.tableblock.facts td{vertical-align:middle}
|
|
79
|
+
table.tableblock.facts tbody tr:nth-child(even){background:none}
|
|
80
|
+
table.tableblock.facts td:first-child{width:50%;text-align:right}
|
|
81
|
+
table.tableblock.compact{font-size:.88em}
|
|
82
|
+
th[data-sort]{cursor:pointer;user-select:none}
|
|
83
|
+
th[aria-sort=ascending]::after{content:" \25B4"}
|
|
84
|
+
th[aria-sort=descending]::after{content:" \25BE"}
|
|
85
|
+
.nowrap{white-space:nowrap}
|
|
86
|
+
.empty{color:var(--muted);font-style:italic;text-align:left}
|
|
87
|
+
.figures{display:grid;grid-template-columns:repeat(3,1fr);margin:0 0 1.5em;border:1px solid var(--rule);
|
|
88
|
+
border-top:2px solid var(--accent);border-bottom:2px solid var(--accent)}
|
|
89
|
+
.figure{padding:.7em .9em .8em;border-right:1px solid var(--rule)}
|
|
90
|
+
.figure:nth-child(3n){border-right:0}
|
|
91
|
+
.figure:nth-child(n+4){border-top:1px solid var(--hair)}
|
|
92
|
+
.figure b{display:block;font-family:var(--serif);font-size:1.9em;font-weight:600;line-height:1.1;color:var(--accent)}
|
|
93
|
+
.figure span{display:block;margin-top:.3em;font-size:.85em;line-height:1.3;color:var(--muted);text-align:left}
|
|
94
|
+
.figure.good b{color:var(--good)}
|
|
95
|
+
.figure.warn b{color:var(--warn)}
|
|
96
|
+
.figure.bad b{color:var(--bad)}
|
|
97
|
+
.stack{display:flex;height:12px;background:var(--hair);margin:.5em 0 .6em}
|
|
98
|
+
.stack i{display:block;height:100%}
|
|
99
|
+
.seg-permissive,.fill-permissive{background:var(--permissive)}
|
|
100
|
+
.seg-weak-copyleft,.fill-weak-copyleft{background:var(--weak)}
|
|
101
|
+
.seg-refused,.fill-refused{background:var(--refused)}
|
|
102
|
+
.fill-other{background:var(--other)}
|
|
103
|
+
.legend{display:flex;flex-wrap:wrap;gap:.2em 1.6em;margin:0 0 1em;padding:0;list-style:none;font-size:.9em;
|
|
104
|
+
color:var(--muted)}
|
|
105
|
+
.legend li::before{content:"";display:inline-block;width:.75em;height:.75em;margin-right:.45em;vertical-align:-.05em}
|
|
106
|
+
.key-permissive::before{background:var(--permissive)}
|
|
107
|
+
.key-weak-copyleft::before{background:var(--weak)}
|
|
108
|
+
.key-refused::before{background:var(--refused)}
|
|
109
|
+
.bars{display:grid;grid-template-columns:minmax(9em,max-content) 1fr max-content;gap:.35em 1em;align-items:center;
|
|
110
|
+
margin:.4em 0 1em;font-size:.94em}
|
|
111
|
+
.bars .label{overflow-wrap:anywhere}
|
|
112
|
+
.bars .track{display:block;height:8px;background:var(--hair)}
|
|
113
|
+
.bars .fill{display:block;height:100%}
|
|
114
|
+
.bars .count{color:var(--muted);text-align:right}
|
|
115
|
+
.severities{display:flex;flex-wrap:wrap;gap:.4em 1.4em;margin:.3em 0 1em;padding:0;list-style:none}
|
|
116
|
+
.sev,.chip{display:inline-block;padding:0 .45em;border:1px solid;font-family:var(--serif);font-size:.82em;
|
|
117
|
+
font-weight:600;letter-spacing:.02em;line-height:1.5;white-space:nowrap}
|
|
118
|
+
.sev{text-transform:capitalize;color:#3c434e;border-color:#c3cbd6;background:#f3f5f8}
|
|
119
|
+
.sev-critical{color:#fff;background:#7a1c15;border-color:#7a1c15}
|
|
120
|
+
.sev-high{color:var(--bad);background:var(--bad-bg);border-color:#e3b7b2}
|
|
121
|
+
.sev-moderate{color:var(--warn);background:var(--warn-bg);border-color:#e6cf9a}
|
|
122
|
+
.sev-low{color:var(--accent);background:var(--code-bg);border-color:var(--code-edge)}
|
|
123
|
+
.chip-permissive{color:var(--accent);background:var(--code-bg);border-color:var(--code-edge)}
|
|
124
|
+
.chip-weak-copyleft{color:var(--warn);background:var(--warn-bg);border-color:#e6cf9a}
|
|
125
|
+
.chip-refused{color:var(--bad);background:var(--bad-bg);border-color:#e3b7b2}
|
|
126
|
+
.statements{margin:.3em 0 1em;padding:0;list-style:none}
|
|
127
|
+
.statements li{position:relative;padding:.1em 0 .55em 1.75em;text-align:justify;hyphens:auto;letter-spacing:-.01em}
|
|
128
|
+
.statements li::before{position:absolute;left:.1em;top:.1em;font-weight:700}
|
|
129
|
+
.statements li.pass::before{content:"\2713";color:var(--good)}
|
|
130
|
+
.statements li.fail::before{content:"\2717";color:var(--bad)}
|
|
131
|
+
.statements li.info::before{content:"\2139";color:var(--accent)}
|
|
132
|
+
.ids{display:flex;flex-wrap:wrap;gap:.45em;margin:.2em 0 1.2em;padding:0;list-style:none}
|
|
133
|
+
.ids li{max-width:100%}
|
|
134
|
+
.downloads{display:flex;flex-wrap:wrap;gap:.6em;margin:0 0 .9em}
|
|
135
|
+
button{font-family:var(--serif);font-size:.9em;font-weight:600;padding:.35em 1em;border:1px solid var(--accent);
|
|
136
|
+
background:var(--accent);color:#fff;cursor:pointer}
|
|
137
|
+
button+button{background:#fff;color:var(--accent)}
|
|
138
|
+
.controls{display:flex;flex-wrap:wrap;gap:.6em;align-items:center;margin:0 0 .9em}
|
|
139
|
+
.controls input,.controls select{font:inherit;font-size:.9em;padding:.35em .6em;border:1px solid #b9c2cf;
|
|
140
|
+
background:#fff;color:var(--ink)}
|
|
141
|
+
.controls input{flex:1 1 15em}
|
|
142
|
+
.controls output{color:var(--muted);font-size:.85em}
|
|
143
|
+
.notice{margin:0 0 1.4em}
|
|
144
|
+
.notice>.title{margin:0;font-family:var(--display);font-weight:600;font-size:1.02em;color:var(--accent);text-align:left;
|
|
145
|
+
overflow-wrap:anywhere}
|
|
146
|
+
.notice-packages{margin:.1em 0 .5em;font-size:.82em;font-style:italic;color:var(--muted);text-align:left;
|
|
147
|
+
overflow-wrap:anywhere}
|
|
148
|
+
.license-text{padding:.7em 1em .2em;background:var(--panel);border-left:2px solid var(--rule);font-size:.84em;
|
|
149
|
+
line-height:1.5;overflow-wrap:anywhere}
|
|
150
|
+
.license-text p{margin:0 0 .65em}
|
|
151
|
+
.license-text p.ragged{text-align:left;hyphens:manual}
|
|
152
|
+
.digest{font-family:var(--mono);font-size:.84em;color:var(--accent);word-break:break-all}
|
|
153
|
+
.license-text hr{margin:1.1em 0;border:0;border-top:1px solid var(--rule)}
|
|
154
|
+
.license-entry p{margin:0;text-align:left;hyphens:manual}
|
|
155
|
+
.license-entry p+p{margin-top:.1em}
|
|
156
|
+
.license-entry{margin:0 0 .65em}
|
|
157
|
+
.license-heading{font-family:var(--display);font-weight:700;font-size:1.08em;color:var(--accent)}
|
|
158
|
+
#toc{position:fixed;top:0;left:0;bottom:0;z-index:1000;width:22rem;overflow-y:auto;padding:16.4px 1.35em 3em 1.5em;
|
|
159
|
+
background:var(--panel);border-right:1px solid var(--hair);scrollbar-width:thin;text-align:left}
|
|
160
|
+
#toctitle{margin:0 0 1.2em;padding-bottom:.7em;border-bottom:1px solid var(--hair);font-size:1em;
|
|
161
|
+
font-variant:all-small-caps;letter-spacing:.12em;color:var(--accent-deep)}
|
|
162
|
+
#toc ul{margin:0 0 .5em .125em;padding:0;list-style:none;font-size:.87rem;line-height:1.6}
|
|
163
|
+
#toc ul ul{margin:0 0 0 .2em;padding-left:.8em;border-left:1px solid #c6cedb}
|
|
164
|
+
#toc li{margin-top:.14em}
|
|
165
|
+
#toc .sectlevel1>li{margin-top:.75em}
|
|
166
|
+
#toc .sectlevel1>li:first-child{margin-top:0}
|
|
167
|
+
#toc a{display:flex;gap:.25em;padding:.06em 0;border:0;color:#3c434e;line-height:1.32}
|
|
168
|
+
#toc a:hover{color:var(--accent-deep);background:none}
|
|
169
|
+
#toc .sectlevel1>li>a{color:var(--accent-deep);font-weight:600}
|
|
170
|
+
#toc .leader,#toc .page{display:none}
|
|
171
|
+
#footer{margin-top:3em;padding-top:1.5em;padding-bottom:3em;border-top:1px solid var(--hair);color:var(--muted);
|
|
172
|
+
font-size:.85em}
|
|
173
|
+
@media (max-width:1100px){body{padding-left:0}#toc{position:static;width:auto;border-right:0;
|
|
174
|
+
border-bottom:1px solid var(--hair);padding:1.2rem 1.4rem;margin:1.2em 0}}
|
|
175
|
+
@media (max-width:640px){body{font-size:16px}#header>h1{font-size:2.2em}h2{font-size:1.55em}h3{font-size:1.2em}
|
|
176
|
+
.figures{grid-template-columns:repeat(2,1fr)}.figure:nth-child(n){border-right:1px solid var(--rule);border-top:0}
|
|
177
|
+
.figure:nth-child(2n){border-right:0}.figure:nth-child(n+3){border-top:1px solid var(--hair)}
|
|
178
|
+
.bars{grid-template-columns:1fr max-content}.bars .track{grid-column:1 / -1}.olist>ol{margin-left:1.4em}}
|
|
179
|
+
@page{size:A4;margin:16mm 16mm 18mm;
|
|
180
|
+
@bottom-center{content:counter(page);font:8.5pt "Source Serif 4",Georgia,serif;color:#1b1f26;
|
|
181
|
+
border-top:1px solid #e2e6ec;vertical-align:middle}}
|
|
182
|
+
@media print{html{font-size:12px}body{padding:0;font-size:10pt;line-height:1.45;print-color-adjust:exact;
|
|
183
|
+
-webkit-print-color-adjust:exact}#header,#content,#footer{max-width:none;padding:0}#header{padding-top:0}
|
|
184
|
+
#header>h1{border-top:0;padding:0;text-align:center;font-size:30pt;line-height:1.15}#header::after{display:none}
|
|
185
|
+
#toc{position:static;width:auto;padding:0;margin:14pt 0 0;background:none;border:0}
|
|
186
|
+
#toctitle{font-size:18pt;font-variant:normal;letter-spacing:0;color:var(--accent);border:0;padding:0;margin:0 0 8pt}
|
|
187
|
+
#toc ul{font-size:10pt;margin:0;line-height:1.5}#toc ul ul{border:0;margin-left:1.2em;padding-left:0}
|
|
188
|
+
#toc a{color:var(--ink);font-weight:400}#toc .sectlevel1>li>a{color:var(--ink);font-weight:400}
|
|
189
|
+
#toc .sectlevel1>li{margin-top:.15em}#toc li{margin-top:.15em}
|
|
190
|
+
#toc .leader{display:block;flex:1 1 auto;margin:0 .15em .28em .3em;border-bottom:1px dotted #9aa3b0}
|
|
191
|
+
#toc .page{display:inline;text-align:right}#toc .page:empty,#toc .leader:has(+ .page:empty){display:none}
|
|
192
|
+
#content{margin-top:16pt}h2{border-top:0;padding-top:0;margin-top:20pt;break-after:avoid}h3{border-bottom:0;
|
|
193
|
+
padding-bottom:0;break-after:avoid}.controls,.downloads{display:none}.table-wrap{overflow:visible}
|
|
194
|
+
a{color:inherit;border:0}table.tableblock{font-size:8.6pt}table.tableblock th,table.tableblock td{padding:.3em .5em}
|
|
195
|
+
tr,.figure,.admonitionblock,table.facts{break-inside:avoid}.notice>.title,.notice-packages{break-after:avoid}
|
|
196
|
+
.notice{break-inside:avoid}
|
|
197
|
+
.license-text{columns:2;column-gap:7mm;font-size:7.4pt;line-height:1.35;background:none;border:0;padding:0}
|
|
198
|
+
#footer{margin-top:16pt;padding:6pt 0 0}}
|
|
199
|
+
`;
|
|
200
|
+
/** Table filtering, sorting and the embedded downloads. The document reads completely without it. */
|
|
201
|
+
export const REPORT_SCRIPT = `
|
|
202
|
+
(function(){
|
|
203
|
+
var data=JSON.parse(document.getElementById('report-data').textContent);
|
|
204
|
+
function save(name,type,text){var blob=new Blob([text],{type:type});var link=document.createElement('a');
|
|
205
|
+
link.href=URL.createObjectURL(blob);link.download=name;document.body.appendChild(link);link.click();
|
|
206
|
+
setTimeout(function(){URL.revokeObjectURL(link.href);link.remove();},0);}
|
|
207
|
+
document.querySelectorAll('[data-download]').forEach(function(button){button.hidden=false;
|
|
208
|
+
button.addEventListener('click',function(){var key=button.getAttribute('data-download');
|
|
209
|
+
save(button.getAttribute('data-file'),key==='sbom'?'application/vnd.cyclonedx+json':'text/csv',data[key]);});});
|
|
210
|
+
var table=document.getElementById('inventory-table');if(!table){return;}
|
|
211
|
+
var body=table.tBodies[0];var rows=Array.prototype.slice.call(body.rows);
|
|
212
|
+
var search=document.getElementById('filter-text');var scope=document.getElementById('filter-scope');
|
|
213
|
+
var kind=document.getElementById('filter-class');var shown=document.getElementById('filter-count');
|
|
214
|
+
function apply(){var needle=search.value.trim().toLowerCase();var visible=0;rows.forEach(function(row){
|
|
215
|
+
var match=(!needle||row.textContent.toLowerCase().indexOf(needle)>=0)&&(!scope.value||row.dataset.scope===scope.value)
|
|
216
|
+
&&(!kind.value||row.dataset.class===kind.value);row.hidden=!match;if(match){visible++;}});
|
|
217
|
+
shown.textContent=visible+' of '+rows.length+' package versions';}
|
|
218
|
+
[search,scope,kind].forEach(function(control){control.addEventListener('input',apply);});
|
|
219
|
+
table.querySelectorAll('th[data-sort]').forEach(function(header,index){header.tabIndex=0;
|
|
220
|
+
function sort(){var ascending=header.getAttribute('aria-sort')!=='ascending';
|
|
221
|
+
table.querySelectorAll('th').forEach(function(other){other.removeAttribute('aria-sort');});
|
|
222
|
+
header.setAttribute('aria-sort',ascending?'ascending':'descending');
|
|
223
|
+
rows.sort(function(left,right){var a=left.cells[index].textContent;var b=right.cells[index].textContent;
|
|
224
|
+
return (ascending?1:-1)*a.localeCompare(b,undefined,{numeric:true,sensitivity:'base'});});
|
|
225
|
+
rows.forEach(function(row){body.appendChild(row);});}
|
|
226
|
+
header.addEventListener('click',sort);header.addEventListener('keydown',function(event){
|
|
227
|
+
if(event.key==='Enter'||event.key===' '){event.preventDefault();sort();}});});
|
|
228
|
+
apply();})();
|
|
229
|
+
`;
|
|
230
|
+
//# sourceMappingURL=compliance-report-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-report-assets.js","sourceRoot":"","sources":["../src/compliance-report-assets.ts"],"names":[],"mappings":"AAAA,iHAAiH;AAYjH;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAA8B,EAAU,EAAE,CAClE,KAAK;KACF,GAAG,CACF,CAAC,IAAkB,EAAU,EAAE,CAC7B,2BAA2B,IAAI,CAAC,MAAM,gBAAgB,IAAI,CAAC,KAAK,gBAAgB,IAAI,CAAC,MAAM,GAAG;IAC9F,qDAAqD,IAAI,CAAC,IAAI,oBAAoB,CACrF;KACA,IAAI,CAAC,EAAE,CAAC,CAAA;AAEb,oGAAoG;AACpG,MAAM,CAAC,MAAM,YAAY,GAAW,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2L7C,CAAA;AAED,qGAAqG;AACrG,MAAM,CAAC,MAAM,aAAa,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BpC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ComplianceReport } from './compliance-report.js';
|
|
2
|
+
import { type EmbeddedFont } from './compliance-report-assets.js';
|
|
3
|
+
/** What the report carries besides its own markup. */
|
|
4
|
+
export interface ReportAttachments {
|
|
5
|
+
/** The CycloneDX document as written, so its SHA-256 matches the one the report prints. */
|
|
6
|
+
readonly sbom: string;
|
|
7
|
+
/** The typefaces the report is set in, embedded so it reads the same on every machine. */
|
|
8
|
+
readonly fonts: readonly EmbeddedFont[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Render the compliance report as one self-contained HTML document.
|
|
12
|
+
* @param report the assembled report.
|
|
13
|
+
* @param attachments the exact bytes the report carries, and the typefaces it is set in.
|
|
14
|
+
* @param fileStem the file name, without extension, downloads are offered under.
|
|
15
|
+
* @returns the complete document.
|
|
16
|
+
*/
|
|
17
|
+
export declare const renderComplianceReport: (report: ComplianceReport, attachments: ReportAttachments, fileStem: string) => string;
|
|
18
|
+
//# sourceMappingURL=compliance-report-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-report-html.d.ts","sourceRoot":"","sources":["../src/compliance-report-html.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAA2D,MAAM,wBAAwB,CAAA;AACvH,OAAO,EAAE,KAAK,YAAY,EAA0C,MAAM,+BAA+B,CAAA;AA6BzG,sDAAsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;CACxC;AAseD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,gBAAgB,EACxB,aAAa,iBAAiB,EAC9B,UAAU,MAAM,KACf,MAqBW,CAAA"}
|