dbl-utils
Version:
Utilities for dbl, adba and others projects
1 lines • 16.3 kB
Source Map (JSON)
{"version":3,"names":["cov_yv070m180","actualCoverage","EventHandler","constructor","f","s","events","patterns","cache","wildcardToRegExp","wildcardString","RegExp","split","map","escapeRegExp","join","string","replace","dispatch","event","data","b","promises","callback","id","Promise","all","callbacks","matchedPatterns","filter","pattern","test","flatMap","p","allCallbacks","subscribe","eventString","forEach","e","includes","regex","existingPattern","find","source","push","unsubscribe","callbackId","length","updateCacheWithPattern","eventId","updateCache","Object","keys","cacheEvent","exports","default"],"sources":["/home/diablo/dev/dbl-utils/src/event-handler.ts"],"sourcesContent":["type EventCallback = (...data: any[]) => any | Function;\r\n\r\ninterface Pattern {\r\n pattern: RegExp;\r\n callbacks: Array<[EventCallback, string]>;\r\n}\r\n\r\n/**\r\n * Class EventHandler to manage event subscriptions and dispatching.\r\n */\r\nexport class EventHandler {\r\n private events: Record<string, Array<[EventCallback, string]>>;\r\n private patterns: Array<Pattern>;\r\n private cache: Record<string, Array<[EventCallback, string]>>;\r\n\r\n /**\r\n * Construct an instance of EventHandler.\r\n */\r\n constructor() {\r\n this.events = {};\r\n this.patterns = [];\r\n this.cache = {};\r\n }\r\n\r\n /**\r\n * Converts a wildcard string to a regular expression.\r\n * @param wildcardString - The wildcard string to convert.\r\n * @returns A RegExp object.\r\n */\r\n private wildcardToRegExp(wildcardString: string): RegExp {\r\n return new RegExp('^' + wildcardString.split('*').map(this.escapeRegExp).join('.*') + '$');\r\n }\r\n\r\n /**\r\n * Escapes special characters in a string for use in a regular expression.\r\n * @param string - The string to escape.\r\n * @return The escaped string.\r\n */\r\n private escapeRegExp(string: string): string {\r\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n }\r\n\r\n /**\r\n * Dispatches an event to all subscribed callbacks.\r\n * @param event - The event name to dispatch.\r\n * @param data - Data to be passed to the callback function.\r\n * @returns A promise resolved with an array of callback responses.\r\n */\r\n async dispatch(event: string, ...data: any[]): Promise<any[]> {\r\n if (this.cache[event]) {\r\n const promises = this.cache[event].map(([callback, id]) => callback(...data, id));\r\n return await Promise.all(promises);\r\n }\r\n\r\n const callbacks = this.events[event] || [];\r\n const matchedPatterns = this.patterns.filter(({ pattern }) => pattern.test(event)).flatMap(p => p.callbacks);\r\n \r\n this.cache[event] = [...callbacks, ...matchedPatterns];\r\n\r\n const allCallbacks = [...callbacks, ...matchedPatterns];\r\n const promises = allCallbacks.map(([callback, id]) => callback(...data, id));\r\n return await Promise.all(promises);\r\n }\r\n\r\n /**\r\n * Subscribes to an event or a pattern of events.\r\n * @param eventString - The event name or pattern to subscribe to.\r\n * @param callback - The callback function to execute when the event is dispatched.\r\n * @param id - An identifier for the subscription, used for unsubscribing.\r\n */\r\n subscribe(eventString: string, callback: EventCallback, id: string): void {\r\n const events = eventString.split(/[\\s,]+/);\r\n events.forEach(e => {\r\n if (e.includes('*')) {\r\n // Handle wildcard patterns\r\n const regex = this.wildcardToRegExp(e);\r\n const existingPattern = this.patterns.find(p => p.pattern.source === regex.source);\r\n if (existingPattern) {\r\n existingPattern.callbacks.push([callback, id]);\r\n } else {\r\n this.patterns.push({ pattern: regex, callbacks: [[callback, id]] });\r\n }\r\n } else {\r\n // Handle direct event subscriptions\r\n if (!this.events[e]) this.events[e] = [];\r\n this.events[e].push([callback, id]);\r\n if (!this.cache[e]) this.cache[e] = [];\r\n this.cache[e].push([callback, id]);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Unsubscribes from an event or pattern of events.\r\n * @param eventString - The event name or pattern to unsubscribe from.\r\n * @param id - The identifier of the subscription to remove.\r\n */\r\n unsubscribe(eventString: string, id: string): void {\r\n const events = eventString.split(/[\\s,]+/);\r\n events.forEach(e => {\r\n if (e.includes('*')) {\r\n const regex = this.wildcardToRegExp(e);\r\n this.patterns = this.patterns.filter(pattern => {\r\n if (pattern.pattern.source !== regex.source) return true;\r\n pattern.callbacks = pattern.callbacks.filter(([, callbackId]) => callbackId !== id);\r\n return pattern.callbacks.length > 0;\r\n });\r\n this.updateCacheWithPattern(regex, id);\r\n } else {\r\n if (!this.events[e]) return;\r\n this.events[e] = this.events[e].filter(([, eventId]) => eventId !== id);\r\n this.updateCache(e, id);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove an event or pattern from the cache based on id.\r\n * @param event - The event name or pattern.\r\n * @param id - The identifier of the subscription to remove from the cache.\r\n */\r\n private updateCache(event: string, id: string): void {\r\n if (this.cache[event]) {\r\n this.cache[event] = this.cache[event].filter(([, eventId]) => eventId !== id);\r\n if (this.cache[event].length === 0) {\r\n delete this.cache[event];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update cache by removing pattern-matching events based on id.\r\n * @param regex - The regular expression pattern to match against.\r\n * @param id - The identifier for the subscription to be removed from the cache.\r\n */\r\n private updateCacheWithPattern(regex: RegExp, id: string): void {\r\n Object.keys(this.cache).forEach(cacheEvent => {\r\n if (regex.test(cacheEvent)) {\r\n this.cache[cacheEvent] = this.cache[cacheEvent].filter(([, callbackId]) => callbackId !== id);\r\n if (this.cache[cacheEvent].length === 0) {\r\n delete this.cache[cacheEvent];\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default new EventHandler();\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","ignoreList":[]}