@ray-js/robot-data-stream 0.0.13-beta-6 → 0.0.13-beta-7

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 (55) hide show
  1. package/lib/api/index.d.ts +12 -2
  2. package/lib/api/index.js +172 -1
  3. package/lib/api/p2pApi.d.ts +27 -8
  4. package/lib/api/p2pApi.js +169 -271
  5. package/lib/api/sweeperP2p.d.ts +21 -54
  6. package/lib/api/sweeperP2p.js +245 -324
  7. package/lib/constant.d.ts +52 -0
  8. package/lib/constant.js +54 -0
  9. package/lib/index.d.ts +1 -11
  10. package/lib/index.js +2 -166
  11. package/lib/mqtt/createCommonOptions.d.ts +56 -15
  12. package/lib/mqtt/createCommonOptions.js +44 -8
  13. package/lib/mqtt/mqttProvider.d.ts +23 -15
  14. package/lib/mqtt/mqttProvider.js +63 -26
  15. package/lib/mqtt/promise.js +8 -3
  16. package/lib/mqtt/type/index.d.ts +9 -0
  17. package/lib/mqtt/type/index.js +8 -0
  18. package/lib/mqtt/type/requestType.d.ts +3 -0
  19. package/lib/mqtt/type/requestType.js +4 -0
  20. package/lib/mqtt/useDevInfo.d.ts +2 -7
  21. package/lib/mqtt/useDevInfo.js +25 -9
  22. package/lib/mqtt/useHistoryMap.d.ts +13 -21
  23. package/lib/mqtt/useHistoryMap.js +82 -32
  24. package/lib/mqtt/usePartDivision.d.ts +5 -7
  25. package/lib/mqtt/usePartDivision.js +41 -16
  26. package/lib/mqtt/usePartMerge.d.ts +5 -7
  27. package/lib/mqtt/usePartMerge.js +36 -18
  28. package/lib/mqtt/usePassword.js +59 -28
  29. package/lib/mqtt/useQuiteHours.d.ts +9 -24
  30. package/lib/mqtt/useQuiteHours.js +95 -52
  31. package/lib/mqtt/useResetMap.d.ts +10 -7
  32. package/lib/mqtt/useResetMap.js +40 -11
  33. package/lib/mqtt/useRoomProperty.js +23 -16
  34. package/lib/mqtt/useSchedule.d.ts +17 -4
  35. package/lib/mqtt/useSchedule.js +101 -49
  36. package/lib/mqtt/useSelectRoomClean.d.ts +20 -16
  37. package/lib/mqtt/useSelectRoomClean.js +145 -49
  38. package/lib/mqtt/useSpotClean.d.ts +3 -3
  39. package/lib/mqtt/useSpotClean.js +71 -50
  40. package/lib/mqtt/useVirtualArea.d.ts +6 -9
  41. package/lib/mqtt/useVirtualArea.js +112 -42
  42. package/lib/mqtt/useVirtualWall.d.ts +13 -10
  43. package/lib/mqtt/useVirtualWall.js +97 -34
  44. package/lib/mqtt/useVoice.d.ts +3 -6
  45. package/lib/mqtt/useVoice.js +73 -33
  46. package/lib/mqtt/useWifiMap.js +34 -18
  47. package/lib/mqtt/useZoneClean.d.ts +13 -13
  48. package/lib/mqtt/useZoneClean.js +149 -76
  49. package/lib/ttt/index.d.ts +153 -0
  50. package/lib/ttt/index.js +458 -0
  51. package/lib/utils/index.d.ts +20 -1
  52. package/lib/utils/index.js +19 -0
  53. package/package.json +1 -1
  54. package/lib/mqtt/myError.d.ts +0 -4
  55. package/lib/mqtt/myError.js +0 -6
@@ -0,0 +1,458 @@
1
+ import { p2p, getFileSystemManager } from '@ray-js/ray';
2
+ import { createLogger } from '../utils';
3
+
4
+ /**
5
+ * API 错误参数
6
+ */
7
+
8
+ /**
9
+ * 通用 API 响应类型
10
+ * @template TSuccess 成功时的数据类型
11
+ * @template TError 失败时的错误类型,默认为 ApiErrorParams
12
+ */
13
+
14
+ /**
15
+ * 文件读取成功响应
16
+ */
17
+
18
+ /**
19
+ * 相册文件索引查询成功响应
20
+ */
21
+
22
+ /**
23
+ * 创建文件路径(目录)
24
+ *
25
+ * @param filePath - 文件路径
26
+ * @returns Promise,成功时返回 true,失败时抛出错误
27
+ */
28
+ export const createFilePath = (filePath, onLogger) => {
29
+ const log = createLogger(onLogger);
30
+ return new Promise(resolve => {
31
+ try {
32
+ getFileSystemManager().mkdirSync({
33
+ dirPath: filePath,
34
+ recursive: true,
35
+ fileId: `${Date.now()}`
36
+ });
37
+ log.info({
38
+ msg: 'mkdirSync success: filePath ==>',
39
+ filePath
40
+ });
41
+ resolve(true);
42
+ } catch (e) {
43
+ log.warn({
44
+ msg: 'mkdirSync failed: filePath ==>',
45
+ filePath,
46
+ error: e
47
+ });
48
+ resolve(false);
49
+ }
50
+ });
51
+ };
52
+
53
+ /**
54
+ * 检查目录是否存在
55
+ *
56
+ * @param filePath - 文件路径
57
+ * @returns Promise,返回检查结果
58
+ */
59
+ export const checkIfDirIsExist = filePath => {
60
+ return new Promise(resolve => {
61
+ getFileSystemManager().access({
62
+ path: filePath,
63
+ success() {
64
+ resolve(true);
65
+ },
66
+ fail() {
67
+ resolve(false);
68
+ }
69
+ });
70
+ });
71
+ };
72
+
73
+ /**
74
+ * 读取文件内容(Base64 编码)
75
+ *
76
+ * @param filePath - 文件路径
77
+ * @returns Promise,返回文件读取结果
78
+ */
79
+ export const readFile = (filePath, onLogger) => {
80
+ const log = createLogger(onLogger);
81
+ return new Promise(resolve => {
82
+ getFileSystemManager().readFile({
83
+ filePath,
84
+ encoding: 'base64',
85
+ position: 0,
86
+ success(params) {
87
+ log.info({
88
+ msg: 'readFile success: filePath ==>',
89
+ filePath
90
+ });
91
+ resolve({
92
+ success: true,
93
+ params
94
+ });
95
+ },
96
+ fail(params) {
97
+ log.warn({
98
+ msg: 'readFile failed: filePath ==>',
99
+ filePath,
100
+ params: params
101
+ });
102
+ resolve({
103
+ success: false,
104
+ params,
105
+ error: params
106
+ });
107
+ }
108
+ });
109
+ });
110
+ };
111
+
112
+ /**
113
+ * 初始化 P2P SDK
114
+ *
115
+ * @returns Promise,返回初始化结果
116
+ */
117
+ export const initP2pSdk = onLogger => {
118
+ const log = createLogger(onLogger);
119
+ return new Promise(resolve => {
120
+ p2p.P2PSDKInit({
121
+ success() {
122
+ log.info({
123
+ msg: 'P2PSDKInit success'
124
+ });
125
+ resolve({
126
+ success: true,
127
+ params: null
128
+ });
129
+ },
130
+ fail(params) {
131
+ log.warn({
132
+ msg: 'P2PSDKInit failed',
133
+ params: params
134
+ });
135
+ resolve({
136
+ success: false,
137
+ params,
138
+ error: params
139
+ });
140
+ }
141
+ });
142
+ });
143
+ };
144
+
145
+ /**
146
+ * 连接设备
147
+ *
148
+ * @param devId - 设备ID
149
+ * @returns Promise,返回连接结果
150
+ */
151
+ export const connectDevice = (devId, onLogger) => {
152
+ const log = createLogger(onLogger);
153
+ return new Promise(resolve => {
154
+ p2p.connectDevice({
155
+ deviceId: devId,
156
+ timeout: 5000,
157
+ mode: 0,
158
+ success() {
159
+ log.info({
160
+ msg: 'connectDevice success'
161
+ });
162
+ resolve({
163
+ success: true,
164
+ params: null
165
+ });
166
+ },
167
+ fail(params) {
168
+ log.warn({
169
+ msg: 'connectDevice failed',
170
+ params: params
171
+ });
172
+ resolve({
173
+ success: false,
174
+ params,
175
+ error: params
176
+ });
177
+ }
178
+ });
179
+ });
180
+ };
181
+
182
+ /**
183
+ * 断开设备连接
184
+ *
185
+ * @param devId - 设备ID
186
+ * @returns Promise,返回断开连接结果
187
+ */
188
+ export const disconnectDevice = (devId, onLogger) => {
189
+ const log = createLogger(onLogger);
190
+ return new Promise(resolve => {
191
+ p2p.disconnectDevice({
192
+ deviceId: devId,
193
+ success() {
194
+ log.info({
195
+ msg: 'disconnectDevice success'
196
+ });
197
+ resolve({
198
+ success: true,
199
+ params: null
200
+ });
201
+ },
202
+ fail(params) {
203
+ log.warn({
204
+ msg: 'disconnectDevice failed',
205
+ params: params
206
+ });
207
+ resolve({
208
+ success: false,
209
+ params,
210
+ error: params
211
+ });
212
+ }
213
+ });
214
+ });
215
+ };
216
+
217
+ /**
218
+ * 下载流数据
219
+ *
220
+ * @param devId - 设备ID
221
+ * @param albumName - 相册名称
222
+ * @param files - 文件列表
223
+ * @returns Promise,返回下载结果
224
+ */
225
+ export const downloadStream = (devId, albumName, files, onLogger) => {
226
+ const log = createLogger(onLogger);
227
+ return new Promise(resolve => {
228
+ p2p.downloadStream({
229
+ deviceId: devId,
230
+ albumName: albumName,
231
+ jsonfiles: JSON.stringify(files),
232
+ success() {
233
+ log.info({
234
+ msg: 'downloadStream success'
235
+ });
236
+ resolve({
237
+ success: true,
238
+ params: null
239
+ });
240
+ },
241
+ fail(params) {
242
+ log.warn({
243
+ msg: 'downloadStream failed',
244
+ params: params
245
+ });
246
+ resolve({
247
+ success: false,
248
+ params,
249
+ error: params
250
+ });
251
+ }
252
+ });
253
+ });
254
+ };
255
+
256
+ /**
257
+ * 追加下载流数据
258
+ *
259
+ * @param devId - 设备ID
260
+ * @param albumName - 相册名称
261
+ * @param files - 文件列表
262
+ * @param onLogger - 日志回调函数
263
+ * @returns Promise,返回追加下载结果
264
+ */
265
+ export const appendDownloadStream = (devId, albumName, files, onLogger) => {
266
+ const log = createLogger(onLogger);
267
+ return new Promise(resolve => {
268
+ p2p.appendDownloadStream({
269
+ deviceId: devId,
270
+ albumName: albumName,
271
+ jsonfiles: JSON.stringify(files),
272
+ success() {
273
+ log.info({
274
+ msg: 'appendDownloadStream success'
275
+ });
276
+ resolve({
277
+ success: true,
278
+ params: null
279
+ });
280
+ },
281
+ fail(params) {
282
+ log.warn({
283
+ msg: 'appendDownloadStream failed',
284
+ params: params
285
+ });
286
+ resolve({
287
+ success: false,
288
+ params,
289
+ error: params
290
+ });
291
+ }
292
+ });
293
+ });
294
+ };
295
+
296
+ /**
297
+ * 下载文件
298
+ *
299
+ * @param devId - 设备ID
300
+ * @param albumName - 相册名称
301
+ * @param filePath - 文件保存路径
302
+ * @param files - 文件列表
303
+ * @returns Promise,返回下载结果
304
+ */
305
+ export const downloadFile = (devId, albumName, filePath, files, onLogger) => {
306
+ const log = createLogger(onLogger);
307
+ return new Promise(resolve => {
308
+ p2p.downloadFile({
309
+ deviceId: devId,
310
+ albumName: albumName,
311
+ filePath: filePath,
312
+ jsonfiles: JSON.stringify(files),
313
+ success() {
314
+ log.info({
315
+ msg: 'downloadFile success'
316
+ });
317
+ resolve({
318
+ success: true,
319
+ params: null
320
+ });
321
+ },
322
+ fail(params) {
323
+ log.warn({
324
+ msg: 'downloadFile failed',
325
+ params: params
326
+ });
327
+ resolve({
328
+ success: false,
329
+ params,
330
+ error: params
331
+ });
332
+ }
333
+ });
334
+ });
335
+ };
336
+
337
+ /**
338
+ * 取消下载任务
339
+ *
340
+ * @param devId - 设备ID
341
+ * @returns Promise,返回取消结果
342
+ */
343
+ export const cancelDownloadTask = (devId, onLogger) => {
344
+ const log = createLogger(onLogger);
345
+ return new Promise(resolve => {
346
+ p2p.cancelDownloadTask({
347
+ deviceId: devId,
348
+ success() {
349
+ log.info({
350
+ msg: 'cancelDownloadTask success'
351
+ });
352
+ resolve({
353
+ success: true,
354
+ params: null
355
+ });
356
+ },
357
+ fail(params) {
358
+ log.warn({
359
+ msg: 'cancelDownloadTask failed',
360
+ params: params
361
+ });
362
+ resolve({
363
+ success: false,
364
+ params,
365
+ error: params
366
+ });
367
+ }
368
+ });
369
+ });
370
+ };
371
+
372
+ /**
373
+ * 查询相册文件索引
374
+ *
375
+ * @param devId - 设备ID
376
+ * @param albumName - 相册名称
377
+ * @returns Promise,返回查询结果
378
+ */
379
+ export const queryAlbumFileIndexs = (devId, albumName, onLogger) => {
380
+ const log = createLogger(onLogger);
381
+ return new Promise(resolve => {
382
+ p2p.queryAlbumFileIndexs({
383
+ deviceId: devId,
384
+ albumName: albumName,
385
+ success(params) {
386
+ log.info({
387
+ msg: 'queryAlbumFileIndexs success'
388
+ });
389
+ resolve({
390
+ success: true,
391
+ params
392
+ });
393
+ },
394
+ fail(params) {
395
+ log.warn({
396
+ msg: 'queryAlbumFileIndexs failed',
397
+ params: params
398
+ });
399
+ resolve({
400
+ success: false,
401
+ params,
402
+ error: params
403
+ });
404
+ }
405
+ });
406
+ });
407
+ };
408
+
409
+ /**
410
+ * 反初始化 P2P SDK
411
+ *
412
+ * @returns Promise,返回反初始化结果
413
+ */
414
+ export const deInitP2pSdk = onLogger => {
415
+ const log = createLogger(onLogger);
416
+ return new Promise(resolve => {
417
+ p2p.deInitSDK({
418
+ success() {
419
+ log.info({
420
+ msg: 'deInitP2pSdk success'
421
+ });
422
+ resolve({
423
+ success: true,
424
+ params: null
425
+ });
426
+ },
427
+ fail(params) {
428
+ log.warn({
429
+ msg: 'deInitP2pSdk failed',
430
+ params: params
431
+ });
432
+ resolve({
433
+ success: false,
434
+ params,
435
+ error: params
436
+ });
437
+ }
438
+ });
439
+ });
440
+ };
441
+
442
+ /**
443
+ * TTT API 集合
444
+ */
445
+ export const apis = {
446
+ createFilePath,
447
+ checkIfDirIsExist,
448
+ readFile,
449
+ initP2pSdk,
450
+ connectDevice,
451
+ disconnectDevice,
452
+ downloadStream,
453
+ appendDownloadStream,
454
+ downloadFile,
455
+ cancelDownloadTask,
456
+ queryAlbumFileIndexs,
457
+ deInitP2pSdk
458
+ };
@@ -9,4 +9,23 @@ export declare const parseJSON: (str: any) => any;
9
9
  export declare const logger: (type: 'warn' | 'error' | 'info', params: {
10
10
  [key: string]: any;
11
11
  msg: string;
12
- }, onLogger: (type: 'warn' | 'error' | 'info', v: string) => void) => void;
12
+ }, onLogger?: ((type: 'warn' | 'error' | 'info', v: string) => void) | undefined) => void;
13
+ /**
14
+ * 创建绑定了 onLogger 的 logger 函数
15
+ * @param onLogger - 可选的日志回调函数
16
+ * @returns 返回一个简化的 logger 函数
17
+ */
18
+ export declare const createLogger: (onLogger?: ((type: 'warn' | 'error' | 'info', v: string) => void) | undefined) => {
19
+ info: (params: {
20
+ [key: string]: any;
21
+ msg: string;
22
+ }) => void;
23
+ warn: (params: {
24
+ [key: string]: any;
25
+ msg: string;
26
+ }) => void;
27
+ error: (params: {
28
+ [key: string]: any;
29
+ msg: string;
30
+ }) => void;
31
+ };
@@ -59,4 +59,23 @@ export const logger = (type, params, onLogger) => {
59
59
  if (onLogger) {
60
60
  onLogger(type, msg);
61
61
  }
62
+ };
63
+
64
+ /**
65
+ * 创建绑定了 onLogger 的 logger 函数
66
+ * @param onLogger - 可选的日志回调函数
67
+ * @returns 返回一个简化的 logger 函数
68
+ */
69
+ export const createLogger = onLogger => {
70
+ return {
71
+ info: params => {
72
+ logger('info', params, onLogger);
73
+ },
74
+ warn: params => {
75
+ logger('warn', params, onLogger);
76
+ },
77
+ error: params => {
78
+ logger('error', params, onLogger);
79
+ }
80
+ };
62
81
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/robot-data-stream",
3
- "version": "0.0.13-beta-6",
3
+ "version": "0.0.13-beta-7",
4
4
  "description": "扫地机P2P数据流标准化组件",
5
5
  "main": "lib/index",
6
6
  "files": [
@@ -1,4 +0,0 @@
1
- export declare class MyError extends Error {
2
- message: any;
3
- constructor(message: any, data: any);
4
- }
@@ -1,6 +0,0 @@
1
- export class MyError extends Error {
2
- constructor(message, data) {
3
- super(message);
4
- this.message = data;
5
- }
6
- }