homebridge-levoit-humidifiers 1.14.4 → 1.15.0-beta.10

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/.tool-versions CHANGED
@@ -1 +1 @@
1
- nodejs 20.10.0
1
+ nodejs 20.19.5
package/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ ## [1.15.0] - 2025-Sept-08
2
+
3
+ ### Fixed
4
+ - #89: Update login implementation for non-US users to use region
@@ -23,6 +23,12 @@
23
23
  "required": true,
24
24
  "description": "VeSync's account password"
25
25
  },
26
+ "countryCode": {
27
+ "title": "Country Code",
28
+ "type": "string",
29
+ "default": "US",
30
+ "description": "The 2-letter ISO country code of your VeSync account (e.g. US, DE, JP). You can find your Region in the VeSync app under Settings → Region, then use the corresponding ISO code."
31
+ },
26
32
  "accessories": {
27
33
  "type": "object",
28
34
  "properties": {
@@ -22,6 +22,7 @@ export default class VeSync {
22
22
  private api?;
23
23
  private accountId?;
24
24
  private token?;
25
+ private baseURL;
25
26
  private readonly VERSION;
26
27
  private readonly FULL_VERSION;
27
28
  private readonly AGENT;
@@ -29,8 +30,11 @@ export default class VeSync {
29
30
  private readonly OS;
30
31
  private readonly BRAND;
31
32
  private readonly LANG;
32
- private readonly AXIOS_OPTIONS;
33
+ private readonly terminalId;
34
+ private readonly appID;
33
35
  constructor(email: string, password: string, config: PlatformConfig, debugMode: DebugMode, log: Logger);
36
+ private AXIOS_OPTIONS;
37
+ private ACCOUNT_AXIOS_OPTIONS;
34
38
  private generateDetailBody;
35
39
  private generateBody;
36
40
  private generateV2Body;
@@ -38,6 +42,8 @@ export default class VeSync {
38
42
  getDeviceInfo(fan: VeSyncFan): Promise<any>;
39
43
  startSession(): Promise<boolean>;
40
44
  private login;
45
+ private authByPWDOrOTM;
46
+ private loginByAuthorizeCode4Vesync;
41
47
  getDevices(): Promise<VeSyncFan[]>;
42
48
  }
43
49
  //# sourceMappingURL=VeSync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VeSync.d.ts","sourceRoot":"","sources":["../../src/api/VeSync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKpD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,oBAAY,YAAY;IACtB,MAAM,wBAAwB;IAC9B,IAAI,oBAAoB;IACxB,sBAAsB,4BAA4B;IAClD,OAAO,eAAe;IACtB,MAAM,cAAc;IACpB,QAAQ,sBAAsB;IAC9B,UAAU,oBAAoB;IAC9B,KAAK,aAAa;IAClB,YAAY,mBAAmB;IAC/B,WAAW,kBAAkB;CAC9B;AAID,MAAM,CAAC,OAAO,OAAO,MAAM;IAmBvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,cAAc;aACf,SAAS,EAAE,SAAS;aACpB,GAAG,EAAE,MAAM;IAtB7B,OAAO,CAAC,GAAG,CAAC,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAC,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkE;IACxF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG5B;gBAGiB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EACxB,MAAM,EAAE,cAAc,EACf,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM;IAG7B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;IAiBT,WAAW,CACtB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,IAAI,KAAK,GACR,OAAO,CAAC,OAAO,CAAC;IA6DN,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IA0C3C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;YAO/B,KAAK;IAyEN,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAsDhD"}
1
+ {"version":3,"file":"VeSync.d.ts","sourceRoot":"","sources":["../../src/api/VeSync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMpD,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,oBAAY,YAAY;IACtB,MAAM,wBAAwB;IAC9B,IAAI,oBAAoB;IACxB,sBAAsB,4BAA4B;IAClD,OAAO,eAAe;IACtB,MAAM,cAAc;IACpB,QAAQ,sBAAsB;IAC9B,UAAU,oBAAoB;IAC9B,KAAK,aAAa;IAClB,YAAY,mBAAmB;IAC/B,WAAW,kBAAkB;CAC9B;AAoCD,MAAM,CAAC,OAAO,OAAO,MAAM;IAqBvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,cAAc;aACf,SAAS,EAAE,SAAS;aACpB,GAAG,EAAE,MAAM;IAxB7B,OAAO,CAAC,GAAG,CAAC,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAC,CAAS;IAGvB,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkE;IACxF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAG7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+C;gBAGlD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EACxB,MAAM,EAAE,cAAc,EACf,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM;IAQ7B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,cAAc;IAiBT,WAAW,CACtB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,YAAY,EACpB,IAAI,KAAK,GACR,OAAO,CAAC,OAAO,CAAC;IA4DN,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAyC3C,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;YAO/B,KAAK;YAgGL,cAAc;YAsDd,2BAA2B;IA2D5B,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;CAoDhD"}
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -6,7 +29,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.BypassMethod = void 0;
7
30
  const axios_1 = __importDefault(require("axios"));
8
31
  const async_lock_1 = __importDefault(require("async-lock"));
9
- const crypto_1 = __importDefault(require("crypto"));
32
+ const uuid_1 = require("uuid");
33
+ const crypto = __importStar(require("crypto"));
10
34
  const deviceTypes_1 = __importDefault(require("./deviceTypes"));
11
35
  const VeSyncFan_1 = __importDefault(require("./VeSyncFan"));
12
36
  var BypassMethod;
@@ -22,32 +46,85 @@ var BypassMethod;
22
46
  BypassMethod["LIGHT_STATUS"] = "setLightStatus";
23
47
  BypassMethod["DRYING_MODE"] = "setDryingMode";
24
48
  })(BypassMethod = exports.BypassMethod || (exports.BypassMethod = {}));
49
+ function initialHostForCountry(cc) {
50
+ const upper = cc.toUpperCase();
51
+ if (['US', 'CA', 'MX', 'JP'].includes(upper))
52
+ return US_HOST;
53
+ return EU_HOST; // everything else starts on EU
54
+ }
55
+ function pickCountryCodeForRetry(step2Resp, originalCC) {
56
+ var _a, _b;
57
+ const region = (((_a = step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.result) === null || _a === void 0 ? void 0 : _a.currentRegion) || (step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.currentRegion) || '').toUpperCase();
58
+ if (region === 'US')
59
+ return 'US';
60
+ // Prefer server-provided countryCode if present
61
+ const serverCC = ((_b = step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.result) === null || _b === void 0 ? void 0 : _b.countryCode) || (step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.countryCode);
62
+ const cc = (serverCC || originalCC || '').toUpperCase();
63
+ // Basic sanity: must be 2 letters; otherwise keep original if valid, else fallback to 'US'
64
+ return /^[A-Z]{2}$/.test(cc) ? cc : (/^[A-Z]{2}$/.test(originalCC.toUpperCase()) ? originalCC.toUpperCase() : 'US');
65
+ }
25
66
  const lock = new async_lock_1.default();
67
+ // Known API hosts
68
+ const US_HOST = 'https://smartapi.vesync.com';
69
+ const EU_HOST = 'https://smartapi.vesync.eu';
70
+ const ACCOUNT_HOST = 'https://accountapi.vesync.com';
71
+ // Server error code indicating cross-region login is required
72
+ const CROSS_REGION_CODE = -11260022;
73
+ // Convert server region → host (default to US if unknown)
74
+ function regionToHost(region) {
75
+ if (typeof region === 'string' && region.toUpperCase() === 'EU')
76
+ return EU_HOST;
77
+ return US_HOST;
78
+ }
26
79
  class VeSync {
27
80
  constructor(email, password, config, debugMode, log) {
28
- var _a;
81
+ var _a, _b, _c, _d;
29
82
  this.email = email;
30
83
  this.password = password;
31
84
  this.config = config;
32
85
  this.debugMode = debugMode;
33
86
  this.log = log;
34
- this.VERSION = '4.1.70';
35
- this.FULL_VERSION = `VeSync ${this.VERSION} build15`;
87
+ this.VERSION = '5.6.60';
88
+ this.FULL_VERSION = `VeSync ${this.VERSION}`;
36
89
  this.AGENT = `VeSync/${this.VERSION} (iPhone; iOS 17.2.1; Humidifier/5.00)`;
37
90
  this.TIMEZONE = 'America/New_York';
38
91
  this.OS = 'iOS 17.2.1';
39
92
  this.BRAND = 'iPhone 15 Pro';
40
93
  this.LANG = 'en';
41
- this.AXIOS_OPTIONS = {
42
- baseURL: 'https://smartapi.vesync.com',
94
+ // Terminal/device identifier that VeSync expects to remain stable
95
+ this.terminalId = '2' + (0, uuid_1.v4)().replace(/-/g, '');
96
+ this.appID = Math.random().toString(36).substring(2, 10);
97
+ // Allow explicit override via config.options.apiHost; otherwise start with US
98
+ const cc = (((_a = config.options) === null || _a === void 0 ? void 0 : _a.countryCode) || 'US').toUpperCase();
99
+ this.baseURL = ((_b = config.options) === null || _b === void 0 ? void 0 : _b.apiHost) || initialHostForCountry(cc);
100
+ (_d = (_c = this.debugMode).debug) === null || _d === void 0 ? void 0 : _d.call(_c, '[CONFIG]', `countryCode=${cc}, initialBaseURL=${this.baseURL}`);
101
+ }
102
+ AXIOS_OPTIONS() {
103
+ var _a;
104
+ return {
105
+ baseURL: this.baseURL,
43
106
  timeout: ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.apiTimeout) || 15000,
44
107
  };
45
108
  }
109
+ ACCOUNT_AXIOS_OPTIONS() {
110
+ var _a;
111
+ return {
112
+ baseURL: ACCOUNT_HOST,
113
+ timeout: ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.apiTimeout) || 15000,
114
+ headers: {
115
+ 'content-type': 'application/json',
116
+ 'accept-language': this.LANG,
117
+ 'user-agent': this.AGENT,
118
+ appversion: this.FULL_VERSION,
119
+ tz: this.TIMEZONE,
120
+ },
121
+ };
122
+ }
46
123
  generateDetailBody() {
47
124
  return {
48
125
  appVersion: this.FULL_VERSION,
49
126
  phoneBrand: this.BRAND,
50
- traceId: Date.now(),
127
+ traceId: `APP${Date.now()}-00001`,
51
128
  phoneOS: this.OS,
52
129
  };
53
130
  }
@@ -81,7 +158,7 @@ class VeSync {
81
158
  }
82
159
  async sendCommand(fan, method, body = {}) {
83
160
  return lock.acquire('api-call', async () => {
84
- var _a, _b;
161
+ var _a, _b, _c;
85
162
  if (!this.api) {
86
163
  throw new Error('The user is not logged in!');
87
164
  }
@@ -91,10 +168,9 @@ class VeSync {
91
168
  ...this.generateDetailBody(),
92
169
  ...this.generateBody(true),
93
170
  });
94
- // Explicitly fail if device is offline
95
- if (response.data.msg == 'device offline') {
171
+ if (((_a = response.data) === null || _a === void 0 ? void 0 : _a.msg) === 'device offline') {
96
172
  this.log.error('VeSync cannot communicate with humidifier! Check the VeSync App.');
97
- if ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.showOffWhenDisconnected) {
173
+ if ((_b = this.config.options) === null || _b === void 0 ? void 0 : _b.showOffWhenDisconnected) {
98
174
  return false;
99
175
  }
100
176
  else {
@@ -104,7 +180,7 @@ class VeSync {
104
180
  if (!(response === null || response === void 0 ? void 0 : response.data)) {
105
181
  this.debugMode.debug('[SEND COMMAND]', 'No response data!! JSON:', JSON.stringify(response === null || response === void 0 ? void 0 : response.data));
106
182
  }
107
- const isSuccess = ((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.code) === 0;
183
+ const isSuccess = ((_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.code) === 0;
108
184
  if (!isSuccess) {
109
185
  this.debugMode.debug('[SEND COMMAND]', `Failed to send command ${method} to ${fan.name}`, `with (${JSON.stringify(body)})!`, `Response: ${JSON.stringify(response === null || response === void 0 ? void 0 : response.data)}`);
110
186
  }
@@ -116,7 +192,7 @@ class VeSync {
116
192
  }
117
193
  async getDeviceInfo(fan) {
118
194
  return lock.acquire('api-call', async () => {
119
- var _a;
195
+ var _a, _b;
120
196
  if (!this.api) {
121
197
  throw new Error('The user is not logged in!');
122
198
  }
@@ -127,10 +203,9 @@ class VeSync {
127
203
  ...this.generateBody(true),
128
204
  });
129
205
  this.debugMode.debug('[DEVICE INFO]', JSON.stringify(response.data));
130
- // Explicitly fail if device is offline
131
- if (response.data.msg == 'device offline') {
206
+ if (((_a = response.data) === null || _a === void 0 ? void 0 : _a.msg) === 'device offline') {
132
207
  this.log.error('VeSync cannot communicate with humidifier! Check the VeSync App.');
133
- if ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.showOffWhenDisconnected) {
208
+ if ((_b = this.config.options) === null || _b === void 0 ? void 0 : _b.showOffWhenDisconnected) {
134
209
  return false;
135
210
  }
136
211
  else {
@@ -145,47 +220,57 @@ class VeSync {
145
220
  }
146
221
  async startSession() {
147
222
  this.debugMode.debug('[START SESSION]', 'Starting auth session...');
148
- const firstLoginSuccess = await this.login();
149
- setInterval(this.login.bind(this), 1000 * 60 * 55); // Refresh token every 55 minutes
150
- return firstLoginSuccess;
223
+ const ok = await this.login();
224
+ if (ok)
225
+ setInterval(this.login.bind(this), 1000 * 60 * 55);
226
+ return ok;
151
227
  }
152
228
  async login() {
153
- return lock.acquire('api-call', async () => {
229
+ return lock.acquire('auth-call', async () => {
230
+ var _a, _b, _c, _d, _e, _f, _g, _h;
154
231
  if (!this.email || !this.password) {
155
232
  throw new Error('Email and password are required');
156
233
  }
157
- this.debugMode.debug('[LOGIN]', 'Logging in...');
158
- const pwdHashed = crypto_1.default
159
- .createHash('md5')
160
- .update(this.password)
161
- .digest('hex');
162
- const response = await axios_1.default.post('cloud/v1/user/login', {
163
- email: this.email,
164
- password: pwdHashed,
165
- devToken: '',
166
- userType: 1,
167
- method: 'login',
168
- token: '',
169
- ...this.generateDetailBody(),
170
- ...this.generateBody(),
171
- }, {
172
- ...this.AXIOS_OPTIONS,
234
+ const userCountryCode = (((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.countryCode) || 'US').toUpperCase();
235
+ this.debugMode.debug('[LOGIN]', 'Step 1: authByPWDOrOTM…');
236
+ const { authorizeCode, bizToken: initialBizToken } = await this.authByPWDOrOTM(userCountryCode);
237
+ this.debugMode.debug('[LOGIN]', `Step 2: loginByAuthorizeCode on ${this.baseURL}…`);
238
+ let step2Resp = await this.loginByAuthorizeCode4Vesync({
239
+ userCountryCode,
240
+ authorizeCode,
241
+ host: this.baseURL,
173
242
  });
174
- if (!(response === null || response === void 0 ? void 0 : response.data)) {
175
- this.debugMode.debug('[LOGIN]', 'No response data!! JSON:', JSON.stringify(response === null || response === void 0 ? void 0 : response.data));
176
- return false;
243
+ if ((step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.code) === CROSS_REGION_CODE) {
244
+ const currentRegion = ((_b = step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.result) === null || _b === void 0 ? void 0 : _b.currentRegion) ||
245
+ ((_c = step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.data) === null || _c === void 0 ? void 0 : _c.currentRegion) ||
246
+ (step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.currentRegion);
247
+ const crossBizToken = ((_d = step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.result) === null || _d === void 0 ? void 0 : _d.bizToken) ||
248
+ ((_e = step2Resp === null || step2Resp === void 0 ? void 0 : step2Resp.data) === null || _e === void 0 ? void 0 : _e.bizToken) ||
249
+ initialBizToken ||
250
+ null;
251
+ const regionHost = regionToHost(currentRegion);
252
+ const overrideCC = pickCountryCodeForRetry(step2Resp, userCountryCode);
253
+ this.debugMode.debug('[LOGIN]', `Cross-region detected (${currentRegion}). Retrying on ${regionHost} with bizToken and userCountryCode=${overrideCC} (regionChange=last_region)…`);
254
+ this.baseURL = ((_f = this.config.options) === null || _f === void 0 ? void 0 : _f.apiHost) || regionHost;
255
+ step2Resp = await this.loginByAuthorizeCode4Vesync({
256
+ userCountryCode,
257
+ bizToken: crossBizToken,
258
+ host: this.baseURL,
259
+ regionChange: 'last_region',
260
+ overrideCountryCode: overrideCC,
261
+ currentRegion,
262
+ });
177
263
  }
178
- const { result } = response.data;
179
- const { token, accountID } = result !== null && result !== void 0 ? result : {};
180
- if (!token || !accountID) {
181
- this.debugMode.debug('[LOGIN]', 'The authentication failed!! JSON:', JSON.stringify(response.data));
264
+ if (!step2Resp || step2Resp.code !== 0 || !((_g = step2Resp.result) === null || _g === void 0 ? void 0 : _g.token) || !((_h = step2Resp.result) === null || _h === void 0 ? void 0 : _h.accountID)) {
265
+ this.debugMode.debug('[LOGIN] Failed final step', JSON.stringify(step2Resp));
182
266
  return false;
183
267
  }
268
+ const { token, accountID } = step2Resp.result;
184
269
  this.debugMode.debug('[LOGIN]', 'Authentication was successful');
185
270
  this.accountId = accountID;
186
271
  this.token = token;
187
272
  this.api = axios_1.default.create({
188
- ...this.AXIOS_OPTIONS,
273
+ ...this.AXIOS_OPTIONS(),
189
274
  headers: {
190
275
  'content-type': 'application/json',
191
276
  'accept-language': this.LANG,
@@ -196,9 +281,101 @@ class VeSync {
196
281
  tk: this.token,
197
282
  },
198
283
  });
284
+ this.api.interceptors.response.use((resp) => resp, async (err) => {
285
+ var _a;
286
+ if (((_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
287
+ this.debugMode.debug('[AUTH]', '401 detected, re-authenticating…');
288
+ const ok = await this.login();
289
+ if (ok && err.config) {
290
+ err.config.headers = err.config.headers || {};
291
+ err.config.headers.tk = this.token;
292
+ err.config.headers.accountid = this.accountId;
293
+ return this.api.request(err.config);
294
+ }
295
+ }
296
+ throw err;
297
+ });
199
298
  return true;
200
299
  });
201
300
  }
301
+ async authByPWDOrOTM(userCountryCode) {
302
+ const pwdHashed = crypto.createHash('md5').update(this.password).digest('hex');
303
+ const body = {
304
+ email: this.email,
305
+ method: 'authByPWDOrOTM',
306
+ password: pwdHashed,
307
+ acceptLanguage: this.LANG,
308
+ accountID: '',
309
+ authProtocolType: 'generic',
310
+ clientInfo: this.BRAND,
311
+ clientType: 'vesyncApp',
312
+ clientVersion: this.FULL_VERSION,
313
+ debugMode: false,
314
+ osInfo: this.OS.includes('iOS') ? 'iOS' : 'Android',
315
+ terminalId: this.terminalId,
316
+ timeZone: this.TIMEZONE,
317
+ token: '',
318
+ userCountryCode,
319
+ userType: 1,
320
+ devToken: '',
321
+ appID: this.appID,
322
+ sourceAppID: this.appID,
323
+ ...this.generateDetailBody(),
324
+ };
325
+ // Prefer the account API for step 1 (matches app behavior)
326
+ let resp;
327
+ try {
328
+ resp = await axios_1.default.post('/globalPlatform/api/accountAuth/v1/authByPWDOrOTM', body, this.ACCOUNT_AXIOS_OPTIONS());
329
+ }
330
+ catch (e) {
331
+ // Fallback to smartapi host if accountapi ever blocks this
332
+ this.debugMode.debug('[AUTH] accountapi failed, falling back to smartapi', String(e));
333
+ resp = await axios_1.default.post('/globalPlatform/api/accountAuth/v1/authByPWDOrOTM', body, this.AXIOS_OPTIONS());
334
+ }
335
+ if (!(resp === null || resp === void 0 ? void 0 : resp.data) || resp.data.code !== 0 || !resp.data.result) {
336
+ this.debugMode.debug('[AUTH] Failed authByPWDOrOTM', JSON.stringify(resp === null || resp === void 0 ? void 0 : resp.data));
337
+ throw new Error('VeSync authentication failed at step 1');
338
+ }
339
+ const { authorizeCode = null, bizToken = null } = resp.data.result;
340
+ return { authorizeCode, bizToken };
341
+ }
342
+ async loginByAuthorizeCode4Vesync(opts) {
343
+ var _a;
344
+ const { userCountryCode, host, authorizeCode = null, bizToken = null, regionChange, overrideCountryCode, currentRegion, } = opts;
345
+ const body = {
346
+ method: 'loginByAuthorizeCode4Vesync',
347
+ authorizeCode,
348
+ acceptLanguage: this.LANG,
349
+ accountID: '',
350
+ clientInfo: this.BRAND,
351
+ clientType: 'vesyncApp',
352
+ clientVersion: this.FULL_VERSION,
353
+ debugMode: false,
354
+ emailSubscriptions: false,
355
+ osInfo: this.OS.includes('iOS') ? 'iOS' : 'Android',
356
+ terminalId: this.terminalId,
357
+ timeZone: this.TIMEZONE,
358
+ token: '',
359
+ userCountryCode: overrideCountryCode || userCountryCode,
360
+ ...(regionChange ? { regionChange } : {}),
361
+ ...(currentRegion ? { region: String(currentRegion).toUpperCase() } : {}),
362
+ appID: this.appID,
363
+ sourceAppID: this.appID,
364
+ ...this.generateDetailBody(),
365
+ };
366
+ if (bizToken) {
367
+ body.bizToken = bizToken;
368
+ body.authorizeCode = null;
369
+ }
370
+ try {
371
+ const resp = await axios_1.default.post('/user/api/accountManage/v1/loginByAuthorizeCode4Vesync', body, { baseURL: host, timeout: ((_a = this.config.options) === null || _a === void 0 ? void 0 : _a.apiTimeout) || 15000 });
372
+ return resp === null || resp === void 0 ? void 0 : resp.data;
373
+ }
374
+ catch (e) {
375
+ this.debugMode.debug('[LOGIN STEP 2] network error', String(e));
376
+ return undefined;
377
+ }
378
+ }
202
379
  async getDevices() {
203
380
  return lock.acquire('api-call', async () => {
204
381
  var _a, _b, _c;
@@ -1 +1 @@
1
- {"version":3,"file":"VeSync.js","sourceRoot":"","sources":["../../src/api/VeSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VeSync.js","sourceRoot":"","sources":["../../src/api/VeSync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName": "Levoit Humidifiers",
5
5
  "main": "dist/index.js",
6
6
  "license": "Apache-2.0",
7
- "version": "1.14.4",
7
+ "version": "1.15.0-beta.10",
8
8
  "private": false,
9
9
  "bugs": {
10
10
  "url": "https://github.com/pschroeder89/homebridge-levoit-humidifiers/issues"
@@ -43,7 +43,8 @@
43
43
  "axios": "^0.24.0",
44
44
  "eslint-config-prettier": "^9.1.0",
45
45
  "prettier": "^3.1.1",
46
- "yarn": "^1.22.21"
46
+ "uuid": "^9.0.0",
47
+ "yarn": "^1.22.22"
47
48
  },
48
49
  "keywords": [
49
50
  "homebridge-plugin",