1- import { InvokablesDict , InvokerRegistrationArgs } from '@plugola/invoke'
1+ import { InvokerRegistrationArgs } from '@plugola/invoke'
22import type MessageBus from './MessageBus.js'
33import SubscriptionDisposer from './SubscriptionDisposer.js'
44import type {
55 EventInterceptorArgs ,
6- EventsT ,
76 SubscriberArgs ,
87 UntilArgs ,
98 UntilRtn ,
109} from './types/events.js'
11- import type {
12- EventGeneratorArgs ,
13- EventGeneratorsT ,
14- } from './types/generators.js'
10+ import type { EventGeneratorArgs } from './types/generators.js'
1511import type { InvokerInterceptorArgs } from './types/invokables.js'
16- import { ErrorHandler , Unsubscriber } from './types/MessageBus.js'
17-
18- export default class Broker <
19- Events extends EventsT = EventsT ,
20- EventGens extends EventGeneratorsT = EventGeneratorsT ,
21- Invokables extends InvokablesDict = InvokablesDict
22- > {
12+ import {
13+ ErrorHandler ,
14+ MessageBusContext ,
15+ Unsubscriber ,
16+ } from './types/MessageBus.js'
17+ import { StreamReaderArgs } from './types/streams.js'
18+
19+ export default class Broker < $ extends MessageBusContext = MessageBusContext > {
2320 constructor (
24- messageBus : MessageBus < Events , EventGens , Invokables > ,
21+ messageBus : MessageBus < $ > ,
2522 id : string ,
26- abortController : AbortController
23+ abortController : AbortController ,
2724 ) {
2825 this . #abortController = abortController
2926 this . #id = id
@@ -40,7 +37,7 @@ export default class Broker<
4037 return this . abortSignal . aborted
4138 }
4239
43- get abortSignal ( ) {
40+ get abortSignal ( ) : AbortSignal {
4441 return this . #abortController. signal
4542 }
4643
@@ -54,7 +51,7 @@ export default class Broker<
5451 return this . #id
5552 }
5653
57- readonly #messageBus: MessageBus < Events , EventGens , Invokables >
54+ readonly #messageBus: MessageBus < $ >
5855 get messageBus ( ) {
5956 return this . #messageBus
6057 }
@@ -75,147 +72,164 @@ export default class Broker<
7572 } )
7673 }
7774
78- emit < EventName extends keyof Events > (
75+ emit < EventName extends keyof $ [ 'events' ] > (
7976 eventName : EventName ,
80- ...args : Events [ EventName ]
77+ ...args : $ [ 'events' ] [ EventName ]
8178 ) : void | Promise < void > {
8279 return this . #messageBus. emit ( this , eventName , args )
8380 }
8481
85- emitSignal < EventName extends keyof Events > (
82+ emitSignal < EventName extends keyof $ [ 'events' ] > (
8683 eventName : EventName ,
8784 signal : AbortSignal ,
88- ...args : Events [ EventName ]
85+ ...args : $ [ 'events' ] [ EventName ]
8986 ) : void | Promise < void > {
9087 return this . #messageBus. emit ( this , eventName , args , signal )
9188 }
9289
93- interceptEvent < EventName extends keyof Events > (
90+ interceptEvent < EventName extends keyof $ [ 'events' ] > (
9491 eventName : EventName ,
95- ...args : EventInterceptorArgs < Events [ EventName ] >
92+ ...args : EventInterceptorArgs < $ [ 'events' ] [ EventName ] >
9693 ) : Unsubscriber {
9794 return this . #messageBus. interceptEvent ( this as any , eventName , args )
9895 }
9996
100- on < EventName extends keyof Events > (
97+ on < EventName extends keyof $ [ 'events' ] > (
10198 eventName : EventName ,
102- ...args : SubscriberArgs < Events [ EventName ] >
99+ ...args : SubscriberArgs < $ [ 'events' ] [ EventName ] >
103100 ) : Unsubscriber {
104101 return this . #messageBus. on ( this , eventName , args )
105102 }
106103
107- once < EventName extends keyof Events > (
104+ once < EventName extends keyof $ [ 'events' ] > (
108105 eventName : EventName ,
109- ...args : SubscriberArgs < Events [ EventName ] >
106+ ...args : SubscriberArgs < $ [ 'events' ] [ EventName ] >
110107 ) : Unsubscriber {
111108 return this . #messageBus. once ( this , eventName , args )
112109 }
113110
114- hasSubscriber ( eventName : keyof Events ) {
111+ hasSubscriber ( eventName : keyof $ [ 'events' ] ) {
115112 return this . #messageBus. hasSubscriber ( eventName )
116113 }
117114
118115 async until <
119- EventName extends keyof Events ,
120- Args extends UntilArgs < Events [ EventName ] >
116+ EventName extends keyof $ [ 'events' ] ,
117+ Args extends UntilArgs < $ [ 'events' ] [ EventName ] > ,
121118 > (
122119 eventName : EventName ,
123120 ...args : Args
124- ) : Promise < UntilRtn < Events [ EventName ] , Args > > {
121+ ) : Promise < UntilRtn < $ [ 'events' ] [ EventName ] , Args > > {
125122 return this . #messageBus. until ( this , eventName , args ) as any
126123 }
127124
128125 async untilSignal <
129- EventName extends keyof Events ,
130- Args extends UntilArgs < Events [ EventName ] >
126+ EventName extends keyof $ [ 'events' ] ,
127+ Args extends UntilArgs < $ [ 'events' ] [ EventName ] > ,
131128 > (
132129 eventName : EventName ,
133130 abortSignal : AbortSignal ,
134131 ...args : Args
135- ) : Promise < UntilRtn < Events [ EventName ] , Args > > {
132+ ) : Promise < UntilRtn < $ [ 'events' ] [ EventName ] , Args > > {
136133 return this . #messageBus. until ( this , eventName , args , abortSignal ) as any
137134 }
138135
139- generator < EventName extends keyof EventGens > (
136+ generator < EventName extends keyof $ [ 'generators' ] > (
140137 eventName : EventName ,
141138 ...args : EventGeneratorArgs <
142- EventGens [ EventName ] [ 'args' ] ,
143- EventGens [ EventName ] [ 'yield' ]
139+ $ [ 'generators' ] [ EventName ] [ 'args' ] ,
140+ $ [ 'generators' ] [ EventName ] [ 'yield' ]
144141 >
145142 ) : Unsubscriber {
146143 return this . #messageBus. generator ( this , eventName , args )
147144 }
148145
149- iterate < EventName extends keyof EventGens > (
146+ iterate < EventName extends keyof $ [ 'generators' ] > (
150147 eventName : EventName ,
151- ...args : EventGens [ EventName ] [ 'args' ]
152- ) : AsyncIterable < EventGens [ EventName ] [ 'yield' ] > {
148+ ...args : $ [ 'generators' ] [ EventName ] [ 'args' ]
149+ ) : AsyncIterable < $ [ 'generators' ] [ EventName ] [ 'yield' ] > {
153150 return this . #messageBus. iterate ( this , eventName , args )
154151 }
155152
156- iterateSignal < EventName extends keyof EventGens > (
153+ iterateSignal < EventName extends keyof $ [ 'generators' ] > (
157154 eventName : EventName ,
158155 abortSignal : AbortSignal ,
159- ...args : EventGens [ EventName ] [ 'args' ]
160- ) : AsyncIterable < EventGens [ EventName ] [ 'yield' ] > {
156+ ...args : $ [ 'generators' ] [ EventName ] [ 'args' ]
157+ ) : AsyncIterable < $ [ 'generators' ] [ EventName ] [ 'yield' ] > {
161158 return this . #messageBus. iterate ( this , eventName , args , abortSignal )
162159 }
163160
164- iterateWithin < EventName extends keyof EventGens > (
161+ iterateWithin < EventName extends keyof $ [ 'generators' ] > (
165162 within : number ,
166163 eventName : EventName ,
167- ...args : EventGens [ EventName ] [ 'args' ]
168- ) : AsyncIterable < EventGens [ EventName ] [ 'yield' ] > {
164+ ...args : $ [ 'generators' ] [ EventName ] [ 'args' ]
165+ ) : AsyncIterable < $ [ 'generators' ] [ EventName ] [ 'yield' ] > {
169166 return this . #messageBus. iterateWithin ( this , within , eventName , args )
170167 }
171168
172- accumulate < EventName extends keyof EventGens > (
169+ accumulate < EventName extends keyof $ [ 'generators' ] > (
173170 eventName : EventName ,
174- ...args : EventGens [ EventName ] [ 'args' ]
175- ) : Promise < EventGens [ EventName ] [ 'yield' ] [ ] > {
171+ ...args : $ [ 'generators' ] [ EventName ] [ 'args' ]
172+ ) : Promise < $ [ 'generators' ] [ EventName ] [ 'yield' ] [ ] > {
176173 return this . #messageBus. accumulate ( this , eventName , args )
177174 }
178175
179- accumulateWithin < EventName extends keyof EventGens > (
176+ accumulateWithin < EventName extends keyof $ [ 'generators' ] > (
180177 within : number ,
181178 eventName : EventName ,
182- ...args : EventGens [ EventName ] [ 'args' ]
183- ) : Promise < EventGens [ EventName ] [ 'yield' ] [ ] > {
179+ ...args : $ [ 'generators' ] [ EventName ] [ 'args' ]
180+ ) : Promise < $ [ 'generators' ] [ EventName ] [ 'yield' ] [ ] > {
184181 return this . #messageBus. accumulateWithin ( this , within , eventName , args )
185182 }
186183
187- register < InvokableName extends keyof Invokables > (
184+ register < InvokableName extends keyof $ [ 'invokables' ] > (
188185 invokableName : InvokableName ,
189186 ...args : InvokerRegistrationArgs <
190- Invokables [ InvokableName ] [ 'args' ] ,
191- Invokables [ InvokableName ] [ 'return' ]
187+ $ [ 'invokables' ] [ InvokableName ] [ 'args' ] ,
188+ $ [ 'invokables' ] [ InvokableName ] [ 'return' ]
192189 >
193190 ) : Unsubscriber {
194191 return this . #messageBus. register ( this , invokableName , args )
195192 }
196193
197- invoke < InvokableName extends keyof Invokables > (
194+ invoke < InvokableName extends keyof $ [ 'invokables' ] > (
198195 invokableName : InvokableName ,
199- ...args : Invokables [ InvokableName ] [ 'args' ]
200- ) : Promise < Invokables [ InvokableName ] [ 'return' ] > {
196+ ...args : $ [ 'invokables' ] [ InvokableName ] [ 'args' ]
197+ ) : Promise < $ [ 'invokables' ] [ InvokableName ] [ 'return' ] > {
201198 return this . #messageBus. invoke ( this , invokableName , args )
202199 }
203200
204- invokeSignal < InvokableName extends keyof Invokables > (
201+ invokeSignal < InvokableName extends keyof $ [ 'invokables' ] > (
205202 invokableName : InvokableName ,
206203 abortSignal : AbortSignal ,
207- ...args : Invokables [ InvokableName ] [ 'args' ]
208- ) : Promise < Invokables [ InvokableName ] [ 'return' ] > {
204+ ...args : $ [ 'invokables' ] [ InvokableName ] [ 'args' ]
205+ ) : Promise < $ [ 'invokables' ] [ InvokableName ] [ 'return' ] > {
209206 return this . #messageBus. invoke ( this , invokableName , args , abortSignal )
210207 }
211208
212- interceptInvoker < InvokableName extends keyof Invokables > (
209+ interceptInvoker < InvokableName extends keyof $ [ 'invokables' ] > (
213210 invokableName : InvokableName ,
214211 ...args : InvokerInterceptorArgs <
215- Invokables [ InvokableName ] [ 'args' ] ,
216- Invokables [ InvokableName ] [ 'return' ]
212+ $ [ 'invokables' ] [ InvokableName ] [ 'args' ] ,
213+ $ [ 'invokables' ] [ InvokableName ] [ 'return' ]
217214 >
218215 ) : Unsubscriber {
219216 return this . #messageBus. interceptInvoker ( this , invokableName , args )
220217 }
218+
219+ reader < StreamName extends keyof $ [ 'streams' ] > (
220+ streamName : StreamName ,
221+ ...args : StreamReaderArgs <
222+ $ [ 'streams' ] [ StreamName ] [ 'args' ] ,
223+ $ [ 'streams' ] [ StreamName ] [ 'item' ]
224+ >
225+ ) : Unsubscriber {
226+ return this . #messageBus. reader ( this , streamName , args )
227+ }
228+
229+ stream < StreamName extends keyof $ [ 'streams' ] > (
230+ streamName : StreamName ,
231+ ...args : $ [ 'streams' ] [ StreamName ] [ 'args' ]
232+ ) : ReadableStream < $ [ 'streams' ] [ StreamName ] [ 'item' ] > {
233+ return this . #messageBus. stream ( this , streamName , args )
234+ }
221235}
0 commit comments