@code-pushup/utils 0.86.0 → 0.87.1
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/package.json +2 -2
- package/src/index.d.ts +3 -0
- package/src/index.js +3 -0
- package/src/index.js.map +1 -1
- package/src/lib/plugin-url-aggregation.d.ts +14 -0
- package/src/lib/plugin-url-aggregation.js +71 -0
- package/src/lib/plugin-url-aggregation.js.map +1 -0
- package/src/lib/plugin-url-config.d.ts +11 -0
- package/src/lib/plugin-url-config.js +40 -0
- package/src/lib/plugin-url-config.js.map +1 -0
- package/src/lib/reports/formatting.d.ts +14 -1
- package/src/lib/reports/formatting.js +34 -4
- package/src/lib/reports/formatting.js.map +1 -1
- package/src/lib/reports/generate-md-report-category-section.js +2 -2
- package/src/lib/reports/generate-md-report-category-section.js.map +1 -1
- package/src/lib/reports/generate-md-report.js +6 -5
- package/src/lib/reports/generate-md-report.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.87.1",
|
|
4
4
|
"description": "Low-level utilities (helper functions, etc.) used by Code PushUp CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/utils#readme",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"node": ">=17.0.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@code-pushup/models": "0.
|
|
30
|
+
"@code-pushup/models": "0.87.1",
|
|
31
31
|
"@isaacs/cliui": "^8.0.2",
|
|
32
32
|
"@poppinss/cliui": "^6.4.0",
|
|
33
33
|
"ansis": "^3.3.0",
|
package/src/index.d.ts
CHANGED
|
@@ -18,11 +18,14 @@ export { logMultipleResults } from './lib/log-results.js';
|
|
|
18
18
|
export { Logger, logger } from './lib/logger.js';
|
|
19
19
|
export { link, ui, type CliUi, type Column } from './lib/logging.js';
|
|
20
20
|
export { mergeConfigs } from './lib/merge-configs.js';
|
|
21
|
+
export { getUrlIdentifier, normalizeUrlInput, type PluginUrlContext, } from './lib/plugin-url-config.js';
|
|
22
|
+
export { addIndex, ContextValidationError, createCategoryRefs, expandAuditsForUrls, expandCategoryRefs, expandGroupsForUrls, removeIndex, shouldExpandForUrls, validateUrlContext, } from './lib/plugin-url-aggregation.js';
|
|
21
23
|
export { getProgressBar, type ProgressBar } from './lib/progress.js';
|
|
22
24
|
export { asyncSequential, groupByStatus, settlePromise, } from './lib/promises.js';
|
|
23
25
|
export { generateRandomId } from './lib/random.js';
|
|
24
26
|
export { CODE_PUSHUP_DOMAIN, CODE_PUSHUP_UNICODE_LOGO, FOOTER_PREFIX, README_LINK, TERMINAL_WIDTH, } from './lib/reports/constants.js';
|
|
25
27
|
export { listAuditsFromAllPlugins, listGroupsFromAllPlugins, } from './lib/reports/flatten-plugins.js';
|
|
28
|
+
export { formatIssueSeverities } from './lib/reports/formatting.js';
|
|
26
29
|
export { generateMdReport } from './lib/reports/generate-md-report.js';
|
|
27
30
|
export { generateMdReportsDiff, generateMdReportsDiffForMonorepo, } from './lib/reports/generate-md-reports-diff.js';
|
|
28
31
|
export { loadReport } from './lib/reports/load-report.js';
|
package/src/index.js
CHANGED
|
@@ -18,11 +18,14 @@ export { logMultipleResults } from './lib/log-results.js';
|
|
|
18
18
|
export { Logger, logger } from './lib/logger.js';
|
|
19
19
|
export { link, ui } from './lib/logging.js';
|
|
20
20
|
export { mergeConfigs } from './lib/merge-configs.js';
|
|
21
|
+
export { getUrlIdentifier, normalizeUrlInput, } from './lib/plugin-url-config.js';
|
|
22
|
+
export { addIndex, ContextValidationError, createCategoryRefs, expandAuditsForUrls, expandCategoryRefs, expandGroupsForUrls, removeIndex, shouldExpandForUrls, validateUrlContext, } from './lib/plugin-url-aggregation.js';
|
|
21
23
|
export { getProgressBar } from './lib/progress.js';
|
|
22
24
|
export { asyncSequential, groupByStatus, settlePromise, } from './lib/promises.js';
|
|
23
25
|
export { generateRandomId } from './lib/random.js';
|
|
24
26
|
export { CODE_PUSHUP_DOMAIN, CODE_PUSHUP_UNICODE_LOGO, FOOTER_PREFIX, README_LINK, TERMINAL_WIDTH, } from './lib/reports/constants.js';
|
|
25
27
|
export { listAuditsFromAllPlugins, listGroupsFromAllPlugins, } from './lib/reports/flatten-plugins.js';
|
|
28
|
+
export { formatIssueSeverities } from './lib/reports/formatting.js';
|
|
26
29
|
export { generateMdReport } from './lib/reports/generate-md-report.js';
|
|
27
30
|
export { generateMdReportsDiff, generateMdReportsDiffForMonorepo, } from './lib/reports/generate-md-reports-diff.js';
|
|
28
31
|
export { loadReport } from './lib/reports/load-report.js';
|
package/src/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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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Audit, CategoryRef, Group, PluginConfig } from '@code-pushup/models';
|
|
2
|
+
import { type PluginUrlContext } from './plugin-url-config.js';
|
|
3
|
+
export declare function shouldExpandForUrls(urlCount: number): boolean;
|
|
4
|
+
export declare function addIndex(slug: string, index: number): string;
|
|
5
|
+
export declare function removeIndex(slug: string): string;
|
|
6
|
+
export declare function resolveUrlWeight(weights: PluginUrlContext['weights'], index: number, userDefinedWeight?: number): number;
|
|
7
|
+
export declare function expandAuditsForUrls(audits: Audit[], urls: string[]): Audit[];
|
|
8
|
+
export declare function expandGroupsForUrls(groups: Group[], urls: string[]): Group[];
|
|
9
|
+
export declare function createCategoryRefs(groupSlug: string, pluginSlug: string, context: PluginUrlContext): CategoryRef[];
|
|
10
|
+
export declare function expandCategoryRefs(ref: CategoryRef, context: PluginUrlContext): CategoryRef[];
|
|
11
|
+
export declare class ContextValidationError extends Error {
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
export declare function validateUrlContext(context: PluginConfig['context']): asserts context is PluginUrlContext;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { SINGLE_URL_THRESHOLD, getUrlIdentifier, } from './plugin-url-config.js';
|
|
2
|
+
export function shouldExpandForUrls(urlCount) {
|
|
3
|
+
return urlCount > SINGLE_URL_THRESHOLD;
|
|
4
|
+
}
|
|
5
|
+
export function addIndex(slug, index) {
|
|
6
|
+
return `${slug}-${index + 1}`;
|
|
7
|
+
}
|
|
8
|
+
export function removeIndex(slug) {
|
|
9
|
+
return slug.replace(/-\d+$/, '');
|
|
10
|
+
}
|
|
11
|
+
export function resolveUrlWeight(weights, index, userDefinedWeight) {
|
|
12
|
+
return weights[index + 1] ?? userDefinedWeight ?? 1;
|
|
13
|
+
}
|
|
14
|
+
export function expandAuditsForUrls(audits, urls) {
|
|
15
|
+
return urls.flatMap((url, index) => audits.map(audit => ({
|
|
16
|
+
...audit,
|
|
17
|
+
slug: addIndex(audit.slug, index),
|
|
18
|
+
title: `${audit.title} (${getUrlIdentifier(url)})`,
|
|
19
|
+
})));
|
|
20
|
+
}
|
|
21
|
+
export function expandGroupsForUrls(groups, urls) {
|
|
22
|
+
return urls.flatMap((url, index) => groups.map(group => ({
|
|
23
|
+
...group,
|
|
24
|
+
slug: addIndex(group.slug, index),
|
|
25
|
+
title: `${group.title} (${getUrlIdentifier(url)})`,
|
|
26
|
+
refs: group.refs.map(ref => ({
|
|
27
|
+
...ref,
|
|
28
|
+
slug: addIndex(ref.slug, index),
|
|
29
|
+
})),
|
|
30
|
+
})));
|
|
31
|
+
}
|
|
32
|
+
export function createCategoryRefs(groupSlug, pluginSlug, context) {
|
|
33
|
+
return Array.from({ length: context.urlCount }, (_, i) => ({
|
|
34
|
+
plugin: pluginSlug,
|
|
35
|
+
slug: shouldExpandForUrls(context.urlCount)
|
|
36
|
+
? addIndex(groupSlug, i)
|
|
37
|
+
: groupSlug,
|
|
38
|
+
type: 'group',
|
|
39
|
+
weight: resolveUrlWeight(context.weights, i),
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
export function expandCategoryRefs(ref, context) {
|
|
43
|
+
return Array.from({ length: context.urlCount }, (_, i) => ({
|
|
44
|
+
...ref,
|
|
45
|
+
slug: shouldExpandForUrls(context.urlCount)
|
|
46
|
+
? addIndex(ref.slug, i)
|
|
47
|
+
: ref.slug,
|
|
48
|
+
weight: resolveUrlWeight(context.weights, i, ref.weight),
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
export class ContextValidationError extends Error {
|
|
52
|
+
constructor(message) {
|
|
53
|
+
super(`Invalid plugin context: ${message}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function validateUrlContext(context) {
|
|
57
|
+
if (!context || typeof context !== 'object') {
|
|
58
|
+
throw new ContextValidationError('must be an object');
|
|
59
|
+
}
|
|
60
|
+
const { urlCount, weights } = context;
|
|
61
|
+
if (typeof urlCount !== 'number' || urlCount < 0) {
|
|
62
|
+
throw new ContextValidationError('urlCount must be a non-negative number');
|
|
63
|
+
}
|
|
64
|
+
if (!weights || typeof weights !== 'object') {
|
|
65
|
+
throw new ContextValidationError('weights must be an object');
|
|
66
|
+
}
|
|
67
|
+
if (Object.keys(weights).length !== urlCount) {
|
|
68
|
+
throw new ContextValidationError('weights count must match urlCount');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=plugin-url-aggregation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-url-aggregation.js","sourceRoot":"","sources":["../../../src/lib/plugin-url-aggregation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PluginUrls } from '@code-pushup/models';
|
|
2
|
+
export type PluginUrlContext = {
|
|
3
|
+
urlCount: number;
|
|
4
|
+
weights: Record<string, number>;
|
|
5
|
+
};
|
|
6
|
+
export declare const SINGLE_URL_THRESHOLD = 1;
|
|
7
|
+
export declare function normalizeUrlInput(input: PluginUrls): {
|
|
8
|
+
urls: string[];
|
|
9
|
+
context: PluginUrlContext;
|
|
10
|
+
};
|
|
11
|
+
export declare function getUrlIdentifier(url: string): string;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const SINGLE_URL_THRESHOLD = 1;
|
|
2
|
+
export function normalizeUrlInput(input) {
|
|
3
|
+
if (typeof input === 'string') {
|
|
4
|
+
return {
|
|
5
|
+
urls: [input],
|
|
6
|
+
context: {
|
|
7
|
+
urlCount: 1,
|
|
8
|
+
weights: { 1: 1 },
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
if (Array.isArray(input)) {
|
|
13
|
+
return {
|
|
14
|
+
urls: input,
|
|
15
|
+
context: {
|
|
16
|
+
urlCount: input.length,
|
|
17
|
+
weights: Object.fromEntries(input.map((_, i) => [i + 1, 1])),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const entries = Object.entries(input);
|
|
22
|
+
return {
|
|
23
|
+
urls: entries.map(([url]) => url),
|
|
24
|
+
context: {
|
|
25
|
+
urlCount: entries.length,
|
|
26
|
+
weights: Object.fromEntries(entries.map(([, weight], i) => [i + 1, weight])),
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function getUrlIdentifier(url) {
|
|
31
|
+
try {
|
|
32
|
+
const { host, pathname } = new URL(url);
|
|
33
|
+
const path = pathname === '/' ? '' : pathname;
|
|
34
|
+
return `${host}${path}`;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return url;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=plugin-url-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-url-config.js","sourceRoot":"","sources":["../../../src/lib/plugin-url-config.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,MAAM,UAAU,iBAAiB,CAAC,KAAiB;IAIjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,OAAO,EAAE;gBACP,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;aAClB;SACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,QAAQ,EAAE,KAAK,CAAC,MAAM;gBACtB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7D;SACF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;QACjC,OAAO,EAAE;YACP,QAAQ,EAAE,OAAO,CAAC,MAAM;YACxB,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAChD;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9C,OAAO,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type HeadingLevel, type InlineText, MarkdownDocument } from 'build-md';
|
|
2
|
-
import type { AuditReport, SourceFileLocation, Table, Tree } from '@code-pushup/models';
|
|
2
|
+
import type { AuditReport, Issue, IssueSeverity, SourceFileLocation, Table, Tree } from '@code-pushup/models';
|
|
3
3
|
import type { MdReportOptions } from './types.js';
|
|
4
4
|
export declare function tableSection(table: Table, options?: {
|
|
5
5
|
level?: HeadingLevel;
|
|
@@ -21,3 +21,16 @@ export declare function formatSourceLine(position: SourceFileLocation['position'
|
|
|
21
21
|
export declare function formatGitHubLink(file: string, position: SourceFileLocation['position']): string;
|
|
22
22
|
export declare function formatGitLabLink(file: string, position: SourceFileLocation['position']): string;
|
|
23
23
|
export declare function formatFileLink(file: string, position: SourceFileLocation['position'], outputDir: string): string;
|
|
24
|
+
export declare function formatSeverityCounts(severityCounts: Partial<Record<IssueSeverity, number>>): string;
|
|
25
|
+
/**
|
|
26
|
+
* Formats issues into a human-readable severity summary string.
|
|
27
|
+
*
|
|
28
|
+
* @param issues - Array of issues with severity property
|
|
29
|
+
* @returns Formatted string like "3 errors, 5 warnings, 2 infos"
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatIssueSeverities(issues: Pick<Issue, 'severity'>[]): string;
|
|
32
|
+
/**
|
|
33
|
+
* Wraps HTML tags in backticks to prevent markdown parsers
|
|
34
|
+
* from interpreting them as actual HTML.
|
|
35
|
+
*/
|
|
36
|
+
export declare function wrapTags(text: string | undefined): string;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { MarkdownDocument, md, } from 'build-md';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { pluralizeToken } from '../formatting.js';
|
|
3
4
|
import { formatAsciiTree } from '../text-formats/ascii/tree.js';
|
|
4
5
|
import { columnsToStringArray, getColumnAlignments, rowToStringArray, } from '../text-formats/table.js';
|
|
6
|
+
import { countOccurrences, objectToEntries } from '../transform.js';
|
|
5
7
|
import { AUDIT_DETAILS_HEADING_LEVEL } from './constants.js';
|
|
6
8
|
import { getEnvironmentType, getGitHubBaseUrl, getGitLabBaseUrl, } from './environment-type.js';
|
|
9
|
+
import { compareIssueSeverity } from './utils.js';
|
|
7
10
|
export function tableSection(table, options) {
|
|
8
11
|
if (table.rows.length === 0) {
|
|
9
12
|
return null;
|
|
@@ -35,13 +38,14 @@ export function metaDescription(audit) {
|
|
|
35
38
|
if (!description) {
|
|
36
39
|
return docsLink;
|
|
37
40
|
}
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
const formattedDescription = wrapTags(description);
|
|
42
|
+
const parsedDescription = formattedDescription.endsWith('```')
|
|
43
|
+
? `${formattedDescription}\n\n`
|
|
44
|
+
: `${formattedDescription} `;
|
|
41
45
|
return md `${parsedDescription}${docsLink}`;
|
|
42
46
|
}
|
|
43
47
|
if (description && description.trim().length > 0) {
|
|
44
|
-
return description;
|
|
48
|
+
return wrapTags(description);
|
|
45
49
|
}
|
|
46
50
|
return '';
|
|
47
51
|
}
|
|
@@ -109,4 +113,30 @@ export function formatFileLink(file, position, outputDir) {
|
|
|
109
113
|
return relativePath;
|
|
110
114
|
}
|
|
111
115
|
}
|
|
116
|
+
export function formatSeverityCounts(severityCounts) {
|
|
117
|
+
return objectToEntries(severityCounts)
|
|
118
|
+
.toSorted(([a], [b]) => -compareIssueSeverity(a, b))
|
|
119
|
+
.map(([severity, count = 0]) => pluralizeToken(severity, count))
|
|
120
|
+
.join(', ');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Formats issues into a human-readable severity summary string.
|
|
124
|
+
*
|
|
125
|
+
* @param issues - Array of issues with severity property
|
|
126
|
+
* @returns Formatted string like "3 errors, 5 warnings, 2 infos"
|
|
127
|
+
*/
|
|
128
|
+
export function formatIssueSeverities(issues) {
|
|
129
|
+
const severityCounts = countOccurrences(issues.map(({ severity }) => severity));
|
|
130
|
+
return formatSeverityCounts(severityCounts);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Wraps HTML tags in backticks to prevent markdown parsers
|
|
134
|
+
* from interpreting them as actual HTML.
|
|
135
|
+
*/
|
|
136
|
+
export function wrapTags(text) {
|
|
137
|
+
if (!text) {
|
|
138
|
+
return '';
|
|
139
|
+
}
|
|
140
|
+
return text.replace(/<[a-z][a-z0-9]*[^>]*>/gi, '`$&`');
|
|
141
|
+
}
|
|
112
142
|
//# sourceMappingURL=formatting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../../src/lib/reports/formatting.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAChB,EAAE,GACH,MAAM,UAAU,CAAC;AAClB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../../src/lib/reports/formatting.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MarkdownDocument, md } from 'build-md';
|
|
2
2
|
import { slugify } from '../formatting.js';
|
|
3
3
|
import { HIERARCHY } from '../text-formats/index.js';
|
|
4
|
-
import { metaDescription } from './formatting.js';
|
|
4
|
+
import { metaDescription, wrapTags } from './formatting.js';
|
|
5
5
|
import { getSortableAuditByRef, getSortableGroupByRef } from './sorting.js';
|
|
6
6
|
import { countCategoryAudits, formatReportScore, getPluginNameFromSlug, scoreFilter, scoreMarker, scoreTargetIcon, } from './utils.js';
|
|
7
7
|
export function categoriesOverviewSection(report, options) {
|
|
@@ -49,7 +49,7 @@ export function categoriesDetailsSection(report, options) {
|
|
|
49
49
|
})));
|
|
50
50
|
}
|
|
51
51
|
export function categoryRef({ title, score, value, displayValue }, pluginTitle) {
|
|
52
|
-
const auditTitleAsLink = md.link(`#${slugify(title)}-${slugify(pluginTitle)}`, title);
|
|
52
|
+
const auditTitleAsLink = md.link(`#${slugify(title)}-${slugify(pluginTitle)}`, wrapTags(title));
|
|
53
53
|
const marker = scoreMarker(score, 'square');
|
|
54
54
|
return md `${marker} ${auditTitleAsLink} (${md.italic(pluginTitle)}) - ${md.bold((displayValue || value).toString())}`;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-md-report-category-section.js","sourceRoot":"","sources":["../../../../src/lib/reports/generate-md-report-category-section.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-md-report-category-section.js","sourceRoot":"","sources":["../../../../src/lib/reports/generate-md-report-category-section.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { MarkdownDocument, md } from 'build-md';
|
|
|
2
2
|
import { formatDate, formatDuration } from '../formatting.js';
|
|
3
3
|
import { HIERARCHY } from '../text-formats/index.js';
|
|
4
4
|
import { AUDIT_DETAILS_HEADING_LEVEL, FOOTER_PREFIX, README_LINK, REPORT_HEADLINE_TEXT, } from './constants.js';
|
|
5
|
-
import { formatSourceLine, linkToLocalSourceForIde, metaDescription, tableSection, treeSection, } from './formatting.js';
|
|
5
|
+
import { formatSourceLine, linkToLocalSourceForIde, metaDescription, tableSection, treeSection, wrapTags, } from './formatting.js';
|
|
6
6
|
import { categoriesDetailsSection, categoriesOverviewSection, } from './generate-md-report-category-section.js';
|
|
7
7
|
import { formatReportScore, scoreFilter, scoreMarker, severityMarker, } from './utils.js';
|
|
8
8
|
export function auditDetailsAuditValue({ score, value, displayValue, }) {
|
|
@@ -41,15 +41,16 @@ export function auditDetailsIssues(issues = [], options) {
|
|
|
41
41
|
{ heading: 'Line(s)', alignment: 'center' },
|
|
42
42
|
], issues.map(({ severity: level, message, source }) => {
|
|
43
43
|
const severity = md `${severityMarker(level)} ${md.italic(level)}`;
|
|
44
|
+
const formattedMessage = wrapTags(message);
|
|
44
45
|
if (!source) {
|
|
45
|
-
return [severity,
|
|
46
|
+
return [severity, formattedMessage];
|
|
46
47
|
}
|
|
47
48
|
const file = linkToLocalSourceForIde(source, options);
|
|
48
49
|
if (!source.position) {
|
|
49
|
-
return [severity,
|
|
50
|
+
return [severity, formattedMessage, file];
|
|
50
51
|
}
|
|
51
52
|
const line = formatSourceLine(source.position);
|
|
52
|
-
return [severity,
|
|
53
|
+
return [severity, formattedMessage, file, line];
|
|
53
54
|
}));
|
|
54
55
|
}
|
|
55
56
|
export function auditDetails(audit, options) {
|
|
@@ -72,7 +73,7 @@ export function auditsSection({ plugins }, options) {
|
|
|
72
73
|
.$foreach(plugins.flatMap(plugin => plugin.audits
|
|
73
74
|
.filter(isScoreDisplayed)
|
|
74
75
|
.map(audit => ({ ...audit, plugin }))), (doc, { plugin, ...audit }) => {
|
|
75
|
-
const auditTitle = `${audit.title} (${plugin.title})`;
|
|
76
|
+
const auditTitle = `${wrapTags(audit.title)} (${plugin.title})`;
|
|
76
77
|
const detailsContent = auditDetails(audit, options);
|
|
77
78
|
const descriptionContent = metaDescription(audit);
|
|
78
79
|
return doc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-md-report.js","sourceRoot":"","sources":["../../../../src/lib/reports/generate-md-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,gBAAgB,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EACL,2BAA2B,EAC3B,aAAa,EACb,WAAW,EACX,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,WAAW,
|
|
1
|
+
{"version":3,"file":"generate-md-report.js","sourceRoot":"","sources":["../../../../src/lib/reports/generate-md-report.ts"],"names":[],"mappings":"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"}
|