Files
NapCatQQ/.pnpm-store/v3/files/3e/48bc6bc38567abd94ae027d95d09e30440d7b8bd810014cf687b95383090d9c7b6fdc71986dd0e6202e6e51f193a08088c32a55e81b30b235b76defc7dc468
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

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];
}
}
}
}