@code-pushup/utils 0.108.2 → 0.110.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/package.json +2 -2
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/performance-observer.d.ts +3 -3
- package/src/lib/performance-observer.js +1 -1
- package/src/lib/performance-observer.js.map +1 -1
- package/src/lib/profiler/constants.d.ts +5 -0
- package/src/lib/profiler/constants.js +5 -0
- package/src/lib/profiler/constants.js.map +1 -1
- package/src/lib/profiler/profiler.d.ts +6 -0
- package/src/lib/profiler/profiler.js +10 -0
- package/src/lib/profiler/profiler.js.map +1 -1
- package/src/lib/{trace-file-utils.d.ts → profiler/trace-file-utils.d.ts} +52 -2
- package/src/lib/{trace-file-utils.js → profiler/trace-file-utils.js} +120 -9
- package/src/lib/profiler/trace-file-utils.js.map +1 -0
- package/src/lib/{trace-file.type.d.ts → profiler/trace-file.type.d.ts} +6 -2
- package/src/lib/profiler/trace-file.type.js.map +1 -0
- package/src/lib/profiler/wal-json-trace.d.ts +25 -0
- package/src/lib/profiler/wal-json-trace.js +77 -0
- package/src/lib/profiler/wal-json-trace.js.map +1 -0
- package/src/lib/reports/formatting.d.ts +6 -1
- package/src/lib/reports/formatting.js +15 -1
- package/src/lib/reports/formatting.js.map +1 -1
- package/src/lib/reports/generate-md-report.js +13 -8
- package/src/lib/reports/generate-md-report.js.map +1 -1
- package/src/lib/reports/type-guards.d.ts +9 -0
- package/src/lib/reports/type-guards.js +17 -0
- package/src/lib/reports/type-guards.js.map +1 -0
- package/src/lib/reports/utils.js +14 -3
- package/src/lib/reports/utils.js.map +1 -1
- package/src/lib/wal.d.ts +236 -0
- package/src/lib/wal.js +411 -0
- package/src/lib/wal.js.map +1 -0
- package/src/lib/sink-source.type.d.ts +0 -43
- package/src/lib/sink-source.type.js +0 -2
- package/src/lib/sink-source.type.js.map +0 -1
- package/src/lib/trace-file-utils.js.map +0 -1
- package/src/lib/trace-file.type.js.map +0 -1
- /package/src/lib/{trace-file.type.js → profiler/trace-file.type.js} +0 -0
|
@@ -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":"AAAA,OAAO,EAGL,gBAAgB,EAChB,EAAE,GACH,MAAM,UAAU,CAAC;AAClB,OAAO,IAAI,MAAM,WAAW,CAAC;AAU7B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,UAAU,YAAY,CAC1B,KAAY,EACZ,OAEC;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,KAAK,GAAG,2BAA2B,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,IAAI,gBAAgB,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAC7D,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,EACF,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAU,EACV,OAEC;IAED,MAAM,EAAE,KAAK,GAAG,2BAA2B,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAC9D,OAAO,IAAI,gBAAgB,EAAE;SAC1B,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;SAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,eAAe,CAC7B,KAAmD;IAEnD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,oBAAoB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5D,CAAC,CAAC,GAAG,oBAAoB,MAAM;YAC/B,CAAC,CAAC,GAAG,oBAAoB,GAAG,CAAC;QAC/B,OAAO,EAAE,CAAA,GAAG,iBAAiB,GAAG,QAAQ,EAAE,CAAC;IAC7C,CAAC;IACD,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAA0B,EAC1B,OAA4C;IAE5C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAClC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEpC,eAAe;IACf,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAmB,EACnB,OAA4C;IAE5C,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAwC;IAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IACxC,OAAO,OAAO,IAAI,SAAS,KAAK,OAAO;QACrC,CAAC,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE;QAC3B,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,QAAwC;IAExC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;IAC7E,MAAM,GAAG,GAAG,OAAO;QACjB,CAAC,CAAC,SAAS;YACT,CAAC,CAAC,IAAI,OAAO,IAAI,SAAS,EAAE;YAC5B,CAAC,CAAC,IAAI,OAAO,EAAE;QACjB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,OAAO,GAAG,OAAO,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,QAAwC;IAExC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,GAAG,OAAO,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IACxC,MAAM,SAAS,GACb,OAAO,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,OAAO,GAAG,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,QAAwC,EACxC,SAAiB;IAEjB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IAEjC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAC5E,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,cAAsD;IAEtD,OAAO,eAAe,CAAC,cAAc,CAAC;SACnC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACnD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAiC;IAEjC,MAAM,cAAc,GAAG,gBAAgB,CACrC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CACvC,CAAC;IACF,OAAO,oBAAoB,CAAC,cAAc,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAwB;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACnE,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,GAAG,WAAW,CAAC;AAC9E,CAAC"}
|
|
@@ -2,8 +2,9 @@ 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,
|
|
5
|
+
import { formatSelectorLocation, formatSourceLine, linkToSource, metaDescription, tableSection, treeSection, wrapTags, } from './formatting.js';
|
|
6
6
|
import { categoriesDetailsSection, categoriesOverviewSection, } from './generate-md-report-category-section.js';
|
|
7
|
+
import { isFileSource, isUrlSource } from './type-guards.js';
|
|
7
8
|
import { formatReportScore, scoreFilter, scoreMarker, severityMarker, } from './utils.js';
|
|
8
9
|
export function auditDetailsAuditValue({ score, value, displayValue, }) {
|
|
9
10
|
return md `${scoreMarker(score, 'square')} ${md.bold(String(displayValue ?? value))} (score: ${formatReportScore(score)})`;
|
|
@@ -37,20 +38,24 @@ export function auditDetailsIssues(issues = [], options) {
|
|
|
37
38
|
.table([
|
|
38
39
|
{ heading: 'Severity', alignment: 'center' },
|
|
39
40
|
{ heading: 'Message', alignment: 'left' },
|
|
40
|
-
{ heading: 'Source
|
|
41
|
-
{ heading: '
|
|
41
|
+
{ heading: 'Source', alignment: 'left' },
|
|
42
|
+
{ heading: 'Location', alignment: 'center' },
|
|
42
43
|
], issues.map(({ severity: level, message, source }) => {
|
|
43
44
|
const severity = md `${severityMarker(level)} ${md.italic(level)}`;
|
|
44
45
|
const formattedMessage = wrapTags(message);
|
|
45
46
|
if (!source) {
|
|
46
47
|
return [severity, formattedMessage];
|
|
47
48
|
}
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
|
|
49
|
+
const sourceLink = linkToSource(source, options);
|
|
50
|
+
if (isFileSource(source) && source.position) {
|
|
51
|
+
const location = formatSourceLine(source.position);
|
|
52
|
+
return [severity, formattedMessage, sourceLink, location];
|
|
51
53
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
+
if (isUrlSource(source) && source.selector) {
|
|
55
|
+
const location = formatSelectorLocation(source.selector);
|
|
56
|
+
return [severity, formattedMessage, sourceLink, md.code(location)];
|
|
57
|
+
}
|
|
58
|
+
return [severity, formattedMessage, sourceLink];
|
|
54
59
|
}));
|
|
55
60
|
}
|
|
56
61
|
export function auditDetails(audit, options) {
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"generate-md-report.js","sourceRoot":"","sources":["../../../../src/lib/reports/generate-md-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FileIssue, Issue, IssueSource, SourceFileLocation, SourceUrlLocation, UrlIssue } from '@code-pushup/models';
|
|
2
|
+
/** Type guard for file-based source */
|
|
3
|
+
export declare function isFileSource(source: IssueSource): source is SourceFileLocation;
|
|
4
|
+
/** Type guard for URL-based source */
|
|
5
|
+
export declare function isUrlSource(source: IssueSource): source is SourceUrlLocation;
|
|
6
|
+
/** Type guard for issue with file source */
|
|
7
|
+
export declare function isFileIssue(issue: Issue): issue is FileIssue;
|
|
8
|
+
/** Type guard for issue with URL source */
|
|
9
|
+
export declare function isUrlIssue(issue: Issue): issue is UrlIssue;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Type guard for file-based source */
|
|
2
|
+
export function isFileSource(source) {
|
|
3
|
+
return 'file' in source;
|
|
4
|
+
}
|
|
5
|
+
/** Type guard for URL-based source */
|
|
6
|
+
export function isUrlSource(source) {
|
|
7
|
+
return 'url' in source;
|
|
8
|
+
}
|
|
9
|
+
/** Type guard for issue with file source */
|
|
10
|
+
export function isFileIssue(issue) {
|
|
11
|
+
return issue.source != null && isFileSource(issue.source);
|
|
12
|
+
}
|
|
13
|
+
/** Type guard for issue with URL source */
|
|
14
|
+
export function isUrlIssue(issue) {
|
|
15
|
+
return issue.source != null && isUrlSource(issue.source);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=type-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../../../src/lib/reports/type-guards.ts"],"names":[],"mappings":"AASA,uCAAuC;AACvC,MAAM,UAAU,YAAY,CAC1B,MAAmB;IAEnB,OAAO,MAAM,IAAI,MAAM,CAAC;AAC1B,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,KAAK,IAAI,MAAM,CAAC;AACzB,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,OAAO,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC"}
|
package/src/lib/reports/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ansis, {} from 'ansis';
|
|
2
2
|
import { md } from 'build-md';
|
|
3
3
|
import { SCORE_COLOR_RANGE } from './constants.js';
|
|
4
|
+
import { isFileSource } from './type-guards.js';
|
|
4
5
|
export function scoreFilter(options) {
|
|
5
6
|
const { isScoreListed = () => true } = options ?? {};
|
|
6
7
|
return ({ score }) => isScoreListed(score);
|
|
@@ -156,6 +157,9 @@ export function throwIsNotPresentError(itemName, presentPlace) {
|
|
|
156
157
|
export function getPluginNameFromSlug(slug, plugins) {
|
|
157
158
|
return (plugins.find(({ slug: pluginSlug }) => pluginSlug === slug)?.title || slug);
|
|
158
159
|
}
|
|
160
|
+
function getSourceIdentifier(source) {
|
|
161
|
+
return isFileSource(source) ? source.file : source.url;
|
|
162
|
+
}
|
|
159
163
|
export function compareIssues(a, b) {
|
|
160
164
|
if (a.severity !== b.severity) {
|
|
161
165
|
return -compareIssueSeverity(a.severity, b.severity);
|
|
@@ -166,10 +170,17 @@ export function compareIssues(a, b) {
|
|
|
166
170
|
if (a.source && !b.source) {
|
|
167
171
|
return 1;
|
|
168
172
|
}
|
|
169
|
-
if (a.source
|
|
170
|
-
|
|
173
|
+
if (a.source && b.source) {
|
|
174
|
+
const aId = getSourceIdentifier(a.source);
|
|
175
|
+
const bId = getSourceIdentifier(b.source);
|
|
176
|
+
if (aId !== bId) {
|
|
177
|
+
return aId.localeCompare(bId);
|
|
178
|
+
}
|
|
179
|
+
if (isFileSource(a.source) && isFileSource(b.source)) {
|
|
180
|
+
return compareSourceFilePosition(a.source.position, b.source.position);
|
|
181
|
+
}
|
|
171
182
|
}
|
|
172
|
-
return
|
|
183
|
+
return 0;
|
|
173
184
|
}
|
|
174
185
|
function compareSourceFilePosition(a, b) {
|
|
175
186
|
if (!a && b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/reports/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAmB,EAAE,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/reports/utils.ts"],"names":[],"mappings":"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"}
|
package/src/lib/wal.d.ts
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codec for encoding/decoding values to/from strings for WAL storage.
|
|
3
|
+
* Used to serialize/deserialize records written to and read from WAL files.
|
|
4
|
+
*/
|
|
5
|
+
export type Codec<I, O = string> = {
|
|
6
|
+
/** Encode a value to a string for storage */
|
|
7
|
+
encode: (v: I) => O;
|
|
8
|
+
/** Decode a string back to the original value type */
|
|
9
|
+
decode: (data: O) => I;
|
|
10
|
+
};
|
|
11
|
+
export type InvalidEntry<O = string> = {
|
|
12
|
+
__invalid: true;
|
|
13
|
+
raw: O;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Interface for sinks that can append items.
|
|
17
|
+
* Allows for different types of appendable storage (WAL, in-memory, etc.)
|
|
18
|
+
*/
|
|
19
|
+
export type AppendableSink<T> = {
|
|
20
|
+
append: (item: T) => void;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Result of recovering records from a WAL file.
|
|
24
|
+
* Contains successfully recovered records and any errors encountered during parsing.
|
|
25
|
+
*/
|
|
26
|
+
export type RecoverResult<T> = {
|
|
27
|
+
/** Successfully recovered records */
|
|
28
|
+
records: T[];
|
|
29
|
+
/** Errors encountered during recovery with line numbers and context */
|
|
30
|
+
errors: {
|
|
31
|
+
lineNo: number;
|
|
32
|
+
line: string;
|
|
33
|
+
error: Error;
|
|
34
|
+
}[];
|
|
35
|
+
/** Last incomplete line if file was truncated (null if clean) */
|
|
36
|
+
partialTail: string | null;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Statistics about the WAL file state and last recovery operation.
|
|
40
|
+
*/
|
|
41
|
+
export type WalStats<T> = {
|
|
42
|
+
/** File path for this WAL */
|
|
43
|
+
filePath: string;
|
|
44
|
+
/** Whether the WAL file is currently closed */
|
|
45
|
+
isClosed: boolean;
|
|
46
|
+
/** Whether the WAL file exists on disk */
|
|
47
|
+
fileExists: boolean;
|
|
48
|
+
/** File size in bytes (0 if file doesn't exist) */
|
|
49
|
+
fileSize: number;
|
|
50
|
+
/** Last recovery state from the most recent {@link recover} or {@link repack} operation */
|
|
51
|
+
lastRecovery: RecoverResult<T | InvalidEntry<string>> | null;
|
|
52
|
+
};
|
|
53
|
+
export declare const createTolerantCodec: <I, O = string>(codec: {
|
|
54
|
+
encode: (v: I) => O;
|
|
55
|
+
decode: (d: O) => I;
|
|
56
|
+
}) => Codec<I | InvalidEntry<O>, O>;
|
|
57
|
+
export declare function filterValidRecords<T>(records: (T | InvalidEntry<unknown>)[]): T[];
|
|
58
|
+
/**
|
|
59
|
+
* Pure helper function to recover records from WAL file content.
|
|
60
|
+
* @param content - Raw file content as string
|
|
61
|
+
* @param decode - function for decoding records
|
|
62
|
+
* @returns Recovery result with records, errors, and partial tail
|
|
63
|
+
*/
|
|
64
|
+
export declare function recoverFromContent<T>(content: string, decode: Codec<T>['decode']): RecoverResult<T>;
|
|
65
|
+
/**
|
|
66
|
+
* Write-Ahead Log implementation for crash-safe append-only logging.
|
|
67
|
+
* Provides atomic operations for writing, recovering, and repacking log entries.
|
|
68
|
+
*/
|
|
69
|
+
export declare class WriteAheadLogFile<T> implements AppendableSink<T> {
|
|
70
|
+
#private;
|
|
71
|
+
/**
|
|
72
|
+
* Create a new WAL file instance.
|
|
73
|
+
* @param options - Configuration options
|
|
74
|
+
*/
|
|
75
|
+
constructor(options: {
|
|
76
|
+
file: string;
|
|
77
|
+
codec: Codec<T>;
|
|
78
|
+
});
|
|
79
|
+
/** Get the file path for this WAL */
|
|
80
|
+
getPath: () => string;
|
|
81
|
+
/** Open the WAL file for writing (creates directories if needed) */
|
|
82
|
+
open: () => void;
|
|
83
|
+
/**
|
|
84
|
+
* Append a record to the WAL.
|
|
85
|
+
* @param v - Record to append
|
|
86
|
+
* @throws Error if WAL cannot be opened
|
|
87
|
+
*/
|
|
88
|
+
append: (v: T) => void;
|
|
89
|
+
/** Close the WAL file */
|
|
90
|
+
close: () => void;
|
|
91
|
+
isClosed: () => boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Recover all records from the WAL file.
|
|
94
|
+
* Handles partial writes and decode errors gracefully.
|
|
95
|
+
* Updates the recovery state (accessible via {@link getStats}).
|
|
96
|
+
* @returns Recovery result with records, errors, and partial tail
|
|
97
|
+
*/
|
|
98
|
+
recover(): RecoverResult<T | InvalidEntry<string>>;
|
|
99
|
+
/**
|
|
100
|
+
* Repack the WAL by recovering all valid records and rewriting cleanly.
|
|
101
|
+
* Removes corrupted entries and ensures clean formatting.
|
|
102
|
+
* Updates the recovery state (accessible via {@link getStats}).
|
|
103
|
+
* @param out - Output path (defaults to current file)
|
|
104
|
+
*/
|
|
105
|
+
repack(out?: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Get comprehensive statistics about the WAL file state.
|
|
108
|
+
* Includes file information, open/close status, and last recovery state.
|
|
109
|
+
* @returns Statistics object with file info and last recovery state
|
|
110
|
+
*/
|
|
111
|
+
getStats(): WalStats<T>;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Format descriptor that binds codec and file extension together.
|
|
115
|
+
* Prevents misconfiguration by keeping related concerns in one object.
|
|
116
|
+
*/
|
|
117
|
+
export type WalFormat<T extends object | string> = {
|
|
118
|
+
/** Base name for the WAL (e.g., "trace") */
|
|
119
|
+
baseName: string;
|
|
120
|
+
/** Shard file extension (e.g., ".jsonl") */
|
|
121
|
+
walExtension: string;
|
|
122
|
+
/** Final file extension (e.g., ".json", ".trace.json") falls back to walExtension if not provided */
|
|
123
|
+
finalExtension: string;
|
|
124
|
+
/** Codec for encoding/decoding records */
|
|
125
|
+
codec: Codec<T, string>;
|
|
126
|
+
/** Finalizer for converting records to a string */
|
|
127
|
+
finalizer: (records: (T | InvalidEntry<string>)[], opt?: Record<string, unknown>) => string;
|
|
128
|
+
};
|
|
129
|
+
export declare const stringCodec: <T extends string | object = string>() => Codec<T>;
|
|
130
|
+
/**
|
|
131
|
+
* Parses a partial WalFormat configuration and returns a complete WalFormat object.
|
|
132
|
+
* All fallback values are targeting string types.
|
|
133
|
+
* - baseName defaults to 'wal'
|
|
134
|
+
* - walExtension defaults to '.log'
|
|
135
|
+
* - finalExtension defaults to '.log'
|
|
136
|
+
* - codec defaults to stringCodec<T>()
|
|
137
|
+
* - finalizer defaults to encoding each record using codec.encode() and joining with newlines.
|
|
138
|
+
* For object types, this properly JSON-stringifies them (not [object Object]).
|
|
139
|
+
* InvalidEntry records use their raw string value directly.
|
|
140
|
+
* @param format - Partial WalFormat configuration
|
|
141
|
+
* @returns Parsed WalFormat with defaults filled in
|
|
142
|
+
*/
|
|
143
|
+
export declare function parseWalFormat<T extends object | string = object>(format: Partial<WalFormat<T>>): WalFormat<T>;
|
|
144
|
+
/**
|
|
145
|
+
* Determines if this process is the leader WAL process using the origin PID heuristic.
|
|
146
|
+
*
|
|
147
|
+
* The leader is the process that first enabled profiling (the one that set CP_PROFILER_ORIGIN_PID).
|
|
148
|
+
* All descendant processes inherit the environment but have different PIDs.
|
|
149
|
+
*
|
|
150
|
+
* @returns true if this is the leader WAL process, false otherwise
|
|
151
|
+
*/
|
|
152
|
+
export declare function isLeaderWal(envVarName: string, profilerID: string): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Initialize the origin PID environment variable if not already set.
|
|
155
|
+
* This must be done as early as possible before any user code runs.
|
|
156
|
+
* Sets envVarName to the current process ID if not already defined.
|
|
157
|
+
*/
|
|
158
|
+
export declare function setLeaderWal(envVarName: string, profilerID: string): void;
|
|
159
|
+
/**
|
|
160
|
+
* Generates a human-readable shard ID.
|
|
161
|
+
* This ID is unique per process/thread/shard combination and used in the file name.
|
|
162
|
+
* Format: readable-timestamp.pid.threadId.shardCount
|
|
163
|
+
* Example: "20240101-120000-000.12345.1.1"
|
|
164
|
+
* Becomes file: trace.20240101-120000-000.12345.1.1.log
|
|
165
|
+
*/
|
|
166
|
+
export declare function getShardId(): string;
|
|
167
|
+
/**
|
|
168
|
+
* Generates a human-readable sharded group ID.
|
|
169
|
+
* This ID is a globally unique, sortable, human-readable date string per run.
|
|
170
|
+
* Used directly as the folder name to group shards.
|
|
171
|
+
* Format: yyyymmdd-hhmmss-ms
|
|
172
|
+
* Example: "20240101-120000-000"
|
|
173
|
+
*/
|
|
174
|
+
export declare function getShardedGroupId(): string;
|
|
175
|
+
/**
|
|
176
|
+
* Regex patterns for validating WAL ID formats
|
|
177
|
+
*/
|
|
178
|
+
export declare const WAL_ID_PATTERNS: {
|
|
179
|
+
/** Readable date format: yyyymmdd-hhmmss-ms */
|
|
180
|
+
readonly READABLE_DATE: RegExp;
|
|
181
|
+
/** Group ID format: yyyymmdd-hhmmss-ms */
|
|
182
|
+
readonly GROUP_ID: RegExp;
|
|
183
|
+
/** Shard ID format: readable-date.pid.threadId.count */
|
|
184
|
+
readonly SHARD_ID: RegExp;
|
|
185
|
+
};
|
|
186
|
+
export declare function sortableReadableDateString(timestampMs: string): string;
|
|
187
|
+
/**
|
|
188
|
+
* Generates a path to a shard file using human-readable IDs.
|
|
189
|
+
* Both groupId and shardId are already in readable date format.
|
|
190
|
+
*
|
|
191
|
+
* Example with groupId "20240101-120000-000" and shardId "20240101-120000-000.12345.1.1":
|
|
192
|
+
* Full path: /base/20240101-120000-000/trace.20240101-120000-000.12345.1.1.log
|
|
193
|
+
*
|
|
194
|
+
* @param opt.dir - The directory to store the shard file
|
|
195
|
+
* @param opt.format - The WalFormat to use for the shard file
|
|
196
|
+
* @param opt.groupId - The human-readable group ID (yyyymmdd-hhmmss-ms format)
|
|
197
|
+
* @param opt.shardId - The human-readable shard ID (readable-timestamp.pid.threadId.count format)
|
|
198
|
+
* @returns The path to the shard file
|
|
199
|
+
*/
|
|
200
|
+
export declare function getShardedPath<T extends object | string = object>(opt: {
|
|
201
|
+
dir?: string;
|
|
202
|
+
format: WalFormat<T>;
|
|
203
|
+
groupId: string;
|
|
204
|
+
shardId: string;
|
|
205
|
+
}): string;
|
|
206
|
+
export declare function getShardedFinalPath<T extends object | string = object>(opt: {
|
|
207
|
+
dir?: string;
|
|
208
|
+
format: WalFormat<T>;
|
|
209
|
+
groupId: string;
|
|
210
|
+
}): string;
|
|
211
|
+
/**
|
|
212
|
+
* Sharded Write-Ahead Log manager for coordinating multiple WAL shards.
|
|
213
|
+
* Handles distributed logging across multiple processes/files with atomic finalization.
|
|
214
|
+
*/
|
|
215
|
+
export declare class ShardedWal<T extends object | string = object> {
|
|
216
|
+
#private;
|
|
217
|
+
readonly groupId: string;
|
|
218
|
+
/**
|
|
219
|
+
* Create a sharded WAL manager.
|
|
220
|
+
*/
|
|
221
|
+
constructor(opt: {
|
|
222
|
+
dir?: string;
|
|
223
|
+
format: Partial<WalFormat<T>>;
|
|
224
|
+
groupId?: string;
|
|
225
|
+
});
|
|
226
|
+
shard(shardId?: string): WriteAheadLogFile<T>;
|
|
227
|
+
/** Get all shard file paths matching this WAL's base name */
|
|
228
|
+
private shardFiles;
|
|
229
|
+
/**
|
|
230
|
+
* Finalize all shards by merging them into a single output file.
|
|
231
|
+
* Recovers all records from all shards, validates no errors, and writes merged result.
|
|
232
|
+
* @throws Error if any shard contains decode errors
|
|
233
|
+
*/
|
|
234
|
+
finalize(opt?: Record<string, unknown>): void;
|
|
235
|
+
cleanup(): void;
|
|
236
|
+
}
|