tsvesync 1.0.11

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 (138) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +227 -0
  3. package/api/vesync/VeSync.yaml +33 -0
  4. package/api/vesyncbulb/ESL100.yaml +74 -0
  5. package/api/vesyncbulb/ESL100CW.yaml +123 -0
  6. package/api/vesyncbulb/ESL100MC.yaml +169 -0
  7. package/api/vesyncbulb/XYD0001.yaml +193 -0
  8. package/api/vesyncfan/Classic200S.yaml +280 -0
  9. package/api/vesyncfan/Classic300S.yaml +278 -0
  10. package/api/vesyncfan/Core200S.yaml +256 -0
  11. package/api/vesyncfan/Core300S.yaml +281 -0
  12. package/api/vesyncfan/Core400S.yaml +281 -0
  13. package/api/vesyncfan/Core600S.yaml +281 -0
  14. package/api/vesyncfan/Dual200S.yaml +278 -0
  15. package/api/vesyncfan/LAP-C201S-AUSR.yaml +256 -0
  16. package/api/vesyncfan/LAP-C202S-WUSR.yaml +256 -0
  17. package/api/vesyncfan/LAP-C301S-WAAA.yaml +281 -0
  18. package/api/vesyncfan/LAP-C301S-WJP.yaml +281 -0
  19. package/api/vesyncfan/LAP-C302S-WUSB.yaml +281 -0
  20. package/api/vesyncfan/LAP-C401S-WAAA.yaml +281 -0
  21. package/api/vesyncfan/LAP-C401S-WJP.yaml +281 -0
  22. package/api/vesyncfan/LAP-C401S-WUSR.yaml +281 -0
  23. package/api/vesyncfan/LAP-C601S-WEU.yaml +281 -0
  24. package/api/vesyncfan/LAP-C601S-WUS.yaml +281 -0
  25. package/api/vesyncfan/LAP-C601S-WUSR.yaml +281 -0
  26. package/api/vesyncfan/LAP-EL551S-AEUR.yaml +167 -0
  27. package/api/vesyncfan/LAP-EL551S-AUS.yaml +167 -0
  28. package/api/vesyncfan/LAP-EL551S-WEU.yaml +167 -0
  29. package/api/vesyncfan/LAP-EL551S-WUS.yaml +167 -0
  30. package/api/vesyncfan/LAP-V102S-AASR.yaml +167 -0
  31. package/api/vesyncfan/LAP-V102S-AUSR.yaml +167 -0
  32. package/api/vesyncfan/LAP-V102S-WEU.yaml +167 -0
  33. package/api/vesyncfan/LAP-V102S-WJP.yaml +167 -0
  34. package/api/vesyncfan/LAP-V102S-WUS.yaml +167 -0
  35. package/api/vesyncfan/LAP-V201-AUSR.yaml +167 -0
  36. package/api/vesyncfan/LAP-V201S-AASR.yaml +167 -0
  37. package/api/vesyncfan/LAP-V201S-AEUR.yaml +167 -0
  38. package/api/vesyncfan/LAP-V201S-AUSR.yaml +167 -0
  39. package/api/vesyncfan/LAP-V201S-WEU.yaml +167 -0
  40. package/api/vesyncfan/LAP-V201S-WJP.yaml +167 -0
  41. package/api/vesyncfan/LAP-V201S-WUS.yaml +167 -0
  42. package/api/vesyncfan/LEH-S601S-WUS.yaml +303 -0
  43. package/api/vesyncfan/LEH-S601S-WUSR.yaml +82 -0
  44. package/api/vesyncfan/LTF-F422S-KEU.yaml +165 -0
  45. package/api/vesyncfan/LTF-F422S-WUS.yaml +165 -0
  46. package/api/vesyncfan/LTF-F422S-WUSR.yaml +167 -0
  47. package/api/vesyncfan/LTF-F422_WJP.yaml +165 -0
  48. package/api/vesyncfan/LUH-A601S-AUSW.yaml +82 -0
  49. package/api/vesyncfan/LUH-A601S-WUSB.yaml +305 -0
  50. package/api/vesyncfan/LUH-A602S-WEU.yaml +305 -0
  51. package/api/vesyncfan/LUH-A602S-WEUR.yaml +305 -0
  52. package/api/vesyncfan/LUH-A602S-WJP.yaml +305 -0
  53. package/api/vesyncfan/LUH-A602S-WUS.yaml +305 -0
  54. package/api/vesyncfan/LUH-A602S-WUSC.yaml +305 -0
  55. package/api/vesyncfan/LUH-A602S-WUSR.yaml +305 -0
  56. package/api/vesyncfan/LUH-D301S-WEU.yaml +305 -0
  57. package/api/vesyncfan/LUH-D301S-WJP.yaml +305 -0
  58. package/api/vesyncfan/LUH-D301S-WUSR.yaml +305 -0
  59. package/api/vesyncfan/LUH-M101S-WUS.yaml +278 -0
  60. package/api/vesyncfan/LUH-O451S-WEU.yaml +278 -0
  61. package/api/vesyncfan/LUH-O451S-WUS.yaml +278 -0
  62. package/api/vesyncfan/LUH-O451S-WUSR.yaml +305 -0
  63. package/api/vesyncfan/LUH-O601S-KUS.yaml +305 -0
  64. package/api/vesyncfan/LUH-O601S-WUS.yaml +305 -0
  65. package/api/vesyncfan/LV-PUR131S.yaml +108 -0
  66. package/api/vesyncfan/LV-RH131S.yaml +108 -0
  67. package/api/vesyncoutlet/ESO15-TB.yaml +124 -0
  68. package/api/vesyncoutlet/ESW01-EU.yaml +122 -0
  69. package/api/vesyncoutlet/ESW03-USA.yaml +122 -0
  70. package/api/vesyncoutlet/ESW15-USA.yaml +156 -0
  71. package/api/vesyncoutlet/wifi-switch-1.3.yaml +60 -0
  72. package/api/vesyncswitch/ESWD16.yaml +128 -0
  73. package/api/vesyncswitch/ESWL01.yaml +56 -0
  74. package/api/vesyncswitch/ESWL03.yaml +56 -0
  75. package/dist/lib/helpers.d.ts +87 -0
  76. package/dist/lib/helpers.js +222 -0
  77. package/dist/lib/helpers.js.map +1 -0
  78. package/dist/lib/vesync.d.ts +47 -0
  79. package/dist/lib/vesync.js +309 -0
  80. package/dist/lib/vesync.js.map +1 -0
  81. package/dist/lib/vesyncBaseDevice.d.ts +68 -0
  82. package/dist/lib/vesyncBaseDevice.js +116 -0
  83. package/dist/lib/vesyncBaseDevice.js.map +1 -0
  84. package/dist/lib/vesyncBulb.d.ts +0 -0
  85. package/dist/lib/vesyncBulb.js +2 -0
  86. package/dist/lib/vesyncBulb.js.map +1 -0
  87. package/dist/lib/vesyncFan.d.ts +92 -0
  88. package/dist/lib/vesyncFan.js +265 -0
  89. package/dist/lib/vesyncFan.js.map +1 -0
  90. package/dist/lib/vesyncKitchen.d.ts +0 -0
  91. package/dist/lib/vesyncKitchen.js +2 -0
  92. package/dist/lib/vesyncKitchen.js.map +1 -0
  93. package/dist/lib/vesyncOutlet.d.ts +0 -0
  94. package/dist/lib/vesyncOutlet.js +2 -0
  95. package/dist/lib/vesyncOutlet.js.map +1 -0
  96. package/dist/lib/vesyncSwitch.d.ts +0 -0
  97. package/dist/lib/vesyncSwitch.js +2 -0
  98. package/dist/lib/vesyncSwitch.js.map +1 -0
  99. package/dist/src/lib/helpers.d.ts +88 -0
  100. package/dist/src/lib/helpers.js +244 -0
  101. package/dist/src/lib/vesync.d.ts +89 -0
  102. package/dist/src/lib/vesync.js +430 -0
  103. package/dist/src/lib/vesyncBaseDevice.d.ts +43 -0
  104. package/dist/src/lib/vesyncBaseDevice.js +87 -0
  105. package/dist/src/lib/vesyncBulb.d.ts +79 -0
  106. package/dist/src/lib/vesyncBulb.js +198 -0
  107. package/dist/src/lib/vesyncBulbImpl.d.ts +38 -0
  108. package/dist/src/lib/vesyncBulbImpl.js +161 -0
  109. package/dist/src/lib/vesyncFan.d.ts +80 -0
  110. package/dist/src/lib/vesyncFan.js +406 -0
  111. package/dist/src/lib/vesyncFanImpl.d.ts +137 -0
  112. package/dist/src/lib/vesyncFanImpl.js +643 -0
  113. package/dist/src/lib/vesyncOutlet.d.ts +53 -0
  114. package/dist/src/lib/vesyncOutlet.js +98 -0
  115. package/dist/src/lib/vesyncOutletImpl.d.ts +70 -0
  116. package/dist/src/lib/vesyncOutletImpl.js +206 -0
  117. package/dist/src/lib/vesyncSwitch.d.ts +169 -0
  118. package/dist/src/lib/vesyncSwitch.js +414 -0
  119. package/dist/src/lib/vesyncSwitchImpl.d.ts +82 -0
  120. package/dist/src/lib/vesyncSwitchImpl.js +290 -0
  121. package/dist/test/testFeatures.d.ts +4 -0
  122. package/dist/test/testFeatures.js +394 -0
  123. package/dist/test/testService.d.ts +62 -0
  124. package/dist/test/testService.js +540 -0
  125. package/dist/test/testSpecial.d.ts +5 -0
  126. package/dist/test/testSpecial.js +227 -0
  127. package/package.json +53 -0
  128. package/src/lib/helpers.ts +290 -0
  129. package/src/lib/vesync.ts +530 -0
  130. package/src/lib/vesyncBaseDevice.ts +114 -0
  131. package/src/lib/vesyncBulb.ts +252 -0
  132. package/src/lib/vesyncBulbImpl.ts +215 -0
  133. package/src/lib/vesyncFan.ts +447 -0
  134. package/src/lib/vesyncFanImpl.ts +848 -0
  135. package/src/lib/vesyncOutlet.ts +148 -0
  136. package/src/lib/vesyncOutletImpl.ts +284 -0
  137. package/src/lib/vesyncSwitch.ts +546 -0
  138. package/src/lib/vesyncSwitchImpl.ts +408 -0
@@ -0,0 +1,128 @@
1
+ indicator_light_on:
2
+ headers:
3
+ accept-language: en
4
+ accountId: sample_id
5
+ appVersion: 2.8.6
6
+ content-type: application/json
7
+ tk: sample_tk
8
+ tz: America/New_York
9
+ json_object:
10
+ acceptLanguage: en
11
+ accountID: sample_id
12
+ status: 'on'
13
+ timeZone: America/New_York
14
+ token: sample_tk
15
+ uuid: ESWD16-UUID
16
+ method: put
17
+ url: /dimmer/v1/device/indicatorlightstatus
18
+ rgb_color_on:
19
+ headers:
20
+ accept-language: en
21
+ accountId: sample_id
22
+ appVersion: 2.8.6
23
+ content-type: application/json
24
+ tk: sample_tk
25
+ tz: America/New_York
26
+ json_object:
27
+ acceptLanguage: en
28
+ accountID: sample_id
29
+ status: 'on'
30
+ timeZone: America/New_York
31
+ token: sample_tk
32
+ uuid: ESWD16-UUID
33
+ method: put
34
+ url: /dimmer/v1/device/devicergbstatus
35
+ rgb_color_set:
36
+ headers:
37
+ accept-language: en
38
+ accountId: sample_id
39
+ appVersion: 2.8.6
40
+ content-type: application/json
41
+ tk: sample_tk
42
+ tz: America/New_York
43
+ json_object:
44
+ acceptLanguage: en
45
+ accountID: sample_id
46
+ rgbValue:
47
+ blue: 100
48
+ green: 225
49
+ red: 50
50
+ status: 'on'
51
+ timeZone: America/New_York
52
+ token: sample_tk
53
+ uuid: ESWD16-UUID
54
+ method: put
55
+ url: /dimmer/v1/device/devicergbstatus
56
+ set_brightness:
57
+ headers:
58
+ accept-language: en
59
+ accountId: sample_id
60
+ appVersion: 2.8.6
61
+ content-type: application/json
62
+ tk: sample_tk
63
+ tz: America/New_York
64
+ json_object:
65
+ acceptLanguage: en
66
+ accountID: sample_id
67
+ brightness: 100
68
+ timeZone: America/New_York
69
+ token: sample_tk
70
+ uuid: ESWD16-UUID
71
+ method: put
72
+ url: /dimmer/v1/device/updatebrightness
73
+ turn_off:
74
+ headers:
75
+ accept-language: en
76
+ accountId: sample_id
77
+ appVersion: 2.8.6
78
+ content-type: application/json
79
+ tk: sample_tk
80
+ tz: America/New_York
81
+ json_object:
82
+ acceptLanguage: en
83
+ accountID: sample_id
84
+ status: 'off'
85
+ timeZone: America/New_York
86
+ token: sample_tk
87
+ uuid: ESWD16-UUID
88
+ method: put
89
+ url: /dimmer/v1/device/devicestatus
90
+ turn_on:
91
+ headers:
92
+ accept-language: en
93
+ accountId: sample_id
94
+ appVersion: 2.8.6
95
+ content-type: application/json
96
+ tk: sample_tk
97
+ tz: America/New_York
98
+ json_object:
99
+ acceptLanguage: en
100
+ accountID: sample_id
101
+ status: 'on'
102
+ timeZone: America/New_York
103
+ token: sample_tk
104
+ uuid: ESWD16-UUID
105
+ method: put
106
+ url: /dimmer/v1/device/devicestatus
107
+ update:
108
+ headers:
109
+ accept-language: en
110
+ accountId: sample_id
111
+ appVersion: 2.8.6
112
+ content-type: application/json
113
+ tk: sample_tk
114
+ tz: America/New_York
115
+ json_object:
116
+ acceptLanguage: en
117
+ accountID: sample_id
118
+ appVersion: 2.8.6
119
+ method: devicedetail
120
+ mobileId: '1234567890123456'
121
+ phoneBrand: SM N9005
122
+ phoneOS: Android
123
+ timeZone: America/New_York
124
+ token: sample_tk
125
+ traceId: TRACE_ID
126
+ uuid: ESWD16-UUID
127
+ method: post
128
+ url: /dimmer/v1/device/devicedetail
@@ -0,0 +1,56 @@
1
+ turn_off:
2
+ headers:
3
+ accept-language: en
4
+ accountId: sample_id
5
+ appVersion: 2.8.6
6
+ content-type: application/json
7
+ tk: sample_tk
8
+ tz: America/New_York
9
+ json_object:
10
+ acceptLanguage: en
11
+ accountID: sample_id
12
+ status: 'off'
13
+ timeZone: America/New_York
14
+ token: sample_tk
15
+ uuid: ESWL01-UUID
16
+ method: put
17
+ url: /inwallswitch/v1/device/devicestatus
18
+ turn_on:
19
+ headers:
20
+ accept-language: en
21
+ accountId: sample_id
22
+ appVersion: 2.8.6
23
+ content-type: application/json
24
+ tk: sample_tk
25
+ tz: America/New_York
26
+ json_object:
27
+ acceptLanguage: en
28
+ accountID: sample_id
29
+ status: 'on'
30
+ timeZone: America/New_York
31
+ token: sample_tk
32
+ uuid: ESWL01-UUID
33
+ method: put
34
+ url: /inwallswitch/v1/device/devicestatus
35
+ update:
36
+ headers:
37
+ accept-language: en
38
+ accountId: sample_id
39
+ appVersion: 2.8.6
40
+ content-type: application/json
41
+ tk: sample_tk
42
+ tz: America/New_York
43
+ json_object:
44
+ acceptLanguage: en
45
+ accountID: sample_id
46
+ appVersion: 2.8.6
47
+ method: devicedetail
48
+ mobileId: '1234567890123456'
49
+ phoneBrand: SM N9005
50
+ phoneOS: Android
51
+ timeZone: America/New_York
52
+ token: sample_tk
53
+ traceId: TRACE_ID
54
+ uuid: ESWL01-UUID
55
+ method: post
56
+ url: /inwallswitch/v1/device/devicedetail
@@ -0,0 +1,56 @@
1
+ turn_off:
2
+ headers:
3
+ accept-language: en
4
+ accountId: sample_id
5
+ appVersion: 2.8.6
6
+ content-type: application/json
7
+ tk: sample_tk
8
+ tz: America/New_York
9
+ json_object:
10
+ acceptLanguage: en
11
+ accountID: sample_id
12
+ status: 'off'
13
+ timeZone: America/New_York
14
+ token: sample_tk
15
+ uuid: ESWL03-UUID
16
+ method: put
17
+ url: /inwallswitch/v1/device/devicestatus
18
+ turn_on:
19
+ headers:
20
+ accept-language: en
21
+ accountId: sample_id
22
+ appVersion: 2.8.6
23
+ content-type: application/json
24
+ tk: sample_tk
25
+ tz: America/New_York
26
+ json_object:
27
+ acceptLanguage: en
28
+ accountID: sample_id
29
+ status: 'on'
30
+ timeZone: America/New_York
31
+ token: sample_tk
32
+ uuid: ESWL03-UUID
33
+ method: put
34
+ url: /inwallswitch/v1/device/devicestatus
35
+ update:
36
+ headers:
37
+ accept-language: en
38
+ accountId: sample_id
39
+ appVersion: 2.8.6
40
+ content-type: application/json
41
+ tk: sample_tk
42
+ tz: America/New_York
43
+ json_object:
44
+ acceptLanguage: en
45
+ accountID: sample_id
46
+ appVersion: 2.8.6
47
+ method: devicedetail
48
+ mobileId: '1234567890123456'
49
+ phoneBrand: SM N9005
50
+ phoneOS: Android
51
+ timeZone: America/New_York
52
+ token: sample_tk
53
+ traceId: TRACE_ID
54
+ uuid: ESWL03-UUID
55
+ method: post
56
+ url: /inwallswitch/v1/device/devicedetail
@@ -0,0 +1,87 @@
1
+ import { VeSync } from './vesync';
2
+ export declare const API_BASE_URL = "https://smartapi.vesync.com";
3
+ export declare const API_RATE_LIMIT = 30;
4
+ export declare const API_TIMEOUT = 8;
5
+ export declare const USER_AGENT = "VeSync/3.2.39 (com.etekcity.vesyncPlatform; build:5; iOS 15.5.0) Alamofire/5.2.1";
6
+ export declare const DEFAULT_TZ = "America/New_York";
7
+ export declare const DEFAULT_REGION = "US";
8
+ export declare const APP_VERSION = "2.8.6";
9
+ export declare const PHONE_BRAND = "SM N9005";
10
+ export declare const PHONE_OS = "Android";
11
+ export declare const MOBILE_ID = "1234567890123456";
12
+ export declare const USER_TYPE = "1";
13
+ export declare const BYPASS_APP_V = "VeSync 3.0.51";
14
+ export declare const BYPASS_HEADER_UA = "okhttp/3.12.1";
15
+ export type Numeric = number | string | null;
16
+ export type RequestBody = {
17
+ [key: string]: any;
18
+ };
19
+ export declare class Helpers {
20
+ private static shouldRedact;
21
+ /**
22
+ * Build header for legacy api GET requests
23
+ */
24
+ static reqHeaders(manager: VeSync): {
25
+ [key: string]: string;
26
+ };
27
+ /**
28
+ * Build header for api requests on 'bypass' endpoint
29
+ */
30
+ static reqHeaderBypass(): {
31
+ [key: string]: string;
32
+ };
33
+ /**
34
+ * Return universal keys for body of api requests
35
+ */
36
+ static reqBodyBase(manager: VeSync): {
37
+ [key: string]: string;
38
+ };
39
+ /**
40
+ * Keys for authenticating api requests
41
+ */
42
+ static reqBodyAuth(manager: VeSync): RequestBody;
43
+ /**
44
+ * Detail keys for api requests
45
+ */
46
+ static reqBodyDetails(): RequestBody;
47
+ /**
48
+ * Builder for body of api requests
49
+ */
50
+ static reqBody(manager: VeSync, type: string): RequestBody;
51
+ /**
52
+ * Calculate hex value
53
+ */
54
+ static calculateHex(hexString: string): number;
55
+ /**
56
+ * Hash password using MD5
57
+ */
58
+ static hashPassword(password: string): string;
59
+ /**
60
+ * Call the VeSync API
61
+ */
62
+ static callApi(api: string, method: string, jsonObject?: RequestBody, headers?: {
63
+ [key: string]: string;
64
+ }): Promise<[any, number]>;
65
+ /**
66
+ * Redact sensitive information
67
+ */
68
+ static redactor(value: string): string;
69
+ static get redact(): boolean;
70
+ static set redact(value: boolean);
71
+ }
72
+ /**
73
+ * Timer class for device scheduling
74
+ */
75
+ export declare class Timer {
76
+ status: string;
77
+ type: string;
78
+ id: string;
79
+ time: string;
80
+ action: string;
81
+ week: string;
82
+ state: string;
83
+ enabled: boolean;
84
+ private timer;
85
+ constructor(status?: string, type?: string, id?: string, time?: string, action?: string, week?: string, state?: string, enabled?: boolean);
86
+ toJson(): string;
87
+ }
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Timer = exports.Helpers = exports.BYPASS_HEADER_UA = exports.BYPASS_APP_V = exports.USER_TYPE = exports.MOBILE_ID = exports.PHONE_OS = exports.PHONE_BRAND = exports.APP_VERSION = exports.DEFAULT_REGION = exports.DEFAULT_TZ = exports.USER_AGENT = exports.API_TIMEOUT = exports.API_RATE_LIMIT = exports.API_BASE_URL = void 0;
7
+ /**
8
+ * Helper functions for VeSync API.
9
+ */
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const crypto_1 = __importDefault(require("crypto"));
12
+ exports.API_BASE_URL = 'https://smartapi.vesync.com';
13
+ exports.API_RATE_LIMIT = 30;
14
+ exports.API_TIMEOUT = 8;
15
+ exports.USER_AGENT = "VeSync/3.2.39 (com.etekcity.vesyncPlatform; build:5; iOS 15.5.0) Alamofire/5.2.1";
16
+ exports.DEFAULT_TZ = 'America/New_York';
17
+ exports.DEFAULT_REGION = 'US';
18
+ exports.APP_VERSION = '2.8.6';
19
+ exports.PHONE_BRAND = 'SM N9005';
20
+ exports.PHONE_OS = 'Android';
21
+ exports.MOBILE_ID = '1234567890123456';
22
+ exports.USER_TYPE = '1';
23
+ exports.BYPASS_APP_V = "VeSync 3.0.51";
24
+ exports.BYPASS_HEADER_UA = 'okhttp/3.12.1';
25
+ class Helpers {
26
+ /**
27
+ * Build header for legacy api GET requests
28
+ */
29
+ static reqHeaders(manager) {
30
+ return {
31
+ 'accept-language': 'en',
32
+ 'accountId': manager.accountId,
33
+ 'appVersion': exports.APP_VERSION,
34
+ 'content-type': 'application/json',
35
+ 'tk': manager.token,
36
+ 'tz': manager.timeZone,
37
+ };
38
+ }
39
+ /**
40
+ * Build header for api requests on 'bypass' endpoint
41
+ */
42
+ static reqHeaderBypass() {
43
+ return {
44
+ 'Content-Type': 'application/json; charset=UTF-8',
45
+ 'User-Agent': exports.BYPASS_HEADER_UA,
46
+ };
47
+ }
48
+ /**
49
+ * Return universal keys for body of api requests
50
+ */
51
+ static reqBodyBase(manager) {
52
+ return {
53
+ 'timeZone': manager.timeZone,
54
+ 'acceptLanguage': 'en'
55
+ };
56
+ }
57
+ /**
58
+ * Keys for authenticating api requests
59
+ */
60
+ static reqBodyAuth(manager) {
61
+ return {
62
+ 'accountID': manager.accountId,
63
+ 'token': manager.token
64
+ };
65
+ }
66
+ /**
67
+ * Detail keys for api requests
68
+ */
69
+ static reqBodyDetails() {
70
+ return {
71
+ 'appVersion': exports.APP_VERSION,
72
+ 'phoneBrand': exports.PHONE_BRAND,
73
+ 'phoneOS': exports.PHONE_OS,
74
+ 'traceId': Math.floor(Date.now() / 1000).toString()
75
+ };
76
+ }
77
+ /**
78
+ * Builder for body of api requests
79
+ */
80
+ static reqBody(manager, type) {
81
+ let body = this.reqBodyBase(manager);
82
+ if (type === 'login') {
83
+ body = {
84
+ ...body,
85
+ ...this.reqBodyDetails(),
86
+ email: manager.username,
87
+ password: this.hashPassword(manager.password),
88
+ devToken: '',
89
+ userType: exports.USER_TYPE,
90
+ method: 'login'
91
+ };
92
+ return body;
93
+ }
94
+ body = { ...body, ...this.reqBodyAuth(manager) };
95
+ if (type === 'devicestatus') {
96
+ return body;
97
+ }
98
+ body = { ...body, ...this.reqBodyDetails() };
99
+ switch (type) {
100
+ case 'devicelist':
101
+ body.method = 'devices';
102
+ body.pageNo = '1';
103
+ body.pageSize = '100';
104
+ break;
105
+ case 'devicedetail':
106
+ body.method = 'devicedetail';
107
+ body.mobileId = exports.MOBILE_ID;
108
+ break;
109
+ case 'energy_week':
110
+ body.method = 'energyweek';
111
+ body.mobileId = exports.MOBILE_ID;
112
+ break;
113
+ case 'energy_month':
114
+ body.method = 'energymonth';
115
+ body.mobileId = exports.MOBILE_ID;
116
+ break;
117
+ case 'energy_year':
118
+ body.method = 'energyyear';
119
+ body.mobileId = exports.MOBILE_ID;
120
+ break;
121
+ case 'bypass':
122
+ body.method = 'bypass';
123
+ break;
124
+ case 'bypassV2':
125
+ body.deviceRegion = exports.DEFAULT_REGION;
126
+ body.method = 'bypassV2';
127
+ break;
128
+ case 'bypass_config':
129
+ body.method = 'firmwareUpdateInfo';
130
+ break;
131
+ }
132
+ return body;
133
+ }
134
+ /**
135
+ * Calculate hex value
136
+ */
137
+ static calculateHex(hexString) {
138
+ const hexConv = hexString.split(':');
139
+ return (parseInt(hexConv[0], 16) + parseInt(hexConv[1], 16)) / 8192;
140
+ }
141
+ /**
142
+ * Hash password using MD5
143
+ */
144
+ static hashPassword(password) {
145
+ return crypto_1.default.createHash('md5').update(password).digest('hex');
146
+ }
147
+ /**
148
+ * Call the VeSync API
149
+ */
150
+ static async callApi(api, method, jsonObject, headers) {
151
+ try {
152
+ const response = await (0, axios_1.default)({
153
+ method: method,
154
+ url: `${exports.API_BASE_URL}${api}`,
155
+ headers: headers,
156
+ data: jsonObject,
157
+ timeout: exports.API_TIMEOUT * 1000
158
+ });
159
+ return [response.data, response.status];
160
+ }
161
+ catch (error) {
162
+ if (error.response) {
163
+ return [error.response.data, error.response.status];
164
+ }
165
+ throw error;
166
+ }
167
+ }
168
+ /**
169
+ * Redact sensitive information
170
+ */
171
+ static redactor(value) {
172
+ if (!this.shouldRedact) {
173
+ return value;
174
+ }
175
+ if (value.includes('@')) {
176
+ const parts = value.split('@');
177
+ return `${parts[0].charAt(0)}...@${parts[1]}`;
178
+ }
179
+ if (value.length > 3) {
180
+ return `${value.charAt(0)}...${value.charAt(value.length - 1)}`;
181
+ }
182
+ return value;
183
+ }
184
+ static get redact() {
185
+ return this.shouldRedact;
186
+ }
187
+ static set redact(value) {
188
+ this.shouldRedact = value;
189
+ }
190
+ }
191
+ exports.Helpers = Helpers;
192
+ Helpers.shouldRedact = true;
193
+ /**
194
+ * Timer class for device scheduling
195
+ */
196
+ class Timer {
197
+ constructor(status = '', type = '', id = '', time = '', action = '', week = '', state = '', enabled = false) {
198
+ this.status = status;
199
+ this.type = type;
200
+ this.id = id;
201
+ this.time = time;
202
+ this.action = action;
203
+ this.week = week;
204
+ this.state = state;
205
+ this.enabled = enabled;
206
+ this.timer = null;
207
+ }
208
+ toJson() {
209
+ return JSON.stringify({
210
+ status: this.status,
211
+ type: this.type,
212
+ id: this.id,
213
+ time: this.time,
214
+ action: this.action,
215
+ week: this.week,
216
+ state: this.state,
217
+ enabled: this.enabled
218
+ });
219
+ }
220
+ }
221
+ exports.Timer = Timer;
222
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":";;;;;;AAAA;;GAEG;AACH,kDAA6C;AAC7C,oDAA4B;AAGf,QAAA,YAAY,GAAG,6BAA6B,CAAC;AAC7C,QAAA,cAAc,GAAG,EAAE,CAAC;AACpB,QAAA,WAAW,GAAG,CAAC,CAAC;AAChB,QAAA,UAAU,GAAG,kFAAkF,CAAC;AAEhG,QAAA,UAAU,GAAG,kBAAkB,CAAC;AAChC,QAAA,cAAc,GAAG,IAAI,CAAC;AAEtB,QAAA,WAAW,GAAG,OAAO,CAAC;AACtB,QAAA,WAAW,GAAG,UAAU,CAAC;AACzB,QAAA,QAAQ,GAAG,SAAS,CAAC;AACrB,QAAA,SAAS,GAAG,kBAAkB,CAAC;AAC/B,QAAA,SAAS,GAAG,GAAG,CAAC;AAChB,QAAA,YAAY,GAAG,eAAe,CAAC;AAE/B,QAAA,gBAAgB,GAAG,eAAe,CAAC;AAQhD,MAAa,OAAO;IAGhB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAe;QAC7B,OAAO;YACH,iBAAiB,EAAE,IAAI;YACvB,WAAW,EAAE,OAAO,CAAC,SAAS;YAC9B,YAAY,EAAE,mBAAW;YACzB,cAAc,EAAE,kBAAkB;YAClC,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,IAAI,EAAE,OAAO,CAAC,QAAQ;SACzB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe;QAClB,OAAO;YACH,cAAc,EAAE,iCAAiC;YACjD,YAAY,EAAE,wBAAgB;SACjC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO;YACH,UAAU,EAAE,OAAO,CAAC,QAAQ;YAC5B,gBAAgB,EAAE,IAAI;SACzB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe;QAC9B,OAAO;YACH,WAAW,EAAE,OAAO,CAAC,SAAS;YAC9B,OAAO,EAAE,OAAO,CAAC,KAAK;SACzB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc;QACjB,OAAO;YACH,YAAY,EAAE,mBAAW;YACzB,YAAY,EAAE,mBAAW;YACzB,SAAS,EAAE,gBAAQ;YACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;SACtD,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAe,EAAE,IAAY;QACxC,IAAI,IAAI,GAAgB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACnB,IAAI,GAAG;gBACH,GAAG,IAAI;gBACP,GAAG,IAAI,CAAC,cAAc,EAAE;gBACxB,KAAK,EAAE,OAAO,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC7C,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,iBAAS;gBACnB,MAAM,EAAE,OAAO;aAClB,CAAC;YACF,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAEjD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAE7C,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,YAAY;gBACb,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;gBAClB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,MAAM;YACV,KAAK,cAAc;gBACf,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;gBAC7B,IAAI,CAAC,QAAQ,GAAG,iBAAS,CAAC;gBAC1B,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;gBAC3B,IAAI,CAAC,QAAQ,GAAG,iBAAS,CAAC;gBAC1B,MAAM;YACV,KAAK,cAAc;gBACf,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;gBAC5B,IAAI,CAAC,QAAQ,GAAG,iBAAS,CAAC;gBAC1B,MAAM;YACV,KAAK,aAAa;gBACd,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;gBAC3B,IAAI,CAAC,QAAQ,GAAG,iBAAS,CAAC;gBAC1B,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;gBACvB,MAAM;YACV,KAAK,UAAU;gBACX,IAAI,CAAC,YAAY,GAAG,sBAAc,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;gBACzB,MAAM;YACV,KAAK,eAAe;gBAChB,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC;gBACnC,MAAM;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAgB;QAChC,OAAO,gBAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAChB,GAAW,EACX,MAAc,EACd,UAAwB,EACxB,OAAmC;QAEnC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAkB,MAAM,IAAA,eAAK,EAAC;gBACxC,MAAM,EAAE,MAAM;gBACd,GAAG,EAAE,GAAG,oBAAY,GAAG,GAAG,EAAE;gBAC5B,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,mBAAW,GAAG,IAAI;aAC9B,CAAC,CAAC;YAEH,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAa;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,MAAM,KAAK,MAAM,CAAC,KAAc;QAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;;AA5LL,0BA6LC;AA5LkB,oBAAY,GAAG,IAAI,CAAC;AA8LvC;;GAEG;AACH,MAAa,KAAK;IAGd,YACW,SAAiB,EAAE,EACnB,OAAe,EAAE,EACjB,KAAa,EAAE,EACf,OAAe,EAAE,EACjB,SAAiB,EAAE,EACnB,OAAe,EAAE,EACjB,QAAgB,EAAE,EAClB,UAAmB,KAAK;QAPxB,WAAM,GAAN,MAAM,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAa;QACjB,OAAE,GAAF,EAAE,CAAa;QACf,SAAI,GAAJ,IAAI,CAAa;QACjB,WAAM,GAAN,MAAM,CAAa;QACnB,SAAI,GAAJ,IAAI,CAAa;QACjB,UAAK,GAAL,KAAK,CAAa;QAClB,YAAO,GAAP,OAAO,CAAiB;QAV3B,UAAK,GAAQ,IAAI,CAAC;IAWvB,CAAC;IAEJ,MAAM;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC,CAAC;IACP,CAAC;CACJ;AA1BD,sBA0BC"}
@@ -0,0 +1,47 @@
1
+ import { VeSyncBaseDevice, DeviceDetails } from './vesyncBaseDevice';
2
+ export declare class VeSync {
3
+ [x: number]: [any, number];
4
+ private _debug;
5
+ private _redact;
6
+ private _energyUpdateInterval;
7
+ private _energyCheck;
8
+ private _devList;
9
+ username: string;
10
+ password: string;
11
+ token: string | null;
12
+ accountId: string | null;
13
+ countryCode: string | null;
14
+ devices: any | null;
15
+ enabled: boolean;
16
+ updateInterval: number;
17
+ lastUpdateTs: number | null;
18
+ inProcess: boolean;
19
+ timeZone: string;
20
+ fans: VeSyncBaseDevice[];
21
+ outlets: VeSyncBaseDevice[];
22
+ switches: VeSyncBaseDevice[];
23
+ bulbs: VeSyncBaseDevice[];
24
+ scales: VeSyncBaseDevice[];
25
+ kitchen: VeSyncBaseDevice[];
26
+ constructor(username: string, password: string, timeZone?: string, debug?: boolean, redact?: boolean);
27
+ get debug(): boolean;
28
+ set debug(newFlag: boolean);
29
+ get redact(): boolean;
30
+ set redact(newFlag: boolean);
31
+ get energyUpdateInterval(): number;
32
+ set energyUpdateInterval(newEnergyUpdate: number);
33
+ /**
34
+ * Test if device should be removed - false = Remove
35
+ */
36
+ static removeDevTest(device: VeSyncBaseDevice, newList: DeviceDetails[]): boolean;
37
+ /**
38
+ * Login to VeSync server
39
+ */
40
+ login(): Promise<boolean>;
41
+ /**
42
+ * Get list of VeSync devices
43
+ */
44
+ getDevices(): Promise<boolean>;
45
+ const body: import("./helpers").RequestBody;
46
+ if(: any, response: any): any;
47
+ }