@matterbridge/core 3.9.0 → 3.9.1-dev-20260614-18d1a2e

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 (74) hide show
  1. package/dist/backend.js +2 -2
  2. package/dist/backendExpress.d.ts +1 -1
  3. package/dist/backendWsServer.d.ts +1 -1
  4. package/dist/behaviors/activatedCarbonFilterMonitoringServer.d.ts +1 -1
  5. package/dist/behaviors/bindingServer.d.ts +3 -3
  6. package/dist/behaviors/hepaFilterMonitoringServer.d.ts +1 -1
  7. package/dist/behaviors/identifyServer.d.ts +1 -1
  8. package/dist/behaviors/levelControlServer.d.ts +1 -1
  9. package/dist/behaviors/matterbridgeServer.d.ts +2 -2
  10. package/dist/behaviors/modeSelectServer.d.ts +1 -1
  11. package/dist/behaviors/operationalStateServer.d.ts +1 -1
  12. package/dist/behaviors/serviceAreaServer.d.ts +1 -1
  13. package/dist/behaviors/windowCoveringServer.d.ts +1 -1
  14. package/dist/cli.js +6 -6
  15. package/dist/clusters/closure-control.d.ts +3 -3
  16. package/dist/clusters/closure-dimension.d.ts +3 -3
  17. package/dist/clusters/soil-measurement.d.ts +2 -2
  18. package/dist/devices/basicVideoPlayer.js +3 -3
  19. package/dist/devices/cooktop.d.ts +1 -1
  20. package/dist/devices/dishwasher.d.ts +1 -1
  21. package/dist/devices/dishwasher.js +1 -1
  22. package/dist/devices/evse.d.ts +1 -1
  23. package/dist/devices/irrigationSystem.d.ts +1 -1
  24. package/dist/devices/laundryDryer.d.ts +1 -1
  25. package/dist/devices/laundryWasher.d.ts +1 -1
  26. package/dist/devices/laundryWasher.js +1 -1
  27. package/dist/devices/oven.d.ts +2 -2
  28. package/dist/devices/refrigerator.d.ts +2 -2
  29. package/dist/devices/roboticVacuumCleaner.d.ts +1 -1
  30. package/dist/devices/roboticVacuumCleaner.js +1 -1
  31. package/dist/devices/soilSensor.d.ts +1 -1
  32. package/dist/devices/solarPower.d.ts +1 -1
  33. package/dist/devices/temperatureControl.d.ts +1 -1
  34. package/dist/frontend.d.ts +1 -1
  35. package/dist/frontend.js +16 -17
  36. package/dist/helpers.d.ts +1 -1
  37. package/dist/helpers.js +0 -10
  38. package/dist/jestutils/jestBroadcastServerSpy.d.ts +13 -12
  39. package/dist/jestutils/jestBroadcastServerSpy.js +1 -1
  40. package/dist/jestutils/jestDeviceManagerSpy.d.ts +14 -13
  41. package/dist/jestutils/jestDeviceManagerSpy.js +1 -1
  42. package/dist/jestutils/jestFrontendSpy.d.ts +7 -9
  43. package/dist/jestutils/jestFrontendSpy.js +1 -1
  44. package/dist/jestutils/jestMatterTest.d.ts +5 -5
  45. package/dist/jestutils/jestMatterTest.js +4 -4
  46. package/dist/jestutils/jestMatterbridgeEndpointSpy.d.ts +6 -54
  47. package/dist/jestutils/jestMatterbridgeEndpointSpy.js +1 -1
  48. package/dist/jestutils/jestMatterbridgePlatformSpy.d.ts +43 -60
  49. package/dist/jestutils/jestMatterbridgePlatformSpy.js +1 -1
  50. package/dist/jestutils/jestMatterbridgeSpy.d.ts +5 -4
  51. package/dist/jestutils/jestMatterbridgeSpy.js +1 -1
  52. package/dist/jestutils/jestMatterbridgeTest.d.ts +3 -3
  53. package/dist/jestutils/jestMatterbridgeTest.js +1 -1
  54. package/dist/jestutils/jestPluginManagerSpy.d.ts +40 -47
  55. package/dist/jestutils/jestPluginManagerSpy.js +1 -1
  56. package/dist/jestutils/jestSetupTest.d.ts +0 -1
  57. package/dist/jestutils/logKeepAlives.d.ts +1 -1
  58. package/dist/jestutils/matterRequest.d.ts +1 -1
  59. package/dist/matterbridge.d.ts +6 -6
  60. package/dist/matterbridge.js +20 -21
  61. package/dist/matterbridgeAccessoryPlatform.d.ts +1 -1
  62. package/dist/matterbridgeDeviceTypes.d.ts +1 -1
  63. package/dist/matterbridgeDynamicPlatform.d.ts +1 -1
  64. package/dist/matterbridgeEndpoint.d.ts +10 -10
  65. package/dist/matterbridgeEndpoint.js +4 -4
  66. package/dist/matterbridgeEndpointCommandHandler.d.ts +39 -39
  67. package/dist/matterbridgeEndpointHelpers.d.ts +7 -7
  68. package/dist/matterbridgeEndpointHelpers.js +2 -3
  69. package/dist/matterbridgeEndpointTypes.d.ts +2 -2
  70. package/dist/matterbridgeFactory.d.ts +2 -2
  71. package/dist/matterbridgePlatform.d.ts +4 -4
  72. package/dist/pluginManager.d.ts +1 -1
  73. package/dist/pluginManager.js +3 -3
  74. package/package.json +5 -5
package/dist/backend.js CHANGED
@@ -110,7 +110,7 @@ export class Backend extends EventEmitter {
110
110
  socket.destroy();
111
111
  }
112
112
  }
113
- return undefined;
113
+ return;
114
114
  });
115
115
  this.httpServer.on('error', (error) => {
116
116
  this.log.error(`Frontend http server error listening on ${this.port}`);
@@ -239,7 +239,7 @@ export class Backend extends EventEmitter {
239
239
  socket.destroy();
240
240
  }
241
241
  }
242
- return undefined;
242
+ return;
243
243
  });
244
244
  this.httpsServer.on('error', (error) => {
245
245
  this.log.error(`Frontend https server error listening on ${this.port}`);
@@ -1,6 +1,6 @@
1
1
  import { type SharedMatterbridge } from '@matterbridge/types';
2
2
  import express from 'express';
3
- import { Backend } from './backend.js';
3
+ import { type Backend } from './backend.js';
4
4
  export declare class BackendExpress {
5
5
  private debug;
6
6
  private verbose;
@@ -1,7 +1,7 @@
1
1
  import type { EndpointNumber } from '@matter/types/datatype';
2
2
  import type { ApiMatter, RefreshRequiredChanged, SharedMatterbridge, WsMessageBroadcast } from '@matterbridge/types';
3
3
  import { WebSocketServer } from 'ws';
4
- import { Backend } from './backend.js';
4
+ import { type Backend } from './backend.js';
5
5
  export declare class BackendWsServer {
6
6
  private debug;
7
7
  private verbose;
@@ -1,5 +1,5 @@
1
1
  import { ActivatedCarbonFilterMonitoringServer } from '@matter/node/behaviors/activated-carbon-filter-monitoring';
2
- import { ActivatedCarbonFilterMonitoring } from '@matter/types/clusters/activated-carbon-filter-monitoring';
2
+ import { type ActivatedCarbonFilterMonitoring } from '@matter/types/clusters/activated-carbon-filter-monitoring';
3
3
  declare const MatterbridgeActivatedCarbonFilterMonitoringServer_base: import("@matter/node").ClusterBehavior.Type<typeof ActivatedCarbonFilterMonitoringServer, import("@matter/types").ClusterType.WithSupportedFeatures<ActivatedCarbonFilterMonitoring, {
4
4
  warning: false;
5
5
  condition: true;
@@ -1,7 +1,7 @@
1
- import { Endpoint } from '@matter/main/node';
1
+ import { type Endpoint } from '@matter/main/node';
2
2
  import { BindingBehavior, BindingServer } from '@matter/node/behaviors/binding';
3
- import { ClusterId } from '@matter/types';
4
- import { Binding } from '@matter/types/clusters/binding';
3
+ import { type ClusterId } from '@matter/types';
4
+ import { type Binding } from '@matter/types/clusters/binding';
5
5
  export declare class MatterbridgeBindingServer extends BindingServer {
6
6
  protected internal: MatterbridgeBindingServer.Internal;
7
7
  state: MatterbridgeBindingServer.State;
@@ -1,5 +1,5 @@
1
1
  import { HepaFilterMonitoringServer } from '@matter/node/behaviors/hepa-filter-monitoring';
2
- import { HepaFilterMonitoring } from '@matter/types/clusters/hepa-filter-monitoring';
2
+ import { type HepaFilterMonitoring } from '@matter/types/clusters/hepa-filter-monitoring';
3
3
  declare const MatterbridgeHepaFilterMonitoringServer_base: import("@matter/node").ClusterBehavior.Type<typeof HepaFilterMonitoringServer, import("@matter/types").ClusterType.WithSupportedFeatures<HepaFilterMonitoring, {
4
4
  warning: false;
5
5
  condition: true;
@@ -1,5 +1,5 @@
1
1
  import { IdentifyServer } from '@matter/node/behaviors/identify';
2
- import { Identify } from '@matter/types/clusters/identify';
2
+ import { type Identify } from '@matter/types/clusters/identify';
3
3
  export declare class MatterbridgeIdentifyServer extends IdentifyServer {
4
4
  identify(request: Identify.IdentifyRequest): Promise<void>;
5
5
  triggerEffect(request: Identify.TriggerEffectRequest): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { LevelControlServer } from '@matter/node/behaviors/level-control';
2
- import { LevelControl } from '@matter/types/clusters/level-control';
2
+ import { type LevelControl } from '@matter/types/clusters/level-control';
3
3
  export declare class MatterbridgeLevelControlServer extends LevelControlServer {
4
4
  moveToLevel(request: LevelControl.MoveToLevelRequest): Promise<void>;
5
5
  moveToLevelWithOnOff(request: LevelControl.MoveToLevelRequest): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  import { Behavior } from '@matter/node';
2
- import { AnsiLogger } from 'node-ansi-logger';
3
- import { CommandHandler } from '../matterbridgeEndpointCommandHandler.js';
2
+ import { type AnsiLogger } from 'node-ansi-logger';
3
+ import { type CommandHandler } from '../matterbridgeEndpointCommandHandler.js';
4
4
  export declare class MatterbridgeServer extends Behavior {
5
5
  static readonly id = "matterbridge";
6
6
  state: MatterbridgeServer.State;
@@ -1,5 +1,5 @@
1
1
  import { ModeSelectServer } from '@matter/node/behaviors/mode-select';
2
- import { ModeSelect } from '@matter/types/clusters/mode-select';
2
+ import { type ModeSelect } from '@matter/types/clusters/mode-select';
3
3
  export declare class MatterbridgeModeSelectServer extends ModeSelectServer {
4
4
  changeToMode(request: ModeSelect.ChangeToModeRequest): Promise<void>;
5
5
  }
@@ -1,4 +1,4 @@
1
- import { MaybePromise } from '@matter/general';
1
+ import { type MaybePromise } from '@matter/general';
2
2
  import { OperationalStateServer } from '@matter/node/behaviors/operational-state';
3
3
  import { OperationalState } from '@matter/types/clusters/operational-state';
4
4
  export declare class MatterbridgeOperationalStateServer extends OperationalStateServer {
@@ -1,5 +1,5 @@
1
1
  import { ServiceAreaServer } from '@matter/node/behaviors/service-area';
2
- import { ServiceArea } from '@matter/types/clusters/service-area';
2
+ import { type ServiceArea } from '@matter/types/clusters/service-area';
3
3
  export declare class MatterbridgeServiceAreaServer extends ServiceAreaServer {
4
4
  selectAreas(request: ServiceArea.SelectAreasRequest): Promise<ServiceArea.SelectAreasResponse>;
5
5
  }
@@ -1,4 +1,4 @@
1
- import { WindowCoveringBaseServer, WindowCoveringServer } from '@matter/node/behaviors/window-covering';
1
+ import { type WindowCoveringBaseServer, WindowCoveringServer } from '@matter/node/behaviors/window-covering';
2
2
  import { WindowCovering } from '@matter/types/clusters/window-covering';
3
3
  declare const MatterbridgeWindowCoveringServer_base: import("@matter/node").ClusterBehavior.Type<typeof WindowCoveringServer, import("@matter/types").ClusterType.WithSupportedFeatures<WindowCovering, {
4
4
  lift: true;
package/dist/cli.js CHANGED
@@ -50,14 +50,14 @@ function registerHandlers() {
50
50
  log.debug('Registering event handlers...');
51
51
  if (!instance)
52
52
  return;
53
- instance.on('shutdown', () => shutdown());
54
- instance.on('restart', () => restart());
55
- instance.on('update', () => update());
53
+ instance.on('shutdown', async () => shutdown());
54
+ instance.on('restart', async () => restart());
55
+ instance.on('update', async () => update());
56
56
  instance.on('startmemorycheck', () => start());
57
57
  instance.on('stopmemorycheck', () => stop());
58
- instance.on('startinspector', () => startInspector());
59
- instance.on('stopinspector', () => stopInspector());
60
- instance.on('takeheapsnapshot', () => takeHeapSnapshot());
58
+ instance.on('startinspector', async () => startInspector());
59
+ instance.on('stopinspector', async () => stopInspector());
60
+ instance.on('takeheapsnapshot', async () => takeHeapSnapshot());
61
61
  instance.on('triggergarbagecollection', () => triggerGarbageCollection());
62
62
  log.debug('Registered event handlers');
63
63
  }
@@ -1,8 +1,8 @@
1
- import { type MaybePromise } from '@matter/general';
1
+ import type { MaybePromise } from '@matter/general';
2
2
  import { ClusterElement, ClusterModel } from '@matter/main/model';
3
3
  import { ClusterType, type ClusterTyping } from '@matter/types/cluster';
4
- import { type ClusterId } from '@matter/types/datatype';
5
- import { type ThreeLevelAuto } from '@matter/types/globals';
4
+ import type { ClusterId } from '@matter/types/datatype';
5
+ import type { ThreeLevelAuto } from '@matter/types/globals';
6
6
  export declare const ClosureControlDefinition: ClusterElement;
7
7
  export declare const ClosureControlModel: ClusterModel;
8
8
  export declare namespace ClosureControl {
@@ -1,8 +1,8 @@
1
- import { type MaybePromise } from '@matter/general';
1
+ import type { MaybePromise } from '@matter/general';
2
2
  import { ClusterElement, ClusterModel } from '@matter/main/model';
3
3
  import { ClusterType, type ClusterTyping } from '@matter/types/cluster';
4
- import { type ClusterId } from '@matter/types/datatype';
5
- import { type ThreeLevelAuto } from '@matter/types/globals';
4
+ import type { ClusterId } from '@matter/types/datatype';
5
+ import type { ThreeLevelAuto } from '@matter/types/globals';
6
6
  export declare const ClosureDimensionDefinition: ClusterElement;
7
7
  export declare const ClosureDimensionModel: ClusterModel;
8
8
  export declare namespace ClosureDimension {
@@ -1,7 +1,7 @@
1
1
  import { ClusterElement, ClusterModel } from '@matter/main/model';
2
2
  import { ClusterType, type ClusterTyping } from '@matter/types/cluster';
3
- import { type ClusterId } from '@matter/types/datatype';
4
- import { type MeasurementAccuracy } from '@matter/types/globals';
3
+ import type { ClusterId } from '@matter/types/datatype';
4
+ import type { MeasurementAccuracy } from '@matter/types/globals';
5
5
  export declare const SoilMeasurementDefinition: ClusterElement;
6
6
  export declare const SoilMeasurementModel: ClusterModel;
7
7
  export declare namespace SoilMeasurement {
@@ -48,7 +48,7 @@ export class MatterbridgeMediaPlaybackServer extends MediaPlaybackServer {
48
48
  attributes: this.state,
49
49
  endpoint: this.endpoint,
50
50
  });
51
- if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff === true)
51
+ if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff)
52
52
  this.state.currentState = MediaPlayback.PlaybackState.Playing;
53
53
  return { status: MediaPlayback.Status.Success };
54
54
  }
@@ -62,7 +62,7 @@ export class MatterbridgeMediaPlaybackServer extends MediaPlaybackServer {
62
62
  attributes: this.state,
63
63
  endpoint: this.endpoint,
64
64
  });
65
- if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff === true)
65
+ if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff)
66
66
  this.state.currentState = MediaPlayback.PlaybackState.Paused;
67
67
  return { status: MediaPlayback.Status.Success };
68
68
  }
@@ -76,7 +76,7 @@ export class MatterbridgeMediaPlaybackServer extends MediaPlaybackServer {
76
76
  attributes: this.state,
77
77
  endpoint: this.endpoint,
78
78
  });
79
- if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff === true)
79
+ if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff)
80
80
  this.state.currentState = MediaPlayback.PlaybackState.NotPlaying;
81
81
  return { status: MediaPlayback.Status.Success };
82
82
  }
@@ -1,4 +1,4 @@
1
- import { Semtag } from '@matter/types';
1
+ import { type Semtag } from '@matter/types';
2
2
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
3
3
  export declare class Cooktop extends MatterbridgeEndpoint {
4
4
  constructor(name: string, serial: string);
@@ -1,7 +1,7 @@
1
1
  import { DishwasherModeServer } from '@matter/node/behaviors/dishwasher-mode';
2
2
  import { DishwasherMode } from '@matter/types/clusters/dishwasher-mode';
3
3
  import { ModeBase } from '@matter/types/clusters/mode-base';
4
- import { OperationalState } from '@matter/types/clusters/operational-state';
4
+ import { type OperationalState } from '@matter/types/clusters/operational-state';
5
5
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
6
6
  export declare class Dishwasher extends MatterbridgeEndpoint {
7
7
  constructor(name: string, serial: string, currentMode?: number, supportedModes?: DishwasherMode.ModeOption[], selectedTemperatureLevel?: number, supportedTemperatureLevels?: string[], temperatureSetpoint?: number, minTemperature?: number, maxTemperature?: number, step?: number, operationalState?: OperationalState.OperationalStateEnum);
@@ -51,7 +51,7 @@ export class MatterbridgeDishwasherModeServer extends DishwasherModeServer {
51
51
  }
52
52
  handleOnOffChange(onOff) {
53
53
  const device = this.endpoint.stateOf(MatterbridgeServer);
54
- if (onOff === false) {
54
+ if (!onOff) {
55
55
  device.log.info('OnOffServer changed to OFF: setting Dead Front state to Manufacturer Specific');
56
56
  this.state.currentMode = 2;
57
57
  }
@@ -1,4 +1,4 @@
1
- import { MaybePromise } from '@matter/general';
1
+ import { type MaybePromise } from '@matter/general';
2
2
  import { EnergyEvseServer } from '@matter/node/behaviors/energy-evse';
3
3
  import { EnergyEvseModeServer } from '@matter/node/behaviors/energy-evse-mode';
4
4
  import { EnergyEvse } from '@matter/types/clusters/energy-evse';
@@ -1,5 +1,5 @@
1
1
  import { OperationalState } from '@matter/types/clusters/operational-state';
2
- import { Semtag } from '@matter/types/globals';
2
+ import { type Semtag } from '@matter/types/globals';
3
3
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
4
  export interface IrrigationSystemOptions {
5
5
  singleZone?: boolean;
@@ -1,6 +1,6 @@
1
1
  import { LaundryDryerControls } from '@matter/types/clusters/laundry-dryer-controls';
2
2
  import { LaundryWasherMode } from '@matter/types/clusters/laundry-washer-mode';
3
- import { OperationalState } from '@matter/types/clusters/operational-state';
3
+ import { type OperationalState } from '@matter/types/clusters/operational-state';
4
4
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
5
5
  export declare class LaundryDryer extends MatterbridgeEndpoint {
6
6
  constructor(name: string, serial: string, currentMode?: number, supportedModes?: LaundryWasherMode.ModeOption[], selectedTemperatureLevel?: number, supportedTemperatureLevels?: string[], temperatureSetpoint?: number, minTemperature?: number, maxTemperature?: number, step?: number, operationalState?: OperationalState.OperationalStateEnum);
@@ -2,7 +2,7 @@ import { LaundryWasherModeServer } from '@matter/node/behaviors/laundry-washer-m
2
2
  import { LaundryWasherControls } from '@matter/types/clusters/laundry-washer-controls';
3
3
  import { LaundryWasherMode } from '@matter/types/clusters/laundry-washer-mode';
4
4
  import { ModeBase } from '@matter/types/clusters/mode-base';
5
- import { OperationalState } from '@matter/types/clusters/operational-state';
5
+ import { type OperationalState } from '@matter/types/clusters/operational-state';
6
6
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
7
7
  export declare class LaundryWasher extends MatterbridgeEndpoint {
8
8
  constructor(name: string, serial: string, currentMode?: number, supportedModes?: LaundryWasherMode.ModeOption[], spinSpeedCurrent?: number, spinSpeeds?: string[], numberOfRinses?: LaundryWasherControls.NumberOfRinses, supportedRinses?: LaundryWasherControls.NumberOfRinses[], selectedTemperatureLevel?: number, supportedTemperatureLevels?: string[], temperatureSetpoint?: number, minTemperature?: number, maxTemperature?: number, step?: number, operationalState?: OperationalState.OperationalStateEnum);
@@ -59,7 +59,7 @@ export class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer
59
59
  handleOnOffChange(onOff) {
60
60
  const device = this.endpoint.stateOf(MatterbridgeServer);
61
61
  device.log.info(`HandleOnOffChange (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
62
- if (onOff === false) {
62
+ if (!onOff) {
63
63
  device.log.notice('OnOffServer changed to OFF: setting Dead Front state to Manufacturer Specific');
64
64
  this.state.currentMode = 2;
65
65
  }
@@ -1,7 +1,7 @@
1
- import { MaybePromise } from '@matter/general';
1
+ import { type MaybePromise } from '@matter/general';
2
2
  import { OvenCavityOperationalStateServer } from '@matter/node/behaviors/oven-cavity-operational-state';
3
3
  import { OvenModeServer } from '@matter/node/behaviors/oven-mode';
4
- import { Semtag } from '@matter/types';
4
+ import { type Semtag } from '@matter/types';
5
5
  import { ModeBase } from '@matter/types/clusters/mode-base';
6
6
  import { OperationalState } from '@matter/types/clusters/operational-state';
7
7
  import { OvenMode } from '@matter/types/clusters/oven-mode';
@@ -1,6 +1,6 @@
1
- import { MaybePromise } from '@matter/general';
1
+ import { type MaybePromise } from '@matter/general';
2
2
  import { RefrigeratorAndTemperatureControlledCabinetModeServer } from '@matter/node/behaviors/refrigerator-and-temperature-controlled-cabinet-mode';
3
- import { Semtag } from '@matter/types';
3
+ import { type Semtag } from '@matter/types';
4
4
  import { ModeBase } from '@matter/types/clusters/mode-base';
5
5
  import { RefrigeratorAndTemperatureControlledCabinetMode } from '@matter/types/clusters/refrigerator-and-temperature-controlled-cabinet-mode';
6
6
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
@@ -9,7 +9,7 @@ import { RvcRunMode } from '@matter/types/clusters/rvc-run-mode';
9
9
  import { ServiceArea } from '@matter/types/clusters/service-area';
10
10
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
11
11
  export declare class RoboticVacuumCleaner extends MatterbridgeEndpoint {
12
- constructor(name: string, serial: string, mode?: 'server' | 'matter' | undefined, currentRunMode?: number, supportedRunModes?: RvcRunMode.ModeOption[], currentCleanMode?: number, supportedCleanModes?: RvcCleanMode.ModeOption[], currentPhase?: number | null, phaseList?: string[] | null, operationalState?: RvcOperationalState.OperationalState, operationalStateList?: RvcOperationalState.OperationalStateStruct[], supportedAreas?: ServiceArea.Area[], selectedAreas?: number[], currentArea?: number | null, supportedMaps?: ServiceArea.Map[]);
12
+ constructor(name: string, serial: string, mode?: 'server' | 'matter', currentRunMode?: number, supportedRunModes?: RvcRunMode.ModeOption[], currentCleanMode?: number, supportedCleanModes?: RvcCleanMode.ModeOption[], currentPhase?: number | null, phaseList?: string[] | null, operationalState?: RvcOperationalState.OperationalState, operationalStateList?: RvcOperationalState.OperationalStateStruct[], supportedAreas?: ServiceArea.Area[], selectedAreas?: number[], currentArea?: number | null, supportedMaps?: ServiceArea.Map[]);
13
13
  createDefaultRvcRunModeClusterServer(currentMode?: number, supportedModes?: RvcRunMode.ModeOption[]): this;
14
14
  createDefaultRvcCleanModeClusterServer(currentMode?: number, supportedModes?: RvcCleanMode.ModeOption[]): this;
15
15
  createDefaultServiceAreaClusterServer(supportedAreas?: ServiceArea.Area[], selectedAreas?: number[], currentArea?: number | null, supportedMaps?: ServiceArea.Map[]): this;
@@ -14,7 +14,7 @@ import { MatterbridgeServiceAreaServer } from '../behaviors/serviceAreaServer.js
14
14
  import { powerSource, roboticVacuumCleaner } from '../matterbridgeDeviceTypes.js';
15
15
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
16
16
  export class RoboticVacuumCleaner extends MatterbridgeEndpoint {
17
- constructor(name, serial, mode = undefined, currentRunMode, supportedRunModes, currentCleanMode, supportedCleanModes, currentPhase = null, phaseList = null, operationalState, operationalStateList, supportedAreas, selectedAreas, currentArea, supportedMaps) {
17
+ constructor(name, serial, mode, currentRunMode, supportedRunModes, currentCleanMode, supportedCleanModes, currentPhase = null, phaseList = null, operationalState, operationalStateList, supportedAreas, selectedAreas, currentArea, supportedMaps) {
18
18
  super([roboticVacuumCleaner, powerSource], { id: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}`, mode });
19
19
  this.createDefaultIdentifyClusterServer()
20
20
  .createDefaultBasicInformationClusterServer(name, serial, 0xfff1, 'Matterbridge', 0x8000, 'Matterbridge Robot Vacuum Cleaner')
@@ -1,4 +1,4 @@
1
- import { type MeasurementAccuracy } from '@matter/types/globals';
1
+ import type { MeasurementAccuracy } from '@matter/types/globals';
2
2
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
3
3
  export interface SoilSensorOptions {
4
4
  soilMoistureMeasurementLimits?: MeasurementAccuracy;
@@ -1,4 +1,4 @@
1
- import { Semtag } from '@matter/types/globals';
1
+ import { type Semtag } from '@matter/types/globals';
2
2
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
3
3
  export declare class SolarPower extends MatterbridgeEndpoint {
4
4
  constructor(name: string, serial: string, voltage?: number | bigint | null, current?: number | bigint | null, power?: number | bigint | null, energyExported?: number | bigint, absMinPower?: number, absMaxPower?: number);
@@ -1,6 +1,6 @@
1
1
  import { TemperatureControlServer } from '@matter/node/behaviors/temperature-control';
2
2
  import { TemperatureControl } from '@matter/types/clusters/temperature-control';
3
- import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
3
+ import { type MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
4
  export declare function createLevelTemperatureControlClusterServer(endpoint: MatterbridgeEndpoint, selectedTemperatureLevel?: number, supportedTemperatureLevels?: string[]): MatterbridgeEndpoint;
5
5
  export declare function createNumberTemperatureControlClusterServer(endpoint: MatterbridgeEndpoint, temperatureSetpoint?: number, minTemperature?: number, maxTemperature?: number, step?: number): MatterbridgeEndpoint;
6
6
  declare const MatterbridgeLevelTemperatureControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof TemperatureControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<TemperatureControl, {
@@ -1,5 +1,5 @@
1
1
  import EventEmitter from 'node:events';
2
- import { EndpointNumber } from '@matter/types/datatype';
2
+ import { type EndpointNumber } from '@matter/types/datatype';
3
3
  import type { ApiClusters, ApiDevice, ApiMatter, ApiPlugin, ApiSettings, RefreshRequiredChanged, WsMessageBroadcast } from '@matterbridge/types';
4
4
  import { LogLevel } from 'node-ansi-logger';
5
5
  import type { Matterbridge } from './matterbridge.js';
package/dist/frontend.js CHANGED
@@ -124,7 +124,7 @@ export class Frontend extends EventEmitter {
124
124
  this.log.debug(`Received broadcast response ${CYAN}${msg.type}${db} from ${CYAN}${msg.src}${db}: ${debugStringify(msg)}${db}`);
125
125
  switch (msg.type) {
126
126
  case 'manager_spawn_response':
127
- if (msg.result && msg.result.packageCommand === 'install') {
127
+ if (msg.result?.packageCommand === 'install') {
128
128
  this.wssSendCloseSnackbarMessage(`Installing package ${msg.result.packageName}...`);
129
129
  if (msg.result.success) {
130
130
  this.restartRequired = true;
@@ -137,7 +137,7 @@ export class Frontend extends EventEmitter {
137
137
  this.wssSendSnackbarMessage(`Package ${msg.result.packageName} not installed`, 10, 'error');
138
138
  }
139
139
  }
140
- if (msg.result && msg.result.packageCommand === 'uninstall') {
140
+ if (msg.result?.packageCommand === 'uninstall') {
141
141
  this.wssSendCloseSnackbarMessage(`Uninstalling package ${msg.result.packageName}...`);
142
142
  if (msg.result.success) {
143
143
  this.restartRequired = true;
@@ -152,8 +152,7 @@ export class Frontend extends EventEmitter {
152
152
  }
153
153
  break;
154
154
  case 'manager_archive_response':
155
- if (msg.result &&
156
- msg.result.success &&
155
+ if (msg.result?.success &&
157
156
  isValidString(msg.result.command) &&
158
157
  isValidString(msg.result.archivePath) &&
159
158
  isValidArray(msg.result.sourcePaths) &&
@@ -706,7 +705,7 @@ export class Frontend extends EventEmitter {
706
705
  res.download(path.join(os.tmpdir(), `matterbridge.${NODE_STORAGE_DIR}.zip`), `matterbridge.${NODE_STORAGE_DIR}.zip`, (error) => {
707
706
  this.wssSendCloseSnackbarMessage('Creating matterbridge storage backup...');
708
707
  if (error) {
709
- this.log.error(`Error downloading file ${`matterbridge.${NODE_STORAGE_DIR}.zip`}: ${error instanceof Error ? error.message : error}`);
708
+ this.log.error(`Error downloading file matterbridge.${NODE_STORAGE_DIR}.zip: ${error instanceof Error ? error.message : error}`);
710
709
  res.status(500).send('Error downloading the matterbridge storage file');
711
710
  }
712
711
  else {
@@ -962,7 +961,7 @@ export class Frontend extends EventEmitter {
962
961
  return false;
963
962
  if (device.hasClusterServer(BridgedDeviceBasicInformation.id))
964
963
  return device.getAttribute(BridgedDeviceBasicInformation.id, 'reachable');
965
- if (device.mode === 'server' && device.serverNode && device.serverNode.state.basicInformation.reachable !== undefined)
964
+ if (device.mode === 'server' && device.serverNode?.state.basicInformation.reachable !== undefined)
966
965
  return device.serverNode.state.basicInformation.reachable;
967
966
  if (this.matterbridge.bridgeMode === 'childbridge')
968
967
  return true;
@@ -1003,7 +1002,7 @@ export class Frontend extends EventEmitter {
1003
1002
  const batChargeLevel = device.getAttribute(PowerSource.id, 'batPercentRemaining');
1004
1003
  return isValidNumber(batChargeLevel) ? batChargeLevel / 2 : undefined;
1005
1004
  }
1006
- return undefined;
1005
+ return;
1007
1006
  };
1008
1007
  if (endpoint.hasClusterServer(PowerSource.id))
1009
1008
  return batteryLevel(endpoint);
@@ -1054,11 +1053,11 @@ export class Frontend extends EventEmitter {
1054
1053
  attributes += `Heat to: ${attributeValue / 100}°C `;
1055
1054
  if (clusterName === 'thermostat' && attributeName === 'occupiedCoolingSetpoint' && isValidNumber(attributeValue))
1056
1055
  attributes += `Cool to: ${attributeValue / 100}°C `;
1057
- const modeClusters = ['modeSelect', 'rvcRunMode', 'rvcCleanMode', 'laundryWasherMode', 'ovenMode', 'microwaveOvenMode'];
1058
- if (modeClusters.includes(clusterName) && attributeName === 'supportedModes') {
1056
+ const modeClusters = new Set(['modeSelect', 'rvcRunMode', 'rvcCleanMode', 'laundryWasherMode', 'ovenMode', 'microwaveOvenMode']);
1057
+ if (modeClusters.has(clusterName) && attributeName === 'supportedModes') {
1059
1058
  supportedModes = attributeValue;
1060
1059
  }
1061
- if (modeClusters.includes(clusterName) && attributeName === 'currentMode') {
1060
+ if (modeClusters.has(clusterName) && attributeName === 'currentMode') {
1062
1061
  const supportedMode = supportedModes.find((mode) => mode.mode === attributeValue);
1063
1062
  if (supportedMode)
1064
1063
  attributes += `Mode: ${supportedMode.label} `;
@@ -1199,7 +1198,7 @@ export class Frontend extends EventEmitter {
1199
1198
  const endpoint = this.matterbridge.devices
1200
1199
  .array()
1201
1200
  .find((d) => d.plugin === pluginName && d.maybeNumber === endpointNumber && (!serialNumber || d.serialNumber === serialNumber) && (!uniqueId || d.uniqueId === uniqueId));
1202
- if (!endpoint || !endpoint.plugin || !endpoint.maybeNumber || !endpoint.maybeId || !endpoint.deviceName || !endpoint.serialNumber) {
1201
+ if (!endpoint?.plugin || !endpoint.maybeNumber || !endpoint.maybeId || !endpoint.deviceName || !endpoint.serialNumber) {
1203
1202
  this.log.error(`getClusters: no device found for plugin ${pluginName} and endpoint number ${endpointNumber} (serial: ${serialNumber ?? 'N/A'}, uniqueId: ${uniqueId ?? 'N/A'})`);
1204
1203
  return;
1205
1204
  }
@@ -1871,7 +1870,7 @@ export class Frontend extends EventEmitter {
1871
1870
  }
1872
1871
  break;
1873
1872
  case 'setmatterport':
1874
- const port = isValidString(data.params.value) ? parseInt(data.params.value) : 0;
1873
+ const port = isValidString(data.params.value) ? Number.parseInt(data.params.value) : 0;
1875
1874
  if (isValidNumber(port, 5540, 5600)) {
1876
1875
  this.log.debug(`Set matter commissioning port to ${CYAN}${port}${db}`);
1877
1876
  this.matterbridge.port = this.matterbridge.initialPort = port;
@@ -1890,7 +1889,7 @@ export class Frontend extends EventEmitter {
1890
1889
  }
1891
1890
  break;
1892
1891
  case 'setmatterdiscriminator':
1893
- const discriminator = isValidString(data.params.value) ? parseInt(data.params.value) : 0;
1892
+ const discriminator = isValidString(data.params.value) ? Number.parseInt(data.params.value) : 0;
1894
1893
  if (isValidNumber(discriminator, 0, 4095)) {
1895
1894
  this.log.debug(`Set matter commissioning discriminator to ${CYAN}${discriminator}${db}`);
1896
1895
  this.matterbridge.discriminator = this.matterbridge.initialDiscriminator = discriminator;
@@ -1915,8 +1914,8 @@ export class Frontend extends EventEmitter {
1915
1914
  }
1916
1915
  break;
1917
1916
  case 'setmatterpasscode':
1918
- const passcode = isValidString(data.params.value) ? parseInt(data.params.value) : 0;
1919
- if (isValidNumber(passcode, 1, 99999998) && CommissioningOptions.FORBIDDEN_PASSCODES.includes(passcode) === false) {
1917
+ const passcode = isValidString(data.params.value) ? Number.parseInt(data.params.value) : 0;
1918
+ if (isValidNumber(passcode, 1, 99999998) && !CommissioningOptions.FORBIDDEN_PASSCODES.includes(passcode)) {
1920
1919
  this.matterbridge.passcode = this.matterbridge.initialPasscode = passcode;
1921
1920
  this.log.debug(`Set matter commissioning passcode to ${CYAN}${passcode}${db}`);
1922
1921
  await this.matterbridge.nodeContext?.set('matterpasscode', passcode);
@@ -2101,7 +2100,7 @@ export class Frontend extends EventEmitter {
2101
2100
  this.log.debug('Sending a restart required message to all connected clients');
2102
2101
  this.restartRequired = true;
2103
2102
  this.fixedRestartRequired = fixed;
2104
- if (snackbar === true)
2103
+ if (snackbar)
2105
2104
  this.wssSendSnackbarMessage(`Restart required`, 0);
2106
2105
  this.wssBroadcastMessage({ id: 0, src: 'Matterbridge', dst: 'Frontend', method: 'restart_required', success: true, response: { fixed } });
2107
2106
  }
@@ -2110,7 +2109,7 @@ export class Frontend extends EventEmitter {
2110
2109
  return;
2111
2110
  this.log.debug('Sending a restart not required message to all connected clients');
2112
2111
  this.restartRequired = false;
2113
- if (snackbar === true)
2112
+ if (snackbar)
2114
2113
  this.wssSendCloseSnackbarMessage(`Restart required`);
2115
2114
  this.wssBroadcastMessage({ id: 0, src: 'Matterbridge', dst: 'Frontend', method: 'restart_not_required', success: true });
2116
2115
  }
package/dist/helpers.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Endpoint } from '@matter/node';
2
- import { AggregatorEndpoint } from '@matter/node/endpoints/aggregator';
2
+ import { type AggregatorEndpoint } from '@matter/node/endpoints/aggregator';
3
3
  import type { Matterbridge } from './matterbridge.js';
4
4
  export declare function addVirtualDevice(aggregatorEndpoint: Endpoint<AggregatorEndpoint>, name: string, type: 'light' | 'outlet' | 'switch' | 'mounted_switch', callback: () => Promise<void>): Promise<Endpoint>;
5
5
  export declare function addVirtualDevices(matterbridge: Matterbridge, aggregatorEndpoint: Endpoint<AggregatorEndpoint>): Promise<void>;
package/dist/helpers.js CHANGED
@@ -10,9 +10,6 @@ import { OnOffLightDevice } from '@matter/node/devices/on-off-light';
10
10
  import { OnOffLightSwitchDevice } from '@matter/node/devices/on-off-light-switch';
11
11
  import { OnOffPlugInUnitDevice } from '@matter/node/devices/on-off-plug-in-unit';
12
12
  import { VendorId } from '@matter/types/datatype';
13
- import { hasParameter } from '@matterbridge/utils/cli';
14
- import { doorLock } from './matterbridgeDeviceTypes.js';
15
- import { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
16
13
  export async function addVirtualDevice(aggregatorEndpoint, name, type, callback) {
17
14
  let deviceType;
18
15
  switch (type) {
@@ -59,13 +56,6 @@ export async function addVirtualDevice(aggregatorEndpoint, name, type, callback)
59
56
  return device;
60
57
  }
61
58
  export async function addVirtualDevices(matterbridge, aggregatorEndpoint) {
62
- if (hasParameter('experimental') && matterbridge.bridgeMode === 'bridge' && aggregatorEndpoint) {
63
- const lockUserPin = new MatterbridgeEndpoint(doorLock, { id: 'door_lock_user_pin' });
64
- lockUserPin.createDefaultBridgedDeviceBasicInformationClusterServer('Matterbridge User Pin Lock', 'sn_system_lock', 0xfff1, 'Matterbridge', 'Matterbridge Virtual Device', 20000, '2.0.0');
65
- lockUserPin.createUserPinDoorLockClusterServer();
66
- lockUserPin.addRequiredClusterServers();
67
- await aggregatorEndpoint.add(lockUserPin);
68
- }
69
59
  if (matterbridge.virtualMode !== 'disabled' && matterbridge.bridgeMode === 'bridge' && aggregatorEndpoint) {
70
60
  matterbridge.log.notice(`Creating virtual devices for Matterbridge server node...`);
71
61
  await addVirtualDevice(aggregatorEndpoint, 'Restart Matterbridge', matterbridge.virtualMode, async () => {
@@ -1,12 +1,13 @@
1
- export declare const closeBroadcastServerSpy: import("jest-mock").SpiedFunction<() => void>;
2
- export declare const getUniqueIdBroadcastServerSpy: import("jest-mock").SpiedFunction<() => number>;
3
- export declare const isWorkerRequestBroadcastServerSpy: import("jest-mock").SpiedFunction<(value: unknown) => value is import("@matterbridge/types").WorkerMessageRequest>;
4
- export declare const isWorkerRequestOfTypeBroadcastServerSpy: import("jest-mock").SpiedFunction<(<K extends keyof import("@matterbridge/types").WorkerMessageTypes>(value: unknown, type: K) => value is import("@matterbridge/types").WorkerMessageRequest<K>)>;
5
- export declare const isWorkerResponseBroadcastServerSpy: import("jest-mock").SpiedFunction<(value: unknown) => value is import("@matterbridge/types").WorkerMessageResponse>;
6
- export declare const isWorkerResponseOfTypeBroadcastServerSpy: import("jest-mock").SpiedFunction<(<K extends keyof import("@matterbridge/types").WorkerMessageTypes>(value: unknown, type: K) => value is import("@matterbridge/types").WorkerMessageResponse<K>)>;
7
- export declare const broadcastBroadcastServerSpy: import("jest-mock").SpiedFunction<(message: import("@matterbridge/types").WorkerMessage) => void>;
8
- export declare const requestBroadcastServerSpy: import("jest-mock").SpiedFunction<(<K extends keyof import("@matterbridge/types").WorkerMessageTypes>(message: import("@matterbridge/types").WorkerMessageRequest<K>) => void)>;
9
- export declare const respondBroadcastServerSpy: import("jest-mock").SpiedFunction<(<K extends keyof import("@matterbridge/types").WorkerMessageTypes>(message: import("@matterbridge/types").WorkerMessageResponse<K>) => void)>;
10
- export declare const fetchBroadcastServerSpy: import("jest-mock").SpiedFunction<(<T extends import("@matterbridge/types").WorkerMessageRequestAny, K extends Extract<keyof import("@matterbridge/types").WorkerMessageTypes, T["type"]>>(message: T, timeout?: number) => Promise<import("@matterbridge/types").WorkerMessageResponseSuccess<K>>)>;
11
- export declare const broadcastMessageHandlerBroadcastServerSpy: import("jest-mock").SpiedGetter<import("@matterbridge/types").WorkerSrcType> | import("jest-mock").SpiedSetter<import("@matterbridge/types").WorkerSrcType>;
12
- export declare const broadcastMessageErrorHandlerBroadcastServerSpy: import("jest-mock").SpiedGetter<import("@matterbridge/types").WorkerSrcType> | import("jest-mock").SpiedSetter<import("@matterbridge/types").WorkerSrcType>;
1
+ import { BroadcastServer } from '@matterbridge/thread/server';
2
+ export declare const closeBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.close>;
3
+ export declare const getUniqueIdBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.getUniqueId>;
4
+ export declare const isWorkerRequestBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.isWorkerRequest>;
5
+ export declare const isWorkerRequestOfTypeBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.isWorkerRequestOfType>;
6
+ export declare const isWorkerResponseBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.isWorkerResponse>;
7
+ export declare const isWorkerResponseOfTypeBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.isWorkerResponseOfType>;
8
+ export declare const broadcastBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.broadcast>;
9
+ export declare const requestBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.request>;
10
+ export declare const respondBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.respond>;
11
+ export declare const fetchBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.fetch>;
12
+ export declare const broadcastMessageHandlerBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.broadcastMessageHandler>;
13
+ export declare const broadcastMessageErrorHandlerBroadcastServerSpy: jest.SpiedFunction<typeof BroadcastServer.prototype.broadcastMessageErrorHandler>;
@@ -1,5 +1,5 @@
1
- import { jest } from '@jest/globals';
2
1
  import { BroadcastServer } from '@matterbridge/thread/server';
2
+ const { jest } = await import('@jest/globals');
3
3
  export const closeBroadcastServerSpy = jest.spyOn(BroadcastServer.prototype, 'close');
4
4
  export const getUniqueIdBroadcastServerSpy = jest.spyOn(BroadcastServer.prototype, 'getUniqueId');
5
5
  export const isWorkerRequestBroadcastServerSpy = jest.spyOn(BroadcastServer.prototype, 'isWorkerRequest');
@@ -1,13 +1,14 @@
1
- export declare const destroyDeviceManagerSpy: import("jest-mock").SpiedFunction<() => void>;
2
- export declare const lengthDeviceManagerSpy: import("jest-mock").SpiedGetter<number>;
3
- export declare const sizeDeviceManagerSpy: import("jest-mock").SpiedGetter<number>;
4
- export declare const hasDeviceManagerSpy: import("jest-mock").SpiedFunction<(uniqueId: string) => boolean>;
5
- export declare const getDeviceManagerSpy: import("jest-mock").SpiedFunction<(uniqueId: string) => import("../matterbridgeEndpoint.js").MatterbridgeEndpoint | undefined>;
6
- export declare const setDeviceManagerSpy: import("jest-mock").SpiedFunction<(device: import("../matterbridgeEndpoint.js").MatterbridgeEndpoint) => import("../matterbridgeEndpoint.js").MatterbridgeEndpoint>;
7
- export declare const removeDeviceManagerSpy: import("jest-mock").SpiedFunction<(device: import("../matterbridgeEndpoint.js").MatterbridgeEndpoint) => boolean>;
8
- export declare const clearDeviceManagerSpy: import("jest-mock").SpiedFunction<() => void>;
9
- export declare const arrayDeviceManagerSpy: import("jest-mock").SpiedFunction<() => import("../matterbridgeEndpoint.js").MatterbridgeEndpoint[]>;
10
- export declare const baseArrayDeviceManagerSpy: import("jest-mock").SpiedFunction<(pluginName?: string) => import("@matterbridge/types").BaseDevice[]>;
11
- export declare const iteratorDeviceManagerSpy: import("jest-mock").SpiedFunction<() => MapIterator<import("../matterbridgeEndpoint.js").MatterbridgeEndpoint>>;
12
- export declare const forEachDeviceManagerSpy: import("jest-mock").SpiedFunction<(callback: (device: import("../matterbridgeEndpoint.js").MatterbridgeEndpoint) => Promise<void>) => Promise<void>>;
13
- export declare const logLevelDeviceManagerSpy: import("jest-mock").SpiedSetter<import("node-ansi-logger").LogLevel>;
1
+ import { DeviceManager } from '../deviceManager.js';
2
+ export declare const destroyDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.destroy>;
3
+ export declare const lengthDeviceManagerSpy: jest.SpiedGetter<typeof DeviceManager.prototype.length>;
4
+ export declare const sizeDeviceManagerSpy: jest.SpiedGetter<typeof DeviceManager.prototype.size>;
5
+ export declare const hasDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.has>;
6
+ export declare const getDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.get>;
7
+ export declare const setDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.set>;
8
+ export declare const removeDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.remove>;
9
+ export declare const clearDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.clear>;
10
+ export declare const arrayDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.array>;
11
+ export declare const baseArrayDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.baseArray>;
12
+ export declare const iteratorDeviceManagerSpy: jest.SpiedFunction<(typeof DeviceManager.prototype)[typeof Symbol.iterator]>;
13
+ export declare const forEachDeviceManagerSpy: jest.SpiedFunction<typeof DeviceManager.prototype.forEach>;
14
+ export declare const logLevelDeviceManagerSpy: jest.SpiedSetter<typeof DeviceManager.prototype.logLevel>;