@intuitionrobotics/push-pub-sub
Version:
34 lines (33 loc) • 1.83 kB
TypeScript
import { Module } from "@intuitionrobotics/ts-common";
import { FirebaseType_BatchResponse, FirebaseType_Message, FirestoreTransaction } from "@intuitionrobotics/firebase/backend";
import { DB_Notifications, IFP, ISP, ITP, MessageType, Request_PushRegister, SubscribeProps } from "../../index";
import { ExpressRequest } from "@intuitionrobotics/thunderstorm/backend";
type Config = {
notificationsCleanupTime?: number;
sessionsCleanupTime?: number;
};
type TempMessages = {
[token: string]: DB_Notifications[];
};
export declare class PushPubSubModule_Class extends Module<Config> {
constructor();
private pushSessions;
private pushKeys;
private notifications;
private messaging;
protected init(): void;
register(body: Request_PushRegister, request: ExpressRequest): Promise<DB_Notifications[]>;
pushToKey<M extends MessageType<any, any, any> = never, S extends string = IFP<M>, P extends SubscribeProps = ISP<M>, D = ITP<M>>(key: S, props?: P, data?: D, persistent?: boolean, transaction?: FirestoreTransaction): Promise<void>;
pushToUser<M extends MessageType<any, any, any> = never, S extends string = IFP<M>, P extends SubscribeProps = ISP<M>, D = ITP<M>>(user: string, key: string, props?: P, data?: D, persistent?: boolean): Promise<void>;
private buildNotification;
sendMessage: (persistent: boolean, _messages: TempMessages) => Promise<{
response: FirebaseType_BatchResponse;
messages: FirebaseType_Message[];
} | undefined>;
readNotification: (id: string, read: boolean) => Promise<void>;
scheduledCleanup: () => Promise<void>;
cleanUp: (response: FirebaseType_BatchResponse, messages: FirebaseType_Message[]) => Promise<void>;
private cleanUpImpl;
}
export declare const PushPubSubModule: PushPubSubModule_Class;
export {};