@homebridge-eufy-security/eufy-security-client 3.7.2-dev.0

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 (129) hide show
  1. package/.prettierignore/342/200/216 +8 -0
  2. package/.prettierrc +11 -0
  3. package/LICENSE +21 -0
  4. package/README.md +970 -0
  5. package/build/error.d.ts +138 -0
  6. package/build/error.js +190 -0
  7. package/build/error.js.map +1 -0
  8. package/build/eufysecurity.d.ts +180 -0
  9. package/build/eufysecurity.js +3148 -0
  10. package/build/eufysecurity.js.map +1 -0
  11. package/build/http/api.d.ts +119 -0
  12. package/build/http/api.js +1877 -0
  13. package/build/http/api.js.map +1 -0
  14. package/build/http/cache.d.ts +8 -0
  15. package/build/http/cache.js +34 -0
  16. package/build/http/cache.js.map +1 -0
  17. package/build/http/const.d.ts +8 -0
  18. package/build/http/const.js +3054 -0
  19. package/build/http/const.js.map +1 -0
  20. package/build/http/device.d.ts +490 -0
  21. package/build/http/device.js +5256 -0
  22. package/build/http/device.js.map +1 -0
  23. package/build/http/error.d.ts +73 -0
  24. package/build/http/error.js +101 -0
  25. package/build/http/error.js.map +1 -0
  26. package/build/http/index.d.ts +10 -0
  27. package/build/http/index.js +30 -0
  28. package/build/http/index.js.map +1 -0
  29. package/build/http/interfaces.d.ts +248 -0
  30. package/build/http/interfaces.js +3 -0
  31. package/build/http/interfaces.js.map +1 -0
  32. package/build/http/models.d.ts +608 -0
  33. package/build/http/models.js +3 -0
  34. package/build/http/models.js.map +1 -0
  35. package/build/http/parameter.d.ts +7 -0
  36. package/build/http/parameter.js +119 -0
  37. package/build/http/parameter.js.map +1 -0
  38. package/build/http/station.d.ts +382 -0
  39. package/build/http/station.js +15735 -0
  40. package/build/http/station.js.map +1 -0
  41. package/build/http/types.d.ts +1358 -0
  42. package/build/http/types.js +10333 -0
  43. package/build/http/types.js.map +1 -0
  44. package/build/http/utils.d.ts +89 -0
  45. package/build/http/utils.js +916 -0
  46. package/build/http/utils.js.map +1 -0
  47. package/build/index.d.ts +8 -0
  48. package/build/index.js +29 -0
  49. package/build/index.js.map +1 -0
  50. package/build/interfaces.d.ts +147 -0
  51. package/build/interfaces.js +7 -0
  52. package/build/interfaces.js.map +1 -0
  53. package/build/logging.d.ts +36 -0
  54. package/build/logging.js +119 -0
  55. package/build/logging.js.map +1 -0
  56. package/build/mqtt/interface.d.ts +6 -0
  57. package/build/mqtt/interface.js +3 -0
  58. package/build/mqtt/interface.js.map +1 -0
  59. package/build/mqtt/model.d.ts +24 -0
  60. package/build/mqtt/model.js +3 -0
  61. package/build/mqtt/model.js.map +1 -0
  62. package/build/mqtt/mqtt-eufy.crt +79 -0
  63. package/build/mqtt/proto/lock.proto +33 -0
  64. package/build/mqtt/service.d.ts +28 -0
  65. package/build/mqtt/service.js +196 -0
  66. package/build/mqtt/service.js.map +1 -0
  67. package/build/p2p/ble.d.ts +59 -0
  68. package/build/p2p/ble.js +281 -0
  69. package/build/p2p/ble.js.map +1 -0
  70. package/build/p2p/error.d.ts +49 -0
  71. package/build/p2p/error.js +69 -0
  72. package/build/p2p/error.js.map +1 -0
  73. package/build/p2p/index.d.ts +8 -0
  74. package/build/p2p/index.js +28 -0
  75. package/build/p2p/index.js.map +1 -0
  76. package/build/p2p/interfaces.d.ts +423 -0
  77. package/build/p2p/interfaces.js +3 -0
  78. package/build/p2p/interfaces.js.map +1 -0
  79. package/build/p2p/models.d.ts +295 -0
  80. package/build/p2p/models.js +3 -0
  81. package/build/p2p/models.js.map +1 -0
  82. package/build/p2p/session.d.ts +186 -0
  83. package/build/p2p/session.js +3737 -0
  84. package/build/p2p/session.js.map +1 -0
  85. package/build/p2p/talkback.d.ts +8 -0
  86. package/build/p2p/talkback.js +23 -0
  87. package/build/p2p/talkback.js.map +1 -0
  88. package/build/p2p/types.d.ts +1164 -0
  89. package/build/p2p/types.js +1219 -0
  90. package/build/p2p/types.js.map +1 -0
  91. package/build/p2p/utils.d.ts +72 -0
  92. package/build/p2p/utils.js +865 -0
  93. package/build/p2p/utils.js.map +1 -0
  94. package/build/push/client.d.ts +49 -0
  95. package/build/push/client.js +344 -0
  96. package/build/push/client.js.map +1 -0
  97. package/build/push/error.d.ts +73 -0
  98. package/build/push/error.js +101 -0
  99. package/build/push/error.js.map +1 -0
  100. package/build/push/index.d.ts +6 -0
  101. package/build/push/index.js +26 -0
  102. package/build/push/index.js.map +1 -0
  103. package/build/push/interfaces.d.ts +19 -0
  104. package/build/push/interfaces.js +3 -0
  105. package/build/push/interfaces.js.map +1 -0
  106. package/build/push/models.d.ts +328 -0
  107. package/build/push/models.js +38 -0
  108. package/build/push/models.js.map +1 -0
  109. package/build/push/parser.d.ts +25 -0
  110. package/build/push/parser.js +231 -0
  111. package/build/push/parser.js.map +1 -0
  112. package/build/push/proto/checkin.proto +266 -0
  113. package/build/push/proto/mcs.proto +328 -0
  114. package/build/push/service.d.ts +46 -0
  115. package/build/push/service.js +965 -0
  116. package/build/push/service.js.map +1 -0
  117. package/build/push/types.d.ts +220 -0
  118. package/build/push/types.js +244 -0
  119. package/build/push/types.js.map +1 -0
  120. package/build/push/utils.d.ts +7 -0
  121. package/build/push/utils.js +116 -0
  122. package/build/push/utils.js.map +1 -0
  123. package/build/utils.d.ts +115 -0
  124. package/build/utils.js +438 -0
  125. package/build/utils.js.map +1 -0
  126. package/eslint.config.mts +68 -0
  127. package/jest.config.js +14 -0
  128. package/package.json +85 -0
  129. package/scripts/cut_release.sh +31 -0
@@ -0,0 +1,196 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.MQTTService = void 0;
37
+ const mqtt = __importStar(require("mqtt"));
38
+ const tiny_typed_emitter_1 = require("tiny-typed-emitter");
39
+ const fs_1 = require("fs");
40
+ const path = __importStar(require("path"));
41
+ const protobufjs_1 = require("protobufjs");
42
+ const utils_1 = require("../utils");
43
+ const logging_1 = require("../logging");
44
+ const error_1 = require("../error");
45
+ class MQTTService extends tiny_typed_emitter_1.TypedEmitter {
46
+ CLIENT_ID_FORMAT = "android_EufySecurity_<user_id>_<android_id>";
47
+ USERNAME_FORMAT = "eufy_<user_id>";
48
+ SUBSCRIBE_NOTICE_FORMAT = "/phone/<user_id>/notice";
49
+ SUBSCRIBE_LOCK_FORMAT = "/phone/smart_lock/<device_sn>/push_message";
50
+ SUBSCRIBE_DOORBELL_FORMAT = "/phone/doorbell/<device_sn>/push_message";
51
+ static proto = null;
52
+ connected = false;
53
+ client = null;
54
+ connecting = false;
55
+ clientID;
56
+ androidID;
57
+ apiBase;
58
+ email;
59
+ subscribeLocks = [];
60
+ deviceSmartLockMessageModel;
61
+ constructor() {
62
+ super();
63
+ this.deviceSmartLockMessageModel = MQTTService.proto.lookupType("DeviceSmartLockMessage");
64
+ }
65
+ static async init() {
66
+ try {
67
+ this.proto = await (0, protobufjs_1.load)(path.join(__dirname, "./proto/lock.proto"));
68
+ }
69
+ catch (error) {
70
+ logging_1.rootMainLogger.error("Error loading MQTT proto lock file", { error: (0, error_1.ensureError)(error) });
71
+ }
72
+ return new MQTTService();
73
+ }
74
+ parseSmartLockMessage(data) {
75
+ const message = this.deviceSmartLockMessageModel.decode(data);
76
+ const object = this.deviceSmartLockMessageModel.toObject(message, {
77
+ longs: String,
78
+ enums: String,
79
+ bytes: String,
80
+ });
81
+ return object;
82
+ }
83
+ getMQTTBrokerUrl(apiBase) {
84
+ switch (apiBase) {
85
+ case "https://security-app.eufylife.com":
86
+ return "mqtts://security-mqtt.eufylife.com";
87
+ case "https://security-app-ci.eufylife.com":
88
+ return "mqtts://security-mqtt-ci.eufylife.com";
89
+ case "https://security-app-qa.eufylife.com":
90
+ case "https://security-app-cn-qa.anker-in.com":
91
+ return "mqtts://security-mqtt-qa.eufylife.com";
92
+ case "https://security-app-eu.eufylife.com":
93
+ return "mqtts://security-mqtt-eu.eufylife.com";
94
+ case "https://security-app-short-qa.eufylife.com":
95
+ return "mqtts://security-mqtt-short-qa.eufylife.com";
96
+ default:
97
+ return "mqtts://security-mqtt.eufylife.com";
98
+ }
99
+ }
100
+ connect(clientID, androidID, apiBase, email) {
101
+ this.clientID = clientID;
102
+ this.androidID = androidID;
103
+ this.apiBase = apiBase;
104
+ this.email = email;
105
+ if (!this.connected &&
106
+ !this.connecting &&
107
+ this.clientID &&
108
+ this.androidID &&
109
+ this.apiBase &&
110
+ this.email &&
111
+ this.subscribeLocks.length > 0) {
112
+ this.connecting = true;
113
+ this.client = mqtt.connect(this.getMQTTBrokerUrl(apiBase), {
114
+ keepalive: 60,
115
+ clean: true,
116
+ reschedulePings: true,
117
+ resubscribe: true,
118
+ port: 8789,
119
+ username: this.USERNAME_FORMAT.replace("<user_id>", clientID),
120
+ password: email,
121
+ ca: (0, fs_1.readFileSync)(path.join(__dirname, "./mqtt-eufy.crt")),
122
+ clientId: this.CLIENT_ID_FORMAT.replace("<user_id>", clientID).replace("<android_id>", androidID),
123
+ rejectUnauthorized: false, // Some eufy mqtt servers have an expired certificate :(
124
+ });
125
+ this.client.on("connect", (_connack) => {
126
+ this.connected = true;
127
+ this.connecting = false;
128
+ this.emit("connect");
129
+ this.client.subscribe(this.SUBSCRIBE_NOTICE_FORMAT.replace("<user_id>", clientID), { qos: 1 });
130
+ if (this.subscribeLocks.length > 0) {
131
+ let lock;
132
+ while ((lock = this.subscribeLocks.shift()) !== undefined) {
133
+ this._subscribeLock(lock);
134
+ }
135
+ }
136
+ });
137
+ this.client.on("close", () => {
138
+ this.connected = false;
139
+ this.emit("close");
140
+ });
141
+ this.client.on("error", (error) => {
142
+ this.connecting = false;
143
+ logging_1.rootMQTTLogger.error("MQTT Error", { error: (0, utils_1.getError)(error) });
144
+ if (error.code === 1 ||
145
+ error.code === 2 ||
146
+ error.code === 4 ||
147
+ error.code === 5)
148
+ this.client?.end();
149
+ });
150
+ this.client.on("message", (topic, message, _packet) => {
151
+ if (topic.includes("smart_lock")) {
152
+ const parsedMessage = this.parseSmartLockMessage(message);
153
+ logging_1.rootMQTTLogger.debug("Received a smart lock message over MQTT", { message: parsedMessage });
154
+ this.emit("lock message", parsedMessage);
155
+ }
156
+ else {
157
+ logging_1.rootMQTTLogger.debug("MQTT message received", { topic: topic, message: message.toString("hex") });
158
+ }
159
+ });
160
+ }
161
+ }
162
+ _subscribeLock(deviceSN) {
163
+ this.client?.subscribe(this.SUBSCRIBE_LOCK_FORMAT.replace("<device_sn>", deviceSN), { qos: 1 }, (error, granted) => {
164
+ if (error) {
165
+ logging_1.rootMQTTLogger.error(`Subscribe error for lock ${deviceSN}`, { error: (0, utils_1.getError)(error), deviceSN: deviceSN });
166
+ }
167
+ if (granted) {
168
+ logging_1.rootMQTTLogger.info(`Successfully registered to MQTT notifications for lock ${deviceSN}`);
169
+ }
170
+ });
171
+ }
172
+ subscribeLock(deviceSN) {
173
+ if (this.connected) {
174
+ this._subscribeLock(deviceSN);
175
+ }
176
+ else {
177
+ if (!this.subscribeLocks.includes(deviceSN)) {
178
+ this.subscribeLocks.push(deviceSN);
179
+ }
180
+ if (this.clientID && this.androidID && this.apiBase && this.email)
181
+ this.connect(this.clientID, this.androidID, this.apiBase, this.email);
182
+ }
183
+ }
184
+ isConnected() {
185
+ return this.connected;
186
+ }
187
+ close() {
188
+ if (this.connected) {
189
+ this.client?.end(true);
190
+ this.connected = false;
191
+ this.connecting = false;
192
+ }
193
+ }
194
+ }
195
+ exports.MQTTService = MQTTService;
196
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/mqtt/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ export declare enum BleParameterIndex {
2
+ ZERO = -96,
3
+ ONE = -95,
4
+ TWO = -94,
5
+ THREE = -93,
6
+ FOUR = -92,
7
+ FIVE = -91,
8
+ SIX = -90,
9
+ SEVEN = -89,
10
+ EIGHT = -88,
11
+ NINE = -87,
12
+ TEN = -86,
13
+ ELEVEN = -85,
14
+ TWELVE = -84,
15
+ THIRTEEN = -83
16
+ }
17
+ export declare class BleCommandFactory {
18
+ private static readonly HEADER;
19
+ private data?;
20
+ private commandCode?;
21
+ private versionCode?;
22
+ private dataType?;
23
+ private packageFlag?;
24
+ private unknown?;
25
+ private additionalDataSeparatorByte?;
26
+ private additionalData?;
27
+ private responseCode?;
28
+ private encrypted?;
29
+ private partial?;
30
+ static parseLockV12(data: string | Buffer): BleCommandFactory;
31
+ static parseSmartSafe(data: string | Buffer): BleCommandFactory;
32
+ static parseSmartLock(data: string | Buffer): BleCommandFactory;
33
+ toString: () => string;
34
+ private setResponseCode;
35
+ getResponseCode(): number | undefined;
36
+ setVersionCode(version: number): BleCommandFactory;
37
+ getVersionCode(): number | undefined;
38
+ setCommandCode(command: number): BleCommandFactory;
39
+ getCommandCode(): number | undefined;
40
+ setDataType(type: number): BleCommandFactory;
41
+ getDataType(): number | undefined;
42
+ setPackageFlag(flag: number): BleCommandFactory;
43
+ getPackageFlag(): number | undefined;
44
+ setAdditionalDataSeparator(separator: number): BleCommandFactory;
45
+ getAdditionalDataSeparator(): Buffer | undefined;
46
+ setAdditionalData(data: Buffer): BleCommandFactory;
47
+ getAdditionalData(): Buffer | undefined;
48
+ setData(data: Buffer): BleCommandFactory;
49
+ getData(): Buffer | undefined;
50
+ setUnknown(data: Buffer): BleCommandFactory;
51
+ static generateHash(data: Buffer): number;
52
+ isEncrypted(): boolean | undefined;
53
+ setEncrypted(encrypted: boolean): BleCommandFactory;
54
+ isPartial(): boolean | undefined;
55
+ setPartial(partial: boolean): BleCommandFactory;
56
+ getLockV12Command(): Buffer;
57
+ getSmartSafeCommand(): Buffer;
58
+ getSmartLockCommand(): Buffer;
59
+ }
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BleCommandFactory = exports.BleParameterIndex = void 0;
4
+ const error_1 = require("./error");
5
+ var BleParameterIndex;
6
+ (function (BleParameterIndex) {
7
+ BleParameterIndex[BleParameterIndex["ZERO"] = -96] = "ZERO";
8
+ BleParameterIndex[BleParameterIndex["ONE"] = -95] = "ONE";
9
+ BleParameterIndex[BleParameterIndex["TWO"] = -94] = "TWO";
10
+ BleParameterIndex[BleParameterIndex["THREE"] = -93] = "THREE";
11
+ BleParameterIndex[BleParameterIndex["FOUR"] = -92] = "FOUR";
12
+ BleParameterIndex[BleParameterIndex["FIVE"] = -91] = "FIVE";
13
+ BleParameterIndex[BleParameterIndex["SIX"] = -90] = "SIX";
14
+ BleParameterIndex[BleParameterIndex["SEVEN"] = -89] = "SEVEN";
15
+ BleParameterIndex[BleParameterIndex["EIGHT"] = -88] = "EIGHT";
16
+ BleParameterIndex[BleParameterIndex["NINE"] = -87] = "NINE";
17
+ BleParameterIndex[BleParameterIndex["TEN"] = -86] = "TEN";
18
+ BleParameterIndex[BleParameterIndex["ELEVEN"] = -85] = "ELEVEN";
19
+ BleParameterIndex[BleParameterIndex["TWELVE"] = -84] = "TWELVE";
20
+ BleParameterIndex[BleParameterIndex["THIRTEEN"] = -83] = "THIRTEEN";
21
+ })(BleParameterIndex || (exports.BleParameterIndex = BleParameterIndex = {}));
22
+ class BleCommandFactory {
23
+ static HEADER = Buffer.from([-1, 9]);
24
+ data;
25
+ commandCode;
26
+ versionCode;
27
+ dataType;
28
+ packageFlag;
29
+ unknown;
30
+ additionalDataSeparatorByte;
31
+ additionalData;
32
+ responseCode;
33
+ encrypted;
34
+ partial;
35
+ static parseLockV12(data) {
36
+ if (typeof data === "string") {
37
+ data = Buffer.from(data, "hex");
38
+ }
39
+ if (data.readInt8(0) !== BleCommandFactory.HEADER[0] && data.readInt8(1) !== BleCommandFactory.HEADER[1]) {
40
+ throw new error_1.BleInvalidDataHeaderError("Invalid BLE data header");
41
+ }
42
+ const fac = new BleCommandFactory();
43
+ fac.setVersionCode(data.readUint8(4));
44
+ fac.setCommandCode(data.readUint8(6));
45
+ fac.setDataType(data.readUint8());
46
+ fac.setPackageFlag(data.readInt8(7));
47
+ fac.setResponseCode(fac.getPackageFlag() === -64 ? data.readUint8(8) : data.readUint8(12));
48
+ fac.setData(data.subarray(fac.getPackageFlag() === -64 ? 8 : 12, data.length - 1)); //TODO: Verify if position 8 is correct for data (i think it should be 9 or 13)...
49
+ if (BleCommandFactory.generateHash(data.subarray(0, data.length - 1)) !== data.readUint8(data.length - 1)) {
50
+ throw new error_1.BleInvalidChecksumError("Invalid BLE data, checksum mismatch");
51
+ }
52
+ return fac;
53
+ }
54
+ static parseSmartSafe(data) {
55
+ return BleCommandFactory.parseLockV12(data);
56
+ }
57
+ static parseSmartLock(data) {
58
+ if (typeof data === "string") {
59
+ data = Buffer.from(data, "hex");
60
+ }
61
+ if (data.length < 9 ||
62
+ (data.readInt8(0) !== BleCommandFactory.HEADER[0] && data.readInt8(1) !== BleCommandFactory.HEADER[1])) {
63
+ throw new error_1.BleInvalidDataHeaderError("Invalid BLE data header");
64
+ }
65
+ if (BleCommandFactory.generateHash(data.subarray(0, data.length - 1)) !== data.readUint8(data.length - 1)) {
66
+ throw new error_1.BleInvalidChecksumError("Invalid BLE data, checksum mismatch");
67
+ }
68
+ const fac = new BleCommandFactory();
69
+ const flags = data.readUint16BE(7);
70
+ fac.setVersionCode(data.readUint8(4));
71
+ fac.setDataType(data.readUint8(6));
72
+ fac.setPartial(flags >> 15 === 1);
73
+ fac.setEncrypted((flags << 1) >> 15 === 1);
74
+ fac.setCommandCode(((flags << 4) & 32767) >> 4);
75
+ fac.setData(data.subarray(9, data.length - 1));
76
+ return fac;
77
+ }
78
+ toString = () => {
79
+ return `BleCommandFactory (versionCode: ${this.versionCode} commandCode: ${this.commandCode} dataType: ${this.dataType} partial: ${this.partial} encrypted: ${this.encrypted} data: ${this.data?.toString("hex")} packageFlag: ${this.packageFlag} responseCode: ${this.responseCode})`;
80
+ };
81
+ setResponseCode(code) {
82
+ this.responseCode = code;
83
+ }
84
+ getResponseCode() {
85
+ return this.responseCode;
86
+ }
87
+ setVersionCode(version) {
88
+ this.versionCode = version;
89
+ return this;
90
+ }
91
+ getVersionCode() {
92
+ return this.versionCode;
93
+ }
94
+ setCommandCode(command) {
95
+ this.commandCode = command;
96
+ return this;
97
+ }
98
+ getCommandCode() {
99
+ return this.commandCode;
100
+ }
101
+ setDataType(type) {
102
+ this.dataType = type;
103
+ return this;
104
+ }
105
+ getDataType() {
106
+ return this.dataType;
107
+ }
108
+ setPackageFlag(flag) {
109
+ this.packageFlag = flag;
110
+ return this;
111
+ }
112
+ getPackageFlag() {
113
+ return this.packageFlag;
114
+ }
115
+ setAdditionalDataSeparator(separator) {
116
+ this.additionalDataSeparatorByte = Buffer.from([separator]);
117
+ return this;
118
+ }
119
+ getAdditionalDataSeparator() {
120
+ return this.additionalDataSeparatorByte;
121
+ }
122
+ setAdditionalData(data) {
123
+ this.additionalData = data;
124
+ return this;
125
+ }
126
+ getAdditionalData() {
127
+ return this.additionalData;
128
+ }
129
+ setData(data) {
130
+ this.data = data;
131
+ return this;
132
+ }
133
+ getData() {
134
+ return this.data;
135
+ }
136
+ setUnknown(data) {
137
+ this.unknown = data;
138
+ return this;
139
+ }
140
+ static generateHash(data) {
141
+ let result = 0;
142
+ for (const value of data) {
143
+ result = result ^ value;
144
+ }
145
+ return result;
146
+ }
147
+ isEncrypted() {
148
+ return this.encrypted;
149
+ }
150
+ setEncrypted(encrypted) {
151
+ this.encrypted = encrypted;
152
+ return this;
153
+ }
154
+ isPartial() {
155
+ return this.partial;
156
+ }
157
+ setPartial(partial) {
158
+ this.partial = partial;
159
+ return this;
160
+ }
161
+ getLockV12Command() {
162
+ if (this.versionCode === undefined)
163
+ throw new error_1.BleVersionCodeError("BleCommandFactory version code value missing");
164
+ if (this.dataType === undefined)
165
+ throw new error_1.BleDataTypeError("BleCommandFactory data type value missing");
166
+ if (this.commandCode === undefined)
167
+ throw new error_1.BleCommandCodeError("BleCommandFactory command code value missing");
168
+ if (this.data === undefined)
169
+ throw new error_1.BleDataError("BleCommandFactory data value missing");
170
+ if (this.additionalData === undefined)
171
+ throw new error_1.BleAdditionalDataError("BleCommandFactory additional data value missing");
172
+ this.setAdditionalDataSeparator(BleParameterIndex.ZERO);
173
+ const bVersionCode = Buffer.from([this.versionCode]);
174
+ const bDataType = Buffer.from([this.dataType]);
175
+ const bCommandCode = Buffer.from([this.commandCode]);
176
+ const bPackageFlag = this.packageFlag === undefined ? Buffer.from([-64]) : Buffer.from([this.packageFlag]);
177
+ const bAdditionalDataLength = Buffer.from([this.additionalData.length]);
178
+ const size = Buffer.allocUnsafe(2);
179
+ size.writeInt16LE(BleCommandFactory.HEADER.length +
180
+ size.length +
181
+ bVersionCode.length +
182
+ bDataType.length +
183
+ bCommandCode.length +
184
+ bPackageFlag.length +
185
+ this.additionalDataSeparatorByte.length +
186
+ bAdditionalDataLength.length +
187
+ this.additionalData.length +
188
+ this.data.length +
189
+ 1 // Hash
190
+ );
191
+ const data = Buffer.concat([
192
+ BleCommandFactory.HEADER,
193
+ size,
194
+ bVersionCode,
195
+ bDataType,
196
+ bCommandCode,
197
+ bPackageFlag,
198
+ this.additionalDataSeparatorByte,
199
+ bAdditionalDataLength,
200
+ this.additionalData,
201
+ this.data,
202
+ ]);
203
+ const hash = BleCommandFactory.generateHash(data);
204
+ return Buffer.concat([data, Buffer.from([hash])]);
205
+ }
206
+ getSmartSafeCommand() {
207
+ if (this.versionCode === undefined)
208
+ throw new error_1.BleVersionCodeError("BleCommandFactory version code value missing");
209
+ if (this.dataType === undefined)
210
+ throw new error_1.BleDataTypeError("BleCommandFactory data type value missing");
211
+ if (this.commandCode === undefined)
212
+ throw new error_1.BleCommandCodeError("BleCommandFactory command code value missing");
213
+ if (this.data === undefined)
214
+ throw new error_1.BleDataError("BleCommandFactory data value missing");
215
+ const bVersionCode = Buffer.from([this.versionCode]);
216
+ const bDataType = Buffer.from([this.dataType]);
217
+ const bCommandCode = Buffer.from([this.commandCode]);
218
+ const bPackageFlag = this.packageFlag === undefined ? Buffer.from([-64]) : Buffer.from([this.packageFlag]);
219
+ const size = Buffer.allocUnsafe(2);
220
+ size.writeInt16LE(BleCommandFactory.HEADER.length +
221
+ size.length +
222
+ bVersionCode.length +
223
+ bDataType.length +
224
+ bCommandCode.length +
225
+ bPackageFlag.length +
226
+ this.data.length +
227
+ 1 // Hash
228
+ );
229
+ const data = Buffer.concat([
230
+ BleCommandFactory.HEADER,
231
+ size,
232
+ bVersionCode,
233
+ bDataType,
234
+ bCommandCode,
235
+ bPackageFlag,
236
+ this.data,
237
+ ]);
238
+ const hash = BleCommandFactory.generateHash(data);
239
+ return Buffer.concat([data, Buffer.from([hash])]);
240
+ }
241
+ getSmartLockCommand() {
242
+ if (this.versionCode === undefined)
243
+ throw new error_1.BleVersionCodeError("BleCommandFactory version code value missing");
244
+ if (this.dataType === undefined)
245
+ throw new error_1.BleDataTypeError("BleCommandFactory data type value missing");
246
+ if (this.commandCode === undefined)
247
+ throw new error_1.BleCommandCodeError("BleCommandFactory command code value missing");
248
+ if (this.data === undefined)
249
+ throw new error_1.BleDataError("BleCommandFactory data value missing");
250
+ const bVersionCode = Buffer.from([this.versionCode]);
251
+ const bDataType = Buffer.from([this.dataType]);
252
+ const unknown = Buffer.alloc(1);
253
+ const partial = false;
254
+ const encrypted = true;
255
+ const commandCodeEncoded = Buffer.allocUnsafe(2);
256
+ commandCodeEncoded.writeInt16BE(((partial ? 1 : 0) << 15) + ((encrypted ? 1 : 0) << 14) + this.commandCode);
257
+ const size = Buffer.allocUnsafe(2);
258
+ size.writeInt16LE(BleCommandFactory.HEADER.length +
259
+ size.length +
260
+ bVersionCode.length +
261
+ unknown.length +
262
+ bDataType.length +
263
+ commandCodeEncoded.length +
264
+ this.data.length +
265
+ 1 // Hash
266
+ );
267
+ const data = Buffer.concat([
268
+ BleCommandFactory.HEADER,
269
+ size,
270
+ bVersionCode,
271
+ unknown,
272
+ bDataType,
273
+ commandCodeEncoded,
274
+ this.data,
275
+ ]);
276
+ const hash = BleCommandFactory.generateHash(data);
277
+ return Buffer.concat([data, Buffer.from([hash])]);
278
+ }
279
+ }
280
+ exports.BleCommandFactory = BleCommandFactory;
281
+ //# sourceMappingURL=ble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ble.js","sourceRoot":"","sources":["../../src/p2p/ble.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { BaseError, Jsonable } from "../error";
2
+ export declare class BleVersionCodeError extends BaseError {
3
+ constructor(message: string, options?: {
4
+ cause?: Error;
5
+ context?: Jsonable;
6
+ });
7
+ }
8
+ export declare class BleCommandCodeError extends BaseError {
9
+ constructor(message: string, options?: {
10
+ cause?: Error;
11
+ context?: Jsonable;
12
+ });
13
+ }
14
+ export declare class BleDataTypeError extends BaseError {
15
+ constructor(message: string, options?: {
16
+ cause?: Error;
17
+ context?: Jsonable;
18
+ });
19
+ }
20
+ export declare class BleDataError extends BaseError {
21
+ constructor(message: string, options?: {
22
+ cause?: Error;
23
+ context?: Jsonable;
24
+ });
25
+ }
26
+ export declare class BleAdditionalDataError extends BaseError {
27
+ constructor(message: string, options?: {
28
+ cause?: Error;
29
+ context?: Jsonable;
30
+ });
31
+ }
32
+ export declare class BleAdditionalDataSeparatorError extends BaseError {
33
+ constructor(message: string, options?: {
34
+ cause?: Error;
35
+ context?: Jsonable;
36
+ });
37
+ }
38
+ export declare class BleInvalidDataHeaderError extends BaseError {
39
+ constructor(message: string, options?: {
40
+ cause?: Error;
41
+ context?: Jsonable;
42
+ });
43
+ }
44
+ export declare class BleInvalidChecksumError extends BaseError {
45
+ constructor(message: string, options?: {
46
+ cause?: Error;
47
+ context?: Jsonable;
48
+ });
49
+ }