iobroker.eusec 1.1.0 → 1.1.2

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.
@@ -1,264 +1,269 @@
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;
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
24
11
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
27
19
  };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.convertCamelCaseToSnakeCase = exports.handleUpdate = exports.deleteStates = exports.changeRole = exports.removeLastChar = exports.getVideoClipLength = exports.sleep = exports.lowestUnusedNumber = exports.moveFiles = exports.removeFiles = exports.setStateAsync = exports.getDataFilePath = exports.getImageAsHTML = exports.isEmpty = exports.setStateChangedAsync = void 0;
30
- const eufy_security_client_1 = require("eufy-security-client");
31
- const path_1 = __importDefault(require("path"));
32
- const fs_extra_1 = __importDefault(require("fs-extra"));
33
- const utils = __importStar(require("@iobroker/adapter-core"));
34
- // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
35
- const setStateChangedAsync = async function (adapter, id, value) {
36
- return await adapter.setStateChangedAsync(id, value === undefined || value === null ? null : { val: value, ack: true }).catch();
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var utils_exports = {};
26
+ __export(utils_exports, {
27
+ changeRole: () => changeRole,
28
+ convertCamelCaseToSnakeCase: () => convertCamelCaseToSnakeCase,
29
+ deleteStates: () => deleteStates,
30
+ getDataFilePath: () => getDataFilePath,
31
+ getImageAsHTML: () => getImageAsHTML,
32
+ getVideoClipLength: () => getVideoClipLength,
33
+ handleUpdate: () => handleUpdate,
34
+ isEmpty: () => isEmpty,
35
+ lowestUnusedNumber: () => lowestUnusedNumber,
36
+ moveFiles: () => moveFiles,
37
+ removeFiles: () => removeFiles,
38
+ removeLastChar: () => removeLastChar,
39
+ setStateAsync: () => setStateAsync,
40
+ setStateChangedAsync: () => setStateChangedAsync,
41
+ sleep: () => sleep
42
+ });
43
+ module.exports = __toCommonJS(utils_exports);
44
+ var import_eufy_security_client = require("eufy-security-client");
45
+ var import_path = __toESM(require("path"));
46
+ var import_fs_extra = __toESM(require("fs-extra"));
47
+ var utils = __toESM(require("@iobroker/adapter-core"));
48
+ const setStateChangedAsync = async function(adapter, id, value) {
49
+ return await adapter.setStateChangedAsync(id, value === void 0 || value === null ? null : { val: value, ack: true }).catch();
37
50
  };
38
- exports.setStateChangedAsync = setStateChangedAsync;
39
- const isEmpty = function (str) {
40
- if (str) {
41
- if (str.length > 0)
42
- return false;
43
- return true;
44
- }
51
+ const isEmpty = function(str) {
52
+ if (str) {
53
+ if (str.length > 0)
54
+ return false;
45
55
  return true;
56
+ }
57
+ return true;
46
58
  };
47
- exports.isEmpty = isEmpty;
48
- const getImageAsHTML = function (data, mime = "image/jpg") {
49
- if (data && data.length > 0)
50
- return `<img src="data:${mime};base64,${data.toString("base64")}" style="width: auto ;height: 100%;" />`;
51
- return "";
59
+ const getImageAsHTML = function(data, mime = "image/jpg") {
60
+ if (data && data.length > 0)
61
+ return `<img src="data:${mime};base64,${data.toString("base64")}" style="width: auto ;height: 100%;" />`;
62
+ return "";
52
63
  };
53
- exports.getImageAsHTML = getImageAsHTML;
54
- const getDataFilePath = function (adapter, stationSerial, folderName, fileName) {
55
- const dir_path = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);
56
- if (!fs_extra_1.default.existsSync(dir_path)) {
57
- fs_extra_1.default.mkdirSync(dir_path, { mode: 0o775, recursive: true });
58
- }
59
- return path_1.default.join(dir_path, fileName);
64
+ const getDataFilePath = function(adapter, stationSerial, folderName, fileName) {
65
+ const dir_path = import_path.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);
66
+ if (!import_fs_extra.default.existsSync(dir_path)) {
67
+ import_fs_extra.default.mkdirSync(dir_path, { mode: 509, recursive: true });
68
+ }
69
+ return import_path.default.join(dir_path, fileName);
60
70
  };
61
- exports.getDataFilePath = getDataFilePath;
62
- const setStateAsync = async function (adapter, state_id, common_name, value, role = "text", type = "string") {
63
- await adapter.setObjectNotExistsAsync(state_id, {
64
- type: "state",
65
- common: {
66
- name: common_name,
67
- type: type,
68
- role: role,
69
- read: true,
70
- write: false,
71
- },
72
- native: {},
73
- });
74
- await adapter.setStateAsync(state_id, { val: value, ack: true });
71
+ const setStateAsync = async function(adapter, state_id, common_name, value, role = "text", type = "string") {
72
+ await adapter.setObjectNotExistsAsync(state_id, {
73
+ type: "state",
74
+ common: {
75
+ name: common_name,
76
+ type,
77
+ role,
78
+ read: true,
79
+ write: false
80
+ },
81
+ native: {}
82
+ });
83
+ await adapter.setStateAsync(state_id, { val: value, ack: true });
75
84
  };
76
- exports.setStateAsync = setStateAsync;
77
- const removeFiles = function (adapter, stationSerial, folderName, device_sn) {
78
- return new Promise((resolve, reject) => {
85
+ const removeFiles = function(adapter, stationSerial, folderName, device_sn) {
86
+ return new Promise((resolve, reject) => {
87
+ try {
88
+ const dir_path = import_path.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);
89
+ if (import_fs_extra.default.existsSync(dir_path)) {
90
+ const files = import_fs_extra.default.readdirSync(dir_path).filter((fn) => fn.startsWith(device_sn));
79
91
  try {
80
- const dir_path = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);
81
- if (fs_extra_1.default.existsSync(dir_path)) {
82
- const files = fs_extra_1.default.readdirSync(dir_path).filter(fn => fn.startsWith(device_sn));
83
- try {
84
- files.map(filename => fs_extra_1.default.removeSync(path_1.default.join(dir_path, filename)));
85
- }
86
- catch (error) {
87
- }
88
- }
89
- resolve();
90
- }
91
- catch (error) {
92
- reject(error);
92
+ files.map((filename) => import_fs_extra.default.removeSync(import_path.default.join(dir_path, filename)));
93
+ } catch (error) {
93
94
  }
94
- });
95
+ }
96
+ resolve();
97
+ } catch (error) {
98
+ reject(error);
99
+ }
100
+ });
95
101
  };
96
- exports.removeFiles = removeFiles;
97
- const moveFiles = function (adapter, stationSerial, device_sn, srcFolderName, dstFolderName) {
98
- return new Promise((resolve, reject) => {
102
+ const moveFiles = function(adapter, stationSerial, device_sn, srcFolderName, dstFolderName) {
103
+ return new Promise((resolve, reject) => {
104
+ try {
105
+ const dirSrcPath = import_path.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, srcFolderName);
106
+ const dirDstPath = import_path.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, dstFolderName);
107
+ if (!import_fs_extra.default.existsSync(dirDstPath)) {
108
+ import_fs_extra.default.mkdirSync(dirDstPath, { mode: 509, recursive: true });
109
+ }
110
+ if (import_fs_extra.default.existsSync(dirSrcPath)) {
111
+ const files = import_fs_extra.default.readdirSync(dirSrcPath).filter((fn) => fn.startsWith(device_sn));
99
112
  try {
100
- const dirSrcPath = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, srcFolderName);
101
- const dirDstPath = path_1.default.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, dstFolderName);
102
- if (!fs_extra_1.default.existsSync(dirDstPath)) {
103
- fs_extra_1.default.mkdirSync(dirDstPath, { mode: 0o775, recursive: true });
104
- }
105
- if (fs_extra_1.default.existsSync(dirSrcPath)) {
106
- const files = fs_extra_1.default.readdirSync(dirSrcPath).filter(fn => fn.startsWith(device_sn));
107
- try {
108
- files.map(filename => fs_extra_1.default.moveSync(path_1.default.join(dirSrcPath, filename), path_1.default.join(dirDstPath, filename)));
109
- }
110
- catch (error) {
111
- }
112
- }
113
- resolve();
113
+ files.map((filename) => import_fs_extra.default.moveSync(import_path.default.join(dirSrcPath, filename), import_path.default.join(dirDstPath, filename)));
114
+ } catch (error) {
114
115
  }
115
- catch (error) {
116
- reject(error);
117
- }
118
- });
116
+ }
117
+ resolve();
118
+ } catch (error) {
119
+ reject(error);
120
+ }
121
+ });
119
122
  };
120
- exports.moveFiles = moveFiles;
121
- const lowestUnusedNumber = function (sequence, startingFrom) {
122
- const arr = sequence.slice(0);
123
- arr.sort((a, b) => a - b);
124
- return arr.reduce((lowest, num, i) => {
125
- const seqIndex = i + startingFrom;
126
- return num !== seqIndex && seqIndex < lowest ? seqIndex : lowest;
127
- }, arr.length + startingFrom);
123
+ const lowestUnusedNumber = function(sequence, startingFrom) {
124
+ const arr = sequence.slice(0);
125
+ arr.sort((a, b) => a - b);
126
+ return arr.reduce((lowest, num, i) => {
127
+ const seqIndex = i + startingFrom;
128
+ return num !== seqIndex && seqIndex < lowest ? seqIndex : lowest;
129
+ }, arr.length + startingFrom);
128
130
  };
129
- exports.lowestUnusedNumber = lowestUnusedNumber;
130
131
  const sleep = async (ms) => {
131
- return new Promise((resolve) => {
132
- setTimeout(resolve, ms);
133
- });
132
+ return new Promise((resolve) => {
133
+ setTimeout(resolve, ms);
134
+ });
134
135
  };
135
- exports.sleep = sleep;
136
136
  const getVideoClipLength = (device) => {
137
- let length = 60;
138
- const workingMode = device.getRawProperty(eufy_security_client_1.CommandType.CMD_SET_PIR_POWERMODE);
139
- if (workingMode !== undefined) {
140
- switch (workingMode) {
141
- case "0":
142
- if (device.isCamera2Product() || device.isIndoorCamera() || device.isSoloCameras())
143
- length = 20;
144
- else if (device.isBatteryDoorbell() || device.isBatteryDoorbell2())
145
- length = 30;
146
- break;
147
- case "1":
148
- // Corrisponds to 60 seconds
149
- break;
150
- case "2":
151
- const customValue = device.getRawProperty(eufy_security_client_1.CommandType.CMD_DEV_RECORD_TIMEOUT);
152
- if (customValue !== undefined) {
153
- try {
154
- length = Number.parseInt(customValue);
155
- }
156
- catch (error) {
157
- }
158
- }
159
- break;
160
- case "3":
161
- // Corrisponds to 60 seconds?? (this mode exists only for battery doorbells; mode: Optimal Battery Life)
162
- break;
137
+ let length = 60;
138
+ const workingMode = device.getRawProperty(import_eufy_security_client.CommandType.CMD_SET_PIR_POWERMODE);
139
+ if (workingMode !== void 0) {
140
+ switch (workingMode) {
141
+ case "0":
142
+ if (device.isCamera2Product() || device.isIndoorCamera() || device.isSoloCameras())
143
+ length = 20;
144
+ else if (device.isBatteryDoorbell() || device.isBatteryDoorbell2())
145
+ length = 30;
146
+ break;
147
+ case "1":
148
+ break;
149
+ case "2":
150
+ const customValue = device.getRawProperty(import_eufy_security_client.CommandType.CMD_DEV_RECORD_TIMEOUT);
151
+ if (customValue !== void 0) {
152
+ try {
153
+ length = Number.parseInt(customValue);
154
+ } catch (error) {
155
+ }
163
156
  }
157
+ break;
158
+ case "3":
159
+ break;
164
160
  }
165
- return length;
166
- };
167
- exports.getVideoClipLength = getVideoClipLength;
168
- const removeLastChar = function (text, char) {
169
- const strArr = [...text];
170
- strArr.splice(text.lastIndexOf(char), 1);
171
- return strArr.join("");
161
+ }
162
+ return length;
172
163
  };
173
- exports.removeLastChar = removeLastChar;
174
- const changeRole = async function (adapter, log, state, role) {
175
- try {
176
- const states = await adapter.getStatesAsync(`*.${state}`);
177
- if (states)
178
- Object.keys(states).forEach(async (id) => {
179
- await adapter.extendObjectAsync(id, {
180
- type: "state",
181
- common: {
182
- role: role
183
- }
184
- }, {}).catch();
185
- });
186
- }
187
- catch (error) {
188
- log.error(`state: ${state} role: ${role} - Error:`, error);
189
- }
164
+ const removeLastChar = function(text, char) {
165
+ const strArr = [...text];
166
+ strArr.splice(text.lastIndexOf(char), 1);
167
+ return strArr.join("");
190
168
  };
191
- exports.changeRole = changeRole;
192
- const deleteStates = async function (adapter, property) {
193
- const states = await adapter.getStatesAsync(`*.${property}`);
169
+ const changeRole = async function(adapter, log, state, role) {
170
+ try {
171
+ const states = await adapter.getStatesAsync(`*.${state}`);
194
172
  if (states)
195
- Object.keys(states).forEach(async (id) => {
196
- await adapter.delObjectAsync(id).catch();
197
- });
173
+ Object.keys(states).forEach(async (id) => {
174
+ await adapter.extendObjectAsync(id, {
175
+ type: "state",
176
+ common: {
177
+ role
178
+ }
179
+ }, {}).catch();
180
+ });
181
+ } catch (error) {
182
+ log.error(`state: ${state} role: ${role} - Error:`, error);
183
+ }
198
184
  };
199
- exports.deleteStates = deleteStates;
200
- const handleUpdate = async function (adapter, log, old_version) {
201
- if (old_version <= 0.61) {
202
- try {
203
- const all = await adapter.getStatesAsync("T*");
204
- if (all) {
205
- Object.keys(all).forEach(async (id) => {
206
- await adapter.delObjectAsync(id, { recursive: false }).catch();
207
- });
208
- }
209
- const channels = await adapter.getChannelsOfAsync();
210
- if (channels) {
211
- Object.values(channels).forEach(async (channel) => {
212
- if (channel.common.name !== "info") {
213
- await adapter.delObjectAsync(channel._id, { recursive: false }).catch();
214
- }
215
- });
216
- }
217
- const devices = await adapter.getDevicesAsync();
218
- if (devices) {
219
- Object.values(devices).forEach(async (device) => {
220
- await adapter.delObjectAsync(device._id, { recursive: false }).catch();
221
- });
222
- }
223
- }
224
- catch (error) {
225
- log.error("Version 0.6.1: Error:", error);
226
- }
185
+ const deleteStates = async function(adapter, property) {
186
+ const states = await adapter.getStatesAsync(`*.${property}`);
187
+ if (states)
188
+ Object.keys(states).forEach(async (id) => {
189
+ await adapter.delObjectAsync(id).catch();
190
+ });
191
+ };
192
+ const handleUpdate = async function(adapter, log, old_version) {
193
+ if (old_version <= 0.61) {
194
+ try {
195
+ const all = await adapter.getStatesAsync("T*");
196
+ if (all) {
197
+ Object.keys(all).forEach(async (id) => {
198
+ await adapter.delObjectAsync(id, { recursive: false }).catch();
199
+ });
200
+ }
201
+ const channels = await adapter.getChannelsOfAsync();
202
+ if (channels) {
203
+ Object.values(channels).forEach(async (channel) => {
204
+ if (channel.common.name !== "info") {
205
+ await adapter.delObjectAsync(channel._id, { recursive: false }).catch();
206
+ }
207
+ });
208
+ }
209
+ const devices = await adapter.getDevicesAsync();
210
+ if (devices) {
211
+ Object.values(devices).forEach(async (device) => {
212
+ await adapter.delObjectAsync(device._id, { recursive: false }).catch();
213
+ });
214
+ }
215
+ } catch (error) {
216
+ log.error("Version 0.6.1: Error:", error);
227
217
  }
228
- if (old_version <= 0.74) {
229
- try {
230
- await adapter.setObjectAsync("verify_code", {
231
- type: "state",
232
- common: {
233
- name: "2FA verification code",
234
- type: "string",
235
- role: "state",
236
- read: true,
237
- write: true,
238
- },
239
- native: {},
240
- });
241
- }
242
- catch (error) {
243
- log.error("Version 0.7.4: Error:", error);
244
- }
218
+ }
219
+ if (old_version <= 0.74) {
220
+ try {
221
+ await adapter.setObjectAsync("verify_code", {
222
+ type: "state",
223
+ common: {
224
+ name: "2FA verification code",
225
+ type: "string",
226
+ role: "state",
227
+ read: true,
228
+ write: true
229
+ },
230
+ native: {}
231
+ });
232
+ } catch (error) {
233
+ log.error("Version 0.7.4: Error:", error);
245
234
  }
246
- if (old_version <= 1) {
247
- for (const state of ["last_event_pic_url", "last_event_pic_html", "last_event_video_url"]) {
248
- try {
249
- await (0, exports.deleteStates)(adapter, state);
250
- }
251
- catch (error) {
252
- log.error(`Version 1.0.0 - ${state}: Error:`, error);
253
- }
254
- }
235
+ }
236
+ if (old_version <= 1) {
237
+ for (const state of ["last_event_pic_url", "last_event_pic_html", "last_event_video_url"]) {
238
+ try {
239
+ await deleteStates(adapter, state);
240
+ } catch (error) {
241
+ log.error(`Version 1.0.0 - ${state}: Error:`, error);
242
+ }
255
243
  }
244
+ }
256
245
  };
257
- exports.handleUpdate = handleUpdate;
258
- const convertCamelCaseToSnakeCase = function (value) {
259
- return value.replace(/[A-Z]/g, (letter, index) => {
260
- return index == 0 ? letter.toLowerCase() : "_" + letter.toLowerCase();
261
- });
246
+ const convertCamelCaseToSnakeCase = function(value) {
247
+ return value.replace(/[A-Z]/g, (letter, index) => {
248
+ return index == 0 ? letter.toLowerCase() : "_" + letter.toLowerCase();
249
+ });
262
250
  };
263
- exports.convertCamelCaseToSnakeCase = convertCamelCaseToSnakeCase;
264
- //# sourceMappingURL=utils.js.map
251
+ // Annotate the CommonJS export names for ESM import in node:
252
+ 0 && (module.exports = {
253
+ changeRole,
254
+ convertCamelCaseToSnakeCase,
255
+ deleteStates,
256
+ getDataFilePath,
257
+ getImageAsHTML,
258
+ getVideoClipLength,
259
+ handleUpdate,
260
+ isEmpty,
261
+ lowestUnusedNumber,
262
+ moveFiles,
263
+ removeFiles,
264
+ removeLastChar,
265
+ setStateAsync,
266
+ setStateChangedAsync,
267
+ sleep
268
+ });
269
+ //# sourceMappingURL=utils.js.map
@@ -1 +1,7 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/lib/utils.ts"],
4
+ "sourcesContent": ["import { CommandType, Device } from \"eufy-security-client\";\r\nimport path from \"path\";\r\nimport fse from \"fs-extra\";\r\nimport * as utils from \"@iobroker/adapter-core\";\r\n\r\nimport { ioBrokerLogger } from \"./log\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nexport const setStateChangedAsync = async function(adapter: ioBroker.Adapter, id: string, value: any): ioBroker.SetStateChangedPromise {\r\n return await adapter.setStateChangedAsync(id, value === undefined || value === null ? null : { val: value, ack: true }).catch();\r\n};\r\n\r\nexport const isEmpty = function(str: string | null | undefined): boolean {\r\n if (str) {\r\n if (str.length > 0)\r\n return false;\r\n return true;\r\n }\r\n return true;\r\n};\r\n\r\nexport const getImageAsHTML = function(data: Buffer, mime = \"image/jpg\"): string {\r\n if (data && data.length > 0)\r\n return `<img src=\"data:${mime};base64,${data.toString(\"base64\")}\" style=\"width: auto ;height: 100%;\" />`;\r\n return \"\";\r\n}\r\n\r\nexport const getDataFilePath = function(adapter: ioBroker.Adapter, stationSerial: string, folderName: string, fileName: string): string {\r\n const dir_path = path.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);\r\n if (!fse.existsSync(dir_path)) {\r\n fse.mkdirSync(dir_path, {mode: 0o775, recursive: true});\r\n }\r\n return path.join(dir_path, fileName);\r\n}\r\n\r\nexport const setStateAsync = async function(adapter: ioBroker.Adapter, state_id: string, common_name: string, value: string, role = \"text\", type: \"string\" | \"number\" | \"boolean\" | \"object\" | \"array\" | \"mixed\" | \"file\" | undefined = \"string\"): Promise<void> {\r\n await adapter.setObjectNotExistsAsync(state_id, {\r\n type: \"state\",\r\n common: {\r\n name: common_name,\r\n type: type,\r\n role: role,\r\n read: true,\r\n write: false,\r\n },\r\n native: {\r\n },\r\n });\r\n await adapter.setStateAsync(state_id, { val: value, ack: true });\r\n}\r\n\r\nexport const removeFiles = function(adapter: ioBroker.Adapter, stationSerial: string, folderName: string, device_sn: string): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const dir_path = path.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, folderName);\r\n if (fse.existsSync(dir_path)) {\r\n const files = fse.readdirSync(dir_path).filter(fn => fn.startsWith(device_sn));\r\n try {\r\n files.map(filename => fse.removeSync(path.join(dir_path, filename)));\r\n } catch (error) {\r\n }\r\n }\r\n resolve();\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n\r\nexport const moveFiles = function(adapter: ioBroker.Adapter, stationSerial: string, device_sn: string, srcFolderName: string, dstFolderName: string): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const dirSrcPath = path.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, srcFolderName);\r\n const dirDstPath = path.join(utils.getAbsoluteInstanceDataDir(adapter), stationSerial, dstFolderName);\r\n if (!fse.existsSync(dirDstPath)) {\r\n fse.mkdirSync(dirDstPath, {mode: 0o775, recursive: true});\r\n }\r\n if (fse.existsSync(dirSrcPath)) {\r\n const files = fse.readdirSync(dirSrcPath).filter(fn => fn.startsWith(device_sn));\r\n try {\r\n files.map(filename => fse.moveSync(path.join(dirSrcPath, filename), path.join(dirDstPath, filename)));\r\n } catch (error) {\r\n }\r\n }\r\n resolve();\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n\r\nexport const lowestUnusedNumber = function (sequence: number[], startingFrom: number): number {\r\n const arr = sequence.slice(0);\r\n arr.sort((a, b) => a - b);\r\n return arr.reduce((lowest, num, i) => {\r\n const seqIndex = i + startingFrom;\r\n return num !== seqIndex && seqIndex < lowest ? seqIndex : lowest\r\n }, arr.length + startingFrom);\r\n}\r\n\r\nexport const sleep = async (ms: number): Promise<void> => {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n};\r\n\r\nexport const getVideoClipLength = (device: Device): number => {\r\n let length = 60;\r\n const workingMode = device.getRawProperty(CommandType.CMD_SET_PIR_POWERMODE);\r\n if (workingMode !== undefined) {\r\n switch(workingMode) {\r\n case \"0\":\r\n if (device.isCamera2Product() || device.isIndoorCamera() || device.isSoloCameras())\r\n length = 20;\r\n else if (device.isBatteryDoorbell() || device.isBatteryDoorbell2())\r\n length = 30;\r\n break;\r\n case \"1\":\r\n // Corrisponds to 60 seconds\r\n break;\r\n case \"2\":\r\n const customValue = device.getRawProperty(CommandType.CMD_DEV_RECORD_TIMEOUT);\r\n if (customValue !== undefined) {\r\n try {\r\n length = Number.parseInt(customValue);\r\n } catch(error) {\r\n }\r\n }\r\n break;\r\n case \"3\":\r\n // Corrisponds to 60 seconds?? (this mode exists only for battery doorbells; mode: Optimal Battery Life)\r\n break;\r\n }\r\n }\r\n return length;\r\n};\r\n\r\nexport const removeLastChar = function(text: string, char: string): string {\r\n const strArr = [...text];\r\n strArr.splice(text.lastIndexOf(char), 1);\r\n return strArr.join(\"\");\r\n}\r\n\r\nexport const changeRole = async function(adapter: ioBroker.Adapter, log: ioBrokerLogger, state: string, role: string): Promise<void> {\r\n try {\r\n const states = await adapter.getStatesAsync(`*.${state}`);\r\n if (states)\r\n Object.keys(states).forEach(async id => {\r\n await adapter.extendObjectAsync(id, {\r\n type: \"state\",\r\n common: {\r\n role: role\r\n }\r\n }, {}).catch();\r\n });\r\n } catch (error) {\r\n log.error(`state: ${state} role: ${role} - Error:`, error);\r\n }\r\n};\r\n\r\nexport const deleteStates = async function(adapter: ioBroker.Adapter, property: string): Promise<void> {\r\n const states = await adapter.getStatesAsync(`*.${property}`);\r\n if (states)\r\n Object.keys(states).forEach(async id => {\r\n await adapter.delObjectAsync(id).catch();\r\n });\r\n};\r\n\r\nexport const handleUpdate = async function(adapter: ioBroker.Adapter, log: ioBrokerLogger, old_version: number): Promise<void> {\r\n if (old_version <= 0.61) {\r\n try {\r\n const all = await adapter.getStatesAsync(\"T*\");\r\n if (all) {\r\n Object.keys(all).forEach(async id => {\r\n await adapter.delObjectAsync(id, { recursive: false }).catch();\r\n });\r\n }\r\n const channels = await adapter.getChannelsOfAsync();\r\n if (channels) {\r\n Object.values(channels).forEach(async channel => {\r\n if (channel.common.name !== \"info\") {\r\n await adapter.delObjectAsync(channel._id, {recursive: false}).catch();\r\n }\r\n });\r\n }\r\n const devices = await adapter.getDevicesAsync();\r\n if (devices) {\r\n Object.values(devices).forEach(async device => {\r\n await adapter.delObjectAsync(device._id, {recursive: false}).catch();\r\n });\r\n }\r\n } catch (error) {\r\n log.error(\"Version 0.6.1: Error:\", error);\r\n }\r\n }\r\n if (old_version <= 0.74) {\r\n try {\r\n await adapter.setObjectAsync(\"verify_code\", {\r\n type: \"state\",\r\n common: {\r\n name: \"2FA verification code\",\r\n type: \"string\",\r\n role: \"state\",\r\n read: true,\r\n write: true,\r\n },\r\n native: {},\r\n });\r\n } catch (error) {\r\n log.error(\"Version 0.7.4: Error:\", error);\r\n }\r\n }\r\n if (old_version <= 1) {\r\n for (const state of [\"last_event_pic_url\", \"last_event_pic_html\", \"last_event_video_url\"]) {\r\n try {\r\n await deleteStates(adapter, state);\r\n } catch (error) {\r\n log.error(`Version 1.0.0 - ${state}: Error:`, error);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport const convertCamelCaseToSnakeCase = function (value: string): string {\r\n return value.replace(/[A-Z]/g, (letter, index) => {\r\n return index == 0 ? letter.toLowerCase() : \"_\" + letter.toLowerCase();\r\n });\r\n};"],
5
+ "mappings": "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",
6
+ "names": ["path", "fse"]
7
+ }