@@ -33,42 +33,38 @@ export type ContainerState = {
3333	commands : ReplCommand [ ] ; 
3434} ; 
3535
36+ interface  Meta  { 
37+ 	actorId : string ; 
38+ 	rpcs : string [ ] ; 
39+ 	endpoint ?: string ; 
40+ 	name ?: string ; 
41+ 	engineToken ?: string  |  ( ( )  =>  Promise < string > )  |  ( ( )  =>  string ) ; 
42+ 	runnerName ?: string ; 
43+ 	namespace ?: string ; 
44+ 	inspectorToken ?: string ; 
45+ } 
46+ 
3647export  class  ActorWorkerContainer  { 
3748	#state: ContainerState  =  { 
3849		status : {  type : "unknown"  } , 
3950		commands : [ ] , 
4051	} ; 
4152
42- 	#meta: { 
43- 		actorId : string ; 
44- 		rpcs : string [ ] ; 
45- 		endpoint ?: string ; 
46- 		name ?: string ; 
47- 		engineToken ?: string ; 
48- 	}  |  null  =  null ; 
53+ 	#meta: Meta  |  null  =  null ; 
4954
5055	#listeners: ( ( )  =>  void ) [ ]  =  [ ] ; 
5156	#worker: Worker  |  undefined ; 
5257
5358	// 
5459	async  init ( { 
55- 		actorId, 
5660		signal, 
57- 		rpcs =  [ ] , 
58- 		endpoint, 
59- 		name, 
60- 		engineToken, 
61+ 		...meta 
6162	} : { 
62- 		actorId : string ; 
6363		signal : AbortSignal ; 
64- 		rpcs ?: string [ ] ; 
65- 		endpoint ?: string ; 
66- 		name ?: string ; 
67- 		engineToken ?: string ; 
68- 	} )  { 
64+ 	}  &  Meta )  { 
6965		this . terminate ( ) ; 
7066
71- 		this . #meta =  {  actorId ,  rpcs ,  endpoint ,  name ,  engineToken  } ; 
67+ 		this . #meta =  {  ... meta  } ; 
7268		this . #state. status  =  {  type : "pending"  } ; 
7369		this . #update( ) ; 
7470		try  { 
@@ -81,12 +77,12 @@ export class ActorWorkerContainer {
8177
8278			// If we reached this point, the actor is supported 
8379			// check if we still operate on the same actor 
84- 			if  ( this . #meta. actorId  !==  actorId )  { 
80+ 			if  ( this . #meta. actorId  !==  meta . actorId )  { 
8581				// if not, we don't need to do anything 
8682				return  null ; 
8783			} 
8884
89- 			const  worker  =  new  ActorWorker ( {  name : `actor-${ actorId }   } ) ; 
85+ 			const  worker  =  new  ActorWorker ( {  name : `actor-${ meta . actorId }   } ) ; 
9086			signal . throwIfAborted ( ) ; 
9187			// now worker needs to check if the actor is supported 
9288			this . #setupWorker( worker ) ; 
@@ -123,7 +119,7 @@ export class ActorWorkerContainer {
123119		this . #update( ) ; 
124120	} 
125121
126- 	#setupWorker( worker : Worker )  { 
122+ 	async   #setupWorker( worker : Worker )  { 
127123		this . #worker =  worker ; 
128124		this . #worker. addEventListener ( "message" ,  ( event )  =>  { 
129125			try  { 
@@ -145,7 +141,13 @@ export class ActorWorkerContainer {
145141			id : this . #meta?. actorId  ??  "" , 
146142			endpoint : this . #meta?. endpoint  ??  "" , 
147143			name : this . #meta?. name  ??  "" , 
148- 			engineToken : this . #meta?. engineToken  ??  "" , 
144+ 			engineToken :
145+ 				typeof  this . #meta?. engineToken  ===  "function" 
146+ 					? await  this . #meta?. engineToken ( ) 
147+ 					: this . #meta?. engineToken , 
148+ 			namespace : this . #meta?. namespace , 
149+ 			runnerName : this . #meta?. runnerName , 
150+ 			inspectorToken : this . #meta?. inspectorToken , 
149151		}  satisfies  InitMessage ) ; 
150152	} 
151153
@@ -238,9 +240,9 @@ export class ActorWorkerContainer {
238240		} 
239241
240242		if  ( msg . type  ===  "error" )  { 
243+ 			console . error ( "Actor Worker Error" ,  msg ) ; 
241244			if  ( ! msg . id )  { 
242245				this . #state. status  =  {  type : "error" ,  error : msg . data  } ; 
243- 				console . error ( "Actor Worker Error" ,  msg . data ) ; 
244246				this . #update( ) ; 
245247				return ; 
246248			} 
0 commit comments