@secureport/core 1.0.0 → 2.2.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/README.md +2 -1
- package/dist/finding.d.ts +9 -8
- package/dist/finding.d.ts.map +1 -1
- package/dist/fingerprint.d.ts +12 -5
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +74 -8
- package/dist/fingerprint.js.map +1 -1
- package/dist/import/nessus.d.ts +9 -6
- package/dist/import/nessus.d.ts.map +1 -1
- package/dist/import/nessus.js +9 -6
- package/dist/import/nessus.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/issue.d.ts +1 -1
- package/dist/issue.d.ts.map +1 -1
- package/dist/reconcile.d.ts +71 -1
- package/dist/reconcile.d.ts.map +1 -1
- package/dist/reconcile.js +64 -4
- package/dist/reconcile.js.map +1 -1
- package/dist/refingerprint.d.ts +116 -0
- package/dist/refingerprint.d.ts.map +1 -0
- package/dist/refingerprint.js +190 -0
- package/dist/refingerprint.js.map +1 -0
- package/dist/report/anchors.d.ts +39 -0
- package/dist/report/anchors.d.ts.map +1 -0
- package/dist/report/anchors.js +73 -0
- package/dist/report/anchors.js.map +1 -0
- package/dist/report/html.d.ts.map +1 -1
- package/dist/report/html.js +126 -22
- package/dist/report/html.js.map +1 -1
- package/dist/report/markdown.d.ts.map +1 -1
- package/dist/report/markdown.js +112 -26
- package/dist/report/markdown.js.map +1 -1
- package/dist/report/model.d.ts +227 -1
- package/dist/report/model.d.ts.map +1 -1
- package/dist/report/model.js +87 -8
- package/dist/report/model.js.map +1 -1
- package/package.json +1 -1
- package/src/finding.ts +9 -8
- package/src/fingerprint.ts +76 -10
- package/src/import/nessus.ts +9 -6
- package/src/index.ts +14 -2
- package/src/issue.ts +1 -0
- package/src/reconcile.ts +121 -5
- package/src/refingerprint.ts +282 -0
- package/src/report/anchors.ts +96 -0
- package/src/report/html.ts +146 -26
- package/src/report/markdown.ts +125 -25
- package/src/report/model.ts +344 -7
package/dist/reconcile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../src/reconcile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../src/reconcile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { Finding } from './finding.js';
|
|
2
|
+
import type { FingerprintInput, VulnKeyInput } from './fingerprint.js';
|
|
3
|
+
import type { Issue } from './issue.js';
|
|
4
|
+
/**
|
|
5
|
+
* How to compute a fingerprint. Injected so the dry run can be pointed at a
|
|
6
|
+
* version that does not exist yet.
|
|
7
|
+
*
|
|
8
|
+
* **`@secureport/core` only ever contains one algorithm** — the current one,
|
|
9
|
+
* named by `FINGERPRINT_VERSION`. So on the day a version bump is being
|
|
10
|
+
* considered, the way to find out what it would do is to hand this planner
|
|
11
|
+
* the candidate implementation. Against the shipped algorithm the plan is a
|
|
12
|
+
* no-op by construction, which is exactly what makes it safe to run at any
|
|
13
|
+
* time and what lets the tests drive real merges and splits without a
|
|
14
|
+
* released `fp_v2`.
|
|
15
|
+
*/
|
|
16
|
+
export interface FingerprintAlgorithm {
|
|
17
|
+
readonly version: string;
|
|
18
|
+
fingerprintOf(input: FingerprintInput): string;
|
|
19
|
+
vulnKeyOf(input: VulnKeyInput): string;
|
|
20
|
+
}
|
|
21
|
+
/** The algorithm this build ships. */
|
|
22
|
+
export declare const currentAlgorithm: FingerprintAlgorithm;
|
|
23
|
+
/** An issue and the evidence a re-fingerprint would recompute it from. */
|
|
24
|
+
export interface IssueWithEvidence {
|
|
25
|
+
readonly issue: Issue;
|
|
26
|
+
/**
|
|
27
|
+
* The evidence that **defines** this issue, which is not always every
|
|
28
|
+
* finding linked to it: `gatherForOrg` excludes what a merge attached from
|
|
29
|
+
* another issue, because that evidence describes a different weakness and
|
|
30
|
+
* re-deriving a key from it would split the survivor apart.
|
|
31
|
+
*/
|
|
32
|
+
readonly findings: readonly Finding[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* What would happen to one issue.
|
|
36
|
+
*
|
|
37
|
+
* - `unchanged` — recomputes to the fingerprint it already has.
|
|
38
|
+
* - `moved` — one new fingerprint, different, and nothing else lands on it.
|
|
39
|
+
* The issue keeps its identity and its history; only the key changes.
|
|
40
|
+
* - `merged` — its new fingerprint is shared with at least one other issue.
|
|
41
|
+
* They become one, which is the outcome B39 and B41 are chasing.
|
|
42
|
+
* - `split` — its findings no longer agree on a fingerprint, so the issue
|
|
43
|
+
* would become several. The most disruptive outcome and the one that most
|
|
44
|
+
* needs reading before an execution.
|
|
45
|
+
* - `undecidable` — at least one of its findings cannot be re-keyed at all,
|
|
46
|
+
* so no honest answer exists for it. See {@link planRefingerprint}.
|
|
47
|
+
*/
|
|
48
|
+
export type RefingerprintOutcome = 'unchanged' | 'moved' | 'merged' | 'split' | 'undecidable';
|
|
49
|
+
export interface IssuePlan {
|
|
50
|
+
readonly issueId: string;
|
|
51
|
+
readonly targetId: string;
|
|
52
|
+
readonly title: string;
|
|
53
|
+
readonly from: string;
|
|
54
|
+
readonly fromVersion: string;
|
|
55
|
+
/** Distinct fingerprints this issue's evidence produces at the new version. */
|
|
56
|
+
readonly to: readonly string[];
|
|
57
|
+
readonly outcome: RefingerprintOutcome;
|
|
58
|
+
/** Other issues that land on one of `to`. Empty unless `outcome` involves a merge. */
|
|
59
|
+
readonly mergesWith: readonly string[];
|
|
60
|
+
/**
|
|
61
|
+
* Findings linked to the issue — **not necessarily the number the recompute
|
|
62
|
+
* read**. A manual issue is keyed from its own columns however much evidence
|
|
63
|
+
* is attached to it, and a scanner issue with zero findings falls back to
|
|
64
|
+
* the same path. Both are reported here as they stand so the count stays a
|
|
65
|
+
* fact about the data rather than about this function.
|
|
66
|
+
*/
|
|
67
|
+
readonly evidence: number;
|
|
68
|
+
}
|
|
69
|
+
export interface RefingerprintPlan {
|
|
70
|
+
readonly fromVersion: string;
|
|
71
|
+
readonly toVersion: string;
|
|
72
|
+
readonly issues: readonly IssuePlan[];
|
|
73
|
+
readonly counts: Readonly<Record<RefingerprintOutcome, number>>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Works out what re-fingerprinting every issue would do, and writes nothing.
|
|
77
|
+
*
|
|
78
|
+
* **Recomputed from inputs, never by comparing stored strings.** A stored
|
|
79
|
+
* `fp_v1` fingerprint and a stored `fp_v2` one are not comparable — that is
|
|
80
|
+
* the whole reason `reconcile()` refuses to run across versions (B45) — so
|
|
81
|
+
* the only honest question is "what does the new algorithm say about the same
|
|
82
|
+
* evidence?". That means re-deriving `vulnKey` too: B39's change was to the
|
|
83
|
+
* `vulnKey` fallback, and reading the stored value would miss precisely the
|
|
84
|
+
* class of change this migration exists for.
|
|
85
|
+
*
|
|
86
|
+
* **A manual issue is keyed from its own columns, evidence or not.** Findings
|
|
87
|
+
* can be attached to a human-raised issue after the fact; 24 of the 404 manual
|
|
88
|
+
* issues in the development database are. Re-deriving those from the evidence
|
|
89
|
+
* would replace the human's `vulnKey` with the scanner's and merge the issue
|
|
90
|
+
* into whichever upload-origin issue already holds that key — losing the
|
|
91
|
+
* issue a person raised, in a migration nobody expected to lose anything.
|
|
92
|
+
*
|
|
93
|
+
* **An issue an earlier merge retired keeps the key it has**, and this is what
|
|
94
|
+
* makes the plan reach a fixed point. A merge copies the duplicate's evidence
|
|
95
|
+
* to the survivor without removing it from the duplicate (B98), so re-deriving
|
|
96
|
+
* a retired issue from its evidence produces the survivor's key and proposes
|
|
97
|
+
* the merge that already happened — every run, forever. Checked before the
|
|
98
|
+
* manual rule, because an issue can be both and retirement is the later
|
|
99
|
+
* statement about its identity.
|
|
100
|
+
*
|
|
101
|
+
* **Findings are never touched, and this never needs them to be.** A finding
|
|
102
|
+
* is evidence (invariant 1) and `findings` rejects `UPDATE` at the database
|
|
103
|
+
* (B66); its `fingerprint_version` records which algorithm produced it and
|
|
104
|
+
* that stays true forever. Only `issues` are re-keyed. B69, 8 September.
|
|
105
|
+
*
|
|
106
|
+
* **A finding whose key cannot be re-derived makes its issue `undecidable`,
|
|
107
|
+
* and does not stop the report.** `vulnKey()` throws when a finding carries
|
|
108
|
+
* no mapped rule, CWE, category or engine rule id — so a row that was never
|
|
109
|
+
* produced by an importer at this version (or was produced by a different
|
|
110
|
+
* one) has no answer. Reporting that is the useful behaviour: a migration
|
|
111
|
+
* plan that dies on one row tells an operator nothing about the other
|
|
112
|
+
* thousand, and guessing a key from the stored value would defeat the whole
|
|
113
|
+
* purpose, since re-deriving `vulnKey` is the point.
|
|
114
|
+
*/
|
|
115
|
+
export declare function planRefingerprint(input: readonly IssueWithEvidence[], algorithm?: FingerprintAlgorithm): RefingerprintPlan;
|
|
116
|
+
//# sourceMappingURL=refingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refingerprint.d.ts","sourceRoot":"","sources":["../src/refingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAC/C,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC;CACxC;AAED,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,EAAE,oBAI9B,CAAC;AAEF,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CACvC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;AAE9F,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,sFAAsF;IACtF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;CACjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,SAAS,GAAE,oBAAuC,GACjD,iBAAiB,CA+GnB"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { FINGERPRINT_VERSION, fingerprint, vulnKey } from './fingerprint.js';
|
|
2
|
+
/** The algorithm this build ships. */
|
|
3
|
+
export const currentAlgorithm = {
|
|
4
|
+
version: FINGERPRINT_VERSION,
|
|
5
|
+
fingerprintOf: fingerprint,
|
|
6
|
+
vulnKeyOf: vulnKey,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Works out what re-fingerprinting every issue would do, and writes nothing.
|
|
10
|
+
*
|
|
11
|
+
* **Recomputed from inputs, never by comparing stored strings.** A stored
|
|
12
|
+
* `fp_v1` fingerprint and a stored `fp_v2` one are not comparable — that is
|
|
13
|
+
* the whole reason `reconcile()` refuses to run across versions (B45) — so
|
|
14
|
+
* the only honest question is "what does the new algorithm say about the same
|
|
15
|
+
* evidence?". That means re-deriving `vulnKey` too: B39's change was to the
|
|
16
|
+
* `vulnKey` fallback, and reading the stored value would miss precisely the
|
|
17
|
+
* class of change this migration exists for.
|
|
18
|
+
*
|
|
19
|
+
* **A manual issue is keyed from its own columns, evidence or not.** Findings
|
|
20
|
+
* can be attached to a human-raised issue after the fact; 24 of the 404 manual
|
|
21
|
+
* issues in the development database are. Re-deriving those from the evidence
|
|
22
|
+
* would replace the human's `vulnKey` with the scanner's and merge the issue
|
|
23
|
+
* into whichever upload-origin issue already holds that key — losing the
|
|
24
|
+
* issue a person raised, in a migration nobody expected to lose anything.
|
|
25
|
+
*
|
|
26
|
+
* **An issue an earlier merge retired keeps the key it has**, and this is what
|
|
27
|
+
* makes the plan reach a fixed point. A merge copies the duplicate's evidence
|
|
28
|
+
* to the survivor without removing it from the duplicate (B98), so re-deriving
|
|
29
|
+
* a retired issue from its evidence produces the survivor's key and proposes
|
|
30
|
+
* the merge that already happened — every run, forever. Checked before the
|
|
31
|
+
* manual rule, because an issue can be both and retirement is the later
|
|
32
|
+
* statement about its identity.
|
|
33
|
+
*
|
|
34
|
+
* **Findings are never touched, and this never needs them to be.** A finding
|
|
35
|
+
* is evidence (invariant 1) and `findings` rejects `UPDATE` at the database
|
|
36
|
+
* (B66); its `fingerprint_version` records which algorithm produced it and
|
|
37
|
+
* that stays true forever. Only `issues` are re-keyed. B69, 8 September.
|
|
38
|
+
*
|
|
39
|
+
* **A finding whose key cannot be re-derived makes its issue `undecidable`,
|
|
40
|
+
* and does not stop the report.** `vulnKey()` throws when a finding carries
|
|
41
|
+
* no mapped rule, CWE, category or engine rule id — so a row that was never
|
|
42
|
+
* produced by an importer at this version (or was produced by a different
|
|
43
|
+
* one) has no answer. Reporting that is the useful behaviour: a migration
|
|
44
|
+
* plan that dies on one row tells an operator nothing about the other
|
|
45
|
+
* thousand, and guessing a key from the stored value would defeat the whole
|
|
46
|
+
* purpose, since re-deriving `vulnKey` is the point.
|
|
47
|
+
*/
|
|
48
|
+
export function planRefingerprint(input, algorithm = currentAlgorithm) {
|
|
49
|
+
const recomputed = input.map(({ issue, findings }) => {
|
|
50
|
+
// Retirement is checked first, and the order is load-bearing. An issue an
|
|
51
|
+
// earlier merge retired is not re-keyed at all: its identity moved to the
|
|
52
|
+
// survivor, and its evidence — which the merge copied to that survivor —
|
|
53
|
+
// would re-derive the survivor's key and propose merging the two all over
|
|
54
|
+
// again, so the plan would never reach a fixed point. A *manual* issue
|
|
55
|
+
// that was later merged away is both things at once, and retirement is
|
|
56
|
+
// the later statement about its identity, so it wins. Measured: with the
|
|
57
|
+
// branches the other way round, 95 issues reported `moved` on every run
|
|
58
|
+
// while the executor left them alone on every run, forever.
|
|
59
|
+
if (issue.status === 'ignored' && issue.ignoreReason === 'duplicate') {
|
|
60
|
+
return { issue, evidence: findings.length, undecidable: false, to: [issue.fingerprint] };
|
|
61
|
+
}
|
|
62
|
+
// A manual issue is keyed from its own columns: its `vulnKey` and location
|
|
63
|
+
// were declared by a person, and evidence linked afterwards corroborates
|
|
64
|
+
// that issue rather than redefining it. Re-deriving would replace the
|
|
65
|
+
// human's key with the scanner's and dissolve the issue into whichever
|
|
66
|
+
// upload-origin issue already holds it.
|
|
67
|
+
//
|
|
68
|
+
// A *merge survivor* is deliberately not handled here, though it is also
|
|
69
|
+
// an identity a person asserted. Keying one from its own columns carries a
|
|
70
|
+
// stale `vulnKey` — written before the mapping table knew the engine's
|
|
71
|
+
// rule — so the migrated issue stops matching what the importer now
|
|
72
|
+
// produces, auto-resolves and comes back as new. `gatherForOrg` excludes
|
|
73
|
+
// the absorbed evidence instead, so a survivor re-derives correctly from
|
|
74
|
+
// what was always its own.
|
|
75
|
+
if (issue.origin === 'manual') {
|
|
76
|
+
return {
|
|
77
|
+
issue,
|
|
78
|
+
evidence: findings.length,
|
|
79
|
+
undecidable: false,
|
|
80
|
+
to: [fromOwnColumns(issue, algorithm)],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const keys = findings.map((f) => fingerprintOfFinding(issue, f, algorithm));
|
|
84
|
+
return {
|
|
85
|
+
issue,
|
|
86
|
+
evidence: findings.length,
|
|
87
|
+
undecidable: keys.some((k) => k === undefined),
|
|
88
|
+
to: [...new Set(keys.filter((k) => k !== undefined))].sort(),
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
// A scanner-origin issue whose evidence has since been detached has nothing
|
|
92
|
+
// left to re-derive from, so it falls back to its own columns rather than
|
|
93
|
+
// vanishing from the report.
|
|
94
|
+
for (const row of recomputed) {
|
|
95
|
+
if (row.to.length === 0 && !row.undecidable) {
|
|
96
|
+
row.to = [fromOwnColumns(row.issue, algorithm)];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const owners = new Map();
|
|
100
|
+
for (const row of recomputed) {
|
|
101
|
+
if (row.undecidable)
|
|
102
|
+
continue;
|
|
103
|
+
for (const fp of row.to) {
|
|
104
|
+
const list = owners.get(fp);
|
|
105
|
+
if (list)
|
|
106
|
+
list.push(row.issue.id);
|
|
107
|
+
else
|
|
108
|
+
owners.set(fp, [row.issue.id]);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const counts = {
|
|
112
|
+
unchanged: 0,
|
|
113
|
+
moved: 0,
|
|
114
|
+
merged: 0,
|
|
115
|
+
split: 0,
|
|
116
|
+
undecidable: 0,
|
|
117
|
+
};
|
|
118
|
+
const issues = recomputed.map(({ issue, evidence, to, undecidable }) => {
|
|
119
|
+
const mergesWith = [
|
|
120
|
+
...new Set(to.flatMap((fp) => owners.get(fp) ?? []).filter((id) => id !== issue.id)),
|
|
121
|
+
].sort();
|
|
122
|
+
// Split first: an issue that fragments is the most disruptive outcome
|
|
123
|
+
// and stays visible even when one of its fragments also collides.
|
|
124
|
+
const outcome = undecidable
|
|
125
|
+
? 'undecidable'
|
|
126
|
+
: to.length > 1
|
|
127
|
+
? 'split'
|
|
128
|
+
: mergesWith.length > 0
|
|
129
|
+
? 'merged'
|
|
130
|
+
: to[0] === issue.fingerprint
|
|
131
|
+
? 'unchanged'
|
|
132
|
+
: 'moved';
|
|
133
|
+
counts[outcome] += 1;
|
|
134
|
+
return {
|
|
135
|
+
issueId: issue.id,
|
|
136
|
+
targetId: issue.targetId,
|
|
137
|
+
title: issue.title,
|
|
138
|
+
from: issue.fingerprint,
|
|
139
|
+
fromVersion: issue.fingerprintVersion,
|
|
140
|
+
to,
|
|
141
|
+
outcome,
|
|
142
|
+
mergesWith,
|
|
143
|
+
evidence,
|
|
144
|
+
};
|
|
145
|
+
});
|
|
146
|
+
const fromVersions = [...new Set(input.map(({ issue }) => issue.fingerprintVersion))].sort();
|
|
147
|
+
return {
|
|
148
|
+
fromVersion: fromVersions.join(', ') || algorithm.version,
|
|
149
|
+
toVersion: algorithm.version,
|
|
150
|
+
issues,
|
|
151
|
+
counts,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/** An issue's fingerprint at the new version, from the issue's own columns. */
|
|
155
|
+
function fromOwnColumns(issue, algorithm) {
|
|
156
|
+
return algorithm.fingerprintOf({
|
|
157
|
+
targetId: issue.targetId,
|
|
158
|
+
vulnKey: issue.vulnKey,
|
|
159
|
+
location: issue.location,
|
|
160
|
+
...(issue.parameter === undefined ? {} : { parameter: issue.parameter }),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* One finding's fingerprint at the new version, `vulnKey` re-derived and all,
|
|
165
|
+
* or `undefined` when the key cannot be derived from what the finding holds.
|
|
166
|
+
*/
|
|
167
|
+
function fingerprintOfFinding(issue, finding, algorithm) {
|
|
168
|
+
let key;
|
|
169
|
+
try {
|
|
170
|
+
key = algorithm.vulnKeyOf({
|
|
171
|
+
sourceEngine: finding.sourceEngine,
|
|
172
|
+
...(finding.sourceRuleId === undefined ? {} : { sourceRuleId: finding.sourceRuleId }),
|
|
173
|
+
...(finding.cwe === undefined ? {} : { cwe: finding.cwe }),
|
|
174
|
+
...(finding.category === undefined ? {} : { category: finding.category }),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return undefined;
|
|
179
|
+
}
|
|
180
|
+
return algorithm.fingerprintOf({
|
|
181
|
+
// The target is the issue's: a finding records the run it came from, and
|
|
182
|
+
// every run of an issue's evidence is against the same target anyway.
|
|
183
|
+
targetId: issue.targetId,
|
|
184
|
+
vulnKey: key,
|
|
185
|
+
location: finding.location,
|
|
186
|
+
...(finding.parameter === undefined ? {} : { parameter: finding.parameter }),
|
|
187
|
+
...(finding.port === undefined ? {} : { port: finding.port }),
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=refingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refingerprint.js","sourceRoot":"","sources":["../src/refingerprint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAqB7E,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,OAAO,EAAE,mBAAmB;IAC5B,aAAa,EAAE,WAAW;IAC1B,SAAS,EAAE,OAAO;CACnB,CAAC;AA0DF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAmC,EACnC,YAAkC,gBAAgB;IAElD,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnD,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,uEAAuE;QACvE,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,4DAA4D;QAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;YACrE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3F,CAAC;QAED,2EAA2E;QAC3E,yEAAyE;QACzE,sEAAsE;QACtE,uEAAuE;QACvE,wCAAwC;QACxC,EAAE;QACF,yEAAyE;QACzE,2EAA2E;QAC3E,uEAAuE;QACvE,oEAAoE;QACpE,yEAAyE;QACzE,yEAAyE;QACzE,2BAA2B;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACL,KAAK;gBACL,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,WAAW,EAAE,KAAK;gBAClB,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACvC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5E,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,QAAQ,CAAC,MAAM;YACzB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;YAC9C,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,0EAA0E;IAC1E,6BAA6B;IAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC5C,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,WAAW;YAAE,SAAS;QAC9B,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;gBAC7B,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAyC;QACnD,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,CAAC;KACf,CAAC;IAEF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,EAAa,EAAE;QAChF,MAAM,UAAU,GAAG;YACjB,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;SACrF,CAAC,IAAI,EAAE,CAAC;QAET,sEAAsE;QACtE,kEAAkE;QAClE,MAAM,OAAO,GAAyB,WAAW;YAC/C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC;gBACb,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;oBACrB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,WAAW;wBAC3B,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,OAAO,CAAC;QAElB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,WAAW;YACvB,WAAW,EAAE,KAAK,CAAC,kBAAkB;YACrC,EAAE;YACF,OAAO;YACP,UAAU;YACV,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,OAAO;QACL,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO;QACzD,SAAS,EAAE,SAAS,CAAC,OAAO;QAC5B,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAS,cAAc,CAAC,KAAY,EAAE,SAA+B;IACnE,OAAO,SAAS,CAAC,aAAa,CAAC;QAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;KACzE,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAC3B,KAAY,EACZ,OAAgB,EAChB,SAA+B;IAE/B,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;YACrF,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC,aAAa,CAAC;QAC7B,yEAAyE;QACzE,sEAAsE;QACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heading anchors and the contents list, produced together.
|
|
3
|
+
*
|
|
4
|
+
* **One pass over the rendered body, not two walks over the document.** A
|
|
5
|
+
* contents list built separately from the ids it links to is a list that can
|
|
6
|
+
* point at nothing — the failure is silent, it only shows up when somebody
|
|
7
|
+
* clicks, and it would appear the moment a heading's wording changed in one
|
|
8
|
+
* place and not the other. Here the ids and the entries come out of the same
|
|
9
|
+
* scan, so a heading that exists has an anchor and an entry, and one that does
|
|
10
|
+
* not exist has neither.
|
|
11
|
+
*
|
|
12
|
+
* This post-processes the renderer's **own** output, inside the same function
|
|
13
|
+
* that produced it. That is a different thing from the string surgery P7.1
|
|
14
|
+
* rules out: the rule there is against forking a published template, and this
|
|
15
|
+
* never reads one — every heading it matches was emitted a few lines earlier by
|
|
16
|
+
* the renderer calling it.
|
|
17
|
+
*/
|
|
18
|
+
/** One line of the contents list. */
|
|
19
|
+
export interface TocEntry {
|
|
20
|
+
/** Heading level, 2 or 3. */
|
|
21
|
+
readonly level: number;
|
|
22
|
+
/** The anchor it links to, without the `#`. */
|
|
23
|
+
readonly id: string;
|
|
24
|
+
/** The heading as printed. */
|
|
25
|
+
readonly text: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gives every `<h2>` and `<h3>` an id, and reports what it found.
|
|
29
|
+
*
|
|
30
|
+
* `<h4>` is deliberately left alone: it is an individual issue, and a report
|
|
31
|
+
* with sixty findings would have a contents list longer than its summary.
|
|
32
|
+
*/
|
|
33
|
+
export declare function anchorHtmlHeadings(html: string): {
|
|
34
|
+
html: string;
|
|
35
|
+
toc: TocEntry[];
|
|
36
|
+
};
|
|
37
|
+
/** The same, for Markdown, where the anchor is implied by the heading text. */
|
|
38
|
+
export declare function markdownHeadings(lines: readonly string[]): TocEntry[];
|
|
39
|
+
//# sourceMappingURL=anchors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchors.d.ts","sourceRoot":"","sources":["../../src/report/anchors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA6BD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,QAAQ,EAAE,CAAA;CAAE,CAiBlF;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAYrE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heading anchors and the contents list, produced together.
|
|
3
|
+
*
|
|
4
|
+
* **One pass over the rendered body, not two walks over the document.** A
|
|
5
|
+
* contents list built separately from the ids it links to is a list that can
|
|
6
|
+
* point at nothing — the failure is silent, it only shows up when somebody
|
|
7
|
+
* clicks, and it would appear the moment a heading's wording changed in one
|
|
8
|
+
* place and not the other. Here the ids and the entries come out of the same
|
|
9
|
+
* scan, so a heading that exists has an anchor and an entry, and one that does
|
|
10
|
+
* not exist has neither.
|
|
11
|
+
*
|
|
12
|
+
* This post-processes the renderer's **own** output, inside the same function
|
|
13
|
+
* that produced it. That is a different thing from the string surgery P7.1
|
|
14
|
+
* rules out: the rule there is against forking a published template, and this
|
|
15
|
+
* never reads one — every heading it matches was emitted a few lines earlier by
|
|
16
|
+
* the renderer calling it.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* A heading's anchor: lowercase, punctuation dropped, spaces hyphenated.
|
|
20
|
+
*
|
|
21
|
+
* The same rule GitHub and most Markdown renderers use, so a Markdown
|
|
22
|
+
* report's contents links resolve in the places Markdown is usually read —
|
|
23
|
+
* which is the only way this can work at all, because Markdown headings carry
|
|
24
|
+
* no explicit id to point at.
|
|
25
|
+
*/
|
|
26
|
+
function slug(text) {
|
|
27
|
+
return (text
|
|
28
|
+
.toLowerCase()
|
|
29
|
+
// Entities first: a heading rendered as `AT&T` should anchor on the
|
|
30
|
+
// text a reader sees, not on the escape that produced it.
|
|
31
|
+
.replace(/&[a-z]+;/gu, ' ')
|
|
32
|
+
.replace(/[^a-z0-9]+/gu, '-')
|
|
33
|
+
.replace(/^-+|-+$/gu, '') || 'section');
|
|
34
|
+
}
|
|
35
|
+
/** Makes `id` unique within a document, the way a duplicate heading is usually handled. */
|
|
36
|
+
function unique(id, taken) {
|
|
37
|
+
const seen = taken.get(id) ?? 0;
|
|
38
|
+
taken.set(id, seen + 1);
|
|
39
|
+
return seen === 0 ? id : `${id}-${String(seen)}`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gives every `<h2>` and `<h3>` an id, and reports what it found.
|
|
43
|
+
*
|
|
44
|
+
* `<h4>` is deliberately left alone: it is an individual issue, and a report
|
|
45
|
+
* with sixty findings would have a contents list longer than its summary.
|
|
46
|
+
*/
|
|
47
|
+
export function anchorHtmlHeadings(html) {
|
|
48
|
+
const toc = [];
|
|
49
|
+
const taken = new Map();
|
|
50
|
+
// Safe over this input because it is this package's own markup rather than
|
|
51
|
+
// anything from outside: h2 and h3 are emitted with plain escaped text and
|
|
52
|
+
// never with nested elements.
|
|
53
|
+
const anchored = html.replace(/<h([23])([^>]*)>([\s\S]*?)<\/h\1>/gu, (_match, level, attrs, text) => {
|
|
54
|
+
const id = unique(slug(text), taken);
|
|
55
|
+
toc.push({ level: Number(level), id, text });
|
|
56
|
+
return `<h${level}${attrs} id="${id}">${text}</h${level}>`;
|
|
57
|
+
});
|
|
58
|
+
return { html: anchored, toc };
|
|
59
|
+
}
|
|
60
|
+
/** The same, for Markdown, where the anchor is implied by the heading text. */
|
|
61
|
+
export function markdownHeadings(lines) {
|
|
62
|
+
const toc = [];
|
|
63
|
+
const taken = new Map();
|
|
64
|
+
for (const line of lines) {
|
|
65
|
+
const match = /^(#{2,3})\s+(.*)$/u.exec(line);
|
|
66
|
+
if (!match)
|
|
67
|
+
continue;
|
|
68
|
+
const text = match[2];
|
|
69
|
+
toc.push({ level: match[1].length, id: unique(slug(text), taken), text });
|
|
70
|
+
}
|
|
71
|
+
return toc;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=anchors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchors.js","sourceRoot":"","sources":["../../src/report/anchors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH;;;;;;;GAOG;AACH,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CACL,IAAI;SACD,WAAW,EAAE;QACd,wEAAwE;QACxE,0DAA0D;SACzD,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC;SAC1B,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,SAAS,CACzC,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,SAAS,MAAM,CAAC,EAAU,EAAE,KAA0B;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;IACxB,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,2EAA2E;IAC3E,2EAA2E;IAC3E,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAC3B,qCAAqC,EACrC,CAAC,MAAM,EAAE,KAAa,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;QACrD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,KAAK,KAAK,GAAG,KAAK,QAAQ,EAAE,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC;IAC7D,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACjC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAKL,KAAK,aAAa,EAEnB,MAAM,YAAY,CAAC;AAkWpB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CA0L7E"}
|