go-chat-sdk 1.0.2 → 1.0.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.
- package/dist/index.d.mts +48 -6
- package/dist/index.mjs +74 -9
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -32,8 +32,8 @@ interface Message {
|
|
|
32
32
|
created_at?: string;
|
|
33
33
|
}
|
|
34
34
|
interface SendMessageRequest {
|
|
35
|
-
/** 客户端生成的唯一消息ID */
|
|
36
|
-
client_msg_id
|
|
35
|
+
/** 客户端生成的唯一消息ID(可选,不提供时自动生成) */
|
|
36
|
+
client_msg_id?: string;
|
|
37
37
|
/** 房间ID */
|
|
38
38
|
room_id: string;
|
|
39
39
|
/** 消息类型 */
|
|
@@ -169,6 +169,31 @@ interface HistoryMessagesResponse {
|
|
|
169
169
|
messages: Message[];
|
|
170
170
|
hasMore: boolean;
|
|
171
171
|
}
|
|
172
|
+
interface CreateRoomRequest {
|
|
173
|
+
user_id_1: string;
|
|
174
|
+
user_id_2: string;
|
|
175
|
+
}
|
|
176
|
+
interface CreateRoomResponse {
|
|
177
|
+
room_id: string;
|
|
178
|
+
}
|
|
179
|
+
interface CreateGroupRoomRequest {
|
|
180
|
+
/** 群名称(可选,空则自动生成) */
|
|
181
|
+
name?: string;
|
|
182
|
+
/** 成员用户ID列表(至少2人) */
|
|
183
|
+
member_ids: string[];
|
|
184
|
+
}
|
|
185
|
+
interface RoomInfo {
|
|
186
|
+
room_id: string;
|
|
187
|
+
chat_type: string;
|
|
188
|
+
name: string;
|
|
189
|
+
avatar_url: string;
|
|
190
|
+
}
|
|
191
|
+
interface ListRoomsRequest {
|
|
192
|
+
user_id: string;
|
|
193
|
+
}
|
|
194
|
+
interface ListRoomsResponse {
|
|
195
|
+
rooms: RoomInfo[];
|
|
196
|
+
}
|
|
172
197
|
//#endregion
|
|
173
198
|
//#region utils.d.ts
|
|
174
199
|
/**
|
|
@@ -197,9 +222,6 @@ declare class EventEmitter {
|
|
|
197
222
|
*/
|
|
198
223
|
removeAllListeners(event?: ChatEventType): void;
|
|
199
224
|
}
|
|
200
|
-
/**
|
|
201
|
-
* 生成UUID v4
|
|
202
|
-
*/
|
|
203
225
|
declare function generateUUID(): string;
|
|
204
226
|
/**
|
|
205
227
|
* 检查字符串是否为有效的UUID
|
|
@@ -265,6 +287,18 @@ declare class APIClient {
|
|
|
265
287
|
* 注意:后端目前只提供了按 conversation 查询的接口
|
|
266
288
|
*/
|
|
267
289
|
getHistoryMessages(params: HistoryQueryParams): Promise<HistoryMessagesResponse>;
|
|
290
|
+
/**
|
|
291
|
+
* 创建或获取单聊房间
|
|
292
|
+
*/
|
|
293
|
+
createRoom(req: CreateRoomRequest): Promise<CreateRoomResponse>;
|
|
294
|
+
/**
|
|
295
|
+
* 创建群聊房间
|
|
296
|
+
*/
|
|
297
|
+
createGroupRoom(req: CreateGroupRoomRequest): Promise<CreateRoomResponse>;
|
|
298
|
+
/**
|
|
299
|
+
* 获取用户房间列表
|
|
300
|
+
*/
|
|
301
|
+
listRooms(req: ListRoomsRequest): Promise<ListRoomsResponse>;
|
|
268
302
|
}
|
|
269
303
|
/**
|
|
270
304
|
* API 错误类
|
|
@@ -476,6 +510,14 @@ declare class ChatSDK {
|
|
|
476
510
|
* 获取历史消息
|
|
477
511
|
*/
|
|
478
512
|
getHistoryMessages(params: HistoryQueryParams): Promise<HistoryMessagesResponse>;
|
|
513
|
+
/**
|
|
514
|
+
* 创建或获取单聊房间
|
|
515
|
+
*/
|
|
516
|
+
createRoom(req: CreateRoomRequest): Promise<CreateRoomResponse>;
|
|
517
|
+
/**
|
|
518
|
+
* 创建群聊房间
|
|
519
|
+
*/
|
|
520
|
+
createGroupRoom(req: CreateGroupRoomRequest): Promise<CreateRoomResponse>;
|
|
479
521
|
/**
|
|
480
522
|
* 生成 UUID(用于 client_msg_id)
|
|
481
523
|
*/
|
|
@@ -490,4 +532,4 @@ declare class ChatSDK {
|
|
|
490
532
|
private setupEventForwarding;
|
|
491
533
|
}
|
|
492
534
|
//#endregion
|
|
493
|
-
export { APIClient, APIError, BatchGenerateRequest, BatchUserResponse, ChatEvent, ChatEventDataMap, ChatEventType, ChatSDK, ChatSDK as default, ChatSDKOptions, ChatType, ConnectData, ConnectionState, ConnectionStateChangeData, DisconnectData, ErrorData, EventEmitter, EventListener, FilePayload, HistoryMessagesResponse, HistoryQueryParams, ImagePayload, LoginRequest, Message, MessageReceivedData, MessageSentData, MessageType, RegisterRequest, SendMessageRequest, TextPayload, UserResponse, VideoPayload, WebSocketManager, createError, createStateChange, delay, generateUUID, isValidUUID };
|
|
535
|
+
export { APIClient, APIError, BatchGenerateRequest, BatchUserResponse, ChatEvent, ChatEventDataMap, ChatEventType, ChatSDK, ChatSDK as default, ChatSDKOptions, ChatType, ConnectData, ConnectionState, ConnectionStateChangeData, CreateGroupRoomRequest, CreateRoomRequest, CreateRoomResponse, DisconnectData, ErrorData, EventEmitter, EventListener, FilePayload, HistoryMessagesResponse, HistoryQueryParams, ImagePayload, ListRoomsRequest, ListRoomsResponse, LoginRequest, Message, MessageReceivedData, MessageSentData, MessageType, RegisterRequest, RoomInfo, SendMessageRequest, TextPayload, UserResponse, VideoPayload, WebSocketManager, createError, createStateChange, delay, generateUUID, isValidUUID };
|
package/dist/index.mjs
CHANGED
|
@@ -142,6 +142,24 @@ var APIClient = class {
|
|
|
142
142
|
hasMore: messages.length === (params.page_size || 20)
|
|
143
143
|
};
|
|
144
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* 创建或获取单聊房间
|
|
147
|
+
*/
|
|
148
|
+
async createRoom(req) {
|
|
149
|
+
return this.request("POST", "/api/v1/rooms/single", req);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 创建群聊房间
|
|
153
|
+
*/
|
|
154
|
+
async createGroupRoom(req) {
|
|
155
|
+
return this.request("POST", "/api/v1/rooms/group", req);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 获取用户房间列表
|
|
159
|
+
*/
|
|
160
|
+
async listRooms(req) {
|
|
161
|
+
return this.request("POST", "/api/v1/rooms/list", req);
|
|
162
|
+
}
|
|
145
163
|
};
|
|
146
164
|
/**
|
|
147
165
|
* API 错误类
|
|
@@ -222,13 +240,23 @@ var EventEmitter = class {
|
|
|
222
240
|
}
|
|
223
241
|
};
|
|
224
242
|
/**
|
|
225
|
-
* 生成UUID
|
|
243
|
+
* 生成UUID v7
|
|
226
244
|
*/
|
|
245
|
+
const HEX_TABLE = [];
|
|
246
|
+
for (let i = 0; i < 256; i++) HEX_TABLE.push((i + 256).toString(16).substring(1));
|
|
247
|
+
const buffer = new Uint8Array(16);
|
|
227
248
|
function generateUUID() {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
249
|
+
crypto.getRandomValues(buffer);
|
|
250
|
+
const timestamp = Date.now();
|
|
251
|
+
buffer[0] = Math.floor(timestamp / 1099511627776);
|
|
252
|
+
buffer[1] = Math.floor(timestamp / 4294967296) & 255;
|
|
253
|
+
buffer[2] = Math.floor(timestamp / 16777216) & 255;
|
|
254
|
+
buffer[3] = Math.floor(timestamp / 65536) & 255;
|
|
255
|
+
buffer[4] = Math.floor(timestamp / 256) & 255;
|
|
256
|
+
buffer[5] = timestamp & 255;
|
|
257
|
+
buffer[6] = buffer[6] & 15 | 112;
|
|
258
|
+
buffer[8] = buffer[8] & 63 | 128;
|
|
259
|
+
return HEX_TABLE[buffer[0]] + HEX_TABLE[buffer[1]] + HEX_TABLE[buffer[2]] + HEX_TABLE[buffer[3]] + "-" + HEX_TABLE[buffer[4]] + HEX_TABLE[buffer[5]] + "-" + HEX_TABLE[buffer[6]] + HEX_TABLE[buffer[7]] + "-" + HEX_TABLE[buffer[8]] + HEX_TABLE[buffer[9]] + "-" + HEX_TABLE[buffer[10]] + HEX_TABLE[buffer[11]] + HEX_TABLE[buffer[12]] + HEX_TABLE[buffer[13]] + HEX_TABLE[buffer[14]] + HEX_TABLE[buffer[15]];
|
|
232
260
|
}
|
|
233
261
|
/**
|
|
234
262
|
* 检查字符串是否为有效的UUID
|
|
@@ -2057,6 +2085,18 @@ var require_event_target = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
2057
2085
|
ErrorEvent,
|
|
2058
2086
|
Event,
|
|
2059
2087
|
EventTarget: {
|
|
2088
|
+
/**
|
|
2089
|
+
* Register an event listener.
|
|
2090
|
+
*
|
|
2091
|
+
* @param {String} type A string representing the event type to listen for
|
|
2092
|
+
* @param {(Function|Object)} handler The listener to add
|
|
2093
|
+
* @param {Object} [options] An options object specifies characteristics about
|
|
2094
|
+
* the event listener
|
|
2095
|
+
* @param {Boolean} [options.once=false] A `Boolean` indicating that the
|
|
2096
|
+
* listener should be invoked at most once after being added. If `true`,
|
|
2097
|
+
* the listener would be automatically removed when invoked.
|
|
2098
|
+
* @public
|
|
2099
|
+
*/
|
|
2060
2100
|
addEventListener(type, handler, options = {}) {
|
|
2061
2101
|
for (const listener of this.listeners(type)) if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) return;
|
|
2062
2102
|
let wrapper;
|
|
@@ -2093,6 +2133,13 @@ var require_event_target = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
2093
2133
|
if (options.once) this.once(type, wrapper);
|
|
2094
2134
|
else this.on(type, wrapper);
|
|
2095
2135
|
},
|
|
2136
|
+
/**
|
|
2137
|
+
* Remove an event listener.
|
|
2138
|
+
*
|
|
2139
|
+
* @param {String} type A string representing the event type to remove
|
|
2140
|
+
* @param {(Function|Object)} handler The listener to remove
|
|
2141
|
+
* @public
|
|
2142
|
+
*/
|
|
2096
2143
|
removeEventListener(type, handler) {
|
|
2097
2144
|
for (const listener of this.listeners(type)) if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {
|
|
2098
2145
|
this.removeListener(type, listener);
|
|
@@ -3939,12 +3986,18 @@ var WebSocketManager = class {
|
|
|
3939
3986
|
*/
|
|
3940
3987
|
handleMessage(data) {
|
|
3941
3988
|
try {
|
|
3942
|
-
const
|
|
3943
|
-
if (!
|
|
3944
|
-
this.emitter.emit("error", createError("INVALID_MESSAGE", "Received
|
|
3989
|
+
const messages = JSON.parse(data);
|
|
3990
|
+
if (!Array.isArray(messages)) {
|
|
3991
|
+
this.emitter.emit("error", createError("INVALID_MESSAGE", "Received non-array message format"));
|
|
3945
3992
|
return;
|
|
3946
3993
|
}
|
|
3947
|
-
|
|
3994
|
+
for (const message of messages) {
|
|
3995
|
+
if (!message.msg_id || !message.sender_id) {
|
|
3996
|
+
this.emitter.emit("error", createError("INVALID_MESSAGE", "Received invalid message format"));
|
|
3997
|
+
continue;
|
|
3998
|
+
}
|
|
3999
|
+
this.emitter.emit("message:received", { message });
|
|
4000
|
+
}
|
|
3948
4001
|
} catch (error) {
|
|
3949
4002
|
this.emitter.emit("error", createError("MESSAGE_PARSE_ERROR", data, error instanceof Error ? error : void 0));
|
|
3950
4003
|
}
|
|
@@ -4216,6 +4269,18 @@ var ChatSDK = class {
|
|
|
4216
4269
|
return this.api.getHistoryMessages(params);
|
|
4217
4270
|
}
|
|
4218
4271
|
/**
|
|
4272
|
+
* 创建或获取单聊房间
|
|
4273
|
+
*/
|
|
4274
|
+
async createRoom(req) {
|
|
4275
|
+
return this.api.createRoom(req);
|
|
4276
|
+
}
|
|
4277
|
+
/**
|
|
4278
|
+
* 创建群聊房间
|
|
4279
|
+
*/
|
|
4280
|
+
async createGroupRoom(req) {
|
|
4281
|
+
return this.api.createGroupRoom(req);
|
|
4282
|
+
}
|
|
4283
|
+
/**
|
|
4219
4284
|
* 生成 UUID(用于 client_msg_id)
|
|
4220
4285
|
*/
|
|
4221
4286
|
generateMessageId() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "go-chat-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Type-safe Chat SDK for Go-Chat IM service",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.mjs",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/node": "^25.6.0",
|
|
27
27
|
"@types/ws": "^8.18.1",
|
|
28
|
-
"tsdown": "^0.21.
|
|
28
|
+
"tsdown": "^0.21.10",
|
|
29
29
|
"typescript": "^6.0.3",
|
|
30
30
|
"vitest": "^4.1.5",
|
|
31
31
|
"ws": "^8.20.0"
|