@onyx-p/imlib-web 1.2.3 → 1.2.4

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.
Files changed (30) hide show
  1. package/dist/README.md +14 -0
  2. package/{index.esm.js → dist/index.esm.js} +11110 -10130
  3. package/{index.umd.js → dist/index.umd.js} +11134 -10134
  4. package/{types → dist/types}/index.d.ts +27 -8
  5. package/{types → dist/types}/model/baseMessage.d.ts +4 -7
  6. package/{types → dist/types}/model/iReceivedConversation.d.ts +22 -6
  7. package/{types → dist/types}/model/iReceivedMessage.d.ts +14 -10
  8. package/dist/types/model/messages/fileMessage.d.ts +24 -0
  9. package/dist/types/model/messages/gifMessage.d.ts +27 -0
  10. package/dist/types/model/messages/imageMessage.d.ts +32 -0
  11. package/dist/types/model/messages/index.d.ts +12 -0
  12. package/dist/types/model/messages/notificationMessages.d.ts +20 -0
  13. package/dist/types/model/messages/otherMediaMessages.d.ts +99 -0
  14. package/dist/types/model/messages/recallCommandMessage.d.ts +9 -0
  15. package/dist/types/model/messages/textMessage.d.ts +12 -0
  16. package/dist/types/model/messages/videoMessage.d.ts +30 -0
  17. package/dist/types/model/messages/voiceMessage.d.ts +18 -0
  18. package/{types → dist/types}/model/statusTypes.d.ts +9 -17
  19. package/{types → dist/types}/types.d.ts +54 -40
  20. package/package.json +65 -13
  21. package/types/model/messages/commandMessage.d.ts +0 -20
  22. package/types/model/messages/custMessage.d.ts +0 -34
  23. package/types/model/messages/fileMessage.d.ts +0 -25
  24. package/types/model/messages/gifMessage.d.ts +0 -28
  25. package/types/model/messages/imageMessage.d.ts +0 -32
  26. package/types/model/messages/index.d.ts +0 -10
  27. package/types/model/messages/recallCommandMessage.d.ts +0 -18
  28. package/types/model/messages/textMessage.d.ts +0 -16
  29. package/types/model/messages/voiceMessage.d.ts +0 -21
  30. /package/{types → dist/types}/model/mentionedInfo.d.ts +0 -0
@@ -1,8 +1,7 @@
1
1
  import { BaseMessage, IExtraData, IUserInfo } from './model/baseMessage';
2
2
  import IReceivedMessage from './model/iReceivedMessage';
3
- import { ConnectionStatus, ConversationType, ErrorCode, IUserProfile, MessageDirection, NotificationLevel, NotificationStatus } from './model/statusTypes';
3
+ import { ConnectionStatus, ConversationType, ErrorCode, MessageDirection, NotificationLevel, NotificationStatus } from './model/statusTypes';
4
4
  import IReceivedConversation from './model/iReceivedConversation';
5
- import Long from 'long';
6
5
  export declare enum LogLevel {
7
6
  DEBUG = 0,
8
7
  INFO = 1,
@@ -22,11 +21,14 @@ export type IInitOption = {
22
21
  */
23
22
  logStdout?: (logLevel: LogLevel, content: string) => void;
24
23
  serverInfo?: string;
24
+ uploader?: IUploader;
25
+ deviceCode: string;
26
+ deviceType: number;
25
27
  };
26
28
  export interface ProfileInfo {
27
- deviceId: Long;
28
- sessionId: Long;
29
- uid: Long;
29
+ deviceId: string;
30
+ sessionId: string;
31
+ uid: string;
30
32
  }
31
33
  export declare enum Events {
32
34
  CONNECTING = "CONNECTING",
@@ -35,7 +37,25 @@ export declare enum Events {
35
37
  SUSPEND = "SUSPEND",
36
38
  MESSAGES = "MESSAGES",
37
39
  PULL_OFFLINE_MESSAGE_FINISHED = "PULL_OFFLINE_MESSAGE_FINISHED",
38
- CONVERSATION = "CONVERSATION"
40
+ CONVERSATION = "CONVERSATION",
41
+ PUSH = "PUSH",
42
+ RECALL = "RECALL",
43
+ ARRIVAL_RECEIPT_RECEIVED = "ARRIVAL_RECEIPT_RECEIVED",
44
+ READ_RECEIPT_RECEIVED = "READ_RECEIPT_RECEIVED"
45
+ }
46
+ /**
47
+ * 收到已读/已发送回执数据结构
48
+ * @category Interface
49
+ */
50
+ export interface IReceiptReceivedEvent {
51
+ /**
52
+ * 会话信息,包含会话属性
53
+ */
54
+ conversation: IConversationOption;
55
+ /**
56
+ * 消息的id列表
57
+ */
58
+ messageUIdList: string[];
39
59
  }
40
60
  export type EventListeners = {
41
61
  [Events.CONNECTING]: () => void;
@@ -49,11 +69,17 @@ export type EventListeners = {
49
69
  [Events.CONVERSATION]: (event: {
50
70
  conversations: IUpdatedConversation[];
51
71
  }) => void;
72
+ [Events.PUSH]: (event: {
73
+ cmdId: number;
74
+ body: Uint8Array;
75
+ }) => void;
76
+ [Events.RECALL]: (messageUId: string) => void;
77
+ [Events.ARRIVAL_RECEIPT_RECEIVED]: (event: IReceiptReceivedEvent) => void;
78
+ [Events.READ_RECEIPT_RECEIVED]: (event: IReceiptReceivedEvent) => void;
52
79
  };
53
80
  export interface IBaseConversationInfo {
54
81
  conversationType: ConversationType;
55
82
  targetId: string;
56
- channelId?: string;
57
83
  }
58
84
  export interface IConversationState extends IBaseConversationInfo {
59
85
  unreadCount: number;
@@ -61,12 +87,15 @@ export interface IConversationState extends IBaseConversationInfo {
61
87
  notificationLevel: NotificationLevel;
62
88
  notificationStatus: NotificationStatus;
63
89
  isTop: boolean;
90
+ dialogTitle: string | null | undefined;
91
+ smallAvatarUrl: string | null | undefined;
92
+ updateTime: number | null | undefined;
64
93
  }
65
94
  /**
66
95
  * 会话信息
67
96
  */
68
97
  export type IConversationOption = IBaseConversationInfo;
69
- export type IUpdatedConversationItemKeys = Extract<keyof IReceivedConversation, 'isTop' | 'notificationStatus' | 'notificationLevel' | 'unreadMessageCount' | 'hasMentioned' | 'unreadMentionedCount' | 'latestMessage'>;
98
+ export type IUpdatedConversationItemKeys = Extract<keyof IReceivedConversation, 'isTop' | 'notificationStatus' | 'notificationLevel' | 'unreadMessageCount' | 'hasMentioned' | 'unreadMentionedCount' | 'dialogTitle' | 'smallAvatarUrl' | 'latestMessage' | 'burnAfterReadingFlag' | 'burnAfterReadingTime'>;
70
99
  export type IUpdatedConversationItem = Partial<Record<IUpdatedConversationItemKeys, {
71
100
  time: number;
72
101
  val: any;
@@ -105,10 +134,6 @@ export type IPushConfig = {
105
134
  * 发送消息时的可选项信息
106
135
  */
107
136
  export interface ISendMessageOptions {
108
- /**
109
- * 用于发送群定向消息,只当 conversationType 值为 `ConversationType.GROUP` 时有效
110
- */
111
- directionalUserIdList?: string[];
112
137
  /**
113
138
  * 消息发送之前的回调
114
139
  */
@@ -118,7 +143,7 @@ export interface ISendMessageOptions {
118
143
  * 当要重发消息时所有参数需与原始消息参数一致,messageId 必须存在。
119
144
  * 正常发消息时无需传该参数。
120
145
  */
121
- messageId?: number;
146
+ messageId?: string;
122
147
  /**
123
148
  * 推送配置,用于配置移动端远程推送的推送栏显示内容
124
149
  */
@@ -141,9 +166,20 @@ export interface IUploadHooks {
141
166
  /**
142
167
  * 文件上传完成回调,可通过修改返回值以修改待发布的消息内容,如实现自定义消息
143
168
  */
144
- onComplete?: (fileInfo: {
145
- url: string;
146
- }) => void | BaseMessage;
169
+ onComplete?: (fileInfo: IUploadCompletedResult) => void | BaseMessage;
170
+ }
171
+ export type IUploadCompletedResult = {
172
+ urls: string[];
173
+ encryptedKey?: string;
174
+ };
175
+ export type IUploadCallback = {
176
+ onProgress?: (progress: number) => void;
177
+ onCompleted?: (result: IUploadCompletedResult) => void;
178
+ onError?: (reason: string) => void;
179
+ };
180
+ export interface IUploader {
181
+ upload(files: Blob[], callback: IUploadCallback): void;
182
+ cancel(): void;
147
183
  }
148
184
  /**
149
185
  * 文件消息配置
@@ -170,31 +206,9 @@ export interface IThumbnailConfig {
170
206
  */
171
207
  export interface IRecallMessageOptions {
172
208
  /**
173
- * 消息的唯一id,客户端依赖此属性查找要撤回的消息
209
+ * 消息的唯一id,服务端依赖此属性删除要撤回的消息
174
210
  */
175
211
  messageUId: string;
176
- /**
177
- * 消息发送时间,服务端依赖此属性查找要撤回的消息
178
- */
179
- sentTime: number;
180
- /**
181
- * 撤回消息携带用户信息
182
- */
183
- user?: IUserProfile;
184
- /**
185
- * 是否发送静默消息
186
- * @description
187
- * 当值为 `true` 时,服务器将不会发送 Push 信息,移动端也不会弹出本地通知提醒
188
- */
189
- disableNotification?: boolean;
190
- /**
191
- * 撤回消息携带扩展信息
192
- */
193
- extra?: string;
194
- /**
195
- * 是否删除原始消息(在移动端会使用到),为 true 时移动端会不显示小灰条提示
196
- */
197
- isDelete?: boolean;
198
212
  }
199
213
  /**
200
214
  * 获取远程消息 option 参数
@@ -203,7 +217,7 @@ export type GetHistoryMessageOption = {
203
217
  /**
204
218
  * 获取此时间之前的消息,0 为从当前时间拉取
205
219
  */
206
- timestamp?: number;
220
+ timestamp?: string;
207
221
  /**
208
222
  * 获取消息的数量,范围: 1-20
209
223
  */
package/package.json CHANGED
@@ -1,18 +1,70 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "1.2.3",
4
- "main": "index.umd.js",
5
- "module": "index.esm.js",
6
- "types": "types/index.d.ts",
3
+ "version": "1.2.4",
4
+ "main": "./dist/index.umd.js",
5
+ "module": "./dist/index.esm.js",
6
+ "types": "./dist/types/index.d.ts",
7
+ "scripts": {
8
+ "clean:dist": "rimraf dist",
9
+ "build:types": "npm run clean:dist && tsc -b ./tsconfig.types.json",
10
+ "build": "npm run build:types && rollup -c --bundleConfigAsCjs && node scripts/prepare-publish.js",
11
+ "dev": "npm run clean:dist && rollup -c --bundleConfigAsCjs",
12
+ "test": "node test/test.js"
13
+ },
14
+ "license": "MIT",
15
+ "devDependencies": {
16
+ "@babel/core": "^7.26.0",
17
+ "@babel/plugin-transform-runtime": "^7.25.9",
18
+ "@babel/preset-env": "^7.26.0",
19
+ "@babel/runtime-corejs3": "^7.26.0",
20
+ "@rollup/plugin-babel": "^6.0.4",
21
+ "@rollup/plugin-commonjs": "^28.0.2",
22
+ "@rollup/plugin-node-resolve": "^16.0.0",
23
+ "@types/crypto-js": "^4.2.2",
24
+ "@types/node": "^22.10.2",
25
+ "electron": "^30.0.0",
26
+ "eslint": "^9.17.0",
27
+ "eslint-config-prettier": "^9.1.0",
28
+ "eslint-plugin-prettier": "^5.2.1",
29
+ "prettier": "^3.4.2",
30
+ "rollup": "^3.28.0",
31
+ "rollup-plugin-bundle-size": "^1.0.3",
32
+ "rollup-plugin-polyfill-node": "^0.13.0",
33
+ "rollup-plugin-re": "^1.0.7",
34
+ "rollup-plugin-typescript2": "^0.36.0",
35
+ "rollup-plugin-visualizer": "^5.12.0",
36
+ "tslib": "^2.8.1",
37
+ "typescript": "^5.7.2"
38
+ },
7
39
  "files": [
8
- "index.umd.js",
9
- "index.esm.js",
10
- "types/index.d.ts",
11
- "types/types.d.ts",
12
- "types/model",
40
+ "dist/index.umd.js",
41
+ "dist/index.esm.js",
42
+ "dist/types/index.d.ts",
43
+ "dist/types/types.d.ts",
44
+ "dist/types/model",
13
45
  "README.md"
14
46
  ],
15
- "keywords": ["im"],
16
- "author": "zimu",
17
- "license": "MIT"
18
- }
47
+ "dependencies": {
48
+ "crypto-js": "^4.2.0",
49
+ "electron-store": "^10.0.1",
50
+ "long": "^5.2.3",
51
+ "protobufjs": "^7.4.0"
52
+ },
53
+ "peerDependencies": {
54
+ "electron": ">=10.0.0"
55
+ },
56
+ "description": "",
57
+ "directories": {
58
+ "example": "examples",
59
+ "lib": "lib",
60
+ "test": "test"
61
+ },
62
+ "repository": {
63
+ "type": "git",
64
+ "url": ""
65
+ },
66
+ "keywords": [
67
+ "im"
68
+ ],
69
+ "author": "zimu"
70
+ }
@@ -1,20 +0,0 @@
1
- import { BaseMessage, IExtraData, IUserInfo, MessageCodingData } from '../baseMessage';
2
- /**
3
- * 命令消息
4
- */
5
- export interface ICommandMessageBody extends IUserInfo, IExtraData {
6
- /**
7
- * 命令名称
8
- */
9
- name: string;
10
- /**
11
- * 命令的扩展数据,可以为任意字符串,如存放您定义的json数据。
12
- */
13
- data: string;
14
- }
15
- export default class CommandMessage extends BaseMessage<ICommandMessageBody> {
16
- constructor(content: ICommandMessageBody);
17
- static getObjectId(): number;
18
- static decode(aDecoder: MessageCodingData): BaseMessage<ICommandMessageBody>;
19
- encode(): MessageCodingData;
20
- }
@@ -1,34 +0,0 @@
1
- import { BaseMessage, IBaseMessageBody, MessageCodingData } from '../baseMessage';
2
- declare class CustBaseMessage extends BaseMessage {
3
- static decode(aDecoder: MessageCodingData): BaseMessage<IBaseMessageBody>;
4
- encode(): MessageCodingData;
5
- }
6
- /**
7
- * 自定义命令消息(不存储,不计数)
8
- */
9
- export declare class CustCommandMessage<T> extends CustBaseMessage {
10
- constructor(messageType: string, content: T);
11
- static getObjectId(): number;
12
- }
13
- /**
14
- * 自定义存储消息(存储,不计数)
15
- */
16
- export declare class CustStorageMessage<T> extends CustBaseMessage {
17
- constructor(messageType: string, content: T);
18
- static getObjectId(): number;
19
- }
20
- /**
21
- * 自定义普通消息(存储,且计数)
22
- */
23
- export declare class CustNormalMessage<T> extends CustBaseMessage {
24
- constructor(messageType: string, content: T);
25
- static getObjectId(): number;
26
- }
27
- /**
28
- * 自定义状态消息
29
- */
30
- export declare class CustStatusMessage<T> extends CustBaseMessage {
31
- constructor(messageType: string, content: T);
32
- static getObjectId(): number;
33
- }
34
- export {};
@@ -1,25 +0,0 @@
1
- import { BaseMessage, IExtraData, IMentionedInfo, IUserInfo, MessageCodingData } from '../baseMessage';
2
- export interface IFileMessageBody extends IExtraData, IMentionedInfo, IUserInfo {
3
- /**
4
- * 文件名称
5
- */
6
- name: string;
7
- /**
8
- * 文件尺寸,单位: Byte
9
- */
10
- size: number;
11
- /**
12
- * 文件类型
13
- */
14
- type: string;
15
- /**
16
- * 远程文件资源地址
17
- */
18
- fileUrl: string;
19
- }
20
- export default class FileMessage extends BaseMessage<IFileMessageBody> {
21
- constructor(content: IFileMessageBody);
22
- static getObjectId(): number;
23
- static decode(aDecoder: MessageCodingData): BaseMessage<IFileMessageBody>;
24
- encode(): MessageCodingData;
25
- }
@@ -1,28 +0,0 @@
1
- import { IUserInfo, IExtraData, BaseMessage, MessageCodingData } from '../baseMessage';
2
- /**
3
- * GIF 消息
4
- */
5
- export interface IGIFMessageBody extends IExtraData, IUserInfo {
6
- /**
7
- * GIF 图片文件大小,单位为 KB
8
- */
9
- gifDataSize: number;
10
- /**
11
- * GIF 图片资源 url 地址
12
- */
13
- remoteUrl: string;
14
- /**
15
- * 图片宽度
16
- */
17
- width: number;
18
- /**
19
- * 图片高度
20
- */
21
- height: number;
22
- }
23
- export default class GIFMessage extends BaseMessage<IGIFMessageBody> {
24
- constructor(content: IGIFMessageBody);
25
- static getObjectId(): number;
26
- static decode(aDecoder: MessageCodingData): BaseMessage<IGIFMessageBody>;
27
- encode(): MessageCodingData;
28
- }
@@ -1,32 +0,0 @@
1
- import { IUserInfo, IExtraData, IMentionedInfo, BaseMessage, MessageCodingData } from '../baseMessage';
2
- /**
3
- * 图片消息
4
- */
5
- export interface IImageMessageBody extends IExtraData, IMentionedInfo, IUserInfo {
6
- /**
7
- * 图片的略缩图
8
- * @description
9
- * 1. 必须是 base64 字符串, 图片类型为 JPG
10
- * 2. base64 字符串大小不可超过 80 KB
11
- * 3. 字符串前无媒体类型前缀
12
- */
13
- content: string;
14
- /**
15
- * 原图远程地址
16
- */
17
- imageUri: string;
18
- /**
19
- * 图片的宽
20
- */
21
- width?: number;
22
- /**
23
- * 图片的高
24
- */
25
- height?: number;
26
- }
27
- export default class ImageMessage extends BaseMessage<IImageMessageBody> {
28
- constructor(content: IImageMessageBody);
29
- static getObjectId(): number;
30
- static decode(aDecoder: MessageCodingData): BaseMessage<IImageMessageBody>;
31
- encode(): MessageCodingData;
32
- }
@@ -1,10 +0,0 @@
1
- import TextMessage, { ITextMessageBody } from './textMessage';
2
- import ImageMessage, { IImageMessageBody } from './imageMessage';
3
- import GIFMessage, { IGIFMessageBody } from './gifMessage';
4
- import HQVoiceMessage, { IHQVoiceMessageBody } from './voiceMessage';
5
- import FileMessage, { IFileMessageBody } from './fileMessage';
6
- import RecallCommandMessage, { IRecallCommandMessageBody } from './recallCommandMessage';
7
- import CommandMessage, { ICommandMessageBody } from './commandMessage';
8
- import { CustCommandMessage, CustNormalMessage, CustStorageMessage, CustStatusMessage } from './custMessage';
9
- export { TextMessage, ImageMessage, GIFMessage, HQVoiceMessage, FileMessage, CustCommandMessage, CustNormalMessage, CustStorageMessage, CustStatusMessage, RecallCommandMessage, CommandMessage };
10
- export type { ITextMessageBody, IImageMessageBody, IGIFMessageBody, IHQVoiceMessageBody, IFileMessageBody, IRecallCommandMessageBody, ICommandMessageBody };
@@ -1,18 +0,0 @@
1
- import { BaseMessage, IBaseMessageBody, MessageCodingData } from '../baseMessage';
2
- import { ConversationType } from '../statusTypes';
3
- /**
4
- * 撤回通知消息(被撤回消息摘要)
5
- */
6
- export interface IRecallCommandMessageBody extends IBaseMessageBody {
7
- sentTime: number;
8
- messageUId: string;
9
- conversationType: ConversationType;
10
- targetId: string;
11
- channelId?: string;
12
- }
13
- export default class RecallCommandMessage extends BaseMessage<IRecallCommandMessageBody> {
14
- constructor(content: IRecallCommandMessageBody);
15
- static getObjectId(): number;
16
- static decode(aDecoder: MessageCodingData): BaseMessage<IRecallCommandMessageBody>;
17
- encode(): MessageCodingData;
18
- }
@@ -1,16 +0,0 @@
1
- import { BaseMessage, IExtraData, IMentionedInfo, IUserInfo, MessageCodingData } from '../baseMessage';
2
- /**
3
- * 文本消息
4
- */
5
- export interface ITextMessageBody extends IUserInfo, IExtraData, IMentionedInfo {
6
- /**
7
- * 文本消息内容
8
- */
9
- content: string;
10
- }
11
- export default class TextMessage extends BaseMessage<ITextMessageBody> {
12
- constructor(content: ITextMessageBody);
13
- static getObjectId(): number;
14
- static decode(aDecoder: MessageCodingData): BaseMessage<ITextMessageBody>;
15
- encode(): MessageCodingData;
16
- }
@@ -1,21 +0,0 @@
1
- import { BaseMessage, IExtraData, IMentionedInfo, IUserInfo, MessageCodingData } from '../baseMessage';
2
- export interface IHQVoiceMessageBody extends IExtraData, IMentionedInfo, IUserInfo {
3
- /**
4
- * 远程媒体资源地址
5
- */
6
- remoteUrl: string;
7
- /**
8
- * 语音消息的时长,最大值为 60 (单位:秒)
9
- */
10
- duration: number;
11
- /**
12
- * 编解码类型,默认为 aac 音频
13
- */
14
- type?: string;
15
- }
16
- export default class HQVoiceMessage extends BaseMessage<IHQVoiceMessageBody> {
17
- constructor(content: IHQVoiceMessageBody);
18
- static getObjectId(): number;
19
- static decode(aDecoder: MessageCodingData): BaseMessage<IHQVoiceMessageBody>;
20
- encode(): MessageCodingData;
21
- }
File without changes