@matterbridge/core 3.8.0-dev-20260525-eed6b4a → 3.8.0-dev-20260527-b4148f4

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.
@@ -49,6 +49,17 @@ export declare namespace ClosureControl {
49
49
  readonly MoveToVentilationPosition: 3;
50
50
  readonly MoveToSignaturePosition: 4;
51
51
  }
52
+ interface FeatureFlags {
53
+ positioning?: boolean;
54
+ motionLatching?: boolean;
55
+ instantaneous?: boolean;
56
+ speed?: boolean;
57
+ ventilation?: boolean;
58
+ pedestrian?: boolean;
59
+ calibration?: boolean;
60
+ protection?: boolean;
61
+ manuallyOperable?: boolean;
62
+ }
52
63
  type Feature = FeatureEnum[keyof FeatureEnum];
53
64
  type Features = Feature;
54
65
  type ClosureError = ClosureErrorEnum[keyof ClosureErrorEnum];
@@ -125,7 +136,9 @@ export declare const ClosureControl: ClusterType.Concrete & {
125
136
  readonly attributes: ClusterType.AttributeObjects<ClosureControl.Attributes>;
126
137
  readonly commands: ClusterType.CommandObjects<ClosureControl.Commands>;
127
138
  readonly events: ClusterType.EventObjects<ClosureControl.Events>;
139
+ readonly features: ClusterType.Features<ClosureControl.Features>;
128
140
  readonly Feature: ClosureControl.FeatureEnum;
141
+ readonly FeatureMap: new (value?: Partial<ClosureControl.FeatureFlags> | number) => ClosureControl.FeatureFlags;
129
142
  readonly ClosureError: ClosureControl.ClosureErrorEnum;
130
143
  readonly CurrentPosition: ClosureControl.CurrentPositionEnum;
131
144
  readonly MainState: ClosureControl.MainStateEnum;
@@ -137,8 +150,15 @@ export declare const ClosureControl: ClusterType.Concrete & {
137
150
  readonly OperationalErrorEvent: new (value?: Partial<ClosureControl.OperationalErrorEvent>) => ClosureControl.OperationalErrorEvent;
138
151
  readonly EngageStateChangedEvent: new (value?: Partial<ClosureControl.EngageStateChangedEvent>) => ClosureControl.EngageStateChangedEvent;
139
152
  readonly SecureStateChangedEvent: new (value?: Partial<ClosureControl.SecureStateChangedEvent>) => ClosureControl.SecureStateChangedEvent;
140
- readonly Typing: ClosureControl.Typing;
141
- readonly Cluster: typeof ClosureControl;
153
+ readonly Typing: ClosureControl;
154
+ readonly Cluster: ClusterType.WithCompat<typeof ClosureControl, ClosureControl>;
142
155
  readonly Complete: typeof ClosureControl;
143
156
  with(...features: ClosureControl.Feature[]): typeof ClosureControl;
144
157
  };
158
+ export interface ClosureControl extends ClusterTyping {
159
+ Attributes: ClosureControl.Attributes;
160
+ Commands: ClosureControl.Commands;
161
+ Events: ClosureControl.Events;
162
+ Features: ClosureControl.Features;
163
+ Components: ClosureControl.Components;
164
+ }
@@ -71,6 +71,16 @@ export declare namespace ClosureDimension {
71
71
  readonly DepthMask: 10;
72
72
  readonly DepthSymmetry: 11;
73
73
  }
74
+ interface FeatureFlags {
75
+ positioning?: boolean;
76
+ motionLatching?: boolean;
77
+ unit?: boolean;
78
+ limitation?: boolean;
79
+ speed?: boolean;
80
+ translation?: boolean;
81
+ rotation?: boolean;
82
+ modulation?: boolean;
83
+ }
74
84
  type Feature = FeatureEnum[keyof FeatureEnum];
75
85
  type Features = Feature;
76
86
  type ClosureUnit = ClosureUnitEnum[keyof ClosureUnitEnum];
@@ -144,7 +154,9 @@ export declare const ClosureDimension: ClusterType.Concrete & {
144
154
  readonly attributes: ClusterType.AttributeObjects<ClosureDimension.Attributes>;
145
155
  readonly commands: ClusterType.CommandObjects<ClosureDimension.Commands>;
146
156
  readonly events: ClusterType.EventObjects<Record<string, never>>;
157
+ readonly features: ClusterType.Features<ClosureDimension.Features>;
147
158
  readonly Feature: ClosureDimension.FeatureEnum;
159
+ readonly FeatureMap: new (value?: Partial<ClosureDimension.FeatureFlags> | number) => ClosureDimension.FeatureFlags;
148
160
  readonly ClosureUnit: ClosureDimension.ClosureUnitEnum;
149
161
  readonly ModulationType: ClosureDimension.ModulationTypeEnum;
150
162
  readonly Overflow: ClosureDimension.OverflowEnum;
@@ -157,8 +169,14 @@ export declare const ClosureDimension: ClusterType.Concrete & {
157
169
  readonly UnitRange: new (value?: Partial<ClosureDimension.UnitRange>) => ClosureDimension.UnitRange;
158
170
  readonly SetTargetRequest: new (value?: Partial<ClosureDimension.SetTargetRequest>) => ClosureDimension.SetTargetRequest;
159
171
  readonly StepRequest: new (value?: Partial<ClosureDimension.StepRequest>) => ClosureDimension.StepRequest;
160
- readonly Typing: ClosureDimension.Typing;
161
- readonly Cluster: typeof ClosureDimension;
172
+ readonly Typing: ClosureDimension;
173
+ readonly Cluster: ClusterType.WithCompat<typeof ClosureDimension, ClosureDimension>;
162
174
  readonly Complete: typeof ClosureDimension;
163
175
  with(...features: ClosureDimension.Feature[]): typeof ClosureDimension;
164
176
  };
177
+ export interface ClosureDimension extends ClusterTyping {
178
+ Attributes: ClosureDimension.Attributes;
179
+ Commands: ClosureDimension.Commands;
180
+ Features: ClosureDimension.Features;
181
+ Components: ClosureDimension.Components;
182
+ }
@@ -28,7 +28,12 @@ export declare const SoilMeasurement: ClusterType.Concrete & {
28
28
  readonly revision: 1;
29
29
  readonly schema: ClusterModel;
30
30
  readonly attributes: ClusterType.AttributeObjects<SoilMeasurement.Attributes>;
31
- readonly Typing: SoilMeasurement.Typing;
32
- readonly Cluster: typeof SoilMeasurement;
31
+ readonly features: Record<string, never>;
32
+ readonly Typing: SoilMeasurement;
33
+ readonly Cluster: ClusterType.WithCompat<typeof SoilMeasurement, SoilMeasurement>;
33
34
  readonly Complete: typeof SoilMeasurement;
34
35
  };
36
+ export interface SoilMeasurement extends ClusterTyping {
37
+ Attributes: SoilMeasurement.Attributes;
38
+ Components: SoilMeasurement.Components;
39
+ }
@@ -1,13 +1,13 @@
1
+ export * from './flushAsync.js';
1
2
  export * from './jestBroadcastServerSpy.js';
2
3
  export * from './jestDeviceManagerSpy.js';
3
- export * from './jestFlushAsync.js';
4
4
  export * from './jestFrontendSpy.js';
5
- export * from './jestLogAlive.js';
6
5
  export * from './jestMatterbridgeEndpointSpy.js';
7
6
  export * from './jestMatterbridgePlatformSpy.js';
8
7
  export * from './jestMatterbridgeSpy.js';
9
8
  export * from './jestMatterbridgeTest.js';
10
- export * from './jestMatterRequest.js';
11
9
  export * from './jestMatterTest.js';
12
10
  export * from './jestPluginManagerSpy.js';
13
11
  export * from './jestSetupTest.js';
12
+ export * from './logKeepAlives.js';
13
+ export * from './matterRequest.js';
@@ -1,13 +1,13 @@
1
+ export * from './flushAsync.js';
1
2
  export * from './jestBroadcastServerSpy.js';
2
3
  export * from './jestDeviceManagerSpy.js';
3
- export * from './jestFlushAsync.js';
4
4
  export * from './jestFrontendSpy.js';
5
- export * from './jestLogAlive.js';
6
5
  export * from './jestMatterbridgeEndpointSpy.js';
7
6
  export * from './jestMatterbridgePlatformSpy.js';
8
7
  export * from './jestMatterbridgeSpy.js';
9
8
  export * from './jestMatterbridgeTest.js';
10
- export * from './jestMatterRequest.js';
11
9
  export * from './jestMatterTest.js';
12
10
  export * from './jestPluginManagerSpy.js';
13
11
  export * from './jestSetupTest.js';
12
+ export * from './logKeepAlives.js';
13
+ export * from './matterRequest.js';
@@ -7,8 +7,7 @@ import { AggregatorEndpoint } from '@matter/node/endpoints';
7
7
  import { DeviceTypeId, VendorId } from '@matter/types/datatype';
8
8
  import { MATTER_STORAGE_DIR } from '@matterbridge/types';
9
9
  import { er, rs } from 'node-ansi-logger';
10
- import { bridge } from '../matterbridgeDeviceTypes.js';
11
- import { flushAsync } from './jestFlushAsync.js';
10
+ import { flushAsync } from './flushAsync.js';
12
11
  import { HOMEDIR, NAME } from './jestSetupTest.js';
13
12
  export let environment;
14
13
  export let server;
@@ -129,7 +128,7 @@ export async function closeServerNodeStores(targetServer) {
129
128
  targetServer = server;
130
129
  await targetServer?.env.get(ServerNodeStore)?.endpointStores.close();
131
130
  }
132
- export async function createServerNode(port, deviceType = bridge.code, ticks = 1, microTurns = 1, pause = 10) {
131
+ export async function createServerNode(port, deviceType = DeviceTypeId(0x000e), ticks = 1, microTurns = 1, pause = 10) {
133
132
  const { randomBytes } = await import('node:crypto');
134
133
  const random = randomBytes(8).toString('hex');
135
134
  server = await ServerNode.create({
@@ -157,6 +156,8 @@ export async function createServerNode(port, deviceType = bridge.code, ticks = 1
157
156
  listeningAddressIpv4: undefined,
158
157
  listeningAddressIpv6: undefined,
159
158
  port,
159
+ tcp: true,
160
+ transportPreference: 'udp',
160
161
  },
161
162
  operationalCredentials: {
162
163
  certification: undefined,
@@ -5,7 +5,7 @@ import { MATTER_STORAGE_DIR, NODE_STORAGE_DIR } from '@matterbridge/types';
5
5
  import { rs, UNDERLINE, UNDERLINEOFF } from 'node-ansi-logger';
6
6
  import { NodeStorageManager } from 'node-persist-manager';
7
7
  import { Matterbridge } from '../matterbridge.js';
8
- import { flushAsync } from './jestFlushAsync.js';
8
+ import { flushAsync } from './flushAsync.js';
9
9
  import { assertAllEndpointNumbersPersisted, createTestEnvironment, flushAllEndpointNumberPersistence } from './jestMatterTest.js';
10
10
  import { HOMEDIR, loggerLogSpy, originalProcessArgv } from './jestSetupTest.js';
11
11
  let server;
@@ -389,6 +389,8 @@ export class MatterNode extends EventEmitter {
389
389
  listeningAddressIpv4: this.ipv4Address,
390
390
  listeningAddressIpv6: this.ipv6Address,
391
391
  port,
392
+ tcp: true,
393
+ transportPreference: 'udp',
392
394
  },
393
395
  operationalCredentials: {
394
396
  certification: this.certification,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matterbridge/core",
3
- "version": "3.8.0-dev-20260525-eed6b4a",
3
+ "version": "3.8.0-dev-20260527-b4148f4",
4
4
  "description": "Matterbridge core library",
5
5
  "author": "https://github.com/Luligu",
6
6
  "homepage": "https://matterbridge.io/",
@@ -130,10 +130,10 @@
130
130
  ],
131
131
  "dependencies": {
132
132
  "@matter/main": "0.17.0",
133
- "@matterbridge/dgram": "3.8.0-dev-20260525-eed6b4a",
134
- "@matterbridge/thread": "3.8.0-dev-20260525-eed6b4a",
135
- "@matterbridge/types": "3.8.0-dev-20260525-eed6b4a",
136
- "@matterbridge/utils": "3.8.0-dev-20260525-eed6b4a",
133
+ "@matterbridge/dgram": "3.8.0-dev-20260527-b4148f4",
134
+ "@matterbridge/thread": "3.8.0-dev-20260527-b4148f4",
135
+ "@matterbridge/types": "3.8.0-dev-20260527-b4148f4",
136
+ "@matterbridge/utils": "3.8.0-dev-20260527-b4148f4",
137
137
  "escape-html": "1.0.3",
138
138
  "express": "5.2.1",
139
139
  "express-rate-limit": "8.5.2",