diff --git a/assets/linux_arm64/libopenimsdk.so b/assets/linux_arm64/libopenimsdk.so index e164f3e..b4a5d69 100644 Binary files a/assets/linux_arm64/libopenimsdk.so and b/assets/linux_arm64/libopenimsdk.so differ diff --git a/assets/linux_x64/libopenimsdk.so b/assets/linux_x64/libopenimsdk.so index e164f3e..b4a5d69 100644 Binary files a/assets/linux_x64/libopenimsdk.so and b/assets/linux_x64/libopenimsdk.so differ diff --git a/assets/mac_arm64/libopenimsdk.dylib b/assets/mac_arm64/libopenimsdk.dylib index bb730c5..30d48d9 100644 Binary files a/assets/mac_arm64/libopenimsdk.dylib and b/assets/mac_arm64/libopenimsdk.dylib differ diff --git a/assets/mac_x64/libopenimsdk.dylib b/assets/mac_x64/libopenimsdk.dylib index bb730c5..30d48d9 100644 Binary files a/assets/mac_x64/libopenimsdk.dylib and b/assets/mac_x64/libopenimsdk.dylib differ diff --git a/assets/win_ia32/libopenimsdk.dll b/assets/win_ia32/libopenimsdk.dll index e5f0b89..366789d 100644 Binary files a/assets/win_ia32/libopenimsdk.dll and b/assets/win_ia32/libopenimsdk.dll differ diff --git a/assets/win_x64/libopenimsdk.dll b/assets/win_x64/libopenimsdk.dll index e5f0b89..366789d 100644 Binary files a/assets/win_x64/libopenimsdk.dll and b/assets/win_x64/libopenimsdk.dll differ diff --git a/package-lock.json b/package-lock.json index 2519328..d87e50f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@openim/electron-client-sdk", - "version": "1.0.6", + "version": "1.0.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@openim/electron-client-sdk", - "version": "1.0.6", + "version": "1.0.9", "license": "MIT", "dependencies": { "koffi": "^2.8.0", @@ -15,6 +15,7 @@ "devDependencies": { "@commitlint/cli": "^16.2.4", "@commitlint/config-conventional": "^16.2.4", + "@openim/wasm-client-sdk": "^3.8.0", "@rollup/plugin-alias": "^5.1.0", "@rollup/plugin-terser": "^0.4.4", "@types/ffi-napi": "^4.0.10", @@ -42,7 +43,7 @@ "node": ">=12.0" }, "peerDependencies": { - "@openim/wasm-client-sdk": "^3.8.0-rc.0", + "@openim/wasm-client-sdk": "^3.8.0", "electron": ">=12.0.0" } }, @@ -1881,10 +1882,10 @@ } }, "node_modules/@openim/wasm-client-sdk": { - "version": "3.8.0-rc.0", - "resolved": "https://registry.npmjs.org/@openim/wasm-client-sdk/-/wasm-client-sdk-3.8.0-rc.0.tgz", - "integrity": "sha512-SGd0Yu4tUQfs9FDkR3x49NjX0jPO1W0ETxGYqKO1BMmIyhwVGeKQMpfHD2QXPh2yefhT4OLoNBffHihopUrK6Q==", - "peer": true, + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@openim/wasm-client-sdk/-/wasm-client-sdk-3.8.1.tgz", + "integrity": "sha512-1z90Z5A24MCeIuQtvP68GhQ2bEaS+XjpqtSnpLA9qcahaQqErzanzwJ4kDbo+1+Z0MFNqnDzjlnUjyf2FRv41Q==", + "dev": true, "engines": { "node": ">=12.0" } diff --git a/package.json b/package.json index 3d946cf..d4fa5e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openim/electron-client-sdk", - "version": "1.0.8", + "version": "1.0.9", "description": "open im sdk for node", "source": "src/index.ts", "main": "lib/index.js", diff --git a/src/core/index.ts b/src/core/index.ts index 4e2c676..0ddfe38 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -2,7 +2,13 @@ import koffi from 'koffi'; import { v4 as uuidV4 } from 'uuid'; import type { LibOpenIMSDK } from 'libOpenIMSDK'; import { UserModuleApi, setupUserModule } from './modules/user'; -import { InitConfig, LoginParams, UploadLogsParams } from '@/types/params'; +import { + DebugLogsParams, + ErrorLogsParams, + InitConfig, + LoginParams, + UploadLogsParams, +} from '@/types/params'; import { BaseResponse, EmitProxy } from '@/types/entity'; import { ErrorCode } from '@/constant/api'; import { NativeEvent, eventMapping } from '@/constant/callback'; @@ -14,7 +20,7 @@ import { setupConversationModule, } from './modules/conversation'; import { type MessageModuleApi, setupMessageModule } from './modules/message'; -import { CbEvents, LoginStatus } from '@openim/wasm-client-sdk'; +import { CbEvents, LoginStatus, LogLevel } from '@openim/wasm-client-sdk'; import { SelfUserInfo } from '@openim/wasm-client-sdk/lib/types/entity'; import { SetConversationExParams, @@ -861,6 +867,16 @@ class OpenIMSDK 'void', ['baseCallback *', 'str', 'int', 'str', 'listenerCallback *'] ); + this.libOpenIMSDK.logs = this.lib.func('__stdcall', 'logs', 'void', [ + 'baseCallback *', + 'str', + 'int', + 'str', + 'int', + 'str', + 'str', + 'str', + ]); // advance if (this.enterprise) { @@ -1239,6 +1255,98 @@ class OpenIMSDK ); }); + verboseLogs = (params: DebugLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Verbose, + '', + 0, + params.msgs, + '', + JSON.stringify(params.keyAndValue) + ); + }); + debugLogs = (params: DebugLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Debug, + '', + 0, + params.msgs, + '', + JSON.stringify(params.keyAndValue) + ); + }); + infoLogs = (params: DebugLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Info, + '', + 0, + params.msgs, + '', + JSON.stringify(params.keyAndValue) + ); + }); + warnLogs = (params: ErrorLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Warn, + '', + 0, + params.msgs, + params.err, + JSON.stringify([]) + ); + }); + errorLogs = (params: ErrorLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Error, + '', + 0, + params.msgs, + params.err, + JSON.stringify([]) + ); + }); + fatalLogs = (params: ErrorLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Fatal, + '', + 0, + params.msgs, + params.err, + JSON.stringify([]) + ); + }); + panicLogs = (params: ErrorLogsParams, opid = uuidV4()) => + new Promise>((resolve, reject) => { + this.libOpenIMSDK.logs( + this.baseCallbackWrap(resolve, reject), + opid, + LogLevel.Panic, + '', + 0, + params.msgs, + params.err, + JSON.stringify([]) + ); + }); + // implements user api getSelfUserInfo!: UserModuleApi['getSelfUserInfo']; setSelfInfo!: UserModuleApi['setSelfInfo']; diff --git a/src/render.ts b/src/render.ts index 2b769a7..8b6e4d3 100644 --- a/src/render.ts +++ b/src/render.ts @@ -14,6 +14,8 @@ import { SoundMsgByPathParams, VideoMsgByPathParams, UploadLogsParams, + DebugLogsParams, + ErrorLogsParams, } from './types/params'; type EmitterEvents = { @@ -93,7 +95,38 @@ type IMSDKInterface = Omit & { uploadLogs: ( params: UploadLogsParams, opid?: string - ) => Promise>; + ) => Promise>; + /** + * @access only for electron + */ + verboseLogs: ( + params: DebugLogsParams, + opid?: string + ) => Promise>; + debugLogs: ( + params: DebugLogsParams, + opid?: string + ) => Promise>; + infoLogs: ( + params: DebugLogsParams, + opid?: string + ) => Promise>; + warnLogs: ( + params: ErrorLogsParams, + opid?: string + ) => Promise>; + errorLogs: ( + params: ErrorLogsParams, + opid?: string + ) => Promise>; + fatalLogs: ( + params: ErrorLogsParams, + opid?: string + ) => Promise>; + panicLogs: ( + params: ErrorLogsParams, + opid?: string + ) => Promise>; }; type ElectronInvoke = (method: string, ...args: any[]) => Promise; diff --git a/src/types/libOpenIMSDK.d.ts b/src/types/libOpenIMSDK.d.ts index d98de07..7dd52f7 100644 --- a/src/types/libOpenIMSDK.d.ts +++ b/src/types/libOpenIMSDK.d.ts @@ -752,6 +752,16 @@ declare module 'libOpenIMSDK' { ex: string, pCallback: CB_I_S ): void; + logs( + cCallback: CB_S_I_S_S, + operationID: string, + logLevel: number, + file: string, + line: number, + msgs: string, + err: string, + keyAndValue: string + ): void; } const lib: LibOpenIMSDK; export default lib; diff --git a/src/types/params.ts b/src/types/params.ts index 36edb2f..7564781 100644 --- a/src/types/params.ts +++ b/src/types/params.ts @@ -37,3 +37,22 @@ export type UploadLogsParams = { line: number; ex?: string; }; + +export type LogsParams = { + logLevel: LogLevel; + file: string; + line: number; + msgs: string; + err: string; + keyAndValue: string[]; +}; + +export type DebugLogsParams = { + msgs: string; + keyAndValue: string[]; +}; + +export type ErrorLogsParams = { + msgs: string; + err: string; +};