@matterbridge/jest-utils 3.9.1-dev-20260614-18d1a2e → 3.9.1-dev-20260617-b1e1b99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/jestMatterTest.d.ts +1 -1
- package/dist/jestMatterTest.js +15 -19
- package/dist/jestSetupTest.js +13 -12
- package/dist/matterRequest.d.ts +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
[](https://hub.docker.com/r/luligu/matterbridge)
|
|
7
7
|

|
|
8
8
|

|
|
9
|
-
[](https://codecov.io/gh/Luligu/matterbridge)
|
|
10
|
+
[](https://vitest.dev)
|
|
11
|
+
[](https://oxc.rs/docs/guide/usage/formatter.html)
|
|
12
|
+
[](https://oxc.rs/docs/guide/usage/linter.html)
|
|
12
13
|
[](https://www.typescriptlang.org/)
|
|
14
|
+
[](https://github.com/microsoft/typescript-go)
|
|
13
15
|
[](https://nodejs.org/)
|
|
14
16
|
[](https://matterbridge.io)
|
|
15
17
|
|
package/dist/jestMatterTest.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare function destroyTestEnvironment(): Promise<void>;
|
|
|
12
12
|
export declare function getMatterbridge(): PlatformMatterbridge;
|
|
13
13
|
export declare const addBridgedEndpoint: (pluginName: string, device: Endpoint) => Promise<boolean>;
|
|
14
14
|
export declare const removeBridgedEndpoint: (pluginName: string, device: Endpoint) => Promise<boolean>;
|
|
15
|
-
export declare const removeAllBridgedEndpoints: (
|
|
15
|
+
export declare const removeAllBridgedEndpoints: (_pluginName: string, _delay?: number) => Promise<boolean>;
|
|
16
16
|
export declare const addVirtualEndpoint: (pluginName: string, name: string, type: "light" | "outlet" | "switch" | "mounted_switch", callback: () => Promise<void>) => Promise<boolean>;
|
|
17
17
|
export declare function addMatterbridge(platform: object): void;
|
|
18
18
|
export declare function flushAllEndpointNumberPersistence(targetServer: ServerNode, rounds?: number, ticks?: number, microTurns?: number, pause?: number): Promise<void>;
|
package/dist/jestMatterTest.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import '@matter/nodejs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { inspect } from 'node:util';
|
|
4
3
|
import { Environment, Lifecycle, LogFormat as MatterLogFormat, LogLevel as MatterLogLevel } from '@matter/general';
|
|
5
4
|
import { Endpoint, ServerNode, ServerNodeStore } from '@matter/node';
|
|
6
5
|
import { BridgedDeviceBasicInformationServer } from '@matter/node/behaviors/bridged-device-basic-information';
|
|
@@ -10,12 +9,14 @@ import { MountedOnOffControlDevice } from '@matter/node/devices/mounted-on-off-c
|
|
|
10
9
|
import { AggregatorEndpoint } from '@matter/node/endpoints';
|
|
11
10
|
import { DeviceTypeId, VendorId } from '@matter/types/datatype';
|
|
12
11
|
import { MATTER_STORAGE_DIR } from '@matterbridge/types';
|
|
12
|
+
import { inspectError } from '@matterbridge/utils/error';
|
|
13
13
|
import { er, rs } from 'node-ansi-logger';
|
|
14
14
|
import { flushAsync } from './flushAsync.js';
|
|
15
|
-
import { HOMEDIR, NAME } from './jestSetupTest.js';
|
|
15
|
+
import { HOMEDIR, log, NAME } from './jestSetupTest.js';
|
|
16
16
|
export let environment;
|
|
17
17
|
export let server;
|
|
18
18
|
export let aggregator;
|
|
19
|
+
const noop = () => undefined;
|
|
19
20
|
export async function createTestEnvironment() {
|
|
20
21
|
expect(NAME).toBeDefined();
|
|
21
22
|
expect(typeof NAME).toBe('string');
|
|
@@ -93,7 +94,7 @@ export const removeBridgedEndpoint = async (pluginName, device) => {
|
|
|
93
94
|
return Promise.reject(error);
|
|
94
95
|
}
|
|
95
96
|
};
|
|
96
|
-
export const removeAllBridgedEndpoints = async (
|
|
97
|
+
export const removeAllBridgedEndpoints = async (_pluginName, _delay = 0) => {
|
|
97
98
|
try {
|
|
98
99
|
for (const device of aggregator.parts) {
|
|
99
100
|
await device.delete();
|
|
@@ -120,8 +121,8 @@ export const addVirtualEndpoint = async (pluginName, name, type, callback) => {
|
|
|
120
121
|
});
|
|
121
122
|
device.events.onOff.onOff$Changed.on((value) => {
|
|
122
123
|
if (value) {
|
|
123
|
-
void callback().catch(
|
|
124
|
-
void device.setStateOf(OnOffServer, { onOff: false }).catch(
|
|
124
|
+
void callback().catch(noop);
|
|
125
|
+
void device.setStateOf(OnOffServer, { onOff: false }).catch(noop);
|
|
125
126
|
}
|
|
126
127
|
});
|
|
127
128
|
await aggregator.add(device);
|
|
@@ -158,10 +159,8 @@ function collectAllEndpoints(root) {
|
|
|
158
159
|
const list = [];
|
|
159
160
|
const walk = (ep) => {
|
|
160
161
|
list.push(ep);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
walk(child);
|
|
164
|
-
}
|
|
162
|
+
for (const child of ep.parts) {
|
|
163
|
+
walk(child);
|
|
165
164
|
}
|
|
166
165
|
};
|
|
167
166
|
walk(root);
|
|
@@ -183,9 +182,8 @@ export async function assertAllEndpointNumbersPersisted(targetServer) {
|
|
|
183
182
|
return all.length;
|
|
184
183
|
}
|
|
185
184
|
export async function closeServerNodeStores(targetServer) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
await targetServer?.env.get(ServerNodeStore)?.endpointStores.close();
|
|
185
|
+
const resolvedTargetServer = targetServer ?? server;
|
|
186
|
+
await resolvedTargetServer?.env.get(ServerNodeStore)?.endpointStores.close();
|
|
189
187
|
}
|
|
190
188
|
export async function createServerNode(port, deviceType = DeviceTypeId(0x000e), ticks = 1, microTurns = 1, pause = 10) {
|
|
191
189
|
const { randomBytes } = await import('node:crypto');
|
|
@@ -242,7 +240,7 @@ export async function startServerNode(ticks = 1, microTurns = 1, pause = 10) {
|
|
|
242
240
|
throw new Error('Server node and aggregator must be created before starting the server. Call createServerNode() first.');
|
|
243
241
|
}
|
|
244
242
|
await new Promise((resolve, reject) => {
|
|
245
|
-
server.lifecycle.online.on(
|
|
243
|
+
server.lifecycle.online.on(() => {
|
|
246
244
|
resolve();
|
|
247
245
|
});
|
|
248
246
|
server.start().catch((err) => reject(err));
|
|
@@ -295,9 +293,8 @@ export async function addDevice(owner, device, rounds = 3, pause = 10) {
|
|
|
295
293
|
await owner.add(device);
|
|
296
294
|
}
|
|
297
295
|
catch (error) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
process.stderr.write(`${er}Error adding device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}${rs}\nStack: ${errorInspect}\n`);
|
|
296
|
+
inspectError(log, `Error adding device ${device.maybeId}.${device.maybeNumber}`, error);
|
|
297
|
+
process.stderr.write(`${er}Error adding device ${device.maybeId}.${device.maybeNumber}${rs}\n`);
|
|
301
298
|
return false;
|
|
302
299
|
}
|
|
303
300
|
await device.construction.ready;
|
|
@@ -323,9 +320,8 @@ export async function deleteDevice(owner, device, rounds = 3, pause = 10) {
|
|
|
323
320
|
await device.delete();
|
|
324
321
|
}
|
|
325
322
|
catch (error) {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
process.stderr.write(`${er}Error deleting device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}${rs}\nStack: ${errorInspect}\n`);
|
|
323
|
+
inspectError(log, `Error deleting device ${device.maybeId}.${device.maybeNumber}`, error);
|
|
324
|
+
process.stderr.write(`${er}Error deleting device ${device.maybeId}.${device.maybeNumber}${rs}\n`);
|
|
329
325
|
return false;
|
|
330
326
|
}
|
|
331
327
|
expect(owner.parts.has(device)).toBeFalsy();
|
package/dist/jestSetupTest.js
CHANGED
|
@@ -18,6 +18,7 @@ export let consoleErrorSpy;
|
|
|
18
18
|
export let NAME;
|
|
19
19
|
export let HOMEDIR;
|
|
20
20
|
export let log;
|
|
21
|
+
const noop = () => undefined;
|
|
21
22
|
export async function setupTest(name, debug = false, argv = [], env = {}) {
|
|
22
23
|
expect(name).toBeDefined();
|
|
23
24
|
expect(typeof name).toBe('string');
|
|
@@ -47,12 +48,12 @@ export async function setupTest(name, debug = false, argv = [], env = {}) {
|
|
|
47
48
|
consoleErrorSpy = jest.spyOn(console, 'error');
|
|
48
49
|
}
|
|
49
50
|
else {
|
|
50
|
-
loggerLogSpy = jest.spyOn(AnsiLogger.prototype, 'log').mockImplementation(
|
|
51
|
-
consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(
|
|
52
|
-
consoleDebugSpy = jest.spyOn(console, 'debug').mockImplementation(
|
|
53
|
-
consoleInfoSpy = jest.spyOn(console, 'info').mockImplementation(
|
|
54
|
-
consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(
|
|
55
|
-
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(
|
|
51
|
+
loggerLogSpy = jest.spyOn(AnsiLogger.prototype, 'log').mockImplementation(noop);
|
|
52
|
+
consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(noop);
|
|
53
|
+
consoleDebugSpy = jest.spyOn(console, 'debug').mockImplementation(noop);
|
|
54
|
+
consoleInfoSpy = jest.spyOn(console, 'info').mockImplementation(noop);
|
|
55
|
+
consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(noop);
|
|
56
|
+
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(noop);
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
export async function setDebug(debug) {
|
|
@@ -72,11 +73,11 @@ export async function setDebug(debug) {
|
|
|
72
73
|
consoleErrorSpy = jest.spyOn(console, 'error');
|
|
73
74
|
}
|
|
74
75
|
else {
|
|
75
|
-
loggerLogSpy = jest.spyOn(AnsiLogger.prototype, 'log').mockImplementation(
|
|
76
|
-
consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(
|
|
77
|
-
consoleDebugSpy = jest.spyOn(console, 'debug').mockImplementation(
|
|
78
|
-
consoleInfoSpy = jest.spyOn(console, 'info').mockImplementation(
|
|
79
|
-
consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(
|
|
80
|
-
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(
|
|
76
|
+
loggerLogSpy = jest.spyOn(AnsiLogger.prototype, 'log').mockImplementation(noop);
|
|
77
|
+
consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(noop);
|
|
78
|
+
consoleDebugSpy = jest.spyOn(console, 'debug').mockImplementation(noop);
|
|
79
|
+
consoleInfoSpy = jest.spyOn(console, 'info').mockImplementation(noop);
|
|
80
|
+
consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(noop);
|
|
81
|
+
consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(noop);
|
|
81
82
|
}
|
|
82
83
|
}
|
package/dist/matterRequest.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ColorControl } from '@matter/types/clusters/color-control';
|
|
2
|
-
import {
|
|
2
|
+
import type { LevelControl } from '@matter/types/clusters/level-control';
|
|
3
3
|
export declare function getMoveToLevelRequest(level: number, transitionTime: number, executeIfOff: boolean): LevelControl.MoveToLevelRequest;
|
|
4
4
|
export declare function getMoveToColorTemperatureRequest(colorTemperatureMireds: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToColorTemperatureRequest;
|
|
5
5
|
export declare function getMoveToHueRequest(hue: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToHueRequest;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matterbridge/jest-utils",
|
|
3
|
-
"version": "3.9.1-dev-
|
|
3
|
+
"version": "3.9.1-dev-20260617-b1e1b99",
|
|
4
4
|
"description": "Matterbridge jest utility library",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"homepage": "https://matterbridge.io/",
|
|
@@ -65,7 +65,9 @@
|
|
|
65
65
|
"CHANGELOG.md"
|
|
66
66
|
],
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@
|
|
68
|
+
"@matter/main": "0.17.3",
|
|
69
|
+
"@matterbridge/types": "3.9.1-dev-20260617-b1e1b99",
|
|
70
|
+
"@matterbridge/utils": "3.9.1-dev-20260617-b1e1b99",
|
|
69
71
|
"node-ansi-logger": "3.3.0-dev-20260607-585945a"
|
|
70
72
|
}
|
|
71
73
|
}
|