matterbridge 1.7.2-dev.8 → 1.7.3
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/CHANGELOG.md +17 -2
- package/dist/cli.d.ts +25 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +26 -0
- package/dist/cli.js.map +1 -0
- package/dist/cluster/export.d.ts +2 -0
- package/dist/cluster/export.d.ts.map +1 -0
- package/dist/cluster/export.js +2 -0
- package/dist/cluster/export.js.map +1 -0
- package/dist/defaultConfigSchema.d.ts +27 -0
- package/dist/defaultConfigSchema.d.ts.map +1 -0
- package/dist/defaultConfigSchema.js +23 -0
- package/dist/defaultConfigSchema.js.map +1 -0
- package/dist/deviceManager.d.ts +46 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +26 -1
- package/dist/deviceManager.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/export.d.ts +2 -0
- package/dist/logger/export.d.ts.map +1 -0
- package/dist/logger/export.js +1 -0
- package/dist/logger/export.js.map +1 -0
- package/dist/matter/export.d.ts +11 -0
- package/dist/matter/export.d.ts.map +1 -0
- package/dist/matter/export.js +4 -0
- package/dist/matter/export.js.map +1 -0
- package/dist/matterbridge.d.ts +483 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +711 -64
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +39 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +33 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +942 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +29 -1
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDevice.d.ts +7077 -0
- package/dist/matterbridgeDevice.d.ts.map +1 -0
- package/dist/matterbridgeDevice.js +996 -9
- package/dist/matterbridgeDevice.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +109 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +82 -11
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +39 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +33 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEdge.d.ts +91 -0
- package/dist/matterbridgeEdge.d.ts.map +1 -0
- package/dist/matterbridgeEdge.js +530 -0
- package/dist/matterbridgeEdge.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +10156 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +1120 -11
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +168 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +124 -3
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/matterbridgeTypes.d.ts +172 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -0
- package/dist/matterbridgeTypes.js +24 -0
- package/dist/matterbridgeTypes.js.map +1 -0
- package/dist/matterbridgeWebsocket.d.ts +49 -0
- package/dist/matterbridgeWebsocket.d.ts.map +1 -0
- package/dist/matterbridgeWebsocket.js +46 -0
- package/dist/matterbridgeWebsocket.js.map +1 -0
- package/dist/pluginManager.d.ts +238 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +238 -3
- package/dist/pluginManager.js.map +1 -0
- package/dist/storage/export.d.ts +2 -0
- package/dist/storage/export.d.ts.map +1 -0
- package/dist/storage/export.js +1 -0
- package/dist/storage/export.js.map +1 -0
- package/dist/utils/colorUtils.d.ts +61 -0
- package/dist/utils/colorUtils.d.ts.map +1 -0
- package/dist/utils/colorUtils.js +205 -2
- package/dist/utils/colorUtils.js.map +1 -0
- package/dist/utils/export.d.ts +3 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/export.js +1 -0
- package/dist/utils/export.js.map +1 -0
- package/dist/utils/utils.d.ts +221 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +252 -7
- package/dist/utils/utils.js.map +1 -0
- package/frontend/build/asset-manifest.json +6 -6
- package/frontend/build/index.html +1 -1
- package/frontend/build/static/css/{main.8727aee4.css → main.cf25d33e.css} +2 -2
- package/frontend/build/static/css/main.cf25d33e.css.map +1 -0
- package/frontend/build/static/js/{main.ca25ed78.js → main.6bbd1772.js} +3 -3
- package/frontend/build/static/js/main.6bbd1772.js.map +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
- package/frontend/build/static/css/main.8727aee4.css.map +0 -1
- package/frontend/build/static/js/main.ca25ed78.js.map +0 -1
- /package/frontend/build/static/js/{main.ca25ed78.js.LICENSE.txt → main.6bbd1772.js.LICENSE.txt} +0 -0
package/dist/utils/utils.js
CHANGED
|
@@ -1,30 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file contains the deepEqual function.
|
|
3
|
+
*
|
|
4
|
+
* @file utils.ts
|
|
5
|
+
* @author Luca Liguori
|
|
6
|
+
* @date 2024-02-17
|
|
7
|
+
* @version 1.2.9
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License. *
|
|
22
|
+
*/
|
|
23
|
+
// Node.js modules
|
|
1
24
|
import os from 'os';
|
|
2
25
|
import { createWriteStream, statSync } from 'fs';
|
|
3
26
|
import path from 'path';
|
|
4
27
|
import * as dns from 'dns';
|
|
5
28
|
import { promises as fs } from 'fs';
|
|
29
|
+
// Package modules
|
|
6
30
|
import archiver from 'archiver';
|
|
7
31
|
import { glob } from 'glob';
|
|
32
|
+
// AnsiLogger module
|
|
8
33
|
import { AnsiLogger, idn, rs } from 'node-ansi-logger';
|
|
9
|
-
const log = new AnsiLogger({ logName: 'MatterbridgeUtils', logTimestampFormat: 4
|
|
34
|
+
const log = new AnsiLogger({ logName: 'MatterbridgeUtils', logTimestampFormat: 4 /* TimestampFormat.TIME_MILLIS */, logLevel: "info" /* LogLevel.INFO */ });
|
|
35
|
+
/**
|
|
36
|
+
* Performs a deep comparison between two values to determine if they are equivalent.
|
|
37
|
+
* This comparison includes primitive types, arrays, and objects, allowing for optional
|
|
38
|
+
* exclusion of specific properties from the comparison in objects.
|
|
39
|
+
*
|
|
40
|
+
* @param {any} a The first value to compare.
|
|
41
|
+
* @param {any} b The second value to compare.
|
|
42
|
+
* @param {string[]} [excludeProperties=[]] An array of property names to exclude from the comparison in objects.
|
|
43
|
+
* @returns {boolean} True if the values are deeply equal, excluding any specified properties; otherwise, false.
|
|
44
|
+
*
|
|
45
|
+
* Note: This function utilizes recursion for deep comparison of nested structures and includes a debugging
|
|
46
|
+
* mechanism that can be toggled on or off for detailed comparison logging. It is important to ensure that
|
|
47
|
+
* objects do not contain circular references when enabling debug logging to avoid infinite loops.
|
|
48
|
+
*
|
|
49
|
+
* Example usage:
|
|
50
|
+
* ```
|
|
51
|
+
* const obj1 = { a: 1, b: { c: 2 } };
|
|
52
|
+
* const obj2 = { a: 1, b: { c: 2 } };
|
|
53
|
+
* console.log(deepEqual(obj1, obj2)); // true
|
|
54
|
+
*
|
|
55
|
+
* const arr1 = [1, 2, [3, 4]];
|
|
56
|
+
* const arr2 = [1, 2, [3, 4]];
|
|
57
|
+
* console.log(deepEqual(arr1, arr2)); // true
|
|
58
|
+
*
|
|
59
|
+
* const obj3 = { a: 1, b: { c: 2, d: 3 } };
|
|
60
|
+
* const obj4 = { a: 1, b: { c: 2 } };
|
|
61
|
+
* console.log(deepEqual(obj3, obj4, ['d'])); // true, excluding property 'd' from comparison
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
65
|
export function deepEqual(a, b, excludeProperties = []) {
|
|
66
|
+
// Toggle debugging on or off easily
|
|
11
67
|
const debug = false;
|
|
68
|
+
// Helper function for conditional logging
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
70
|
const debugLog = (...messages) => {
|
|
13
71
|
if (debug) {
|
|
72
|
+
// eslint-disable-next-line no-console
|
|
14
73
|
console.log(...messages);
|
|
15
74
|
}
|
|
16
75
|
};
|
|
76
|
+
// If both are the same instance, return true (handles primitives and same object references)
|
|
17
77
|
if (a === b) {
|
|
18
78
|
return true;
|
|
19
79
|
}
|
|
80
|
+
// If types are different, return false
|
|
20
81
|
if (typeof a !== typeof b) {
|
|
21
82
|
debugLog(`deepEqual false for typeof a: ${typeof a} typeof b: ${typeof b}`);
|
|
22
83
|
return false;
|
|
23
84
|
}
|
|
85
|
+
// If one of them is null (and we know they are not equal from the first check), return false
|
|
24
86
|
if (a == null || b == null) {
|
|
25
87
|
debugLog('deepEqual false for == null');
|
|
26
88
|
return false;
|
|
27
89
|
}
|
|
90
|
+
// Handle Arrays
|
|
28
91
|
if (Array.isArray(a) && Array.isArray(b)) {
|
|
29
92
|
if (a.length !== b.length) {
|
|
30
93
|
debugLog(`deepEqual false for array a.length(${a.length}) !== b.length(${b.length})`);
|
|
@@ -40,54 +103,75 @@ export function deepEqual(a, b, excludeProperties = []) {
|
|
|
40
103
|
}
|
|
41
104
|
return true;
|
|
42
105
|
}
|
|
106
|
+
// Handle Objects (and exclude null, functions, and arrays)
|
|
43
107
|
if (typeof a === 'object' && typeof b === 'object') {
|
|
44
108
|
const aProps = Object.getOwnPropertyNames(a).filter((prop) => !excludeProperties.includes(prop));
|
|
45
109
|
const bProps = Object.getOwnPropertyNames(b).filter((prop) => !excludeProperties.includes(prop));
|
|
110
|
+
// If their property lengths are different, they're different objects
|
|
46
111
|
if (aProps.length !== bProps.length) {
|
|
47
112
|
debugLog(`deepEqual false for aProps.length(${aProps.length}) !== bProps.length(${bProps.length})`);
|
|
48
113
|
debugLog(`- aProps.length(${aProps.length}):`, aProps);
|
|
49
114
|
debugLog(`- bProps.length(${bProps.length}):`, bProps);
|
|
50
115
|
return false;
|
|
51
116
|
}
|
|
117
|
+
// Check each property in 'a' to see if it's in 'b' and if it's equal (deep check)
|
|
52
118
|
for (const prop of aProps) {
|
|
53
119
|
if (!Object.prototype.hasOwnProperty.call(b, prop)) {
|
|
54
120
|
debugLog(`deepEqual false for !b.hasOwnProperty(${prop})`);
|
|
55
121
|
return false;
|
|
56
122
|
}
|
|
57
123
|
if (!deepEqual(a[prop], b[prop], excludeProperties)) {
|
|
58
|
-
debugLog(`deepEqual false for !deepEqual(a[${prop}], b[${prop}])`);
|
|
124
|
+
debugLog(`deepEqual false for !deepEqual(a[${prop}], b[${prop}])` /* , a[prop], b[prop]*/);
|
|
59
125
|
return false;
|
|
60
126
|
}
|
|
61
127
|
}
|
|
62
128
|
return true;
|
|
63
129
|
}
|
|
130
|
+
// If none of the above, the objects are not equal
|
|
64
131
|
return false;
|
|
65
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Creates a deep copy of the given value.
|
|
135
|
+
*
|
|
136
|
+
* @template T - The type of the value being copied.
|
|
137
|
+
* @param {T} value - The value to be copied.
|
|
138
|
+
* @returns {T} - The deep copy of the value.
|
|
139
|
+
*/
|
|
66
140
|
export function deepCopy(value) {
|
|
67
141
|
if (typeof value !== 'object' || value === null) {
|
|
142
|
+
// Primitive value (string, number, boolean, bigint, undefined, symbol) or null
|
|
68
143
|
return value;
|
|
69
144
|
}
|
|
70
145
|
else if (Array.isArray(value)) {
|
|
146
|
+
// Array: Recursively copy each element
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
71
148
|
return value.map((item) => deepCopy(item));
|
|
72
149
|
}
|
|
73
150
|
else if (value instanceof Date) {
|
|
151
|
+
// Date objects
|
|
152
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
74
153
|
return new Date(value.getTime());
|
|
75
154
|
}
|
|
76
155
|
else if (value instanceof Map) {
|
|
156
|
+
// Maps
|
|
77
157
|
const mapCopy = new Map();
|
|
78
158
|
value.forEach((val, key) => {
|
|
79
159
|
mapCopy.set(key, deepCopy(val));
|
|
80
160
|
});
|
|
161
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
81
162
|
return mapCopy;
|
|
82
163
|
}
|
|
83
164
|
else if (value instanceof Set) {
|
|
165
|
+
// Sets
|
|
84
166
|
const setCopy = new Set();
|
|
85
167
|
value.forEach((item) => {
|
|
86
168
|
setCopy.add(deepCopy(item));
|
|
87
169
|
});
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
88
171
|
return setCopy;
|
|
89
172
|
}
|
|
90
173
|
else {
|
|
174
|
+
// Objects: Create a copy with the same prototype as the original
|
|
91
175
|
const proto = Object.getPrototypeOf(value);
|
|
92
176
|
const copy = Object.create(proto);
|
|
93
177
|
for (const key in value) {
|
|
@@ -98,9 +182,14 @@ export function deepCopy(value) {
|
|
|
98
182
|
return copy;
|
|
99
183
|
}
|
|
100
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Retrieves the IPv4 address of the first non-internal network interface.
|
|
187
|
+
* @returns {string | undefined} The IPv4 address of the selected network interface, or undefined if not found.
|
|
188
|
+
*/
|
|
101
189
|
export function getIpv4InterfaceAddress() {
|
|
102
190
|
let ipv4Address;
|
|
103
191
|
const networkInterfaces = os.networkInterfaces();
|
|
192
|
+
// console.log('Available Network Interfaces:', networkInterfaces);
|
|
104
193
|
for (const interfaceDetails of Object.values(networkInterfaces)) {
|
|
105
194
|
if (!interfaceDetails) {
|
|
106
195
|
break;
|
|
@@ -114,11 +203,17 @@ export function getIpv4InterfaceAddress() {
|
|
|
114
203
|
break;
|
|
115
204
|
}
|
|
116
205
|
}
|
|
206
|
+
// console.log('Selected Network Interfaces:', ipv4Address);
|
|
117
207
|
return ipv4Address;
|
|
118
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Retrieves the IPv6 address of the first non-internal network interface.
|
|
211
|
+
* @returns {string | undefined} The IPv4 address of the selected network interface, or undefined if not found.
|
|
212
|
+
*/
|
|
119
213
|
export function getIpv6InterfaceAddress() {
|
|
120
214
|
let ipv6Address;
|
|
121
215
|
const networkInterfaces = os.networkInterfaces();
|
|
216
|
+
// console.log('Available Network Interfaces:', networkInterfaces);
|
|
122
217
|
for (const interfaceDetails of Object.values(networkInterfaces)) {
|
|
123
218
|
if (!interfaceDetails) {
|
|
124
219
|
break;
|
|
@@ -132,11 +227,17 @@ export function getIpv6InterfaceAddress() {
|
|
|
132
227
|
break;
|
|
133
228
|
}
|
|
134
229
|
}
|
|
230
|
+
// console.log('Selected Network Interfaces:', ipv6Address);
|
|
135
231
|
return ipv6Address;
|
|
136
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Retrieves the mac address of the first non-internal network interface.
|
|
235
|
+
* @returns {string | undefined} The IPv4 address of the selected network interface, or undefined if not found.
|
|
236
|
+
*/
|
|
137
237
|
export function getMacAddress() {
|
|
138
238
|
let macAddress;
|
|
139
239
|
const networkInterfaces = os.networkInterfaces();
|
|
240
|
+
// console.log('Available Network Interfaces:', networkInterfaces);
|
|
140
241
|
for (const interfaceDetails of Object.values(networkInterfaces)) {
|
|
141
242
|
if (!interfaceDetails) {
|
|
142
243
|
break;
|
|
@@ -152,10 +253,25 @@ export function getMacAddress() {
|
|
|
152
253
|
}
|
|
153
254
|
return macAddress;
|
|
154
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Checks if a given string is a valid IPv4 address.
|
|
258
|
+
*
|
|
259
|
+
* @param {string} ipv4Address - The string to be checked.
|
|
260
|
+
* @returns {boolean} - Returns true if the string is a valid IPv4 address, otherwise returns false.
|
|
261
|
+
*/
|
|
155
262
|
export function isValidIpv4Address(ipv4Address) {
|
|
156
263
|
const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
|
157
264
|
return ipv4Regex.test(ipv4Address);
|
|
158
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Checks if a value is a valid number within the specified range.
|
|
268
|
+
*
|
|
269
|
+
* @param {any} value - The value to be checked.
|
|
270
|
+
* @param {number} min - The minimum value allowed (optional).
|
|
271
|
+
* @param {number} max - The maximum value allowed (optional).
|
|
272
|
+
* @returns {boolean} Returns true if the value is a valid number within the specified range, otherwise false.
|
|
273
|
+
*/
|
|
274
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
159
275
|
export function isValidNumber(value, min, max) {
|
|
160
276
|
if (value === undefined || value === null || typeof value !== 'number' || Number.isNaN(value))
|
|
161
277
|
return false;
|
|
@@ -165,9 +281,25 @@ export function isValidNumber(value, min, max) {
|
|
|
165
281
|
return false;
|
|
166
282
|
return true;
|
|
167
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Checks if a value is a valid boolean.
|
|
286
|
+
*
|
|
287
|
+
* @param {any} value - The value to be checked.
|
|
288
|
+
* @returns {boolean} `true` if the value is a valid boolean, `false` otherwise.
|
|
289
|
+
*/
|
|
290
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
168
291
|
export function isValidBoolean(value) {
|
|
169
292
|
return value !== undefined && value !== null && typeof value === 'boolean';
|
|
170
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Checks if a value is a valid string.
|
|
296
|
+
*
|
|
297
|
+
* @param {any} value - The value to be checked.
|
|
298
|
+
* @param {number} minLength - The min string length (optional).
|
|
299
|
+
* @param {number} maxLength - The max string length (optional).
|
|
300
|
+
* @returns {boolean} A boolean indicating whether the value is a valid string.
|
|
301
|
+
*/
|
|
302
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
171
303
|
export function isValidString(value, minLength, maxLength) {
|
|
172
304
|
if (value === undefined || value === null || typeof value !== 'string')
|
|
173
305
|
return false;
|
|
@@ -177,6 +309,15 @@ export function isValidString(value, minLength, maxLength) {
|
|
|
177
309
|
return false;
|
|
178
310
|
return true;
|
|
179
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Checks if a value is a valid object.
|
|
314
|
+
*
|
|
315
|
+
* @param {any} value - The value to be checked.
|
|
316
|
+
* @param {number} minLength - The min number of keys (optional).
|
|
317
|
+
* @param {number} maxLength - The max number of keys (optional).
|
|
318
|
+
* @returns {boolean} A boolean indicating whether the value is a valid object.
|
|
319
|
+
*/
|
|
320
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
180
321
|
export function isValidObject(value, minLength, maxLength) {
|
|
181
322
|
if (value === undefined || value === null || typeof value !== 'object' || Array.isArray(value))
|
|
182
323
|
return false;
|
|
@@ -187,6 +328,15 @@ export function isValidObject(value, minLength, maxLength) {
|
|
|
187
328
|
return false;
|
|
188
329
|
return true;
|
|
189
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* Checks if a value is a valid array.
|
|
333
|
+
*
|
|
334
|
+
* @param {any} value - The value to be checked.
|
|
335
|
+
* @param {number} minLength - The min number of elements (optional).
|
|
336
|
+
* @param {number} maxLength - The max number of elements (optional).
|
|
337
|
+
* @returns {boolean} A boolean indicating whether the value is a valid array.
|
|
338
|
+
*/
|
|
339
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
190
340
|
export function isValidArray(value, minLength, maxLength) {
|
|
191
341
|
if (value === undefined || value === null || !Array.isArray(value))
|
|
192
342
|
return false;
|
|
@@ -196,14 +346,33 @@ export function isValidArray(value, minLength, maxLength) {
|
|
|
196
346
|
return false;
|
|
197
347
|
return true;
|
|
198
348
|
}
|
|
349
|
+
/**
|
|
350
|
+
* Checks if the given value is null.
|
|
351
|
+
*
|
|
352
|
+
* @param {any} value - The value to check.
|
|
353
|
+
* @returns {boolean} `true` if the value is null, `false` otherwise.
|
|
354
|
+
*/
|
|
355
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
199
356
|
export function isValidNull(value) {
|
|
200
357
|
return value === null;
|
|
201
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* Checks if a value is undefined.
|
|
361
|
+
*
|
|
362
|
+
* @param {any} value - The value to check.
|
|
363
|
+
* @returns {boolean} `true` if the value is undefined, `false` otherwise.
|
|
364
|
+
*/
|
|
365
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
202
366
|
export function isValidUndefined(value) {
|
|
203
367
|
return value === undefined;
|
|
204
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* Logs the available network interfaces and their details.
|
|
371
|
+
* @param {boolean} log - Whether to enable logging of network interface details.
|
|
372
|
+
* @returns {string | undefined} The IPv6 address of the network interface, if available.
|
|
373
|
+
*/
|
|
205
374
|
export function logInterfaces(debug = true) {
|
|
206
|
-
log.logLevel = "info"
|
|
375
|
+
log.logLevel = "info" /* LogLevel.INFO */;
|
|
207
376
|
log.logName = 'LogInterfaces';
|
|
208
377
|
let ipv6Address;
|
|
209
378
|
const networkInterfaces = os.networkInterfaces();
|
|
@@ -221,8 +390,18 @@ export function logInterfaces(debug = true) {
|
|
|
221
390
|
}
|
|
222
391
|
return ipv6Address;
|
|
223
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Asynchronous waiter function that resolves when the provided condition is met or rejects on timeout.
|
|
395
|
+
* @param {string} name - The name of the waiter.
|
|
396
|
+
* @param {() => boolean} check - A function that checks the condition. Should return a boolean.
|
|
397
|
+
* @param {boolean} [exitWithReject=false] - Optional. If true, the promise will be rejected on timeout. Default is false.
|
|
398
|
+
* @param {number} [resolveTimeout=5000] - Optional. The timeout duration in milliseconds. Default is 5000ms.
|
|
399
|
+
* @param {number} [resolveInterval=500] - Optional. The interval duration in milliseconds between condition checks. Default is 500ms.
|
|
400
|
+
* @param {boolean} [debug=false] - Optional. If true, debug messages will be logged to the console. Default is false.
|
|
401
|
+
* @returns {Promise<boolean>} A promise that resolves to true when the condition is met, or false if the timeout occurs.
|
|
402
|
+
*/
|
|
224
403
|
export async function waiter(name, check, exitWithReject = false, resolveTimeout = 5000, resolveInterval = 500, debug = false) {
|
|
225
|
-
log.logLevel = "debug"
|
|
404
|
+
log.logLevel = "debug" /* LogLevel.DEBUG */;
|
|
226
405
|
log.logName = 'Waiter';
|
|
227
406
|
if (debug)
|
|
228
407
|
log.debug(`Waiter "${name}" started...`);
|
|
@@ -248,11 +427,19 @@ export async function waiter(name, check, exitWithReject = false, resolveTimeout
|
|
|
248
427
|
}, resolveInterval);
|
|
249
428
|
});
|
|
250
429
|
}
|
|
430
|
+
/**
|
|
431
|
+
* Asynchronously waits for a specified amount of time.
|
|
432
|
+
* @param {number} timeout - The duration to wait in milliseconds. Default is 1000ms.
|
|
433
|
+
* @param {string} name - The name of the wait operation. Default is undefined.
|
|
434
|
+
* @param {boolean} debug - Whether to enable debug logging. Default is false.
|
|
435
|
+
* @returns {Promise<void>} A Promise that resolves after the specified timeout.
|
|
436
|
+
*/
|
|
251
437
|
export async function wait(timeout = 1000, name, debug = false) {
|
|
252
|
-
log.logLevel = "debug"
|
|
438
|
+
log.logLevel = "debug" /* LogLevel.DEBUG */;
|
|
253
439
|
log.logName = 'Wait';
|
|
254
440
|
if (debug)
|
|
255
441
|
log.debug(`Wait "${name}" started...`);
|
|
442
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
256
443
|
return new Promise((resolve, reject) => {
|
|
257
444
|
const timeoutId = setTimeout(() => {
|
|
258
445
|
if (debug)
|
|
@@ -262,14 +449,28 @@ export async function wait(timeout = 1000, name, debug = false) {
|
|
|
262
449
|
}, timeout);
|
|
263
450
|
});
|
|
264
451
|
}
|
|
452
|
+
/**
|
|
453
|
+
* Creates a ZIP archive from the specified source pattern or directory and writes it to the specified output path.
|
|
454
|
+
*
|
|
455
|
+
* @param {string} outputPath - The path where the output ZIP file will be written.
|
|
456
|
+
* @param {string[]} sourcePaths - The source pattern or directory to be zipped (use path.join for sourcePath).
|
|
457
|
+
* @returns {Promise<number>} - A promise that resolves to the total number of bytes written to the ZIP file.
|
|
458
|
+
*
|
|
459
|
+
* @remarks
|
|
460
|
+
* This function uses the `archiver` library to create a ZIP archive. It sets the compression level to 9 (maximum compression).
|
|
461
|
+
* The function ensures that the output file is properly closed after the archiving process is complete.
|
|
462
|
+
* It logs the progress and the total number of bytes written to the console.
|
|
463
|
+
*
|
|
464
|
+
* This function uses the `glob` library to match files based on the source pattern (internally converted in posix).
|
|
465
|
+
*/
|
|
265
466
|
export async function createZip(outputPath, ...sourcePaths) {
|
|
266
|
-
log.logLevel = "info"
|
|
467
|
+
log.logLevel = "info" /* LogLevel.INFO */;
|
|
267
468
|
log.logName = 'Archive';
|
|
268
469
|
log.debug(`creating archive ${outputPath} from ${sourcePaths.join(', ')} ...`);
|
|
269
470
|
return new Promise((resolve, reject) => {
|
|
270
471
|
const output = createWriteStream(outputPath);
|
|
271
472
|
const archive = archiver('zip', {
|
|
272
|
-
zlib: { level: 9 },
|
|
473
|
+
zlib: { level: 9 }, // Set compression level
|
|
273
474
|
});
|
|
274
475
|
output.on('close', () => {
|
|
275
476
|
log.debug(`archive ${outputPath} closed with ${archive.pointer()} total bytes`);
|
|
@@ -296,6 +497,7 @@ export async function createZip(outputPath, ...sourcePaths) {
|
|
|
296
497
|
});
|
|
297
498
|
archive.pipe(output);
|
|
298
499
|
for (const sourcePath of sourcePaths) {
|
|
500
|
+
// Check if the sourcePath is a file or directory
|
|
299
501
|
let stats;
|
|
300
502
|
try {
|
|
301
503
|
stats = statSync(sourcePath);
|
|
@@ -323,22 +525,35 @@ export async function createZip(outputPath, ...sourcePaths) {
|
|
|
323
525
|
archive.directory(sourcePath, path.basename(sourcePath));
|
|
324
526
|
}
|
|
325
527
|
}
|
|
528
|
+
// Finalize the archive (i.e., we are done appending files but streams have to finish yet)
|
|
326
529
|
log.debug(`finalizing archive ${outputPath}...`);
|
|
327
530
|
archive.finalize().catch(reject);
|
|
328
531
|
});
|
|
329
532
|
}
|
|
533
|
+
/**
|
|
534
|
+
* Copies a directory and all its subdirectories and files to a new location.
|
|
535
|
+
*
|
|
536
|
+
* @param {string} srcDir - The path to the source directory.
|
|
537
|
+
* @param {string} destDir - The path to the destination directory.
|
|
538
|
+
* @returns {Promise<boolean>} - A promise that resolves when the copy operation is complete or fails for error.
|
|
539
|
+
* @throws {Error} - Throws an error if the copy operation fails.
|
|
540
|
+
*/
|
|
330
541
|
export async function copyDirectory(srcDir, destDir) {
|
|
331
542
|
log.debug(`copyDirectory: copying directory from ${srcDir} to ${destDir}`);
|
|
332
543
|
try {
|
|
544
|
+
// Create destination directory if it doesn't exist
|
|
333
545
|
await fs.mkdir(destDir, { recursive: true });
|
|
546
|
+
// Read contents of the source directory
|
|
334
547
|
const entries = await fs.readdir(srcDir, { withFileTypes: true });
|
|
335
548
|
for (const entry of entries) {
|
|
336
549
|
const srcPath = path.join(srcDir, entry.name);
|
|
337
550
|
const destPath = path.join(destDir, entry.name);
|
|
338
551
|
if (entry.isDirectory()) {
|
|
552
|
+
// Recursive call if entry is a directory
|
|
339
553
|
await copyDirectory(srcPath, destPath);
|
|
340
554
|
}
|
|
341
555
|
else if (entry.isFile()) {
|
|
556
|
+
// Copy file if entry is a file
|
|
342
557
|
await fs.copyFile(srcPath, destPath);
|
|
343
558
|
}
|
|
344
559
|
}
|
|
@@ -349,15 +564,32 @@ export async function copyDirectory(srcDir, destDir) {
|
|
|
349
564
|
return false;
|
|
350
565
|
}
|
|
351
566
|
}
|
|
567
|
+
/**
|
|
568
|
+
* Resolves the given hostname to an IP address.
|
|
569
|
+
*
|
|
570
|
+
* @param {string} hostname - The hostname to resolve.
|
|
571
|
+
* @param {0 | 4 | 6} [family=4] - The address family to use (0 for any, 4 for IPv4, 6 for IPv6). Default is 4.
|
|
572
|
+
* @returns {Promise<string | null>} - A promise that resolves to the IP address or null if not found.
|
|
573
|
+
*
|
|
574
|
+
* @remarks
|
|
575
|
+
* This function uses DNS lookup to resolve the hostname, which can take some time to complete.
|
|
576
|
+
*/
|
|
352
577
|
export async function resolveHostname(hostname, family = 4) {
|
|
353
578
|
try {
|
|
354
579
|
const addresses = await dns.promises.lookup(hostname.toLowerCase() + '.local', { family });
|
|
355
580
|
return addresses.address;
|
|
581
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
356
582
|
}
|
|
357
583
|
catch (error) {
|
|
358
584
|
return null;
|
|
359
585
|
}
|
|
360
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* Retrieves the value of a command-line parameter.
|
|
589
|
+
*
|
|
590
|
+
* @param {string} name - The name of the parameter to retrieve.
|
|
591
|
+
* @returns {string | undefined} The value of the parameter, or undefined if not found.
|
|
592
|
+
*/
|
|
361
593
|
export function getParameter(name) {
|
|
362
594
|
const commandArguments = process.argv.slice(2);
|
|
363
595
|
let markerIndex = commandArguments.indexOf(`-${name}`);
|
|
@@ -367,6 +599,12 @@ export function getParameter(name) {
|
|
|
367
599
|
return undefined;
|
|
368
600
|
return commandArguments[markerIndex + 1];
|
|
369
601
|
}
|
|
602
|
+
/**
|
|
603
|
+
* Checks if a command-line parameter is present.
|
|
604
|
+
*
|
|
605
|
+
* @param {string} name - The name of the parameter to check.
|
|
606
|
+
* @returns {boolean} True if the parameter is present, otherwise false.
|
|
607
|
+
*/
|
|
370
608
|
export function hasParameter(name) {
|
|
371
609
|
const commandArguments = process.argv.slice(2);
|
|
372
610
|
let markerIncluded = commandArguments.includes(`-${name}`);
|
|
@@ -374,6 +612,12 @@ export function hasParameter(name) {
|
|
|
374
612
|
markerIncluded = commandArguments.includes(`--${name}`);
|
|
375
613
|
return markerIncluded;
|
|
376
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* Retrieves the value of a command-line parameter as an integer.
|
|
617
|
+
*
|
|
618
|
+
* @param {string} name - The name of the parameter to retrieve.
|
|
619
|
+
* @returns {number | undefined} The integer value of the parameter, or undefined if not found or invalid.
|
|
620
|
+
*/
|
|
377
621
|
export function getIntParameter(name) {
|
|
378
622
|
const value = getParameter(name);
|
|
379
623
|
if (value === undefined)
|
|
@@ -383,3 +627,4 @@ export function getIntParameter(name) {
|
|
|
383
627
|
return undefined;
|
|
384
628
|
return intValue;
|
|
385
629
|
}
|
|
630
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"main.css": "./static/css/main.
|
|
4
|
-
"main.js": "./static/js/main.
|
|
3
|
+
"main.css": "./static/css/main.cf25d33e.css",
|
|
4
|
+
"main.js": "./static/js/main.6bbd1772.js",
|
|
5
5
|
"static/js/453.abd36b29.chunk.js": "./static/js/453.abd36b29.chunk.js",
|
|
6
6
|
"static/media/roboto-latin-700-normal.woff2": "./static/media/roboto-latin-700-normal.4535474e1cf8598695ad.woff2",
|
|
7
7
|
"static/media/roboto-latin-500-normal.woff2": "./static/media/roboto-latin-500-normal.7077203b1982951ecf76.woff2",
|
|
@@ -60,12 +60,12 @@
|
|
|
60
60
|
"static/media/roboto-greek-ext-300-normal.woff": "./static/media/roboto-greek-ext-300-normal.b590dbe5c639944366d1.woff",
|
|
61
61
|
"static/media/roboto-greek-ext-400-normal.woff": "./static/media/roboto-greek-ext-400-normal.16eb83b4a3b1ea994243.woff",
|
|
62
62
|
"index.html": "./index.html",
|
|
63
|
-
"main.
|
|
64
|
-
"main.
|
|
63
|
+
"main.cf25d33e.css.map": "./static/css/main.cf25d33e.css.map",
|
|
64
|
+
"main.6bbd1772.js.map": "./static/js/main.6bbd1772.js.map",
|
|
65
65
|
"453.abd36b29.chunk.js.map": "./static/js/453.abd36b29.chunk.js.map"
|
|
66
66
|
},
|
|
67
67
|
"entrypoints": [
|
|
68
|
-
"static/css/main.
|
|
69
|
-
"static/js/main.
|
|
68
|
+
"static/css/main.cf25d33e.css",
|
|
69
|
+
"static/js/main.6bbd1772.js"
|
|
70
70
|
]
|
|
71
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><base href="./"><link rel="icon" href="./matterbridge 32x32.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Matterbridge</title><link rel="manifest" href="./manifest.json"/><script defer="defer" src="./static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><base href="./"><link rel="icon" href="./matterbridge 32x32.png"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Matterbridge</title><link rel="manifest" href="./manifest.json"/><script defer="defer" src="./static/js/main.6bbd1772.js"></script><link href="./static/css/main.cf25d33e.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|