iframe-bridge-sdk
Version:
Universal iframe communication SDK - unified package for host and guest applications
219 lines • 5.35 kB
TypeScript
/**
* 基础消息结构
*/
export interface Message {
/** 事件名称 */
event: string;
/** 消息数据 */
data?: any;
/** 消息ID,用于请求-响应匹配 */
id?: string;
/** 时间戳 */
timestamp?: number;
}
/**
* 事件回调函数
*/
export type EventCallback = (data: any) => void;
/**
* 请求处理回调函数
* @param data 请求数据
* @param respond 响应函数
*/
export type RequestCallback = (data: any, respond: (result: any) => void) => void;
/**
* Host SDK 初始化配置
*/
export interface HostConfig {
/** iframe源地址 */
src: string;
/** iframe元素选择器 */
selector: string;
/** 宽度,默认 '100%' */
width: string;
/** 高度,默认 '100%' */
height: string;
/** 请求超时时间(毫秒),默认 10000 */
timeout: number;
/** 允许的来源域名列表,为空则不限制 */
allowedOrigins: string[];
}
/**
* Guest SDK 初始化配置
*/
export interface GuestConfig {
/** 目标窗口来源域名,默认 '*' */
targetOrigin?: string;
/** 是否自动发送ready事件,默认 true */
autoReady?: boolean;
}
/**
* SDK错误类型
*/
export interface SDKError {
/** 错误代码 */
code: string;
/** 错误消息 */
message: string;
/** 原始错误对象 */
originalError?: Error;
}
/**
* 预定义错误代码
*/
export declare enum ErrorCode {
/** 请求超时 */
TIMEOUT = "TIMEOUT",
/** 无效消息格式 */
INVALID_MESSAGE = "INVALID_MESSAGE",
/** 未找到处理器 */
NO_HANDLER = "NO_HANDLER",
/** 初始化失败 */
INIT_FAILED = "INIT_FAILED",
/** 连接丢失 */
CONNECTION_LOST = "CONNECTION_LOST"
}
/**
* 待处理的请求
*/
export interface PendingRequest {
/** 成功回调 */
resolve: (value: any) => void;
/** 失败回调 */
reject: (reason: any) => void;
/** 请求时间戳 */
timestamp: number;
}
/**
* SDK状态
*/
export declare enum SDKState {
/** 未初始化 */
IDLE = "idle",
/** 初始化中 */
INITIALIZING = "initializing",
/** 已就绪 */
READY = "ready",
/** 已销毁 */
DESTROYED = "destroyed"
}
/**
* 提取Promise的返回类型
*/
export type PromiseReturnType<T> = T extends Promise<infer R> ? R : T;
/**
* 可选的配置对象
*/
export type PartialConfig<T> = {
[K in keyof T]?: T[K];
};
/**
* 事件映射接口,用于类型安全的事件定义
*/
export interface EventMap {
[eventName: string]: any;
}
/**
* 类型安全的事件回调
*/
export type TypedEventCallback<T extends EventMap, K extends keyof T> = (data: T[K]) => void;
/**
* 类型安全的请求回调
*/
export type TypedRequestCallback<T extends EventMap, K extends keyof T> = (data: T[K], respond: (result: any) => void) => void;
/**
* 基础消息处理类
* 提供事件发送、请求-响应、监听器管理等功能
*/
export declare abstract class BaseMessenger {
/** 事件监听器映射 */
private eventListeners;
/** 请求处理器映射 */
private requestHandlers;
/** 待处理的请求映射 */
private pendingRequests;
/** 当前状态 */
private state;
/** 请求超时时间(毫秒) */
private timeout;
/** 清理定时器 */
private cleanupTimer?;
/**
* 发送事件
* @param event 事件名称
* @param data 事件数据
*/
emit(event: string, data?: any): void;
/**
* 发送请求并等待响应
* @param event 请求事件名称
* @param data 请求数据
* @returns Promise<any> 响应数据
*/
request(event: string, data?: any): Promise<any>;
/**
* 监听事件
* @param event 事件名称
* @param callback 回调函数
*/
on(event: string, callback: EventCallback): void;
/**
* 移除事件监听
* @param event 事件名称
* @param callback 回调函数(可选,不传则移除所有监听器)
*/
off(event: string, callback?: EventCallback): void;
/**
* 处理请求
* @param event 请求事件名称
* @param handler 处理函数
*/
onRequest(event: string, handler: RequestCallback): void;
/**
* 移除请求处理器
* @param event 请求事件名称
*/
offRequest(event: string): void;
/**
* 设置请求超时时间
* @param timeout 超时时间(毫秒)
*/
setTimeout(timeout: number): void;
/**
* 获取当前状态
*/
getState(): SDKState;
/**
* 设置状态
* @param state 新状态
*/
setState(state: SDKState): void;
/**
* 销毁实例
*/
destroy(): void;
/**
* 发送消息(抽象方法,由子类实现)
* @param message 要发送的消息
*/
protected abstract sendMessage(message: Message): void;
/**
* 处理接收到的消息
* @param message 接收到的消息
*/
protected handleIncomingMessage(message: any): void;
/**
* 生成唯一ID
*/
private generateId;
/**
* 验证消息格式
* @param message 消息对象
*/
private isValidMessage;
/**
* 清理过期的请求
*/
private cleanupExpiredRequests;
}
//# sourceMappingURL=shared.d.ts.map