Skip to content

Commit 2030f79

Browse files
aksOpsclaude
andcommitted
fix(charts): author missing prop types, regen lockfile, drop transit files
The PR previously imported chart prop types from "../components" but never declared them — typecheck failed with ~50 errors. This commit makes the branch buildable end-to-end against current main. src/components.ts — add chart prop interfaces (CHARTS section): RenderEngine, ChartType, ChartPoint, ChartSeries, ChartProps, SparklineProps, DonutSegment, DonutProps, RadialGaugeProps, UptimeStatus, UptimeCell, UptimeBarProps, TreemapNode, TreemapProps, ServiceNode, ServiceEdge, ServiceMapProps. src/charts/Chart.tsx, ServiceMap.tsx, renderer.ts — remove unused @ts-expect-error directives now that types resolve; cast cytoscape through unknown for the extension registration; widen CytoElement fields to overlap with cytoscape's EdgeSingular type. src/components.d.ts — delete (stale duplicate of components.ts; main renamed it in b43d802 and the PR branch had reintroduced it). README.md.bundle — delete (transit artifact, not for git). pnpm-lock.yaml — regenerate to add the 7 new chart peer-deps (uplot, d3-hierarchy, d3-force, cytoscape, cytoscape-cose-bilkent, @deck.gl/core, @deck.gl/layers). tests/unit/setup.ts — stub ResizeObserver (jsdom doesn't implement it; charts use it to track container width). tests/unit/ServiceMap.test.tsx — new smoke test for the headline chart component. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2308bb9 commit 2030f79

9 files changed

Lines changed: 673 additions & 712 deletions

File tree

README.md.bundle

Lines changed: 0 additions & 46 deletions
This file was deleted.

pnpm-lock.yaml

Lines changed: 472 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/charts/Chart.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ let uplotCache: { ctor: UplotCtor } | null = null;
2828
async function loadUplot(): Promise<UplotCtor | null> {
2929
if (uplotCache) return uplotCache.ctor;
3030
try {
31-
// @ts-expect-error — peer dep
3231
const mod = await import("uplot");
3332
// @ts-expect-error — uplot CSS
3433
await import("uplot/dist/uPlot.min.css").catch(() => { /* best effort */ });

src/charts/ServiceMap.tsx

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ type CytoElement = {
2828
data: (key?: string) => unknown;
2929
addClass: (cls: string) => void;
3030
removeClass: (cls: string) => void;
31-
connectedEdges: () => CytoCollection;
32-
connectedNodes: () => CytoCollection;
31+
connectedEdges?: () => CytoCollection;
32+
connectedNodes?: () => CytoCollection;
3333
isNode?: () => boolean;
3434
isEdge?: () => boolean;
3535
};
@@ -52,9 +52,8 @@ let cytoCache: { ctor: CytoCtor } | null = null;
5252
async function loadCyto(): Promise<CytoCtor | null> {
5353
if (cytoCache) return cytoCache.ctor;
5454
try {
55-
// @ts-expect-error — peer dep
5655
const mod = await import("cytoscape");
57-
const cytoscape = (mod.default ?? mod) as CytoCtor & { use: (ext: unknown) => void };
56+
const cytoscape = (mod.default ?? mod) as unknown as CytoCtor & { use: (ext: unknown) => void };
5857
try {
5958
// @ts-expect-error — optional layout
6059
const cose = await import("cytoscape-cose-bilkent");
@@ -194,19 +193,19 @@ export function ServiceMap(props: ServiceMapProps): React.ReactElement {
194193
const isNode = el.isNode?.() ?? true;
195194
cy.elements().addClass("rcs-dim");
196195
if (isNode) {
197-
const incident = el.connectedEdges();
198-
const neighbors = el.connectedNodes();
199-
neighbors.removeClass("rcs-dim");
200-
incident.removeClass("rcs-dim");
196+
const incident = el.connectedEdges?.();
197+
const neighbors = el.connectedNodes?.();
198+
neighbors?.removeClass("rcs-dim");
199+
incident?.removeClass("rcs-dim");
201200
(cy.$(`#${cssEscape(el.id())}`)).removeClass("rcs-dim");
202201
(cy.$(`#${cssEscape(el.id())}`)).addClass("rcs-focus");
203-
incident.addClass("rcs-focus-edge");
204-
neighbors.addClass("rcs-neighbor");
202+
incident?.addClass("rcs-focus-edge");
203+
neighbors?.addClass("rcs-neighbor");
205204
} else {
206205
// edge
207-
const ends = el.connectedNodes();
208-
ends.removeClass("rcs-dim");
209-
ends.addClass("rcs-neighbor");
206+
const ends = el.connectedNodes?.();
207+
ends?.removeClass("rcs-dim");
208+
ends?.addClass("rcs-neighbor");
210209
}
211210
};
212211
const focusOff = () => {

src/charts/renderer.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,7 @@ let deckCache: { Deck: DeckCore; SolidPolygonLayer: DeckLayer; ScatterplotLayer:
9494
export async function loadDeck(): Promise<typeof deckCache> {
9595
if (deckCache) return deckCache;
9696
try {
97-
// @ts-expect-error — optional peer deps
9897
const core = await import("@deck.gl/core");
99-
// @ts-expect-error — optional peer deps
10098
const layers = await import("@deck.gl/layers");
10199
deckCache = {
102100
Deck: core.Deck,

0 commit comments

Comments
 (0)