@@ -13,7 +13,6 @@ import {
1313 isBaseController ,
1414} from './BaseControllerV2' ;
1515import { Messenger } from './Messenger' ;
16- import type { RestrictedMessenger } from './RestrictedMessenger' ;
1716import { JsonRpcEngine } from '../../json-rpc-engine/src' ;
1817
1918export const countControllerName = 'CountController' ;
@@ -39,31 +38,19 @@ export const countControllerStateMetadata = {
3938 } ,
4039} ;
4140
42- type CountMessenger = RestrictedMessenger <
43- typeof countControllerName ,
41+ type CountMessenger = Messenger <
4442 CountControllerAction ,
4543 CountControllerEvent ,
46- never ,
47- never
44+ typeof countControllerName
4845> ;
4946
5047/**
51- * Constructs a restricted messenger for the Count controller.
48+ * Construct the Count controller messenger .
5249 *
53- * @param messenger - The messenger.
54- * @returns A restricted messenger for the Count controller.
50+ * @returns The Count controller messenger.
5551 */
56- export function getCountMessenger (
57- messenger ?: Messenger < CountControllerAction , CountControllerEvent > ,
58- ) : CountMessenger {
59- if ( ! messenger ) {
60- messenger = new Messenger < CountControllerAction , CountControllerEvent > ( ) ;
61- }
62- return messenger . getRestricted ( {
63- name : countControllerName ,
64- allowedActions : [ ] ,
65- allowedEvents : [ ] ,
66- } ) ;
52+ export function getCountMessenger ( ) : CountMessenger {
53+ return new Messenger ( { namespace : countControllerName } ) ;
6754}
6855
6956export class CountController extends BaseController <
@@ -118,34 +105,19 @@ const messagesControllerStateMetadata = {
118105 } ,
119106} ;
120107
121- type MessagesMessenger = RestrictedMessenger <
122- typeof messagesControllerName ,
108+ type MessagesMessenger = Messenger <
123109 MessagesControllerAction ,
124110 MessagesControllerEvent ,
125- never ,
126- never
111+ typeof messagesControllerName
127112> ;
128113
129114/**
130- * Constructs a restricted messenger for the Messages controller.
115+ * Construct the Messages controller messenger .
131116 *
132- * @param messenger - The messenger.
133- * @returns A restricted messenger for the Messages controller.
117+ * @returns The Messages controller messenger.
134118 */
135- function getMessagesMessenger (
136- messenger ?: Messenger < MessagesControllerAction , MessagesControllerEvent > ,
137- ) : MessagesMessenger {
138- if ( ! messenger ) {
139- messenger = new Messenger <
140- MessagesControllerAction ,
141- MessagesControllerEvent
142- > ( ) ;
143- }
144- return messenger . getRestricted ( {
145- name : messagesControllerName ,
146- allowedActions : [ ] ,
147- allowedEvents : [ ] ,
148- } ) ;
119+ function getMessagesMessenger ( ) : MessagesMessenger {
120+ return new Messenger ( { namespace : messagesControllerName } ) ;
149121}
150122
151123class MessagesController extends BaseController <
@@ -173,12 +145,8 @@ class MessagesController extends BaseController<
173145
174146describe ( 'isBaseController' , ( ) => {
175147 it ( 'should return true if passed a V2 controller' , ( ) => {
176- const messenger = new Messenger <
177- CountControllerAction ,
178- CountControllerEvent
179- > ( ) ;
180148 const controller = new CountController ( {
181- messenger : getCountMessenger ( messenger ) ,
149+ messenger : getCountMessenger ( ) ,
182150 name : countControllerName ,
183151 state : { count : 0 } ,
184152 metadata : countControllerStateMetadata ,
@@ -209,12 +177,9 @@ describe('BaseController', () => {
209177 } ) ;
210178
211179 it ( 'should allow getting state via the getState action' , ( ) => {
212- const messenger = new Messenger <
213- CountControllerAction ,
214- CountControllerEvent
215- > ( ) ;
180+ const messenger = getCountMessenger ( ) ;
216181 new CountController ( {
217- messenger : getCountMessenger ( messenger ) ,
182+ messenger,
218183 name : countControllerName ,
219184 state : { count : 0 } ,
220185 metadata : countControllerStateMetadata ,
@@ -409,9 +374,9 @@ describe('BaseController', () => {
409374 } ) ;
410375
411376 it ( 'should inform subscribers of state changes as a result of applying patches' , ( ) => {
412- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
377+ const messenger = getCountMessenger ( ) ;
413378 const controller = new CountController ( {
414- messenger : getCountMessenger ( messenger ) ,
379+ messenger,
415380 name : 'CountController' ,
416381 state : { count : 0 } ,
417382 metadata : countControllerStateMetadata ,
@@ -438,9 +403,9 @@ describe('BaseController', () => {
438403 } ) ;
439404
440405 it ( 'should inform subscribers of state changes' , ( ) => {
441- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
406+ const messenger = getCountMessenger ( ) ;
442407 const controller = new CountController ( {
443- messenger : getCountMessenger ( messenger ) ,
408+ messenger,
444409 name : 'CountController' ,
445410 state : { count : 0 } ,
446411 metadata : countControllerStateMetadata ,
@@ -467,9 +432,9 @@ describe('BaseController', () => {
467432 } ) ;
468433
469434 it ( 'should notify a subscriber with a selector of state changes' , ( ) => {
470- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
435+ const messenger = getCountMessenger ( ) ;
471436 const controller = new CountController ( {
472- messenger : getCountMessenger ( messenger ) ,
437+ messenger,
473438 name : 'CountController' ,
474439 state : { count : 0 } ,
475440 metadata : countControllerStateMetadata ,
@@ -493,9 +458,9 @@ describe('BaseController', () => {
493458 } ) ;
494459
495460 it ( 'should not inform a subscriber of state changes if the selected value is unchanged' , ( ) => {
496- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
461+ const messenger = getCountMessenger ( ) ;
497462 const controller = new CountController ( {
498- messenger : getCountMessenger ( messenger ) ,
463+ messenger,
499464 name : 'CountController' ,
500465 state : { count : 0 } ,
501466 metadata : countControllerStateMetadata ,
@@ -519,9 +484,9 @@ describe('BaseController', () => {
519484 } ) ;
520485
521486 it ( 'should inform a subscriber of each state change once even after multiple subscriptions' , ( ) => {
522- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
487+ const messenger = getCountMessenger ( ) ;
523488 const controller = new CountController ( {
524- messenger : getCountMessenger ( messenger ) ,
489+ messenger,
525490 name : 'CountController' ,
526491 state : { count : 0 } ,
527492 metadata : countControllerStateMetadata ,
@@ -543,9 +508,9 @@ describe('BaseController', () => {
543508 } ) ;
544509
545510 it ( 'should no longer inform a subscriber about state changes after unsubscribing' , ( ) => {
546- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
511+ const messenger = getCountMessenger ( ) ;
547512 const controller = new CountController ( {
548- messenger : getCountMessenger ( messenger ) ,
513+ messenger,
549514 name : 'CountController' ,
550515 state : { count : 0 } ,
551516 metadata : countControllerStateMetadata ,
@@ -562,9 +527,9 @@ describe('BaseController', () => {
562527 } ) ;
563528
564529 it ( 'should no longer inform a subscriber about state changes after unsubscribing once, even if they subscribed many times' , ( ) => {
565- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
530+ const messenger = getCountMessenger ( ) ;
566531 const controller = new CountController ( {
567- messenger : getCountMessenger ( messenger ) ,
532+ messenger,
568533 name : 'CountController' ,
569534 state : { count : 0 } ,
570535 metadata : countControllerStateMetadata ,
@@ -582,9 +547,9 @@ describe('BaseController', () => {
582547 } ) ;
583548
584549 it ( 'should throw when unsubscribing listener who was never subscribed' , ( ) => {
585- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
550+ const messenger = getCountMessenger ( ) ;
586551 new CountController ( {
587- messenger : getCountMessenger ( messenger ) ,
552+ messenger,
588553 name : 'CountController' ,
589554 state : { count : 0 } ,
590555 metadata : countControllerStateMetadata ,
@@ -597,9 +562,9 @@ describe('BaseController', () => {
597562 } ) ;
598563
599564 it ( 'should no longer update subscribers after being destroyed' , ( ) => {
600- const messenger = new Messenger < never , CountControllerEvent > ( ) ;
565+ const messenger = getCountMessenger ( ) ;
601566 const controller = new CountController ( {
602- messenger : getCountMessenger ( messenger ) ,
567+ messenger,
603568 name : 'CountController' ,
604569 state : { count : 0 } ,
605570 metadata : countControllerStateMetadata ,
@@ -985,14 +950,16 @@ describe('getPersistentState', () => {
985950 type VisitorControllerState = {
986951 visitors : string [ ] ;
987952 } ;
988- type VisitorControllerAction = {
953+ type VisitorControllerClear = {
989954 type : `${typeof visitorName } :clear`;
990955 handler : ( ) => void ;
991956 } ;
992- type VisitorControllerEvent = {
957+ type VisitorControllerStateChange = {
993958 type : `${typeof visitorName } :stateChange`;
994959 payload : [ VisitorControllerState , Patch [ ] ] ;
995960 } ;
961+ type VisitorControllerActions = VisitorControllerClear ;
962+ type VisitorControllerEvents = VisitorControllerStateChange ;
996963
997964 const visitorControllerStateMetadata = {
998965 visitors : {
@@ -1001,12 +968,10 @@ describe('getPersistentState', () => {
1001968 } ,
1002969 } ;
1003970
1004- type VisitorMessenger = RestrictedMessenger <
1005- typeof visitorName ,
1006- VisitorControllerAction | VisitorOverflowControllerAction ,
1007- VisitorControllerEvent | VisitorOverflowControllerEvent ,
1008- never ,
1009- never
971+ type VisitorMessenger = Messenger <
972+ VisitorControllerActions ,
973+ VisitorControllerEvents ,
974+ typeof visitorName
1010975 > ;
1011976 class VisitorController extends BaseController <
1012977 typeof visitorName ,
@@ -1049,14 +1014,20 @@ describe('getPersistentState', () => {
10491014 type VisitorOverflowControllerState = {
10501015 maxVisitors : number ;
10511016 } ;
1052- type VisitorOverflowControllerAction = {
1017+ type VisitorOverflowControllerUpdateMax = {
10531018 type : `${typeof visitorOverflowName } :updateMax`;
10541019 handler : ( max : number ) => void ;
10551020 } ;
1056- type VisitorOverflowControllerEvent = {
1021+ type VisitorOverflowControllerStateChange = {
10571022 type : `${typeof visitorOverflowName } :stateChange`;
10581023 payload : [ VisitorOverflowControllerState , Patch [ ] ] ;
10591024 } ;
1025+ type VisitorOverflowControllerActions = VisitorOverflowControllerUpdateMax ;
1026+ type VisitorOverflowControllerEvents = VisitorOverflowControllerStateChange ;
1027+
1028+ type VisitorOverflowControllerDelegatedActions = VisitorControllerClear ;
1029+ type VisitorOverflowControllerDelegatedEvents =
1030+ VisitorControllerStateChange ;
10601031
10611032 const visitorOverflowControllerMetadata = {
10621033 maxVisitors : {
@@ -1065,12 +1036,12 @@ describe('getPersistentState', () => {
10651036 } ,
10661037 } ;
10671038
1068- type VisitorOverflowMessenger = RestrictedMessenger <
1069- typeof visitorOverflowName ,
1070- VisitorControllerAction | VisitorOverflowControllerAction ,
1071- VisitorControllerEvent | VisitorOverflowControllerEvent ,
1072- `${ typeof visitorName } :clear` ,
1073- `${ typeof visitorName } :stateChange`
1039+ type VisitorOverflowMessenger = Messenger <
1040+ | VisitorOverflowControllerActions
1041+ | VisitorOverflowControllerDelegatedActions ,
1042+ | VisitorOverflowControllerEvents
1043+ | VisitorOverflowControllerDelegatedEvents ,
1044+ typeof visitorOverflowName
10741045 > ;
10751046
10761047 class VisitorOverflowController extends BaseController <
@@ -1116,21 +1087,43 @@ describe('getPersistentState', () => {
11161087
11171088 it ( 'should allow messaging between controllers' , ( ) => {
11181089 const messenger = new Messenger <
1119- VisitorControllerAction | VisitorOverflowControllerAction ,
1120- VisitorControllerEvent | VisitorOverflowControllerEvent
1121- > ( ) ;
1122- const visitorControllerMessenger = messenger . getRestricted ( {
1123- name : visitorName ,
1124- allowedActions : [ ] ,
1125- allowedEvents : [ ] ,
1090+ VisitorControllerActions | VisitorOverflowControllerActions ,
1091+ VisitorControllerEvents | VisitorOverflowControllerEvents ,
1092+ 'Global'
1093+ > ( { namespace : 'Global' } ) ;
1094+ const visitorControllerMessenger = new Messenger <
1095+ VisitorControllerActions ,
1096+ VisitorControllerEvents ,
1097+ typeof visitorName
1098+ > ( {
1099+ namespace : visitorName ,
1100+ } ) ;
1101+ visitorControllerMessenger . delegate ( {
1102+ actions : [ 'VisitorController:clear' ] ,
1103+ events : [ 'VisitorController:stateChange' ] ,
1104+ messenger,
11261105 } ) ;
11271106 const visitorController = new VisitorController (
11281107 visitorControllerMessenger ,
11291108 ) ;
1130- const visitorOverflowControllerMessenger = messenger . getRestricted ( {
1131- name : visitorOverflowName ,
1132- allowedActions : [ 'VisitorController:clear' ] ,
1133- allowedEvents : [ 'VisitorController:stateChange' ] ,
1109+ const visitorOverflowControllerMessenger = new Messenger <
1110+ | VisitorOverflowControllerActions
1111+ | VisitorOverflowControllerDelegatedActions ,
1112+ | VisitorOverflowControllerEvents
1113+ | VisitorOverflowControllerDelegatedEvents ,
1114+ typeof visitorOverflowName
1115+ > ( {
1116+ namespace : visitorOverflowName ,
1117+ } ) ;
1118+ visitorOverflowControllerMessenger . delegate ( {
1119+ actions : [ 'VisitorOverflowController:updateMax' ] ,
1120+ events : [ 'VisitorOverflowController:stateChange' ] ,
1121+ messenger,
1122+ } ) ;
1123+ messenger . delegate ( {
1124+ actions : [ 'VisitorController:clear' ] ,
1125+ events : [ 'VisitorController:stateChange' ] ,
1126+ messenger : visitorOverflowControllerMessenger ,
11341127 } ) ;
11351128 const visitorOverflowController = new VisitorOverflowController (
11361129 visitorOverflowControllerMessenger ,
0 commit comments