@quantabit/push-sdk 1.0.0
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/LICENSE +21 -0
- package/README.md +53 -0
- package/dist/index.cjs +2142 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +2094 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +2 -0
- package/dist/styles.css.map +1 -0
- package/package.json +89 -0
- package/types/index.d.ts +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/adapters/WebPushAdapter.js","../src/adapters/WebSocketAdapter.js","../src/adapters/SSEAdapter.js","../src/adapters/FCMAdapter.js","../src/adapters/OneSignalAdapter.js","../src/adapters/JPushAdapter.js","../src/adapters/MockAdapter.js","../src/core/PushManager.js","../src/services/pushApi.js","../src/types/index.js","../src/services/webPushClient.js","../src/i18n/index.js","../src/hooks/usePush.js","../src/components/PushProvider.jsx","../src/components/PushPermissionBanner.jsx","../src/components/NotificationCenter.jsx","../src/index.js"],"sourcesContent":["/** 浏览器原生 Web Push (Notification API) */\nexport class WebPushAdapter {\n constructor(config={}) { this.name='webpush'; this._cbs={}; this.swPath=config.serviceWorkerPath||'/sw.js'; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n if(typeof window==='undefined')return;\n const perm=await Notification.requestPermission();\n if(perm!=='granted'){this._cbs.error?.(new Error('Permission denied'));return;}\n if('serviceWorker'in navigator){try{await navigator.serviceWorker.register(this.swPath);\n navigator.serviceWorker.addEventListener('message',e=>this._cbs.message?.(e.data));}catch(e){this._cbs.error?.(e);}}\n this._cbs.connect?.();\n }\n async disconnect() { this._cbs.disconnect?.(); }\n async subscribe(topic) { /* Web Push subscription via PushManager */ }\n async send(msg) { if(typeof Notification!=='undefined')new Notification(msg.title||'Notification',{body:msg.body||msg,icon:msg.icon}); }\n}\n","/** WebSocket 自研推送 — 最常用于自建 IM */\nexport class WebSocketAdapter {\n constructor(config={}) { this.name='websocket'; if(!config.url) throw new Error('[WebSocketAdapter] config.url is required'); this.url=config.url; this.protocols=config.protocols; this._ws=null; this._cbs={}; this._pingInterval=config.pingInterval||30000; this._pingTimer=null; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n return new Promise((resolve,reject)=>{\n this._ws=new WebSocket(this.url,this.protocols);\n this._ws.onopen=()=>{this._cbs.connect?.();this._startPing();resolve();};\n this._ws.onmessage=e=>{try{const d=JSON.parse(e.data);if(d.type==='pong')return;this._cbs.message?.(d);}catch{this._cbs.message?.(e.data);}};\n this._ws.onclose=()=>{this._stopPing();this._cbs.disconnect?.();};\n this._ws.onerror=e=>{this._cbs.error?.(e);reject(e);};\n });\n }\n async disconnect() { this._stopPing(); this._ws?.close(); }\n async subscribe(topic) { this.send({type:'subscribe',topic}); }\n async unsubscribe(topic) { this.send({type:'unsubscribe',topic}); }\n async send(msg) { if(this._ws?.readyState===WebSocket.OPEN)this._ws.send(typeof msg==='string'?msg:JSON.stringify(msg)); }\n _startPing() { this._pingTimer=setInterval(()=>this.send({type:'ping'}),this._pingInterval); }\n _stopPing() { clearInterval(this._pingTimer); }\n}\n","/** Server-Sent Events 推送 — 单向实时流 */\nexport class SSEAdapter {\n constructor(config={}) { this.name='sse'; this.url=config.url||'/api/events'; this._source=null; this._cbs={}; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n this._source=new EventSource(this.url);\n this._source.onopen=()=>this._cbs.connect?.();\n this._source.onmessage=e=>{try{this._cbs.message?.(JSON.parse(e.data));}catch{this._cbs.message?.(e.data);}};\n this._source.onerror=e=>{this._cbs.error?.(e);if(this._source.readyState===EventSource.CLOSED)this._cbs.disconnect?.();};\n }\n async disconnect() { this._source?.close(); this._cbs.disconnect?.(); }\n async subscribe(topic) { /* SSE 通过 URL 参数区分 topic */ }\n}\n","/** Firebase Cloud Messaging 适配器 */\nexport class FCMAdapter {\n constructor(config={}) { this.name='fcm'; this.config=config; this._cbs={}; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n try {\n // 需要用户自行引入 firebase/messaging\n if(typeof window!=='undefined'&&window.firebase) {\n const messaging=window.firebase.messaging();\n const token=await messaging.getToken({vapidKey:this.config.vapidKey});\n messaging.onMessage(payload=>this._cbs.message?.(payload));\n this._cbs.connect?.();\n return token;\n }\n this._cbs.connect?.();\n } catch(e) { this._cbs.error?.(e); }\n }\n async disconnect() { this._cbs.disconnect?.(); }\n async subscribe(topic) { /* FCM 通过服务端管理 topic */ }\n}\n","/** OneSignal 推送适配器 */\nexport class OneSignalAdapter {\n constructor(config={}) { this.name='onesignal'; this.appId=config.appId; this._cbs={}; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n if(typeof window==='undefined')return;\n try {\n // 加载 OneSignal SDK (如果未加载)\n if(!window.OneSignal) {\n const script=document.createElement('script');script.src='https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js';\n script.async=true;document.head.appendChild(script);\n await new Promise(r=>script.onload=r);\n }\n window.OneSignal=window.OneSignal||[];\n window.OneSignal.push(()=>{window.OneSignal.init({appId:this.appId});\n window.OneSignal.on('notificationDisplay',n=>this._cbs.message?.(n));\n this._cbs.connect?.();\n });\n } catch(e) { this._cbs.error?.(e); }\n }\n async disconnect() { this._cbs.disconnect?.(); }\n async subscribe() { window.OneSignal?.push(()=>window.OneSignal.showSliderPrompt()); }\n}\n","/** 极光推送 JPush Web Push 适配器 */\nexport class JPushAdapter {\n constructor(config={}) { this.name='jpush'; this.appKey=config.appKey||config.appId; this._cbs={}; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n if(typeof window==='undefined')return;\n try {\n // 极光 Web Push SDK\n if(window.JAnalyticsInterface) { window.JAnalyticsInterface.init({appkey:this.appKey}); }\n this._cbs.connect?.();\n } catch(e) { this._cbs.error?.(e); }\n }\n async disconnect() { this._cbs.disconnect?.(); }\n async subscribe(alias) { /* JPush 通过 alias/tag 订阅 */ }\n async send(msg) { /* JPush 通过服务端 REST API 发送 */ }\n}\n","/** Mock 适配器 — 用于开发和测试,模拟推送消息 */\nexport class MockAdapter {\n constructor(config={}) { this.name='mock'; this._cbs={}; this._timer=null; this.interval=config.mockInterval||5000; }\n onMessage(cb) { this._cbs.message=cb; }\n onConnect(cb) { this._cbs.connect=cb; }\n onDisconnect(cb) { this._cbs.disconnect=cb; }\n onError(cb) { this._cbs.error=cb; }\n async connect() {\n this._cbs.connect?.();\n this._timer=setInterval(()=>{\n this._cbs.message?.({id:Date.now(),type:'mock',title:'Test Notification',body:'This is a mock push message',time:new Date().toISOString()});\n },this.interval);\n }\n async disconnect() { clearInterval(this._timer); this._cbs.disconnect?.(); }\n async subscribe() {}\n async send(msg) { setTimeout(()=>this._cbs.message?.({...msg,echo:true}),100); }\n // 手动触发消息 (测试用)\n emit(msg) { this._cbs.message?.(msg); }\n}\n","/**\n * PushManager — 统一推送管理器 (隐私合规增强版)\n * 适配器模式:所有推送服务共享同一接口,可随时切换\n * \n * ⚠️ 推送权限请求和订阅需要 functional 级别隐私同意\n * 连接和消息处理不受限制(属于 essential 功能)\n */\nimport { WebPushAdapter } from '../adapters/WebPushAdapter';\nimport { WebSocketAdapter } from '../adapters/WebSocketAdapter';\nimport { SSEAdapter } from '../adapters/SSEAdapter';\nimport { FCMAdapter } from '../adapters/FCMAdapter';\nimport { OneSignalAdapter } from '../adapters/OneSignalAdapter';\nimport { JPushAdapter } from '../adapters/JPushAdapter';\nimport { MockAdapter } from '../adapters/MockAdapter';\n\n// 尝试导入 ConsentManager(可选依赖,不强制)\nlet consentManager = null;\ntry {\n const sdkConfig = require('@quantabit/sdk-config');\n consentManager = sdkConfig.consentManager;\n} catch {\n // sdk-config 不可用时静默降级\n}\n\nconst ADAPTERS = { webpush: WebPushAdapter, websocket: WebSocketAdapter, sse: SSEAdapter, fcm: FCMAdapter, onesignal: OneSignalAdapter, jpush: JPushAdapter, mock: MockAdapter };\n\nexport class PushManager {\n constructor(config = {}) {\n this.config = config;\n this.debug = config.debug || false;\n this._listeners = new Map();\n this._middleware = [];\n this._connected = false;\n this._messageQueue = [];\n this._retryCount = 0;\n this._maxRetries = config.maxRetries || 5;\n this._retryDelay = config.retryDelay || 3000;\n this._initAdapter(config);\n }\n\n _initAdapter(config) {\n if (typeof config.adapter === 'string') {\n const Cls = ADAPTERS[config.adapter];\n if (!Cls) throw new Error(`[PushManager] 未知适配器: ${config.adapter}, 可选: ${Object.keys(ADAPTERS).join(', ')}`);\n this._adapter = new Cls(config);\n } else if (config.adapter && typeof config.adapter === 'object') {\n this._adapter = config.adapter;\n } else {\n this._adapter = new MockAdapter(config);\n }\n this._adapter.onMessage?.((msg) => this._handleMessage(msg));\n this._adapter.onConnect?.(() => { this._connected = true; this._retryCount = 0; this._emit('connect'); this._flushQueue(); });\n this._adapter.onDisconnect?.(() => { this._connected = false; this._emit('disconnect'); this._autoReconnect(); });\n this._adapter.onError?.((err) => { this._emit('error', err); });\n }\n\n async connect() { try { await this._adapter.connect?.(); this._connected = true; } catch (e) { this._autoReconnect(); } return this; }\n async disconnect() { this._connected = false; await this._adapter.disconnect?.(); this._emit('disconnect'); return this; }\n async subscribe(topic = 'default') { await this._adapter.subscribe?.(topic); this._emit('subscribe', topic); return this; }\n async unsubscribe(topic = 'default') { await this._adapter.unsubscribe?.(topic); return this; }\n async send(message) { if (!this._connected) { this._messageQueue.push(message); return this; } await this._adapter.send?.(message); return this; }\n\n onMessage(cb) { return this._on('message', cb); }\n onConnect(cb) { return this._on('connect', cb); }\n onDisconnect(cb) { return this._on('disconnect', cb); }\n onError(cb) { return this._on('error', cb); }\n use(mw) { this._middleware.push(mw); return this; }\n\n /**\n * 请求推送权限 — 需要 functional 隐私同意\n * 如果用户未授予 functional 同意,返回 'consent_required'\n */\n async requestPermission() {\n // 隐私同意检查:推送权限需要 functional 级别同意\n if (consentManager && !consentManager.hasConsent('functional')) {\n if (this.debug) console.log('[PushManager] 推送权限请求被阻止(需要 functional 隐私同意)');\n return 'consent_required';\n }\n if (typeof Notification !== 'undefined') return await Notification.requestPermission();\n return 'unsupported';\n }\n\n getPermissionStatus() {\n if (consentManager && !consentManager.hasConsent('functional')) return 'consent_required';\n return typeof Notification !== 'undefined' ? Notification.permission : 'unsupported';\n }\n get isConnected() { return this._connected; }\n get adapterName() { return this._adapter?.name || 'unknown'; }\n\n _handleMessage(raw) { let msg = raw; for (const mw of this._middleware) { msg = mw(msg); if (!msg) return; } this._emit('message', msg); }\n _flushQueue() { while (this._messageQueue.length) this.send(this._messageQueue.shift()); }\n _autoReconnect() { if (this._retryCount >= this._maxRetries) { this._emit('error', new Error('Max retries')); return; } this._retryCount++; setTimeout(() => this.connect(), this._retryDelay * Math.pow(1.5, this._retryCount - 1)); }\n _on(ev, cb) { if (!this._listeners.has(ev)) this._listeners.set(ev, []); this._listeners.get(ev).push(cb); return () => { const a = this._listeners.get(ev); a?.splice(a.indexOf(cb), 1); }; }\n _emit(ev, data) { this._listeners.get(ev)?.forEach(fn => { try { fn(data); } catch (e) { } }); }\n}\n","/**\n * Push SDK - API 客户端\n * 推送通知系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 推送 API 客户端\n */\nexport class PushApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/push', config);\n }\n\n // ============ 设备管理 ============\n\n /**\n * 注册设备\n * @param {Object} deviceInfo - 设备信息\n */\n async registerDevice(deviceInfo) {\n return this.post('/devices', deviceInfo);\n }\n\n /**\n * 更新设备 Token\n * @param {string} deviceId - 设备 ID\n * @param {string} token - 推送 Token\n */\n async updateDeviceToken(deviceId, token) {\n return this.put(`/devices/${deviceId}/token`, { token });\n }\n\n /**\n * 获取已注册设备\n */\n async getMyDevices() {\n return this.get('/devices/my');\n }\n\n /**\n * 注销设备\n * @param {string} deviceId - 设备 ID\n */\n async unregisterDevice(deviceId) {\n return this.delete(`/devices/${deviceId}`);\n }\n\n // ============ 推送设置 ============\n\n /**\n * 获取推送偏好\n */\n async getPreferences() {\n return this.get('/preferences');\n }\n\n /**\n * 更新推送偏好\n * @param {Object} preferences - 偏好设置\n */\n async updatePreferences(preferences) {\n return this.put('/preferences', preferences);\n }\n\n /**\n * 获取免打扰设置\n */\n async getQuietHours() {\n return this.get('/quiet-hours');\n }\n\n /**\n * 设置免打扰时段\n * @param {Object} settings - 免打扰设置\n */\n async setQuietHours(settings) {\n return this.put('/quiet-hours', settings);\n }\n\n // ============ 推送话题 ============\n\n /**\n * 订阅话题\n * @param {string} topic - 话题名称\n */\n async subscribeTopic(topic) {\n return this.post(`/topics/${topic}/subscribe`);\n }\n\n /**\n * 取消订阅话题\n * @param {string} topic - 话题名称\n */\n async unsubscribeTopic(topic) {\n return this.post(`/topics/${topic}/unsubscribe`);\n }\n\n /**\n * 获取已订阅话题\n */\n async getSubscribedTopics() {\n return this.get('/topics/subscribed');\n }\n\n /**\n * 获取可用话题\n */\n async getAvailableTopics() {\n return this.get('/topics');\n }\n\n // ============ 推送历史 ============\n\n /**\n * 获取推送历史\n * @param {Object} params - 查询参数\n */\n async getHistory(params = {}) {\n return this.get('/history', params);\n }\n\n /**\n * 标记已读\n * @param {string} pushId - 推送 ID\n */\n async markAsRead(pushId) {\n return this.post(`/history/${pushId}/read`);\n }\n\n /**\n * 批量标记已读\n * @param {string[]} pushIds - 推送 ID 列表\n */\n async batchMarkAsRead(pushIds) {\n return this.post('/history/batch-read', { push_ids: pushIds });\n }\n\n // ============ 管理员操作 ============\n\n /**\n * 发送推送(管理员)\n * @param {Object} data - 推送数据\n */\n async send(data) {\n return this.post('/send', data);\n }\n\n /**\n * 发送给指定用户(管理员)\n * @param {string[]} userIds - 用户 ID 列表\n * @param {Object} message - 消息内容\n */\n async sendToUsers(userIds, message) {\n return this.post('/send/users', { user_ids: userIds, ...message });\n }\n\n /**\n * 发送给话题订阅者(管理员)\n * @param {string} topic - 话题\n * @param {Object} message - 消息内容\n */\n async sendToTopic(topic, message) {\n return this.post('/send/topic', { topic, ...message });\n }\n\n /**\n * 全量推送(管理员)\n * @param {Object} message - 消息内容\n */\n async broadcast(message) {\n return this.post('/send/broadcast', message);\n }\n\n /**\n * 定时推送(管理员)\n * @param {Object} data - 推送数据\n * @param {string} scheduleAt - 发送时间\n */\n async schedule(data, scheduleAt) {\n return this.post('/schedule', { ...data, schedule_at: scheduleAt });\n }\n\n /**\n * 取消定时推送(管理员)\n * @param {string} scheduleId - 定时任务 ID\n */\n async cancelSchedule(scheduleId) {\n return this.delete(`/schedule/${scheduleId}`);\n }\n\n // ============ 统计 ============\n\n /**\n * 获取推送统计(管理员)\n * @param {Object} params - 统计参数\n */\n async getStats(params = {}) {\n return this.get('/stats', params);\n }\n\n /**\n * 获取送达率统计(管理员)\n * @param {Object} params - 统计参数\n */\n async getDeliveryStats(params = {}) {\n return this.get('/stats/delivery', params);\n }\n\n // ============ 隐私合规 ============\n\n /**\n * 清除所有推送数据 — GDPR 第17条\n * 注销所有设备 + 清除订阅 + 清除历史\n */\n async clearAllUserData() {\n const results = {};\n try {\n const devices = await this.getMyDevices();\n for (const d of (devices?.data || [])) {\n await this.unregisterDevice(d.id).catch(() => {});\n }\n results.devices = 'cleared';\n } catch (e) { results.deviceError = e.message; }\n\n try {\n const topics = await this.getSubscribedTopics();\n for (const t of (topics?.data || [])) {\n await this.unsubscribeTopic(t.topic || t.name).catch(() => {});\n }\n results.topics = 'cleared';\n } catch (e) { results.topicError = e.message; }\n\n return { cleared: true, timestamp: new Date().toISOString(), ...results };\n }\n\n /**\n * 导出推送数据 — GDPR 第20条\n */\n async exportPushData() {\n try {\n const [prefs, topics, history] = await Promise.allSettled([\n this.getPreferences(),\n this.getSubscribedTopics(),\n this.getHistory({ page_size: 50 }),\n ]);\n return {\n exportDate: new Date().toISOString(),\n format: 'QBit Push Export (GDPR Art. 20)',\n preferences: prefs.status === 'fulfilled' ? prefs.value?.data : null,\n subscribedTopics: topics.status === 'fulfilled' ? topics.value?.data : [],\n recentHistory: history.status === 'fulfilled' ? history.value?.data?.items : [],\n };\n } catch (e) {\n return { error: e.message, exportDate: new Date().toISOString() };\n }\n }\n\n /**\n * 获取隐私数据声明\n */\n getDataDisclosure() {\n return {\n sdk: '@quantabit/push-sdk',\n privacyLevel: 'functional',\n consentRequired: true,\n collected: [\n { type: 'device_token', description: 'Push notification token (APNs/FCM)', retention: 'Until unregistered', encrypted: true },\n { type: 'device_info', description: 'OS, version, app version', retention: 'Until unregistered' },\n { type: 'push_preferences', description: 'Notification preferences and quiet hours', retention: 'Until account deletion' },\n { type: 'push_history', description: 'Delivered notification records', retention: '30 days' },\n { type: 'topic_subscriptions', description: 'Push topic subscriptions', retention: 'Until unsubscribed' },\n ],\n gdprCapabilities: ['delete', 'export'],\n note: 'Push notifications require explicit user consent (device permission). Users can revoke at OS level.',\n };\n }\n}\n\n// 创建默认实例\nexport const pushApi = new PushApiClient();\n\n\n\nexport default pushApi;\n","/**\n * Push SDK - 类型定义\n */\n\n// 推送渠道\nexport const PushChannel = {\n WEB_PUSH: 'web_push',\n FCM: 'fcm', // Firebase Cloud Messaging\n APNS: 'apns', // Apple Push Notification\n EMAIL: 'email',\n SMS: 'sms',\n WECHAT: 'wechat',\n IN_APP: 'in_app',\n};\n\n// 推送状态\nexport const PushStatus = {\n PENDING: 'pending',\n SENT: 'sent',\n DELIVERED: 'delivered',\n FAILED: 'failed',\n CLICKED: 'clicked',\n DISMISSED: 'dismissed',\n};\n\n// 推送优先级\nexport const PushPriority = {\n LOW: 'low',\n NORMAL: 'normal',\n HIGH: 'high',\n};\n\n// 订阅状态\nexport const SubscriptionStatus = {\n ACTIVE: 'active',\n EXPIRED: 'expired',\n UNSUBSCRIBED: 'unsubscribed',\n DENIED: 'denied',\n};\n\n// 权限状态\nexport const PermissionStatus = {\n GRANTED: 'granted',\n DENIED: 'denied',\n DEFAULT: 'default',\n PROMPT: 'prompt',\n};\n\nexport const NotificationStatus = PushStatus;\n\nexport const NotificationType = {\n SYSTEM: 'system',\n ANNOUNCEMENT: 'announcement',\n TRANSACTION: 'transaction',\n ACTIVITY: 'activity',\n REMINDER: 'reminder',\n MARKETING: 'marketing',\n};\n\nexport const NotificationChannel = PushChannel;\n\nexport default {\n PushChannel,\n PushStatus,\n PushPriority,\n SubscriptionStatus,\n PermissionStatus,\n NotificationStatus,\n NotificationType,\n NotificationChannel,\n};\n","/**\n * Push SDK - Web Push 客户端\n * 使用 BaseApiClient 基类,继承统一的配置、Token 管理和错误处理\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\nimport { PermissionStatus, SubscriptionStatus } from '../types';\n\n/**\n * Web Push 客户端\n */\nexport class WebPushClientClass extends BaseApiClient {\n constructor(config = {}) {\n super('/push', config);\n this.vapidPublicKey = config.vapidPublicKey || '';\n this.onMessage = config.onMessage;\n \n this.subscription = null;\n this.registration = null;\n this.permission = PermissionStatus.DEFAULT;\n }\n\n /**\n * 初始化\n */\n async init(config = {}) {\n if (config.vapidPublicKey) this.vapidPublicKey = config.vapidPublicKey;\n\n if (!this.isSupported()) {\n console.warn('Web Push is not supported');\n return false;\n }\n\n // 检查权限状态\n this.permission = Notification.permission;\n\n // 注册 Service Worker\n try {\n this.registration = await navigator.serviceWorker.register('/sw.js');\n console.log('Service Worker registered');\n } catch (err) {\n console.error('Service Worker registration failed:', err);\n return false;\n }\n\n // 检查现有订阅\n this.subscription = await this.registration.pushManager.getSubscription();\n \n // 监听消息\n this.setupMessageListener();\n\n return true;\n }\n\n /**\n * 检查是否支持 Web Push\n */\n isSupported() {\n return (\n typeof window !== 'undefined' &&\n 'serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window\n );\n }\n\n /**\n * 请求权限\n */\n async requestPermission() {\n if (!this.isSupported()) {\n return PermissionStatus.DENIED;\n }\n\n try {\n const permission = await Notification.requestPermission();\n this.permission = permission;\n \n if (permission === 'granted') {\n await this.subscribe();\n }\n \n return permission;\n } catch (err) {\n console.error('Permission request failed:', err);\n this.onError?.(err);\n return PermissionStatus.DENIED;\n }\n }\n\n /**\n * 订阅推送\n */\n async subscribe() {\n if (!this.registration) {\n await this.init();\n }\n\n if (!this.vapidPublicKey) {\n throw new Error('VAPID public key not configured');\n }\n\n try {\n this.subscription = await this.registration.pushManager.subscribe({\n userVisibleOnly: true,\n applicationServerKey: this.urlBase64ToUint8Array(this.vapidPublicKey),\n });\n\n // 将订阅信息发送到服务器\n await this.saveSubscription(this.subscription);\n\n console.log('Push subscription successful');\n return this.subscription;\n } catch (err) {\n console.error('Push subscription failed:', err);\n this.onError?.(err);\n throw err;\n }\n }\n\n /**\n * 取消订阅\n */\n async unsubscribe() {\n if (!this.subscription) {\n return;\n }\n\n try {\n await this.subscription.unsubscribe();\n await this.removeSubscription();\n this.subscription = null;\n console.log('Push unsubscribed');\n } catch (err) {\n console.error('Unsubscribe failed:', err);\n this.onError?.(err);\n }\n }\n\n /**\n * 保存订阅到服务器\n */\n async saveSubscription(subscription) {\n return this.post('/subscriptions', {\n subscription: subscription.toJSON(),\n channel: 'web_push',\n });\n }\n\n /**\n * 从服务器移除订阅\n */\n async removeSubscription() {\n return this.delete('/subscriptions/current');\n }\n\n /**\n * 监听消息\n */\n setupMessageListener() {\n if (!('serviceWorker' in navigator)) return;\n\n navigator.serviceWorker.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'PUSH_RECEIVED') {\n this.onMessage?.(event.data.payload);\n }\n });\n }\n\n /**\n * 获取订阅状态\n */\n getSubscriptionStatus() {\n if (!this.isSupported()) {\n return SubscriptionStatus.DENIED;\n }\n if (this.permission === 'denied') {\n return SubscriptionStatus.DENIED;\n }\n if (this.subscription) {\n return SubscriptionStatus.ACTIVE;\n }\n return SubscriptionStatus.UNSUBSCRIBED;\n }\n\n /**\n * 获取权限状态\n */\n getPermissionStatus() {\n if (!this.isSupported()) {\n return PermissionStatus.DENIED;\n }\n return Notification.permission;\n }\n\n /**\n * 显示本地通知\n */\n async showNotification(title, options = {}) {\n if (this.permission !== 'granted') {\n return;\n }\n\n if (this.registration) {\n return this.registration.showNotification(title, {\n icon: options.icon || '/icon-192.png',\n badge: options.badge || '/badge-72.png',\n ...options,\n });\n }\n\n // 降级到 Notification API\n return new Notification(title, options);\n }\n\n /**\n * Base64 转 Uint8Array\n */\n urlBase64ToUint8Array(base64String) {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/');\n\n const rawData = atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n\n return outputArray;\n }\n}\n\nexport const webPushClient = new WebPushClientClass();\nexport const WebPushClient = WebPushClientClass;\n\nexport default webPushClient;\n","/**\n * Push SDK - 国际化\n * 消息推送多语言支持\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n // 推送\n push: '推送',\n notification: '通知',\n notifications: '通知',\n pushNotification: '推送通知',\n \n // 类型\n type: '类型',\n system: '系统通知',\n marketing: '营销推送',\n transactional: '交易通知',\n social: '社交通知',\n reminder: '提醒',\n alert: '警报',\n \n // 渠道\n channel: '渠道',\n webPush: 'Web推送',\n appPush: 'App推送',\n email: '邮件',\n sms: '短信',\n inApp: '站内信',\n \n // 状态\n status: '状态',\n pending: '待发送',\n sent: '已发送',\n delivered: '已送达',\n read: '已读',\n clicked: '已点击',\n failed: '发送失败',\n \n // 权限\n permission: '权限',\n granted: '已授权',\n denied: '已拒绝',\n default: '未设置',\n requestPermission: '开启通知权限',\n permissionRequired: '需要通知权限',\n \n // 设置\n settings: '设置',\n enabled: '已开启',\n disabled: '已关闭',\n enablePush: '开启推送',\n disablePush: '关闭推送',\n \n // 偏好\n preferences: '偏好设置',\n muteAll: '全部静音',\n muteDuration: '静音时长',\n quietHours: '免打扰时段',\n \n // 频率\n frequency: '频率',\n realtime: '实时',\n daily: '每日摘要',\n weekly: '每周摘要',\n \n // 操作\n send: '发送',\n schedule: '定时发送',\n cancel: '取消',\n resend: '重试',\n markAsRead: '标记已读',\n markAllRead: '全部已读',\n delete: '删除',\n clear: '清空',\n \n // 时间\n now: '刚刚',\n minutesAgo: '{n}分钟前',\n hoursAgo: '{n}小时前',\n yesterday: '昨天',\n daysAgo: '{n}天前',\n \n // 状态\n loading: '加载中...',\n noNotifications: '暂无通知',\n error: '加载失败',\n \n // 标题\n unread: '未读',\n all: '全部',\n newNotification: '新通知',\n },\n en: {\n push: 'Push',\n notification: 'Notification',\n notifications: 'Notifications',\n pushNotification: 'Push Notification',\n \n type: 'Type',\n system: 'System',\n marketing: 'Marketing',\n transactional: 'Transactional',\n social: 'Social',\n reminder: 'Reminder',\n alert: 'Alert',\n \n channel: 'Channel',\n webPush: 'Web Push',\n appPush: 'App Push',\n email: 'Email',\n sms: 'SMS',\n inApp: 'In-App',\n \n status: 'Status',\n pending: 'Pending',\n sent: 'Sent',\n delivered: 'Delivered',\n read: 'Read',\n clicked: 'Clicked',\n failed: 'Failed',\n \n permission: 'Permission',\n granted: 'Granted',\n denied: 'Denied',\n default: 'Default',\n requestPermission: 'Enable Notifications',\n permissionRequired: 'Permission Required',\n \n settings: 'Settings',\n enabled: 'Enabled',\n disabled: 'Disabled',\n enablePush: 'Enable Push',\n disablePush: 'Disable Push',\n \n preferences: 'Preferences',\n muteAll: 'Mute All',\n muteDuration: 'Mute Duration',\n quietHours: 'Quiet Hours',\n \n frequency: 'Frequency',\n realtime: 'Realtime',\n daily: 'Daily Digest',\n weekly: 'Weekly Digest',\n \n send: 'Send',\n schedule: 'Schedule',\n cancel: 'Cancel',\n resend: 'Resend',\n markAsRead: 'Mark as Read',\n markAllRead: 'Mark All Read',\n delete: 'Delete',\n clear: 'Clear',\n \n now: 'Just now',\n minutesAgo: '{n}m ago',\n hoursAgo: '{n}h ago',\n yesterday: 'Yesterday',\n daysAgo: '{n}d ago',\n \n loading: 'Loading...',\n noNotifications: 'No Notifications',\n error: 'Error',\n \n unread: 'Unread',\n all: 'All',\n newNotification: 'New Notification',\n },\n ja: {\n push: 'プッシュ',\n notification: '通知',\n notifications: '通知',\n pushNotification: 'プッシュ通知',\n \n type: 'タイプ',\n system: 'システム',\n marketing: 'マーケティング',\n transactional: '取引',\n social: 'ソーシャル',\n reminder: 'リマインダー',\n alert: 'アラート',\n \n channel: 'チャネル',\n webPush: 'Webプッシュ',\n appPush: 'アプリプッシュ',\n email: 'メール',\n sms: 'SMS',\n inApp: 'アプリ内',\n \n status: 'ステータス',\n pending: '待機中',\n sent: '送信済み',\n delivered: '配信済み',\n read: '既読',\n clicked: 'クリック済み',\n failed: '失敗',\n \n permission: '権限',\n granted: '許可済み',\n denied: '拒否',\n default: '未設定',\n requestPermission: '通知を許可',\n permissionRequired: '権限が必要です',\n \n settings: '設定',\n enabled: 'オン',\n disabled: 'オフ',\n enablePush: 'プッシュを有効化',\n disablePush: 'プッシュを無効化',\n \n preferences: '通知設定',\n muteAll: 'すべてミュート',\n muteDuration: 'ミュート期間',\n quietHours: 'おやすみ時間',\n \n frequency: '頻度',\n realtime: 'リアルタイム',\n daily: '日次まとめ',\n weekly: '週次まとめ',\n \n send: '送信',\n schedule: '予約送信',\n cancel: 'キャンセル',\n resend: '再送信',\n markAsRead: '既読にする',\n markAllRead: 'すべて既読',\n delete: '削除',\n clear: 'クリア',\n \n now: 'たった今',\n minutesAgo: '{n}分前',\n hoursAgo: '{n}時間前',\n yesterday: '昨日',\n daysAgo: '{n}日前',\n \n loading: '読み込み中...',\n noNotifications: '通知はありません',\n error: 'エラー',\n \n unread: '未読',\n all: 'すべて',\n newNotification: '新しい通知',\n },\n ko: {\n push: '푸시',\n notification: '알림',\n notifications: '알림',\n pushNotification: '푸시 알림',\n \n type: '유형',\n system: '시스템',\n marketing: '마케팅',\n transactional: '거래',\n social: '소셜',\n reminder: '리마인더',\n alert: '경고',\n \n channel: '채널',\n webPush: '웹 푸시',\n appPush: '앱 푸시',\n email: '이메일',\n sms: 'SMS',\n inApp: '인앱',\n \n status: '상태',\n pending: '대기 중',\n sent: '전송됨',\n delivered: '전달됨',\n read: '읽음',\n clicked: '클릭됨',\n failed: '실패',\n \n permission: '권한',\n granted: '허용됨',\n denied: '거부됨',\n default: '미설정',\n requestPermission: '알림 허용',\n permissionRequired: '권한이 필요합니다',\n \n settings: '설정',\n enabled: '사용',\n disabled: '사용 안 함',\n enablePush: '푸시 사용',\n disablePush: '푸시 사용 안 함',\n \n preferences: '알림 설정',\n muteAll: '모두 음소거',\n muteDuration: '음소거 기간',\n quietHours: '방해 금지 시간',\n \n frequency: '빈도',\n realtime: '실시간',\n daily: '일일 다이제스트',\n weekly: '주간 다이제스트',\n \n send: '보내기',\n schedule: '예약',\n cancel: '취소',\n resend: '재전송',\n markAsRead: '읽음으로 표시',\n markAllRead: '모두 읽음',\n delete: '삭제',\n clear: '비우기',\n \n now: '방금',\n minutesAgo: '{n}분 전',\n hoursAgo: '{n}시간 전',\n yesterday: '어제',\n daysAgo: '{n}일 전',\n \n loading: '로딩 중...',\n noNotifications: '알림 없음',\n error: '오류',\n \n unread: '읽지 않음',\n all: '전체',\n newNotification: '새 알림',\n },\n};\n\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) {\n if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang;\n}\n\nexport function getLanguage() {\n return currentLanguage;\n}\n\nexport function t(key, params = {}) {\n let text = (messages[currentLanguage] || messages.en)[key] || key;\n Object.keys(params).forEach(k => {\n text = text.replace(new RegExp(`\\\\{${k}\\\\}`, 'g'), params[k]);\n });\n return text;\n}\n\nexport default { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t };\n","import{useState,useEffect,useCallback,useRef}from'react';\nimport{PushManager}from'../core/PushManager';\nimport { pushApi } from '../services/pushApi';\n\nexport function usePush(config={}){\n const mgr=useRef(null);\n const[connected,setConnected]=useState(false);\n const[messages,setMessages]=useState([]);\n const[lastMessage,setLastMessage]=useState(null);\n const[permission,setPermission]=useState('default');\n\n useEffect(()=>{\n mgr.current=new PushManager(config);\n mgr.current.onConnect(()=>setConnected(true));\n mgr.current.onDisconnect(()=>setConnected(false));\n mgr.current.onMessage(msg=>{setLastMessage(msg);setMessages(prev=>[msg,...prev].slice(0,100));});\n mgr.current.connect();\n setPermission(mgr.current.getPermissionStatus());\n return()=>mgr.current?.disconnect();\n },[]);\n\n const send=useCallback(msg=>mgr.current?.send(msg),[]);\n const subscribe=useCallback(topic=>mgr.current?.subscribe(topic),[]);\n const requestPermission=useCallback(async()=>{const p=await mgr.current?.requestPermission();setPermission(p);return p;},[]);\n const clearMessages=useCallback(()=>setMessages([]),[]);\n\n return{connected,messages,lastMessage,send,subscribe,requestPermission,permission,clearMessages,manager:mgr.current};\n}\n\nexport function usePushPermission() {\n const supported = typeof window !== 'undefined' && 'Notification' in window;\n const [permission, setPermission] = useState(\n supported ? window.Notification.permission : 'denied'\n );\n\n const requestPermission = useCallback(async () => {\n if (!supported) return 'denied';\n const result = await window.Notification.requestPermission();\n setPermission(result);\n return result;\n }, [supported]);\n\n return { supported, permission, requestPermission };\n}\n\nexport function useNotifications(options = {}) {\n const [notifications, setNotifications] = useState([]);\n const [unreadCount, setUnreadCount] = useState(0);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const refresh = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const [historyResult, statsResult] = await Promise.allSettled([\n pushApi.getHistory(options),\n pushApi.getStats({ scope: 'unread' }),\n ]);\n const history = historyResult.status === 'fulfilled'\n ? historyResult.value?.data?.items || historyResult.value?.data || []\n : [];\n setNotifications(Array.isArray(history) ? history : []);\n if (statsResult.status === 'fulfilled') {\n setUnreadCount(statsResult.value?.data?.unread_count || statsResult.value?.data?.unread || 0);\n }\n return historyResult.status === 'fulfilled' ? historyResult.value : null;\n } catch (err) {\n setError(err.message);\n return null;\n } finally {\n setLoading(false);\n }\n }, [options.filter, options.limit, options.page]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const markAsRead = useCallback(async (pushId) => {\n const result = await pushApi.markAsRead(pushId);\n await refresh();\n return result;\n }, [refresh]);\n\n const markAllAsRead = useCallback(async () => {\n const ids = notifications.map((item) => item.id).filter(Boolean);\n if (ids.length === 0) return null;\n const result = await pushApi.batchMarkAsRead(ids);\n await refresh();\n return result;\n }, [notifications, refresh]);\n\n const deleteNotification = useCallback(async () => {\n // Push history deletion is not exposed yet; keep the hook API stable.\n await refresh();\n return null;\n }, [refresh]);\n\n const clearAll = useCallback(() => {\n setNotifications([]);\n setUnreadCount(0);\n }, []);\n\n return {\n notifications,\n unreadCount,\n loading,\n error,\n refresh,\n markAsRead,\n markAllAsRead,\n deleteNotification,\n clearAll,\n };\n}\n\nexport function useRealtimeNotifications(config = {}) {\n return usePush(config);\n}\n\nexport function useNotificationPreferences() {\n const [preferences, setPreferences] = useState({});\n const [loading, setLoading] = useState(false);\n const [saving, setSaving] = useState(false);\n const [error, setError] = useState(null);\n\n const refresh = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await pushApi.getPreferences();\n setPreferences(result.data || {});\n return result;\n } catch (err) {\n setError(err.message);\n return null;\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const updatePreferences = useCallback(async (nextPreferences) => {\n setSaving(true);\n try {\n const result = await pushApi.updatePreferences(nextPreferences);\n setPreferences(nextPreferences);\n return result;\n } finally {\n setSaving(false);\n }\n }, []);\n\n const toggleChannel = useCallback((channel) => {\n const next = {\n ...preferences,\n channels: {\n ...(preferences.channels || {}),\n [channel]: !preferences.channels?.[channel],\n },\n };\n return updatePreferences(next);\n }, [preferences, updatePreferences]);\n\n const toggleType = useCallback((type) => {\n const next = {\n ...preferences,\n types: {\n ...(preferences.types || {}),\n [type]: !preferences.types?.[type],\n },\n };\n return updatePreferences(next);\n }, [preferences, updatePreferences]);\n\n return { preferences, loading, saving, error, refresh, updatePreferences, toggleChannel, toggleType };\n}\n\nexport function usePushSubscription() {\n const [topics, setTopics] = useState([]);\n\n const refresh = useCallback(async () => {\n const result = await pushApi.getSubscribedTopics();\n setTopics(result.data || []);\n return result;\n }, []);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const subscribe = useCallback(async (topic) => {\n const result = await pushApi.subscribeTopic(topic);\n await refresh();\n return result;\n }, [refresh]);\n\n const unsubscribe = useCallback(async (topic) => {\n const result = await pushApi.unsubscribeTopic(topic);\n await refresh();\n return result;\n }, [refresh]);\n\n return { topics, refresh, subscribe, unsubscribe };\n}\n\nexport function useSendNotification() {\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n const send = useCallback(async (message) => {\n setLoading(true);\n setError(null);\n try {\n return await pushApi.send(message);\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n const schedule = useCallback(async (message, scheduleAt) => {\n setLoading(true);\n setError(null);\n try {\n return await pushApi.schedule(message, scheduleAt);\n } catch (err) {\n setError(err.message);\n throw err;\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { send, schedule, loading, error };\n}\n","import React,{createContext,useContext}from'react';\nimport{usePush}from'../hooks/usePush';\nconst PushContext=createContext(null);\nexport function PushProvider({config={},children}){\n const push=usePush(config);\n return<PushContext.Provider value={push}>{children}</PushContext.Provider>;\n}\nexport function usePushContext(){return useContext(PushContext);}\n","import React from'react';\nexport function PushPermissionBanner({onAllow,onDismiss,title='Enable Notifications',message='Stay updated with real-time push notifications',className=''}){\n return(<div className={`qps-banner ${className}`} style={{display:'flex',alignItems:'center',gap:12,padding:'12px 16px',\n background:'linear-gradient(135deg,#eff6ff,#eef2ff)',borderRadius:12,border:'1px solid #bfdbfe'}}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#3b82f6\" strokeWidth=\"2\"><path d=\"M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9\"/><path d=\"M13.73 21a2 2 0 01-3.46 0\"/></svg>\n <div style={{flex:1}}><div style={{fontSize:14,fontWeight:600,color:'#1e40af'}}>{title}</div>\n <div style={{fontSize:12,color:'#3b82f6',marginTop:2}}>{message}</div></div>\n <button onClick={onAllow} style={{padding:'6px 16px',borderRadius:8,border:'none',background:'#3b82f6',color:'#fff',cursor:'pointer',fontSize:13,fontWeight:600}}>Allow</button>\n {onDismiss&&<button onClick={onDismiss} style={{border:'none',background:'none',cursor:'pointer',color:'#93c5fd',fontSize:16}}>✕</button>}\n </div>);\n}\n","/**\n * Push SDK - React 组件\n * 消息推送可视化组件\n */\n\nimport React, { useState, useCallback } from 'react';\nimport {\n usePushPermission,\n useNotifications,\n useNotificationPreferences,\n} from '../hooks/usePush';\nimport { t } from '../i18n';\nimport './NotificationCenter.css';\n\n/**\n * 通知中心\n */\nexport function NotificationCenter({ onClose }) {\n const [filter, setFilter] = useState('all');\n const {\n notifications,\n unreadCount,\n loading,\n markAsRead,\n markAllAsRead,\n deleteNotification,\n clearAll,\n } = useNotifications({ filter });\n\n const filteredNotifications = filter === 'unread'\n ? notifications.filter(n => !n.read)\n : notifications;\n\n return (\n <div className=\"eco-push-center\">\n <div className=\"eco-push-header\">\n <h3>{t('notifications')}</h3>\n {unreadCount > 0 && (\n <span className=\"eco-push-badge\">{unreadCount}</span>\n )}\n {onClose && (\n <button className=\"eco-push-close\" onClick={onClose}>×</button>\n )}\n </div>\n\n <div className=\"eco-push-tabs\">\n <button\n className={`eco-push-tab ${filter === 'all' ? 'active' : ''}`}\n onClick={() => setFilter('all')}\n >\n {t('all')}\n </button>\n <button\n className={`eco-push-tab ${filter === 'unread' ? 'active' : ''}`}\n onClick={() => setFilter('unread')}\n >\n {t('unread')} {unreadCount > 0 && `(${unreadCount})`}\n </button>\n </div>\n\n <div className=\"eco-push-actions\">\n <button className=\"eco-push-action-btn\" onClick={markAllAsRead}>\n {t('markAllRead')}\n </button>\n <button className=\"eco-push-action-btn\" onClick={clearAll}>\n {t('clear')}\n </button>\n </div>\n\n <div className=\"eco-push-list\">\n {loading ? (\n <div className=\"eco-push-loading\">\n <div className=\"eco-push-spinner\" />\n </div>\n ) : filteredNotifications.length === 0 ? (\n <div className=\"eco-push-empty\">\n <span className=\"eco-push-empty-icon\">🔔</span>\n <span>{t('noNotifications')}</span>\n </div>\n ) : (\n filteredNotifications.map((notification) => (\n <NotificationItem\n key={notification.id}\n notification={notification}\n onRead={() => markAsRead(notification.id)}\n onDelete={() => deleteNotification(notification.id)}\n />\n ))\n )}\n </div>\n </div>\n );\n}\n\n/**\n * 单个通知项\n */\nexport function NotificationItem({ notification, onRead, onDelete }) {\n const handleClick = () => {\n if (!notification.read) {\n onRead?.();\n }\n if (notification.link) {\n window.location.href = notification.link;\n }\n };\n\n return (\n <div\n className={`eco-push-item ${notification.read ? '' : 'unread'}`}\n onClick={handleClick}\n >\n <div className=\"eco-push-item-icon\">\n {getTypeIcon(notification.type)}\n </div>\n <div className=\"eco-push-item-content\">\n <div className=\"eco-push-item-header\">\n <span className=\"eco-push-item-title\">{notification.title}</span>\n <span className=\"eco-push-item-time\">{formatTime(notification.createdAt)}</span>\n </div>\n <p className=\"eco-push-item-body\">{notification.body}</p>\n {notification.image && (\n <img\n className=\"eco-push-item-image\"\n src={notification.image}\n alt=\"\"\n />\n )}\n </div>\n <button\n className=\"eco-push-item-delete\"\n onClick={(e) => {\n e.stopPropagation();\n onDelete?.();\n }}\n >\n ×\n </button>\n </div>\n );\n}\n\n/**\n * 通知铃铛按钮\n */\nexport function NotificationBell({ onClick }) {\n const { unreadCount } = useNotifications({ limit: 0 });\n\n return (\n <button className=\"eco-push-bell\" onClick={onClick}>\n <span className=\"eco-push-bell-icon\">🔔</span>\n {unreadCount > 0 && (\n <span className=\"eco-push-bell-badge\">\n {unreadCount > 99 ? '99+' : unreadCount}\n </span>\n )}\n </button>\n );\n}\n\n/**\n * 推送权限请求\n */\nexport function PushPermissionPrompt({ onGranted, onDenied }) {\n const { permission, supported, requestPermission } = usePushPermission();\n const [requesting, setRequesting] = useState(false);\n\n if (!supported) return null;\n if (permission === 'granted') return null;\n if (permission === 'denied') {\n return (\n <div className=\"eco-push-permission eco-push-permission-denied\">\n <span className=\"eco-push-permission-icon\">🔕</span>\n <p>{t('permissionRequired')}</p>\n </div>\n );\n }\n\n const handleRequest = async () => {\n setRequesting(true);\n const result = await requestPermission();\n setRequesting(false);\n \n if (result === 'granted') {\n onGranted?.();\n } else {\n onDenied?.();\n }\n };\n\n return (\n <div className=\"eco-push-permission\">\n <span className=\"eco-push-permission-icon\">🔔</span>\n <div className=\"eco-push-permission-content\">\n <h4>{t('requestPermission')}</h4>\n <p>接收重要的通知和更新</p>\n </div>\n <button\n className=\"eco-push-permission-btn\"\n onClick={handleRequest}\n disabled={requesting}\n >\n {requesting ? '...' : t('enablePush')}\n </button>\n </div>\n );\n}\n\n/**\n * 通知设置面板\n */\nexport function NotificationSettings() {\n const {\n preferences,\n loading,\n saving,\n toggleChannel,\n toggleType,\n updatePreferences,\n } = useNotificationPreferences();\n\n if (loading) {\n return (\n <div className=\"eco-push-settings eco-push-loading\">\n <div className=\"eco-push-spinner\" />\n </div>\n );\n }\n\n return (\n <div className=\"eco-push-settings\">\n <h3>{t('preferences')}</h3>\n\n <div className=\"eco-push-settings-section\">\n <h4>{t('channel')}</h4>\n <div className=\"eco-push-settings-list\">\n {Object.entries(preferences.channels || {}).map(([channel, enabled]) => (\n <ToggleItem\n key={channel}\n label={t(channel)}\n checked={enabled}\n onChange={() => toggleChannel(channel)}\n disabled={saving}\n />\n ))}\n </div>\n </div>\n\n <div className=\"eco-push-settings-section\">\n <h4>{t('type')}</h4>\n <div className=\"eco-push-settings-list\">\n {Object.entries(preferences.types || {}).map(([type, enabled]) => (\n <ToggleItem\n key={type}\n label={t(type)}\n checked={enabled}\n onChange={() => toggleType(type)}\n disabled={saving}\n />\n ))}\n </div>\n </div>\n\n <div className=\"eco-push-settings-section\">\n <h4>{t('quietHours')}</h4>\n <ToggleItem\n label={t('enabled')}\n checked={preferences.quietHours?.enabled}\n onChange={() => updatePreferences({\n quietHours: {\n ...preferences.quietHours,\n enabled: !preferences.quietHours?.enabled,\n },\n })}\n disabled={saving}\n />\n {preferences.quietHours?.enabled && (\n <div className=\"eco-push-quiet-hours\">\n <input\n type=\"time\"\n value={preferences.quietHours?.start || '22:00'}\n onChange={(e) => updatePreferences({\n quietHours: {\n ...preferences.quietHours,\n start: e.target.value,\n },\n })}\n />\n <span>-</span>\n <input\n type=\"time\"\n value={preferences.quietHours?.end || '08:00'}\n onChange={(e) => updatePreferences({\n quietHours: {\n ...preferences.quietHours,\n end: e.target.value,\n },\n })}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n\n/**\n * 开关项\n */\nfunction ToggleItem({ label, checked, onChange, disabled }) {\n return (\n <div className=\"eco-push-toggle-item\">\n <span>{label}</span>\n <button\n className={`eco-push-toggle ${checked ? 'active' : ''}`}\n onClick={onChange}\n disabled={disabled}\n >\n <span className=\"eco-push-toggle-handle\" />\n </button>\n </div>\n );\n}\n\n/**\n * Toast通知\n */\nexport function NotificationToast({ notification, onClose, duration = 5000 }) {\n React.useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(onClose, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n return (\n <div className=\"eco-push-toast\">\n <div className=\"eco-push-toast-icon\">\n {getTypeIcon(notification.type)}\n </div>\n <div className=\"eco-push-toast-content\">\n <div className=\"eco-push-toast-title\">{notification.title}</div>\n <div className=\"eco-push-toast-body\">{notification.body}</div>\n </div>\n <button className=\"eco-push-toast-close\" onClick={onClose}>×</button>\n </div>\n );\n}\n\n// 工具函数\nfunction getTypeIcon(type) {\n const icons = {\n system: '⚙️',\n marketing: '📢',\n transactional: '💳',\n social: '👥',\n reminder: '⏰',\n alert: '⚠️',\n };\n return icons[type] || '🔔';\n}\n\nfunction formatTime(timestamp) {\n const now = Date.now();\n const diff = now - new Date(timestamp).getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n\n if (minutes < 1) return t('now');\n if (minutes < 60) return t('minutesAgo', { n: minutes });\n if (hours < 24) return t('hoursAgo', { n: hours });\n if (days === 1) return t('yesterday');\n if (days < 7) return t('daysAgo', { n: days });\n return new Date(timestamp).toLocaleDateString();\n}\n\n","/**\n * @quantabit/push-sdk — 通用推送通知适配层\n * \n * 统一 API 接入多种推送服务:\n * - 浏览器原生 Web Push (Notification API + Service Worker)\n * - Firebase Cloud Messaging (FCM)\n * - OneSignal\n * - 极光推送 JPush\n * - WebSocket 自研推送\n * - Server-Sent Events (SSE)\n * - 自定义适配器\n * \n * 使用方式:\n * const push = new PushManager({ adapter: 'websocket', url: 'wss://...' });\n * push.subscribe();\n * push.onMessage(msg => console.log(msg));\n */\nexport { PushManager } from './core/PushManager';\nexport { WebPushAdapter } from './adapters/WebPushAdapter';\nexport { WebSocketAdapter } from './adapters/WebSocketAdapter';\nexport { SSEAdapter } from './adapters/SSEAdapter';\nexport { FCMAdapter } from './adapters/FCMAdapter';\nexport { OneSignalAdapter } from './adapters/OneSignalAdapter';\nexport { JPushAdapter } from './adapters/JPushAdapter';\nexport { MockAdapter } from './adapters/MockAdapter';\nexport { pushApi, PushApiClient } from './services/pushApi';\nexport { webPushClient, WebPushClient } from './services/webPushClient';\nexport {\n NotificationType,\n NotificationChannel,\n NotificationStatus,\n PushChannel,\n PushStatus,\n PushPriority,\n SubscriptionStatus,\n PermissionStatus,\n} from './types';\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\nexport {\n usePush,\n usePushPermission,\n useNotifications,\n useRealtimeNotifications,\n useNotificationPreferences,\n usePushSubscription,\n useSendNotification,\n} from './hooks/usePush';\nexport { PushProvider } from './components/PushProvider';\nexport { PushPermissionBanner } from './components/PushPermissionBanner';\nexport {\n NotificationCenter,\n NotificationItem,\n NotificationBell,\n PushPermissionPrompt,\n NotificationSettings,\n NotificationToast,\n} from './components/NotificationCenter';\n\nimport { pushApi } from './services/pushApi';\n\nexport const getNotifications = pushApi.getHistory.bind(pushApi);\nexport const markAsRead = pushApi.markAsRead.bind(pushApi);\nexport const markAllAsRead = async () => pushApi.batchMarkAsRead([]);\nexport const send = pushApi.send.bind(pushApi);\nexport const schedule = pushApi.schedule.bind(pushApi);\nexport const getPreferences = pushApi.getPreferences.bind(pushApi);\nexport const updatePreferences = pushApi.updatePreferences.bind(pushApi);\n\nimport './styles/push.css';\n"],"names":["WebPushAdapter","constructor","config","name","_cbs","swPath","serviceWorkerPath","onMessage","cb","message","onConnect","connect","onDisconnect","disconnect","onError","error","window","perm","Notification","requestPermission","Error","navigator","serviceWorker","register","addEventListener","e","data","subscribe","topic","send","msg","title","body","icon","WebSocketAdapter","url","protocols","_ws","_pingInterval","pingInterval","_pingTimer","Promise","resolve","reject","WebSocket","onopen","_startPing","onmessage","d","JSON","parse","type","onclose","_stopPing","onerror","close","unsubscribe","readyState","OPEN","stringify","setInterval","clearInterval","SSEAdapter","_source","EventSource","CLOSED","FCMAdapter","firebase","messaging","token","getToken","vapidKey","payload","OneSignalAdapter","appId","OneSignal","script","document","createElement","src","async","head","appendChild","r","onload","push","init","on","n","showSliderPrompt","JPushAdapter","appKey","JAnalyticsInterface","appkey","alias","MockAdapter","_timer","interval","mockInterval","id","Date","now","time","toISOString","setTimeout","echo","emit","consentManager","sdkConfig","require","ADAPTERS","webpush","websocket","sse","fcm","onesignal","jpush","mock","PushManager","debug","_listeners","Map","_middleware","_connected","_messageQueue","_retryCount","_maxRetries","maxRetries","_retryDelay","retryDelay","_initAdapter","adapter","Cls","Object","keys","join","_adapter","_handleMessage","_emit","_flushQueue","_autoReconnect","err","_on","use","mw","hasConsent","console","log","getPermissionStatus","permission","isConnected","adapterName","raw","length","shift","Math","pow","ev","has","set","get","a","splice","indexOf","forEach","fn","PushApiClient","BaseApiClient","registerDevice","deviceInfo","post","updateDeviceToken","deviceId","put","getMyDevices","unregisterDevice","delete","getPreferences","updatePreferences","preferences","getQuietHours","setQuietHours","settings","subscribeTopic","unsubscribeTopic","getSubscribedTopics","getAvailableTopics","getHistory","params","markAsRead","pushId","batchMarkAsRead","pushIds","push_ids","sendToUsers","userIds","user_ids","sendToTopic","broadcast","schedule","scheduleAt","schedule_at","cancelSchedule","scheduleId","getStats","getDeliveryStats","clearAllUserData","results","devices","catch","deviceError","topics","t","topicError","cleared","timestamp","exportPushData","prefs","history","allSettled","page_size","exportDate","format","status","value","subscribedTopics","recentHistory","items","getDataDisclosure","sdk","privacyLevel","consentRequired","collected","description","retention","encrypted","gdprCapabilities","note","pushApi","PushChannel","WEB_PUSH","FCM","APNS","EMAIL","SMS","WECHAT","IN_APP","PushStatus","PENDING","SENT","DELIVERED","FAILED","CLICKED","DISMISSED","PushPriority","LOW","NORMAL","HIGH","SubscriptionStatus","ACTIVE","EXPIRED","UNSUBSCRIBED","DENIED","PermissionStatus","GRANTED","DEFAULT","PROMPT","NotificationStatus","NotificationType","SYSTEM","ANNOUNCEMENT","TRANSACTION","ACTIVITY","REMINDER","MARKETING","NotificationChannel","WebPushClientClass","vapidPublicKey","subscription","registration","isSupported","warn","pushManager","getSubscription","setupMessageListener","userVisibleOnly","applicationServerKey","urlBase64ToUint8Array","saveSubscription","removeSubscription","toJSON","channel","event","getSubscriptionStatus","showNotification","options","badge","base64String","padding","repeat","base64","replace","rawData","atob","outputArray","Uint8Array","i","charCodeAt","webPushClient","WebPushClient","SUPPORTED_LANGUAGES","messages","zh","notification","notifications","pushNotification","system","marketing","transactional","social","reminder","alert","webPush","appPush","email","sms","inApp","pending","sent","delivered","read","clicked","failed","granted","denied","default","permissionRequired","enabled","disabled","enablePush","disablePush","muteAll","muteDuration","quietHours","frequency","realtime","daily","weekly","cancel","resend","markAllRead","clear","minutesAgo","hoursAgo","yesterday","daysAgo","loading","noNotifications","unread","all","newNotification","en","ja","ko","currentLanguage","setLanguage","lang","includes","getLanguage","key","text","k","RegExp","usePush","mgr","useRef","connected","setConnected","useState","setMessages","lastMessage","setLastMessage","setPermission","useEffect","current","prev","slice","useCallback","p","clearMessages","manager","usePushPermission","supported","result","useNotifications","setNotifications","unreadCount","setUnreadCount","setLoading","setError","refresh","historyResult","statsResult","scope","Array","isArray","unread_count","filter","limit","page","markAllAsRead","ids","map","item","Boolean","deleteNotification","clearAll","useRealtimeNotifications","useNotificationPreferences","setPreferences","saving","setSaving","nextPreferences","toggleChannel","next","channels","toggleType","types","usePushSubscription","setTopics","useSendNotification","PushContext","createContext","PushProvider","children","React","Provider","PushPermissionBanner","onAllow","onDismiss","className","style","display","alignItems","gap","background","borderRadius","border","width","height","viewBox","fill","stroke","strokeWidth","flex","fontSize","fontWeight","color","marginTop","onClick","cursor","NotificationCenter","onClose","setFilter","filteredNotifications","NotificationItem","onRead","onDelete","handleClick","link","location","href","getTypeIcon","formatTime","createdAt","image","alt","stopPropagation","NotificationBell","PushPermissionPrompt","onGranted","onDenied","requesting","setRequesting","handleRequest","NotificationSettings","entries","ToggleItem","label","checked","onChange","start","target","end","NotificationToast","duration","timer","clearTimeout","icons","diff","getTime","minutes","floor","hours","days","toLocaleDateString","getNotifications","bind"],"mappings":"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"}
|