| 
					
				 | 
			
			
				@@ -10,6 +10,11 @@ export class EventsModule extends BaseModule { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private _subscriptions: Record<string, ((message: any) => Promise<void>)[]>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private _pSubscriptions: Record< 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		string, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		((message: any) => Promise<void>)[] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private _socketSubscriptions: Record<string, Set<string>>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private _scheduleCallbacks: Record<string, (() => Promise<void>)[]>; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -21,6 +26,7 @@ export class EventsModule extends BaseModule { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		super("events"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this._subscriptions = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this._pSubscriptions = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this._socketSubscriptions = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this._scheduleCallbacks = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -183,6 +189,17 @@ export class EventsModule extends BaseModule { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			this._subscriptions[channel].map(async cb => cb(message)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (this._pSubscriptions) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			await Promise.all( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Object.entries(this._pSubscriptions) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.filter(([subscription]) => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						new RegExp(channel).test(subscription) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					.map(async ([, callbacks]) => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						Promise.all(callbacks.map(async cb => cb(message))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (!this._socketSubscriptions[channel]) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		for await (const socketId of this._socketSubscriptions[ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -223,6 +240,27 @@ export class EventsModule extends BaseModule { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this._subscriptions[channel].push(callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * pSubscribe - Subscribe to an event with pattern 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public async pSubscribe( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		pattern: string, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		callback: (message?: any) => Promise<void> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!this._subClient) throw new Error("Redis subClient unavailable."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!this._pSubscriptions[pattern]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this._pSubscriptions[pattern] = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			await this._subClient.pSubscribe( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				this._createKey("event", pattern), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(...args) => this._subscriptionListener(...args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this._pSubscriptions[pattern].push(callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * unsubscribe - Unsubscribe from an event or schedule completion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 */ 
			 |