@matterbridge/core 3.9.0 → 3.9.1-dev-20260614-89d7aeb
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/dist/backend.js +2 -2
- package/dist/backendExpress.d.ts +1 -1
- package/dist/backendWsServer.d.ts +1 -1
- package/dist/behaviors/activatedCarbonFilterMonitoringServer.d.ts +2 -2
- package/dist/behaviors/bindingServer.d.ts +3 -3
- package/dist/behaviors/booleanStateConfigurationServer.d.ts +2 -2
- package/dist/behaviors/colorControlServer.d.ts +9 -9
- package/dist/behaviors/deviceEnergyManagementServer.d.ts +4 -4
- package/dist/behaviors/doorLockServer.d.ts +17 -17
- package/dist/behaviors/fanControlServer.d.ts +2 -2
- package/dist/behaviors/hepaFilterMonitoringServer.d.ts +2 -2
- package/dist/behaviors/identifyServer.d.ts +1 -1
- package/dist/behaviors/levelControlServer.d.ts +1 -1
- package/dist/behaviors/matterbridgeServer.d.ts +2 -2
- package/dist/behaviors/modeSelectServer.d.ts +1 -1
- package/dist/behaviors/operationalStateServer.d.ts +1 -1
- package/dist/behaviors/serviceAreaServer.d.ts +1 -1
- package/dist/behaviors/smokeCoAlarmServer.d.ts +1 -1
- package/dist/behaviors/thermostatServer.d.ts +10 -10
- package/dist/behaviors/valveConfigurationAndControlServer.d.ts +1 -1
- package/dist/behaviors/windowCoveringServer.d.ts +6 -6
- package/dist/cli.js +6 -6
- package/dist/clusters/closure-control.d.ts +4 -4
- package/dist/clusters/closure-dimension.d.ts +4 -4
- package/dist/clusters/soil-measurement.d.ts +3 -3
- package/dist/devices/basicVideoPlayer.js +3 -3
- package/dist/devices/closure.d.ts +6 -6
- package/dist/devices/closurePanel.d.ts +6 -6
- package/dist/devices/cooktop.d.ts +1 -1
- package/dist/devices/dishwasher.d.ts +1 -1
- package/dist/devices/dishwasher.js +1 -1
- package/dist/devices/evse.d.ts +3 -3
- package/dist/devices/irrigationSystem.d.ts +1 -1
- package/dist/devices/laundryDryer.d.ts +1 -1
- package/dist/devices/laundryWasher.d.ts +1 -1
- package/dist/devices/laundryWasher.js +1 -1
- package/dist/devices/oven.d.ts +2 -2
- package/dist/devices/refrigerator.d.ts +2 -2
- package/dist/devices/roboticVacuumCleaner.d.ts +1 -1
- package/dist/devices/roboticVacuumCleaner.js +1 -1
- package/dist/devices/soilSensor.d.ts +1 -1
- package/dist/devices/solarPower.d.ts +1 -1
- package/dist/devices/temperatureControl.d.ts +3 -3
- package/dist/frontend.d.ts +1 -1
- package/dist/frontend.js +16 -17
- package/dist/helpers.d.ts +1 -1
- package/dist/jestutils/jestBroadcastServerSpy.d.ts +5 -5
- package/dist/jestutils/jestFrontendSpy.d.ts +1 -1
- package/dist/jestutils/jestMatterTest.d.ts +5 -5
- package/dist/jestutils/jestMatterTest.js +4 -4
- package/dist/jestutils/jestMatterbridgeEndpointSpy.d.ts +2 -2
- package/dist/jestutils/jestMatterbridgePlatformSpy.d.ts +6 -6
- package/dist/jestutils/jestMatterbridgeSpy.d.ts +1 -1
- package/dist/jestutils/jestMatterbridgeTest.d.ts +3 -3
- package/dist/jestutils/jestMatterbridgeTest.js +1 -1
- package/dist/jestutils/logKeepAlives.d.ts +1 -1
- package/dist/jestutils/matterRequest.d.ts +1 -1
- package/dist/matterbridge.d.ts +6 -6
- package/dist/matterbridge.js +20 -21
- package/dist/matterbridgeAccessoryPlatform.d.ts +1 -1
- package/dist/matterbridgeDeviceTypes.d.ts +1 -1
- package/dist/matterbridgeDynamicPlatform.d.ts +1 -1
- package/dist/matterbridgeEndpoint.d.ts +10 -10
- package/dist/matterbridgeEndpoint.js +4 -4
- package/dist/matterbridgeEndpointCommandHandler.d.ts +39 -39
- package/dist/matterbridgeEndpointHelpers.d.ts +28 -28
- package/dist/matterbridgeEndpointHelpers.js +1 -1
- package/dist/matterbridgeEndpointTypes.d.ts +2 -2
- package/dist/matterbridgeFactory.d.ts +2 -2
- package/dist/matterbridgePlatform.d.ts +4 -4
- package/dist/pluginManager.d.ts +1 -1
- package/dist/pluginManager.js +3 -3
- 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
|
|
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
|
|
242
|
+
return;
|
|
243
243
|
});
|
|
244
244
|
this.httpsServer.on('error', (error) => {
|
|
245
245
|
this.log.error(`Frontend https server error listening on ${this.port}`);
|
package/dist/backendExpress.d.ts
CHANGED
|
@@ -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,9 +1,9 @@
|
|
|
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
|
-
warning: false;
|
|
5
4
|
condition: true;
|
|
6
5
|
replacementProductList: false;
|
|
6
|
+
warning: false;
|
|
7
7
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "activatedCarbonFilterMonitoring">;
|
|
8
8
|
export declare class MatterbridgeActivatedCarbonFilterMonitoringServer extends MatterbridgeActivatedCarbonFilterMonitoringServer_base {
|
|
9
9
|
resetCondition(): Promise<void>;
|
|
@@ -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,10 +1,10 @@
|
|
|
1
1
|
import { BooleanStateConfigurationServer } from '@matter/node/behaviors/boolean-state-configuration';
|
|
2
2
|
import { BooleanStateConfiguration } from '@matter/types/clusters/boolean-state-configuration';
|
|
3
3
|
declare const MatterbridgeBooleanStateConfigurationServer_base: import("@matter/node").ClusterBehavior.Type<typeof BooleanStateConfigurationServer, import("@matter/types").ClusterType.WithSupportedFeatures<BooleanStateConfiguration, {
|
|
4
|
-
visual: true;
|
|
5
|
-
audible: true;
|
|
6
4
|
alarmSuppress: false;
|
|
5
|
+
audible: true;
|
|
7
6
|
sensitivityLevel: true;
|
|
7
|
+
visual: true;
|
|
8
8
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "booleanStateConfiguration">;
|
|
9
9
|
export declare class MatterbridgeBooleanStateConfigurationServer extends MatterbridgeBooleanStateConfigurationServer_base {
|
|
10
10
|
enableDisableAlarm(request: BooleanStateConfiguration.EnableDisableAlarmRequest): Promise<void>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ColorControlServer } from '@matter/node/behaviors/color-control';
|
|
2
2
|
import { ColorControl } from '@matter/types/clusters/color-control';
|
|
3
3
|
declare const MatterbridgeColorControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof ColorControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<ColorControl, {
|
|
4
|
-
hueSaturation: true;
|
|
5
|
-
enhancedHue: true;
|
|
6
4
|
colorLoop: false;
|
|
7
|
-
xy: true;
|
|
8
5
|
colorTemperature: true;
|
|
6
|
+
enhancedHue: true;
|
|
7
|
+
hueSaturation: true;
|
|
8
|
+
xy: true;
|
|
9
9
|
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/color-control").ColorControlBaseServer.Internal, "colorControl">;
|
|
10
10
|
export declare class MatterbridgeColorControlServer extends MatterbridgeColorControlServer_base {
|
|
11
11
|
moveToHue(request: ColorControl.MoveToHueRequest): Promise<void>;
|
|
@@ -17,17 +17,17 @@ export declare class MatterbridgeColorControlServer extends MatterbridgeColorCon
|
|
|
17
17
|
moveToColorTemperature(request: ColorControl.MoveToColorTemperatureRequest): Promise<void>;
|
|
18
18
|
}
|
|
19
19
|
declare const MatterbridgeEnhancedColorControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof MatterbridgeColorControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<ColorControl, {
|
|
20
|
-
hueSaturation: true;
|
|
21
|
-
enhancedHue: true;
|
|
22
20
|
colorLoop: false;
|
|
23
|
-
xy: true;
|
|
24
21
|
colorTemperature: true;
|
|
25
|
-
}>, {
|
|
26
|
-
hueSaturation: true;
|
|
27
22
|
enhancedHue: true;
|
|
28
|
-
|
|
23
|
+
hueSaturation: true;
|
|
29
24
|
xy: true;
|
|
25
|
+
}>, {
|
|
26
|
+
colorLoop: false;
|
|
30
27
|
colorTemperature: true;
|
|
28
|
+
enhancedHue: true;
|
|
29
|
+
hueSaturation: true;
|
|
30
|
+
xy: true;
|
|
31
31
|
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/color-control").ColorControlBaseServer.Internal, "colorControl">;
|
|
32
32
|
export declare class MatterbridgeEnhancedColorControlServer extends MatterbridgeEnhancedColorControlServer_base {
|
|
33
33
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { DeviceEnergyManagementServer } from '@matter/node/behaviors/device-energy-management';
|
|
2
2
|
import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
|
|
3
3
|
declare const MatterbridgeDeviceEnergyManagementServer_base: import("@matter/node").ClusterBehavior.Type<typeof DeviceEnergyManagementServer, import("@matter/types").ClusterType.WithSupportedFeatures<DeviceEnergyManagement, {
|
|
4
|
+
constraintBasedAdjustment: false;
|
|
5
|
+
forecastAdjustment: false;
|
|
6
|
+
pausable: false;
|
|
4
7
|
powerAdjustment: true;
|
|
5
8
|
powerForecastReporting: true;
|
|
6
|
-
stateForecastReporting: false;
|
|
7
9
|
startTimeAdjustment: false;
|
|
8
|
-
|
|
9
|
-
forecastAdjustment: false;
|
|
10
|
-
constraintBasedAdjustment: false;
|
|
10
|
+
stateForecastReporting: false;
|
|
11
11
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "deviceEnergyManagement">;
|
|
12
12
|
export declare class MatterbridgeDeviceEnergyManagementServer extends MatterbridgeDeviceEnergyManagementServer_base {
|
|
13
13
|
powerAdjustRequest(request: DeviceEnergyManagement.PowerAdjustRequest): Promise<void>;
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { DoorLockServer } from '@matter/node/behaviors/door-lock';
|
|
2
2
|
import { DoorLock } from '@matter/types/clusters/door-lock';
|
|
3
3
|
declare const MatterbridgeDoorLockServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/node").ClusterBehavior.Type<typeof DoorLockServer, import("@matter/types").ClusterType.WithSupportedFeatures<DoorLock, {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
weekDayAccessSchedules: false;
|
|
4
|
+
aliroBleuwb: false;
|
|
5
|
+
aliroProvisioning: false;
|
|
6
|
+
credentialOverTheAirAccess: false;
|
|
8
7
|
doorPositionSensor: false;
|
|
9
8
|
faceCredentials: false;
|
|
10
|
-
|
|
11
|
-
user: true;
|
|
12
|
-
yearDayAccessSchedules: false;
|
|
9
|
+
fingerCredentials: false;
|
|
13
10
|
holidaySchedules: false;
|
|
14
|
-
unbolting: false;
|
|
15
|
-
aliroProvisioning: false;
|
|
16
|
-
aliroBleuwb: false;
|
|
17
|
-
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/door-lock").DoorLockBaseServer.Internal, "doorLock">, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<DoorLock, {
|
|
18
11
|
pinCredential: true;
|
|
19
12
|
rfidCredential: false;
|
|
20
|
-
|
|
13
|
+
unbolting: false;
|
|
14
|
+
user: true;
|
|
21
15
|
weekDayAccessSchedules: false;
|
|
16
|
+
yearDayAccessSchedules: false;
|
|
17
|
+
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/door-lock").DoorLockBaseServer.Internal, "doorLock">, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<import("@matter/types").ClusterType.WithSupportedFeatures<DoorLock, {
|
|
18
|
+
aliroBleuwb: false;
|
|
19
|
+
aliroProvisioning: false;
|
|
20
|
+
credentialOverTheAirAccess: false;
|
|
22
21
|
doorPositionSensor: false;
|
|
23
22
|
faceCredentials: false;
|
|
24
|
-
|
|
25
|
-
user: true;
|
|
26
|
-
yearDayAccessSchedules: false;
|
|
23
|
+
fingerCredentials: false;
|
|
27
24
|
holidaySchedules: false;
|
|
25
|
+
pinCredential: true;
|
|
26
|
+
rfidCredential: false;
|
|
28
27
|
unbolting: false;
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
user: true;
|
|
29
|
+
weekDayAccessSchedules: false;
|
|
30
|
+
yearDayAccessSchedules: false;
|
|
31
31
|
}>, "doorLockAlarm" | "lockOperation" | "lockOperationError">, never>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/door-lock").DoorLockBaseServer.Internal, "doorLock">;
|
|
32
32
|
export declare class MatterbridgeDoorLockServer extends MatterbridgeDoorLockServer_base {
|
|
33
33
|
initialize(): Promise<void>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { FanControlServer } from '@matter/node/behaviors/fan-control';
|
|
2
2
|
import { FanControl } from '@matter/types/clusters/fan-control';
|
|
3
3
|
declare const MatterbridgeFanControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof FanControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<FanControl, {
|
|
4
|
-
step: true;
|
|
5
4
|
airflowDirection: false;
|
|
6
|
-
multiSpeed: false;
|
|
7
5
|
auto: true;
|
|
6
|
+
multiSpeed: false;
|
|
8
7
|
rocking: false;
|
|
8
|
+
step: true;
|
|
9
9
|
wind: false;
|
|
10
10
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "fanControl">;
|
|
11
11
|
export declare class MatterbridgeFanControlServer extends MatterbridgeFanControlServer_base {
|
|
@@ -1,9 +1,9 @@
|
|
|
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
|
-
warning: false;
|
|
5
4
|
condition: true;
|
|
6
5
|
replacementProductList: false;
|
|
6
|
+
warning: false;
|
|
7
7
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "hepaFilterMonitoring">;
|
|
8
8
|
export declare class MatterbridgeHepaFilterMonitoringServer extends MatterbridgeHepaFilterMonitoringServer_base {
|
|
9
9
|
resetCondition(): Promise<void>;
|
|
@@ -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,8 +1,8 @@
|
|
|
1
1
|
import { SmokeCoAlarmServer } from '@matter/node/behaviors/smoke-co-alarm';
|
|
2
2
|
import { SmokeCoAlarm } from '@matter/types/clusters/smoke-co-alarm';
|
|
3
3
|
declare const MatterbridgeSmokeCoAlarmServer_base: import("@matter/node").ClusterBehavior.Type<typeof SmokeCoAlarmServer, import("@matter/types").ClusterType.WithSupportedFeatures<SmokeCoAlarm, {
|
|
4
|
-
smokeAlarm: true;
|
|
5
4
|
coAlarm: true;
|
|
5
|
+
smokeAlarm: true;
|
|
6
6
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "smokeCoAlarm">;
|
|
7
7
|
export declare class MatterbridgeSmokeCoAlarmServer extends MatterbridgeSmokeCoAlarmServer_base {
|
|
8
8
|
selfTestRequest(): Promise<void>;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { ThermostatServer } from '@matter/node/behaviors/thermostat';
|
|
2
2
|
import { Thermostat } from '@matter/types/clusters/thermostat';
|
|
3
3
|
declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterBehavior.Type<typeof ThermostatServer, import("@matter/types").ClusterType.WithSupportedFeatures<Thermostat, {
|
|
4
|
-
occupancy: false;
|
|
5
|
-
presets: true;
|
|
6
|
-
heating: true;
|
|
7
|
-
cooling: true;
|
|
8
|
-
setback: false;
|
|
9
4
|
autoMode: true;
|
|
5
|
+
cooling: true;
|
|
6
|
+
heating: true;
|
|
10
7
|
localTemperatureNotExposed: false;
|
|
11
8
|
matterScheduleConfiguration: false;
|
|
9
|
+
occupancy: false;
|
|
10
|
+
presets: true;
|
|
11
|
+
setback: false;
|
|
12
12
|
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/thermostat").ThermostatBaseServer.Internal, "thermostat">;
|
|
13
13
|
export declare class MatterbridgeThermostatServer extends MatterbridgeThermostatServer_base {
|
|
14
14
|
initialize(): Promise<void>;
|
|
@@ -16,14 +16,14 @@ export declare class MatterbridgeThermostatServer extends MatterbridgeThermostat
|
|
|
16
16
|
setActivePresetRequest(request: Thermostat.SetActivePresetRequest): Promise<void>;
|
|
17
17
|
}
|
|
18
18
|
declare const MatterbridgePresetThermostatServer_base: import("@matter/node").ClusterBehavior.Type<typeof ThermostatServer, import("@matter/types").ClusterType.WithSupportedFeatures<Thermostat, {
|
|
19
|
-
occupancy: false;
|
|
20
|
-
presets: true;
|
|
21
|
-
heating: true;
|
|
22
|
-
cooling: true;
|
|
23
|
-
setback: false;
|
|
24
19
|
autoMode: true;
|
|
20
|
+
cooling: true;
|
|
21
|
+
heating: true;
|
|
25
22
|
localTemperatureNotExposed: false;
|
|
26
23
|
matterScheduleConfiguration: false;
|
|
24
|
+
occupancy: false;
|
|
25
|
+
presets: true;
|
|
26
|
+
setback: false;
|
|
27
27
|
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/thermostat").ThermostatBaseServer.Internal, "thermostat">;
|
|
28
28
|
export declare class MatterbridgePresetThermostatServer extends MatterbridgePresetThermostatServer_base {
|
|
29
29
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ValveConfigurationAndControlServer } from '@matter/node/behaviors/valve-configuration-and-control';
|
|
2
2
|
import { ValveConfigurationAndControl } from '@matter/types/clusters/valve-configuration-and-control';
|
|
3
3
|
declare const MatterbridgeValveConfigurationAndControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof ValveConfigurationAndControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<ValveConfigurationAndControl, {
|
|
4
|
-
timeSync: false;
|
|
5
4
|
level: true;
|
|
5
|
+
timeSync: false;
|
|
6
6
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "valveConfigurationAndControl">;
|
|
7
7
|
export declare class MatterbridgeValveConfigurationAndControlServer extends MatterbridgeValveConfigurationAndControlServer_base {
|
|
8
8
|
open(request: ValveConfigurationAndControl.OpenRequest): Promise<void>;
|
|
@@ -1,10 +1,10 @@
|
|
|
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;
|
|
5
|
-
tilt: true;
|
|
6
5
|
positionAwareLift: true;
|
|
7
6
|
positionAwareTilt: true;
|
|
7
|
+
tilt: true;
|
|
8
8
|
}>, import("@matter/types").ClusterType.Concrete, typeof WindowCoveringBaseServer.Internal, "windowCovering">;
|
|
9
9
|
export declare class MatterbridgeWindowCoveringServer extends MatterbridgeWindowCoveringServer_base {
|
|
10
10
|
protected internal: WindowCoveringBaseServer.Internal;
|
|
@@ -20,27 +20,27 @@ export declare class MatterbridgeWindowCoveringServer extends MatterbridgeWindow
|
|
|
20
20
|
}
|
|
21
21
|
declare const MatterbridgeLiftWindowCoveringServer_base: import("@matter/node").ClusterBehavior.Type<typeof MatterbridgeWindowCoveringServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<WindowCovering, {
|
|
22
22
|
lift: true;
|
|
23
|
-
tilt: true;
|
|
24
23
|
positionAwareLift: true;
|
|
25
24
|
positionAwareTilt: true;
|
|
25
|
+
tilt: true;
|
|
26
26
|
}>, {
|
|
27
27
|
lift: true;
|
|
28
|
-
tilt: false;
|
|
29
28
|
positionAwareLift: true;
|
|
30
29
|
positionAwareTilt: false;
|
|
30
|
+
tilt: false;
|
|
31
31
|
}>, import("@matter/types").ClusterType.Concrete, typeof WindowCoveringBaseServer.Internal, "windowCovering">;
|
|
32
32
|
export declare class MatterbridgeLiftWindowCoveringServer extends MatterbridgeLiftWindowCoveringServer_base {
|
|
33
33
|
}
|
|
34
34
|
declare const MatterbridgeLiftTiltWindowCoveringServer_base: import("@matter/node").ClusterBehavior.Type<typeof MatterbridgeWindowCoveringServer, import("@matter/types").ClusterType.WithSupportedFeatures<import("@matter/types").ClusterType.WithSupportedFeatures<WindowCovering, {
|
|
35
35
|
lift: true;
|
|
36
|
-
tilt: true;
|
|
37
36
|
positionAwareLift: true;
|
|
38
37
|
positionAwareTilt: true;
|
|
38
|
+
tilt: true;
|
|
39
39
|
}>, {
|
|
40
40
|
lift: true;
|
|
41
|
-
tilt: true;
|
|
42
41
|
positionAwareLift: true;
|
|
43
42
|
positionAwareTilt: true;
|
|
43
|
+
tilt: true;
|
|
44
44
|
}>, import("@matter/types").ClusterType.Concrete, typeof WindowCoveringBaseServer.Internal, "windowCovering">;
|
|
45
45
|
export declare class MatterbridgeLiftTiltWindowCoveringServer extends MatterbridgeLiftTiltWindowCoveringServer_base {
|
|
46
46
|
}
|
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 {
|
|
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 {
|
|
5
|
-
import {
|
|
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 {
|
|
@@ -130,7 +130,7 @@ export declare namespace ClosureControl {
|
|
|
130
130
|
}
|
|
131
131
|
export declare const ClosureControl: ClusterType.Concrete & {
|
|
132
132
|
readonly id: ClusterId & 260;
|
|
133
|
-
readonly name:
|
|
133
|
+
readonly name: 'ClosureControl';
|
|
134
134
|
readonly revision: 1;
|
|
135
135
|
readonly schema: ClusterModel;
|
|
136
136
|
readonly attributes: ClusterType.AttributeObjects<ClosureControl.Attributes>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
5
|
-
import {
|
|
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 {
|
|
@@ -148,7 +148,7 @@ export declare namespace ClosureDimension {
|
|
|
148
148
|
}
|
|
149
149
|
export declare const ClosureDimension: ClusterType.Concrete & {
|
|
150
150
|
readonly id: ClusterId & 261;
|
|
151
|
-
readonly name:
|
|
151
|
+
readonly name: 'ClosureDimension';
|
|
152
152
|
readonly revision: 1;
|
|
153
153
|
readonly schema: ClusterModel;
|
|
154
154
|
readonly attributes: ClusterType.AttributeObjects<ClosureDimension.Attributes>;
|
|
@@ -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 {
|
|
4
|
-
import {
|
|
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 {
|
|
@@ -24,7 +24,7 @@ export declare namespace SoilMeasurement {
|
|
|
24
24
|
}
|
|
25
25
|
export declare const SoilMeasurement: ClusterType.Concrete & {
|
|
26
26
|
readonly id: ClusterId & 1072;
|
|
27
|
-
readonly name:
|
|
27
|
+
readonly name: 'SoilMeasurement';
|
|
28
28
|
readonly revision: 1;
|
|
29
29
|
readonly schema: ClusterModel;
|
|
30
30
|
readonly attributes: ClusterType.AttributeObjects<SoilMeasurement.Attributes>;
|
|
@@ -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
|
|
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
|
|
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
|
|
79
|
+
if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff)
|
|
80
80
|
this.state.currentState = MediaPlayback.PlaybackState.NotPlaying;
|
|
81
81
|
return { status: MediaPlayback.Status.Success };
|
|
82
82
|
}
|
|
@@ -2,15 +2,15 @@ import { ClosureControlServer } from '@matter/node/behaviors/closure-control';
|
|
|
2
2
|
import { ClosureControl } from '@matter/types/clusters/closure-control';
|
|
3
3
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
4
4
|
declare const MatterbridgeClosureControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof ClosureControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<ClosureControl, {
|
|
5
|
-
|
|
6
|
-
positioning: true;
|
|
7
|
-
motionLatching: true;
|
|
5
|
+
calibration: false;
|
|
8
6
|
instantaneous: false;
|
|
9
|
-
|
|
7
|
+
manuallyOperable: false;
|
|
8
|
+
motionLatching: true;
|
|
10
9
|
pedestrian: false;
|
|
11
|
-
|
|
10
|
+
positioning: true;
|
|
12
11
|
protection: false;
|
|
13
|
-
|
|
12
|
+
speed: true;
|
|
13
|
+
ventilation: false;
|
|
14
14
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "closureControl">;
|
|
15
15
|
export declare class MatterbridgeClosureControlServer extends MatterbridgeClosureControlServer_base {
|
|
16
16
|
moveTo: (request: ClosureControl.MoveToRequest) => Promise<void>;
|
|
@@ -2,14 +2,14 @@ import { ClosureDimensionServer } from '@matter/node/behaviors/closure-dimension
|
|
|
2
2
|
import { ClosureDimension } from '@matter/types/clusters/closure-dimension';
|
|
3
3
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
4
4
|
declare const MatterbridgeClosureDimensionServer_base: import("@matter/node").ClusterBehavior.Type<typeof ClosureDimensionServer, import("@matter/types").ClusterType.WithSupportedFeatures<ClosureDimension, {
|
|
5
|
-
unit: false;
|
|
6
|
-
speed: true;
|
|
7
|
-
positioning: true;
|
|
8
|
-
motionLatching: true;
|
|
9
5
|
limitation: false;
|
|
10
|
-
translation: false;
|
|
11
|
-
rotation: false;
|
|
12
6
|
modulation: false;
|
|
7
|
+
motionLatching: true;
|
|
8
|
+
positioning: true;
|
|
9
|
+
rotation: false;
|
|
10
|
+
speed: true;
|
|
11
|
+
translation: false;
|
|
12
|
+
unit: false;
|
|
13
13
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "closureDimension">;
|
|
14
14
|
export declare class MatterbridgeClosureDimensionServer extends MatterbridgeClosureDimensionServer_base {
|
|
15
15
|
setTarget: (request: ClosureDimension.SetTargetRequest) => Promise<void>;
|
|
@@ -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
|
|
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
|
}
|
package/dist/devices/evse.d.ts
CHANGED
|
@@ -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';
|
|
@@ -11,10 +11,10 @@ export declare class Evse extends MatterbridgeEndpoint {
|
|
|
11
11
|
createDefaultEnergyEvseModeClusterServer(currentMode?: number, supportedModes?: EnergyEvseMode.ModeOption[]): this;
|
|
12
12
|
}
|
|
13
13
|
declare const MatterbridgeEnergyEvseServer_base: import("@matter/node").ClusterBehavior.Type<typeof EnergyEvseServer, import("@matter/types").ClusterType.WithSupportedFeatures<EnergyEvse, {
|
|
14
|
-
rfid: false;
|
|
15
14
|
chargingPreferences: true;
|
|
16
|
-
soCReporting: false;
|
|
17
15
|
plugAndCharge: false;
|
|
16
|
+
rfid: false;
|
|
17
|
+
soCReporting: false;
|
|
18
18
|
v2X: false;
|
|
19
19
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "energyEvse">;
|
|
20
20
|
export declare class MatterbridgeEnergyEvseServer extends MatterbridgeEnergyEvseServer_base {
|
|
@@ -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
|
|
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
|
}
|