@@ -151,9 +151,13 @@ describe('ComposableController', () => {
151
151
152
152
describe ( 'BaseControllerV1' , ( ) => {
153
153
it ( 'should compose controller state' , ( ) => {
154
+ type ComposableControllerState = {
155
+ BarController : BarControllerState ;
156
+ BazController : BazControllerState ;
157
+ } ;
154
158
const composableMessenger = new ControllerMessenger <
155
159
never ,
156
- ComposableControllerEvents
160
+ ComposableControllerEvents < ComposableControllerState >
157
161
> ( ) . getRestricted ( {
158
162
name : 'ComposableController' ,
159
163
allowedActions : [ ] ,
@@ -171,9 +175,12 @@ describe('ComposableController', () => {
171
175
} ) ;
172
176
173
177
it ( 'should notify listeners of nested state change' , ( ) => {
178
+ type ComposableControllerState = {
179
+ BarController : BarControllerState ;
180
+ } ;
174
181
const controllerMessenger = new ControllerMessenger <
175
182
never ,
176
- ComposableControllerEvents
183
+ ComposableControllerEvents < ComposableControllerState >
177
184
> ( ) ;
178
185
const composableMessenger = controllerMessenger . getRestricted ( {
179
186
name : 'ComposableController' ,
@@ -203,9 +210,15 @@ describe('ComposableController', () => {
203
210
204
211
describe ( 'BaseControllerV2' , ( ) => {
205
212
it ( 'should compose controller state' , ( ) => {
213
+ type ComposableControllerState = {
214
+ FooController : FooControllerState ;
215
+ QuzController : QuzControllerState ;
216
+ } ;
206
217
const controllerMessenger = new ControllerMessenger <
207
218
never ,
208
- FooControllerEvent | QuzControllerEvent
219
+ | ComposableControllerEvents < ComposableControllerState >
220
+ | FooControllerEvent
221
+ | QuzControllerEvent
209
222
> ( ) ;
210
223
const fooMessenger = controllerMessenger . getRestricted <
211
224
'FooController' ,
@@ -224,49 +237,46 @@ describe('ComposableController', () => {
224
237
const fooController = new FooController ( fooMessenger ) ;
225
238
const quzController = new QuzController ( quzMessenger ) ;
226
239
227
- const composableControllerMessenger = controllerMessenger . getRestricted <
228
- 'ComposableController' ,
229
- never ,
230
- ( FooControllerEvent | QuzControllerEvent ) [ 'type' ]
231
- > ( {
240
+ const composableControllerMessenger = controllerMessenger . getRestricted ( {
232
241
name : 'ComposableController' ,
233
242
allowedActions : [ ] ,
234
243
allowedEvents : [
235
244
'FooController:stateChange' ,
236
245
'QuzController:stateChange' ,
237
246
] ,
238
247
} ) ;
239
- const composableController = new ComposableController ( {
240
- controllers : [ fooController , quzController ] ,
241
- messenger : composableControllerMessenger ,
242
- } ) ;
248
+ const composableController =
249
+ new ComposableController < ComposableControllerState > ( {
250
+ controllers : [ fooController , quzController ] ,
251
+ messenger : composableControllerMessenger ,
252
+ } ) ;
243
253
expect ( composableController . state ) . toStrictEqual ( {
244
254
FooController : { foo : 'foo' } ,
245
255
QuzController : { quz : 'quz' } ,
246
256
} ) ;
247
257
} ) ;
248
258
249
259
it ( 'should notify listeners of nested state change' , ( ) => {
260
+ type ComposableControllerState = {
261
+ FooController : FooControllerState ;
262
+ } ;
250
263
const controllerMessenger = new ControllerMessenger <
251
264
never ,
252
- ComposableControllerEvents | FooControllerEvent
265
+ | ComposableControllerEvents < ComposableControllerState >
266
+ | FooControllerEvent
253
267
> ( ) ;
254
268
const fooControllerMessenger = controllerMessenger . getRestricted ( {
255
269
name : 'FooController' ,
256
270
allowedActions : [ ] ,
257
271
allowedEvents : [ ] ,
258
272
} ) ;
259
273
const fooController = new FooController ( fooControllerMessenger ) ;
260
- const composableControllerMessenger = controllerMessenger . getRestricted <
261
- 'ComposableController' ,
262
- never ,
263
- FooControllerEvent [ 'type' ]
264
- > ( {
274
+ const composableControllerMessenger = controllerMessenger . getRestricted ( {
265
275
name : 'ComposableController' ,
266
276
allowedActions : [ ] ,
267
277
allowedEvents : [ 'FooController:stateChange' ] ,
268
278
} ) ;
269
- new ComposableController ( {
279
+ new ComposableController < ComposableControllerState > ( {
270
280
controllers : [ fooController ] ,
271
281
messenger : composableControllerMessenger ,
272
282
} ) ;
@@ -289,58 +299,61 @@ describe('ComposableController', () => {
289
299
290
300
describe ( 'Mixed BaseControllerV1 and BaseControllerV2' , ( ) => {
291
301
it ( 'should compose controller state' , ( ) => {
302
+ type ComposableControllerState = {
303
+ BarController : BarControllerState ;
304
+ FooController : FooControllerState ;
305
+ } ;
292
306
const barController = new BarController ( ) ;
293
307
const controllerMessenger = new ControllerMessenger <
294
308
never ,
295
- FooControllerEvent
309
+ | ComposableControllerEvents < ComposableControllerState >
310
+ | FooControllerEvent
296
311
> ( ) ;
297
312
const fooControllerMessenger = controllerMessenger . getRestricted ( {
298
313
name : 'FooController' ,
299
314
allowedActions : [ ] ,
300
315
allowedEvents : [ ] ,
301
316
} ) ;
302
317
const fooController = new FooController ( fooControllerMessenger ) ;
303
- const composableControllerMessenger = controllerMessenger . getRestricted <
304
- 'ComposableController' ,
305
- never ,
306
- FooControllerEvent [ 'type' ]
307
- > ( {
318
+ const composableControllerMessenger = controllerMessenger . getRestricted ( {
308
319
name : 'ComposableController' ,
309
320
allowedActions : [ ] ,
310
321
allowedEvents : [ 'FooController:stateChange' ] ,
311
322
} ) ;
312
- const composableController = new ComposableController ( {
313
- controllers : [ barController , fooController ] ,
314
- messenger : composableControllerMessenger ,
315
- } ) ;
323
+ const composableController =
324
+ new ComposableController < ComposableControllerState > ( {
325
+ controllers : [ barController , fooController ] ,
326
+ messenger : composableControllerMessenger ,
327
+ } ) ;
316
328
expect ( composableController . state ) . toStrictEqual ( {
317
329
BarController : { bar : 'bar' } ,
318
330
FooController : { foo : 'foo' } ,
319
331
} ) ;
320
332
} ) ;
321
333
322
334
it ( 'should notify listeners of BaseControllerV1 state change' , ( ) => {
335
+ type ComposableControllerState = {
336
+ BarController : BarControllerState ;
337
+ FooController : FooControllerState ;
338
+ } ;
323
339
const barController = new BarController ( ) ;
324
340
const controllerMessenger = new ControllerMessenger <
325
341
never ,
326
- ComposableControllerEvents | FooControllerEvent
342
+ | ComposableControllerEvents < ComposableControllerState >
343
+ | FooControllerEvent
327
344
> ( ) ;
328
345
const fooControllerMessenger = controllerMessenger . getRestricted ( {
329
346
name : 'FooController' ,
330
347
allowedActions : [ ] ,
331
348
allowedEvents : [ ] ,
332
349
} ) ;
333
350
const fooController = new FooController ( fooControllerMessenger ) ;
334
- const composableControllerMessenger = controllerMessenger . getRestricted <
335
- 'ComposableController' ,
336
- never ,
337
- FooControllerEvent [ 'type' ]
338
- > ( {
351
+ const composableControllerMessenger = controllerMessenger . getRestricted ( {
339
352
name : 'ComposableController' ,
340
353
allowedActions : [ ] ,
341
354
allowedEvents : [ 'FooController:stateChange' ] ,
342
355
} ) ;
343
- new ComposableController ( {
356
+ new ComposableController < ComposableControllerState > ( {
344
357
controllers : [ barController , fooController ] ,
345
358
messenger : composableControllerMessenger ,
346
359
} ) ;
@@ -363,27 +376,28 @@ describe('ComposableController', () => {
363
376
} ) ;
364
377
365
378
it ( 'should notify listeners of BaseControllerV2 state change' , ( ) => {
379
+ type ComposableControllerState = {
380
+ BarController : BarControllerState ;
381
+ FooController : FooControllerState ;
382
+ } ;
366
383
const barController = new BarController ( ) ;
367
384
const controllerMessenger = new ControllerMessenger <
368
385
never ,
369
- ComposableControllerEvents | FooControllerEvent
386
+ | ComposableControllerEvents < ComposableControllerState >
387
+ | FooControllerEvent
370
388
> ( ) ;
371
389
const fooControllerMessenger = controllerMessenger . getRestricted ( {
372
390
name : 'FooController' ,
373
391
allowedActions : [ ] ,
374
392
allowedEvents : [ ] ,
375
393
} ) ;
376
394
const fooController = new FooController ( fooControllerMessenger ) ;
377
- const composableControllerMessenger = controllerMessenger . getRestricted <
378
- 'ComposableController' ,
379
- never ,
380
- FooControllerEvent [ 'type' ]
381
- > ( {
395
+ const composableControllerMessenger = controllerMessenger . getRestricted ( {
382
396
name : 'ComposableController' ,
383
397
allowedActions : [ ] ,
384
398
allowedEvents : [ 'FooController:stateChange' ] ,
385
399
} ) ;
386
- new ComposableController ( {
400
+ new ComposableController < ComposableControllerState > ( {
387
401
controllers : [ barController , fooController ] ,
388
402
messenger : composableControllerMessenger ,
389
403
} ) ;
@@ -428,22 +442,22 @@ describe('ComposableController', () => {
428
442
} ) ;
429
443
430
444
it ( 'should throw if composing a controller that does not extend from BaseController' , ( ) => {
445
+ type ComposableControllerState = {
446
+ FooController : FooControllerState ;
447
+ } ;
431
448
const notController = new JsonRpcEngine ( ) ;
432
449
const controllerMessenger = new ControllerMessenger <
433
450
never ,
434
- FooControllerEvent
451
+ | ComposableControllerEvents < ComposableControllerState >
452
+ | FooControllerEvent
435
453
> ( ) ;
436
454
const fooControllerMessenger = controllerMessenger . getRestricted ( {
437
455
name : 'FooController' ,
438
456
allowedActions : [ ] ,
439
457
allowedEvents : [ ] ,
440
458
} ) ;
441
459
const fooController = new FooController ( fooControllerMessenger ) ;
442
- const composableControllerMessenger = controllerMessenger . getRestricted <
443
- 'ComposableController' ,
444
- never ,
445
- FooControllerEvent [ 'type' ]
446
- > ( {
460
+ const composableControllerMessenger = controllerMessenger . getRestricted ( {
447
461
name : 'ComposableController' ,
448
462
allowedActions : [ ] ,
449
463
allowedEvents : [ 'FooController:stateChange' ] ,
0 commit comments