@industry-theme/file-city-panel 0.2.21 → 0.2.23
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeCityPanel.d.ts","sourceRoot":"","sources":["../../src/panels/CodeCityPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAuBjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQpD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"CodeCityPanel.d.ts","sourceRoot":"","sources":["../../src/panels/CodeCityPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAuBjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQpD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA8rCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAEvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EA8BxC,CAAC"}
|
|
@@ -25,8 +25,10 @@ export interface QualitySliceData {
|
|
|
25
25
|
fileCoverage?: Record<string, number>;
|
|
26
26
|
fileMetrics?: {
|
|
27
27
|
eslint?: FileMetricData[];
|
|
28
|
+
'biome-lint'?: FileMetricData[];
|
|
28
29
|
typescript?: FileMetricData[];
|
|
29
30
|
prettier?: FileMetricData[];
|
|
31
|
+
'biome-format'?: FileMetricData[];
|
|
30
32
|
knip?: FileMetricData[];
|
|
31
33
|
alexandria?: FileMetricData[];
|
|
32
34
|
};
|
|
@@ -47,7 +49,7 @@ export interface HighlightLayer {
|
|
|
47
49
|
/**
|
|
48
50
|
* Color mode options for the visualization
|
|
49
51
|
*/
|
|
50
|
-
export type ColorMode = 'fileTypes' | 'git' | 'coverage' | 'eslint' | 'typescript' | 'prettier' | 'knip' | 'alexandria';
|
|
52
|
+
export type ColorMode = 'fileTypes' | 'git' | 'coverage' | 'eslint' | 'biome-lint' | 'typescript' | 'prettier' | 'biome-format' | 'knip' | 'alexandria';
|
|
51
53
|
/**
|
|
52
54
|
* Color mode configuration
|
|
53
55
|
*/
|
|
@@ -121,6 +123,11 @@ export declare function createMetricHighlightLayers(buildings: CityBuilding[], m
|
|
|
121
123
|
* Uses a stricter color scheme: green only for clean files, orange-to-red for any issues
|
|
122
124
|
*/
|
|
123
125
|
export declare function createEslintHighlightLayers(buildings: CityBuilding[], eslintMetrics: FileMetricData[]): HighlightLayer[];
|
|
126
|
+
/**
|
|
127
|
+
* Create Biome Lint highlight layers
|
|
128
|
+
* Uses a stricter color scheme: green only for clean files, orange-to-red for any issues
|
|
129
|
+
*/
|
|
130
|
+
export declare function createBiomeLintHighlightLayers(buildings: CityBuilding[], biomeLintMetrics: FileMetricData[]): HighlightLayer[];
|
|
124
131
|
/**
|
|
125
132
|
* Create TypeScript highlight layers
|
|
126
133
|
* Uses a stricter color scheme: green only for clean files, orange-to-red for any issues
|
|
@@ -131,6 +138,11 @@ export declare function createTypescriptHighlightLayers(buildings: CityBuilding[
|
|
|
131
138
|
* Uses a stricter color scheme: green only for clean files, orange-to-red for any issues
|
|
132
139
|
*/
|
|
133
140
|
export declare function createPrettierHighlightLayers(buildings: CityBuilding[], prettierMetrics: FileMetricData[]): HighlightLayer[];
|
|
141
|
+
/**
|
|
142
|
+
* Create Biome Format highlight layers
|
|
143
|
+
* Uses a stricter color scheme: green only for clean files, orange-to-red for any issues
|
|
144
|
+
*/
|
|
145
|
+
export declare function createBiomeFormatHighlightLayers(buildings: CityBuilding[], biomeFormatMetrics: FileMetricData[]): HighlightLayer[];
|
|
134
146
|
/**
|
|
135
147
|
* Create Knip highlight layers
|
|
136
148
|
* Uses a stricter color scheme: green only for clean files, orange-to-red for any issues
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qualityLayers.d.ts","sourceRoot":"","sources":["../../../src/panels/utils/qualityLayers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;QAC9B,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;KAC/B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,KAAK,GACL,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,MAAM,GACN,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"qualityLayers.d.ts","sourceRoot":"","sources":["../../../src/panels/utils/qualityLayers.ts"],"names":[],"mappings":"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"}
|
package/dist/panels.bundle.js
CHANGED
|
@@ -14952,9 +14952,11 @@ const COLOR_MODES = [
|
|
|
14952
14952
|
{ id: "fileTypes", name: "File Types", description: "Color by file extension" },
|
|
14953
14953
|
{ id: "git", name: "Git Status", description: "Color by git changes" },
|
|
14954
14954
|
{ id: "coverage", name: "Test Coverage", description: "Color by test coverage %" },
|
|
14955
|
-
{ id: "eslint", name: "Linting", description: "Color by ESLint issues" },
|
|
14955
|
+
{ id: "eslint", name: "Linting (ESLint)", description: "Color by ESLint issues" },
|
|
14956
|
+
{ id: "biome-lint", name: "Linting (Biome)", description: "Color by Biome lint issues" },
|
|
14956
14957
|
{ id: "typescript", name: "Type Safety", description: "Color by TypeScript errors" },
|
|
14957
|
-
{ id: "prettier", name: "Formatting", description: "Color by Prettier issues" },
|
|
14958
|
+
{ id: "prettier", name: "Formatting (Prettier)", description: "Color by Prettier issues" },
|
|
14959
|
+
{ id: "biome-format", name: "Formatting (Biome)", description: "Color by Biome format issues" },
|
|
14958
14960
|
{ id: "knip", name: "Dead Code", description: "Color by unused exports" },
|
|
14959
14961
|
{ id: "alexandria", name: "Documentation", description: "Color by doc coverage" }
|
|
14960
14962
|
];
|
|
@@ -14964,9 +14966,11 @@ const DEFAULT_COLOR_MODES = [
|
|
|
14964
14966
|
];
|
|
14965
14967
|
const QUALITY_COLOR_MODES = [
|
|
14966
14968
|
{ id: "coverage", name: "Test Coverage", description: "Color by test coverage %" },
|
|
14967
|
-
{ id: "eslint", name: "Linting", description: "Color by ESLint issues" },
|
|
14969
|
+
{ id: "eslint", name: "Linting (ESLint)", description: "Color by ESLint issues" },
|
|
14970
|
+
{ id: "biome-lint", name: "Linting (Biome)", description: "Color by Biome lint issues" },
|
|
14968
14971
|
{ id: "typescript", name: "Type Safety", description: "Color by TypeScript errors" },
|
|
14969
|
-
{ id: "prettier", name: "Formatting", description: "Color by Prettier issues" },
|
|
14972
|
+
{ id: "prettier", name: "Formatting (Prettier)", description: "Color by Prettier issues" },
|
|
14973
|
+
{ id: "biome-format", name: "Formatting (Biome)", description: "Color by Biome format issues" },
|
|
14970
14974
|
{ id: "knip", name: "Dead Code", description: "Color by unused exports" },
|
|
14971
14975
|
{ id: "alexandria", name: "Documentation", description: "Color by doc coverage" }
|
|
14972
14976
|
];
|
|
@@ -15152,6 +15156,116 @@ function createEslintHighlightLayers(buildings, eslintMetrics) {
|
|
|
15152
15156
|
}
|
|
15153
15157
|
return layers;
|
|
15154
15158
|
}
|
|
15159
|
+
function createBiomeLintHighlightLayers(buildings, biomeLintMetrics) {
|
|
15160
|
+
const buildingsByPath = new Map(buildings.map((b) => [b.path, b]));
|
|
15161
|
+
const metricsByPath = new Map(biomeLintMetrics.map((m) => [normalizePath(m.file), m]));
|
|
15162
|
+
const layerGroups = {
|
|
15163
|
+
clean: [],
|
|
15164
|
+
// 0 issues - green
|
|
15165
|
+
minor: [],
|
|
15166
|
+
// 1-3 issues - orange
|
|
15167
|
+
moderate: [],
|
|
15168
|
+
// 4-10 issues - orange-red
|
|
15169
|
+
significant: [],
|
|
15170
|
+
// 11-25 issues - red
|
|
15171
|
+
severe: [],
|
|
15172
|
+
// 26+ issues - dark red
|
|
15173
|
+
noData: []
|
|
15174
|
+
// No metric data
|
|
15175
|
+
};
|
|
15176
|
+
for (const [path, building] of buildingsByPath) {
|
|
15177
|
+
const normalizedPath = normalizePath(path);
|
|
15178
|
+
const metric = metricsByPath.get(normalizedPath);
|
|
15179
|
+
if (!metric) {
|
|
15180
|
+
layerGroups.noData.push({
|
|
15181
|
+
path: building.path,
|
|
15182
|
+
type: "file",
|
|
15183
|
+
renderStrategy: "fill"
|
|
15184
|
+
});
|
|
15185
|
+
} else {
|
|
15186
|
+
const issues = metric.issueCount;
|
|
15187
|
+
let bucket;
|
|
15188
|
+
if (issues === 0) bucket = "clean";
|
|
15189
|
+
else if (issues <= 3) bucket = "minor";
|
|
15190
|
+
else if (issues <= 10) bucket = "moderate";
|
|
15191
|
+
else if (issues <= 25) bucket = "significant";
|
|
15192
|
+
else bucket = "severe";
|
|
15193
|
+
layerGroups[bucket].push({
|
|
15194
|
+
path: building.path,
|
|
15195
|
+
type: "file",
|
|
15196
|
+
renderStrategy: "fill"
|
|
15197
|
+
});
|
|
15198
|
+
}
|
|
15199
|
+
}
|
|
15200
|
+
const layers = [];
|
|
15201
|
+
if (layerGroups.clean.length > 0) {
|
|
15202
|
+
layers.push({
|
|
15203
|
+
id: "biome-lint-clean",
|
|
15204
|
+
name: "0 issues",
|
|
15205
|
+
enabled: true,
|
|
15206
|
+
color: "#22c55e",
|
|
15207
|
+
// green - only for no lint issues
|
|
15208
|
+
priority: 50,
|
|
15209
|
+
items: layerGroups.clean
|
|
15210
|
+
});
|
|
15211
|
+
}
|
|
15212
|
+
if (layerGroups.minor.length > 0) {
|
|
15213
|
+
layers.push({
|
|
15214
|
+
id: "biome-lint-minor",
|
|
15215
|
+
name: "1-3 issues",
|
|
15216
|
+
enabled: true,
|
|
15217
|
+
color: "#f97316",
|
|
15218
|
+
// orange
|
|
15219
|
+
priority: 50,
|
|
15220
|
+
items: layerGroups.minor
|
|
15221
|
+
});
|
|
15222
|
+
}
|
|
15223
|
+
if (layerGroups.moderate.length > 0) {
|
|
15224
|
+
layers.push({
|
|
15225
|
+
id: "biome-lint-moderate",
|
|
15226
|
+
name: "4-10 issues",
|
|
15227
|
+
enabled: true,
|
|
15228
|
+
color: "#ea580c",
|
|
15229
|
+
// orange-600 (darker orange)
|
|
15230
|
+
priority: 50,
|
|
15231
|
+
items: layerGroups.moderate
|
|
15232
|
+
});
|
|
15233
|
+
}
|
|
15234
|
+
if (layerGroups.significant.length > 0) {
|
|
15235
|
+
layers.push({
|
|
15236
|
+
id: "biome-lint-significant",
|
|
15237
|
+
name: "11-25 issues",
|
|
15238
|
+
enabled: true,
|
|
15239
|
+
color: "#ef4444",
|
|
15240
|
+
// red
|
|
15241
|
+
priority: 50,
|
|
15242
|
+
items: layerGroups.significant
|
|
15243
|
+
});
|
|
15244
|
+
}
|
|
15245
|
+
if (layerGroups.severe.length > 0) {
|
|
15246
|
+
layers.push({
|
|
15247
|
+
id: "biome-lint-severe",
|
|
15248
|
+
name: "26+ issues",
|
|
15249
|
+
enabled: true,
|
|
15250
|
+
color: "#991b1b",
|
|
15251
|
+
// dark red
|
|
15252
|
+
priority: 50,
|
|
15253
|
+
items: layerGroups.severe
|
|
15254
|
+
});
|
|
15255
|
+
}
|
|
15256
|
+
if (layerGroups.noData.length > 0) {
|
|
15257
|
+
layers.push({
|
|
15258
|
+
id: "biome-lint-nodata",
|
|
15259
|
+
name: "No data",
|
|
15260
|
+
enabled: true,
|
|
15261
|
+
color: "#6b7280",
|
|
15262
|
+
// gray
|
|
15263
|
+
priority: 40,
|
|
15264
|
+
items: layerGroups.noData
|
|
15265
|
+
});
|
|
15266
|
+
}
|
|
15267
|
+
return layers;
|
|
15268
|
+
}
|
|
15155
15269
|
function createTypescriptHighlightLayers(buildings, typescriptMetrics) {
|
|
15156
15270
|
const buildingsByPath = new Map(buildings.map((b) => [b.path, b]));
|
|
15157
15271
|
const metricsByPath = new Map(typescriptMetrics.map((m) => [normalizePath(m.file), m]));
|
|
@@ -15372,6 +15486,116 @@ function createPrettierHighlightLayers(buildings, prettierMetrics) {
|
|
|
15372
15486
|
}
|
|
15373
15487
|
return layers;
|
|
15374
15488
|
}
|
|
15489
|
+
function createBiomeFormatHighlightLayers(buildings, biomeFormatMetrics) {
|
|
15490
|
+
const buildingsByPath = new Map(buildings.map((b) => [b.path, b]));
|
|
15491
|
+
const metricsByPath = new Map(biomeFormatMetrics.map((m) => [normalizePath(m.file), m]));
|
|
15492
|
+
const layerGroups = {
|
|
15493
|
+
clean: [],
|
|
15494
|
+
// 0 issues - green
|
|
15495
|
+
minor: [],
|
|
15496
|
+
// 1-3 issues - orange
|
|
15497
|
+
moderate: [],
|
|
15498
|
+
// 4-10 issues - orange-red
|
|
15499
|
+
significant: [],
|
|
15500
|
+
// 11-25 issues - red
|
|
15501
|
+
severe: [],
|
|
15502
|
+
// 26+ issues - dark red
|
|
15503
|
+
noData: []
|
|
15504
|
+
// No metric data
|
|
15505
|
+
};
|
|
15506
|
+
for (const [path, building] of buildingsByPath) {
|
|
15507
|
+
const normalizedPath = normalizePath(path);
|
|
15508
|
+
const metric = metricsByPath.get(normalizedPath);
|
|
15509
|
+
if (!metric) {
|
|
15510
|
+
layerGroups.noData.push({
|
|
15511
|
+
path: building.path,
|
|
15512
|
+
type: "file",
|
|
15513
|
+
renderStrategy: "fill"
|
|
15514
|
+
});
|
|
15515
|
+
} else {
|
|
15516
|
+
const issues = metric.issueCount;
|
|
15517
|
+
let bucket;
|
|
15518
|
+
if (issues === 0) bucket = "clean";
|
|
15519
|
+
else if (issues <= 3) bucket = "minor";
|
|
15520
|
+
else if (issues <= 10) bucket = "moderate";
|
|
15521
|
+
else if (issues <= 25) bucket = "significant";
|
|
15522
|
+
else bucket = "severe";
|
|
15523
|
+
layerGroups[bucket].push({
|
|
15524
|
+
path: building.path,
|
|
15525
|
+
type: "file",
|
|
15526
|
+
renderStrategy: "fill"
|
|
15527
|
+
});
|
|
15528
|
+
}
|
|
15529
|
+
}
|
|
15530
|
+
const layers = [];
|
|
15531
|
+
if (layerGroups.clean.length > 0) {
|
|
15532
|
+
layers.push({
|
|
15533
|
+
id: "biome-format-clean",
|
|
15534
|
+
name: "0 issues",
|
|
15535
|
+
enabled: true,
|
|
15536
|
+
color: "#22c55e",
|
|
15537
|
+
// green - only for perfect formatting
|
|
15538
|
+
priority: 50,
|
|
15539
|
+
items: layerGroups.clean
|
|
15540
|
+
});
|
|
15541
|
+
}
|
|
15542
|
+
if (layerGroups.minor.length > 0) {
|
|
15543
|
+
layers.push({
|
|
15544
|
+
id: "biome-format-minor",
|
|
15545
|
+
name: "1-3 issues",
|
|
15546
|
+
enabled: true,
|
|
15547
|
+
color: "#f97316",
|
|
15548
|
+
// orange
|
|
15549
|
+
priority: 50,
|
|
15550
|
+
items: layerGroups.minor
|
|
15551
|
+
});
|
|
15552
|
+
}
|
|
15553
|
+
if (layerGroups.moderate.length > 0) {
|
|
15554
|
+
layers.push({
|
|
15555
|
+
id: "biome-format-moderate",
|
|
15556
|
+
name: "4-10 issues",
|
|
15557
|
+
enabled: true,
|
|
15558
|
+
color: "#ea580c",
|
|
15559
|
+
// orange-600 (darker orange)
|
|
15560
|
+
priority: 50,
|
|
15561
|
+
items: layerGroups.moderate
|
|
15562
|
+
});
|
|
15563
|
+
}
|
|
15564
|
+
if (layerGroups.significant.length > 0) {
|
|
15565
|
+
layers.push({
|
|
15566
|
+
id: "biome-format-significant",
|
|
15567
|
+
name: "11-25 issues",
|
|
15568
|
+
enabled: true,
|
|
15569
|
+
color: "#ef4444",
|
|
15570
|
+
// red
|
|
15571
|
+
priority: 50,
|
|
15572
|
+
items: layerGroups.significant
|
|
15573
|
+
});
|
|
15574
|
+
}
|
|
15575
|
+
if (layerGroups.severe.length > 0) {
|
|
15576
|
+
layers.push({
|
|
15577
|
+
id: "biome-format-severe",
|
|
15578
|
+
name: "26+ issues",
|
|
15579
|
+
enabled: true,
|
|
15580
|
+
color: "#991b1b",
|
|
15581
|
+
// dark red
|
|
15582
|
+
priority: 50,
|
|
15583
|
+
items: layerGroups.severe
|
|
15584
|
+
});
|
|
15585
|
+
}
|
|
15586
|
+
if (layerGroups.noData.length > 0) {
|
|
15587
|
+
layers.push({
|
|
15588
|
+
id: "biome-format-nodata",
|
|
15589
|
+
name: "No data",
|
|
15590
|
+
enabled: true,
|
|
15591
|
+
color: "#6b7280",
|
|
15592
|
+
// gray
|
|
15593
|
+
priority: 40,
|
|
15594
|
+
items: layerGroups.noData
|
|
15595
|
+
});
|
|
15596
|
+
}
|
|
15597
|
+
return layers;
|
|
15598
|
+
}
|
|
15375
15599
|
function createKnipHighlightLayers(buildings, knipMetrics) {
|
|
15376
15600
|
const buildingsByPath = new Map(buildings.map((b) => [b.path, b]));
|
|
15377
15601
|
const metricsByPath = new Map(knipMetrics.map((m) => [normalizePath(m.file), m]));
|
|
@@ -15553,7 +15777,7 @@ function createAlexandriaHighlightLayers(buildings, alexandriaMetrics) {
|
|
|
15553
15777
|
return layers;
|
|
15554
15778
|
}
|
|
15555
15779
|
function getLayersForColorMode(mode, buildings, qualityData, fileColorLayers, gitLayers) {
|
|
15556
|
-
var _a, _b, _c, _d, _e;
|
|
15780
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
15557
15781
|
switch (mode) {
|
|
15558
15782
|
case "fileTypes":
|
|
15559
15783
|
return fileColorLayers;
|
|
@@ -15569,23 +15793,33 @@ function getLayersForColorMode(mode, buildings, qualityData, fileColorLayers, gi
|
|
|
15569
15793
|
return createEslintHighlightLayers(buildings, qualityData.fileMetrics.eslint);
|
|
15570
15794
|
}
|
|
15571
15795
|
return [];
|
|
15796
|
+
case "biome-lint":
|
|
15797
|
+
if ((_b = qualityData == null ? void 0 : qualityData.fileMetrics) == null ? void 0 : _b["biome-lint"]) {
|
|
15798
|
+
return createBiomeLintHighlightLayers(buildings, qualityData.fileMetrics["biome-lint"]);
|
|
15799
|
+
}
|
|
15800
|
+
return [];
|
|
15572
15801
|
case "typescript":
|
|
15573
|
-
if ((
|
|
15802
|
+
if ((_c = qualityData == null ? void 0 : qualityData.fileMetrics) == null ? void 0 : _c.typescript) {
|
|
15574
15803
|
return createTypescriptHighlightLayers(buildings, qualityData.fileMetrics.typescript);
|
|
15575
15804
|
}
|
|
15576
15805
|
return [];
|
|
15577
15806
|
case "prettier":
|
|
15578
|
-
if ((
|
|
15807
|
+
if ((_d = qualityData == null ? void 0 : qualityData.fileMetrics) == null ? void 0 : _d.prettier) {
|
|
15579
15808
|
return createPrettierHighlightLayers(buildings, qualityData.fileMetrics.prettier);
|
|
15580
15809
|
}
|
|
15581
15810
|
return [];
|
|
15811
|
+
case "biome-format":
|
|
15812
|
+
if ((_e = qualityData == null ? void 0 : qualityData.fileMetrics) == null ? void 0 : _e["biome-format"]) {
|
|
15813
|
+
return createBiomeFormatHighlightLayers(buildings, qualityData.fileMetrics["biome-format"]);
|
|
15814
|
+
}
|
|
15815
|
+
return [];
|
|
15582
15816
|
case "knip":
|
|
15583
|
-
if ((
|
|
15817
|
+
if ((_f = qualityData == null ? void 0 : qualityData.fileMetrics) == null ? void 0 : _f.knip) {
|
|
15584
15818
|
return createKnipHighlightLayers(buildings, qualityData.fileMetrics.knip);
|
|
15585
15819
|
}
|
|
15586
15820
|
return [];
|
|
15587
15821
|
case "alexandria":
|
|
15588
|
-
if ((
|
|
15822
|
+
if ((_g = qualityData == null ? void 0 : qualityData.fileMetrics) == null ? void 0 : _g.alexandria) {
|
|
15589
15823
|
return createAlexandriaHighlightLayers(buildings, qualityData.fileMetrics.alexandria);
|
|
15590
15824
|
}
|
|
15591
15825
|
return [];
|
|
@@ -15693,7 +15927,7 @@ const CodeCityPanelContent = ({
|
|
|
15693
15927
|
return COLOR_MODES.find((m) => m.id === colorMode) || COLOR_MODES[0];
|
|
15694
15928
|
}, [colorMode]);
|
|
15695
15929
|
const hoveredFileMetric = useMemo(() => {
|
|
15696
|
-
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2;
|
|
15930
|
+
var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2, _j2, _k2, _l2, _m, _n, _o, _p;
|
|
15697
15931
|
if (!((_a2 = hoverInfo == null ? void 0 : hoverInfo.hoveredBuilding) == null ? void 0 : _a2.path)) return null;
|
|
15698
15932
|
const filePath = hoverInfo.hoveredBuilding.path;
|
|
15699
15933
|
if (!qualityData) return null;
|
|
@@ -15715,8 +15949,18 @@ const CodeCityPanelContent = ({
|
|
|
15715
15949
|
}
|
|
15716
15950
|
return { type: "eslint", value: null, label: "No lint data" };
|
|
15717
15951
|
}
|
|
15952
|
+
case "biome-lint": {
|
|
15953
|
+
const metric = (_f2 = (_e2 = qualityData.fileMetrics) == null ? void 0 : _e2["biome-lint"]) == null ? void 0 : _f2.find((m) => m.file === filePath);
|
|
15954
|
+
if (metric) {
|
|
15955
|
+
const parts = [];
|
|
15956
|
+
if (metric.errorCount > 0) parts.push(`${metric.errorCount} error${metric.errorCount > 1 ? "s" : ""}`);
|
|
15957
|
+
if (metric.warningCount > 0) parts.push(`${metric.warningCount} warning${metric.warningCount > 1 ? "s" : ""}`);
|
|
15958
|
+
return { type: "biome-lint", value: metric, label: parts.length > 0 ? parts.join(", ") : "No issues" };
|
|
15959
|
+
}
|
|
15960
|
+
return { type: "biome-lint", value: null, label: "No lint data" };
|
|
15961
|
+
}
|
|
15718
15962
|
case "typescript": {
|
|
15719
|
-
const metric = (
|
|
15963
|
+
const metric = (_h2 = (_g2 = qualityData.fileMetrics) == null ? void 0 : _g2.typescript) == null ? void 0 : _h2.find((m) => m.file === filePath);
|
|
15720
15964
|
if (metric) {
|
|
15721
15965
|
const errors = metric.errorCount;
|
|
15722
15966
|
return { type: "typescript", value: metric, label: errors > 0 ? `${errors} type error${errors > 1 ? "s" : ""}` : "No type errors" };
|
|
@@ -15724,15 +15968,23 @@ const CodeCityPanelContent = ({
|
|
|
15724
15968
|
return { type: "typescript", value: null, label: "No type data" };
|
|
15725
15969
|
}
|
|
15726
15970
|
case "prettier": {
|
|
15727
|
-
const metric = (
|
|
15971
|
+
const metric = (_j2 = (_i2 = qualityData.fileMetrics) == null ? void 0 : _i2.prettier) == null ? void 0 : _j2.find((m) => m.file === filePath);
|
|
15728
15972
|
if (metric) {
|
|
15729
15973
|
const issues = metric.issueCount;
|
|
15730
15974
|
return { type: "prettier", value: metric, label: issues > 0 ? `${issues} formatting issue${issues > 1 ? "s" : ""}` : "Properly formatted" };
|
|
15731
15975
|
}
|
|
15732
15976
|
return { type: "prettier", value: null, label: "No format data" };
|
|
15733
15977
|
}
|
|
15978
|
+
case "biome-format": {
|
|
15979
|
+
const metric = (_l2 = (_k2 = qualityData.fileMetrics) == null ? void 0 : _k2["biome-format"]) == null ? void 0 : _l2.find((m) => m.file === filePath);
|
|
15980
|
+
if (metric) {
|
|
15981
|
+
const issues = metric.issueCount;
|
|
15982
|
+
return { type: "biome-format", value: metric, label: issues > 0 ? `${issues} formatting issue${issues > 1 ? "s" : ""}` : "Properly formatted" };
|
|
15983
|
+
}
|
|
15984
|
+
return { type: "biome-format", value: null, label: "No format data" };
|
|
15985
|
+
}
|
|
15734
15986
|
case "knip": {
|
|
15735
|
-
const metric = (
|
|
15987
|
+
const metric = (_n = (_m = qualityData.fileMetrics) == null ? void 0 : _m.knip) == null ? void 0 : _n.find((m) => m.file === filePath);
|
|
15736
15988
|
if (metric) {
|
|
15737
15989
|
const issues = metric.issueCount;
|
|
15738
15990
|
return { type: "knip", value: metric, label: issues > 0 ? `${issues} unused export${issues > 1 ? "s" : ""}` : "No dead code" };
|
|
@@ -15740,7 +15992,7 @@ const CodeCityPanelContent = ({
|
|
|
15740
15992
|
return { type: "knip", value: null, label: "No dead code data" };
|
|
15741
15993
|
}
|
|
15742
15994
|
case "alexandria": {
|
|
15743
|
-
const metric = (
|
|
15995
|
+
const metric = (_p = (_o = qualityData.fileMetrics) == null ? void 0 : _o.alexandria) == null ? void 0 : _p.find((m) => m.file === filePath);
|
|
15744
15996
|
if (metric) {
|
|
15745
15997
|
const issues = metric.issueCount;
|
|
15746
15998
|
return { type: "alexandria", value: metric, label: issues > 0 ? `${issues} doc issue${issues > 1 ? "s" : ""}` : "Well documented" };
|
|
@@ -15967,15 +16219,17 @@ const CodeCityPanelContent = ({
|
|
|
15967
16219
|
}, [highlightLayers]);
|
|
15968
16220
|
const hasAgentActivity = agentActivityLayers.length > 0;
|
|
15969
16221
|
const legendQualityMetrics = useMemo(() => {
|
|
15970
|
-
const qualityModeIds = ["coverage", "eslint", "typescript", "prettier", "knip", "alexandria"];
|
|
16222
|
+
const qualityModeIds = ["coverage", "eslint", "biome-lint", "typescript", "prettier", "biome-format", "knip", "alexandria"];
|
|
15971
16223
|
if (!qualityModeIds.includes(colorMode)) {
|
|
15972
16224
|
return [];
|
|
15973
16225
|
}
|
|
15974
16226
|
const qualityLayerPrefixes = {
|
|
15975
16227
|
coverage: "coverage-",
|
|
15976
16228
|
eslint: "eslint-",
|
|
16229
|
+
"biome-lint": "biome-lint-",
|
|
15977
16230
|
typescript: "typescript-",
|
|
15978
16231
|
prettier: "prettier-",
|
|
16232
|
+
"biome-format": "biome-format-",
|
|
15979
16233
|
knip: "knip-",
|
|
15980
16234
|
alexandria: "alexandria-"
|
|
15981
16235
|
};
|
|
@@ -16041,7 +16295,7 @@ const CodeCityPanelContent = ({
|
|
|
16041
16295
|
}, []);
|
|
16042
16296
|
const toggleQualityMetric = useCallback((id2) => {
|
|
16043
16297
|
setHighlightLayers((prev) => {
|
|
16044
|
-
const qualityPrefixes = ["coverage-", "eslint-", "typescript-", "prettier-", "knip-", "alexandria-"];
|
|
16298
|
+
const qualityPrefixes = ["coverage-", "eslint-", "biome-lint-", "typescript-", "prettier-", "biome-format-", "knip-", "alexandria-"];
|
|
16045
16299
|
const isQualityLayer = (layerId) => qualityPrefixes.some((p) => layerId.startsWith(p));
|
|
16046
16300
|
const qualityLayers2 = prev.filter((l) => isQualityLayer(l.id));
|
|
16047
16301
|
const clickedLayer = qualityLayers2.find((l) => l.id === id2);
|