@cloudbase/js-sdk
Version:
cloudbase javascript sdk
220 lines (219 loc) • 7.61 kB
TypeScript
import { DataType, QueueType } from './index';
export type IRequestMsgType = 'LOGIN' | 'INIT_WATCH' | 'REBUILD_WATCH' | 'CHECK_LAST' | 'CLOSE_WATCH' | 'PING';
export type IResponseMsgType = 'LOGIN_RES' | 'INIT_EVENT' | 'NEXT_EVENT' | 'CHECK_EVENT' | 'PONG' | 'ERROR';
export interface IRequestMessageBase<W extends boolean = true> {
watchId: W extends true ? string : undefined;
requestId: string;
msgType: IRequestMsgType;
msgData: IRequestMessageMsgData;
}
export type IRequestMessageMsgData = IRequestMessageInitWatchData | IRequestMessageLoginData | IRequestMessageRebuildWatchData | IRequestMessageCheckLastData | IRequestMessageCloseWatchData | IRequestMessagePingData;
export type IRequestMessage = IRequestMessageInitWatchMsg | IRequestMessageLoginMsg | IRequestMessageRebuildWatchMsg | IRequestMessageCheckLastMsg | IRequestMessageCloseWatchMsg | IRequestMessagePingMsg;
export interface IRequestMessageLoginData {
envId: string;
accessToken: string;
referrer: 'web';
sdkVersion: string;
dataVersion: string;
}
export interface IRequestExtraMessageLoginData {
runtime: string;
signStr: string;
secretVersion: string;
}
export interface IRequestMessageLoginMsg extends IRequestMessageBase<false> {
msgType: 'LOGIN';
msgData: IRequestMessageLoginData;
exMsgData?: IRequestExtraMessageLoginData;
}
export interface IRequestMessageInitWatchData {
envId: string;
collName: string;
query: string;
limit?: number;
orderBy?: Record<string, string>;
}
export interface IRequestMessageInitWatchMsg extends IRequestMessageBase {
msgType: 'INIT_WATCH';
msgData: IRequestMessageInitWatchData;
}
export interface IRequestMessageRebuildWatchData {
envId: string;
collName: string;
queryID: string;
eventID: number;
}
export interface IRequestMessageRebuildWatchMsg extends IRequestMessageBase {
msgType: 'REBUILD_WATCH';
msgData: IRequestMessageRebuildWatchData;
}
export interface IRequestMessageCheckLastData {
queryID: string;
eventID: number;
}
export interface IRequestMessageCheckLastMsg extends IRequestMessageBase {
msgType: 'CHECK_LAST';
msgData: IRequestMessageCheckLastData;
}
export type IRequestMessageCloseWatchData = null;
export interface IRequestMessageCloseWatchMsg extends IRequestMessageBase {
msgType: 'CLOSE_WATCH';
msgData: IRequestMessageCloseWatchData;
}
export type IRequestMessagePingData = null;
export interface IRequestMessagePingMsg extends IRequestMessageBase<false> {
msgType: 'PING';
msgData: IRequestMessagePingData;
}
export interface IResponseMessageBase<W extends boolean = true> {
watchId: W extends true ? string : undefined;
requestId: string;
msgType: IResponseMsgType;
msgData: IResponseMessageMsgData;
}
export type IResponseMessageMsgData = IResponseMessageLoginResData | IResponseMessageInitEventData | IResponseMessageNextEventData | IResponseMessageCheckEventData | IResponseMessagePongData | IResponseMessageErrorData;
export type IResponseMessage = IResponseMessageLoginResMsg | IResponseMessageInitEventMsg | IResponseMessageNextEventMsg | IResponseMessageCheckEventMsg | IResponseMessagePongMsg | IResponseMessageErrorMsg;
export type IResponseMessageLoginResData = {
envId: string;
} & Partial<IResponseMessageErrorData>;
export interface IResponseMessageLoginResMsg extends IResponseMessageBase<false> {
msgType: 'LOGIN_RES';
msgData: IResponseMessageLoginResData;
}
export interface IResponseMessageInitEventData {
queryID: string;
currEvent: number;
events: IDBEvent[];
}
export interface IResponseMessageInitEventMsg extends IResponseMessageBase {
msgType: 'INIT_EVENT';
msgData: IResponseMessageInitEventData;
}
export interface IResponseMessageNextEventData {
queryID: string;
currEvent: number;
events: IDBEvent[];
}
export interface IResponseMessageNextEventMsg extends IResponseMessageBase {
msgType: 'NEXT_EVENT';
msgData: IResponseMessageNextEventData;
}
export interface IResponseMessageCheckEventData {
queryID: string;
currEvent: number;
}
export interface IResponseMessageCheckEventMsg extends IResponseMessageBase {
msgType: 'CHECK_EVENT';
msgData: IResponseMessageCheckEventData;
}
export type IResponseMessagePongData = null;
export interface IResponseMessagePongMsg extends IResponseMessageBase {
msgType: 'PONG';
msgData: IResponseMessagePongData;
}
export type IResponseMessageErrorData = {
message: string;
} & ({
code: 'SYS_ERR';
} | {
code: 'CHECK_LOGIN_FAILED';
} | {
code: 'SIGN_INVALID_ERROR';
} | {
code: 'SIGN_EXPIRED_ERROR';
} | {
code: 'INVALIID_ENV';
} | {
code: 'SIGN_PARAM_INVALID';
} | {
code: 'COLLECTION_PERMISSION_DENIED';
} | {
code: 'QUERYID_INVALID_ERROR';
});
export interface IResponseMessageErrorMsg extends IResponseMessageBase {
msgType: 'ERROR';
msgData: IResponseMessageErrorData;
}
export type IDBEvent = IDBInitEvent | IDBNextEvent;
export interface IDBEventBase {
ID: number;
DataType: DataType;
QueueType: QueueType;
DocID: string;
Doc: string;
}
export interface IDBInitEvent extends IDBEventBase {
DataType: 'init';
QueueType: 'init';
UpdatedFields?: any;
removedFields?: any;
}
export type IDBNextEvent = IDBNextEventDataUpdate | IDBNextEventDataReplace | IDBNextEventDataAdd | IDBNextEventDataRemove | IDBNextEventDataLimit;
export type IDBNextEventDataUpdate = IDBNextEventDataUpdateQueueUpdate | IDBNextEventDataUpdateQueueEnqueue | IDBNextEventDataUpdateQueueDequeue;
export type IDBNextEventDataReplace = IDBNextEventDataReplaceQueueUpdate | IDBNextEventDataReplaceQueueEnqueue | IDBNextEventDataReplaceQueueDequeue;
export type IDBNextEventDataLimit = IDBNextEventDataLimitQueueEnqueue | IDBNextEventDataLimitQueueDequeue;
export interface IDBNextEventDataUpdateQueueUpdate extends IDBEventBase {
DataType: 'update';
QueueType: 'update';
Doc: '';
UpdatedFields: string;
RemovedFields: string;
}
export interface IDBNextEventDataUpdateQueueEnqueue extends IDBEventBase {
DataType: 'update';
QueueType: 'enqueue';
Doc: string;
UpdatedFields: string;
RemovedFields: string;
}
export interface IDBNextEventDataUpdateQueueDequeue extends IDBEventBase {
DataType: 'update';
QueueType: 'dequeue';
Doc: '';
UpdatedFields: string;
RemovedFields: string;
}
export interface IDBNextEventDataReplaceQueueUpdate extends IDBEventBase {
DataType: 'replace';
QueueType: 'update';
Doc: string;
UpdatedFields: '';
RemovedFields: '';
}
export interface IDBNextEventDataReplaceQueueEnqueue extends IDBEventBase {
DataType: 'replace';
QueueType: 'enqueue';
Doc: string;
UpdatedFields: '';
RemovedFields: '';
}
export interface IDBNextEventDataReplaceQueueDequeue extends IDBEventBase {
DataType: 'replace';
QueueType: 'dequeue';
Doc: string;
UpdatedFields: '';
RemovedFields: '';
}
export interface IDBNextEventDataAdd extends IDBEventBase {
DataType: 'add';
QueueType: 'enqueue';
}
export interface IDBNextEventDataRemove extends IDBEventBase {
DataType: 'remove';
QueueType: 'dequeue';
Doc: '';
}
export interface IDBNextEventDataLimitQueueEnqueue extends IDBEventBase {
DataType: 'limit';
QueueType: 'enqueue';
Doc: string;
UpdatedFields: '';
RemovedFields: '';
}
export interface IDBNextEventDataLimitQueueDequeue extends IDBEventBase {
DataType: 'limit';
QueueType: 'dequeue';
Doc: '';
UpdatedFields: '';
RemovedFields: '';
}