11import { v4 as uuid } from "uuid" ;
22
33const subscriptions = { } ;
4- const map = new Map ( ) ;
4+ const messages = new Map ( ) ;
55
66const subscribe = ( type , callback ) => {
77 const id = uuid ( ) ;
8+ console . debug ( "react-event" , "subscribe" , type , id ) ;
89
910 if ( ! subscriptions [ type ] ) {
1011 subscriptions [ type ] = { } ;
1112 }
1213
1314 subscriptions [ type ] [ id ] = callback ;
1415
15- let last = map . get ( type ) ;
16+ let last = messages . get ( type ) ;
1617
1718 if ( last ) {
1819 callback ( last ) ;
@@ -30,15 +31,22 @@ const subscribe = (type, callback) => {
3031} ;
3132
3233const publish = ( type , payload ) => {
33- console . log ( "react-event" , type , payload ) ;
34- map . set ( type , payload ) ;
35- if ( ! subscriptions [ type ] ) return ;
34+ console . log ( "react-event" , "publish" , type , payload ) ;
35+ messages . set ( type , payload ) ;
3636
37- Object . keys ( subscriptions [ type ] ) . forEach ( ( key ) => {
37+ Object . keys ( subscriptions [ type ] || { } ) . forEach ( ( key ) => {
3838 setTimeout ( ( ) => {
3939 subscriptions [ type ] [ key ] ( payload ) ;
4040 } , 0 ) ;
4141 } ) ;
4242} ;
4343
44- export { subscribe , publish , map } ;
44+ function last ( type , init ) {
45+ if ( messages . has ( type ) ) {
46+ return messages . get ( type ) ;
47+ } else {
48+ return init ;
49+ }
50+ }
51+
52+ export { subscribe , publish , messages , last } ;
0 commit comments