@realsee/five
Version:
Realsee Renderer SDK
67 lines (66 loc) • 3.39 kB
TypeScript
import { Subscribe } from "./subscribe";
type NetWorkMeta = {
origin: string;
source: string;
headers: {
[name: string]: string;
};
requestTime: number;
responseTime: number;
costs: number;
size?: number;
};
type NetworkResponse<T = any, E extends NetWorkMeta | NetWorkMeta[] = NetWorkMeta> = {
body: T;
meta: E;
};
type NetworkType = "XMLHttpRequest" | "Image" | "Link";
type NetworkState = "ok" | "preload" | "error" | "timeout" | "forbidden";
declare class NetworkProxyError extends Error {
constructor(source: string, type: NetworkType, reason: string);
}
declare class NetworkResponseError extends Error {
httpStatus: number;
constructor(source: string, type: NetworkType, status: number);
}
declare class NetworkAbortError extends Error {
constructor(source: string, type: NetworkType);
}
declare class NetworkTimeoutError extends Error {
constructor(source: string, type: NetworkType, timeout: number);
}
declare class NetworkFirbiddenError extends Error {
constructor(source: string, type: NetworkType, reason: string);
}
type NetworkError = NetworkResponseError | NetworkAbortError | NetworkTimeoutError | NetworkFirbiddenError;
type NetworkCallback = (error: NetworkError | null, response: NetworkResponse | null) => void;
type NetworkSuccessCallback<T = any> = (response: NetworkResponse<T>) => void;
type NetworkErrorCallback = (error: NetworkError) => void;
type NetworkProgressCallback = (percent: number, loaded?: number, total?: number) => void;
declare class NetworkSubscribe extends Subscribe<{
network(source: string, type: NetworkType, state: NetworkState, detail: string): void;
}> {
}
interface NetworkOptions {
/** 超时时间 */
timeout?: number;
/** 请求代理 */
requestProxy?: (url: string) => string | Promise<string>;
/** 网络消息追踪 */
networkSubscribe?: NetworkSubscribe;
}
type AjaxResponseType = "arraybuffer" | "blob" | "text";
type AjaxResponseTypeMapping<K extends AjaxResponseType> = K extends "arraybuffer" ? ArrayBuffer : K extends "blob" ? Blob : K extends "text" ? string : never;
interface AjaxOptions<T extends AjaxResponseType = AjaxResponseType> extends NetworkOptions {
/** 数据返回类型 */
responseType?: T;
}
declare class Fetcher {
private options;
constructor(options?: NetworkOptions);
ajax<T extends AjaxResponseType = "text">(source: string, options?: AjaxOptions<T>, onLoad?: NetworkSuccessCallback<AjaxResponseTypeMapping<T>>, onError?: NetworkErrorCallback, onProgress?: NetworkProgressCallback): Promise<NetworkResponse<AjaxResponseTypeMapping<T>>>;
loadImage<T extends HTMLImageElement = HTMLImageElement>(source: string, options?: NetworkOptions, onLoad?: NetworkSuccessCallback, onError?: NetworkErrorCallback, onProgress?: NetworkProgressCallback, target?: T): Promise<NetworkResponse<T>>;
preload(source: string, options?: NetworkOptions): Promise<void>;
}
declare const internalFetcher: Fetcher;
export { internalFetcher, Fetcher, AjaxResponseType, AjaxResponseTypeMapping, NetworkSubscribe, NetworkState, NetworkType, NetworkOptions, AjaxOptions, NetworkResponseError, NetworkTimeoutError, NetworkAbortError, NetworkFirbiddenError, NetworkError, NetworkProxyError, NetworkCallback, NetworkSuccessCallback, NetworkErrorCallback, NetworkProgressCallback, NetworkResponse, NetWorkMeta, };