Skip to content

Commit 6919e69

Browse files
authored
fix(web_common): add more generic type for cll components (#5505)
1 parent 189208e commit 6919e69

24 files changed

+740
-422
lines changed

pnpm-lock.yaml

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

web/common/package.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
"@testing-library/react": "16.3.0",
1515
"@testing-library/user-event": "14.6.1",
1616
"@types/dagre": "0.7.53",
17-
"@types/lodash": "4.17.20",
1817
"@types/node": "20.11.25",
1918
"@types/react": "18.3.23",
2019
"@types/react-dom": "18.3.7",
@@ -34,7 +33,6 @@
3433
"eslint-plugin-storybook": "9.1.5",
3534
"fuse.js": "7.1.0",
3635
"globals": "16.3.0",
37-
"lodash": "4.17.21",
3836
"lucide-react": "0.542.0",
3937
"playwright": "1.54.1",
4038
"postcss": "8.5.6",
@@ -95,7 +93,6 @@
9593
"dagre": "0.8.5",
9694
"deepmerge": "4.3.1",
9795
"fuse.js": "7.1.0",
98-
"lodash": "4.17.21",
9996
"lucide-react": "0.542.0",
10097
"react": "18.3.1",
10198
"react-dom": "18.3.1",

web/common/src/components/Lineage/LineageColumnLevel/ColumnLevelLineageContext.ts

Lines changed: 36 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2,64 +2,36 @@ import React from 'react'
22

33
import { type PortId } from '../utils'
44

5-
export type LineageColumn = {
6-
source?: string | null
7-
expression?: string | null
8-
models: Record<string, string[]>
9-
}
10-
11-
export type ColumnLevelModelConnections<
12-
TAdjacencyListKey extends string,
13-
TAdjacencyListColumnKey extends string,
14-
> = Record<TAdjacencyListKey, TAdjacencyListColumnKey[]>
15-
export type ColumnLevelDetails<
16-
TAdjacencyListKey extends string,
17-
TAdjacencyListColumnKey extends string,
18-
> = Omit<LineageColumn, 'models'> & {
19-
models: ColumnLevelModelConnections<
20-
TAdjacencyListKey,
21-
TAdjacencyListColumnKey
22-
>
23-
}
24-
export type ColumnLevelConnections<
25-
TAdjacencyListKey extends string,
26-
TAdjacencyListColumnKey extends string,
27-
> = Record<
28-
TAdjacencyListColumnKey,
29-
ColumnLevelDetails<TAdjacencyListKey, TAdjacencyListColumnKey>
30-
>
315
export type ColumnLevelLineageAdjacencyList<
326
TAdjacencyListKey extends string,
337
TAdjacencyListColumnKey extends string,
34-
> = Record<
35-
TAdjacencyListKey,
36-
ColumnLevelConnections<TAdjacencyListKey, TAdjacencyListColumnKey>
37-
>
8+
> = {
9+
[K in TAdjacencyListKey]: {
10+
[C in TAdjacencyListColumnKey]: {
11+
source?: string | null
12+
expression?: string | null
13+
models: Record<TAdjacencyListKey, TAdjacencyListColumnKey[]>
14+
}
15+
}
16+
}
3817

3918
export type ColumnLevelLineageContextValue<
4019
TAdjacencyListKey extends string,
4120
TAdjacencyListColumnKey extends string,
4221
TColumnID extends string = PortId,
43-
> = {
44-
adjacencyListColumnLevel: ColumnLevelLineageAdjacencyList<
22+
TColumnLevelLineageAdjacencyList extends ColumnLevelLineageAdjacencyList<
4523
TAdjacencyListKey,
4624
TAdjacencyListColumnKey
47-
>
25+
> = ColumnLevelLineageAdjacencyList<
26+
TAdjacencyListKey,
27+
TAdjacencyListColumnKey
28+
>,
29+
> = {
30+
adjacencyListColumnLevel: TColumnLevelLineageAdjacencyList
4831
selectedColumns: Set<TColumnID>
49-
columnLevelLineage: Map<
50-
TColumnID,
51-
ColumnLevelLineageAdjacencyList<TAdjacencyListKey, TAdjacencyListColumnKey>
52-
>
32+
columnLevelLineage: Map<TColumnID, TColumnLevelLineageAdjacencyList>
5333
setColumnLevelLineage: React.Dispatch<
54-
React.SetStateAction<
55-
Map<
56-
TColumnID,
57-
ColumnLevelLineageAdjacencyList<
58-
TAdjacencyListKey,
59-
TAdjacencyListColumnKey
60-
>
61-
>
62-
>
34+
React.SetStateAction<Map<TColumnID, TColumnLevelLineageAdjacencyList>>
6335
>
6436
showColumns: boolean
6537
setShowColumns: React.Dispatch<React.SetStateAction<boolean>>
@@ -71,16 +43,17 @@ export function getColumnLevelLineageContextInitial<
7143
TAdjacencyListKey extends string,
7244
TAdjacencyListColumnKey extends string,
7345
TColumnID extends string = PortId,
46+
TColumnLevelLineageAdjacencyList extends ColumnLevelLineageAdjacencyList<
47+
TAdjacencyListKey,
48+
TAdjacencyListColumnKey
49+
> = ColumnLevelLineageAdjacencyList<
50+
TAdjacencyListKey,
51+
TAdjacencyListColumnKey
52+
>,
7453
>() {
7554
return {
76-
adjacencyListColumnLevel: {},
77-
columnLevelLineage: new Map<
78-
TColumnID,
79-
ColumnLevelLineageAdjacencyList<
80-
TAdjacencyListKey,
81-
TAdjacencyListColumnKey
82-
>
83-
>(),
55+
adjacencyListColumnLevel: {} as TColumnLevelLineageAdjacencyList,
56+
columnLevelLineage: new Map<TColumnID, TColumnLevelLineageAdjacencyList>(),
8457
setColumnLevelLineage: () => {},
8558
showColumns: false,
8659
setShowColumns: () => {},
@@ -94,8 +67,16 @@ export type ColumnLevelLineageContextHook<
9467
TAdjacencyListKey extends string,
9568
TAdjacencyListColumnKey extends string,
9669
TColumnID extends string = PortId,
70+
TColumnLevelLineageAdjacencyList extends ColumnLevelLineageAdjacencyList<
71+
TAdjacencyListKey,
72+
TAdjacencyListColumnKey
73+
> = ColumnLevelLineageAdjacencyList<
74+
TAdjacencyListKey,
75+
TAdjacencyListColumnKey
76+
>,
9777
> = () => ColumnLevelLineageContextValue<
9878
TAdjacencyListKey,
9979
TAdjacencyListColumnKey,
100-
TColumnID
80+
TColumnID,
81+
TColumnLevelLineageAdjacencyList
10182
>

web/common/src/components/Lineage/LineageColumnLevel/FactoryColumn.tsx

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import React from 'react'
1010
import { cn } from '@/utils'
1111
import { NodeBadge } from '../node/NodeBadge'
1212
import { NodePort } from '../node/NodePort'
13-
import { type NodeId, type PortId } from '../utils'
13+
import { type NodeId, type PortHandleId, type PortId } from '../utils'
1414
import {
1515
type ColumnLevelLineageAdjacencyList,
1616
type ColumnLevelLineageContextHook,
@@ -28,11 +28,21 @@ export function FactoryColumn<
2828
TAdjacencyListColumnKey extends string,
2929
TNodeID extends string = NodeId,
3030
TColumnID extends string = PortId,
31+
TLeftPortHandleId extends string = PortHandleId,
32+
TRightPortHandleId extends string = PortHandleId,
33+
TColumnLevelLineageAdjacencyList extends ColumnLevelLineageAdjacencyList<
34+
TAdjacencyListKey,
35+
TAdjacencyListColumnKey
36+
> = ColumnLevelLineageAdjacencyList<
37+
TAdjacencyListKey,
38+
TAdjacencyListColumnKey
39+
>,
3140
>(
3241
useLineage: ColumnLevelLineageContextHook<
3342
TAdjacencyListKey,
3443
TAdjacencyListColumnKey,
35-
TColumnID
44+
TColumnID,
45+
TColumnLevelLineageAdjacencyList
3646
>,
3747
) {
3848
return React.memo(function FactoryColumn({
@@ -59,10 +69,7 @@ export function FactoryColumn<
5969
type: string
6070
description?: string | null
6171
className?: string
62-
data?: ColumnLevelLineageAdjacencyList<
63-
TAdjacencyListKey,
64-
TAdjacencyListColumnKey
65-
>
72+
data?: TColumnLevelLineageAdjacencyList
6673
isFetching?: boolean
6774
error?: Error | null
6875
renderError?: (error: Error) => React.ReactNode
@@ -248,7 +255,7 @@ export function FactoryColumn<
248255
}
249256

250257
return isSelectedColumn ? (
251-
<NodePort
258+
<NodePort<TColumnID, TNodeID, TLeftPortHandleId, TRightPortHandleId>
252259
id={id}
253260
nodeId={nodeId}
254261
className={cn(

0 commit comments

Comments
 (0)