@matter/node 0.16.0-alpha.0-20251027-17770fb28 → 0.16.0-alpha.0-20251030-e9ca79f93

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 (120) hide show
  1. package/dist/cjs/behavior/Behavior.d.ts +1 -0
  2. package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
  3. package/dist/cjs/behavior/Behavior.js +5 -0
  4. package/dist/cjs/behavior/Behavior.js.map +1 -1
  5. package/dist/cjs/behavior/internal/BehaviorBacking.js +1 -1
  6. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  7. package/dist/cjs/behavior/state/managed/Datasource.d.ts +4 -5
  8. package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
  9. package/dist/cjs/behavior/state/managed/Datasource.js +6 -2
  10. package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
  11. package/dist/cjs/behavior/state/managed/ManagedReference.d.ts +3 -2
  12. package/dist/cjs/behavior/state/managed/ManagedReference.d.ts.map +1 -1
  13. package/dist/cjs/behavior/state/managed/ManagedReference.js +65 -20
  14. package/dist/cjs/behavior/state/managed/ManagedReference.js.map +1 -1
  15. package/dist/cjs/behavior/state/managed/values/ListManager.js +2 -1
  16. package/dist/cjs/behavior/state/managed/values/ListManager.js.map +1 -1
  17. package/dist/cjs/behavior/state/managed/values/StructManager.js +9 -1
  18. package/dist/cjs/behavior/state/managed/values/StructManager.js.map +1 -1
  19. package/dist/cjs/behaviors/access-control/AccessControlServer.d.ts.map +1 -1
  20. package/dist/cjs/behaviors/access-control/AccessControlServer.js +3 -3
  21. package/dist/cjs/behaviors/access-control/AccessControlServer.js.map +1 -1
  22. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
  23. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +3 -9
  24. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  25. package/dist/cjs/behaviors/service-area/ServiceAreaServer.js +2 -2
  26. package/dist/cjs/behaviors/service-area/ServiceAreaServer.js.map +1 -1
  27. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.d.ts +58 -0
  28. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.d.ts.map +1 -0
  29. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js +306 -0
  30. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js.map +6 -0
  31. package/dist/cjs/behaviors/thermostat/AtomicWriteState.d.ts +33 -0
  32. package/dist/cjs/behaviors/thermostat/AtomicWriteState.d.ts.map +1 -0
  33. package/dist/cjs/behaviors/thermostat/AtomicWriteState.js +86 -0
  34. package/dist/cjs/behaviors/thermostat/AtomicWriteState.js.map +6 -0
  35. package/dist/cjs/behaviors/thermostat/ThermostatBehavior.d.ts +12 -0
  36. package/dist/cjs/behaviors/thermostat/ThermostatBehavior.d.ts.map +1 -1
  37. package/dist/cjs/behaviors/thermostat/ThermostatInterface.d.ts +1 -0
  38. package/dist/cjs/behaviors/thermostat/ThermostatInterface.d.ts.map +1 -1
  39. package/dist/cjs/behaviors/thermostat/ThermostatServer.d.ts +894 -3
  40. package/dist/cjs/behaviors/thermostat/ThermostatServer.d.ts.map +1 -1
  41. package/dist/cjs/behaviors/thermostat/ThermostatServer.js +1216 -1
  42. package/dist/cjs/behaviors/thermostat/ThermostatServer.js.map +2 -2
  43. package/dist/cjs/devices/water-heater.d.ts +24 -0
  44. package/dist/cjs/devices/water-heater.d.ts.map +1 -1
  45. package/dist/cjs/endpoint/Endpoint.d.ts +36 -2
  46. package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
  47. package/dist/cjs/endpoint/Endpoint.js +17 -14
  48. package/dist/cjs/endpoint/Endpoint.js.map +1 -1
  49. package/dist/cjs/endpoint/properties/EndpointContainer.d.ts +1 -0
  50. package/dist/cjs/endpoint/properties/EndpointContainer.d.ts.map +1 -1
  51. package/dist/cjs/endpoint/properties/EndpointContainer.js +3 -0
  52. package/dist/cjs/endpoint/properties/EndpointContainer.js.map +1 -1
  53. package/dist/esm/behavior/Behavior.d.ts +1 -0
  54. package/dist/esm/behavior/Behavior.d.ts.map +1 -1
  55. package/dist/esm/behavior/Behavior.js +5 -0
  56. package/dist/esm/behavior/Behavior.js.map +1 -1
  57. package/dist/esm/behavior/internal/BehaviorBacking.js +2 -2
  58. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  59. package/dist/esm/behavior/state/managed/Datasource.d.ts +4 -5
  60. package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
  61. package/dist/esm/behavior/state/managed/Datasource.js +7 -3
  62. package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
  63. package/dist/esm/behavior/state/managed/ManagedReference.d.ts +3 -2
  64. package/dist/esm/behavior/state/managed/ManagedReference.d.ts.map +1 -1
  65. package/dist/esm/behavior/state/managed/ManagedReference.js +66 -21
  66. package/dist/esm/behavior/state/managed/ManagedReference.js.map +1 -1
  67. package/dist/esm/behavior/state/managed/values/ListManager.js +2 -1
  68. package/dist/esm/behavior/state/managed/values/ListManager.js.map +1 -1
  69. package/dist/esm/behavior/state/managed/values/StructManager.js +9 -1
  70. package/dist/esm/behavior/state/managed/values/StructManager.js.map +1 -1
  71. package/dist/esm/behaviors/access-control/AccessControlServer.d.ts.map +1 -1
  72. package/dist/esm/behaviors/access-control/AccessControlServer.js +3 -3
  73. package/dist/esm/behaviors/access-control/AccessControlServer.js.map +1 -1
  74. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
  75. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +3 -9
  76. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  77. package/dist/esm/behaviors/service-area/ServiceAreaServer.js +2 -2
  78. package/dist/esm/behaviors/service-area/ServiceAreaServer.js.map +1 -1
  79. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.d.ts +58 -0
  80. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.d.ts.map +1 -0
  81. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js +293 -0
  82. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js.map +6 -0
  83. package/dist/esm/behaviors/thermostat/AtomicWriteState.d.ts +33 -0
  84. package/dist/esm/behaviors/thermostat/AtomicWriteState.d.ts.map +1 -0
  85. package/dist/esm/behaviors/thermostat/AtomicWriteState.js +66 -0
  86. package/dist/esm/behaviors/thermostat/AtomicWriteState.js.map +6 -0
  87. package/dist/esm/behaviors/thermostat/ThermostatBehavior.d.ts +12 -0
  88. package/dist/esm/behaviors/thermostat/ThermostatBehavior.d.ts.map +1 -1
  89. package/dist/esm/behaviors/thermostat/ThermostatInterface.d.ts +1 -0
  90. package/dist/esm/behaviors/thermostat/ThermostatInterface.d.ts.map +1 -1
  91. package/dist/esm/behaviors/thermostat/ThermostatServer.d.ts +894 -3
  92. package/dist/esm/behaviors/thermostat/ThermostatServer.d.ts.map +1 -1
  93. package/dist/esm/behaviors/thermostat/ThermostatServer.js +1225 -1
  94. package/dist/esm/behaviors/thermostat/ThermostatServer.js.map +2 -2
  95. package/dist/esm/devices/water-heater.d.ts +24 -0
  96. package/dist/esm/devices/water-heater.d.ts.map +1 -1
  97. package/dist/esm/endpoint/Endpoint.d.ts +36 -2
  98. package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
  99. package/dist/esm/endpoint/Endpoint.js +17 -14
  100. package/dist/esm/endpoint/Endpoint.js.map +1 -1
  101. package/dist/esm/endpoint/properties/EndpointContainer.d.ts +1 -0
  102. package/dist/esm/endpoint/properties/EndpointContainer.d.ts.map +1 -1
  103. package/dist/esm/endpoint/properties/EndpointContainer.js +3 -0
  104. package/dist/esm/endpoint/properties/EndpointContainer.js.map +1 -1
  105. package/package.json +7 -7
  106. package/src/behavior/Behavior.ts +10 -0
  107. package/src/behavior/internal/BehaviorBacking.ts +2 -2
  108. package/src/behavior/state/managed/Datasource.ts +14 -7
  109. package/src/behavior/state/managed/ManagedReference.ts +67 -19
  110. package/src/behavior/state/managed/values/ListManager.ts +1 -0
  111. package/src/behavior/state/managed/values/StructManager.ts +13 -3
  112. package/src/behaviors/access-control/AccessControlServer.ts +3 -7
  113. package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +5 -9
  114. package/src/behaviors/service-area/ServiceAreaServer.ts +2 -2
  115. package/src/behaviors/thermostat/AtomicWriteHandler.ts +412 -0
  116. package/src/behaviors/thermostat/AtomicWriteState.ts +91 -0
  117. package/src/behaviors/thermostat/ThermostatInterface.ts +2 -0
  118. package/src/behaviors/thermostat/ThermostatServer.ts +1487 -3
  119. package/src/endpoint/Endpoint.ts +61 -5
  120. package/src/endpoint/properties/EndpointContainer.ts +4 -0
@@ -18,6 +18,7 @@ import {
18
18
  Lifecycle,
19
19
  Logger,
20
20
  MaybePromise,
21
+ Observable,
21
22
  toHex,
22
23
  UninitializedDependencyError,
23
24
  } from "#general";
@@ -174,11 +175,18 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
174
175
 
175
176
  /**
176
177
  * Current state for a specific behavior ID.
178
+ *
179
+ * Be aware that using a string type does not provide type checking and does not enforce the correctness of the used
180
+ * Behavior type including all enabled features. Because of this the returned state is typed as a plain string
181
+ * indexed record (Val.Struct). Please ensure to have proper checks in place when using this method with string type.
177
182
  */
178
183
  stateOf(type: string): Immutable<Val.Struct>;
179
184
 
180
185
  /**
181
186
  * Current state for a specific behavior.
187
+ *
188
+ * This is the recommended way to access state for a specific behavior because it provides proper type checking
189
+ * and enforces the correctness of the used Behavior type including all enabled features.
182
190
  */
183
191
  stateOf<T extends Behavior.Type>(type: T): Immutable<Behavior.StateOf<T>>;
184
192
 
@@ -256,10 +264,37 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
256
264
  *
257
265
  * The patch semantics used here are identical to {@link set}.
258
266
  *
267
+ * This is the recommended way to set state for a single behavior because it provides proper type checking and
268
+ * enforces the correctness of the used Behavior type including all enabled features.
269
+ *
259
270
  * @param type the {@link Behavior} to patch
260
271
  * @param values the values to change
261
272
  */
262
- async setStateOf<T extends Behavior.Type>(type: T, values: Behavior.PatchStateOf<T>) {
273
+ async setStateOf<T extends Behavior.Type>(type: T, values: Behavior.PatchStateOf<T>): Promise<void>;
274
+
275
+ /**
276
+ * Update state values for a single behavior ID.
277
+ *
278
+ * The patch semantics used here are identical to {@link set}.
279
+ *
280
+ * Be aware that using a string type does not provide type checking and does not enforce the correctness of the used
281
+ * Behavior type including all enabled features. Expect runtime errors if the provided values are not compatible
282
+ * with the actual Behavior type.
283
+ *
284
+ * @param type the {@link Behavior} to patch
285
+ * @param values the values to change
286
+ */
287
+ async setStateOf(type: string, values: Val.Struct): Promise<void>;
288
+
289
+ async setStateOf(type: Behavior.Type | string, values: Val.Struct) {
290
+ if (typeof type === "string") {
291
+ const typeName = type;
292
+ type = this.behaviors.supported[type];
293
+ if (type === undefined) {
294
+ throw new ImplementationError(`Behavior ${typeName} is not supported by ${this}`);
295
+ }
296
+ }
297
+
263
298
  await this.act(`setStateOf<${this}>`, async agent => {
264
299
  const behavior = agent.get(type);
265
300
 
@@ -312,14 +347,35 @@ export class Endpoint<T extends EndpointType = EndpointType.Empty> {
312
347
  return this.#events;
313
348
  }
314
349
 
350
+ /**
351
+ * Events for a specific behavior ID.
352
+ *
353
+ * Be aware that using a string type does not provide type checking and does not enforce the correctness of the used
354
+ * Behavior type including all enabled features. Because of this each event is typed as Observable | undefined.
355
+ * Please ensure to have proper checks in place when using this method with string type.
356
+ */
357
+ eventsOf(type: string): Immutable<Record<string, Observable | undefined>>;
358
+
315
359
  /**
316
360
  * Events for a specific behavior.
361
+ *
362
+ * This is the recommended way to access events for a specific behavior because it provides proper type checking
363
+ * and enforces the correctness of the used Behavior type including all enabled features.
317
364
  */
318
- eventsOf<T extends Behavior.Type>(type: T) {
319
- if (!this.behaviors.has(type)) {
320
- throw new ImplementationError(`Behavior ${type.id} is not supported by this endpoint`);
365
+ eventsOf<T extends Behavior.Type>(type: T | string): Behavior.EventsOf<T>;
366
+
367
+ eventsOf(type: Behavior.Type | string): unknown {
368
+ if (typeof type === "string") {
369
+ if (!(type in this.#stateView)) {
370
+ throw new ImplementationError(`Behavior ${type} is not supported by ${this}`);
371
+ }
372
+ } else {
373
+ if (!this.behaviors.has(type)) {
374
+ throw new ImplementationError(`Behavior ${type.id} is not supported by this endpoint`);
375
+ }
376
+ type = type.id;
321
377
  }
322
- return this.#events[type.id] as Behavior.EventsOf<T>;
378
+ return this.#events[type];
323
379
  }
324
380
 
325
381
  get construction() {
@@ -72,6 +72,10 @@ export class EndpointContainer<T extends Endpoint = Endpoint>
72
72
  return this.#children.deleted;
73
73
  }
74
74
 
75
+ get empty() {
76
+ return this.#children.empty;
77
+ }
78
+
75
79
  get size() {
76
80
  return this.#children.size;
77
81
  }