matterbridge 1.6.8-dev.9 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/README-DOCKER.md +8 -6
  3. package/README-EDGE.md +76 -0
  4. package/README-SERVICE.md +3 -3
  5. package/README.md +6 -3
  6. package/dist/cli.d.ts +25 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +26 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/cluster/export.d.ts +2 -0
  11. package/dist/cluster/export.d.ts.map +1 -0
  12. package/dist/cluster/export.js +2 -0
  13. package/dist/cluster/export.js.map +1 -0
  14. package/dist/defaultConfigSchema.d.ts +27 -0
  15. package/dist/defaultConfigSchema.d.ts.map +1 -0
  16. package/dist/defaultConfigSchema.js +23 -0
  17. package/dist/defaultConfigSchema.js.map +1 -0
  18. package/dist/deviceManager.d.ts +46 -0
  19. package/dist/deviceManager.d.ts.map +1 -0
  20. package/dist/deviceManager.js +26 -1
  21. package/dist/deviceManager.js.map +1 -0
  22. package/dist/index.d.ts +40 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +30 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/logger/export.d.ts +2 -0
  27. package/dist/logger/export.d.ts.map +1 -0
  28. package/dist/logger/export.js +1 -0
  29. package/dist/logger/export.js.map +1 -0
  30. package/dist/matter/export.d.ts +11 -0
  31. package/dist/matter/export.d.ts.map +1 -0
  32. package/dist/matter/export.js +4 -0
  33. package/dist/matter/export.js.map +1 -0
  34. package/dist/matterbridge.d.ts +483 -0
  35. package/dist/matterbridge.d.ts.map +1 -0
  36. package/dist/matterbridge.js +818 -110
  37. package/dist/matterbridge.js.map +1 -0
  38. package/dist/matterbridgeAccessoryPlatform.d.ts +39 -0
  39. package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
  40. package/dist/matterbridgeAccessoryPlatform.js +33 -0
  41. package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
  42. package/dist/matterbridgeBehaviors.d.ts +942 -0
  43. package/dist/matterbridgeBehaviors.d.ts.map +1 -0
  44. package/dist/matterbridgeBehaviors.js +29 -1
  45. package/dist/matterbridgeBehaviors.js.map +1 -0
  46. package/dist/matterbridgeDevice.d.ts +7077 -0
  47. package/dist/matterbridgeDevice.d.ts.map +1 -0
  48. package/dist/matterbridgeDevice.js +996 -9
  49. package/dist/matterbridgeDevice.js.map +1 -0
  50. package/dist/matterbridgeDeviceTypes.d.ts +109 -0
  51. package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
  52. package/dist/matterbridgeDeviceTypes.js +82 -11
  53. package/dist/matterbridgeDeviceTypes.js.map +1 -0
  54. package/dist/matterbridgeDynamicPlatform.d.ts +39 -0
  55. package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
  56. package/dist/matterbridgeDynamicPlatform.js +33 -0
  57. package/dist/matterbridgeDynamicPlatform.js.map +1 -0
  58. package/dist/matterbridgeEdge.d.ts +91 -0
  59. package/dist/matterbridgeEdge.d.ts.map +1 -0
  60. package/dist/matterbridgeEdge.js +558 -11
  61. package/dist/matterbridgeEdge.js.map +1 -0
  62. package/dist/matterbridgeEndpoint.d.ts +10151 -0
  63. package/dist/matterbridgeEndpoint.d.ts.map +1 -0
  64. package/dist/matterbridgeEndpoint.js +1120 -11
  65. package/dist/matterbridgeEndpoint.js.map +1 -0
  66. package/dist/matterbridgePlatform.d.ts +140 -0
  67. package/dist/matterbridgePlatform.d.ts.map +1 -0
  68. package/dist/matterbridgePlatform.js +126 -4
  69. package/dist/matterbridgePlatform.js.map +1 -0
  70. package/dist/matterbridgeTypes.d.ts +169 -0
  71. package/dist/matterbridgeTypes.d.ts.map +1 -0
  72. package/dist/matterbridgeTypes.js +24 -0
  73. package/dist/matterbridgeTypes.js.map +1 -0
  74. package/dist/matterbridgeWebsocket.d.ts +49 -0
  75. package/dist/matterbridgeWebsocket.d.ts.map +1 -0
  76. package/dist/matterbridgeWebsocket.js +139 -17
  77. package/dist/matterbridgeWebsocket.js.map +1 -0
  78. package/dist/pluginManager.d.ts +238 -0
  79. package/dist/pluginManager.d.ts.map +1 -0
  80. package/dist/pluginManager.js +238 -3
  81. package/dist/pluginManager.js.map +1 -0
  82. package/dist/storage/export.d.ts +2 -0
  83. package/dist/storage/export.d.ts.map +1 -0
  84. package/dist/storage/export.js +1 -0
  85. package/dist/storage/export.js.map +1 -0
  86. package/dist/utils/colorUtils.d.ts +61 -0
  87. package/dist/utils/colorUtils.d.ts.map +1 -0
  88. package/dist/utils/colorUtils.js +205 -2
  89. package/dist/utils/colorUtils.js.map +1 -0
  90. package/dist/utils/export.d.ts +3 -0
  91. package/dist/utils/export.d.ts.map +1 -0
  92. package/dist/utils/export.js +1 -0
  93. package/dist/utils/export.js.map +1 -0
  94. package/dist/utils/utils.d.ts +221 -0
  95. package/dist/utils/utils.d.ts.map +1 -0
  96. package/dist/utils/utils.js +252 -7
  97. package/dist/utils/utils.js.map +1 -0
  98. package/frontend/build/asset-manifest.json +6 -6
  99. package/frontend/build/index.html +1 -1
  100. package/frontend/build/static/css/{main.823e08b6.css → main.f1fce054.css} +2 -2
  101. package/frontend/build/static/css/main.f1fce054.css.map +1 -0
  102. package/frontend/build/static/js/{main.4dd7e165.js → main.5caad8c7.js} +15 -15
  103. package/frontend/build/static/js/main.5caad8c7.js.map +1 -0
  104. package/npm-shrinkwrap.json +30 -17
  105. package/package.json +2 -1
  106. package/frontend/build/static/css/main.823e08b6.css.map +0 -1
  107. package/frontend/build/static/js/main.4dd7e165.js.map +0 -1
  108. /package/frontend/build/static/js/{main.4dd7e165.js.LICENSE.txt → main.5caad8c7.js.LICENSE.txt} +0 -0
@@ -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, logLevel: "info" });
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.823e08b6.css",
4
- "main.js": "./static/js/main.4dd7e165.js",
3
+ "main.css": "./static/css/main.f1fce054.css",
4
+ "main.js": "./static/js/main.5caad8c7.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.823e08b6.css.map": "./static/css/main.823e08b6.css.map",
64
- "main.4dd7e165.js.map": "./static/js/main.4dd7e165.js.map",
63
+ "main.f1fce054.css.map": "./static/css/main.f1fce054.css.map",
64
+ "main.5caad8c7.js.map": "./static/js/main.5caad8c7.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.823e08b6.css",
69
- "static/js/main.4dd7e165.js"
68
+ "static/css/main.f1fce054.css",
69
+ "static/js/main.5caad8c7.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.4dd7e165.js"></script><link href="./static/css/main.823e08b6.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
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.5caad8c7.js"></script><link href="./static/css/main.f1fce054.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>