gas-client
Version:
A client-side utility class that can call server-side Google Apps Script functions
54 lines (53 loc) • 1.68 kB
TypeScript
export declare enum MessageType {
REQUEST = "REQUEST",
RESPONSE = "RESPONSE",
SCRIPT_HOST_FUNCTION_REQUEST = "SCRIPT_HOST_FUNCTION_REQUEST"
}
export declare enum ResponseStatus {
ERROR = "ERROR",
SUCCESS = "SUCCESS"
}
export declare enum OriginType {
GAS = "GAS",
APP = "App"
}
export type GASStore = Record<string, {
resolve: (value?: unknown) => void;
reject: (reason?: unknown) => void;
}>;
export interface GasScriptData {
type: MessageType;
}
export interface DevServerRequest extends GasScriptData {
id: string;
args: unknown[];
functionName: string;
type: MessageType.REQUEST;
}
export interface DevServerResponse extends GasScriptData {
id: string;
response: unknown;
status: ResponseStatus;
type: MessageType.RESPONSE;
}
export interface DevServerScriptHostFunctionRequest extends GasScriptData {
type: MessageType.SCRIPT_HOST_FUNCTION_REQUEST;
functionName: string;
args: unknown[];
}
export interface DevServerContentWindow<Origin extends OriginType> extends Window {
postMessage: {
(message: Origin extends OriginType.GAS ? DevServerResponse : DevServerRequest | DevServerScriptHostFunctionRequest, targetOrigin: string, transfer?: Transferable[]): void;
(message: any, options?: WindowPostMessageOptions): void;
};
}
export interface AppWindow extends Window {
parent: DevServerContentWindow<OriginType.APP>;
gasStore: GASStore;
}
export interface DevServerRequestEvent extends MessageEvent {
data: DevServerRequest;
}
export interface GASDevServerIFrame extends HTMLIFrameElement {
contentWindow: DevServerContentWindow<OriginType.GAS>;
}