From 4e80b0bf4ecc3bdb3138666d8363ebdd02360cfd Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Tue, 16 Jun 2026 13:10:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20rn-log=20ErrorCapture=20=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=BF=AE=E5=A4=8D=20+=20=E4=BE=9D=E8=B5=96=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ErrorCapture.ts: global → globalThis,移除 declare global 冲突 - index.ts: 移除不存在的 UpdateDownloadProgress 导出 - 各 package.json 版本号对齐 Co-Authored-By: Claude --- package.json | 13 ++++++------- packages/common/package.json | 3 +-- packages/common/src/device.ts | 2 +- packages/im/package.json | 5 ++--- packages/license/package.json | 5 ++--- packages/log/package.json | 2 +- packages/log/src/XLog.ts | 8 ++++++++ packages/log/src/capture/ErrorCapture.ts | 15 +++++---------- packages/log/src/funnel/FunnelTracker.ts | 4 ++-- packages/log/src/index.ts | 1 - packages/push/package.json | 5 ++--- packages/update/package.json | 5 ++--- packages/xwebview/package.json | 7 +++---- tsconfig.json | 5 ++++- 14 files changed, 39 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index c066ba2..92c46eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-sdk", - "version": "0.3.0", + "version": "0.4.0-SNAPSHOT", "description": "XuqmGroup React Native SDK — meta-package (IM, Push, Update, Common)", "license": "UNLICENSED", "main": "src/index.ts", @@ -26,17 +26,16 @@ "react-native": ">=0.76.0" }, "dependencies": { - "@xuqm/rn-common": ">=0.2.0", + "@xuqm/rn-common": ">=0.4.0", "@xuqm/rn-im": ">=0.2.0", - "@xuqm/rn-license": ">=0.2.0", + "@xuqm/rn-license": ">=0.3.0", + "@xuqm/rn-log": ">=0.1.0", "@xuqm/rn-push": ">=0.2.0", - "@xuqm/rn-update": ">=0.2.0", - "@xuqm/rn-xwebview": ">=0.2.0", - "react-native-qrcode-svg": "^6.3.21" + "@xuqm/rn-update": ">=0.4.0", + "@xuqm/rn-xwebview": ">=0.2.0" }, "devDependencies": { "@types/react": "^19.0.0", - "@types/react-native": "^0.73.0", "axios": "^1.18.0", "typescript": "^5.9.3", "zod": "3.23.8" diff --git a/packages/common/package.json b/packages/common/package.json index 6c5babe..5468a8d 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-common", - "version": "0.4.0", + "version": "0.4.0-SNAPSHOT", "description": "XuqmGroup RN SDK — core: init, network, token management", "license": "UNLICENSED", "main": "src/index.ts", @@ -22,7 +22,6 @@ "devDependencies": { "typescript": "^5.9.3", "@types/react": "^19.0.0", - "@types/react-native": "^0.73.0", "@react-native-async-storage/async-storage": "^2.1.2", "axios": "^1.7.0", "react": "^19.0.0", diff --git a/packages/common/src/device.ts b/packages/common/src/device.ts index d66540a..bce6c57 100644 --- a/packages/common/src/device.ts +++ b/packages/common/src/device.ts @@ -82,7 +82,7 @@ export async function getDeviceInfo(): Promise { model: String(C.Model ?? ''), osVersion: String(C.Release ?? Platform.Version), pushVendor: detectPushVendor(brand), - manufacturer: String(C.Manufacturer ?? undefined), + manufacturer: C.Manufacturer ?? undefined, vendorVersion: undefined, } } diff --git a/packages/im/package.json b/packages/im/package.json index 93d26e7..d843da2 100644 --- a/packages/im/package.json +++ b/packages/im/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-im", - "version": "0.2.2", + "version": "0.2.2-SNAPSHOT", "description": "XuqmGroup RN SDK — IM module (single chat, group chat, 13 message types)", "license": "UNLICENSED", "main": "src/index.ts", @@ -22,7 +22,6 @@ "react-native": ">=0.76.0" }, "devDependencies": { - "typescript": "^5.9.3", - "@types/react-native": "^0.73.0" + "typescript": "^5.9.3" } } diff --git a/packages/license/package.json b/packages/license/package.json index a04e1fa..448a421 100644 --- a/packages/license/package.json +++ b/packages/license/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-license", - "version": "0.3.0", + "version": "0.3.0-SNAPSHOT", "description": "XuqmGroup RN SDK — License module (device registration & verification)", "license": "UNLICENSED", "main": "src/index.ts", @@ -22,7 +22,6 @@ "react-native-quick-crypto": ">=0.7.0" }, "devDependencies": { - "typescript": "^5.9.3", - "@types/react-native": "^0.73.0" + "typescript": "^5.9.3" } } diff --git a/packages/log/package.json b/packages/log/package.json index e9d4fef..10ec8ca 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-log", - "version": "0.1.0", + "version": "0.1.0-SNAPSHOT", "description": "XuqmGroup RN SDK — log collection, error tracking, funnel analysis", "license": "UNLICENSED", "main": "src/index.ts", diff --git a/packages/log/src/XLog.ts b/packages/log/src/XLog.ts index f96ab4b..6f02f31 100644 --- a/packages/log/src/XLog.ts +++ b/packages/log/src/XLog.ts @@ -130,4 +130,12 @@ export const XLog = { async flush(): Promise { if (_queue) await _queue.flush() }, + + /** Clean up resources (timers, etc.). Call on app termination if needed. */ + destroy(): void { + if (_queue) { + _queue.destroy() + _queue = null + } + }, } diff --git a/packages/log/src/capture/ErrorCapture.ts b/packages/log/src/capture/ErrorCapture.ts index fd2986a..e958136 100644 --- a/packages/log/src/capture/ErrorCapture.ts +++ b/packages/log/src/capture/ErrorCapture.ts @@ -9,14 +9,8 @@ declare const ErrorUtils: { setGlobalHandler(handler: (error: Error, isFatal?: boolean) => void): void } -// React Native / Hermes exposes onunhandledrejection on global -declare global { - // eslint-disable-next-line no-var - var onunhandledrejection: - | ((event: { reason: unknown }) => void) - | null - | undefined -} +// React Native / Hermes exposes onunhandledrejection on globalThis +type UnhandledRejectionHandler = ((event: { reason: unknown }) => void) | null | undefined export const ErrorCapture = { start(onError: (error: unknown, meta?: Record) => void): void { @@ -31,8 +25,9 @@ export const ErrorCapture = { } // Unhandled Promise rejection - const prevUnhandled = global.onunhandledrejection - global.onunhandledrejection = (event: { reason: unknown }) => { + const g = globalThis as unknown as Record + const prevUnhandled = (g['onunhandledrejection'] as UnhandledRejectionHandler) ?? null + g['onunhandledrejection'] = (event: { reason: unknown }) => { onError(event.reason, { type: 'unhandledRejection' }) prevUnhandled?.(event) } diff --git a/packages/log/src/funnel/FunnelTracker.ts b/packages/log/src/funnel/FunnelTracker.ts index 9303fb7..11697fb 100644 --- a/packages/log/src/funnel/FunnelTracker.ts +++ b/packages/log/src/funnel/FunnelTracker.ts @@ -4,12 +4,12 @@ * Final aggregation is done server-side using the events uploaded by LogQueue. */ -interface FunnelDefinition { +export interface FunnelDefinition { id: string steps: string[] // event names in order } -interface FunnelProgress { +export interface FunnelProgress { funnelId: string completedSteps: string[] completedAt?: number diff --git a/packages/log/src/index.ts b/packages/log/src/index.ts index 817bdd5..256344a 100644 --- a/packages/log/src/index.ts +++ b/packages/log/src/index.ts @@ -1,3 +1,2 @@ export { XLog } from './XLog' export type { LogLevel, Environment, LogEvent, IssueEvent, XLogEvent } from './types' -export type { UpdateDownloadProgress } from './types' diff --git a/packages/push/package.json b/packages/push/package.json index 20f8886..fb2dea0 100644 --- a/packages/push/package.json +++ b/packages/push/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-push", - "version": "0.2.2", + "version": "0.2.2-SNAPSHOT", "description": "XuqmGroup RN SDK — Push module (device token registration)", "license": "UNLICENSED", "main": "src/index.ts", @@ -18,7 +18,6 @@ "react-native": ">=0.76.0" }, "devDependencies": { - "typescript": "^5.9.3", - "@types/react-native": "^0.73.0" + "typescript": "^5.9.3" } } diff --git a/packages/update/package.json b/packages/update/package.json index d2f9008..5e9f652 100644 --- a/packages/update/package.json +++ b/packages/update/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-update", - "version": "0.4.0", + "version": "0.4.0-SNAPSHOT", "description": "XuqmGroup RN SDK — Update module (App update, RN plugin hot-update)", "license": "UNLICENSED", "main": "src/index.ts", @@ -21,7 +21,6 @@ "@react-native-async-storage/async-storage": ">=1.21.0" }, "devDependencies": { - "typescript": "^5.9.3", - "@types/react-native": "^0.73.0" + "typescript": "^5.9.3" } } diff --git a/packages/xwebview/package.json b/packages/xwebview/package.json index f3c32f1..fd4c005 100644 --- a/packages/xwebview/package.json +++ b/packages/xwebview/package.json @@ -1,6 +1,6 @@ { "name": "@xuqm/rn-xwebview", - "version": "0.2.2", + "version": "0.2.2-SNAPSHOT", "description": "XuqmGroup RN SDK — XWebView module", "license": "UNLICENSED", "main": "src/index.ts", @@ -22,12 +22,11 @@ "peerDependencies": { "react": ">=18.0.0", "react-native": ">=0.76.0", - "@react-navigation/native": ">=7.0.0" + "@react-navigation/native": ">=7.0.0", + "react-native-safe-area-context": ">=4.0.0" }, "devDependencies": { "@types/react": "^19.0.0", - "@types/react-native": "^0.73.0", - "react-native-safe-area-context": "^5.4.0", "@react-navigation/native": "^7.0.0", "@react-native-async-storage/async-storage": "^1.21.0", "typescript": "^5.9.3" diff --git a/tsconfig.json b/tsconfig.json index 199be8b..7f7bf3e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,11 @@ "@nozbe/watermelondb/adapters/sqlite": ["src/shims/watermelondb.ts"], "@xuqm/rn-common": ["packages/common/src"], "@xuqm/rn-im": ["packages/im/src"], + "@xuqm/rn-license": ["packages/license/src"], + "@xuqm/rn-log": ["packages/log/src"], "@xuqm/rn-push": ["packages/push/src"], - "@xuqm/rn-update": ["packages/update/src"] + "@xuqm/rn-update": ["packages/update/src"], + "@xuqm/rn-xwebview": ["packages/xwebview/src"] }, "strict": true, "experimentalDecorators": true,