@firebase/webchannel-wrapper
Version:
A wrapper of the webchannel packages from closure-library for use outside of a closure compiled application
103 lines (85 loc) • 2.89 kB
TypeScript
/**
* @license
* Copyright The Closure Library Authors.
* SPDX-License-Identifier: Apache-2.0
*/
// Based on
// https://github.com/firebase/firebase-js-sdk/blob/ce88e71e738ac7bb2cd5d63e4e314e2de82f72ef/packages/webchannel-wrapper/src/index.d.ts.
// WARNING: This is not a complete set of types and functions that exist in the
// Closure WebChannel code - it is merely meant to support the usage patterns of
// the Firestore SDK.
export var EventType: {COMPLETE: string;};
export namespace WebChannel {
export var EventType:
{OPEN: string; CLOSE: string; ERROR: string; MESSAGE: string;};
}
export var Event: {STAT_EVENT: string;};
export var Stat: {PROXY: number; NOPROXY: number;};
export var ErrorCode: {NO_ERROR: number; HTTP_ERROR: number; TIMEOUT: number;};
export interface Headers {
[name: string]: string|number;
}
export interface WebChannelError {
error?: {status: string; message: string};
}
export class XhrIo {
send(
url: string, method?: string, body?: string, headers?: Headers,
timeoutInterval?: number): void;
getLastErrorCode(): number;
getLastError(): string;
getStatus(): number;
getResponseText(): string;
getResponseJson(): WebChannelError|object;
listenOnce(type: string, cb: (param: unknown) => void): void;
setWithCredentials(withCredentials: boolean): void;
}
export interface WebChannelOptions {
messageHeaders?: {
// To ensure compatibility with property minifcation tools, keys need to
// be listed explicitly.
[k: string]: never;
};
initMessageHeaders?: {
// To ensure compatibility with property minifcation tools, keys need to
// be listed explicitly.
[k: string]: never;
};
messageContentType?: string;
messageUrlParams?: {database?: string;};
clientProtocolHeaderRequired?: boolean;
concurrentRequestLimit?: number;
supportsCrossDomainXhr?: boolean;
sendRawJson?: boolean;
httpSessionIdParam?: string;
encodeInitMessageHeaders?: boolean;
forceLongPolling?: boolean;
detectBufferingProxy?: boolean;
longPollingTimeout?: number;
fastHandshake?: boolean;
disableRedac?: boolean;
clientProfile?: string;
internalChannelParams?: {forwardChannelRequestTimeoutMs?: number;};
useFetchStreams?: boolean;
xmlHttpFactory?: unknown;
requestRefreshThresholds?: {[key: string]: number};
}
export interface EventTarget {
listen(type: string|number, cb: (param: unknown) => void): void;
}
export interface WebChannel extends EventTarget {
open(): void;
close(): void;
send(msg: unknown): void;
}
export interface StatEvent {
stat: number;
}
export interface WebChannelTransport {
createWebChannel(url: string, options: WebChannelOptions): WebChannel;
}
export function createWebChannelTransport(): WebChannelTransport;
export function getStatEventTarget(): EventTarget;
export class FetchXmlHttpFactory {
constructor(options: {});
}