@ray-js/robot-data-stream 0.0.14 → 0.0.15-beta.1

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 (156) hide show
  1. package/lib/mqtt/createCommonOptions.d.ts +4 -2
  2. package/lib/mqtt/createCommonOptions.js +10 -5
  3. package/lib/mqtt/hooks/useStructuredMessage.d.ts +14 -0
  4. package/lib/mqtt/hooks/useStructuredMessage.js +131 -0
  5. package/lib/mqtt/mqttProvider.d.ts +19 -1
  6. package/lib/mqtt/mqttProvider.js +69 -8
  7. package/lib/mqtt/promise.d.ts +57 -4
  8. package/lib/mqtt/promise.js +115 -36
  9. package/lib/mqtt/type/fun.d.ts +49 -0
  10. package/lib/mqtt/type/fun.js +145 -0
  11. package/lib/mqtt/type/index.d.ts +0 -7
  12. package/lib/mqtt/type/index.js +0 -1
  13. package/lib/mqtt/type/protocols/base.d.ts +5 -0
  14. package/lib/mqtt/type/protocols/base.js +32 -0
  15. package/lib/mqtt/type/protocols/carpetCleanProtocol.d.ts +8 -0
  16. package/lib/mqtt/type/protocols/carpetCleanProtocol.js +16 -0
  17. package/lib/mqtt/type/protocols/carpetProtocol.d.ts +41 -0
  18. package/lib/mqtt/type/protocols/carpetProtocol.js +202 -0
  19. package/lib/mqtt/type/protocols/devInfoProtocol.d.ts +5 -0
  20. package/lib/mqtt/type/protocols/devInfoProtocol.js +12 -0
  21. package/lib/mqtt/type/protocols/deviceModelProtocol.d.ts +8 -0
  22. package/lib/mqtt/type/protocols/deviceModelProtocol.js +34 -0
  23. package/lib/mqtt/type/protocols/furnitureModelProtocol.d.ts +10 -0
  24. package/lib/mqtt/type/protocols/furnitureModelProtocol.js +35 -0
  25. package/lib/mqtt/type/protocols/historyMapProtocol.d.ts +17 -0
  26. package/lib/mqtt/type/protocols/historyMapProtocol.js +37 -0
  27. package/lib/mqtt/type/protocols/index.d.ts +20 -0
  28. package/lib/mqtt/type/protocols/index.js +20 -0
  29. package/lib/mqtt/type/protocols/partDivisionProtocol.d.ts +8 -0
  30. package/lib/mqtt/type/protocols/partDivisionProtocol.js +12 -0
  31. package/lib/mqtt/type/protocols/partMergeProtocol.d.ts +7 -0
  32. package/lib/mqtt/type/protocols/partMergeProtocol.js +12 -0
  33. package/lib/mqtt/type/protocols/passwordProtocol.d.ts +11 -0
  34. package/lib/mqtt/type/protocols/passwordProtocol.js +25 -0
  35. package/lib/mqtt/type/protocols/quietHoursProtocol.d.ts +8 -0
  36. package/lib/mqtt/type/protocols/quietHoursProtocol.js +35 -0
  37. package/lib/mqtt/type/protocols/resetMapProtocol.d.ts +4 -0
  38. package/lib/mqtt/type/protocols/resetMapProtocol.js +1 -0
  39. package/lib/mqtt/type/protocols/roomPropertyProtocol.d.ts +14 -0
  40. package/lib/mqtt/type/protocols/roomPropertyProtocol.js +113 -0
  41. package/lib/mqtt/type/protocols/scheduleProtocol.d.ts +18 -0
  42. package/lib/mqtt/type/protocols/scheduleProtocol.js +100 -0
  43. package/lib/mqtt/type/protocols/selectRoomCleanProtocol.d.ts +8 -0
  44. package/lib/mqtt/type/protocols/selectRoomCleanProtocol.js +40 -0
  45. package/lib/mqtt/type/protocols/spotCleanProtocol.d.ts +9 -0
  46. package/lib/mqtt/type/protocols/spotCleanProtocol.js +72 -0
  47. package/lib/mqtt/type/protocols/virtualAreaProtocol.d.ts +8 -0
  48. package/lib/mqtt/type/protocols/virtualAreaProtocol.js +36 -0
  49. package/lib/mqtt/type/protocols/virtualWallProtocol.d.ts +8 -0
  50. package/lib/mqtt/type/protocols/virtualWallProtocol.js +25 -0
  51. package/lib/mqtt/type/protocols/voiceProtocol.d.ts +8 -0
  52. package/lib/mqtt/type/protocols/voiceProtocol.js +23 -0
  53. package/lib/mqtt/type/protocols/wifiMapProtocol.d.ts +8 -0
  54. package/lib/mqtt/type/protocols/wifiMapProtocol.js +14 -0
  55. package/lib/mqtt/type/protocols/zoneCleanProtocol.d.ts +8 -0
  56. package/lib/mqtt/type/protocols/zoneCleanProtocol.js +49 -0
  57. package/lib/mqtt/useCarpet.d.ts +7 -67
  58. package/lib/mqtt/useCarpet.js +101 -181
  59. package/lib/mqtt/useCarpetClean.d.ts +2 -11
  60. package/lib/mqtt/useCarpetClean.js +24 -51
  61. package/lib/mqtt/useDevInfo.d.ts +8 -6
  62. package/lib/mqtt/useDevInfo.js +44 -36
  63. package/lib/mqtt/useDeviceModel.d.ts +6 -19
  64. package/lib/mqtt/useDeviceModel.js +29 -42
  65. package/lib/mqtt/useFurnitureModel.d.ts +6 -18
  66. package/lib/mqtt/useFurnitureModel.js +29 -43
  67. package/lib/mqtt/useHistoryMap.d.ts +2 -18
  68. package/lib/mqtt/useHistoryMap.js +102 -119
  69. package/lib/mqtt/usePartDivision.d.ts +2 -9
  70. package/lib/mqtt/usePartDivision.js +48 -57
  71. package/lib/mqtt/usePartMerge.d.ts +2 -8
  72. package/lib/mqtt/usePartMerge.js +34 -49
  73. package/lib/mqtt/usePassword.d.ts +6 -13
  74. package/lib/mqtt/usePassword.js +84 -74
  75. package/lib/mqtt/useQuiteHours.d.ts +4 -37
  76. package/lib/mqtt/useQuiteHours.js +66 -100
  77. package/lib/mqtt/useResetMap.d.ts +2 -8
  78. package/lib/mqtt/useResetMap.js +27 -34
  79. package/lib/mqtt/useRoomProperty.d.ts +8 -9
  80. package/lib/mqtt/useRoomProperty.js +67 -65
  81. package/lib/mqtt/useSchedule.d.ts +3 -23
  82. package/lib/mqtt/useSchedule.js +72 -101
  83. package/lib/mqtt/useSelectRoomClean.d.ts +3 -24
  84. package/lib/mqtt/useSelectRoomClean.js +107 -133
  85. package/lib/mqtt/useSpotClean.d.ts +5 -15
  86. package/lib/mqtt/useSpotClean.js +68 -121
  87. package/lib/mqtt/useVirtualArea.d.ts +6 -17
  88. package/lib/mqtt/useVirtualArea.js +109 -119
  89. package/lib/mqtt/useVirtualWall.d.ts +2 -18
  90. package/lib/mqtt/useVirtualWall.js +69 -90
  91. package/lib/mqtt/useVoice.d.ts +2 -16
  92. package/lib/mqtt/useVoice.js +48 -68
  93. package/lib/mqtt/useWifiMap.d.ts +6 -5
  94. package/lib/mqtt/useWifiMap.js +43 -42
  95. package/lib/mqtt/useZoneClean.d.ts +2 -21
  96. package/lib/mqtt/useZoneClean.js +125 -137
  97. package/lib/myLib/zod/mini/index.d.cts +1 -0
  98. package/lib/myLib/zod/mini/index.d.ts +1 -0
  99. package/lib/myLib/zod/mini/index.js +1 -0
  100. package/lib/myLib/zod/mini/package.json +6 -0
  101. package/lib/myLib/zod/src/mini/index.d.ts +1 -0
  102. package/lib/myLib/zod/src/mini/index.js +1 -0
  103. package/lib/myLib/zod/src/v4/core/api.d.ts +306 -0
  104. package/lib/myLib/zod/src/v4/core/api.js +1256 -0
  105. package/lib/myLib/zod/src/v4/core/checks.d.ts +278 -0
  106. package/lib/myLib/zod/src/v4/core/checks.js +816 -0
  107. package/lib/myLib/zod/src/v4/core/config.d.ts +9 -0
  108. package/lib/myLib/zod/src/v4/core/config.js +5 -0
  109. package/lib/myLib/zod/src/v4/core/core.d.ts +70 -0
  110. package/lib/myLib/zod/src/v4/core/core.js +95 -0
  111. package/lib/myLib/zod/src/v4/core/doc.d.ts +14 -0
  112. package/lib/myLib/zod/src/v4/core/doc.js +42 -0
  113. package/lib/myLib/zod/src/v4/core/errors.d.ts +220 -0
  114. package/lib/myLib/zod/src/v4/core/errors.js +232 -0
  115. package/lib/myLib/zod/src/v4/core/index.d.ts +15 -0
  116. package/lib/myLib/zod/src/v4/core/index.js +15 -0
  117. package/lib/myLib/zod/src/v4/core/json-schema-generator.d.ts +65 -0
  118. package/lib/myLib/zod/src/v4/core/json-schema-generator.js +120 -0
  119. package/lib/myLib/zod/src/v4/core/json-schema-processors.d.ts +49 -0
  120. package/lib/myLib/zod/src/v4/core/json-schema-processors.js +593 -0
  121. package/lib/myLib/zod/src/v4/core/json-schema.d.ts +88 -0
  122. package/lib/myLib/zod/src/v4/core/json-schema.js +1 -0
  123. package/lib/myLib/zod/src/v4/core/parse.d.ts +49 -0
  124. package/lib/myLib/zod/src/v4/core/parse.js +147 -0
  125. package/lib/myLib/zod/src/v4/core/regexes.d.ts +78 -0
  126. package/lib/myLib/zod/src/v4/core/regexes.js +146 -0
  127. package/lib/myLib/zod/src/v4/core/registries.d.ts +35 -0
  128. package/lib/myLib/zod/src/v4/core/registries.js +51 -0
  129. package/lib/myLib/zod/src/v4/core/schemas.d.ts +1136 -0
  130. package/lib/myLib/zod/src/v4/core/schemas.js +2745 -0
  131. package/lib/myLib/zod/src/v4/core/standard-schema.d.ts +126 -0
  132. package/lib/myLib/zod/src/v4/core/standard-schema.js +1 -0
  133. package/lib/myLib/zod/src/v4/core/to-json-schema.d.ts +114 -0
  134. package/lib/myLib/zod/src/v4/core/to-json-schema.js +488 -0
  135. package/lib/myLib/zod/src/v4/core/util.d.ts +199 -0
  136. package/lib/myLib/zod/src/v4/core/util.js +656 -0
  137. package/lib/myLib/zod/src/v4/core/versions.d.ts +5 -0
  138. package/lib/myLib/zod/src/v4/core/versions.js +5 -0
  139. package/lib/myLib/zod/src/v4/core/zsf.d.ts +91 -0
  140. package/lib/myLib/zod/src/v4/core/zsf.js +1 -0
  141. package/lib/myLib/zod/src/v4/mini/checks.d.ts +1 -0
  142. package/lib/myLib/zod/src/v4/mini/checks.js +1 -0
  143. package/lib/myLib/zod/src/v4/mini/coerce.d.ts +7 -0
  144. package/lib/myLib/zod/src/v4/mini/coerce.js +27 -0
  145. package/lib/myLib/zod/src/v4/mini/external.d.ts +11 -0
  146. package/lib/myLib/zod/src/v4/mini/external.js +16 -0
  147. package/lib/myLib/zod/src/v4/mini/index.d.ts +3 -0
  148. package/lib/myLib/zod/src/v4/mini/index.js +3 -0
  149. package/lib/myLib/zod/src/v4/mini/iso.d.ts +22 -0
  150. package/lib/myLib/zod/src/v4/mini/iso.js +46 -0
  151. package/lib/myLib/zod/src/v4/mini/parse.d.ts +1 -0
  152. package/lib/myLib/zod/src/v4/mini/parse.js +1 -0
  153. package/lib/myLib/zod/src/v4/mini/schemas.js +1244 -0
  154. package/lib/utils/index.d.ts +1 -0
  155. package/lib/utils/index.js +2 -1
  156. package/package.json +5 -3
@@ -1,35 +1,25 @@
1
- import "core-js/modules/esnext.iterator.constructor.js";
2
- import "core-js/modules/esnext.iterator.for-each.js";
3
1
  import "core-js/modules/esnext.iterator.map.js";
4
2
  // 划区清扫
5
- import { isArray } from 'lodash-es';
6
- import { createSetCommonParams } from './createCommonOptions';
7
- import { normalResolve } from './promise';
8
- import { ZoneCleanEnum } from './type';
9
- import { useContext } from 'react';
10
- import { SingletonContext } from './mqttProvider';
11
3
  import { encodeZoneClean0x3a, requestZoneClean0x3b } from '@ray-js/robot-protocol';
4
+ import { useContext } from 'react';
12
5
  import { pointsToString } from '../utils';
13
-
14
- // 划区清扫响应类型
15
-
16
- // 设置划区清扫参数类型
17
-
18
- // 请求划区清扫函数类型定义
19
-
20
- // 设置划区清扫函数类型定义
21
-
6
+ import { handleMqttError, useStructuredMessage } from './hooks/useStructuredMessage';
7
+ import { SingletonContext } from './mqttProvider';
8
+ import { ZoneCleanEnum } from './type';
9
+ import { validator } from './type/fun';
22
10
  /**
23
11
  * 自定义 Hook,用于划区清扫
24
- * @param devId 设备ID
25
12
  * @returns 包含 requestZoneClean 和 setZoneClean 函数的对象
26
13
  */
27
- export const useZoneClean = devId => {
14
+ export const useZoneClean = () => {
28
15
  const {
29
16
  useMqtt,
30
17
  commandVersion,
31
18
  devices
32
19
  } = useContext(SingletonContext);
20
+ const {
21
+ sendStructuredMessage
22
+ } = useStructuredMessage();
33
23
 
34
24
  /**
35
25
  * 请求划区清扫信息
@@ -46,53 +36,42 @@ export const useZoneClean = devId => {
46
36
 
47
37
  return {
48
38
  requestZoneClean: () => {
49
- try {
50
- if (useMqtt) {
51
- const params = createSetCommonParams({
52
- deviceId: devId,
53
- reqType: ZoneCleanEnum.query
54
- });
55
- ty.device.sendMqttMessage(params);
56
- const {
57
- taskId
58
- } = params.message;
59
- return normalResolve(ZoneCleanEnum.query, taskId);
60
- }
39
+ return new Promise((resolve, reject) => {
40
+ try {
41
+ if (useMqtt) {
42
+ sendStructuredMessage(ZoneCleanEnum.query, {}, resolve, error => reject(handleMqttError(error, 'Failed to request zone clean')));
43
+ return;
44
+ }
61
45
 
62
- // 非 MQTT 模式:使用命令传输
63
- devices.common.model.actions.command_trans.set(requestZoneClean0x3b({
64
- version: commandVersion
65
- }));
46
+ // 非 MQTT 模式:使用命令传输
47
+ devices.common.model.actions.command_trans.set(requestZoneClean0x3b({
48
+ version: commandVersion
49
+ }));
66
50
 
67
- // 非 MQTT 模式下无法立即获取响应数据,返回默认响应
68
- return Promise.resolve({
69
- success: true,
70
- errCode: 0,
71
- reqType: ZoneCleanEnum.query,
72
- version: commandVersion,
73
- taskId: `${Date.now()}`,
74
- polygons: [],
75
- names: []
76
- });
77
- } catch (error) {
78
- return Promise.reject(error instanceof Error ? error : new Error('Failed to request zone clean'));
79
- }
51
+ // 非 MQTT 模式下无法立即获取响应数据,返回默认响应
52
+ resolve({
53
+ success: true,
54
+ errCode: 0,
55
+ reqType: ZoneCleanEnum.query,
56
+ version: commandVersion,
57
+ taskId: `${Date.now()}`,
58
+ polygons: [],
59
+ names: []
60
+ });
61
+ } catch (error) {
62
+ reject(handleMqttError(error, 'Failed to request zone clean'));
63
+ }
64
+ });
80
65
  },
81
66
  setZoneClean: params => {
82
- const {
83
- zones,
84
- origin
85
- } = params;
67
+ return new Promise((resolve, reject) => {
68
+ try {
69
+ const {
70
+ zones,
71
+ origin
72
+ } = params;
86
73
 
87
- // 参数验证
88
- if (!isArray(zones) || zones.length === 0) {
89
- throw new Error('zones is required and must be a non-empty array');
90
- }
91
- if (!origin || typeof origin.x !== 'number' || typeof origin.y !== 'number') {
92
- throw new Error('origin is required and must be a valid Point object with x and y properties');
93
- }
94
- try {
95
- if (useMqtt) {
74
+ // 将业务参数转换为协议数据格式
96
75
  const num = zones.length;
97
76
  const {
98
77
  suctions = new Array(num).fill(''),
@@ -101,88 +80,97 @@ export const useZoneClean = devId => {
101
80
  yMops = new Array(num).fill(-1),
102
81
  sweepMopModes = new Array(num).fill('only_sweep')
103
82
  } = params;
104
- if (suctions && !isArray(suctions)) {
105
- throw new Error('suctions is illegal');
106
- }
107
- if (cisterns && !isArray(cisterns)) {
108
- throw new Error('cisterns is illegal');
109
- }
110
- if (cleanCounts && !isArray(cleanCounts)) {
111
- throw new Error('cleanCounts is illegal');
112
- }
113
- if (yMops && !isArray(yMops)) {
114
- throw new Error('yMops is illegal');
115
- }
116
- if (sweepMopModes && !isArray(sweepMopModes)) {
117
- throw new Error('sweepMopModes is illegal');
118
- }
119
- if (num !== suctions.length || num !== cisterns.length || num !== cleanCounts.length || num !== yMops.length || num !== sweepMopModes.length) {
120
- throw new Error('The length of the parameters is inconsistent');
121
- }
122
- const polygons = [];
123
- const names = [];
124
- zones.forEach(_ref => {
125
- let {
126
- points,
127
- name
128
- } = _ref;
129
- polygons.push(pointsToString(points, origin));
130
- names.push(name || '');
131
- });
132
- const mqttParams = createSetCommonParams({
133
- deviceId: devId,
134
- reqType: ZoneCleanEnum.set,
135
- message: {
83
+
84
+ // 构建符合 SetZoneCleanData 格式的数据
85
+ const zoneCleanData = {
86
+ zones: zones.map(_ref => {
87
+ let {
88
+ points,
89
+ name,
90
+ advanced
91
+ } = _ref;
92
+ return {
93
+ points,
94
+ name,
95
+ advanced
96
+ };
97
+ }),
98
+ origin,
99
+ suctions,
100
+ cisterns,
101
+ cleanCounts,
102
+ yMops,
103
+ sweepMopModes
104
+ };
105
+
106
+ // 使用 TypeBox Schema 进行参数验证
107
+ const validatedData = validator.validate('set_zone_clean', zoneCleanData);
108
+ if (useMqtt) {
109
+ // zones 转换为 polygons 字符串格式(用于 MQTT 消息)
110
+ const polygons = zones.map(_ref2 => {
111
+ let {
112
+ points
113
+ } = _ref2;
114
+ return pointsToString(points, origin);
115
+ });
116
+ const names = zones.map(_ref3 => {
117
+ let {
118
+ name
119
+ } = _ref3;
120
+ return name || '';
121
+ });
122
+ sendStructuredMessage(ZoneCleanEnum.set, {
136
123
  num: zones.length,
137
124
  switchGo: true,
138
125
  polygons,
139
- suctions,
140
- cisterns,
141
- cleanCounts,
142
- yMops,
143
- sweepMopModes,
126
+ suctions: validatedData.suctions,
127
+ cisterns: validatedData.cisterns,
128
+ cleanCounts: validatedData.cleanCounts,
129
+ yMops: validatedData.yMops,
130
+ sweepMopModes: validatedData.sweepMopModes,
144
131
  names
145
- }
132
+ }, resolve, error => reject(handleMqttError(error, 'Failed to set zone clean')), ZoneCleanEnum.query // 响应类型是 query,不是 set
133
+ );
134
+ return;
135
+ }
136
+
137
+ // 非 MQTT 模式:使用命令传输
138
+ const command = encodeZoneClean0x3a({
139
+ protocolVersion: 1,
140
+ version: commandVersion,
141
+ origin: validatedData.origin,
142
+ zones: validatedData.zones.map(zone => ({
143
+ points: zone.points,
144
+ name: zone.name,
145
+ advanced: zone.advanced
146
+ }))
146
147
  });
147
- ty.device.sendMqttMessage(mqttParams);
148
- const {
149
- taskId
150
- } = mqttParams.message;
151
- return normalResolve(ZoneCleanEnum.query, taskId);
148
+ devices.common.model.actions.command_trans.set(command);
149
+ const polygons = zones.map(_ref4 => {
150
+ let {
151
+ points
152
+ } = _ref4;
153
+ return pointsToString(points, origin);
154
+ });
155
+ const names = zones.map(_ref5 => {
156
+ let {
157
+ name
158
+ } = _ref5;
159
+ return name || '';
160
+ });
161
+ resolve({
162
+ success: true,
163
+ errCode: 0,
164
+ reqType: ZoneCleanEnum.query,
165
+ version: commandVersion,
166
+ taskId: `${Date.now()}`,
167
+ polygons,
168
+ names
169
+ });
170
+ } catch (error) {
171
+ reject(handleMqttError(error, 'Failed to set zone clean'));
152
172
  }
153
-
154
- // 非 MQTT 模式:使用命令传输
155
- const command = encodeZoneClean0x3a({
156
- protocolVersion: 1,
157
- version: commandVersion,
158
- origin,
159
- zones
160
- });
161
- devices.common.model.actions.command_trans.set(command);
162
- const polygons = zones.map(_ref2 => {
163
- let {
164
- points
165
- } = _ref2;
166
- return pointsToString(points, origin);
167
- });
168
- const names = zones.map(_ref3 => {
169
- let {
170
- name
171
- } = _ref3;
172
- return name || '';
173
- });
174
- return Promise.resolve({
175
- success: true,
176
- errCode: 0,
177
- reqType: ZoneCleanEnum.query,
178
- version: commandVersion,
179
- taskId: `${Date.now()}`,
180
- polygons,
181
- names
182
- });
183
- } catch (error) {
184
- throw error instanceof Error ? error : new Error('Failed to set zone clean');
185
- }
173
+ });
186
174
  }
187
175
  };
188
176
  };
@@ -0,0 +1 @@
1
+ export * from "../src/v4/mini/index.js";
@@ -0,0 +1 @@
1
+ export * from "../src/v4/mini/index.js";
@@ -0,0 +1 @@
1
+ export * from "../src/v4/mini/index.js";
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "main": "./index.cjs",
4
+ "module": "./index.js",
5
+ "types": "./index.d.cts"
6
+ }
@@ -0,0 +1 @@
1
+ export * from "../v4/mini/index.js";
@@ -0,0 +1 @@
1
+ export * from "../v4/mini/index.js";