@snowluma/sdk 0.1.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.
Files changed (120) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +259 -0
  3. package/VERSIONING.md +43 -0
  4. package/dist/actions.d.ts +4 -0
  5. package/dist/actions.d.ts.map +1 -0
  6. package/dist/actions.js +121 -0
  7. package/dist/actions.js.map +1 -0
  8. package/dist/client/api-client.d.ts +151 -0
  9. package/dist/client/api-client.d.ts.map +1 -0
  10. package/dist/client/api-client.js +331 -0
  11. package/dist/client/api-client.js.map +1 -0
  12. package/dist/client/http-client.d.ts +25 -0
  13. package/dist/client/http-client.d.ts.map +1 -0
  14. package/dist/client/http-client.js +81 -0
  15. package/dist/client/http-client.js.map +1 -0
  16. package/dist/client/index.d.ts +6 -0
  17. package/dist/client/index.d.ts.map +1 -0
  18. package/dist/client/index.js +4 -0
  19. package/dist/client/index.js.map +1 -0
  20. package/dist/client/websocket-client.d.ts +65 -0
  21. package/dist/client/websocket-client.d.ts.map +1 -0
  22. package/dist/client/websocket-client.js +309 -0
  23. package/dist/client/websocket-client.js.map +1 -0
  24. package/dist/client/websocket-types.d.ts +53 -0
  25. package/dist/client/websocket-types.d.ts.map +1 -0
  26. package/dist/client/websocket-types.js +2 -0
  27. package/dist/client/websocket-types.js.map +1 -0
  28. package/dist/client/websocket-utils.d.ts +10 -0
  29. package/dist/client/websocket-utils.d.ts.map +1 -0
  30. package/dist/client/websocket-utils.js +68 -0
  31. package/dist/client/websocket-utils.js.map +1 -0
  32. package/dist/emitter.d.ts +11 -0
  33. package/dist/emitter.d.ts.map +1 -0
  34. package/dist/emitter.js +34 -0
  35. package/dist/emitter.js.map +1 -0
  36. package/dist/errors.d.ts +39 -0
  37. package/dist/errors.d.ts.map +1 -0
  38. package/dist/errors.js +71 -0
  39. package/dist/errors.js.map +1 -0
  40. package/dist/events/command.d.ts +4 -0
  41. package/dist/events/command.d.ts.map +1 -0
  42. package/dist/events/command.js +46 -0
  43. package/dist/events/command.js.map +1 -0
  44. package/dist/events/context.d.ts +6 -0
  45. package/dist/events/context.d.ts.map +1 -0
  46. package/dist/events/context.js +65 -0
  47. package/dist/events/context.js.map +1 -0
  48. package/dist/events/guards.d.ts +11 -0
  49. package/dist/events/guards.d.ts.map +1 -0
  50. package/dist/events/guards.js +26 -0
  51. package/dist/events/guards.js.map +1 -0
  52. package/dist/events/index.d.ts +5 -0
  53. package/dist/events/index.d.ts.map +1 -0
  54. package/dist/events/index.js +5 -0
  55. package/dist/events/index.js.map +1 -0
  56. package/dist/events/types.d.ts +52 -0
  57. package/dist/events/types.d.ts.map +1 -0
  58. package/dist/events/types.js +2 -0
  59. package/dist/events/types.js.map +1 -0
  60. package/dist/index.d.ts +13 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +8 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/internal/abort.d.ts +11 -0
  65. package/dist/internal/abort.d.ts.map +1 -0
  66. package/dist/internal/abort.js +62 -0
  67. package/dist/internal/abort.js.map +1 -0
  68. package/dist/internal/json.d.ts +8 -0
  69. package/dist/internal/json.d.ts.map +1 -0
  70. package/dist/internal/json.js +60 -0
  71. package/dist/internal/json.js.map +1 -0
  72. package/dist/messages/chain.d.ts +100 -0
  73. package/dist/messages/chain.d.ts.map +1 -0
  74. package/dist/messages/chain.js +220 -0
  75. package/dist/messages/chain.js.map +1 -0
  76. package/dist/messages/cq-format.d.ts +5 -0
  77. package/dist/messages/cq-format.d.ts.map +1 -0
  78. package/dist/messages/cq-format.js +23 -0
  79. package/dist/messages/cq-format.js.map +1 -0
  80. package/dist/messages/cq.d.ts +5 -0
  81. package/dist/messages/cq.d.ts.map +1 -0
  82. package/dist/messages/cq.js +98 -0
  83. package/dist/messages/cq.js.map +1 -0
  84. package/dist/messages/index.d.ts +29 -0
  85. package/dist/messages/index.d.ts.map +1 -0
  86. package/dist/messages/index.js +10 -0
  87. package/dist/messages/index.js.map +1 -0
  88. package/dist/messages/segments.d.ts +24 -0
  89. package/dist/messages/segments.d.ts.map +1 -0
  90. package/dist/messages/segments.js +65 -0
  91. package/dist/messages/segments.js.map +1 -0
  92. package/dist/types/actions.d.ts +474 -0
  93. package/dist/types/actions.d.ts.map +1 -0
  94. package/dist/types/actions.js +2 -0
  95. package/dist/types/actions.js.map +1 -0
  96. package/dist/types/events.d.ts +60 -0
  97. package/dist/types/events.d.ts.map +1 -0
  98. package/dist/types/events.js +2 -0
  99. package/dist/types/events.js.map +1 -0
  100. package/dist/types/index.d.ts +7 -0
  101. package/dist/types/index.d.ts.map +1 -0
  102. package/dist/types/index.js +7 -0
  103. package/dist/types/index.js.map +1 -0
  104. package/dist/types/json.d.ts +37 -0
  105. package/dist/types/json.d.ts.map +1 -0
  106. package/dist/types/json.js +2 -0
  107. package/dist/types/json.js.map +1 -0
  108. package/dist/types/messages.d.ts +90 -0
  109. package/dist/types/messages.d.ts.map +1 -0
  110. package/dist/types/messages.js +2 -0
  111. package/dist/types/messages.js.map +1 -0
  112. package/dist/types/params.d.ts +228 -0
  113. package/dist/types/params.d.ts.map +1 -0
  114. package/dist/types/params.js +2 -0
  115. package/dist/types/params.js.map +1 -0
  116. package/dist/types/results.d.ts +83 -0
  117. package/dist/types/results.d.ts.map +1 -0
  118. package/dist/types/results.js +2 -0
  119. package/dist/types/results.js.map +1 -0
  120. package/package.json +95 -0
@@ -0,0 +1,331 @@
1
+ import { createSnowLumaApiError } from '../errors';
2
+ import { normalizeMessage } from '../messages/index';
3
+ /**
4
+ * Base class for SnowLuma API clients.
5
+ *
6
+ * Concrete transports implement request(); this facade adds typed OneBot actions,
7
+ * message normalization, and failed-response error handling.
8
+ */
9
+ export class SnowLumaApiClient {
10
+ /** Sends a OneBot action and returns data, throwing SnowLumaApiError on failed responses. */
11
+ async call(action, params, options) {
12
+ const response = await this.request(action, params, options);
13
+ if (response.status !== 'ok' || response.retcode !== 0) {
14
+ throw createSnowLumaApiError(response);
15
+ }
16
+ return response.data;
17
+ }
18
+ getLoginInfo(options) {
19
+ return this.call('get_login_info', {}, options);
20
+ }
21
+ getStatus(options) {
22
+ return this.call('get_status', {}, options);
23
+ }
24
+ getVersionInfo(options) {
25
+ return this.call('get_version_info', {}, options);
26
+ }
27
+ canSendImage(options) {
28
+ return this.call('can_send_image', {}, options);
29
+ }
30
+ canSendRecord(options) {
31
+ return this.call('can_send_record', {}, options);
32
+ }
33
+ sendMsg(params, options) {
34
+ return this.call('send_msg', { ...params, message: normalizeMessage(params.message) }, options);
35
+ }
36
+ sendPrivateMessage(userId, message, options) {
37
+ return this.call('send_private_msg', {
38
+ user_id: userId,
39
+ message: normalizeMessage(message),
40
+ auto_escape: options?.autoEscape,
41
+ }, options);
42
+ }
43
+ sendGroupMessage(groupId, message, options) {
44
+ return this.call('send_group_msg', {
45
+ group_id: groupId,
46
+ message: normalizeMessage(message),
47
+ auto_escape: options?.autoEscape,
48
+ }, options);
49
+ }
50
+ getMessage(messageId, options) {
51
+ return this.call('get_msg', { message_id: messageId }, options);
52
+ }
53
+ deleteMessage(messageId, options) {
54
+ return this.call('delete_msg', { message_id: messageId }, options);
55
+ }
56
+ getFriendList(options) {
57
+ return this.call('get_friend_list', {}, options);
58
+ }
59
+ getStrangerInfo(userId, options) {
60
+ return this.call('get_stranger_info', { user_id: userId }, options);
61
+ }
62
+ deleteFriend(userId, options) {
63
+ return this.call('delete_friend', { user_id: userId, block: options?.block }, options);
64
+ }
65
+ getGroupList(options) {
66
+ return this.call('get_group_list', { no_cache: options?.noCache }, options);
67
+ }
68
+ getGroupInfo(groupId, options) {
69
+ return this.call('get_group_info', { group_id: groupId, no_cache: options?.noCache }, options);
70
+ }
71
+ getGroupMemberList(groupId, options) {
72
+ return this.call('get_group_member_list', { group_id: groupId, no_cache: options?.noCache }, options);
73
+ }
74
+ getGroupMemberInfo(groupId, userId, options) {
75
+ return this.call('get_group_member_info', {
76
+ group_id: groupId,
77
+ user_id: userId,
78
+ no_cache: options?.noCache,
79
+ }, options);
80
+ }
81
+ getGroupHonorInfo(params, options) {
82
+ return this.call('get_group_honor_info', params, options);
83
+ }
84
+ getGroupSystemMessages(options) {
85
+ return this.call('get_group_system_msg', {}, options);
86
+ }
87
+ setGroupKick(groupId, userId, options) {
88
+ return this.call('set_group_kick', {
89
+ group_id: groupId,
90
+ user_id: userId,
91
+ reject_add_request: options?.rejectAddRequest,
92
+ }, options);
93
+ }
94
+ setGroupBan(groupId, userId, duration, options) {
95
+ return this.call('set_group_ban', { group_id: groupId, user_id: userId, duration }, options);
96
+ }
97
+ setGroupWholeBan(groupId, enable = true, options) {
98
+ return this.call('set_group_whole_ban', { group_id: groupId, enable }, options);
99
+ }
100
+ setGroupAdmin(groupId, userId, enable = true, options) {
101
+ return this.call('set_group_admin', { group_id: groupId, user_id: userId, enable }, options);
102
+ }
103
+ setGroupCard(groupId, userId, card = '', options) {
104
+ return this.call('set_group_card', { group_id: groupId, user_id: userId, card }, options);
105
+ }
106
+ setGroupName(groupId, name, options) {
107
+ return this.call('set_group_name', { group_id: groupId, group_name: name }, options);
108
+ }
109
+ setGroupLeave(groupId, options) {
110
+ return this.call('set_group_leave', { group_id: groupId }, options);
111
+ }
112
+ setGroupSpecialTitle(groupId, userId, title = '', options) {
113
+ return this.call('set_group_special_title', {
114
+ group_id: groupId,
115
+ user_id: userId,
116
+ special_title: title,
117
+ }, options);
118
+ }
119
+ uploadGroupFile(groupId, file, options = {}) {
120
+ return this.call('upload_group_file', {
121
+ group_id: groupId,
122
+ file,
123
+ name: options.name,
124
+ folder: options.folder,
125
+ folder_id: options.folderId,
126
+ upload_file: options.uploadFile,
127
+ }, options);
128
+ }
129
+ uploadPrivateFile(userId, file, options = {}) {
130
+ return this.call('upload_private_file', {
131
+ user_id: userId,
132
+ file,
133
+ name: options.name,
134
+ upload_file: options.uploadFile,
135
+ }, options);
136
+ }
137
+ getGroupFileUrl(groupId, fileId, options) {
138
+ return this.call('get_group_file_url', { group_id: groupId, file_id: fileId, busid: options?.busid }, options);
139
+ }
140
+ getGroupRootFiles(groupId, options) {
141
+ return this.call('get_group_root_files', { group_id: groupId }, options);
142
+ }
143
+ getGroupFilesByFolder(groupId, folderId = '/', options) {
144
+ return this.call('get_group_files_by_folder', { group_id: groupId, folder_id: folderId }, options);
145
+ }
146
+ deleteGroupFile(groupId, fileId, options) {
147
+ return this.call('delete_group_file', { group_id: groupId, file_id: fileId }, options);
148
+ }
149
+ moveGroupFile(groupId, fileId, parentDirectory, targetDirectory, options) {
150
+ return this.call('move_group_file', {
151
+ group_id: groupId,
152
+ file_id: fileId,
153
+ parent_directory: parentDirectory,
154
+ target_directory: targetDirectory,
155
+ }, options);
156
+ }
157
+ createGroupFileFolder(groupId, name, parentId = '/', options) {
158
+ return this.call('create_group_file_folder', { group_id: groupId, name, parent_id: parentId }, options);
159
+ }
160
+ deleteGroupFileFolder(groupId, folderId, options) {
161
+ return this.call('delete_group_file_folder', { group_id: groupId, folder_id: folderId }, options);
162
+ }
163
+ renameGroupFileFolder(groupId, folderId, newName, options) {
164
+ return this.call('rename_group_file_folder', {
165
+ group_id: groupId,
166
+ folder_id: folderId,
167
+ new_folder_name: newName,
168
+ }, options);
169
+ }
170
+ getPrivateFileUrl(userId, fileId, fileHash, options) {
171
+ return this.call('get_private_file_url', { user_id: userId, file_id: fileId, file_hash: fileHash }, options);
172
+ }
173
+ setFriendAddRequest(flag, approve = true, options) {
174
+ return this.call('set_friend_add_request', { flag, approve }, options);
175
+ }
176
+ setGroupAddRequest(flag, params = {}) {
177
+ return this.call('set_group_add_request', {
178
+ flag,
179
+ sub_type: params.subType,
180
+ type: params.type,
181
+ approve: params.approve,
182
+ reason: params.reason,
183
+ }, params);
184
+ }
185
+ sendLike(userId, times = 1, options) {
186
+ return this.call('send_like', { user_id: userId, times }, options);
187
+ }
188
+ friendPoke(userId, options) {
189
+ return this.call('friend_poke', { user_id: userId, target_id: options?.targetId }, options);
190
+ }
191
+ groupPoke(groupId, userId, options) {
192
+ return this.call('group_poke', { group_id: groupId, user_id: userId }, options);
193
+ }
194
+ sendPoke(userId, options) {
195
+ return this.call('send_poke', { user_id: userId, group_id: options?.groupId }, options);
196
+ }
197
+ setEssenceMessage(messageId, options) {
198
+ return this.call('set_essence_msg', { message_id: messageId }, options);
199
+ }
200
+ deleteEssenceMessage(messageId, options) {
201
+ return this.call('delete_essence_msg', { message_id: messageId }, options);
202
+ }
203
+ getEssenceMessageList(groupId, options) {
204
+ return this.call('get_essence_msg_list', { group_id: groupId }, options);
205
+ }
206
+ setGroupReaction(params, options) {
207
+ return this.call('set_group_reaction', params, options);
208
+ }
209
+ getGroupMessageHistory(params, options) {
210
+ return this.call('get_group_msg_history', params, options);
211
+ }
212
+ getFriendMessageHistory(params, options) {
213
+ return this.call('get_friend_msg_history', params, options);
214
+ }
215
+ markGroupMessageAsRead(messageId, groupId, options) {
216
+ return this.call('mark_group_msg_as_read', { message_id: messageId, group_id: groupId }, options);
217
+ }
218
+ markPrivateMessageAsRead(messageId, userId, options) {
219
+ return this.call('mark_private_msg_as_read', { message_id: messageId, user_id: userId }, options);
220
+ }
221
+ markMessageAsRead(messageId, targetId, options) {
222
+ return this.call('mark_msg_as_read', { message_id: messageId, target_id: targetId }, options);
223
+ }
224
+ getRKey(options) {
225
+ return this.call('get_rkey', {}, options);
226
+ }
227
+ sendGroupNotice(groupId, content, options = {}) {
228
+ return this.call('_send_group_notice', {
229
+ group_id: groupId,
230
+ content,
231
+ image: options.image,
232
+ pinned: options.pinned,
233
+ type: options.type,
234
+ confirm_required: options.confirmRequired,
235
+ }, options);
236
+ }
237
+ getGroupNotice(groupId, options) {
238
+ return this.call('_get_group_notice', { group_id: groupId }, options);
239
+ }
240
+ uploadForwardMessage(params, options) {
241
+ return this.call('upload_forward_msg', params, options);
242
+ }
243
+ sendForwardMessage(params, options) {
244
+ return this.call('send_forward_msg', params, options);
245
+ }
246
+ sendGroupForwardMessage(groupId, messages, options) {
247
+ return this.call('send_group_forward_msg', {
248
+ group_id: groupId,
249
+ messages: normalizeMessage(messages),
250
+ }, options);
251
+ }
252
+ sendPrivateForwardMessage(userId, messages, options) {
253
+ return this.call('send_private_forward_msg', {
254
+ user_id: userId,
255
+ messages: normalizeMessage(messages),
256
+ }, options);
257
+ }
258
+ getForwardMessage(params, options) {
259
+ return this.call('get_forward_msg', params, options);
260
+ }
261
+ getImage(params, options) {
262
+ return this.call('get_image', params, options);
263
+ }
264
+ getRecord(params, options) {
265
+ return this.call('get_record', params, options);
266
+ }
267
+ getCookies(params = {}, options) {
268
+ return this.call('get_cookies', params, options);
269
+ }
270
+ getCsrfToken(options) {
271
+ return this.call('get_csrf_token', {}, options);
272
+ }
273
+ getCredentials(params = {}, options) {
274
+ return this.call('get_credentials', params, options);
275
+ }
276
+ cleanCache(options) {
277
+ return this.call('clean_cache', {}, options);
278
+ }
279
+ setFriendRemark(userId, remark, options) {
280
+ return this.call('set_friend_remark', { user_id: userId, remark }, options);
281
+ }
282
+ setMsgEmojiLike(messageId, emojiId, set = true, options) {
283
+ return this.call('set_msg_emoji_like', { message_id: messageId, emoji_id: emojiId, set }, options);
284
+ }
285
+ markAllAsRead(options) {
286
+ return this.call('_mark_all_as_read', {}, options);
287
+ }
288
+ getGroupFileSystemInfo(groupId, options) {
289
+ return this.call('get_group_file_system_info', { group_id: groupId }, options);
290
+ }
291
+ checkUrlSafely(options) {
292
+ return this.call('check_url_safely', {}, options);
293
+ }
294
+ downloadFile(params, options) {
295
+ return this.call('download_file', params, options);
296
+ }
297
+ setQqProfile(params, options) {
298
+ return this.call('set_qq_profile', {
299
+ nickname: params.nickname,
300
+ personal_note: params.personalNote,
301
+ }, options);
302
+ }
303
+ setOnlineStatus(status, params = {}) {
304
+ return this.call('set_online_status', {
305
+ status,
306
+ ext_status: params.extStatus,
307
+ battery_status: params.batteryStatus,
308
+ }, params);
309
+ }
310
+ getClientKey(options) {
311
+ return this.call('get_clientkey', {}, options);
312
+ }
313
+ getGroupInfoEx(groupId, options) {
314
+ return this.call('get_group_info_ex', { group_id: groupId }, options);
315
+ }
316
+ getGroupDetailInfo(groupId, options) {
317
+ return this.call('get_group_detail_info', { group_id: groupId }, options);
318
+ }
319
+ /** Calls any registered SnowLuma action and returns the response data. */
320
+ raw(action, params, options) {
321
+ return this.call(action, params, options);
322
+ }
323
+ /** Calls any registered SnowLuma action and preserves the full OneBot response envelope. */
324
+ rawResponse(action, params, options) {
325
+ return this.request(action, params, options);
326
+ }
327
+ }
328
+ export function toJsonObject(value) {
329
+ return value ?? {};
330
+ }
331
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/client/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { SnowLumaApiClient } from './api-client';
2
+ import type { ActionParams, ActionResult, ApiResponse, RequestOptions, SnowLumaAction, SnowLumaClientOptions } from '../types/index';
3
+ /** Options for the HTTP transport client. */
4
+ export interface SnowLumaHttpClientOptions extends SnowLumaClientOptions {
5
+ /** OneBot HTTP endpoint. Defaults to http://127.0.0.1:3000/. */
6
+ baseUrl?: string;
7
+ /** Custom fetch implementation for tests or non-standard runtimes. */
8
+ fetch?: typeof fetch;
9
+ /** Extra headers sent with every request. Authorization is managed by accessToken. */
10
+ headers?: Record<string, string>;
11
+ }
12
+ /** OneBot HTTP client for SnowLuma. */
13
+ export declare class SnowLumaHttpClient extends SnowLumaApiClient {
14
+ readonly baseUrl: string;
15
+ readonly accessToken?: string;
16
+ readonly requestTimeoutMs: number;
17
+ private readonly fetchImpl;
18
+ private readonly headers;
19
+ constructor(options?: SnowLumaHttpClientOptions);
20
+ /** Sends one OneBot action over HTTP and returns the raw response envelope. */
21
+ request<TAction extends SnowLumaAction>(action: TAction, params?: ActionParams<TAction>, options?: RequestOptions): Promise<ApiResponse<ActionResult<TAction>>>;
22
+ private createHeaders;
23
+ }
24
+ export declare function createHttpClient(options?: SnowLumaHttpClientOptions): SnowLumaHttpClient;
25
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,cAAc,CAAC;AAG/D,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,6CAA6C;AAC7C,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;IACtE,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,uCAAuC;AACvC,qBAAa,kBAAmB,SAAQ,iBAAiB;IACvD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,GAAE,yBAA8B;IAanD,+EAA+E;IAChE,OAAO,CAAC,OAAO,SAAS,cAAc,EACnD,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IA0C9C,OAAO,CAAC,aAAa;CAWtB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,kBAAkB,CAExF"}
@@ -0,0 +1,81 @@
1
+ import { SnowLumaAbortError, SnowLumaConnectionError, SnowLumaParseError, SnowLumaTimeoutError, SnowLumaTransportError, } from '../errors';
2
+ import { SnowLumaApiClient, toJsonObject } from './api-client';
3
+ import { createRequestAbortState, isAbortError } from '../internal/abort';
4
+ import { assertApiResponse } from '../internal/json';
5
+ /** OneBot HTTP client for SnowLuma. */
6
+ export class SnowLumaHttpClient extends SnowLumaApiClient {
7
+ baseUrl;
8
+ accessToken;
9
+ requestTimeoutMs;
10
+ fetchImpl;
11
+ headers;
12
+ constructor(options = {}) {
13
+ super();
14
+ this.baseUrl = options.baseUrl ?? 'http://127.0.0.1:3000/';
15
+ this.accessToken = options.accessToken;
16
+ this.requestTimeoutMs = options.requestTimeoutMs ?? 30_000;
17
+ this.fetchImpl = options.fetch ?? globalThis.fetch;
18
+ this.headers = options.headers ?? {};
19
+ if (!this.fetchImpl) {
20
+ throw new SnowLumaConnectionError('No fetch implementation is available');
21
+ }
22
+ }
23
+ /** Sends one OneBot action over HTTP and returns the raw response envelope. */
24
+ async request(action, params, options) {
25
+ const timeoutMs = options?.timeoutMs ?? this.requestTimeoutMs;
26
+ const abort = createRequestAbortState(timeoutMs, options?.signal);
27
+ try {
28
+ const response = await this.fetchImpl(this.baseUrl, {
29
+ method: 'POST',
30
+ headers: this.createHeaders(),
31
+ body: JSON.stringify({
32
+ action,
33
+ params: toJsonObject(params),
34
+ echo: options?.echo,
35
+ }),
36
+ signal: abort.signal,
37
+ });
38
+ const text = await response.text();
39
+ let parsed;
40
+ try {
41
+ parsed = text ? JSON.parse(text) : null;
42
+ }
43
+ catch (error) {
44
+ throw new SnowLumaParseError(`SnowLuma returned non-JSON HTTP ${response.status}`, { cause: error });
45
+ }
46
+ const apiResponse = assertApiResponse(parsed);
47
+ return apiResponse;
48
+ }
49
+ catch (error) {
50
+ if (error instanceof SnowLumaTransportError)
51
+ throw error;
52
+ if (isAbortError(error) || abort.signal.aborted) {
53
+ if (abort.isTimedOut()) {
54
+ throw new SnowLumaTimeoutError(`SnowLuma request timed out after ${timeoutMs}ms`, timeoutMs, { cause: error });
55
+ }
56
+ if (abort.isExternallyAborted()) {
57
+ throw new SnowLumaAbortError('SnowLuma request aborted', { cause: error });
58
+ }
59
+ }
60
+ throw new SnowLumaConnectionError('SnowLuma HTTP request failed', { cause: error });
61
+ }
62
+ finally {
63
+ abort.cleanup();
64
+ }
65
+ }
66
+ createHeaders() {
67
+ const headers = {
68
+ 'Content-Type': 'application/json',
69
+ Accept: 'application/json',
70
+ ...this.headers,
71
+ };
72
+ if (this.accessToken) {
73
+ headers.Authorization = `Bearer ${this.accessToken}`;
74
+ }
75
+ return headers;
76
+ }
77
+ }
78
+ export function createHttpClient(options) {
79
+ return new SnowLumaHttpClient(options);
80
+ }
81
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/client/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { SnowLumaApiClient } from './api-client';
2
+ export { SnowLumaHttpClient, createHttpClient } from './http-client';
3
+ export { SnowLumaWebSocketClient, createWebSocketClient } from './websocket-client';
4
+ export type { SnowLumaHttpClientOptions } from './http-client';
5
+ export type { ReconnectOptions, SnowLumaWebSocketClientOptions, SnowLumaWebSocketEvents, WebSocketCloseInfo, WebSocketConstructor, } from './websocket-client';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,YAAY,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { SnowLumaApiClient } from './api-client';
2
+ export { SnowLumaHttpClient, createHttpClient } from './http-client';
3
+ export { SnowLumaWebSocketClient, createWebSocketClient } from './websocket-client';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { type CommandHandler, type CommandOptions, type EventHandler, type EventMiddleware, type EventPredicate } from '../events/index';
2
+ import { SnowLumaApiClient } from './api-client';
3
+ import type { ActionParams, ActionResult, ApiResponse, OneBotMessageEvent, OneBotMetaEvent, OneBotNoticeEvent, OneBotRequestEvent, RequestOptions, SnowLumaAction, SnowLumaEvent, WsRole } from '../types/index';
4
+ import type { SnowLumaWebSocketClientOptions, SnowLumaWebSocketEvents } from './websocket-types';
5
+ export type { ReconnectOptions, SnowLumaWebSocketClientOptions, SnowLumaWebSocketEvents, WebSocketCloseInfo, WebSocketConstructor, } from './websocket-types';
6
+ /** OneBot WebSocket client for SnowLuma APIs and realtime events. */
7
+ export declare class SnowLumaWebSocketClient extends SnowLumaApiClient {
8
+ readonly url: string;
9
+ readonly accessToken?: string;
10
+ readonly requestTimeoutMs: number;
11
+ readonly role: WsRole;
12
+ private readonly protocols?;
13
+ private readonly WebSocketCtor;
14
+ private readonly reconnect;
15
+ private readonly emitter;
16
+ private readonly pending;
17
+ private readonly middlewares;
18
+ private socket;
19
+ private connectPromise;
20
+ private reconnectTimer;
21
+ private reconnectAttempts;
22
+ private closedByUser;
23
+ constructor(options?: SnowLumaWebSocketClientOptions);
24
+ /** True when the underlying WebSocket is currently open. */
25
+ get isConnected(): boolean;
26
+ /** Subscribes to low-level client events. Returns an unsubscribe function. */
27
+ on<TKey extends keyof SnowLumaWebSocketEvents>(event: TKey, listener: (payload: SnowLumaWebSocketEvents[TKey]) => void): () => void;
28
+ /** Subscribes to one low-level client event, then automatically unsubscribes. */
29
+ once<TKey extends keyof SnowLumaWebSocketEvents>(event: TKey, listener: (payload: SnowLumaWebSocketEvents[TKey]) => void): () => void;
30
+ /** Removes a previously registered low-level client event listener. */
31
+ off<TKey extends keyof SnowLumaWebSocketEvents>(event: TKey, listener: (payload: SnowLumaWebSocketEvents[TKey]) => void): void;
32
+ /** Subscribes to every SnowLuma event packet. */
33
+ onEvent(listener: (event: SnowLumaEvent) => void): () => void;
34
+ /** Adds event middleware to the dispatch pipeline. */
35
+ use(middleware: EventMiddleware): () => void;
36
+ /** Runs a handler when a type guard or predicate matches an event. */
37
+ when<TEvent extends SnowLumaEvent>(predicate: EventPredicate<TEvent>, handler: EventHandler<TEvent>): () => void;
38
+ onMessage(handler: EventHandler<OneBotMessageEvent>): () => void;
39
+ onPrivateMessage(handler: EventHandler<Extract<OneBotMessageEvent, {
40
+ message_type: 'private';
41
+ }>>): () => void;
42
+ onGroupMessage(handler: EventHandler<Extract<OneBotMessageEvent, {
43
+ message_type: 'group';
44
+ }>>): () => void;
45
+ onNotice(handler: EventHandler<OneBotNoticeEvent>): () => void;
46
+ onNotice(type: string, handler: EventHandler<OneBotNoticeEvent>): () => void;
47
+ onRequest(handler: EventHandler<OneBotRequestEvent>): () => void;
48
+ onRequest(type: string, handler: EventHandler<OneBotRequestEvent>): () => void;
49
+ onMetaEvent(handler: EventHandler<OneBotMetaEvent>): () => void;
50
+ command(command: string | RegExp, handler: CommandHandler, options?: CommandOptions): () => void;
51
+ /** Connects to SnowLuma's OneBot WebSocket endpoint. */
52
+ connect(): Promise<void>;
53
+ /** Closes the socket and rejects all pending API requests. */
54
+ close(code?: number, reason?: string): void;
55
+ /** Sends one OneBot action over WebSocket and returns the raw response envelope. */
56
+ request<TAction extends SnowLumaAction>(action: TAction, params?: ActionParams<TAction>, options?: RequestOptions): Promise<ApiResponse<ActionResult<TAction>>>;
57
+ private bindSocket;
58
+ private handleMessage;
59
+ private dispatchEvent;
60
+ private handleClose;
61
+ private scheduleReconnect;
62
+ private rejectPending;
63
+ }
64
+ export declare function createWebSocketClient(options?: SnowLumaWebSocketClientOptions): SnowLumaWebSocketClient;
65
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/client/websocket-client.ts"],"names":[],"mappings":"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"}