Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
import { Subscriber } from './types';
|
|
|
|
export type Subscribers = {
|
|
[url: string]: Set<Subscriber>,
|
|
}
|
|
|
|
const subscribers: Subscribers = {};
|
|
const EMPTY_LIST: Subscriber[] = [];
|
|
|
|
export const getSubscribers = (url: string): Subscriber[] => {
|
|
if (hasSubscribers(url)) {
|
|
return Array.from(subscribers[url]);
|
|
}
|
|
return EMPTY_LIST;
|
|
};
|
|
|
|
export const hasSubscribers = (url: string): boolean => {
|
|
return subscribers[url]?.size > 0;
|
|
};
|
|
|
|
export const addSubscriber = (url: string, subscriber: Subscriber): void => {
|
|
subscribers[url] = subscribers[url] || new Set<Subscriber>();
|
|
subscribers[url].add(subscriber);
|
|
};
|
|
|
|
export const removeSubscriber = (url: string, subscriber: Subscriber): void => {
|
|
subscribers[url].delete(subscriber);
|
|
};
|
|
|
|
export const resetSubscribers = (url?: string): void => {
|
|
if (url && subscribers.hasOwnProperty(url)) {
|
|
delete subscribers[url];
|
|
} else {
|
|
for (let url in subscribers){
|
|
if (subscribers.hasOwnProperty(url)){
|
|
delete subscribers[url];
|
|
}
|
|
}
|
|
}
|
|
}
|