UNPKG

iframe-bridge-sdk

Version:

Universal iframe communication SDK - unified package for host and guest applications

219 lines 5.35 kB
/** * 基础消息结构 */ 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