@hd-front-end/jsbridge-sdk 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/index.d.ts +204 -2
- package/dist/index.esm.js +556 -9
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +558 -8
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +560 -12
- package/dist/index.umd.js.map +1 -1
- package/docs/00-/351/241/271/347/233/256/346/246/202/350/247/210.md +282 -0
- package/docs/01-/346/236/266/346/236/204/350/256/276/350/256/241.md +623 -0
- package/docs/02-/346/212/200/346/234/257/345/256/236/347/216/260.md +867 -0
- package/docs/03-API/344/275/277/347/224/250/346/226/207/346/241/243.md +1104 -0
- package/docs/04-/346/265/213/350/257/225/346/226/271/346/241/210.md +360 -0
- package/docs/05-/350/277/201/347/247/273/346/214/207/345/215/227.md +181 -0
- package/docs/06-/346/236/266/346/236/204/345/233/276/351/233/206.md +738 -0
- package/docs/07-/346/226/260/346/241/245/346/216/245/346/226/271/346/263/225/346/211/251/345/261/225/350/257/264/346/230/216.md +139 -0
- package/docs/CODE_REVIEW.md +65 -0
- package/docs/EVALUATION.md +72 -0
- package/docs/README.md +258 -0
- package/docs//345/205/263/351/224/256/351/227/256/351/242/230/350/247/243/347/255/224.md +495 -0
- package/docs//346/226/207/346/241/243/346/225/264/345/220/210/350/257/264/346/230/216.md +265 -0
- package/docs//346/233/264/346/226/260/346/227/245/345/277/227.md +669 -0
- package/docs//347/224/237/344/272/247/347/272/247-/345/277/253/351/200/237/345/274/200/345/247/213-v2.md +673 -0
- package/docs//347/224/237/344/272/247/347/272/247-/346/236/266/346/236/204/350/256/276/350/256/241-v2.md +730 -0
- package/docs//350/256/276/350/256/241/347/220/206/345/277/265/350/257/264/346/230/216.md +438 -0
- package/package.json +3 -2
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/core/Bridge.ts","../src/types/index.ts","../src/api/log.ts","../src/monitor/Monitor.ts","../src/debug/Debug.ts","../src/api/device.ts","../src/api/media.ts","../src/api/router.ts","../src/api/storage.ts","../src/api/system.ts","../src/index.ts"],"sourcesContent":["/**\n * JSBridge 核心通信层\n * \n * 参考:context/soa/src/jsBridge/JsBridge.ts\n * 优化:增强错误处理、超时机制、初始化重试\n */\n\nimport type { Platform } from '../types'\n\nclass Bridge {\n private bridge: any = null\n private isInitialized: boolean = false\n private platform: Platform = 'unknown'\n private initPromise: Promise<boolean> | null = null\n \n constructor() {\n this.detectPlatform()\n }\n \n /**\n * 检测平台\n * 优化:支持更多的 UA 特征识别\n */\n private detectPlatform(): void {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n this.platform = 'unknown'\n return\n }\n \n const ua = navigator.userAgent\n \n // Android 检测\n if (/SoaAndroid/i.test(ua) || /HDApp.*Android/i.test(ua)) {\n this.platform = 'android'\n return\n }\n \n // iOS 检测\n if (/iPhone|iPad|iPod/i.test(ua) && /HDApp/i.test(ua)) {\n this.platform = 'ios'\n return\n }\n \n this.platform = 'unknown'\n }\n \n /**\n * 初始化 JSBridge\n * 优化:支持多次调用(返回同一个 Promise)、增加重试机制\n */\n async init(): Promise<boolean> {\n // 如果已初始化,直接返回成功\n if (this.isInitialized) {\n return true\n }\n \n // 如果正在初始化,返回同一个 Promise\n if (this.initPromise) {\n return this.initPromise\n }\n \n // 不在原生环境中\n if (this.platform === 'unknown') {\n console.warn('[JSBridge] 不在原生 App 环境中')\n return false\n }\n \n // 创建初始化 Promise\n this.initPromise = new Promise((resolve, reject) => {\n try {\n // 检查是否已有 Bridge 实例\n if (window.WKWebViewJavascriptBridge) {\n this.bridge = window.WKWebViewJavascriptBridge\n this.isInitialized = true\n resolve(true)\n return\n }\n \n // 初始化 WKWVJBCallbacks 队列\n if (!window.WKWVJBCallbacks) {\n window.WKWVJBCallbacks = []\n }\n \n // 添加回调到队列\n window.WKWVJBCallbacks.push((bridge: any) => {\n this.bridge = bridge\n this.isInitialized = true\n resolve(true)\n })\n \n // Android 平台:触发注入\n if (this.platform === 'android') {\n // 兼容性检查:InjectJavascript 可能未注入或延迟注入\n // 优化策略:如果 InjectJavascript 不存在,不立即报错,而是等待原生注入(通过超时机制)\n if (window.InjectJavascript && typeof window.InjectJavascript.init === 'function') {\n window.InjectJavascript.init()\n } else {\n console.warn('[JSBridge] InjectJavascript 暂未就绪,等待原生注入或超时...')\n // 不 reject,依赖下方的 setTimeout 超时机制或原生主动调用 WKWVJBCallbacks\n }\n }\n \n // iOS 平台:使用 iframe 触发\n if (this.platform === 'ios') {\n const iframe = document.createElement('iframe')\n iframe.style.display = 'none'\n iframe.src = 'https://__bridge_loaded__'\n document.documentElement.appendChild(iframe)\n setTimeout(() => {\n document.documentElement.removeChild(iframe)\n }, 0)\n }\n \n // 超时保护(10 秒)\n const timeoutId = setTimeout(() => {\n if (!this.isInitialized) {\n const error = new Error(`${this.platform} 初始化超时`)\n console.error(`[JSBridge] ${error.message}`)\n reject(error)\n }\n }, 10000)\n \n // 清理超时定时器(当初始化成功时)\n this.initPromise?.then(() => clearTimeout(timeoutId))\n \n } catch (error) {\n console.error('[JSBridge] 初始化异常:', error)\n reject(error)\n }\n })\n \n return this.initPromise\n }\n \n /**\n * 等待 Bridge 就绪\n * 轮询检查 Bridge 实例是否存在\n */\n private async waitForReady(): Promise<void> {\n if (this.bridge) return\n\n return new Promise((resolve, reject) => {\n let retryCount = 0\n const maxRetries = 20 // 最多重试 20 次 (4秒)\n const interval = 200 // 每次间隔 200ms\n\n const check = () => {\n // 再次尝试从全局获取\n if (window.WKWebViewJavascriptBridge) {\n this.bridge = window.WKWebViewJavascriptBridge\n this.isInitialized = true\n resolve()\n return\n }\n\n // Android 再次尝试触发注入\n if (this.platform === 'android' && window.InjectJavascript?.init) {\n window.InjectJavascript.init()\n }\n\n retryCount++\n if (retryCount > maxRetries) {\n reject(new Error('Bridge 等待就绪超时'))\n } else {\n setTimeout(check, interval)\n }\n }\n \n check()\n })\n }\n\n /**\n * 调用原生方法\n * 优化:自动初始化、增强错误处理、支持泛型返回值\n */\n async call<T = any>(method: string, data?: any): Promise<T> {\n // 自动初始化\n if (!this.isInitialized) {\n await this.init()\n }\n \n // 确保 bridge 实例就绪\n if (!this.bridge) {\n try {\n await this.waitForReady()\n } catch (e) {\n throw new Error(`调用 ${method} 失败: Bridge 未就绪`)\n }\n }\n \n return new Promise<T>((resolve, reject) => {\n try {\n // 超时控制(10 秒)\n const timeoutId = setTimeout(() => {\n reject(new Error(`${method} 调用超时`))\n }, 10000)\n \n // 调用原生方法\n this.bridge.callHandler(method, data, (result: T) => {\n clearTimeout(timeoutId)\n resolve(result)\n })\n \n } catch (error) {\n console.error(`[JSBridge] ${method} 调用异常:`, error)\n reject(error)\n }\n })\n }\n \n /**\n * 注册 JS 方法供原生调用\n * 优化:增加错误处理\n */\n async register(method: string, handler: (data: any, callback: (response: any) => void) => void): Promise<void> {\n // 自动初始化\n if (!this.isInitialized) {\n const success = await this.init()\n if (!success) {\n throw new Error('JSBridge 未初始化')\n }\n }\n \n try {\n this.bridge.registerHandler(method, handler)\n } catch (error) {\n console.error(`[JSBridge] 注册方法失败: ${method}`, error)\n throw error\n }\n }\n \n /**\n * 检查是否在 App 内\n */\n inApp(): boolean {\n return this.platform !== 'unknown'\n }\n \n /**\n * 获取平台类型\n */\n getPlatform(): Platform {\n return this.platform\n }\n \n /**\n * 检查是否已初始化\n */\n isReady(): boolean {\n return this.isInitialized\n }\n}\n\n// 导出单例\nexport const bridge = new Bridge()\n","/**\n * JSBridge SDK 类型定义\n */\n\n// ==================== 平台类型 ====================\n\nexport type Platform = 'android' | 'ios' | 'unknown'\n\n// ==================== 配置类型 ====================\n\nexport interface JSBridgeConfig {\n debug?: DebugConfig\n monitor?: MonitorConfig\n}\n\nexport interface DebugConfig {\n enabled: boolean\n useVConsole?: boolean\n logLevel?: 'debug' | 'info' | 'warn' | 'error'\n showTimestamp?: boolean\n}\n\nexport interface MonitorConfig {\n enabled: boolean\n autoReport?: boolean\n reportInterval?: number\n maxRecords?: number\n logTag?: string\n}\n\n// ==================== 日志类型 ====================\n\nexport enum LogLevel {\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n WARN = 'WARN',\n ERROR = 'ERROR'\n}\n\nexport interface LogRequest {\n tag?: string\n level: LogLevel\n message: string\n}\n\n// ==================== 设备相关 ====================\n\nexport interface ScanRequest {\n scanType?: ('qrCode' | 'barCode')[]\n hideAlbum?: boolean\n}\n\nexport interface ScanResult {\n resp_code: number\n resp_result: string\n resp_message?: string\n}\n\nexport interface DeviceInfo {\n model: string\n system: string\n version: string\n platform: string\n [key: string]: any\n}\n\nexport interface NetworkInfo {\n networkType: 'wifi' | '2g' | '3g' | '4g' | '5g' | 'none' | 'unknown'\n}\n\n// ==================== 媒体相关 ====================\n\nexport interface ChooseMediaRequest {\n count?: number\n mediaType?: ('image' | 'video')[]\n sourceType?: ('album' | 'camera')[]\n maxDuration?: number\n sizeType?: ('original' | 'compressed')[]\n}\n\nexport interface MediaFile {\n tempFilePath: string\n size: number\n duration?: number\n height?: number\n width?: number\n thumbTempFilePath?: string\n fileType?: 'image' | 'video'\n}\n\nexport interface ChooseMediaResult {\n tempFiles: MediaFile[]\n type?: 'image' | 'video'\n}\n\nexport interface ImageInfo {\n width: number\n height: number\n path: string\n orientation?: string\n type?: string\n}\n\nexport interface UploadFileRequest {\n url: string\n filePath: string\n name: string\n header?: Record<string, string>\n formData?: Record<string, any>\n timeout?: number\n}\n\nexport interface UploadFileResult {\n data: string\n statusCode: number\n errMsg?: string\n}\n\nexport interface PrintRequest {\n data: any\n [key: string]: any\n}\n\n// ==================== 路由相关 ====================\n\nexport interface NavigationBarStyle {\n navigationBarTitleText?: string\n backgroundColor?: string\n textColor?: string\n hideNavigationBar?: boolean\n}\n\nexport interface RouteInfo {\n path: string\n query?: Record<string, any>\n}\n\n// ==================== 存储相关 ====================\n\nexport interface StorageData {\n key: string\n data: any\n}\n\nexport interface AppInfo {\n appId: string\n version: string\n platform: Platform\n [key: string]: any\n}\n\n// ==================== 系统相关 ====================\n\nexport interface PhoneCallRequest {\n phoneNumber: string\n}\n\n// ==================== 监控相关 ====================\n\nexport interface MonitorRecord {\n api: string\n timestamp: number\n duration: number\n success: boolean\n error?: string\n platform: Platform\n}\n\nexport interface MonitorStats {\n totalCalls: number\n successCalls: number\n failedCalls: number\n avgDuration: number\n successRate: number\n}\n\n// ==================== 调试相关 ====================\n\nexport interface DebugLog {\n timestamp: number\n level: 'debug' | 'info' | 'warn' | 'error'\n api: string\n message: string\n data?: any\n}\n\n// ==================== 全局类型扩展 ====================\n\nexport {} // 确保这是一个模块\n\ndeclare global {\n interface Window {\n WKWebViewJavascriptBridge: any\n WKWVJBCallbacks: Array<(bridge: any) => void>\n InjectJavascript: {\n init: () => void\n }\n }\n}\n","/**\n * 日志 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts (line 152-154)\n * 优化:增强类型安全、支持批量日志、支持日志队列\n */\n\nimport { bridge } from '../core/Bridge'\nimport type { LogRequest, LogLevel } from '../types'\n\nexport { LogLevel } from '../types'\nexport type { LogRequest }\n\n/**\n * 写入日志到原生端\n * \n * @example\n * await writeLog({\n * tag: 'MyApp',\n * level: LogLevel.INFO,\n * message: '用户点击了按钮'\n * })\n */\nexport async function writeLog(request: LogRequest): Promise<void> {\n try {\n // 调用原生 log handler\n await bridge.call('log', {\n tag: request.tag || 'JSBridge',\n level: request.level,\n message: request.message\n })\n } catch (error) {\n // 日志上报失败不应该影响业务逻辑,只在控制台警告\n console.warn('[JSBridge] 日志上报失败:', error)\n }\n}\n\n/**\n * 便捷的日志方法\n * \n * @example\n * await log.info('用户登录成功', 'Auth')\n * await log.error('网络请求失败', 'Network')\n */\nexport const log = {\n /**\n * DEBUG 级别日志\n */\n debug: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'DEBUG' as LogLevel,\n message,\n tag\n })\n },\n \n /**\n * INFO 级别日志\n */\n info: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'INFO' as LogLevel,\n message,\n tag\n })\n },\n \n /**\n * WARN 级别日志\n */\n warn: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'WARN' as LogLevel,\n message,\n tag\n })\n },\n \n /**\n * ERROR 级别日志\n */\n error: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'ERROR' as LogLevel,\n message,\n tag\n })\n }\n}\n\n/**\n * 批量写入日志(优化:减少 Bridge 调用次数)\n */\nexport async function writeLogs(requests: LogRequest[]): Promise<void> {\n // 并发上报,但不等待结果(fire-and-forget)\n const promises = requests.map(req => writeLog(req))\n \n // 使用 Promise.allSettled 确保部分失败不影响其他日志\n await Promise.allSettled(promises)\n}\n","/**\n * 监控层\n * \n * 优化:\n * - 使用原生 log 上报(不依赖 HTTP)\n * - 支持性能统计\n * - 支持错误追踪\n * - 自动批量上报\n */\n\nimport { bridge } from '../core/Bridge'\nimport { writeLog } from '../api/log'\nimport type { MonitorConfig, MonitorRecord, MonitorStats, LogLevel } from '../types'\n\nclass Monitor {\n private config: Required<MonitorConfig>\n private records: MonitorRecord[] = []\n private reportTimer: number | null = null\n \n constructor() {\n this.config = {\n enabled: false,\n autoReport: false,\n reportInterval: 60000, // 默认 60 秒\n maxRecords: 100,\n logTag: 'JSBridge-Monitor'\n }\n }\n \n /**\n * 初始化监控\n */\n init(config: MonitorConfig): void {\n this.config = {\n ...this.config,\n ...config\n }\n \n if (this.config.enabled && this.config.autoReport) {\n this.startAutoReport()\n }\n }\n \n /**\n * 开始自动上报\n * 优化:使用 visibilitychange 控制上报\n */\n private startAutoReport(): void {\n // 清理旧的定时器\n if (this.reportTimer) {\n clearInterval(this.reportTimer)\n }\n \n // 启动定时上报\n this.reportTimer = window.setInterval(() => {\n // 只在页面可见时上报\n if (!document.hidden) {\n this.report().catch(err => {\n console.warn('[Monitor] 自动上报失败:', err)\n })\n }\n }, this.config.reportInterval)\n \n // 监听页面可见性变化\n document.addEventListener('visibilitychange', () => {\n if (!document.hidden && this.records.length > 0) {\n // 页面变为可见时,立即上报积压的数据\n this.report().catch(err => {\n console.warn('[Monitor] 可见性变化上报失败:', err)\n })\n }\n })\n }\n \n /**\n * 停止自动上报\n */\n stopAutoReport(): void {\n if (this.reportTimer) {\n clearInterval(this.reportTimer)\n this.reportTimer = null\n }\n }\n \n /**\n * 记录 API 调用\n */\n record(api: string, duration: number, success: boolean, error?: string): void {\n if (!this.config.enabled) return\n \n const record: MonitorRecord = {\n api,\n timestamp: Date.now(),\n duration,\n success,\n error,\n platform: bridge.getPlatform()\n }\n \n this.records.push(record)\n \n // 超过最大记录数时,自动上报\n if (this.records.length >= this.config.maxRecords) {\n this.report().catch(err => {\n console.warn('[Monitor] 自动上报失败:', err)\n })\n }\n }\n \n /**\n * 上报监控数据(通过原生 log)\n */\n async report(): Promise<void> {\n if (this.records.length === 0) return\n \n // 复制并清空记录\n const recordsToReport = this.records.slice(0, this.config.maxRecords)\n this.records = this.records.slice(this.config.maxRecords)\n \n const data = {\n timestamp: Date.now(),\n platform: bridge.getPlatform(),\n count: recordsToReport.length,\n records: recordsToReport\n }\n \n try {\n // 通过 log handler 上报(INFO 级别)\n await writeLog({\n tag: this.config.logTag,\n level: 'INFO' as LogLevel,\n message: `[MONITOR] ${JSON.stringify(data)}`\n })\n \n console.log(`[Monitor] 上报成功,记录数: ${recordsToReport.length}`)\n } catch (error) {\n console.error('[Monitor] 上报失败:', error)\n // 上报失败,放回队列(但限制最大数量)\n this.records = [...recordsToReport, ...this.records].slice(0, this.config.maxRecords * 2)\n throw error\n }\n }\n \n /**\n * 上报错误(立即上报)\n */\n async reportError(api: string, error: string, detail?: any): Promise<void> {\n if (!this.config.enabled) return\n \n const errorData = {\n timestamp: Date.now(),\n api,\n error,\n detail,\n platform: bridge.getPlatform(),\n userAgent: navigator.userAgent\n }\n \n try {\n // 通过 log handler 立即上报(ERROR 级别)\n await writeLog({\n tag: this.config.logTag,\n level: 'ERROR' as LogLevel,\n message: `[ERROR] ${JSON.stringify(errorData)}`\n })\n } catch (err) {\n console.error('[Monitor] 错误上报失败:', err)\n }\n }\n \n /**\n * 获取统计信息\n */\n getStats(): MonitorStats {\n const totalCalls = this.records.length\n const successCalls = this.records.filter(r => r.success).length\n const failedCalls = totalCalls - successCalls\n const avgDuration = totalCalls > 0\n ? this.records.reduce((sum, r) => sum + r.duration, 0) / totalCalls\n : 0\n const successRate = totalCalls > 0 ? successCalls / totalCalls : 0\n \n return {\n totalCalls,\n successCalls,\n failedCalls,\n avgDuration: Math.round(avgDuration),\n successRate: Math.round(successRate * 10000) / 100 // 保留两位小数\n }\n }\n \n /**\n * 获取所有记录\n */\n getRecords(): MonitorRecord[] {\n return [...this.records]\n }\n \n /**\n * 清空记录\n */\n clear(): void {\n this.records = []\n }\n \n /**\n * 销毁监控器\n */\n destroy(): void {\n this.stopAutoReport()\n this.clear()\n }\n}\n\n// 导出单例\nexport const monitor = new Monitor()\n","/**\n * 调试层\n * \n * 优化:\n * - 动态加载 vconsole(按需加载)\n * - 支持调用追踪\n * - 支持日志分级\n */\n\nimport type { DebugConfig, DebugLog } from '../types'\n\nclass Debug {\n private config: Required<DebugConfig>\n private vConsole: any = null\n private logs: DebugLog[] = []\n private maxLogs: number = 100\n \n constructor() {\n this.config = {\n enabled: false,\n useVConsole: false,\n logLevel: 'info',\n showTimestamp: true\n }\n }\n \n /**\n * 初始化调试模式\n */\n async init(config: DebugConfig): Promise<void> {\n this.config = {\n ...this.config,\n ...config\n }\n \n if (this.config.enabled && this.config.useVConsole) {\n await this.initVConsole()\n }\n }\n \n /**\n * 初始化 vconsole\n * 优化:动态导入,只在需要时加载\n */\n private async initVConsole(): Promise<void> {\n if (this.vConsole) {\n console.log('[Debug] vconsole 已存在')\n return\n }\n \n // 检查是否已被其他地方初始化\n if ((window as any).vConsole) {\n console.log('[Debug] vconsole 已被外部初始化')\n this.vConsole = (window as any).vConsole\n return\n }\n \n try {\n // 动态导入 vconsole\n const VConsoleModule = await import('vconsole')\n const VConsole = VConsoleModule.default || VConsoleModule\n \n this.vConsole = new VConsole({\n theme: 'dark',\n defaultPlugins: ['system', 'network', 'element', 'storage'],\n maxLogNumber: 1000\n })\n \n console.log('[Debug] vconsole 初始化成功')\n } catch (error) {\n console.warn('[Debug] vconsole 加载失败:', error)\n console.warn('[Debug] 请确保已安装 vconsole: npm install vconsole')\n }\n }\n \n /**\n * 记录调用追踪\n */\n trace(api: string, message: string, data?: any): void {\n if (!this.config.enabled) return\n \n const log: DebugLog = {\n timestamp: Date.now(),\n level: this.config.logLevel,\n api,\n message,\n data\n }\n \n this.logs.push(log)\n \n // 限制日志数量\n if (this.logs.length > this.maxLogs) {\n this.logs.shift()\n }\n \n // 输出到控制台\n this.outputLog(log)\n }\n \n /**\n * 输出日志到控制台\n */\n private outputLog(log: DebugLog): void {\n const timestamp = this.config.showTimestamp\n ? `[${new Date(log.timestamp).toLocaleTimeString()}]`\n : ''\n \n const prefix = `${timestamp} [JSBridge][${log.api}]`\n const message = `${prefix} ${log.message}`\n \n switch (log.level) {\n case 'debug':\n console.debug(message, log.data || '')\n break\n case 'info':\n console.info(message, log.data || '')\n break\n case 'warn':\n console.warn(message, log.data || '')\n break\n case 'error':\n console.error(message, log.data || '')\n break\n default:\n console.log(message, log.data || '')\n }\n }\n \n /**\n * 获取所有日志\n */\n getLogs(): DebugLog[] {\n return [...this.logs]\n }\n \n /**\n * 清空日志\n */\n clearLogs(): void {\n this.logs = []\n }\n \n /**\n * 销毁调试器\n */\n destroy(): void {\n if (this.vConsole && typeof this.vConsole.destroy === 'function') {\n this.vConsole.destroy()\n this.vConsole = null\n }\n this.clearLogs()\n }\n}\n\n// 导出单例\nexport const debug = new Debug()\n","/**\n * 设备相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { ScanRequest, ScanResult, DeviceInfo, NetworkInfo } from '../types'\n\n/**\n * 扫码\n * 参考:JsBridgeHandlers.ts line 75-87\n * \n * @example\n * const result = await scan({ scanType: ['qrCode', 'barCode'] })\n * if (result.resp_code === 1000) {\n * console.log('扫码结果:', result.resp_result)\n * }\n */\nexport async function scan(request: ScanRequest = {}): Promise<ScanResult> {\n const startTime = Date.now()\n \n try {\n debug.trace('scan', '开始扫码', request)\n \n const result = await bridge.call<string>('scan', request)\n \n // 解析返回结果(参考 JsBridgeHandlers.ts line 76-86)\n const parsedResult: ScanResult = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n const success = parsedResult.resp_code === 1000\n \n monitor.record('scan', duration, success, parsedResult.resp_message)\n debug.trace('scan', success ? '扫码成功' : '扫码取消', parsedResult)\n \n return parsedResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('scan', duration, false, error.message)\n monitor.reportError('scan', error.message, request)\n debug.trace('scan', '扫码失败', error)\n throw error\n }\n}\n\n/**\n * 震动\n * \n * @param duration 震动时长(毫秒),默认 400ms\n */\nexport async function vibrate(duration: number = 400): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('vibrate', '开始震动', { duration })\n \n await bridge.call('vibrate', { duration })\n \n const elapsed = Date.now() - startTime\n monitor.record('vibrate', elapsed, true)\n debug.trace('vibrate', '震动完成')\n } catch (error: any) {\n const elapsed = Date.now() - startTime\n monitor.record('vibrate', elapsed, false, error.message)\n debug.trace('vibrate', '震动失败', error)\n throw error\n }\n}\n\n/**\n * 获取设备信息\n * \n * @example\n * const info = await getDeviceInfo()\n * console.log('设备型号:', info.model)\n * console.log('系统版本:', info.version)\n */\nexport async function getDeviceInfo(): Promise<DeviceInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getDeviceInfo', '获取设备信息')\n \n const result = await bridge.call<string>('getDeviceInfo')\n const info: DeviceInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getDeviceInfo', duration, true)\n debug.trace('getDeviceInfo', '获取成功', info)\n \n return info\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getDeviceInfo', duration, false, error.message)\n debug.trace('getDeviceInfo', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 获取网络类型\n * \n * @example\n * const network = await getNetworkType()\n * console.log('网络类型:', network.networkType)\n */\nexport async function getNetworkType(): Promise<NetworkInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getNetworkType', '获取网络类型')\n \n const result = await bridge.call<string>('getNetworkType')\n const info: NetworkInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getNetworkType', duration, true)\n debug.trace('getNetworkType', '获取成功', info)\n \n return info\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getNetworkType', duration, false, error.message)\n debug.trace('getNetworkType', '获取失败', error)\n throw error\n }\n}\n","/**\n * 媒体相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type {\n ChooseMediaRequest,\n ChooseMediaResult,\n ImageInfo,\n UploadFileRequest,\n UploadFileResult,\n PrintRequest\n} from '../types'\n\n/**\n * 选择图片/视频\n * 参考:JsBridgeHandlers.ts line 93-100\n * \n * @example\n * const result = await chooseMedia({\n * count: 9,\n * mediaType: ['image'],\n * sourceType: ['album', 'camera']\n * })\n */\nexport async function chooseMedia(request: ChooseMediaRequest): Promise<ChooseMediaResult | null> {\n const startTime = Date.now()\n \n try {\n debug.trace('chooseMedia', '选择媒体', request)\n \n const result = await bridge.call<string>('chooseMedia', request)\n \n if (!result) {\n debug.trace('chooseMedia', '用户取消选择')\n monitor.record('chooseMedia', Date.now() - startTime, true)\n return null\n }\n \n const mediaResult: ChooseMediaResult = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('chooseMedia', duration, true)\n debug.trace('chooseMedia', '选择成功', mediaResult)\n \n return mediaResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('chooseMedia', duration, false, error.message)\n monitor.reportError('chooseMedia', error.message, request)\n debug.trace('chooseMedia', '选择失败', error)\n throw error\n }\n}\n\n/**\n * 上传文件\n * 参考:JsBridgeHandlers.ts line 117-122\n * \n * @example\n * const result = await uploadFile({\n * url: 'https://api.example.com/upload',\n * filePath: '/path/to/file',\n * name: 'file'\n * })\n */\nexport async function uploadFile(request: UploadFileRequest): Promise<UploadFileResult> {\n const startTime = Date.now()\n \n try {\n debug.trace('uploadFile', '上传文件', request)\n \n const result = await bridge.call<string>('uploadFile', request)\n const uploadResult: UploadFileResult = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n const success = uploadResult.statusCode >= 200 && uploadResult.statusCode < 300\n \n monitor.record('uploadFile', duration, success, uploadResult.errMsg)\n debug.trace('uploadFile', success ? '上传成功' : '上传失败', uploadResult)\n \n return uploadResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('uploadFile', duration, false, error.message)\n monitor.reportError('uploadFile', error.message, request)\n debug.trace('uploadFile', '上传异常', error)\n throw error\n }\n}\n\n/**\n * 预览图片\n * \n * @param urls 图片URL数组\n * @param current 当前显示图片的索引,默认 0\n */\nexport async function previewImage(urls: string[], current: number = 0): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('previewImage', '预览图片', { urls, current })\n \n await bridge.call('previewImage', { urls, current })\n \n const duration = Date.now() - startTime\n monitor.record('previewImage', duration, true)\n debug.trace('previewImage', '预览完成')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('previewImage', duration, false, error.message)\n debug.trace('previewImage', '预览失败', error)\n throw error\n }\n}\n\n/**\n * 获取图片信息\n * 参考:JsBridgeHandlers.ts line 106-111\n * \n * @param path 图片路径\n */\nexport async function getImageInfo(path: string): Promise<ImageInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getImageInfo', '获取图片信息', { path })\n \n const result = await bridge.call<string>('getImageInfo', { path })\n const imageInfo: ImageInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getImageInfo', duration, true)\n debug.trace('getImageInfo', '获取成功', imageInfo)\n \n return imageInfo\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getImageInfo', duration, false, error.message)\n debug.trace('getImageInfo', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 蓝牙打印\n * 参考:JsBridgeHandlers.ts line 182-194\n * \n * @param request 打印请求\n */\nexport async function bluetoothPrint(request: PrintRequest): Promise<any> {\n const startTime = Date.now()\n \n try {\n debug.trace('bluetoothPrint', '蓝牙打印', request)\n \n const result = await bridge.call('bluetoothPrint', request)\n \n // 处理返回结果\n let parsedResult = result\n if (result && typeof result === 'string') {\n try {\n parsedResult = JSON.parse(result)\n } catch {\n // 如果解析失败,返回原始字符串\n }\n }\n \n const duration = Date.now() - startTime\n monitor.record('bluetoothPrint', duration, true)\n debug.trace('bluetoothPrint', '打印完成', parsedResult)\n \n return parsedResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('bluetoothPrint', duration, false, error.message)\n monitor.reportError('bluetoothPrint', error.message, request)\n debug.trace('bluetoothPrint', '打印失败', error)\n throw error\n }\n}\n","/**\n * 路由相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { NavigationBarStyle, RouteInfo } from '../types'\n\n/**\n * 设置导航栏样式\n * 参考:JsBridgeHandlers.ts line 144-146\n * \n * @example\n * await setNavigationBar({\n * navigationBarTitleText: '订单详情',\n * backgroundColor: '#ffffff',\n * textColor: '#000000'\n * })\n */\nexport async function setNavigationBar(style: NavigationBarStyle): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('setNavigationBar', '设置导航栏', style)\n \n await bridge.call('setNavigationBar', style)\n \n const duration = Date.now() - startTime\n monitor.record('setNavigationBar', duration, true)\n debug.trace('setNavigationBar', '设置成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('setNavigationBar', duration, false, error.message)\n debug.trace('setNavigationBar', '设置失败', error)\n throw error\n }\n}\n\n/**\n * 关闭当前 WebView\n * 参考:JsBridgeHandlers.ts line 128-130\n * \n * @example\n * await closeWebView()\n */\nexport async function closeWebView(): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('closeWebView', '关闭页面')\n \n await bridge.call('closeWebView')\n \n const duration = Date.now() - startTime\n monitor.record('closeWebView', duration, true)\n debug.trace('closeWebView', '关闭成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('closeWebView', duration, false, error.message)\n debug.trace('closeWebView', '关闭失败', error)\n throw error\n }\n}\n\n/**\n * 注册路由跳转回调\n * 参考:JsBridgeHandlers.ts line 44-46\n * \n * @example\n * onRoute((data, callback) => {\n * console.log('路由跳转:', data)\n * router.push(data.path)\n * callback({ success: true })\n * })\n */\nexport async function onRoute(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onRoute', '注册路由跳转回调')\n await bridge.register('route', handler)\n debug.trace('onRoute', '注册成功')\n } catch (error: any) {\n debug.trace('onRoute', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 注册获取路由信息回调\n * 参考:JsBridgeHandlers.ts line 51-53\n * \n * @example\n * onGetRouteInfo((data, callback) => {\n * callback({ routes: routeConfig })\n * })\n */\nexport async function onGetRouteInfo(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onGetRouteInfo', '注册获取路由信息回调')\n await bridge.register('getRouteInfo', handler)\n debug.trace('onGetRouteInfo', '注册成功')\n } catch (error: any) {\n debug.trace('onGetRouteInfo', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 通知原生路由变化\n * 参考:JsBridgeHandlers.ts line 21-23\n * \n * @param to 目标路由\n * @param from 来源路由\n */\nexport async function notifyRouteChange(to: RouteInfo, from: RouteInfo): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('notifyRouteChange', '通知路由变化', { to, from })\n \n await bridge.call('routerAfterEach', { to, from })\n \n const duration = Date.now() - startTime\n monitor.record('notifyRouteChange', duration, true)\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('notifyRouteChange', duration, false, error.message)\n debug.trace('notifyRouteChange', '通知失败', error)\n // 路由变化通知失败不应该阻塞业务\n console.warn('[JSBridge] 路由变化通知失败:', error)\n }\n}\n","/**\n * 存储相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { AppInfo } from '../types'\n\n/**\n * 获取 App 信息\n * 参考:JsBridgeHandlers.ts line 28-30\n * \n * @example\n * const appInfo = await getAppInfo()\n * console.log('App 版本:', appInfo.version)\n */\nexport async function getAppInfo(): Promise<AppInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getAppInfo', '获取 App 信息')\n \n const result = await bridge.call<string>('getAppInfo')\n const appInfo: AppInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getAppInfo', duration, true)\n debug.trace('getAppInfo', '获取成功', appInfo)\n \n return appInfo\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getAppInfo', duration, false, error.message)\n debug.trace('getAppInfo', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 获取存储数据\n * \n * @param key 存储键\n */\nexport async function getStorage(key: string): Promise<any> {\n const startTime = Date.now()\n \n try {\n debug.trace('getStorage', '获取存储数据', { key })\n \n const result = await bridge.call('getStorage', { key })\n \n const duration = Date.now() - startTime\n monitor.record('getStorage', duration, true)\n debug.trace('getStorage', '获取成功', result)\n \n return result\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getStorage', duration, false, error.message)\n debug.trace('getStorage', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 设置存储数据\n * \n * @param key 存储键\n * @param data 存储数据\n */\nexport async function setStorage(key: string, data: any): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('setStorage', '设置存储数据', { key, data })\n \n await bridge.call('setStorage', { key, data })\n \n const duration = Date.now() - startTime\n monitor.record('setStorage', duration, true)\n debug.trace('setStorage', '设置成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('setStorage', duration, false, error.message)\n debug.trace('setStorage', '设置失败', error)\n throw error\n }\n}\n\n/**\n * 注册刷新 store 数据回调\n * 参考:JsBridgeHandlers.ts line 59-61\n * \n * @example\n * onRefreshStore((data, callback) => {\n * store.dispatch('refresh', data)\n * callback({ success: true })\n * })\n */\nexport async function onRefreshStore(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onRefreshStore', '注册刷新 store 回调')\n await bridge.register('refreshStore', handler)\n debug.trace('onRefreshStore', '注册成功')\n } catch (error: any) {\n debug.trace('onRefreshStore', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 通知原生 App 已加载完成\n * 参考:JsBridgeHandlers.ts line 160-162\n * \n * @param data 启动数据\n */\nexport async function notifyAppOnload(data?: any): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('notifyAppOnload', '通知 App 加载完成', data)\n \n await bridge.call('uniPageLifeCycle', {\n lifecycle: 'appOnLaunch',\n data\n })\n \n const duration = Date.now() - startTime\n monitor.record('notifyAppOnload', duration, true)\n debug.trace('notifyAppOnload', '通知成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('notifyAppOnload', duration, false, error.message)\n debug.trace('notifyAppOnload', '通知失败', error)\n // 生命周期通知失败不应该阻塞业务\n console.warn('[JSBridge] App 加载通知失败:', error)\n }\n}\n","/**\n * 系统相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { PhoneCallRequest } from '../types'\n\n/**\n * 拨打电话\n * 参考:JsBridgeHandlers.ts line 136-138\n * \n * @example\n * await makePhoneCall({ phoneNumber: '10086' })\n */\nexport async function makePhoneCall(request: PhoneCallRequest): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('makePhoneCall', '拨打电话', request)\n \n await bridge.call('makePhoneCall', request)\n \n const duration = Date.now() - startTime\n monitor.record('makePhoneCall', duration, true)\n debug.trace('makePhoneCall', '拨号成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('makePhoneCall', duration, false, error.message)\n monitor.reportError('makePhoneCall', error.message, request)\n debug.trace('makePhoneCall', '拨号失败', error)\n throw error\n }\n}\n\n/**\n * 注册 PDA 扫码回调\n * 参考:JsBridgeHandlers.ts line 67-69\n * \n * @example\n * onPdaScan((data, callback) => {\n * console.log('PDA 扫码结果:', data)\n * callback({ success: true })\n * })\n */\nexport async function onPdaScan(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onPdaScan', '注册 PDA 扫码回调')\n await bridge.register('pdaScan', handler)\n debug.trace('onPdaScan', '注册成功')\n } catch (error: any) {\n debug.trace('onPdaScan', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 退出登录\n * \n * @example\n * await logout()\n */\nexport async function logout(): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('logout', '退出登录')\n \n await bridge.call('logout')\n \n const duration = Date.now() - startTime\n monitor.record('logout', duration, true)\n debug.trace('logout', '退出成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('logout', duration, false, error.message)\n debug.trace('logout', '退出失败', error)\n throw error\n }\n}\n","/**\n * JSBridge SDK\n * 统一的原生能力封装\n * \n * @author HD Digital\n * @version 1.0.0\n */\n\nimport { bridge } from './core/Bridge'\nimport type { Platform } from './types'\nimport { monitor } from './monitor/Monitor'\nimport { debug } from './debug/Debug'\nimport { writeLog, log, LogLevel } from './api/log'\nimport * as device from './api/device'\nimport * as media from './api/media'\nimport * as router from './api/router'\nimport * as storage from './api/storage'\nimport * as system from './api/system'\n\nimport type { JSBridgeConfig } from './types'\n\n/**\n * 初始化 JSBridge SDK\n * \n * @example\n * const success = await init({\n * debug: {\n * enabled: true,\n * useVConsole: true\n * },\n * monitor: {\n * enabled: true,\n * autoReport: true\n * }\n * })\n */\nexport async function init(config?: JSBridgeConfig): Promise<boolean> {\n try {\n // 1. 初始化 Debug 模式\n if (config?.debug) {\n await debug.init(config.debug)\n debug.trace('init', 'Debug 模式已启用', config.debug)\n }\n \n // 2. 初始化 Monitor\n if (config?.monitor) {\n monitor.init(config.monitor)\n debug.trace('init', 'Monitor 已启用', config.monitor)\n }\n \n // 3. 初始化 Bridge\n const success = await bridge.init()\n \n if (success) {\n // 记录初始化成功日志\n try {\n await writeLog({\n level: LogLevel.INFO,\n message: `JSBridge 初始化成功 [${bridge.getPlatform()}]`\n })\n } catch (e) {\n // 忽略日志上报失败\n }\n \n debug.trace('init', 'JSBridge 初始化成功', {\n platform: bridge.getPlatform()\n })\n } else {\n debug.trace('init', 'JSBridge 初始化失败:不在 App 环境中')\n }\n \n return success\n \n } catch (error: any) {\n // 记录初始化失败日志\n try {\n await writeLog({\n level: LogLevel.ERROR,\n message: `JSBridge 初始化失败: ${error.message}`\n })\n } catch (e) {\n // 忽略日志上报失败\n }\n \n debug.trace('init', 'JSBridge 初始化异常', error)\n console.error('[JSBridge] 初始化失败:', error)\n \n return false\n }\n}\n\n/**\n * 检查是否在 App 内\n */\nexport function inApp(): boolean {\n return bridge.inApp()\n}\n\n/**\n * 获取平台类型\n */\nexport function getPlatform(): Platform {\n return bridge.getPlatform()\n}\n\n/**\n * 检查是否已初始化\n */\nexport function isReady(): boolean {\n return bridge.isReady()\n}\n\n/**\n * JSBridge API\n * 所有可用的原生能力\n */\nexport const JSBridge = {\n // ==================== 设备相关 ====================\n /**\n * 扫码\n * @example\n * const result = await JSBridge.scan({ scanType: ['qrCode'] })\n */\n scan: device.scan,\n \n /**\n * 震动\n * @example\n * await JSBridge.vibrate(400)\n */\n vibrate: device.vibrate,\n \n /**\n * 获取设备信息\n * @example\n * const info = await JSBridge.getDeviceInfo()\n */\n getDeviceInfo: device.getDeviceInfo,\n \n /**\n * 获取网络类型\n * @example\n * const network = await JSBridge.getNetworkType()\n */\n getNetworkType: device.getNetworkType,\n \n // ==================== 媒体相关 ====================\n /**\n * 选择图片/视频\n * @example\n * const result = await JSBridge.chooseMedia({ count: 9, mediaType: ['image'] })\n */\n chooseMedia: media.chooseMedia,\n \n /**\n * 上传文件\n * @example\n * const result = await JSBridge.uploadFile({ url, filePath, name: 'file' })\n */\n uploadFile: media.uploadFile,\n \n /**\n * 预览图片\n * @example\n * await JSBridge.previewImage(['url1', 'url2'], 0)\n */\n previewImage: media.previewImage,\n \n /**\n * 获取图片信息\n * @example\n * const info = await JSBridge.getImageInfo(path)\n */\n getImageInfo: media.getImageInfo,\n \n /**\n * 蓝牙打印\n * @example\n * await JSBridge.bluetoothPrint({ data: printData })\n */\n bluetoothPrint: media.bluetoothPrint,\n \n // ==================== 路由相关 ====================\n /**\n * 设置导航栏\n * @example\n * await JSBridge.setNavigationBar({ navigationBarTitleText: '标题' })\n */\n setNavigationBar: router.setNavigationBar,\n \n /**\n * 关闭当前页面\n * @example\n * await JSBridge.closeWebView()\n */\n closeWebView: router.closeWebView,\n \n /**\n * 注册路由跳转回调\n * @example\n * JSBridge.onRoute((data, callback) => { router.push(data.path) })\n */\n onRoute: router.onRoute,\n \n /**\n * 注册获取路由信息回调\n * @example\n * JSBridge.onGetRouteInfo((data, callback) => { callback(routeConfig) })\n */\n onGetRouteInfo: router.onGetRouteInfo,\n \n /**\n * 通知路由变化\n * @example\n * await JSBridge.notifyRouteChange(to, from)\n */\n notifyRouteChange: router.notifyRouteChange,\n \n // ==================== 存储相关 ====================\n /**\n * 获取 App 信息\n * @example\n * const appInfo = await JSBridge.getAppInfo()\n */\n getAppInfo: storage.getAppInfo,\n \n /**\n * 获取存储数据\n * @example\n * const data = await JSBridge.getStorage('key')\n */\n getStorage: storage.getStorage,\n \n /**\n * 设置存储数据\n * @example\n * await JSBridge.setStorage('key', data)\n */\n setStorage: storage.setStorage,\n \n /**\n * 注册刷新 store 回调\n * @example\n * JSBridge.onRefreshStore((data, callback) => { store.dispatch('refresh') })\n */\n onRefreshStore: storage.onRefreshStore,\n \n /**\n * 通知 App 加载完成\n * @example\n * await JSBridge.notifyAppOnload()\n */\n notifyAppOnload: storage.notifyAppOnload,\n \n // ==================== 系统相关 ====================\n /**\n * 拨打电话\n * @example\n * await JSBridge.makePhoneCall({ phoneNumber: '10086' })\n */\n makePhoneCall: system.makePhoneCall,\n \n /**\n * 注册 PDA 扫码回调\n * @example\n * JSBridge.onPdaScan((data, callback) => { console.log(data) })\n */\n onPdaScan: system.onPdaScan,\n \n /**\n * 退出登录\n * @example\n * await JSBridge.logout()\n */\n logout: system.logout,\n \n // ==================== 日志相关 ====================\n /**\n * 写入日志\n * @example\n * await JSBridge.writeLog({ level: LogLevel.INFO, message: '日志' })\n */\n writeLog,\n \n /**\n * 便捷日志方法\n * @example\n * await JSBridge.log.info('用户登录', 'Auth')\n * await JSBridge.log.error('请求失败', 'Network')\n */\n log\n}\n\n/**\n * 监控 API\n */\nexport const Monitor = {\n /**\n * 获取统计信息\n * @example\n * const stats = Monitor.getStats()\n */\n getStats: monitor.getStats.bind(monitor),\n \n /**\n * 获取所有记录\n * @example\n * const records = Monitor.getRecords()\n */\n getRecords: monitor.getRecords.bind(monitor),\n \n /**\n * 清空记录\n * @example\n * Monitor.clear()\n */\n clear: monitor.clear.bind(monitor),\n \n /**\n * 手动上报\n * @example\n * await Monitor.report()\n */\n report: monitor.report.bind(monitor),\n \n /**\n * 上报错误\n * @example\n * await Monitor.reportError('api', 'error message')\n */\n reportError: monitor.reportError.bind(monitor)\n}\n\n/**\n * Debug API\n */\nexport const Debug = {\n /**\n * 记录追踪日志\n * @example\n * Debug.trace('api', 'message', data)\n */\n trace: debug.trace.bind(debug),\n \n /**\n * 获取所有日志\n * @example\n * const logs = Debug.getLogs()\n */\n getLogs: debug.getLogs.bind(debug),\n \n /**\n * 清空日志\n * @example\n * Debug.clearLogs()\n */\n clearLogs: debug.clearLogs.bind(debug)\n}\n\n// ==================== 导出类型 ====================\nexport * from './types'\nexport { LogLevel } from './api/log'\n"],"names":["Monitor","Debug","device.scan","device.vibrate","device.getDeviceInfo","device.getNetworkType","media.chooseMedia","media.uploadFile","media.previewImage","media.getImageInfo","media.bluetoothPrint","router.setNavigationBar","router.closeWebView","router.onRoute","router.onGetRouteInfo","router.notifyRouteChange","storage.getAppInfo","storage.getStorage","storage.setStorage","storage.onRefreshStore","storage.notifyAppOnload","system.makePhoneCall","system.onPdaScan","system.logout"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/core/Bridge.ts","../src/types/index.ts","../src/api/log.ts","../src/monitor/Monitor.ts","../src/debug/Debug.ts","../src/api/device.ts","../src/api/media.ts","../src/api/router.ts","../src/api/storage.ts","../src/api/system.ts","../src/jsBridge/PageLifeCycle.ts","../src/jsBridge/UniScanRequest.ts","../src/jsBridge/UniScanResult.ts","../src/jsBridge/JsBridgeHandlers.ts","../src/h5Adapter/UniProxy.ts","../src/h5Adapter/hdAppAdapter.ts","../src/index.ts"],"sourcesContent":["/**\n * JSBridge 核心通信层\n * \n * 参考:context/soa/src/jsBridge/JsBridge.ts\n * 优化:增强错误处理、超时机制、初始化重试\n */\n\nimport type { Platform } from '../types'\n\nclass Bridge {\n private bridge: any = null\n private isInitialized: boolean = false\n private platform: Platform = 'unknown'\n private initPromise: Promise<boolean> | null = null\n \n // iOS 回调相关\n private callbacks: Record<string, { resolve: Function, reject: Function }> = {}\n private seq: number = 1\n \n constructor() {\n this.detectPlatform()\n this.exposeGlobal()\n }\n \n /**\n * 暴露全局对象供原生回调 (特别是 iOS)\n */\n private exposeGlobal(): void {\n if (typeof window !== 'undefined') {\n ;(window as any).JsBridge = {\n _invokeCallback: (callbackId: string, result: any, error?: any) => {\n const entry = this.callbacks[callbackId]\n if (!entry) return\n delete this.callbacks[callbackId]\n if (error) {\n entry.reject(error)\n } else {\n entry.resolve(result)\n }\n },\n _handleMessageFromNative: (messageJSON: string) => {\n const w: any = window\n if (w.WebViewJavascriptBridge && typeof w.WebViewJavascriptBridge._handleMessageFromNative === 'function') {\n w.WebViewJavascriptBridge._handleMessageFromNative(messageJSON)\n }\n }\n }\n }\n }\n \n /**\n * 检测平台\n * 优化:支持更多的 UA 特征识别\n */\n private detectPlatform(): void {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n this.platform = 'unknown'\n return\n }\n \n const ua = navigator.userAgent\n \n // Android 检测\n if (/SoaAndroid/i.test(ua) || /HDApp.*Android/i.test(ua)) {\n this.platform = 'android'\n return\n }\n \n // iOS 检测\n if (/iPhone|iPad|iPod/i.test(ua) && /HDApp/i.test(ua)) {\n this.platform = 'ios'\n return\n }\n \n this.platform = 'unknown'\n }\n \n /**\n * 初始化 JSBridge\n * 优化:支持多次调用(返回同一个 Promise)、增加重试机制\n */\n async init(): Promise<boolean> {\n // 如果已初始化,直接返回成功\n if (this.isInitialized) {\n return true\n }\n \n // 如果正在初始化,返回同一个 Promise\n if (this.initPromise) {\n return this.initPromise\n }\n \n // 不在原生环境中\n if (this.platform === 'unknown') {\n console.warn('[JSBridge] 不在原生 App 环境中')\n return false\n }\n \n // 创建初始化 Promise\n this.initPromise = new Promise((resolve, reject) => {\n try {\n // 检查是否已有 Bridge 实例\n if (window.WKWebViewJavascriptBridge) {\n this.bridge = window.WKWebViewJavascriptBridge\n this.isInitialized = true\n resolve(true)\n return\n }\n \n // 初始化 WKWVJBCallbacks 队列\n if (!window.WKWVJBCallbacks) {\n window.WKWVJBCallbacks = []\n }\n \n // 添加回调到队列\n window.WKWVJBCallbacks.push((bridge: any) => {\n this.bridge = bridge\n this.isInitialized = true\n resolve(true)\n })\n \n // Android 平台:触发注入\n if (this.platform === 'android') {\n // 兼容性检查:InjectJavascript 可能未注入或延迟注入\n // 优化策略:如果 InjectJavascript 不存在,不立即报错,而是等待原生注入(通过超时机制)\n if (window.InjectJavascript && typeof window.InjectJavascript.init === 'function') {\n window.InjectJavascript.init()\n } else {\n console.warn('[JSBridge] InjectJavascript 暂未就绪,等待原生注入或超时...')\n // 不 reject,依赖下方的 setTimeout 超时机制或原生主动调用 WKWVJBCallbacks\n }\n }\n \n // iOS 平台:直接检查或使用 iframe 触发\n if (this.platform === 'ios') {\n const w = window as any\n if (w.webkit && w.webkit.messageHandlers && w.webkit.messageHandlers.JsBridge) {\n this.isInitialized = true\n resolve(true)\n return\n }\n \n // 回退:如果还未注入,尝试 iframe 触发或等待\n const iframe = document.createElement('iframe')\n iframe.style.display = 'none'\n iframe.src = 'https://__bridge_loaded__'\n document.documentElement.appendChild(iframe)\n setTimeout(() => {\n document.documentElement.removeChild(iframe)\n }, 0)\n }\n \n // 超时保护(10 秒)\n const timeoutId = setTimeout(() => {\n if (!this.isInitialized) {\n const error = new Error(`${this.platform} 初始化超时`)\n console.error(`[JSBridge] ${error.message}`)\n reject(error)\n }\n }, 10000)\n \n // 清理超时定时器(当初始化成功时)\n this.initPromise?.then(() => clearTimeout(timeoutId))\n \n } catch (error) {\n console.error('[JSBridge] 初始化异常:', error)\n reject(error)\n }\n })\n \n return this.initPromise\n }\n \n /**\n * 等待 Bridge 就绪\n * 轮询检查 Bridge 实例是否存在\n */\n private async waitForReady(): Promise<void> {\n if (this.bridge) return\n if (this.platform === 'ios' && (window as any).webkit?.messageHandlers?.JsBridge) return\n\n return new Promise((resolve, reject) => {\n let retryCount = 0\n const maxRetries = 20 // 最多重试 20 次 (4秒)\n const interval = 200 // 每次间隔 200ms\n\n const check = () => {\n // 再次尝试从全局获取\n if (window.WKWebViewJavascriptBridge) {\n this.bridge = window.WKWebViewJavascriptBridge\n this.isInitialized = true\n resolve()\n return\n }\n\n // iOS 再次检查\n if (this.platform === 'ios') {\n const w = window as any\n if (w.webkit && w.webkit.messageHandlers && w.webkit.messageHandlers.JsBridge) {\n this.isInitialized = true\n resolve()\n return\n }\n }\n\n // Android 再次尝试触发注入\n if (this.platform === 'android' && window.InjectJavascript?.init) {\n window.InjectJavascript.init()\n }\n\n retryCount++\n if (retryCount > maxRetries) {\n reject(new Error('Bridge 等待就绪超时'))\n } else {\n setTimeout(check, interval)\n }\n }\n \n check()\n })\n }\n\n /**\n * 调用原生方法\n * 优化:自动初始化、增强错误处理、支持泛型返回值\n */\n async call<T = any>(method: string, data?: any): Promise<T> {\n // 自动初始化\n if (!this.isInitialized) {\n await this.init()\n }\n \n // 确保 bridge 实例就绪\n if (!this.bridge && !(this.platform === 'ios' && (window as any).webkit?.messageHandlers?.JsBridge)) {\n try {\n await this.waitForReady()\n } catch (e) {\n throw new Error(`调用 ${method} 失败: Bridge 未就绪`)\n }\n }\n \n return new Promise<T>((resolve, reject) => {\n try {\n // 超时控制(10 秒)\n const timeoutId = setTimeout(() => {\n reject(new Error(`${method} 调用超时`))\n }, 10000)\n \n // Android 调用\n if (this.platform === 'android' && this.bridge) {\n this.bridge.callHandler(method, data, (result: T) => {\n clearTimeout(timeoutId)\n resolve(result)\n })\n return\n }\n\n // iOS 调用\n if (this.platform === 'ios') {\n const w = window as any\n const handler = w.webkit && w.webkit.messageHandlers && w.webkit.messageHandlers.JsBridge\n if (handler && typeof handler.postMessage === 'function') {\n const callbackId = 'cb_' + this.seq++\n this.callbacks[callbackId] = {\n resolve: (res: T) => {\n clearTimeout(timeoutId)\n resolve(res)\n },\n reject: (err: any) => {\n clearTimeout(timeoutId)\n reject(err)\n }\n }\n \n // 核心防御:防止 DataCloneError\n // 剥离可能存在的不可序列化对象(如 success/fail 回调函数)\n let safeData = data\n if (data && typeof data === 'object') {\n try {\n safeData = JSON.parse(JSON.stringify(data))\n } catch (e) {\n // 忽略异常,保留原数据\n }\n }\n \n handler.postMessage({\n handlerName: method,\n data: safeData,\n callbackId\n })\n return\n }\n }\n\n clearTimeout(timeoutId)\n reject(new Error(`调用 ${method} 失败: 当前环境不支持`))\n \n } catch (error) {\n console.error(`[JSBridge] ${method} 调用异常:`, error)\n reject(error)\n }\n })\n }\n \n /**\n * 注册 JS 方法供原生调用\n * 优化:增加错误处理\n */\n async register(method: string, handler: (data: any, callback: (response: any) => void) => void): Promise<void> {\n // 自动初始化\n if (!this.isInitialized) {\n const success = await this.init()\n if (!success) {\n throw new Error('JSBridge 未初始化')\n }\n }\n \n try {\n if (this.platform === 'android' && this.bridge) {\n this.bridge.registerHandler(method, handler)\n } else if (this.platform === 'ios') {\n const w = window as any\n if (w.WebViewJavascriptBridge) {\n w.WebViewJavascriptBridge.registerHandler(method, handler)\n } else {\n console.warn(`[JSBridge] iOS WebViewJavascriptBridge 未就绪,注册方法 ${method} 可能失败`)\n }\n }\n } catch (error) {\n console.error(`[JSBridge] 注册方法失败: ${method}`, error)\n throw error\n }\n }\n \n /**\n * 检查是否在 App 内\n */\n inApp(): boolean {\n return this.platform !== 'unknown'\n }\n \n /**\n * 获取平台类型\n */\n getPlatform(): Platform {\n return this.platform\n }\n \n /**\n * 检查是否已初始化\n */\n isReady(): boolean {\n return this.isInitialized\n }\n}\n\n// 导出单例\nexport const bridge = new Bridge()\n","/**\n * JSBridge SDK 类型定义\n */\n\n// ==================== 平台类型 ====================\n\nexport type Platform = 'android' | 'ios' | 'unknown'\n\n// ==================== 配置类型 ====================\n\nexport interface JSBridgeConfig {\n debug?: DebugConfig\n monitor?: MonitorConfig\n}\n\nexport interface DebugConfig {\n enabled: boolean\n useVConsole?: boolean\n logLevel?: 'debug' | 'info' | 'warn' | 'error'\n showTimestamp?: boolean\n}\n\nexport interface MonitorConfig {\n enabled: boolean\n autoReport?: boolean\n reportInterval?: number\n maxRecords?: number\n logTag?: string\n}\n\n// ==================== 日志类型 ====================\n\nexport enum LogLevel {\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n WARN = 'WARN',\n ERROR = 'ERROR'\n}\n\nexport interface LogRequest {\n tag?: string\n level: LogLevel\n message: string\n}\n\n// ==================== 设备相关 ====================\n\nexport interface ScanRequest {\n scanType?: ('qrCode' | 'barCode')[]\n hideAlbum?: boolean\n}\n\nexport interface ScanResult {\n resp_code: number\n resp_result: string\n resp_message?: string\n}\n\nexport interface DeviceInfo {\n model: string\n system: string\n version: string\n platform: string\n [key: string]: any\n}\n\nexport interface NetworkInfo {\n networkType: 'wifi' | '2g' | '3g' | '4g' | '5g' | 'none' | 'unknown'\n}\n\n// ==================== 媒体相关 ====================\n\nexport interface ChooseMediaRequest {\n count?: number\n mediaType?: ('image' | 'video')[]\n sourceType?: ('album' | 'camera')[]\n maxDuration?: number\n sizeType?: ('original' | 'compressed')[]\n}\n\nexport interface MediaFile {\n tempFilePath: string\n size: number\n duration?: number\n height?: number\n width?: number\n thumbTempFilePath?: string\n fileType?: 'image' | 'video'\n}\n\nexport interface ChooseMediaResult {\n tempFiles: MediaFile[]\n type?: 'image' | 'video'\n}\n\nexport interface ImageInfo {\n width: number\n height: number\n path: string\n orientation?: string\n type?: string\n}\n\nexport interface UploadFileRequest {\n url: string\n filePath: string\n name: string\n header?: Record<string, string>\n formData?: Record<string, any>\n timeout?: number\n}\n\nexport interface UploadFileResult {\n data: string\n statusCode: number\n errMsg?: string\n}\n\nexport interface PrintRequest {\n data: any\n [key: string]: any\n}\n\n// ==================== 路由相关 ====================\n\nexport interface NavigationBarStyle {\n navigationBarTitleText?: string\n backgroundColor?: string\n textColor?: string\n hideNavigationBar?: boolean\n}\n\nexport interface RouteInfo {\n path: string\n query?: Record<string, any>\n}\n\n// ==================== 存储相关 ====================\n\nexport interface StorageData {\n key: string\n data: any\n}\n\nexport interface AppInfo {\n appId: string\n version: string\n platform: Platform\n [key: string]: any\n}\n\n// ==================== 系统相关 ====================\n\nexport interface PhoneCallRequest {\n phoneNumber: string\n}\n\n// ==================== 监控相关 ====================\n\nexport interface MonitorRecord {\n api: string\n timestamp: number\n duration: number\n success: boolean\n error?: string\n platform: Platform\n}\n\nexport interface MonitorStats {\n totalCalls: number\n successCalls: number\n failedCalls: number\n avgDuration: number\n successRate: number\n}\n\n// ==================== 调试相关 ====================\n\nexport interface DebugLog {\n timestamp: number\n level: 'debug' | 'info' | 'warn' | 'error'\n api: string\n message: string\n data?: any\n}\n\n// ==================== 全局类型扩展 ====================\n\nexport {} // 确保这是一个模块\n\ndeclare global {\n interface Window {\n WKWebViewJavascriptBridge: any\n WKWVJBCallbacks: Array<(bridge: any) => void>\n InjectJavascript: {\n init: () => void\n }\n }\n}\nexport type Nullable<T> = T | null | undefined;\r\n","/**\n * 日志 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts (line 152-154)\n * 优化:增强类型安全、支持批量日志、支持日志队列\n */\n\nimport { bridge } from '../core/Bridge'\nimport type { LogRequest, LogLevel } from '../types'\n\nexport { LogLevel } from '../types'\nexport type { LogRequest }\n\n/**\n * 写入日志到原生端\n * \n * @example\n * await writeLog({\n * tag: 'MyApp',\n * level: LogLevel.INFO,\n * message: '用户点击了按钮'\n * })\n */\nexport async function writeLog(request: LogRequest): Promise<void> {\n try {\n // 调用原生 log handler\n await bridge.call('log', {\n tag: request.tag || 'JSBridge',\n level: request.level,\n message: request.message\n })\n } catch (error) {\n // 日志上报失败不应该影响业务逻辑,只在控制台警告\n console.warn('[JSBridge] 日志上报失败:', error)\n }\n}\n\n/**\n * 便捷的日志方法\n * \n * @example\n * await log.info('用户登录成功', 'Auth')\n * await log.error('网络请求失败', 'Network')\n */\nexport const log = {\n /**\n * DEBUG 级别日志\n */\n debug: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'DEBUG' as LogLevel,\n message,\n tag\n })\n },\n \n /**\n * INFO 级别日志\n */\n info: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'INFO' as LogLevel,\n message,\n tag\n })\n },\n \n /**\n * WARN 级别日志\n */\n warn: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'WARN' as LogLevel,\n message,\n tag\n })\n },\n \n /**\n * ERROR 级别日志\n */\n error: async (message: string, tag?: string): Promise<void> => {\n return writeLog({\n level: 'ERROR' as LogLevel,\n message,\n tag\n })\n }\n}\n\n/**\n * 批量写入日志(优化:减少 Bridge 调用次数)\n */\nexport async function writeLogs(requests: LogRequest[]): Promise<void> {\n // 并发上报,但不等待结果(fire-and-forget)\n const promises = requests.map(req => writeLog(req))\n \n // 使用 Promise.allSettled 确保部分失败不影响其他日志\n await Promise.allSettled(promises)\n}\n","/**\n * 监控层\n * \n * 优化:\n * - 使用原生 log 上报(不依赖 HTTP)\n * - 支持性能统计\n * - 支持错误追踪\n * - 自动批量上报\n */\n\nimport { bridge } from '../core/Bridge'\nimport { writeLog } from '../api/log'\nimport type { MonitorConfig, MonitorRecord, MonitorStats, LogLevel } from '../types'\n\nclass Monitor {\n private config: Required<MonitorConfig>\n private records: MonitorRecord[] = []\n private reportTimer: number | null = null\n \n constructor() {\n this.config = {\n enabled: false,\n autoReport: false,\n reportInterval: 60000, // 默认 60 秒\n maxRecords: 100,\n logTag: 'JSBridge-Monitor'\n }\n }\n \n /**\n * 初始化监控\n */\n init(config: MonitorConfig): void {\n this.config = {\n ...this.config,\n ...config\n }\n \n if (this.config.enabled && this.config.autoReport) {\n this.startAutoReport()\n }\n }\n \n /**\n * 开始自动上报\n * 优化:使用 visibilitychange 控制上报\n */\n private startAutoReport(): void {\n // 清理旧的定时器\n if (this.reportTimer) {\n clearInterval(this.reportTimer)\n }\n \n // 启动定时上报\n this.reportTimer = window.setInterval(() => {\n // 只在页面可见时上报\n if (!document.hidden) {\n this.report().catch(err => {\n console.warn('[Monitor] 自动上报失败:', err)\n })\n }\n }, this.config.reportInterval)\n \n // 监听页面可见性变化\n document.addEventListener('visibilitychange', () => {\n if (!document.hidden && this.records.length > 0) {\n // 页面变为可见时,立即上报积压的数据\n this.report().catch(err => {\n console.warn('[Monitor] 可见性变化上报失败:', err)\n })\n }\n })\n }\n \n /**\n * 停止自动上报\n */\n stopAutoReport(): void {\n if (this.reportTimer) {\n clearInterval(this.reportTimer)\n this.reportTimer = null\n }\n }\n \n /**\n * 记录 API 调用\n */\n record(api: string, duration: number, success: boolean, error?: string): void {\n if (!this.config.enabled) return\n \n const record: MonitorRecord = {\n api,\n timestamp: Date.now(),\n duration,\n success,\n error,\n platform: bridge.getPlatform()\n }\n \n this.records.push(record)\n \n // 超过最大记录数时,自动上报\n if (this.records.length >= this.config.maxRecords) {\n this.report().catch(err => {\n console.warn('[Monitor] 自动上报失败:', err)\n })\n }\n }\n \n /**\n * 上报监控数据(通过原生 log)\n */\n async report(): Promise<void> {\n if (this.records.length === 0) return\n \n // 复制并清空记录\n const recordsToReport = this.records.slice(0, this.config.maxRecords)\n this.records = this.records.slice(this.config.maxRecords)\n \n const data = {\n timestamp: Date.now(),\n platform: bridge.getPlatform(),\n count: recordsToReport.length,\n records: recordsToReport\n }\n \n try {\n // 通过 log handler 上报(INFO 级别)\n await writeLog({\n tag: this.config.logTag,\n level: 'INFO' as LogLevel,\n message: `[MONITOR] ${JSON.stringify(data)}`\n })\n \n console.log(`[Monitor] 上报成功,记录数: ${recordsToReport.length}`)\n } catch (error) {\n console.error('[Monitor] 上报失败:', error)\n // 上报失败,放回队列(但限制最大数量)\n this.records = [...recordsToReport, ...this.records].slice(0, this.config.maxRecords * 2)\n throw error\n }\n }\n \n /**\n * 上报错误(立即上报)\n */\n async reportError(api: string, error: string, detail?: any): Promise<void> {\n if (!this.config.enabled) return\n \n const errorData = {\n timestamp: Date.now(),\n api,\n error,\n detail,\n platform: bridge.getPlatform(),\n userAgent: navigator.userAgent\n }\n \n try {\n // 通过 log handler 立即上报(ERROR 级别)\n await writeLog({\n tag: this.config.logTag,\n level: 'ERROR' as LogLevel,\n message: `[ERROR] ${JSON.stringify(errorData)}`\n })\n } catch (err) {\n console.error('[Monitor] 错误上报失败:', err)\n }\n }\n \n /**\n * 获取统计信息\n */\n getStats(): MonitorStats {\n const totalCalls = this.records.length\n const successCalls = this.records.filter(r => r.success).length\n const failedCalls = totalCalls - successCalls\n const avgDuration = totalCalls > 0\n ? this.records.reduce((sum, r) => sum + r.duration, 0) / totalCalls\n : 0\n const successRate = totalCalls > 0 ? successCalls / totalCalls : 0\n \n return {\n totalCalls,\n successCalls,\n failedCalls,\n avgDuration: Math.round(avgDuration),\n successRate: Math.round(successRate * 10000) / 100 // 保留两位小数\n }\n }\n \n /**\n * 获取所有记录\n */\n getRecords(): MonitorRecord[] {\n return [...this.records]\n }\n \n /**\n * 清空记录\n */\n clear(): void {\n this.records = []\n }\n \n /**\n * 销毁监控器\n */\n destroy(): void {\n this.stopAutoReport()\n this.clear()\n }\n}\n\n// 导出单例\nexport const monitor = new Monitor()\n","/**\n * 调试层\n * \n * 优化:\n * - 动态加载 vconsole(按需加载)\n * - 支持调用追踪\n * - 支持日志分级\n */\n\nimport type { DebugConfig, DebugLog } from '../types'\n\nclass Debug {\n private config: Required<DebugConfig>\n private vConsole: any = null\n private logs: DebugLog[] = []\n private maxLogs: number = 100\n \n constructor() {\n this.config = {\n enabled: false,\n useVConsole: false,\n logLevel: 'info',\n showTimestamp: true\n }\n }\n \n /**\n * 初始化调试模式\n */\n async init(config: DebugConfig): Promise<void> {\n this.config = {\n ...this.config,\n ...config\n }\n \n if (this.config.enabled && this.config.useVConsole) {\n await this.initVConsole()\n }\n }\n \n /**\n * 初始化 vconsole\n * 优化:动态导入,只在需要时加载\n */\n private async initVConsole(): Promise<void> {\n if (this.vConsole) {\n console.log('[Debug] vconsole 已存在')\n return\n }\n \n // 检查是否已被其他地方初始化\n if ((window as any).vConsole) {\n console.log('[Debug] vconsole 已被外部初始化')\n this.vConsole = (window as any).vConsole\n return\n }\n \n try {\n // 动态导入 vconsole\n const VConsoleModule = await import('vconsole')\n const VConsole = VConsoleModule.default || VConsoleModule\n \n this.vConsole = new VConsole({\n theme: 'dark',\n defaultPlugins: ['system', 'network', 'element', 'storage'],\n maxLogNumber: 1000\n })\n \n console.log('[Debug] vconsole 初始化成功')\n } catch (error) {\n console.warn('[Debug] vconsole 加载失败:', error)\n console.warn('[Debug] 请确保已安装 vconsole: npm install vconsole')\n }\n }\n \n /**\n * 记录调用追踪\n */\n trace(api: string, message: string, data?: any): void {\n if (!this.config.enabled) return\n \n const log: DebugLog = {\n timestamp: Date.now(),\n level: this.config.logLevel,\n api,\n message,\n data\n }\n \n this.logs.push(log)\n \n // 限制日志数量\n if (this.logs.length > this.maxLogs) {\n this.logs.shift()\n }\n \n // 输出到控制台\n this.outputLog(log)\n }\n \n /**\n * 输出日志到控制台\n */\n private outputLog(log: DebugLog): void {\n const timestamp = this.config.showTimestamp\n ? `[${new Date(log.timestamp).toLocaleTimeString()}]`\n : ''\n \n const prefix = `${timestamp} [JSBridge][${log.api}]`\n const message = `${prefix} ${log.message}`\n \n switch (log.level) {\n case 'debug':\n console.debug(message, log.data || '')\n break\n case 'info':\n console.info(message, log.data || '')\n break\n case 'warn':\n console.warn(message, log.data || '')\n break\n case 'error':\n console.error(message, log.data || '')\n break\n default:\n console.log(message, log.data || '')\n }\n }\n \n /**\n * 获取所有日志\n */\n getLogs(): DebugLog[] {\n return [...this.logs]\n }\n \n /**\n * 清空日志\n */\n clearLogs(): void {\n this.logs = []\n }\n \n /**\n * 销毁调试器\n */\n destroy(): void {\n if (this.vConsole && typeof this.vConsole.destroy === 'function') {\n this.vConsole.destroy()\n this.vConsole = null\n }\n this.clearLogs()\n }\n}\n\n// 导出单例\nexport const debug = new Debug()\n","/**\n * 设备相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { ScanRequest, ScanResult, DeviceInfo, NetworkInfo } from '../types'\n\n/**\n * 扫码\n * 参考:JsBridgeHandlers.ts line 75-87\n * \n * @example\n * const result = await scan({ scanType: ['qrCode', 'barCode'] })\n * if (result.resp_code === 1000) {\n * console.log('扫码结果:', result.resp_result)\n * }\n */\nexport async function scan(request: ScanRequest = {}): Promise<ScanResult> {\n const startTime = Date.now()\n \n try {\n debug.trace('scan', '开始扫码', request)\n \n const result = await bridge.call<string>('scan', request)\n \n // 解析返回结果(参考 JsBridgeHandlers.ts line 76-86)\n const parsedResult: ScanResult = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n const success = parsedResult.resp_code === 1000\n \n monitor.record('scan', duration, success, parsedResult.resp_message)\n debug.trace('scan', success ? '扫码成功' : '扫码取消', parsedResult)\n \n return parsedResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('scan', duration, false, error.message)\n monitor.reportError('scan', error.message, request)\n debug.trace('scan', '扫码失败', error)\n throw error\n }\n}\n\n/**\n * 震动\n * \n * @param duration 震动时长(毫秒),默认 400ms\n */\nexport async function vibrate(duration: number = 400): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('vibrate', '开始震动', { duration })\n \n await bridge.call('vibrate', { duration })\n \n const elapsed = Date.now() - startTime\n monitor.record('vibrate', elapsed, true)\n debug.trace('vibrate', '震动完成')\n } catch (error: any) {\n const elapsed = Date.now() - startTime\n monitor.record('vibrate', elapsed, false, error.message)\n debug.trace('vibrate', '震动失败', error)\n throw error\n }\n}\n\n/**\n * 获取设备信息\n * \n * @example\n * const info = await getDeviceInfo()\n * console.log('设备型号:', info.model)\n * console.log('系统版本:', info.version)\n */\nexport async function getDeviceInfo(): Promise<DeviceInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getDeviceInfo', '获取设备信息')\n \n const result = await bridge.call<string>('getDeviceInfo')\n const info: DeviceInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getDeviceInfo', duration, true)\n debug.trace('getDeviceInfo', '获取成功', info)\n \n return info\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getDeviceInfo', duration, false, error.message)\n debug.trace('getDeviceInfo', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 获取网络类型\n * \n * @example\n * const network = await getNetworkType()\n * console.log('网络类型:', network.networkType)\n */\nexport async function getNetworkType(): Promise<NetworkInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getNetworkType', '获取网络类型')\n \n const result = await bridge.call<string>('getNetworkType')\n const info: NetworkInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getNetworkType', duration, true)\n debug.trace('getNetworkType', '获取成功', info)\n \n return info\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getNetworkType', duration, false, error.message)\n debug.trace('getNetworkType', '获取失败', error)\n throw error\n }\n}\n","/**\n * 媒体相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type {\n ChooseMediaRequest,\n ChooseMediaResult,\n ImageInfo,\n UploadFileRequest,\n UploadFileResult,\n PrintRequest\n} from '../types'\n\n/**\n * 选择图片/视频\n * 参考:JsBridgeHandlers.ts line 93-100\n * \n * @example\n * const result = await chooseMedia({\n * count: 9,\n * mediaType: ['image'],\n * sourceType: ['album', 'camera']\n * })\n */\nexport async function chooseMedia(request: ChooseMediaRequest): Promise<ChooseMediaResult | null> {\n const startTime = Date.now()\n \n try {\n debug.trace('chooseMedia', '选择媒体', request)\n \n const result = await bridge.call<string>('chooseMedia', request)\n \n if (!result) {\n debug.trace('chooseMedia', '用户取消选择')\n monitor.record('chooseMedia', Date.now() - startTime, true)\n return null\n }\n \n const mediaResult: ChooseMediaResult = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('chooseMedia', duration, true)\n debug.trace('chooseMedia', '选择成功', mediaResult)\n \n return mediaResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('chooseMedia', duration, false, error.message)\n monitor.reportError('chooseMedia', error.message, request)\n debug.trace('chooseMedia', '选择失败', error)\n throw error\n }\n}\n\n/**\n * 上传文件\n * 参考:JsBridgeHandlers.ts line 117-122\n * \n * @example\n * const result = await uploadFile({\n * url: 'https://api.example.com/upload',\n * filePath: '/path/to/file',\n * name: 'file'\n * })\n */\nexport async function uploadFile(request: UploadFileRequest): Promise<UploadFileResult> {\n const startTime = Date.now()\n \n try {\n debug.trace('uploadFile', '上传文件', request)\n \n const result = await bridge.call<string>('uploadFile', request)\n const uploadResult: UploadFileResult = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n const success = uploadResult.statusCode >= 200 && uploadResult.statusCode < 300\n \n monitor.record('uploadFile', duration, success, uploadResult.errMsg)\n debug.trace('uploadFile', success ? '上传成功' : '上传失败', uploadResult)\n \n return uploadResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('uploadFile', duration, false, error.message)\n monitor.reportError('uploadFile', error.message, request)\n debug.trace('uploadFile', '上传异常', error)\n throw error\n }\n}\n\n/**\n * 预览图片\n * \n * @param urls 图片URL数组\n * @param current 当前显示图片的索引,默认 0\n */\nexport async function previewImage(urls: string[], current: number = 0): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('previewImage', '预览图片', { urls, current })\n \n await bridge.call('previewImage', { urls, current })\n \n const duration = Date.now() - startTime\n monitor.record('previewImage', duration, true)\n debug.trace('previewImage', '预览完成')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('previewImage', duration, false, error.message)\n debug.trace('previewImage', '预览失败', error)\n throw error\n }\n}\n\n/**\n * 获取图片信息\n * 参考:JsBridgeHandlers.ts line 106-111\n * \n * @param path 图片路径\n */\nexport async function getImageInfo(path: string): Promise<ImageInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getImageInfo', '获取图片信息', { path })\n \n const result = await bridge.call<string>('getImageInfo', { path })\n const imageInfo: ImageInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getImageInfo', duration, true)\n debug.trace('getImageInfo', '获取成功', imageInfo)\n \n return imageInfo\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getImageInfo', duration, false, error.message)\n debug.trace('getImageInfo', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 蓝牙打印\n * 参考:JsBridgeHandlers.ts line 182-194\n * \n * @param request 打印请求\n */\nexport async function bluetoothPrint(request: PrintRequest): Promise<any> {\n const startTime = Date.now()\n \n try {\n debug.trace('bluetoothPrint', '蓝牙打印', request)\n \n const result = await bridge.call('bluetoothPrint', request)\n \n // 处理返回结果\n let parsedResult = result\n if (result && typeof result === 'string') {\n try {\n parsedResult = JSON.parse(result)\n } catch {\n // 如果解析失败,返回原始字符串\n }\n }\n \n const duration = Date.now() - startTime\n monitor.record('bluetoothPrint', duration, true)\n debug.trace('bluetoothPrint', '打印完成', parsedResult)\n \n return parsedResult\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('bluetoothPrint', duration, false, error.message)\n monitor.reportError('bluetoothPrint', error.message, request)\n debug.trace('bluetoothPrint', '打印失败', error)\n throw error\n }\n}\n","/**\n * 路由相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { NavigationBarStyle, RouteInfo } from '../types'\n\n/**\n * 设置导航栏样式\n * 参考:JsBridgeHandlers.ts line 144-146\n * \n * @example\n * await setNavigationBar({\n * navigationBarTitleText: '订单详情',\n * backgroundColor: '#ffffff',\n * textColor: '#000000'\n * })\n */\nexport async function setNavigationBar(style: NavigationBarStyle): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('setNavigationBar', '设置导航栏', style)\n \n await bridge.call('setNavigationBar', style)\n \n const duration = Date.now() - startTime\n monitor.record('setNavigationBar', duration, true)\n debug.trace('setNavigationBar', '设置成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('setNavigationBar', duration, false, error.message)\n debug.trace('setNavigationBar', '设置失败', error)\n throw error\n }\n}\n\n/**\n * 关闭当前 WebView\n * 参考:JsBridgeHandlers.ts line 128-130\n * \n * @example\n * await closeWebView()\n */\nexport async function closeWebView(): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('closeWebView', '关闭页面')\n \n await bridge.call('closeWebView')\n \n const duration = Date.now() - startTime\n monitor.record('closeWebView', duration, true)\n debug.trace('closeWebView', '关闭成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('closeWebView', duration, false, error.message)\n debug.trace('closeWebView', '关闭失败', error)\n throw error\n }\n}\n\n/**\n * 注册路由跳转回调\n * 参考:JsBridgeHandlers.ts line 44-46\n * \n * @example\n * onRoute((data, callback) => {\n * console.log('路由跳转:', data)\n * router.push(data.path)\n * callback({ success: true })\n * })\n */\nexport async function onRoute(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onRoute', '注册路由跳转回调')\n await bridge.register('route', handler)\n debug.trace('onRoute', '注册成功')\n } catch (error: any) {\n debug.trace('onRoute', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 注册获取路由信息回调\n * 参考:JsBridgeHandlers.ts line 51-53\n * \n * @example\n * onGetRouteInfo((data, callback) => {\n * callback({ routes: routeConfig })\n * })\n */\nexport async function onGetRouteInfo(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onGetRouteInfo', '注册获取路由信息回调')\n await bridge.register('getRouteInfo', handler)\n debug.trace('onGetRouteInfo', '注册成功')\n } catch (error: any) {\n debug.trace('onGetRouteInfo', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 通知原生路由变化\n * 参考:JsBridgeHandlers.ts line 21-23\n * \n * @param to 目标路由\n * @param from 来源路由\n */\nexport async function notifyRouteChange(to: RouteInfo, from: RouteInfo): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('notifyRouteChange', '通知路由变化', { to, from })\n \n await bridge.call('routerAfterEach', { to, from })\n \n const duration = Date.now() - startTime\n monitor.record('notifyRouteChange', duration, true)\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('notifyRouteChange', duration, false, error.message)\n debug.trace('notifyRouteChange', '通知失败', error)\n // 路由变化通知失败不应该阻塞业务\n console.warn('[JSBridge] 路由变化通知失败:', error)\n }\n}\n","/**\n * 存储相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { AppInfo } from '../types'\n\n/**\n * 获取 App 信息\n * 参考:JsBridgeHandlers.ts line 28-30\n * \n * @example\n * const appInfo = await getAppInfo()\n * console.log('App 版本:', appInfo.version)\n */\nexport async function getAppInfo(): Promise<AppInfo> {\n const startTime = Date.now()\n \n try {\n debug.trace('getAppInfo', '获取 App 信息')\n \n const result = await bridge.call<string>('getAppInfo')\n const appInfo: AppInfo = typeof result === 'string'\n ? JSON.parse(result)\n : result\n \n const duration = Date.now() - startTime\n monitor.record('getAppInfo', duration, true)\n debug.trace('getAppInfo', '获取成功', appInfo)\n \n return appInfo\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getAppInfo', duration, false, error.message)\n debug.trace('getAppInfo', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 获取存储数据\n * \n * @param key 存储键\n */\nexport async function getStorage(key: string): Promise<any> {\n const startTime = Date.now()\n \n try {\n debug.trace('getStorage', '获取存储数据', { key })\n \n const result = await bridge.call('getStorage', { key })\n \n const duration = Date.now() - startTime\n monitor.record('getStorage', duration, true)\n debug.trace('getStorage', '获取成功', result)\n \n return result\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('getStorage', duration, false, error.message)\n debug.trace('getStorage', '获取失败', error)\n throw error\n }\n}\n\n/**\n * 设置存储数据\n * \n * @param key 存储键\n * @param data 存储数据\n */\nexport async function setStorage(key: string, data: any): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('setStorage', '设置存储数据', { key, data })\n \n await bridge.call('setStorage', { key, data })\n \n const duration = Date.now() - startTime\n monitor.record('setStorage', duration, true)\n debug.trace('setStorage', '设置成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('setStorage', duration, false, error.message)\n debug.trace('setStorage', '设置失败', error)\n throw error\n }\n}\n\n/**\n * 注册刷新 store 数据回调\n * 参考:JsBridgeHandlers.ts line 59-61\n * \n * @example\n * onRefreshStore((data, callback) => {\n * store.dispatch('refresh', data)\n * callback({ success: true })\n * })\n */\nexport async function onRefreshStore(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onRefreshStore', '注册刷新 store 回调')\n await bridge.register('refreshStore', handler)\n debug.trace('onRefreshStore', '注册成功')\n } catch (error: any) {\n debug.trace('onRefreshStore', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 通知原生 App 已加载完成\n * 参考:JsBridgeHandlers.ts line 160-162\n * \n * @param data 启动数据\n */\nexport async function notifyAppOnload(data?: any): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('notifyAppOnload', '通知 App 加载完成', data)\n \n await bridge.call('uniPageLifeCycle', {\n lifecycle: 'appOnLaunch',\n data\n })\n \n const duration = Date.now() - startTime\n monitor.record('notifyAppOnload', duration, true)\n debug.trace('notifyAppOnload', '通知成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('notifyAppOnload', duration, false, error.message)\n debug.trace('notifyAppOnload', '通知失败', error)\n // 生命周期通知失败不应该阻塞业务\n console.warn('[JSBridge] App 加载通知失败:', error)\n }\n}\n","/**\n * 系统相关 API\n * \n * 参考:context/soa/src/jsBridge/JsBridgeHandlers.ts\n */\n\nimport { bridge } from '../core/Bridge'\nimport { monitor } from '../monitor/Monitor'\nimport { debug } from '../debug/Debug'\nimport type { PhoneCallRequest } from '../types'\n\n/**\n * 拨打电话\n * 参考:JsBridgeHandlers.ts line 136-138\n * \n * @example\n * await makePhoneCall({ phoneNumber: '10086' })\n */\nexport async function makePhoneCall(request: PhoneCallRequest): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('makePhoneCall', '拨打电话', request)\n \n await bridge.call('makePhoneCall', request)\n \n const duration = Date.now() - startTime\n monitor.record('makePhoneCall', duration, true)\n debug.trace('makePhoneCall', '拨号成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('makePhoneCall', duration, false, error.message)\n monitor.reportError('makePhoneCall', error.message, request)\n debug.trace('makePhoneCall', '拨号失败', error)\n throw error\n }\n}\n\n/**\n * 注册 PDA 扫码回调\n * 参考:JsBridgeHandlers.ts line 67-69\n * \n * @example\n * onPdaScan((data, callback) => {\n * console.log('PDA 扫码结果:', data)\n * callback({ success: true })\n * })\n */\nexport async function onPdaScan(\n handler: (data: any, callback: (response: any) => void) => void\n): Promise<void> {\n try {\n debug.trace('onPdaScan', '注册 PDA 扫码回调')\n await bridge.register('pdaScan', handler)\n debug.trace('onPdaScan', '注册成功')\n } catch (error: any) {\n debug.trace('onPdaScan', '注册失败', error)\n throw error\n }\n}\n\n/**\n * 退出登录\n * \n * @example\n * await logout()\n */\nexport async function logout(): Promise<void> {\n const startTime = Date.now()\n \n try {\n debug.trace('logout', '退出登录')\n \n await bridge.call('logout')\n \n const duration = Date.now() - startTime\n monitor.record('logout', duration, true)\n debug.trace('logout', '退出成功')\n } catch (error: any) {\n const duration = Date.now() - startTime\n monitor.record('logout', duration, false, error.message)\n debug.trace('logout', '退出失败', error)\n throw error\n }\n}\n","export default class PageLifeCycle {\n state: string // onLoad,onShow,onHide,onUnload\n route: any // 路由信息\n constructor(state: string, route: any) {\n this.state = state\n this.route = route\n }\n}","export class UniScanRequest {\n scanType: string[] = ['qrCode', 'barCode'] // 扫码识别类型,参数可多选,qrCode、barCode,不设置,默认识别所有\n hideAlbum: boolean = false // 是否隐藏相册,默认false不隐藏\n language: string = 'zh-Hans' // ios需要设置这个参数,只支持中英文 zh-Hans、en,默认中文\n failedMsg: string = '未识别到二维码,请重试' // 相册选择照片识别错误提示(ios)\n screenType: string = 'full' // Android支持全屏需要设置此参数\n timeoutInterval: string = '10' // 设置超时时间,单位秒,默认10秒\n timeoutText: string = '未识别到二维码?' // 超时提醒文本,默认未识别到二维码?\n viewText: string = '扫二维码/条码' // 扫码提示文字,设置null时显示sdk默认文案\n}\n","export class UniScanResult {\n resp_result: Nullable<string> // 扫码结果\n resp_code: number //10:用户取消,11:其他错误,1000:成功\n resp_message: Nullable<string> // 结果信息\n}\n","import { bridge as JsBridge } from '../core/Bridge'\r\nimport PageLifeCycle from './PageLifeCycle'\r\nimport { UniScanRequest } from './UniScanRequest'\r\nimport { UniScanResult } from './UniScanResult'\r\nimport { UniChooseMediaRequest } from './UniChooseMediaRequest'\r\nimport { UniChooseMediaResult } from './UniChooseMediaResult'\r\nimport { UniMediaFile } from './UniMediaFile'\r\nimport { ImageInfoRequest } from './ImageInfoRequest'\r\nimport { UniUploadFileResult } from './UniUploadFileResult'\r\nimport { UniPhoneCall } from './UniPhoneCall'\r\nimport { UniNavigationBarStyle } from './UniNavigationBarStyle'\r\nimport { UniLog } from './UniLog'\r\nimport { UniUrlScheme } from './UniUrlScheme'\r\nimport { UniReloadModule } from './UniReloadModule'\r\n\r\nclass JsBridgeHandlers {\r\n /**\r\n * 路由变化通知原生\r\n * @param to\r\n * @param from\r\n */\r\n static handleRouterAfterEach(to, from): Promise<any> {\r\n return JsBridge.call('routerAfterEach', { to, from })\r\n }\r\n\r\n /**\r\n * 获取app端信息\r\n */\r\n static handleGetAppInfo(): Promise<any> {\r\n return JsBridge.call('getAppInfo')\r\n }\r\n\r\n /**\r\n * 页面生命周期通知原生\r\n * @param lifecycle\r\n */\r\n static handlePageLifeCycle(lifecycle: PageLifeCycle) {\r\n return JsBridge.call('uniPageLifeCycle', lifecycle)\r\n }\r\n\r\n /**\r\n * 注册路由跳转调用\r\n * @param handler\r\n */\r\n static registerOnRoute(handler: (data: any, responseCallback: any) => void) {\r\n return JsBridge.register('route', handler)\r\n }\r\n\r\n /**\r\n * 注册获取路由信息调用\r\n */\r\n static registerOnGetRouteInfo(handler: (data: any, responseCallback: any) => void) {\r\n return JsBridge.register('getRouteInfo', handler)\r\n }\r\n\r\n /**\r\n * 注册刷新store数据\r\n * @param handler\r\n */\r\n static registerOnRefreshStore(handler: (data: any, responseCallback: any) => void) {\r\n return JsBridge.register('refreshStore', handler)\r\n }\r\n\r\n /**\r\n * 注册PDA扫码回调\r\n * @param handler\r\n */\r\n static registerOnPdaScan(handler: (data: any, responseCallback: any) => void) {\r\n return JsBridge.register('pdaScan', handler)\r\n }\r\n\r\n /**\r\n * 调用原生扫码\r\n * @param request\r\n */\r\n static handleScan(request: UniScanRequest = new UniScanRequest()): Promise<UniScanResult> {\r\n return JsBridge.call('scan', request).then((res) => {\r\n const json = JSON.parse(res)\r\n const result = new UniScanResult()\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n result.resp_code = json.resp_code\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n result.resp_result = json.resp_result\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n result.resp_message = json.resp_message\r\n return result\r\n })\r\n }\r\n\r\n /**\r\n * 调用原生选择图片/视频\r\n * @param request\r\n */\r\n static handleChooseMedia(request: UniChooseMediaRequest): Promise<Nullable<UniChooseMediaResult>> {\r\n return JsBridge.call('chooseMedia', request).then((res) => {\r\n if (res) {\r\n const result: UniChooseMediaResult = JSON.parse(res)\r\n return result\r\n } else return null\r\n })\r\n }\r\n\r\n /**\r\n * 获取图片信息\r\n * @param request\r\n */\r\n static handleGetImageInfo(request: ImageInfoRequest): Promise<UniMediaFile> {\r\n return JsBridge.call('getImageInfo', request).then((res) => {\r\n const result: UniMediaFile = JSON.parse(res)\r\n return result\r\n })\r\n }\r\n\r\n /**\r\n * 上传文件\r\n * @param request\r\n */\r\n static handleUploadFile(request: UniApp.UploadFileOption): Promise<UniUploadFileResult> {\r\n return JsBridge.call('uploadFile', request).then((res) => {\r\n const result: UniUploadFileResult = JSON.parse(res)\r\n return result\r\n })\r\n }\r\n\r\n /**\r\n * 关闭当前WebView\r\n * @param request\r\n */\r\n static handleCloseWebView(): Promise<void> {\r\n return JsBridge.call('closeWebView')\r\n }\r\n\r\n /**\r\n * 打电话\r\n * @param request\r\n */\r\n static handleMakePhoneCall(request: UniPhoneCall): Promise<any> {\r\n return JsBridge.call('makePhoneCall', request)\r\n }\r\n\r\n /**\r\n * 动态设置标题\r\n * @param request\r\n */\r\n static handleSetNavigationBar(request: UniNavigationBarStyle): Promise<void> {\r\n return JsBridge.call('setNavigationBar', request)\r\n }\r\n\r\n /**\r\n * 打日志\r\n * @param request\r\n */\r\n static handleLog(request: UniLog): Promise<void> {\r\n return JsBridge.call('log', request)\r\n }\r\n\r\n /**\r\n * 通知原生APP已加载完成\r\n * @param data\r\n */\r\n static handleAppOnload(data: any): Promise<void> {\r\n return JsBridgeHandlers.handlePageLifeCycle(new PageLifeCycle('appOnLaunch', data))\r\n }\r\n\r\n /**\r\n * 通知原生APP退出登录\r\n * @param data\r\n */\r\n static handleLogout(): Promise<void> {\r\n return JsBridge.call('logout')\r\n }\r\n\r\n /**\r\n * 通知原生APP打开链接\r\n * @param data\r\n */\r\n static handleOpenSchemeUrl(request: UniUrlScheme): Promise<string> {\r\n return JsBridge.call('openSchemeUrl', request)\r\n }\r\n\r\n /**\r\n * 图片路径转换成base64格式\r\n * @param path\r\n */\r\n static handlePathToBase64(request: ImageInfoRequest): Promise<string> {\r\n return JsBridge.call('pathToBase64', request).then((res) => {\r\n const result: string = JSON.parse(res)\r\n return result\r\n })\r\n }\r\n\r\n static handleBluetoothPrintImage(request: any): Promise<any> {\r\n console.log(request)\r\n return JsBridge.call('printImage', request).then((res) => {\r\n if (!res) return res\r\n if (typeof res === 'string') {\r\n try {\r\n return JSON.parse(res)\r\n } catch (e) {\r\n return res\r\n }\r\n }\r\n return res\r\n })\r\n }\r\n /**\r\n * 蓝牙打印\r\n * @param data\r\n */\r\n static handleBluetoothPrint(request: any): Promise<any> {\r\n return JsBridge.call('bluetoothPrint', request).then((res) => {\r\n if (!res) return res\r\n if (typeof res === 'string') {\r\n try {\r\n return JSON.parse(res)\r\n } catch (e) {\r\n return res\r\n }\r\n }\r\n return res\r\n })\r\n }\r\n\r\n /**\r\n * 通知原生APP重新加载子应用\r\n * @param request\r\n */\r\n static handleReloadModule(request: UniReloadModule): Promise<void> {\r\n return JsBridge.call('reloadModule', request)\r\n }\r\n}\r\n\r\nexport default JsBridgeHandlers\r\n","// 为什么会有这个类?\n//uni.chooseImage = chooseImage\n//Cannot assign to read only property 'chooseImage' of object '[object Object]'\n// chooseImage是只读的,无法替换,只能用代理模式,如果有好方法替换可以删除这个类\nimport { pathToBase64 } from 'image-tools'\n\nexport const UniProxy = {\n chooseImage: uni.chooseImage,\n pathToBase64: pathToBase64\n}\n","import JsBridgeHandlers from '../jsBridge/JsBridgeHandlers'\r\nimport { UniScanRequest } from '../jsBridge/UniScanRequest'\r\nimport { UniChooseMediaRequest } from '../jsBridge/UniChooseMediaRequest'\r\nimport ChooseImageSuccessCallbackResult = UniApp.ChooseImageSuccessCallbackResult\r\nimport ChooseVideoSuccess = UniApp.ChooseVideoSuccess\r\nimport GetImageInfoSuccessData = UniApp.GetImageInfoSuccessData\r\nimport { UniProxy } from '../h5Adapter/UniProxy'\r\nimport { ImageInfoRequest } from '../jsBridge/ImageInfoRequest'\r\nimport { UniPhoneCall } from '../jsBridge/UniPhoneCall'\r\nimport { UniNavigationBarStyle } from '../jsBridge/UniNavigationBarStyle'\r\nimport { BridgeLog } from '../jsBridge/BridgeLog'\r\nimport { BridgeLogOptions } from '../jsBridge/BridgeLogOptions'\r\nimport { UniLog } from '../jsBridge/UniLog'\r\n\r\nexport function hdH5Adapter() {\r\n uni.scanCode = (options: UniApp.ScanCodeOptions) => {\r\n const mpaasScanOptions: UniScanRequest = {\r\n scanType: options.scanType || ['qrCode', 'barCode'],\r\n hideAlbum: options.onlyFromCamera || false,\r\n viewText: '扫二维码/条码',\r\n language: 'zh-Hans',\r\n failedMsg: '未识别到二维码,请重试',\r\n screenType: 'full',\r\n timeoutInterval: '10',\r\n timeoutText: '未识别到二维码?'\r\n }\r\n JsBridgeHandlers.handleScan(mpaasScanOptions).then((ret) => {\r\n if (ret.resp_code === 1000) {\r\n options.success?.({\r\n result: ret.resp_result || '',\r\n scanType: mpaasScanOptions.scanType[0],\r\n charSet: 'utf-8',\r\n path: ''\r\n })\r\n } else if (ret.resp_code === 10) {\r\n options.fail?.({ errMsg: '用户取消扫码' })\r\n } else {\r\n options.fail?.({ errMsg: ret.resp_message || '扫码失败' })\r\n }\r\n options.complete?.(ret)\r\n })\r\n }\r\n // uni.chooseImage = chooseImage 会报错: Cannot assign to read only property 'chooseImage' of object '[object Object]'\r\n UniProxy.chooseImage = (options: UniApp.ChooseImageOptions) => {\r\n const request: UniChooseMediaRequest = {\r\n extension: options.extension || [], //TODO 未实现\r\n sourceType: options.sourceType || ['album', 'camera'],\r\n camera: 'back',\r\n mediaType: ['image'],\r\n count: options.count || 9,\r\n maxDuration: 30, // 图片忽略\r\n sizeType: ['original', 'compressed'] //TODO 未实现\r\n }\r\n JsBridgeHandlers.handleChooseMedia(request).then((ret) => {\r\n if (ret == null) {\r\n options.fail?.({ errMsg: '用户取消' })\r\n } else {\r\n const result: ChooseImageSuccessCallbackResult = {\r\n tempFiles: ret.tempFiles.map((item) => {\r\n return {\r\n path: item.tempFilePath,\r\n size: item.size,\r\n type: item.fileType,\r\n name: item.name,\r\n width: item.width,\r\n height: item.height\r\n }\r\n }),\r\n tempFilePaths: ret.tempFilePaths\r\n }\r\n options.success?.(result)\r\n }\r\n options.complete?.(ret)\r\n })\r\n }\r\n uni.chooseVideo = (options: UniApp.ChooseVideoOptions) => {\r\n const request: UniChooseMediaRequest = {\r\n extension: options.extension || [], //TODO 未实现\r\n sourceType: options.sourceType || ['album', 'camera'],\r\n camera: options.camera || 'back',\r\n mediaType: ['video'],\r\n count: 1,\r\n maxDuration: options.maxDuration || 30, // 图片忽略\r\n sizeType: ['original', 'compressed'] //TODO 未实现\r\n }\r\n JsBridgeHandlers.handleChooseMedia(request).then((ret) => {\r\n if (ret == null) {\r\n options.fail?.({ errMsg: '用户取消' })\r\n } else {\r\n const first = ret.tempFiles[0]\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\r\n // @ts-ignore\r\n const result: ChooseVideoSuccess = {\r\n tempFilePath: first.tempFilePath,\r\n size: first.size,\r\n duration: first.duration / 1000,\r\n height: first.height,\r\n width: first.width,\r\n name: first.name\r\n }\r\n options.success?.(result)\r\n }\r\n options.complete?.(ret)\r\n })\r\n }\r\n\r\n uni.getImageInfo = (options: UniApp.GetImageInfoOptions) => {\r\n const request: ImageInfoRequest = {\r\n src: options.src\r\n }\r\n JsBridgeHandlers.handleGetImageInfo(request).then((ret) => {\r\n const result: GetImageInfoSuccessData = {\r\n width: ret.width,\r\n height: ret.height,\r\n path: ret.tempFilePath,\r\n type: ret.fileType,\r\n orientation: ''\r\n }\r\n options.success?.(result)\r\n })\r\n }\r\n\r\n UniProxy.pathToBase64 = function (path: string) {\r\n return new Promise((resolve, reject) => {\r\n JsBridgeHandlers.handlePathToBase64({ src: path }).then((result) => {\r\n if (result && result.startsWith('data:')) resolve(result)\r\n else reject(result)\r\n })\r\n })\r\n }\r\n\r\n uni.uploadFile = (options: UniApp.UploadFileOption): UniApp.UploadTask => {\r\n // 核心修复:防止 DataCloneError\r\n // iOS 的 postMessage 无法克隆包含 success/fail 等函数的对象\r\n // 我们必须提取出纯数据字段发送给原生\r\n const request = {\r\n url: options.url,\r\n filePath: options.filePath,\r\n name: options.name,\r\n formData: options.formData,\r\n header: options.header,\r\n timeout: (options as any).timeout\r\n }\r\n\r\n JsBridgeHandlers.handleUploadFile(request as any).then((ret) => {\r\n if (ret.code === 200) {\r\n options.success?.({\r\n data: ret.data || '',\r\n statusCode: ret.statusCode || 200\r\n })\r\n } else {\r\n options.fail?.({ errMsg: ret.errMsg || '上传失败' })\r\n }\r\n options.complete?.({ errMsg: ret.errMsg || '' })\r\n })\r\n //TODO 假的,不支持\r\n return {\r\n abort: () => {},\r\n onHeadersReceived: () => {},\r\n offHeadersReceived: () => {},\r\n onProgressUpdate: () => {},\r\n offProgressUpdate: () => {}\r\n } as UniApp.UploadTask\r\n }\r\n\r\n // 这里不能直接赋值,后面uni-simple-router会重写uni.navigateBack,导致此处赋值失效,所以用setTimeout延时赋值就ok了\r\n setTimeout(() => {\r\n // 原始的navigateBack\r\n const navigateBack = uni.navigateBack\r\n uni.navigateBack = (options: UniApp.NavigateBackOptions) => {\r\n const pages = getCurrentPages()\r\n if (pages && pages.length > 1) {\r\n navigateBack(options)\r\n } else {\r\n JsBridgeHandlers.handleCloseWebView()\r\n }\r\n }\r\n }, 100)\r\n\r\n uni.makePhoneCall = (options: UniApp.MakePhoneCallOptions) => {\r\n const request: UniPhoneCall = {\r\n phoneNumber: options.phoneNumber\r\n }\r\n JsBridgeHandlers.handleMakePhoneCall(request).then((ret) => {\r\n if (ret) options.fail?.(ret)\r\n else options.success?.(null)\r\n options.complete?.(null)\r\n })\r\n }\r\n\r\n uni.setNavigationBarTitle = (options: UniApp.SetNavigationBarTitleOptions) => {\r\n const request: UniNavigationBarStyle = {\r\n title: options.title\r\n } as any\r\n JsBridgeHandlers.handleSetNavigationBar(request).then((ret) => {\r\n options.success?.(null)\r\n options.complete?.(null)\r\n })\r\n }\r\n\r\n uni.setNavigationBarColor = (options: UniApp.SetNavigationbarColorOptions) => {\r\n const request: UniNavigationBarStyle = {\r\n frontColor: options.frontColor,\r\n backgroundColor: options.backgroundColor\r\n } as any\r\n JsBridgeHandlers.handleSetNavigationBar(request).then((ret) => {\r\n options.success?.(null)\r\n options.complete?.(null)\r\n })\r\n }\r\n\r\n function log(level: string, options: BridgeLogOptions) {\r\n const request: UniLog = {\r\n tag: options.tag as any,\r\n message: options.message,\r\n level: level\r\n }\r\n JsBridgeHandlers.handleLog(request)\r\n }\r\n\r\n BridgeLog.debug = (options: BridgeLogOptions) => log('DEBUG', options)\r\n BridgeLog.info = (options: BridgeLogOptions) => log('INFO', options)\r\n BridgeLog.warn = (options: BridgeLogOptions) => log('WARN', options)\r\n BridgeLog.error = (options: BridgeLogOptions) => log('ERROR', options)\r\n}\r\n","/**\n * JSBridge SDK\n * 统一的原生能力封装\n * \n * @author HD Digital\n * @version 1.0.0\n */\n\nimport { bridge } from './core/Bridge'\nimport type { Platform } from './types'\nimport { monitor } from './monitor/Monitor'\nimport { debug } from './debug/Debug'\nimport { writeLog, log, LogLevel } from './api/log'\nimport * as device from './api/device'\nimport * as media from './api/media'\nimport * as router from './api/router'\nimport * as storage from './api/storage'\nimport * as system from './api/system'\n\nimport type { JSBridgeConfig } from './types'\n\n/**\n * 初始化 JSBridge SDK\n * \n * @example\n * const success = await init({\n * debug: {\n * enabled: true,\n * useVConsole: true\n * },\n * monitor: {\n * enabled: true,\n * autoReport: true\n * }\n * })\n */\nexport async function init(config?: JSBridgeConfig): Promise<boolean> {\n try {\n // 1. 初始化 Debug 模式\n if (config?.debug) {\n await debug.init(config.debug)\n debug.trace('init', 'Debug 模式已启用', config.debug)\n }\n \n // 2. 初始化 Monitor\n if (config?.monitor) {\n monitor.init(config.monitor)\n debug.trace('init', 'Monitor 已启用', config.monitor)\n }\n \n // 3. 初始化 Bridge\n const success = await bridge.init()\n \n if (success) {\n // 记录初始化成功日志\n try {\n await writeLog({\n level: LogLevel.INFO,\n message: `JSBridge 初始化成功 [${bridge.getPlatform()}]`\n })\n } catch (e) {\n // 忽略日志上报失败\n }\n \n debug.trace('init', 'JSBridge 初始化成功', {\n platform: bridge.getPlatform()\n })\n } else {\n debug.trace('init', 'JSBridge 初始化失败:不在 App 环境中')\n }\n \n return success\n \n } catch (error: any) {\n // 记录初始化失败日志\n try {\n await writeLog({\n level: LogLevel.ERROR,\n message: `JSBridge 初始化失败: ${error.message}`\n })\n } catch (e) {\n // 忽略日志上报失败\n }\n \n debug.trace('init', 'JSBridge 初始化异常', error)\n console.error('[JSBridge] 初始化失败:', error)\n \n return false\n }\n}\n\n/**\n * 检查是否在 App 内\n */\nexport function inApp(): boolean {\n return bridge.inApp()\n}\n\n/**\n * 获取平台类型\n */\nexport function getPlatform(): Platform {\n return bridge.getPlatform()\n}\n\n/**\n * 检查是否已初始化\n */\nexport function isReady(): boolean {\n return bridge.isReady()\n}\n\n/**\n * JSBridge API\n * 所有可用的原生能力\n */\nexport const JSBridge = {\n // ==================== 设备相关 ====================\n /**\n * 扫码\n * @example\n * const result = await JSBridge.scan({ scanType: ['qrCode'] })\n */\n scan: device.scan,\n \n /**\n * 震动\n * @example\n * await JSBridge.vibrate(400)\n */\n vibrate: device.vibrate,\n \n /**\n * 获取设备信息\n * @example\n * const info = await JSBridge.getDeviceInfo()\n */\n getDeviceInfo: device.getDeviceInfo,\n \n /**\n * 获取网络类型\n * @example\n * const network = await JSBridge.getNetworkType()\n */\n getNetworkType: device.getNetworkType,\n \n // ==================== 媒体相关 ====================\n /**\n * 选择图片/视频\n * @example\n * const result = await JSBridge.chooseMedia({ count: 9, mediaType: ['image'] })\n */\n chooseMedia: media.chooseMedia,\n \n /**\n * 上传文件\n * @example\n * const result = await JSBridge.uploadFile({ url, filePath, name: 'file' })\n */\n uploadFile: media.uploadFile,\n \n /**\n * 预览图片\n * @example\n * await JSBridge.previewImage(['url1', 'url2'], 0)\n */\n previewImage: media.previewImage,\n \n /**\n * 获取图片信息\n * @example\n * const info = await JSBridge.getImageInfo(path)\n */\n getImageInfo: media.getImageInfo,\n \n /**\n * 蓝牙打印\n * @example\n * await JSBridge.bluetoothPrint({ data: printData })\n */\n bluetoothPrint: media.bluetoothPrint,\n \n // ==================== 路由相关 ====================\n /**\n * 设置导航栏\n * @example\n * await JSBridge.setNavigationBar({ navigationBarTitleText: '标题' })\n */\n setNavigationBar: router.setNavigationBar,\n \n /**\n * 关闭当前页面\n * @example\n * await JSBridge.closeWebView()\n */\n closeWebView: router.closeWebView,\n \n /**\n * 注册路由跳转回调\n * @example\n * JSBridge.onRoute((data, callback) => { router.push(data.path) })\n */\n onRoute: router.onRoute,\n \n /**\n * 注册获取路由信息回调\n * @example\n * JSBridge.onGetRouteInfo((data, callback) => { callback(routeConfig) })\n */\n onGetRouteInfo: router.onGetRouteInfo,\n \n /**\n * 通知路由变化\n * @example\n * await JSBridge.notifyRouteChange(to, from)\n */\n notifyRouteChange: router.notifyRouteChange,\n \n // ==================== 存储相关 ====================\n /**\n * 获取 App 信息\n * @example\n * const appInfo = await JSBridge.getAppInfo()\n */\n getAppInfo: storage.getAppInfo,\n \n /**\n * 获取存储数据\n * @example\n * const data = await JSBridge.getStorage('key')\n */\n getStorage: storage.getStorage,\n \n /**\n * 设置存储数据\n * @example\n * await JSBridge.setStorage('key', data)\n */\n setStorage: storage.setStorage,\n \n /**\n * 注册刷新 store 回调\n * @example\n * JSBridge.onRefreshStore((data, callback) => { store.dispatch('refresh') })\n */\n onRefreshStore: storage.onRefreshStore,\n \n /**\n * 通知 App 加载完成\n * @example\n * await JSBridge.notifyAppOnload()\n */\n notifyAppOnload: storage.notifyAppOnload,\n \n // ==================== 系统相关 ====================\n /**\n * 拨打电话\n * @example\n * await JSBridge.makePhoneCall({ phoneNumber: '10086' })\n */\n makePhoneCall: system.makePhoneCall,\n \n /**\n * 注册 PDA 扫码回调\n * @example\n * JSBridge.onPdaScan((data, callback) => { console.log(data) })\n */\n onPdaScan: system.onPdaScan,\n \n /**\n * 退出登录\n * @example\n * await JSBridge.logout()\n */\n logout: system.logout,\n \n // ==================== 日志相关 ====================\n /**\n * 写入日志\n * @example\n * await JSBridge.writeLog({ level: LogLevel.INFO, message: '日志' })\n */\n writeLog,\n \n /**\n * 便捷日志方法\n * @example\n * await JSBridge.log.info('用户登录', 'Auth')\n * await JSBridge.log.error('请求失败', 'Network')\n */\n log\n}\n\n/**\n * 监控 API\n */\nexport const Monitor = {\n /**\n * 获取统计信息\n * @example\n * const stats = Monitor.getStats()\n */\n getStats: monitor.getStats.bind(monitor),\n \n /**\n * 获取所有记录\n * @example\n * const records = Monitor.getRecords()\n */\n getRecords: monitor.getRecords.bind(monitor),\n \n /**\n * 清空记录\n * @example\n * Monitor.clear()\n */\n clear: monitor.clear.bind(monitor),\n \n /**\n * 手动上报\n * @example\n * await Monitor.report()\n */\n report: monitor.report.bind(monitor),\n \n /**\n * 上报错误\n * @example\n * await Monitor.reportError('api', 'error message')\n */\n reportError: monitor.reportError.bind(monitor)\n}\n\n/**\n * Debug API\n */\nexport const Debug = {\n /**\n * 记录追踪日志\n * @example\n * Debug.trace('api', 'message', data)\n */\n trace: debug.trace.bind(debug),\n \n /**\n * 获取所有日志\n * @example\n * const logs = Debug.getLogs()\n */\n getLogs: debug.getLogs.bind(debug),\n \n /**\n * 清空日志\n * @example\n * Debug.clearLogs()\n */\n clearLogs: debug.clearLogs.bind(debug)\n}\n\n// ==================== 导出类型 ====================\nexport * from './types'\nexport { LogLevel } from './api/log'\n\n// ==================== 导出新支持的桥接方法 ====================\nexport { hdH5Adapter } from './h5Adapter/hdAppAdapter'\nexport { UniProxy } from './h5Adapter/UniProxy'\nexport { default as JsBridgeHandlers } from './jsBridge/JsBridgeHandlers'\n"],"names":["Monitor","Debug","JsBridge","device.scan","device.vibrate","device.getDeviceInfo","device.getNetworkType","media.chooseMedia","media.uploadFile","media.previewImage","media.getImageInfo","media.bluetoothPrint","router.setNavigationBar","router.closeWebView","router.onRoute","router.onGetRouteInfo","router.notifyRouteChange","storage.getAppInfo","storage.getStorage","storage.setStorage","storage.onRefreshStore","storage.notifyAppOnload","system.makePhoneCall","system.onPdaScan","system.logout"],"mappings":"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"}
|