homebridge-roborock-vacuum 1.3.2 → 1.3.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/ui/index.js CHANGED
@@ -6,17 +6,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const crypto_1 = __importDefault(require("crypto"));
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_1 = __importDefault(require("fs"));
9
- const plugin_ui_utils_1 = require("@homebridge/plugin-ui-utils");
10
9
  const crypto_2 = require("../crypto");
11
- const roborockAuth = require('../../roborockLib/lib/roborockAuth');
12
- class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
13
- constructor() {
14
- super();
15
- this.onRequest('/auth/send-2fa-email', this.sendTwoFactorEmail.bind(this));
16
- this.onRequest('/auth/verify-2fa-code', this.verifyTwoFactorCode.bind(this));
17
- this.onRequest('/auth/login', this.loginWithPassword.bind(this));
18
- this.onRequest('/auth/logout', this.logout.bind(this));
19
- this.ready();
10
+ const roborockAuth = require("../../roborockLib/lib/roborockAuth");
11
+ class RoborockUiServer {
12
+ constructor(HomebridgePluginUiServer) {
13
+ this.homebridgePluginUiServer = new HomebridgePluginUiServer();
14
+ this.homebridgeStoragePath =
15
+ this.homebridgePluginUiServer.homebridgeStoragePath;
16
+ this.homebridgePluginUiServer.onRequest("/auth/send-2fa-email", this.sendTwoFactorEmail.bind(this));
17
+ this.homebridgePluginUiServer.onRequest("/auth/verify-2fa-code", this.verifyTwoFactorCode.bind(this));
18
+ this.homebridgePluginUiServer.onRequest("/auth/login", this.loginWithPassword.bind(this));
19
+ this.homebridgePluginUiServer.onRequest("/auth/logout", this.logout.bind(this));
20
+ this.homebridgePluginUiServer.ready();
20
21
  }
21
22
  getStoragePath() {
22
23
  return this.homebridgeStoragePath || process.cwd();
@@ -24,9 +25,9 @@ class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
24
25
  async getClientId() {
25
26
  const storagePath = this.getStoragePath();
26
27
  if (storagePath) {
27
- const clientIdPath = path_1.default.join(storagePath, 'roborock.clientID');
28
+ const clientIdPath = path_1.default.join(storagePath, "roborock.clientID");
28
29
  try {
29
- const stored = JSON.parse(fs_1.default.readFileSync(clientIdPath, 'utf8'));
30
+ const stored = JSON.parse(fs_1.default.readFileSync(clientIdPath, "utf8"));
30
31
  if (stored && stored.val) {
31
32
  return stored.val;
32
33
  }
@@ -36,7 +37,7 @@ class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
36
37
  }
37
38
  const clientId = crypto_1.default.randomUUID();
38
39
  fs_1.default.mkdirSync(storagePath, { recursive: true });
39
- fs_1.default.writeFileSync(clientIdPath, JSON.stringify({ val: clientId, ack: true }, null, 2), 'utf8');
40
+ fs_1.default.writeFileSync(clientIdPath, JSON.stringify({ val: clientId, ack: true }, null, 2), "utf8");
40
41
  return clientId;
41
42
  }
42
43
  return crypto_1.default.randomUUID();
@@ -44,44 +45,53 @@ class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
44
45
  async buildLoginApi(config) {
45
46
  const clientID = await this.getClientId();
46
47
  return roborockAuth.createLoginApi({
47
- baseURL: config.baseURL || 'usiot.roborock.com',
48
+ baseURL: config.baseURL || "usiot.roborock.com",
48
49
  username: config.email,
49
50
  clientID,
50
- language: 'en',
51
+ language: "en",
51
52
  });
52
53
  }
53
54
  async sendTwoFactorEmail(payload) {
54
55
  const email = payload.email;
55
56
  if (!email) {
56
- return { ok: false, message: 'Email is required.' };
57
+ return { ok: false, message: "Email is required." };
57
58
  }
58
59
  try {
59
- const loginApi = await this.buildLoginApi({ email, baseURL: payload.baseURL });
60
+ const loginApi = await this.buildLoginApi({
61
+ email,
62
+ baseURL: payload.baseURL,
63
+ });
60
64
  await roborockAuth.requestEmailCode(loginApi, email);
61
- return { ok: true, message: 'Verification email sent.' };
65
+ return { ok: true, message: "Verification email sent." };
62
66
  }
63
67
  catch (error) {
64
- console.error('2FA email request failed:', (error === null || error === void 0 ? void 0 : error.message) || error);
65
- return { ok: false, message: (error === null || error === void 0 ? void 0 : error.message) || 'Failed to send verification email.' };
68
+ console.error("2FA email request failed:", (error === null || error === void 0 ? void 0 : error.message) || error);
69
+ return {
70
+ ok: false,
71
+ message: (error === null || error === void 0 ? void 0 : error.message) || "Failed to send verification email.",
72
+ };
66
73
  }
67
74
  }
68
75
  async verifyTwoFactorCode(payload) {
69
76
  const email = payload.email;
70
77
  if (!email) {
71
- return { ok: false, message: 'Email is required.' };
78
+ return { ok: false, message: "Email is required." };
72
79
  }
73
80
  if (!payload.code) {
74
- return { ok: false, message: 'Verification code is required.' };
81
+ return { ok: false, message: "Verification code is required." };
75
82
  }
76
83
  let loginResult;
77
84
  try {
78
- const loginApi = await this.buildLoginApi({ email, baseURL: payload.baseURL });
85
+ const loginApi = await this.buildLoginApi({
86
+ email,
87
+ baseURL: payload.baseURL,
88
+ });
79
89
  const nonce = this.buildNonce();
80
90
  const signData = await roborockAuth.signRequest(loginApi, nonce);
81
91
  if (!signData || !signData.k) {
82
- return { ok: false, message: 'Failed to create login signature.' };
92
+ return { ok: false, message: "Failed to create login signature." };
83
93
  }
84
- const region = roborockAuth.getRegionConfig(payload.baseURL || 'usiot.roborock.com');
94
+ const region = roborockAuth.getRegionConfig(payload.baseURL || "usiot.roborock.com");
85
95
  loginResult = await roborockAuth.loginWithCode(loginApi, {
86
96
  email,
87
97
  code: payload.code,
@@ -92,29 +102,36 @@ class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
92
102
  });
93
103
  }
94
104
  catch (error) {
95
- console.error('2FA verification request failed:', (error === null || error === void 0 ? void 0 : error.message) || error);
96
- return { ok: false, message: (error === null || error === void 0 ? void 0 : error.message) || 'Verification failed.' };
105
+ console.error("2FA verification request failed:", (error === null || error === void 0 ? void 0 : error.message) || error);
106
+ return { ok: false, message: (error === null || error === void 0 ? void 0 : error.message) || "Verification failed." };
97
107
  }
98
108
  if (loginResult && loginResult.code === 200 && loginResult.data) {
99
109
  const encrypted = (0, crypto_2.encryptSession)(loginResult.data, this.getStoragePath());
100
- return { ok: true, message: 'Login completed and token saved.', encryptedToken: encrypted };
101
- }
102
- console.error('2FA verification failed:', loginResult);
103
- return { ok: false, message: (loginResult === null || loginResult === void 0 ? void 0 : loginResult.msg) || 'Verification failed.' };
110
+ return {
111
+ ok: true,
112
+ message: "Login completed and token saved.",
113
+ encryptedToken: encrypted,
114
+ };
115
+ }
116
+ console.error("2FA verification failed:", loginResult);
117
+ return { ok: false, message: (loginResult === null || loginResult === void 0 ? void 0 : loginResult.msg) || "Verification failed." };
104
118
  }
105
119
  async loginWithPassword(payload) {
106
120
  const email = payload.email;
107
121
  const password = payload.password;
108
122
  if (!email || !password) {
109
- return { ok: false, message: 'Email and password are required.' };
123
+ return { ok: false, message: "Email and password are required." };
110
124
  }
111
125
  let loginResult;
112
126
  try {
113
- const loginApi = await this.buildLoginApi({ email, baseURL: payload.baseURL });
127
+ const loginApi = await this.buildLoginApi({
128
+ email,
129
+ baseURL: payload.baseURL,
130
+ });
114
131
  const nonce = this.buildNonce();
115
132
  const signData = await roborockAuth.signRequest(loginApi, nonce);
116
133
  if (!signData || !signData.k) {
117
- return { ok: false, message: 'Failed to create login signature.' };
134
+ return { ok: false, message: "Failed to create login signature." };
118
135
  }
119
136
  loginResult = await roborockAuth.loginByPassword(loginApi, {
120
137
  email,
@@ -124,25 +141,36 @@ class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
124
141
  });
125
142
  }
126
143
  catch (error) {
127
- console.error('Login request failed:', (error === null || error === void 0 ? void 0 : error.message) || error);
128
- return { ok: false, message: (error === null || error === void 0 ? void 0 : error.message) || 'Login failed.' };
144
+ console.error("Login request failed:", (error === null || error === void 0 ? void 0 : error.message) || error);
145
+ return { ok: false, message: (error === null || error === void 0 ? void 0 : error.message) || "Login failed." };
129
146
  }
130
147
  if (loginResult && loginResult.code === 200 && loginResult.data) {
131
148
  const encrypted = (0, crypto_2.encryptSession)(loginResult.data, this.getStoragePath());
132
- return { ok: true, message: 'Login successful. Token saved.', encryptedToken: encrypted };
149
+ return {
150
+ ok: true,
151
+ message: "Login successful. Token saved.",
152
+ encryptedToken: encrypted,
153
+ };
133
154
  }
134
155
  if (loginResult && loginResult.code === 2031) {
135
- return { ok: false, twoFactorRequired: true, message: 'Two-factor authentication required.' };
136
- }
137
- console.error('Login failed:', loginResult);
138
- return { ok: false, message: (loginResult === null || loginResult === void 0 ? void 0 : loginResult.msg) || 'Login failed. Check your credentials.' };
156
+ return {
157
+ ok: false,
158
+ twoFactorRequired: true,
159
+ message: "Two-factor authentication required.",
160
+ };
161
+ }
162
+ console.error("Login failed:", loginResult);
163
+ return {
164
+ ok: false,
165
+ message: (loginResult === null || loginResult === void 0 ? void 0 : loginResult.msg) || "Login failed. Check your credentials.",
166
+ };
139
167
  }
140
168
  async logout() {
141
169
  const storagePath = this.getStoragePath();
142
170
  if (!storagePath) {
143
- return { ok: true, message: 'Logged out. Token cleared.' };
171
+ return { ok: true, message: "Logged out. Token cleared." };
144
172
  }
145
- const userDataPath = path_1.default.join(storagePath, 'roborock.UserData');
173
+ const userDataPath = path_1.default.join(storagePath, "roborock.UserData");
146
174
  try {
147
175
  if (fs_1.default.existsSync(userDataPath)) {
148
176
  fs_1.default.unlinkSync(userDataPath);
@@ -151,11 +179,32 @@ class RoborockUiServer extends plugin_ui_utils_1.HomebridgePluginUiServer {
151
179
  catch (error) {
152
180
  // Ignore file removal errors.
153
181
  }
154
- return { ok: true, message: 'Logged out. Token cleared.' };
182
+ return { ok: true, message: "Logged out. Token cleared." };
155
183
  }
156
184
  buildNonce() {
157
- return crypto_1.default.randomBytes(12).toString('base64').substring(0, 16).replace(/\+/g, 'X').replace(/\//g, 'Y');
185
+ return crypto_1.default
186
+ .randomBytes(12)
187
+ .toString("base64")
188
+ .substring(0, 16)
189
+ .replace(/\+/g, "X")
190
+ .replace(/\//g, "Y");
158
191
  }
159
192
  }
160
- (() => new RoborockUiServer())();
193
+ // IMPORTANT: Use Function constructor to create a dynamic import that TypeScript won't transform
194
+ //
195
+ // Background: @homebridge/plugin-ui-utils v2+ is a pure ES module that cannot be loaded with require()
196
+ // in Node.js 18+. Normally we would use `await import('@homebridge/plugin-ui-utils')`, but because
197
+ // this project uses TypeScript with "module": "commonjs" in tsconfig.json, TypeScript transforms
198
+ // dynamic imports into require() calls in the compiled output, which defeats the purpose.
199
+ //
200
+ // Solution: Using the Function constructor prevents TypeScript from transforming the import statement.
201
+ // The Function constructor is evaluated at runtime, so TypeScript cannot statically analyze or transform it.
202
+ // This is the recommended workaround for ES module/CommonJS interop when using TypeScript with CommonJS output.
203
+ //
204
+ // Security note: This is safe because the module specifier is a hardcoded string literal, not user input.
205
+ (async () => {
206
+ const dynamicImport = new Function("specifier", "return import(specifier)");
207
+ const { HomebridgePluginUiServer } = await dynamicImport("@homebridge/plugin-ui-utils");
208
+ new RoborockUiServer(HomebridgePluginUiServer);
209
+ })();
161
210
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-roborock-vacuum",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "Roborock Vacuum Cleaner - plugin for Homebridge.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -33,18 +33,18 @@
33
33
  "test": "jest"
34
34
  },
35
35
  "dependencies": {
36
- "@homebridge/plugin-ui-utils": "^2.0.0",
36
+ "@homebridge/plugin-ui-utils": "^2.1.2",
37
37
  "abstract-things": "0.9.0",
38
- "axios": "^1.11.0",
39
- "binary-parser": "^2.2.1",
38
+ "axios": "^1.13.2",
39
+ "binary-parser": "^2.3.0",
40
40
  "chalk": "4.1.2",
41
41
  "crc-32": "^1.2.2",
42
42
  "debug": "4.3.5",
43
43
  "deep-equal": "2.2.3",
44
- "express": "^4.21.2",
44
+ "express": "^4.22.1",
45
45
  "jszip": "^3.10.1",
46
- "mqtt": "^5.14.0",
47
- "node-forge": "^1.3.1",
46
+ "mqtt": "^5.14.1",
47
+ "node-forge": "^1.3.3",
48
48
  "rxjs": "^7.8.2",
49
49
  "semver": "7.6.2",
50
50
  "tinkerhub-discovery": "0.3.1",
@@ -124,7 +124,7 @@ class vacuum {
124
124
  const getCommand = parameter.replace("set", "get");
125
125
  await this.getParameter(duid, getCommand);
126
126
  } else {
127
- const result = await this.adapter.messageQueueHandler.sendRequest(duid, parameter);
127
+ const result = await this.adapter.messageQueueHandler.sendRequest(duid, parameter, []);
128
128
  this.adapter.log.debug(`Command: ${parameter} result: ${result}`);
129
129
  }
130
130
  }