@danielsitek/eslint-stats 0.3.0 → 0.4.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/README.md +14 -0
- package/dist/formatters/by-prometheus.d.ts +4 -0
- package/dist/formatters/by-prometheus.d.ts.map +1 -0
- package/dist/formatters/by-prometheus.js +102 -0
- package/dist/formatters/by-prometheus.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/stats.d.ts.map +1 -1
- package/dist/utils/stats.js +5 -2
- package/dist/utils/stats.js.map +1 -1
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -62,6 +62,19 @@ Similar to `by-error-and-warning` but displays errors and warnings stacked toget
|
|
|
62
62
|
|
|
63
63
|
Displays aggregated statistics grouped by folder. Errors are shown in red, warnings in yellow.
|
|
64
64
|
|
|
65
|
+
### by-prometheus
|
|
66
|
+
|
|
67
|
+
Exports ESLint statistics in Prometheus text exposition format for monitoring and alerting. Generates metrics compatible with Prometheus, Grafana, and other observability tools.
|
|
68
|
+
|
|
69
|
+
**Metrics exported:**
|
|
70
|
+
|
|
71
|
+
- `eslint_rule_violations_total{rule,severity,folder}` - Violations by rule, severity, and folder
|
|
72
|
+
- `eslint_violations_by_severity_total{severity}` - Total violations by severity
|
|
73
|
+
- `eslint_files_total` - Total files analyzed
|
|
74
|
+
- `eslint_files_with_violations_total` - Files with violations
|
|
75
|
+
- `eslint_files_clean_total` - Files without violations
|
|
76
|
+
- `eslint_rules_violated_total` - Unique rules violated
|
|
77
|
+
|
|
65
78
|
## Demo
|
|
66
79
|
|
|
67
80
|
The package includes demo scripts for testing formatters:
|
|
@@ -72,6 +85,7 @@ npm run demo:warning
|
|
|
72
85
|
npm run demo:both
|
|
73
86
|
npm run demo:stacked
|
|
74
87
|
npm run demo:folder
|
|
88
|
+
npm run demo:prometheus
|
|
75
89
|
```
|
|
76
90
|
|
|
77
91
|
## Requirements
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"by-prometheus.d.ts","sourceRoot":"","sources":["../../src/formatters/by-prometheus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AAkKjE,eAAO,MAAM,YAAY,GAAI,SAAS,UAAU,EAAE,KAAG,MAkFpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { byFolderAndRule } from "../utils/stats.js";
|
|
2
|
+
const escapeLabel = (value) => {
|
|
3
|
+
if (!/["\\\n]/.test(value)) {
|
|
4
|
+
return value;
|
|
5
|
+
}
|
|
6
|
+
return value
|
|
7
|
+
.replace(/\\/g, "\\\\")
|
|
8
|
+
.replace(/"/g, '\\"')
|
|
9
|
+
.replace(/\n/g, "\\n");
|
|
10
|
+
};
|
|
11
|
+
const metricLine = (name, labels, value) => {
|
|
12
|
+
const labelPairs = Object.entries(labels)
|
|
13
|
+
.map(([key, val]) => `${key}="${escapeLabel(val)}"`)
|
|
14
|
+
.join(",");
|
|
15
|
+
return labelPairs ? `${name}{${labelPairs}} ${value}` : `${name} ${value}`;
|
|
16
|
+
};
|
|
17
|
+
const metricHeader = (name, help, type) => {
|
|
18
|
+
return `# HELP ${name} ${help}\n# TYPE ${name} ${type}`;
|
|
19
|
+
};
|
|
20
|
+
const processFolderStats = (folderStats) => {
|
|
21
|
+
const lines = [];
|
|
22
|
+
const severityTotals = { error: 0, warning: 0 };
|
|
23
|
+
const uniqueRules = new Set();
|
|
24
|
+
for (const [folder, ruleStats] of Object.entries(folderStats)) {
|
|
25
|
+
for (const [rule, severityStats] of Object.entries(ruleStats)) {
|
|
26
|
+
uniqueRules.add(rule);
|
|
27
|
+
if (severityStats.error) {
|
|
28
|
+
severityTotals.error += severityStats.error;
|
|
29
|
+
lines.push(metricLine("eslint_rule_violations_total", { rule, severity: "error", folder }, severityStats.error));
|
|
30
|
+
}
|
|
31
|
+
if (severityStats.warning) {
|
|
32
|
+
severityTotals.warning += severityStats.warning;
|
|
33
|
+
lines.push(metricLine("eslint_rule_violations_total", { rule, severity: "warning", folder }, severityStats.warning));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
lines.sort();
|
|
38
|
+
return {
|
|
39
|
+
lines,
|
|
40
|
+
severityTotals,
|
|
41
|
+
uniqueRulesCount: uniqueRules.size,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
const generateSeverityTotalsMetrics = (totals) => {
|
|
45
|
+
const lines = [];
|
|
46
|
+
if (totals.error > 0) {
|
|
47
|
+
lines.push(metricLine("eslint_violations_by_severity_total", { severity: "error" }, totals.error));
|
|
48
|
+
}
|
|
49
|
+
if (totals.warning > 0) {
|
|
50
|
+
lines.push(metricLine("eslint_violations_by_severity_total", { severity: "warning" }, totals.warning));
|
|
51
|
+
}
|
|
52
|
+
return lines;
|
|
53
|
+
};
|
|
54
|
+
const generateFileMetrics = (results) => {
|
|
55
|
+
const totalFiles = results.length;
|
|
56
|
+
let filesWithViolations = 0;
|
|
57
|
+
for (const result of results) {
|
|
58
|
+
if (result.messages.length > 0) {
|
|
59
|
+
filesWithViolations++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const cleanFiles = totalFiles - filesWithViolations;
|
|
63
|
+
return [
|
|
64
|
+
metricLine("eslint_files_total", {}, totalFiles),
|
|
65
|
+
metricLine("eslint_files_with_violations_total", {}, filesWithViolations),
|
|
66
|
+
metricLine("eslint_files_clean_total", {}, cleanFiles),
|
|
67
|
+
];
|
|
68
|
+
};
|
|
69
|
+
export const byPrometheus = (results) => {
|
|
70
|
+
const folderStats = byFolderAndRule(results);
|
|
71
|
+
const { lines: ruleViolationsLines, severityTotals, uniqueRulesCount, } = processFolderStats(folderStats);
|
|
72
|
+
const sections = [];
|
|
73
|
+
if (ruleViolationsLines.length > 0) {
|
|
74
|
+
const ruleViolationsHeader = metricHeader("eslint_rule_violations_total", "Total number of ESLint rule violations", "counter");
|
|
75
|
+
sections.push([ruleViolationsHeader, ...ruleViolationsLines].join("\n"));
|
|
76
|
+
}
|
|
77
|
+
const severityTotalsLines = generateSeverityTotalsMetrics(severityTotals);
|
|
78
|
+
if (severityTotalsLines.length > 0) {
|
|
79
|
+
const severityTotalsHeader = metricHeader("eslint_violations_by_severity_total", "Total ESLint violations by severity", "counter");
|
|
80
|
+
sections.push([severityTotalsHeader, ...severityTotalsLines].join("\n"));
|
|
81
|
+
}
|
|
82
|
+
const fileMetricsLines = generateFileMetrics(results);
|
|
83
|
+
sections.push([
|
|
84
|
+
metricHeader("eslint_files_total", "Total number of files analyzed by ESLint", "counter"),
|
|
85
|
+
fileMetricsLines[0],
|
|
86
|
+
].join("\n"));
|
|
87
|
+
sections.push([
|
|
88
|
+
metricHeader("eslint_files_with_violations_total", "Total number of files with ESLint violations", "counter"),
|
|
89
|
+
fileMetricsLines[1],
|
|
90
|
+
].join("\n"));
|
|
91
|
+
sections.push([
|
|
92
|
+
metricHeader("eslint_files_clean_total", "Total number of files without violations", "counter"),
|
|
93
|
+
fileMetricsLines[2],
|
|
94
|
+
].join("\n"));
|
|
95
|
+
sections.push([
|
|
96
|
+
metricHeader("eslint_rules_violated_total", "Total number of different ESLint rules violated", "counter"),
|
|
97
|
+
metricLine("eslint_rules_violated_total", {}, uniqueRulesCount),
|
|
98
|
+
].join("\n"));
|
|
99
|
+
return sections.join("\n\n") + "\n";
|
|
100
|
+
};
|
|
101
|
+
export default byPrometheus;
|
|
102
|
+
//# sourceMappingURL=by-prometheus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"by-prometheus.js","sourceRoot":"","sources":["../../src/formatters/by-prometheus.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,OAAO,QAA+B,CAAC;AACpD,eAAO,MAAM,SAAS,QAAiC,CAAC;AACxD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAC1E,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AACF,eAAO,MAAM,QAAQ,QAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,OAAO,QAA+B,CAAC;AACpD,eAAO,MAAM,SAAS,QAAiC,CAAC;AACxD,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAC1E,eAAO,MAAM,wBAAwB,QAEpC,CAAC;AACF,eAAO,MAAM,QAAQ,QAAgC,CAAC;AACtD,eAAO,MAAM,YAAY,QAAoC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,4 +7,5 @@ export const byWarning = getFormatterPath("by-warning");
|
|
|
7
7
|
export const byErrorAndWarning = getFormatterPath("by-error-and-warning");
|
|
8
8
|
export const byErrorAndWarningStacked = getFormatterPath("by-error-and-warning-stacked");
|
|
9
9
|
export const byFolder = getFormatterPath("by-folder");
|
|
10
|
+
export const byPrometheus = getFormatterPath("by-prometheus");
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAErD,OAAO,IAAI,CACT,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAC1C,YAAY,EACZ,GAAG,SAAS,KAAK,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CACtD,8BAA8B,CAC/B,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAErD,OAAO,IAAI,CACT,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAC1C,YAAY,EACZ,GAAG,SAAS,KAAK,CAClB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CACtD,8BAA8B,CAC/B,CAAC;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/utils/stats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,SAAS,EACT,WAAW,EACX,aAAa,EACd,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/utils/stats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EAEV,SAAS,EACT,WAAW,EACX,aAAa,EACd,MAAM,mBAAmB,CAAC;AA8C3B,eAAO,MAAM,MAAM,GACjB,SAAS,UAAU,EAAE,EACrB,WAAW,aAAa,KACvB,SAQF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,SAAS,UAAU,EAAE,EACrB,WAAW,aAAa,KACvB,WAkBF,CAAC"}
|
package/dist/utils/stats.js
CHANGED
|
@@ -22,8 +22,11 @@ const loopOverMessages = (objectStats, result, severity) => {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
const getDirName = (result) => {
|
|
25
|
-
const dirname = path.dirname(result.filePath);
|
|
26
|
-
|
|
25
|
+
const dirname = path.relative(process.cwd(), path.dirname(result.filePath));
|
|
26
|
+
if (dirname === "" || dirname === ".") {
|
|
27
|
+
return ".";
|
|
28
|
+
}
|
|
29
|
+
return dirname;
|
|
27
30
|
};
|
|
28
31
|
export const byRule = (results, severity) => {
|
|
29
32
|
const stats = {};
|
package/dist/utils/stats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/utils/stats.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAW,EAAE;IACxD,OAAO,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,WAAsB,EACtB,MAAkB,EAClB,QAAwB,EAClB,EAAE;IACR,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,IAAI,YAAY,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAO,CAAC;QAC/B,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAGpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAU,EAAE;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/utils/stats.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,eAAe,GAAG,CAAC,OAAoB,EAAW,EAAE;IACxD,OAAO,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,WAAsB,EACtB,MAAkB,EAClB,QAAwB,EAClB,EAAE;IACR,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,CAAC;IAE5C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,IAAI,YAAY,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAO,CAAC;QAC/B,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAGpC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAkB,EAAU,EAAE;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE5E,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,OAAqB,EACrB,QAAwB,EACb,EAAE;IACb,MAAM,KAAK,GAAc,EAAE,CAAC;IAE5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAqB,EACrB,QAAwB,EACX,EAAE;IACf,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danielsitek/eslint-stats",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Modern TypeScript formatters for ESLint with aggregated error/warning statistics and visual graphs - Zero dependencies",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"./by-folder": {
|
|
30
30
|
"types": "./dist/formatters/by-folder.d.ts",
|
|
31
31
|
"import": "./dist/formatters/by-folder.js"
|
|
32
|
+
},
|
|
33
|
+
"./by-prometheus": {
|
|
34
|
+
"types": "./dist/formatters/by-prometheus.d.ts",
|
|
35
|
+
"import": "./dist/formatters/by-prometheus.js"
|
|
32
36
|
}
|
|
33
37
|
},
|
|
34
38
|
"files": [
|
|
@@ -45,7 +49,10 @@
|
|
|
45
49
|
"visualization",
|
|
46
50
|
"typescript",
|
|
47
51
|
"zero-dependencies",
|
|
48
|
-
"eslint9"
|
|
52
|
+
"eslint9",
|
|
53
|
+
"prometheus",
|
|
54
|
+
"metrics",
|
|
55
|
+
"monitoring"
|
|
49
56
|
],
|
|
50
57
|
"scripts": {
|
|
51
58
|
"build": "tsc -p tsconfig.build.json",
|
|
@@ -63,7 +70,8 @@
|
|
|
63
70
|
"demo:warning": "eslint .demo -f ./dist/formatters/by-warning.js -c .demo/eslint.config.mjs",
|
|
64
71
|
"demo:both": "eslint .demo -f ./dist/formatters/by-error-and-warning.js -c .demo/eslint.config.mjs",
|
|
65
72
|
"demo:stacked": "eslint .demo -f ./dist/formatters/by-error-and-warning-stacked.js -c .demo/eslint.config.mjs",
|
|
66
|
-
"demo:folder": "eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs"
|
|
73
|
+
"demo:folder": "eslint .demo -f ./dist/formatters/by-folder.js -c .demo/eslint.config.mjs",
|
|
74
|
+
"demo:prometheus": "eslint .demo -f ./dist/formatters/by-prometheus.js -c .demo/eslint.config.mjs"
|
|
67
75
|
},
|
|
68
76
|
"repository": {
|
|
69
77
|
"type": "git",
|