@ray-js/robot-data-stream 0.0.10-beta-12 → 0.0.10-beta-13

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.
@@ -1,4 +1,12 @@
1
- import { PromiseWithRejection } from './promise';
1
+ interface DevInfoResponse {
2
+ reqType: string;
3
+ version: string;
4
+ info: string;
5
+ success: boolean;
6
+ errCode: number;
7
+ taskId: string;
8
+ }
2
9
  export declare const useDevInfo: (devId: string) => {
3
- requestDevInfo: () => PromiseWithRejection;
10
+ requestDevInfo: () => Promise<DevInfoResponse>;
4
11
  };
12
+ export {};
@@ -3,7 +3,8 @@ import { normalResolve } from './promise';
3
3
  var DevInfoEnum = /*#__PURE__*/function (DevInfoEnum) {
4
4
  DevInfoEnum["query"] = "devInfoQry";
5
5
  return DevInfoEnum;
6
- }(DevInfoEnum || {}); // 请求设备信息
6
+ }(DevInfoEnum || {});
7
+ // 请求设备信息
7
8
  export const useDevInfo = devId => {
8
9
  return {
9
10
  requestDevInfo: () => {
@@ -1,7 +1,34 @@
1
- type TDeleteHistoryMap = (mapId: number) => Promise<void>;
1
+ type TDeleteHistoryMap = (mapId: number) => Promise<{
2
+ success: boolean;
3
+ errCode: number;
4
+ reqType: string;
5
+ version: string;
6
+ taskId: string;
7
+ }>;
8
+ type TChangeCurrentMap = (mapId: number, url: string) => Promise<{
9
+ success: boolean;
10
+ errCode: number;
11
+ reqType: string;
12
+ mapId: number;
13
+ version: string;
14
+ taskId: string;
15
+ }>;
16
+ type TSaveMap = () => Promise<{
17
+ success: boolean;
18
+ errCode: number;
19
+ reqType: string;
20
+ mapId: number;
21
+ version: string;
22
+ taskId: string;
23
+ }>;
24
+ /**
25
+ * 自定义 Hook,用于管理历史地图
26
+ * @param devId 设备ID
27
+ * @returns 包含删除历史地图、更改当前地图和保存地图的函数
28
+ */
2
29
  export declare const useHistoryMap: (devId: string) => {
3
30
  deleteHistoryMap: TDeleteHistoryMap;
4
- changeCurrentMap: (mapId: number, url: string, taskId: string) => Promise<void>;
5
- saveMap: () => Promise<void>;
31
+ changeCurrentMap: TChangeCurrentMap;
32
+ saveMap: TSaveMap;
6
33
  };
7
34
  export {};
@@ -5,14 +5,38 @@ import { DeleteMapEnum, SaveCurrentMapEnum, UseMapEnum } from './type';
5
5
 
6
6
  // 删除历史地图函数类型定义
7
7
 
8
+ // 更改当前使用的地图函数类型定义
9
+
10
+ /**
11
+ * 自定义 Hook,用于管理历史地图
12
+ * @param devId 设备ID
13
+ * @returns 包含删除历史地图、更改当前地图和保存地图的函数
14
+ */
8
15
  export const useHistoryMap = devId => {
9
- // 删除历史地图
16
+ /**
17
+ * 删除历史地图
18
+ * @param mapId 地图ID
19
+ * @returns Promise<{ success: boolean; errCode: number; reqType: string; version: string; taskId: string; }> 响应结果
20
+ */
21
+
22
+ /**
23
+ * 保存当前地图
24
+ * @returns Promise<void> 响应结果
25
+ */
10
26
 
11
- // 更改当前使用的地图
27
+ /**
28
+ * 更改当前使用的地图
29
+ * @param mapId 地图ID
30
+ * @param url 地图URL
31
+ * @returns Promise<{ success: boolean; errCode: number; reqType: string; mapId: number; version: string; taskId: string; }> 响应结果
32
+ */
12
33
 
13
34
  return {
14
35
  deleteHistoryMap: async mapId => {
15
36
  try {
37
+ if (!mapId) {
38
+ return Promise.reject(new Error('mapId is required'));
39
+ }
16
40
  await deleteMultipleMapFile(mapId, devId);
17
41
  const params = createSetCommonParams({
18
42
  deviceId: devId,
@@ -30,23 +54,27 @@ export const useHistoryMap = devId => {
30
54
  return Promise.reject(err);
31
55
  }
32
56
  },
33
- changeCurrentMap: (mapId, url) => {
34
- const sendData = {
35
- reqType: UseMapEnum.set,
36
- mapId,
37
- url,
38
- urlLen: url.length
39
- };
40
- const params = createSetCommonParams({
41
- deviceId: devId,
42
- reqType: UseMapEnum.set,
43
- message: sendData
44
- });
45
- const {
46
- taskId
47
- } = params.message;
48
- ty.device.sendMqttMessage(params);
49
- return normalResolve(UseMapEnum.query, taskId);
57
+ changeCurrentMap: async (mapId, url) => {
58
+ try {
59
+ const sendData = {
60
+ reqType: UseMapEnum.set,
61
+ mapId,
62
+ url,
63
+ urlLen: url.length
64
+ };
65
+ const params = createSetCommonParams({
66
+ deviceId: devId,
67
+ reqType: UseMapEnum.set,
68
+ message: sendData
69
+ });
70
+ ty.device.sendMqttMessage(params);
71
+ const {
72
+ taskId
73
+ } = params.message;
74
+ return await normalResolve(UseMapEnum.query, taskId);
75
+ } catch (err) {
76
+ return Promise.reject(err);
77
+ }
50
78
  },
51
79
  saveMap: () => {
52
80
  const params = createSetCommonParams({
@@ -56,6 +84,7 @@ export const useHistoryMap = devId => {
56
84
  oper: 0
57
85
  }
58
86
  });
87
+ ty.device.sendMqttMessage(params);
59
88
  return normalResolve(SaveCurrentMapEnum.query, params.message.taskId);
60
89
  }
61
90
  };
@@ -1,6 +1,11 @@
1
1
  import { Point } from '../utils';
2
- import { PromiseWithRejection } from './promise';
3
- type TSetPartDivision = (points: Point[], roomId: number, origin: Point) => PromiseWithRejection;
2
+ type TSetPartDivision = (points: Point[], roomId: number, origin: Point) => Promise<{
3
+ success: boolean;
4
+ errCode: number;
5
+ reqType: string;
6
+ version: string;
7
+ taskId: string;
8
+ }>;
4
9
  /**
5
10
  * 自定义 Hook,用于房间分隔
6
11
  * @param devId 设备ID
@@ -1,5 +1,10 @@
1
- import { PromiseWithRejection } from './promise';
2
- type TSetPartMerge = (ids: number[]) => PromiseWithRejection;
1
+ type TSetPartMerge = (ids: number[]) => Promise<{
2
+ success: boolean;
3
+ errCode: number;
4
+ reqType: string;
5
+ version: string;
6
+ taskId: string;
7
+ }>;
3
8
  /**
4
9
  * 自定义 Hook,用于分区合并
5
10
  * @param devId 设备ID
@@ -1,3 +1,5 @@
1
+ import "core-js/modules/esnext.iterator.constructor.js";
2
+ import "core-js/modules/esnext.iterator.some.js";
1
3
  // 分区合并
2
4
  import { createSetCommonParams } from './createCommonOptions';
3
5
  import { normalResolve } from './promise';
@@ -19,6 +21,12 @@ export const usePartMerge = devId => {
19
21
 
20
22
  return {
21
23
  setPartMerge: ids => {
24
+ if (!ids || ids.length < 2) {
25
+ return Promise.reject(new Error('ids is required and length must be greater than 1'));
26
+ }
27
+ if (ids.some(id => typeof id !== 'number')) {
28
+ return Promise.reject(new Error('ids must be an array of numbers'));
29
+ }
22
30
  const params = createSetCommonParams({
23
31
  deviceId: devId,
24
32
  reqType: PartMergeEnum.set,
@@ -1,4 +1,35 @@
1
- import { PromiseWithRejection } from './promise';
1
+ type Response = {
2
+ reqType: string;
3
+ /**
4
+ * 版本号
5
+ */
6
+ version: string;
7
+ /**
8
+ * 是否激活
9
+ * 0 表示未激活,1 表示激活
10
+ */
11
+ active: number;
12
+ /**
13
+ * 时间段数组,每个元素为 "开始时间, 结束时间" 的字符串
14
+ */
15
+ time: string[];
16
+ /**
17
+ * 星期几,1 表示星期一,2 表示星期二,以此类推
18
+ */
19
+ day: number;
20
+ /**
21
+ * 请求是否成功
22
+ */
23
+ success: boolean;
24
+ /**
25
+ * 错误代码,0 表示无错误
26
+ */
27
+ errCode: number;
28
+ /**
29
+ * 任务ID
30
+ */
31
+ taskId: string;
32
+ };
2
33
  type TSetQuiteHours = (params: {
3
34
  startTime: {
4
35
  hour: number;
@@ -11,7 +42,7 @@ type TSetQuiteHours = (params: {
11
42
  active: number;
12
43
  day: number;
13
44
  version?: string;
14
- }) => PromiseWithRejection;
45
+ }) => Promise<Response>;
15
46
  /**
16
47
  * 自定义 Hook,用于勿扰模式
17
48
  * @param devId 设备ID
@@ -19,6 +50,6 @@ type TSetQuiteHours = (params: {
19
50
  */
20
51
  export declare const useQuiteHours: (devId: string) => {
21
52
  setQuiteHours: TSetQuiteHours;
22
- requestQuiteHours: () => PromiseWithRejection;
53
+ requestQuiteHours: () => Promise<Response>;
23
54
  };
24
55
  export {};
@@ -1,3 +1,11 @@
1
+ type TSetResetMap = () => Promise<{
2
+ success: boolean;
3
+ errCode: number;
4
+ reqType: string;
5
+ version: string;
6
+ taskId: string;
7
+ }>;
1
8
  export declare const useResetMap: (devId: string) => {
2
- setResetMap: () => Promise<void>;
9
+ setResetMap: TSetResetMap;
3
10
  };
11
+ export {};
@@ -1,4 +1,3 @@
1
- import { PromiseWithRejection } from './promise';
2
1
  import { BaseResponse, RoomPreference } from './type';
3
2
  type Response = BaseResponse & RoomPreference & {
4
3
  num: number;
@@ -6,7 +5,7 @@ type Response = BaseResponse & RoomPreference & {
6
5
  };
7
6
  type TSetRoomProperty = (message: Pick<Response, 'num' | 'suctions' | 'cisterns' | 'floorTypes' | 'names' | 'orders' | 'yMops' | 'sweepMopModes' | 'cleanCounts' | 'ids'>) => Promise<RoomPreference>;
8
7
  export declare const useRoomProperty: (devId: string) => {
9
- requestRoomProperty: () => PromiseWithRejection;
8
+ requestRoomProperty: () => Promise<Response>;
10
9
  setRoomProperty: TSetRoomProperty;
11
10
  };
12
11
  export {};
@@ -1,5 +1,4 @@
1
- import { PromiseWithRejection } from './promise';
2
- import { RoomPreference } from './type';
1
+ import { RoomPreference, BaseResponse } from './type';
3
2
  type ScheduleItem = Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes' | 'ids'> & {
4
3
  active: number;
5
4
  cycle: number[];
@@ -9,8 +8,9 @@ interface Schedule {
9
8
  list: Array<ScheduleItem>;
10
9
  num: number;
11
10
  }
11
+ type Response = BaseResponse & Schedule;
12
12
  export declare const useSchedule: (devId: string) => {
13
- requestSchedule: () => PromiseWithRejection;
14
- setSchedule: (message: Schedule) => PromiseWithRejection;
13
+ requestSchedule: () => Promise<Response>;
14
+ setSchedule: (message: Schedule) => Promise<Response>;
15
15
  };
16
16
  export {};
@@ -1,11 +1,26 @@
1
+ type Response = {
2
+ reqType: string;
3
+ version: string;
4
+ success: boolean;
5
+ errCode: number;
6
+ taskId: string;
7
+ ids: number[];
8
+ suctions?: string[];
9
+ cisterns?: string[];
10
+ cleanCounts?: number[];
11
+ yMops?: number[];
12
+ sweepMopModes?: string[];
13
+ };
14
+ type TSetRoomClean = (message: {
15
+ ids: number[];
16
+ suctions?: string[];
17
+ cisterns?: string[];
18
+ cleanCounts?: number[];
19
+ yMops?: number[];
20
+ sweepMopModes?: string[];
21
+ }) => Promise<Response>;
1
22
  export declare const useSelectRoomClean: (devId: string) => {
2
- requestSelectRoomClean: () => import("./promise").PromiseWithRejection;
3
- setRoomClean: (message: {
4
- ids: number[];
5
- suctions?: string[] | undefined;
6
- cisterns?: string[] | undefined;
7
- cleanCounts?: number[] | undefined;
8
- yMops?: number[] | undefined;
9
- sweepMopModes?: string[] | undefined;
10
- }) => Promise<never> | import("./promise").PromiseWithRejection;
23
+ requestSelectRoomClean: () => Promise<Response>;
24
+ setRoomClean: TSetRoomClean;
11
25
  };
26
+ export {};
@@ -1,14 +1,18 @@
1
1
  import { RoomPreference } from './type';
2
+ type Response = Partial<Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes'>> & {
3
+ polygons: string[];
4
+ names?: string[];
5
+ };
2
6
  type TSetSpotClean = (message: Partial<Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes'>> & {
3
7
  polygons: string[];
4
8
  names?: string[];
5
- }) => Promise<void>;
9
+ }) => Promise<Response>;
6
10
  /**
7
11
  * 定点清扫
8
12
  * @returns
9
13
  */
10
14
  export declare const useSpotClean: (devId: string) => {
11
- requestSpotClean: () => Promise<void>;
15
+ requestSpotClean: () => Promise<Response>;
12
16
  setSpotClean: TSetSpotClean;
13
17
  };
14
18
  export {};
@@ -1,4 +1,24 @@
1
+ type Response = {
2
+ reqType: 'restrictedAreaQry';
3
+ version: string;
4
+ num: number;
5
+ modes: number[];
6
+ polygons: string[];
7
+ names: string[];
8
+ mapId: number;
9
+ success: boolean;
10
+ errCode: number;
11
+ taskId: string;
12
+ };
13
+ type TSetVirtualArea = (message: {
14
+ polygons: string[];
15
+ names?: string[];
16
+ modes: number[];
17
+ num?: number;
18
+ }) => Promise<Response>;
19
+ type TRequestVirtualArea = () => Promise<Response>;
1
20
  export declare const useVirtualArea: (devId: string) => {
2
- requestVirtualArea: () => any;
3
- setVirtualArea: (message: any) => any;
21
+ requestVirtualArea: TRequestVirtualArea;
22
+ setVirtualArea: TSetVirtualArea;
4
23
  };
24
+ export {};
@@ -2,10 +2,24 @@
2
2
  import { createSetCommonParams } from './createCommonOptions';
3
3
  import { normalResolve } from './promise';
4
4
  import { VirtualAreaEnum } from './type';
5
+ import { isArray } from 'lodash-es';
5
6
  // 禁区
6
7
 
7
8
  export const useVirtualArea = devId => {
8
- // 请求禁区数据
9
+ /**
10
+ * 请求虚拟区域数据
11
+ * @returns Promise<VirtualAreaResponse> 响应结果
12
+ */
13
+
14
+ /**
15
+ * 设置虚拟区域数据
16
+ * @param message 包含虚拟区域设置参数的对象
17
+ * @param message.polygons 多边形数组,每个元素为一个多边形的坐标字符串
18
+ * @param message.names 名称数组,每个元素为一个区域的名称
19
+ * @param message.modes 模式数组,每个元素为一个区域的模式,0:全禁,1:禁扫,2:禁拖
20
+ * @param message.num 虚拟区域的数量
21
+ * @returns Promise<VirtualAreaResponse> 响应结果
22
+ */
9
23
 
10
24
  return {
11
25
  requestVirtualArea: () => {
@@ -17,10 +31,46 @@ export const useVirtualArea = devId => {
17
31
  return normalResolve(VirtualAreaEnum.query, params.message.taskId);
18
32
  },
19
33
  setVirtualArea: message => {
34
+ const {
35
+ polygons,
36
+ num,
37
+ modes,
38
+ names
39
+ } = message || {};
40
+ if (!isArray(polygons) || isArray(polygons) && polygons.length === 0) {
41
+ return Promise.reject(new Error('message polygons is required'));
42
+ }
43
+ const len = polygons.length;
44
+ if (!isArray(message.modes) || isArray(message.modes) && message.modes.length === 0) {
45
+ return Promise.reject(new Error('message modes is required'));
46
+ }
47
+ if (num && !Number.isInteger(num)) {
48
+ return Promise.reject(new Error('num is illegal'));
49
+ }
50
+ if (num && num !== len) {
51
+ return Promise.reject(new Error('num is not equal to points length'));
52
+ }
53
+ if (modes && !isArray(modes)) {
54
+ return Promise.reject(new Error('mode is illegal'));
55
+ }
56
+ if (modes && modes.length !== len) {
57
+ return Promise.reject(new Error('mode length is not equal to points length'));
58
+ }
59
+ if (names && !isArray(names)) {
60
+ return Promise.reject(new Error('names is illegal'));
61
+ }
62
+ if (names && names.length !== len) {
63
+ return Promise.reject(new Error('names length is not equal to points length'));
64
+ }
20
65
  const params = createSetCommonParams({
21
66
  deviceId: devId,
22
67
  reqType: VirtualAreaEnum.set,
23
- message
68
+ message: {
69
+ polygons,
70
+ num: num || len,
71
+ modes: modes || new Array(len).fill(0),
72
+ names: names || new Array(len).fill('')
73
+ }
24
74
  });
25
75
  ty.device.sendMqttMessage(params);
26
76
  return normalResolve(VirtualAreaEnum.query, params.message.taskId);
@@ -1,4 +1,22 @@
1
+ type Response = {
2
+ modes: number[];
3
+ success: boolean;
4
+ errCode: number;
5
+ num: number;
6
+ reqType: 'virtualWallQry';
7
+ mapId: number;
8
+ version: string;
9
+ taskId: string;
10
+ points: string[];
11
+ };
12
+ type TRequestVirtualWall = () => Promise<Response>;
13
+ type TSetVirtualWall = (message: {
14
+ points: string[];
15
+ num?: number;
16
+ mode?: number[];
17
+ }) => Promise<Response>;
1
18
  export declare const useVirtualWall: (devId: string) => {
2
- requestVirtualWall: () => import("./promise").PromiseWithRejection;
3
- setVirtualWall: (message: any) => import("./promise").PromiseWithRejection;
19
+ requestVirtualWall: TRequestVirtualWall;
20
+ setVirtualWall: TSetVirtualWall;
4
21
  };
22
+ export {};
@@ -4,13 +4,17 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
4
4
  import { createSetCommonParams } from './createCommonOptions';
5
5
  import { normalResolve } from './promise';
6
6
  import { VirtualWallEnum } from './type';
7
+ import { isArray } from 'lodash-es';
7
8
  export const useVirtualWall = devId => {
8
9
  // 请求虚拟墙数据
9
10
 
10
11
  /**
11
- * 设置虚拟墙数据
12
- * @param message 下发给设备的数据
13
- * @param isVerify
12
+ * 设置虚拟墙数据
13
+ * @param message 包含虚拟墙设置参数的对象
14
+ * @param message.points 虚拟墙的点数组
15
+ * @param message.num 虚拟墙的数量(可选)
16
+ * @param message.mode 虚拟墙的模式数组(可选)
17
+ * @returns Promise<Response> 响应结果
14
18
  */
15
19
 
16
20
  return {
@@ -24,10 +28,35 @@ export const useVirtualWall = devId => {
24
28
  },
25
29
  setVirtualWall: message => {
26
30
  const requestParams = _objectSpread({}, message);
31
+ if (!isArray(requestParams.points) || requestParams.points.length === 0) {
32
+ return Promise.reject(new Error('points is illegal'));
33
+ }
34
+ const len = requestParams.points.length;
35
+ if (requestParams.num && !Number.isInteger(requestParams.num)) {
36
+ return Promise.reject(new Error('num is illegal'));
37
+ }
38
+ if (requestParams.num && requestParams.num !== len) {
39
+ return Promise.reject(new Error('num is not equal to points length'));
40
+ }
41
+ if (requestParams.mode && !isArray(requestParams.mode)) {
42
+ return Promise.reject(new Error('mode is illegal'));
43
+ }
44
+ if (requestParams.mode && requestParams.mode.length !== len) {
45
+ return Promise.reject(new Error('mode length is not equal to points length'));
46
+ }
47
+ const {
48
+ points,
49
+ num,
50
+ mode
51
+ } = requestParams;
27
52
  const params = createSetCommonParams({
28
53
  deviceId: devId,
29
54
  reqType: VirtualWallEnum.set,
30
- message: requestParams
55
+ message: {
56
+ points,
57
+ num: num || len,
58
+ mode: mode || new Array(len).fill(-1)
59
+ }
31
60
  });
32
61
  ty.device.sendMqttMessage(params);
33
62
  return normalResolve(VirtualWallEnum.query, params.message.taskId);
@@ -1,10 +1,19 @@
1
- import { PromiseWithRejection } from './promise';
1
+ interface VoiceLanguageResponse {
2
+ reqType: string;
3
+ version: string;
4
+ id: number;
5
+ schedule: number;
6
+ status: number;
7
+ success: boolean;
8
+ errCode: number;
9
+ taskId: string;
10
+ }
2
11
  type TSetVoice = (message: {
3
12
  id: number;
4
13
  url: string;
5
14
  md5: string;
6
- }) => PromiseWithRejection;
7
- type TRequestVoiceInUse = () => PromiseWithRejection;
15
+ }) => Promise<VoiceLanguageResponse>;
16
+ type TRequestVoiceInUse = () => Promise<VoiceLanguageResponse>;
8
17
  /**
9
18
  * 自定义 Hook,用于语音语言设置
10
19
  * @param devId 设备ID
@@ -1,14 +1,27 @@
1
1
  import { RoomPreference } from './type';
2
+ type Response = {
3
+ reqType: string;
4
+ version: string;
5
+ success: boolean;
6
+ errCode: number;
7
+ taskId: string;
8
+ polygons: string[];
9
+ suctions?: string[];
10
+ cisterns?: string[];
11
+ cleanCounts?: number[];
12
+ yMops?: number[];
13
+ sweepMopModes?: string[];
14
+ };
2
15
  type TSetZoneClean = (message: Partial<Pick<RoomPreference, 'suctions' | 'cisterns' | 'cleanCounts' | 'yMops' | 'sweepMopModes'>> & {
3
16
  polygons: string[];
4
17
  names?: string[];
5
- }) => Promise<void>;
18
+ }) => Promise<Response>;
6
19
  /**
7
20
  * 划区清扫
8
21
  * @returns
9
22
  */
10
23
  export declare const useZoneClean: (devId: string) => {
11
- requestZoneClean: () => Promise<void>;
24
+ requestZoneClean: () => Promise<Response>;
12
25
  setZoneClean: TSetZoneClean;
13
26
  };
14
27
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/robot-data-stream",
3
- "version": "0.0.10-beta-12",
3
+ "version": "0.0.10-beta-13",
4
4
  "description": "扫地机P2P数据流标准化组件",
5
5
  "main": "lib/index",
6
6
  "files": [