11import { isFalse , isNil } from '@/utils/index'
22import { type Lineage } from '@/domain/lineage'
33import type { ModelEncodedFQN } from '@/domain/models'
4- import { toID , type NodeId } from '@/components/graph/types'
5-
6- export interface ConnectedNode {
7- id ?: string
8- edges : ConnectedNode [ ]
4+ import {
5+ toID ,
6+ type NodeId ,
7+ type LineageWorkerMessage ,
8+ type LineageWorkerRequestMessage ,
9+ type LineageWorkerResponseMessage ,
10+ type LineageWorkerErrorMessage ,
11+ type ConnectedNode ,
12+ } from '@/components/graph/types'
13+ import type { Direction } from '../types'
14+
15+ interface WorkerScope {
16+ onmessage : ( ( e : MessageEvent < LineageWorkerMessage > ) => void ) | null
17+ postMessage : ( message : LineageWorkerMessage ) => void
918}
1019
11- const EnumDirection = {
12- Upstream : 'upstream' ,
13- Downstream : 'downstream' ,
14- } as const
15-
16- type Direction = ( typeof EnumDirection ) [ keyof typeof EnumDirection ]
17-
18- const scope = self as any
20+ const scope = self as unknown as WorkerScope
1921
20- scope . onmessage = async ( e : MessageEvent ) => {
22+ scope . onmessage = async ( e : MessageEvent < LineageWorkerMessage > ) => {
2123 if ( e . data . topic === 'lineage' ) {
2224 try {
23- const { currentLineage, newLineage, mainNode } = e . data . payload
25+ const message = e . data as LineageWorkerRequestMessage
26+ const { currentLineage, newLineage, mainNode } = message . payload
2427 const lineage = await mergeLineageWithModels ( currentLineage , newLineage )
2528 const nodesConnections = await getNodesConnections ( mainNode , lineage )
2629
27- scope . postMessage ( {
30+ const responseMessage : LineageWorkerResponseMessage = {
2831 topic : 'lineage' ,
2932 payload : {
3033 lineage,
3134 nodesConnections,
3235 } ,
33- } )
36+ }
37+ scope . postMessage ( responseMessage )
3438 } catch ( error ) {
35- scope . postMessage ( {
39+ const errorMessage : LineageWorkerErrorMessage = {
3640 topic : 'error' ,
37- error,
38- } )
41+ error : error as Error ,
42+ }
43+ scope . postMessage ( errorMessage )
3944 }
4045 }
4146}
@@ -69,8 +74,8 @@ async function getNodesConnections(
6974 const distances : Record < string , ConnectedNode > = { }
7075
7176 try {
72- getConnectedNodes ( EnumDirection . Upstream , mainNode , lineage , distances )
73- getConnectedNodes ( EnumDirection . Downstream , mainNode , lineage , distances )
77+ getConnectedNodes ( 'upstream' , mainNode , lineage , distances )
78+ getConnectedNodes ( 'downstream' , mainNode , lineage , distances )
7479 } catch ( error ) {
7580 reject ( error )
7681 }
@@ -80,12 +85,12 @@ async function getNodesConnections(
8085}
8186
8287function getConnectedNodes (
83- direction : Direction = EnumDirection . Downstream ,
88+ direction : Direction = 'downstream' ,
8489 node : string ,
8590 lineage : Record < string , Lineage > = { } ,
8691 result : Record < string , ConnectedNode > = { } ,
8792) : void {
88- const isDownstream = direction === EnumDirection . Downstream
93+ const isDownstream = direction === 'downstream'
8994 let models : string [ ] = [ ]
9095
9196 if ( isDownstream ) {
0 commit comments