@nymphjs/pubsub
Version:
Nymph.js - PubSub Server
69 lines (58 loc) • 1.43 kB
text/typescript
import { EntityJson, Options } from '@nymphjs/nymph';
export type QuerySubscriptionData = {
current: string[];
query: string;
qrefParents: {
etype: string;
query: string;
}[];
/**
* This means the user directly subscribed to this query, as opposed
* to indirectly subscribing with a qref clause.
*/
direct: boolean;
count: boolean;
};
export type AuthenticateMessageData = {
action: 'authenticate';
authToken: string;
switchToken?: string;
};
export type QuerySubscribeMessageData = {
action: 'subscribe' | 'unsubscribe';
query: string;
count?: boolean;
};
export type UidSubscribeMessageData = {
action: 'subscribe' | 'unsubscribe';
uid: string;
count?: boolean;
};
export type SubscribeMessageData =
| QuerySubscribeMessageData
| UidSubscribeMessageData;
export type PublishEntityMessageData = {
action: 'publish';
guid: string;
event: 'create' | 'update' | 'delete';
etype: string;
entity?: EntityJson;
};
export type PublishUidMessageData = {
action: 'publish';
event: 'newUID' | 'setUID' | 'renameUID' | 'deleteUID';
name?: string;
oldName?: string;
newName?: string;
value?: number;
};
export type PublishMessageData =
| PublishEntityMessageData
| PublishUidMessageData;
export type MessageData =
| AuthenticateMessageData
| SubscribeMessageData
| PublishMessageData;
export type MessageOptions = Options & {
class: string;
};