eufy-security-client 2.4.2 → 2.4.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/README.md +12 -0
- package/build/error.d.ts +57 -57
- package/build/error.js +155 -155
- package/build/eufysecurity.d.ts +162 -161
- package/build/eufysecurity.js +2104 -2091
- package/build/eufysecurity.js.map +1 -1
- package/build/http/api.d.ts +90 -90
- package/build/http/api.js +1407 -1407
- package/build/http/api.js.map +1 -1
- package/build/http/cache.d.ts +8 -8
- package/build/http/cache.js +33 -33
- package/build/http/const.d.ts +3 -3
- package/build/http/const.js +8545 -8545
- package/build/http/device.d.ts +360 -360
- package/build/http/device.js +2793 -2793
- package/build/http/device.js.map +1 -1
- package/build/http/error.d.ts +28 -28
- package/build/http/error.js +76 -76
- package/build/http/index.d.ts +10 -10
- package/build/http/index.js +29 -29
- package/build/http/interfaces.d.ts +202 -202
- package/build/http/interfaces.js +2 -2
- package/build/http/models.d.ts +561 -561
- package/build/http/models.js +2 -2
- package/build/http/parameter.d.ts +5 -5
- package/build/http/parameter.js +75 -75
- package/build/http/station.d.ts +292 -292
- package/build/http/station.js +6780 -6780
- package/build/http/station.js.map +1 -1
- package/build/http/types.d.ts +945 -945
- package/build/http/types.js +6070 -6070
- package/build/http/utils.d.ts +37 -37
- package/build/http/utils.js +370 -370
- package/build/index.d.ts +7 -7
- package/build/index.js +25 -25
- package/build/interfaces.d.ts +113 -113
- package/build/interfaces.js +2 -2
- package/build/mqtt/interface.d.ts +6 -6
- package/build/mqtt/interface.js +2 -2
- package/build/mqtt/model.d.ts +24 -24
- package/build/mqtt/model.js +2 -2
- package/build/mqtt/service.d.ts +30 -30
- package/build/mqtt/service.js +168 -168
- package/build/mqtt/service.js.map +1 -1
- package/build/p2p/ble.d.ts +47 -47
- package/build/p2p/ble.js +188 -188
- package/build/p2p/ble.js.map +1 -1
- package/build/p2p/error.d.ts +24 -24
- package/build/p2p/error.js +67 -67
- package/build/p2p/index.d.ts +8 -8
- package/build/p2p/index.js +27 -27
- package/build/p2p/interfaces.d.ts +162 -162
- package/build/p2p/interfaces.js +2 -2
- package/build/p2p/models.d.ts +146 -146
- package/build/p2p/models.js +2 -2
- package/build/p2p/session.d.ts +168 -168
- package/build/p2p/session.js +2087 -2087
- package/build/p2p/session.js.map +1 -1
- package/build/p2p/talkback.d.ts +10 -10
- package/build/p2p/talkback.js +22 -22
- package/build/p2p/types.d.ts +923 -923
- package/build/p2p/types.js +957 -957
- package/build/p2p/utils.d.ts +56 -56
- package/build/p2p/utils.js +653 -653
- package/build/push/client.d.ts +51 -51
- package/build/push/client.js +311 -311
- package/build/push/client.js.map +1 -1
- package/build/push/index.d.ts +5 -5
- package/build/push/index.js +24 -24
- package/build/push/interfaces.d.ts +19 -19
- package/build/push/interfaces.js +2 -2
- package/build/push/models.d.ts +292 -292
- package/build/push/models.js +30 -30
- package/build/push/parser.d.ts +28 -28
- package/build/push/parser.js +215 -215
- package/build/push/parser.js.map +1 -1
- package/build/push/service.d.ts +45 -45
- package/build/push/service.js +643 -643
- package/build/push/service.js.map +1 -1
- package/build/push/types.d.ts +176 -176
- package/build/push/types.js +192 -192
- package/build/push/utils.d.ts +7 -7
- package/build/push/utils.js +102 -102
- package/build/utils.d.ts +16 -13
- package/build/utils.js +207 -191
- package/build/utils.js.map +1 -1
- package/package.json +10 -10
package/build/utils.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const
|
|
11
|
-
export declare const
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Logger } from "ts-log";
|
|
3
|
+
import EventEmitter from "events";
|
|
4
|
+
import { EufySecurityPersistentData } from "./interfaces";
|
|
5
|
+
import { PropertyMetadataAny } from "./http/interfaces";
|
|
6
|
+
export declare const removeLastChar: (text: string, char: string) => string;
|
|
7
|
+
export declare const generateUDID: () => string;
|
|
8
|
+
export declare const generateSerialnumber: (length: number) => string;
|
|
9
|
+
export declare const md5: (contents: string) => string;
|
|
10
|
+
export declare const handleUpdate: (config: EufySecurityPersistentData, log: Logger, oldVersion: number) => EufySecurityPersistentData;
|
|
11
|
+
export declare const isEmpty: (str: string | null | undefined) => boolean;
|
|
12
|
+
export declare const parseValue: (metadata: PropertyMetadataAny, value: unknown) => unknown;
|
|
13
|
+
export declare const validValue: (metadata: PropertyMetadataAny, value: unknown) => void;
|
|
14
|
+
export declare const mergeDeep: (target: Record<string, any> | undefined, source: Record<string, any>) => Record<string, any>;
|
|
15
|
+
export declare const parseJSON: (data: string, log: Logger) => any;
|
|
16
|
+
export declare function waitForEvent<T>(emitter: EventEmitter, event: string): Promise<T>;
|
package/build/utils.js
CHANGED
|
@@ -1,192 +1,208 @@
|
|
|
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
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.parseJSON = exports.mergeDeep = exports.validValue = exports.parseValue = exports.isEmpty = exports.handleUpdate = exports.md5 = exports.generateSerialnumber = exports.generateUDID = exports.removeLastChar = void 0;
|
|
27
|
-
const crypto = __importStar(require("crypto"));
|
|
28
|
-
const error_1 = require("./error");
|
|
29
|
-
const removeLastChar = function (text, char) {
|
|
30
|
-
const strArr = [...text];
|
|
31
|
-
strArr.splice(text.lastIndexOf(char), 1);
|
|
32
|
-
return strArr.join("");
|
|
33
|
-
};
|
|
34
|
-
exports.removeLastChar = removeLastChar;
|
|
35
|
-
const generateUDID = function () {
|
|
36
|
-
return crypto.randomBytes(8).readBigUInt64BE().toString(16);
|
|
37
|
-
};
|
|
38
|
-
exports.generateUDID = generateUDID;
|
|
39
|
-
const generateSerialnumber = function (length) {
|
|
40
|
-
return crypto.randomBytes(length / 2).toString("hex");
|
|
41
|
-
};
|
|
42
|
-
exports.generateSerialnumber = generateSerialnumber;
|
|
43
|
-
const md5 = (contents) => crypto.createHash("md5").update(contents).digest("hex");
|
|
44
|
-
exports.md5 = md5;
|
|
45
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
46
|
-
const handleUpdate = function (config, log, oldVersion) {
|
|
47
|
-
if (oldVersion <= 1.24) {
|
|
48
|
-
config.cloud_token = "";
|
|
49
|
-
config.cloud_token_expiration = 0;
|
|
50
|
-
}
|
|
51
|
-
return config;
|
|
52
|
-
};
|
|
53
|
-
exports.handleUpdate = handleUpdate;
|
|
54
|
-
const isEmpty = function (str) {
|
|
55
|
-
if (str) {
|
|
56
|
-
if (str.length > 0)
|
|
57
|
-
return false;
|
|
58
|
-
return true;
|
|
59
|
-
}
|
|
60
|
-
return true;
|
|
61
|
-
};
|
|
62
|
-
exports.isEmpty = isEmpty;
|
|
63
|
-
const parseValue = function (metadata, value) {
|
|
64
|
-
if (metadata.type === "boolean") {
|
|
65
|
-
if (value !== undefined) {
|
|
66
|
-
switch (typeof value) {
|
|
67
|
-
case "boolean":
|
|
68
|
-
break;
|
|
69
|
-
case "number":
|
|
70
|
-
if (value === 0 || value === 1) {
|
|
71
|
-
value = value === 1 ? true : false;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
75
|
-
}
|
|
76
|
-
break;
|
|
77
|
-
case "string":
|
|
78
|
-
if (value.toLowerCase() === "true" || value.toLowerCase() === "false") {
|
|
79
|
-
value = value.toLowerCase() === "true" ? true : false;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
83
|
-
}
|
|
84
|
-
break;
|
|
85
|
-
default:
|
|
86
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
else if (metadata.type === "number") {
|
|
94
|
-
if (value !== undefined) {
|
|
95
|
-
switch (typeof value) {
|
|
96
|
-
case "number":
|
|
97
|
-
break;
|
|
98
|
-
case "string":
|
|
99
|
-
try {
|
|
100
|
-
value = Number.parseInt(value);
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
default:
|
|
107
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
else if (metadata.type === "string") {
|
|
115
|
-
if (value !== undefined) {
|
|
116
|
-
switch (typeof value) {
|
|
117
|
-
case "number":
|
|
118
|
-
value = value.toString();
|
|
119
|
-
break;
|
|
120
|
-
case "string":
|
|
121
|
-
break;
|
|
122
|
-
case "boolean":
|
|
123
|
-
value = value === true ? "true" : "false";
|
|
124
|
-
break;
|
|
125
|
-
default:
|
|
126
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a ${metadata.type} value`);
|
|
135
|
-
}
|
|
136
|
-
return value;
|
|
137
|
-
};
|
|
138
|
-
exports.parseValue = parseValue;
|
|
139
|
-
const validValue = function (metadata, value) {
|
|
140
|
-
if (metadata.type === "number") {
|
|
141
|
-
const numberMetadata = metadata;
|
|
142
|
-
const numericValue = Number(value);
|
|
143
|
-
if ((numberMetadata.min !== undefined && numberMetadata.min > numericValue) || (numberMetadata.max !== undefined && numberMetadata.max < numericValue) || (numberMetadata.states !== undefined && numberMetadata.states[numericValue] === undefined) || Number.isNaN(numericValue)) {
|
|
144
|
-
throw new error_1.InvalidPropertyValueError(`Value "${numericValue}" isn't a valid value for property "${numberMetadata.name}"`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
else if (metadata.type === "string") {
|
|
148
|
-
const stringMetadata = metadata;
|
|
149
|
-
const stringValue = String(value);
|
|
150
|
-
if ((stringMetadata.format !== undefined && stringValue.match(stringMetadata.format) === null) || (stringMetadata.minLength !== undefined && stringMetadata.minLength > stringValue.length) || (stringMetadata.maxLength !== undefined && stringMetadata.maxLength < stringValue.length)) {
|
|
151
|
-
throw new error_1.InvalidPropertyValueError(`Value "${stringValue}" isn't a valid value for property "${stringMetadata.name}"`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
else if (metadata.type === "boolean") {
|
|
155
|
-
const str = String(value).toLowerCase().trim();
|
|
156
|
-
if (str !== "true" && str !== "false") {
|
|
157
|
-
throw new error_1.InvalidPropertyValueError(`Value "${value}" isn't a valid value for property "${metadata.name}"`);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
exports.validValue = validValue;
|
|
162
|
-
const mergeDeep = function (target, source) {
|
|
163
|
-
target = target || {};
|
|
164
|
-
for (const [key, value] of Object.entries(source)) {
|
|
165
|
-
if (!(key in target)) {
|
|
166
|
-
target[key] = value;
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
if (typeof value === "object") {
|
|
170
|
-
// merge objects
|
|
171
|
-
target[key] = (0, exports.mergeDeep)(target[key], value);
|
|
172
|
-
}
|
|
173
|
-
else if (typeof target[key] === "undefined") {
|
|
174
|
-
// don't override single keys
|
|
175
|
-
target[key] = value;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return target;
|
|
180
|
-
};
|
|
181
|
-
exports.mergeDeep = mergeDeep;
|
|
182
|
-
const parseJSON = function (data, log) {
|
|
183
|
-
try {
|
|
184
|
-
return JSON.parse(data.replace(/[\0]+$/g, ""));
|
|
185
|
-
}
|
|
186
|
-
catch (error) {
|
|
187
|
-
log.error("JSON parse error", data, error);
|
|
188
|
-
}
|
|
189
|
-
return undefined;
|
|
190
|
-
};
|
|
191
|
-
exports.parseJSON = parseJSON;
|
|
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
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.waitForEvent = exports.parseJSON = exports.mergeDeep = exports.validValue = exports.parseValue = exports.isEmpty = exports.handleUpdate = exports.md5 = exports.generateSerialnumber = exports.generateUDID = exports.removeLastChar = void 0;
|
|
27
|
+
const crypto = __importStar(require("crypto"));
|
|
28
|
+
const error_1 = require("./error");
|
|
29
|
+
const removeLastChar = function (text, char) {
|
|
30
|
+
const strArr = [...text];
|
|
31
|
+
strArr.splice(text.lastIndexOf(char), 1);
|
|
32
|
+
return strArr.join("");
|
|
33
|
+
};
|
|
34
|
+
exports.removeLastChar = removeLastChar;
|
|
35
|
+
const generateUDID = function () {
|
|
36
|
+
return crypto.randomBytes(8).readBigUInt64BE().toString(16);
|
|
37
|
+
};
|
|
38
|
+
exports.generateUDID = generateUDID;
|
|
39
|
+
const generateSerialnumber = function (length) {
|
|
40
|
+
return crypto.randomBytes(length / 2).toString("hex");
|
|
41
|
+
};
|
|
42
|
+
exports.generateSerialnumber = generateSerialnumber;
|
|
43
|
+
const md5 = (contents) => crypto.createHash("md5").update(contents).digest("hex");
|
|
44
|
+
exports.md5 = md5;
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
46
|
+
const handleUpdate = function (config, log, oldVersion) {
|
|
47
|
+
if (oldVersion <= 1.24) {
|
|
48
|
+
config.cloud_token = "";
|
|
49
|
+
config.cloud_token_expiration = 0;
|
|
50
|
+
}
|
|
51
|
+
return config;
|
|
52
|
+
};
|
|
53
|
+
exports.handleUpdate = handleUpdate;
|
|
54
|
+
const isEmpty = function (str) {
|
|
55
|
+
if (str) {
|
|
56
|
+
if (str.length > 0)
|
|
57
|
+
return false;
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
};
|
|
62
|
+
exports.isEmpty = isEmpty;
|
|
63
|
+
const parseValue = function (metadata, value) {
|
|
64
|
+
if (metadata.type === "boolean") {
|
|
65
|
+
if (value !== undefined) {
|
|
66
|
+
switch (typeof value) {
|
|
67
|
+
case "boolean":
|
|
68
|
+
break;
|
|
69
|
+
case "number":
|
|
70
|
+
if (value === 0 || value === 1) {
|
|
71
|
+
value = value === 1 ? true : false;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
case "string":
|
|
78
|
+
if (value.toLowerCase() === "true" || value.toLowerCase() === "false") {
|
|
79
|
+
value = value.toLowerCase() === "true" ? true : false;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a boolean value`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (metadata.type === "number") {
|
|
94
|
+
if (value !== undefined) {
|
|
95
|
+
switch (typeof value) {
|
|
96
|
+
case "number":
|
|
97
|
+
break;
|
|
98
|
+
case "string":
|
|
99
|
+
try {
|
|
100
|
+
value = Number.parseInt(value);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
default:
|
|
107
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (metadata.type === "string") {
|
|
115
|
+
if (value !== undefined) {
|
|
116
|
+
switch (typeof value) {
|
|
117
|
+
case "number":
|
|
118
|
+
value = value.toString();
|
|
119
|
+
break;
|
|
120
|
+
case "string":
|
|
121
|
+
break;
|
|
122
|
+
case "boolean":
|
|
123
|
+
value = value === true ? "true" : "false";
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a number value`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
throw new error_1.InvalidPropertyValueError(`Property ${metadata.name} expects a ${metadata.type} value`);
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
137
|
+
};
|
|
138
|
+
exports.parseValue = parseValue;
|
|
139
|
+
const validValue = function (metadata, value) {
|
|
140
|
+
if (metadata.type === "number") {
|
|
141
|
+
const numberMetadata = metadata;
|
|
142
|
+
const numericValue = Number(value);
|
|
143
|
+
if ((numberMetadata.min !== undefined && numberMetadata.min > numericValue) || (numberMetadata.max !== undefined && numberMetadata.max < numericValue) || (numberMetadata.states !== undefined && numberMetadata.states[numericValue] === undefined) || Number.isNaN(numericValue)) {
|
|
144
|
+
throw new error_1.InvalidPropertyValueError(`Value "${numericValue}" isn't a valid value for property "${numberMetadata.name}"`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (metadata.type === "string") {
|
|
148
|
+
const stringMetadata = metadata;
|
|
149
|
+
const stringValue = String(value);
|
|
150
|
+
if ((stringMetadata.format !== undefined && stringValue.match(stringMetadata.format) === null) || (stringMetadata.minLength !== undefined && stringMetadata.minLength > stringValue.length) || (stringMetadata.maxLength !== undefined && stringMetadata.maxLength < stringValue.length)) {
|
|
151
|
+
throw new error_1.InvalidPropertyValueError(`Value "${stringValue}" isn't a valid value for property "${stringMetadata.name}"`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else if (metadata.type === "boolean") {
|
|
155
|
+
const str = String(value).toLowerCase().trim();
|
|
156
|
+
if (str !== "true" && str !== "false") {
|
|
157
|
+
throw new error_1.InvalidPropertyValueError(`Value "${value}" isn't a valid value for property "${metadata.name}"`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
exports.validValue = validValue;
|
|
162
|
+
const mergeDeep = function (target, source) {
|
|
163
|
+
target = target || {};
|
|
164
|
+
for (const [key, value] of Object.entries(source)) {
|
|
165
|
+
if (!(key in target)) {
|
|
166
|
+
target[key] = value;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
if (typeof value === "object") {
|
|
170
|
+
// merge objects
|
|
171
|
+
target[key] = (0, exports.mergeDeep)(target[key], value);
|
|
172
|
+
}
|
|
173
|
+
else if (typeof target[key] === "undefined") {
|
|
174
|
+
// don't override single keys
|
|
175
|
+
target[key] = value;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return target;
|
|
180
|
+
};
|
|
181
|
+
exports.mergeDeep = mergeDeep;
|
|
182
|
+
const parseJSON = function (data, log) {
|
|
183
|
+
try {
|
|
184
|
+
return JSON.parse(data.replace(/[\0]+$/g, ""));
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
log.error("JSON parse error", data, error);
|
|
188
|
+
}
|
|
189
|
+
return undefined;
|
|
190
|
+
};
|
|
191
|
+
exports.parseJSON = parseJSON;
|
|
192
|
+
function waitForEvent(emitter, event) {
|
|
193
|
+
return new Promise((resolve, reject) => {
|
|
194
|
+
const success = (val) => {
|
|
195
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
196
|
+
emitter.off("error", fail);
|
|
197
|
+
resolve(val);
|
|
198
|
+
};
|
|
199
|
+
const fail = (err) => {
|
|
200
|
+
emitter.off(event, success);
|
|
201
|
+
reject(err);
|
|
202
|
+
};
|
|
203
|
+
emitter.once(event, success);
|
|
204
|
+
emitter.once("error", fail);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
exports.waitForEvent = waitForEvent;
|
|
192
208
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAKjC,mCAAoD;AAG7C,MAAM,cAAc,GAAG,UAAS,IAAY,EAAE,IAAY;IAC7D,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC,CAAA;AAJY,QAAA,cAAc,kBAI1B;AAEM,MAAM,YAAY,GAAG;IACxB,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAEK,MAAM,oBAAoB,GAAG,UAAS,MAAc;IACvD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEK,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAA5F,QAAA,GAAG,OAAyF;AAEzG,6DAA6D;AACtD,MAAM,YAAY,GAAG,UAAS,MAAkC,EAAE,GAAW,EAAE,UAAkB;IACpG,IAAI,UAAU,IAAI,IAAI,EAAE;QACpB,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAC;KACrC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AANW,QAAA,YAAY,gBAMvB;AAEK,MAAM,OAAO,GAAG,UAAS,GAA8B;IAC1D,IAAI,GAAG,EAAE;QACL,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YACd,OAAO,KAAK,CAAC;QACjB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB;AAEK,MAAM,UAAU,GAAG,UAAS,QAA6B,EAAE,KAAc;IAC5E,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,QAAQ,OAAO,KAAK,EAAE;gBAClB,KAAK,SAAS;oBACV,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;wBAC5B,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;qBACtC;yBAAM;wBACH,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC;qBAC5F;oBACD,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;wBACnE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;qBACzD;yBAAM;wBACH,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC;qBAC5F;oBACD,MAAM;gBACV;oBACI,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC;aAChG;SACJ;aAAM;YACH,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,0BAA0B,CAAC,CAAC;SAC5F;KACJ;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;QACnC,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,QAAQ,OAAO,KAAK,EAAE;gBAClB,KAAK,QAAQ;oBACT,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI;wBACA,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBAClC;oBAAC,OAAO,KAAK,EAAE;wBACZ,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;qBAC3F;oBACD,MAAM;gBACV;oBACI,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;aAC/F;SACJ;aAAM;YACH,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;SAC3F;KACJ;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;QACnC,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,QAAQ,OAAO,KAAK,EAAE;gBAClB,KAAK,QAAQ;oBACT,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACzB,MAAM;gBACV,KAAK,QAAQ;oBACT,MAAM;gBACV,KAAK,SAAS;oBACV,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC1C,MAAM;gBACV;oBACI,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;aAC/F;SACJ;aAAM;YACH,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,yBAAyB,CAAC,CAAC;SAC3F;KACJ;SAAM;QACH,MAAM,IAAI,iCAAyB,CAAC,YAAY,QAAQ,CAAC,IAAI,cAAc,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC;KACrG;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAjEW,QAAA,UAAU,cAiErB;AAEK,MAAM,UAAU,GAAG,UAAS,QAA6B,EAAE,KAAc;IAC5E,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAM,cAAc,GAAG,QAAmC,CAAC;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YAChR,MAAM,IAAI,iCAAyB,CAAC,UAAU,YAAY,uCAAuC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;SAC5H;KACJ;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;QACnC,MAAM,cAAc,GAAG,QAAkC,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE;YACtR,MAAM,IAAI,iCAAyB,CAAC,UAAU,WAAW,uCAAuC,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC;SAC3H;KACJ;SAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YACnC,MAAM,IAAI,iCAAyB,CAAC,UAAU,KAAK,uCAAuC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;SAC/G;KACJ;AACL,CAAC,CAAA;AAnBY,QAAA,UAAU,cAmBtB;AAEM,MAAM,SAAS,GAAG,UAAU,MAAuC,EAAE,MAA2B;IACnG,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAC/C,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACvB;aAAM;YACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,gBAAgB;gBAChB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,iBAAS,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;aAC/C;iBAAM,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;gBAC3C,6BAA6B;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACvB;SACJ;KACJ;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAA;AAhBY,QAAA,SAAS,aAgBrB;AAEM,MAAM,SAAS,GAAG,UAAS,IAAY,EAAE,GAAW;IACvD,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;KAClD;IAAC,OAAM,KAAK,EAAE;QACX,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KAC9C;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAA;AAPY,QAAA,SAAS,aAOrB;AAED,SAAgB,YAAY,CAAI,OAAqB,EAAE,KAAa;IAChE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,CAAC,GAAM,EAAQ,EAAE;YAC7B,mEAAmE;YACnE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,GAAU,EAAQ,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC;AAdD,oCAcC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eufy-security-client",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.4",
|
|
4
4
|
"description": "Client to comunicate with Eufy-Security devices",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "bropat",
|
|
@@ -42,30 +42,30 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"got": "^11.8.6",
|
|
44
44
|
"protobuf-typescript": "^6.8.8",
|
|
45
|
-
"qs": "^6.11.
|
|
45
|
+
"qs": "^6.11.1",
|
|
46
46
|
"node-rsa": "^1.1.1",
|
|
47
47
|
"crypto-js": "^4.1.1",
|
|
48
48
|
"ts-log": "^2.2.5",
|
|
49
49
|
"tiny-typed-emitter": "^2.1.0",
|
|
50
|
-
"i18n-iso-countries": "^7.
|
|
51
|
-
"@cospired/i18n-iso-languages": "^4.0
|
|
52
|
-
"fs-extra": "^11.1.
|
|
50
|
+
"i18n-iso-countries": "^7.6.0",
|
|
51
|
+
"@cospired/i18n-iso-languages": "^4.1.0",
|
|
52
|
+
"fs-extra": "^11.1.1",
|
|
53
53
|
"sweet-collections": "^1.1.0",
|
|
54
54
|
"mqtt": "^4.3.7",
|
|
55
55
|
"node-schedule": "^2.1.1",
|
|
56
56
|
"p-throttle": "^4.1.1"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@types/node": "^16.18.
|
|
59
|
+
"@types/node": "^16.18.24",
|
|
60
60
|
"@types/qs": "^6.9.7",
|
|
61
61
|
"@types/node-rsa": "^1.1.1",
|
|
62
62
|
"@types/crypto-js": "^4.1.1",
|
|
63
63
|
"@types/fs-extra": "^11.0.1",
|
|
64
64
|
"@types/node-schedule": "^2.1.0",
|
|
65
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
66
|
-
"@typescript-eslint/parser": "^5.
|
|
67
|
-
"eslint": "^8.
|
|
68
|
-
"typescript": "^
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "^5.59.0",
|
|
66
|
+
"@typescript-eslint/parser": "^5.59.0",
|
|
67
|
+
"eslint": "^8.38.0",
|
|
68
|
+
"typescript": "^5.0.4"
|
|
69
69
|
},
|
|
70
70
|
"bugs": {
|
|
71
71
|
"url": "https://github.com/bropat/eufy-security-client/issues"
|