// class EventRegister {
//     static _Listeners = {
//       count: 0,
//       refs: {} as { [key: string]: any }
//     };
  
//     static addEventListener(eventName: string, callback: () => any) {
//       EventRegister._Listeners.count++;
//       const eventId = "l" + EventRegister._Listeners.count;
//       EventRegister._Listeners.refs[eventId] = {
//         name: eventName,
//         callback
//       };
//       return eventId;
//     }
  
//     static addFollowEventListener(id: string, callback: () => any) {
//       EventRegister._Listeners.count++;
//       const eventId = "l" + EventRegister._Listeners.count;
//       EventRegister._Listeners.refs[eventId] = {
//         name: "follow" + id,
//         callback
//       };
//       return eventId;
//     }
  
//     static removeFollowEventListener(id: string) {
//       return delete EventRegister._Listeners.refs["follow" + id];
//     }
  
//     static removeEventListener(id: string) {
//       return delete EventRegister._Listeners.refs[id];
//     }
  
//     static removeAllListeners() {
//       let removeError = false;
//       Object.keys(EventRegister._Listeners.refs).forEach(_id => {
//         const removed = delete EventRegister._Listeners.refs[_id];
//         removeError = !removeError ? !removed : removeError;
//       });
//       return !removeError;
//     }
  
//     static emitEvent(eventName: string, data: any) {
//       Object.keys(EventRegister._Listeners.refs).forEach(_id => {
//         if (
//           EventRegister._Listeners.refs[_id] &&
//           eventName === EventRegister._Listeners.refs[_id].name
//         )
//           EventRegister._Listeners.refs[_id].callback(data);
//       });
//     }
  
//     /*
//      * shortener
//      */
//     static on(eventName: string, callback: () => any) {
//       return EventRegister.addEventListener(eventName, callback);
//     }
  
//     static rm(eventName: string) {
//       return EventRegister.removeEventListener(eventName);
//     }
  
//     static rmAll() {
//       return EventRegister.removeAllListeners();
//     }
  
//     static emit(eventName: string, data: string) {
//       EventRegister.emitEvent(eventName, data);
//     }
//   }
  
//   export { EventRegister };
  