@matter/node 0.16.0-alpha.0-20251108-514b3f69e → 0.16.0-alpha.0-20251110-c4c70a41b

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 (212) hide show
  1. package/dist/cjs/behavior/cluster/ClientBehavior.d.ts +0 -7
  2. package/dist/cjs/behavior/cluster/ClientBehavior.d.ts.map +1 -1
  3. package/dist/cjs/behavior/cluster/ClientBehavior.js +2 -8
  4. package/dist/cjs/behavior/cluster/ClientBehavior.js.map +2 -2
  5. package/dist/cjs/behavior/cluster/ClusterBehavior.d.ts +1 -1
  6. package/dist/cjs/behavior/cluster/ClusterBehavior.d.ts.map +1 -1
  7. package/dist/cjs/behavior/cluster/ClusterBehavior.js +9 -4
  8. package/dist/cjs/behavior/cluster/ClusterBehavior.js.map +1 -1
  9. package/dist/cjs/behavior/cluster/ClusterBehaviorCache.d.ts +7 -1
  10. package/dist/cjs/behavior/cluster/ClusterBehaviorCache.d.ts.map +1 -1
  11. package/dist/cjs/behavior/cluster/ClusterBehaviorCache.js +7 -5
  12. package/dist/cjs/behavior/cluster/ClusterBehaviorCache.js.map +1 -1
  13. package/dist/cjs/behavior/cluster/ClusterBehaviorType.d.ts +57 -0
  14. package/dist/cjs/behavior/cluster/ClusterBehaviorType.d.ts.map +1 -0
  15. package/dist/cjs/behavior/cluster/{ClusterBehaviorUtil.js → ClusterBehaviorType.js} +70 -39
  16. package/dist/cjs/behavior/cluster/ClusterBehaviorType.js.map +6 -0
  17. package/dist/cjs/behavior/cluster/ClusterEvents.d.ts +1 -1
  18. package/dist/cjs/behavior/cluster/ClusterEvents.d.ts.map +1 -1
  19. package/dist/cjs/behavior/cluster/ClusterState.d.ts +1 -1
  20. package/dist/cjs/behavior/cluster/ClusterState.d.ts.map +1 -1
  21. package/dist/cjs/behavior/cluster/ValidatedElements.js +2 -2
  22. package/dist/cjs/behavior/cluster/ValidatedElements.js.map +1 -1
  23. package/dist/cjs/behavior/cluster/{ClusterBehaviorUtil.d.ts → cluster-behavior-utils.d.ts} +10 -8
  24. package/dist/cjs/behavior/cluster/cluster-behavior-utils.d.ts.map +1 -0
  25. package/dist/cjs/behavior/cluster/cluster-behavior-utils.js +41 -0
  26. package/dist/cjs/behavior/cluster/cluster-behavior-utils.js.map +6 -0
  27. package/dist/cjs/behavior/cluster/index.d.ts +2 -1
  28. package/dist/cjs/behavior/cluster/index.d.ts.map +1 -1
  29. package/dist/cjs/behavior/cluster/index.js +2 -1
  30. package/dist/cjs/behavior/cluster/index.js.map +1 -1
  31. package/dist/cjs/behavior/context/server/LocalActorContext.d.ts +4 -0
  32. package/dist/cjs/behavior/context/server/LocalActorContext.d.ts.map +1 -1
  33. package/dist/cjs/behavior/context/server/LocalActorContext.js +2 -3
  34. package/dist/cjs/behavior/context/server/LocalActorContext.js.map +1 -1
  35. package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts +4 -0
  36. package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
  37. package/dist/cjs/behavior/context/server/RemoteActorContext.js +1 -0
  38. package/dist/cjs/behavior/context/server/RemoteActorContext.js.map +1 -1
  39. package/dist/cjs/behavior/internal/BehaviorBacking.js +2 -2
  40. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  41. package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  42. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +3 -3
  43. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  44. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +1 -1
  45. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  46. package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.d.ts +6 -1
  47. package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.d.ts.map +1 -1
  48. package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.js +2 -2
  49. package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.js.map +1 -1
  50. package/dist/cjs/endpoint/Endpoint.d.ts +8 -0
  51. package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
  52. package/dist/cjs/endpoint/Endpoint.js +11 -3
  53. package/dist/cjs/endpoint/Endpoint.js.map +1 -1
  54. package/dist/cjs/endpoint/properties/Behaviors.d.ts +1 -1
  55. package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
  56. package/dist/cjs/endpoint/properties/Behaviors.js +6 -3
  57. package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
  58. package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts +0 -4
  59. package/dist/cjs/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
  60. package/dist/cjs/endpoint/properties/EndpointInitializer.js +0 -6
  61. package/dist/cjs/endpoint/properties/EndpointInitializer.js.map +1 -1
  62. package/dist/cjs/node/Node.d.ts.map +1 -1
  63. package/dist/cjs/node/Node.js +2 -1
  64. package/dist/cjs/node/Node.js.map +1 -1
  65. package/dist/cjs/node/client/ClientCommandMethod.d.ts +11 -0
  66. package/dist/cjs/node/client/ClientCommandMethod.d.ts.map +1 -0
  67. package/dist/cjs/node/client/ClientCommandMethod.js +69 -0
  68. package/dist/cjs/node/client/ClientCommandMethod.js.map +6 -0
  69. package/dist/cjs/node/client/ClientEndpointInitializer.d.ts +0 -2
  70. package/dist/cjs/node/client/ClientEndpointInitializer.d.ts.map +1 -1
  71. package/dist/cjs/node/client/ClientEndpointInitializer.js +3 -34
  72. package/dist/cjs/node/client/ClientEndpointInitializer.js.map +1 -1
  73. package/dist/cjs/node/client/ClientStructure.d.ts.map +1 -1
  74. package/dist/cjs/node/client/ClientStructure.js +164 -32
  75. package/dist/cjs/node/client/ClientStructure.js.map +2 -2
  76. package/dist/cjs/node/client/ClientStructureEvents.d.ts +22 -0
  77. package/dist/cjs/node/client/ClientStructureEvents.d.ts.map +1 -0
  78. package/dist/cjs/node/client/ClientStructureEvents.js +92 -0
  79. package/dist/cjs/node/client/ClientStructureEvents.js.map +6 -0
  80. package/dist/cjs/node/client/PeerBehavior.d.ts +14 -1
  81. package/dist/cjs/node/client/PeerBehavior.d.ts.map +1 -1
  82. package/dist/cjs/node/client/PeerBehavior.js +111 -71
  83. package/dist/cjs/node/client/PeerBehavior.js.map +1 -1
  84. package/dist/cjs/node/client/Peers.d.ts +17 -0
  85. package/dist/cjs/node/client/Peers.d.ts.map +1 -1
  86. package/dist/cjs/node/client/Peers.js +96 -42
  87. package/dist/cjs/node/client/Peers.js.map +1 -1
  88. package/dist/cjs/node/server/ServerSubscription.d.ts +1 -1
  89. package/dist/cjs/node/server/ServerSubscription.d.ts.map +1 -1
  90. package/dist/cjs/node/server/ServerSubscription.js +2 -3
  91. package/dist/cjs/node/server/ServerSubscription.js.map +1 -1
  92. package/dist/esm/behavior/cluster/ClientBehavior.d.ts +0 -7
  93. package/dist/esm/behavior/cluster/ClientBehavior.d.ts.map +1 -1
  94. package/dist/esm/behavior/cluster/ClientBehavior.js +2 -8
  95. package/dist/esm/behavior/cluster/ClientBehavior.js.map +2 -2
  96. package/dist/esm/behavior/cluster/ClusterBehavior.d.ts +1 -1
  97. package/dist/esm/behavior/cluster/ClusterBehavior.d.ts.map +1 -1
  98. package/dist/esm/behavior/cluster/ClusterBehavior.js +9 -4
  99. package/dist/esm/behavior/cluster/ClusterBehavior.js.map +1 -1
  100. package/dist/esm/behavior/cluster/ClusterBehaviorCache.d.ts +7 -1
  101. package/dist/esm/behavior/cluster/ClusterBehaviorCache.d.ts.map +1 -1
  102. package/dist/esm/behavior/cluster/ClusterBehaviorCache.js +7 -5
  103. package/dist/esm/behavior/cluster/ClusterBehaviorCache.js.map +1 -1
  104. package/dist/esm/behavior/cluster/ClusterBehaviorType.d.ts +57 -0
  105. package/dist/esm/behavior/cluster/ClusterBehaviorType.d.ts.map +1 -0
  106. package/dist/esm/behavior/cluster/{ClusterBehaviorUtil.js → ClusterBehaviorType.js} +66 -35
  107. package/dist/esm/behavior/cluster/ClusterBehaviorType.js.map +6 -0
  108. package/dist/esm/behavior/cluster/ClusterEvents.d.ts +1 -1
  109. package/dist/esm/behavior/cluster/ClusterEvents.d.ts.map +1 -1
  110. package/dist/esm/behavior/cluster/ClusterState.d.ts +1 -1
  111. package/dist/esm/behavior/cluster/ClusterState.d.ts.map +1 -1
  112. package/dist/esm/behavior/cluster/ValidatedElements.js +1 -1
  113. package/dist/esm/behavior/cluster/{ClusterBehaviorUtil.d.ts → cluster-behavior-utils.d.ts} +10 -8
  114. package/dist/esm/behavior/cluster/cluster-behavior-utils.d.ts.map +1 -0
  115. package/dist/esm/behavior/cluster/cluster-behavior-utils.js +21 -0
  116. package/dist/esm/behavior/cluster/cluster-behavior-utils.js.map +6 -0
  117. package/dist/esm/behavior/cluster/index.d.ts +2 -1
  118. package/dist/esm/behavior/cluster/index.d.ts.map +1 -1
  119. package/dist/esm/behavior/cluster/index.js +2 -1
  120. package/dist/esm/behavior/cluster/index.js.map +1 -1
  121. package/dist/esm/behavior/context/server/LocalActorContext.d.ts +4 -0
  122. package/dist/esm/behavior/context/server/LocalActorContext.d.ts.map +1 -1
  123. package/dist/esm/behavior/context/server/LocalActorContext.js +2 -3
  124. package/dist/esm/behavior/context/server/LocalActorContext.js.map +1 -1
  125. package/dist/esm/behavior/context/server/RemoteActorContext.d.ts +4 -0
  126. package/dist/esm/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
  127. package/dist/esm/behavior/context/server/RemoteActorContext.js +1 -0
  128. package/dist/esm/behavior/context/server/RemoteActorContext.js.map +1 -1
  129. package/dist/esm/behavior/internal/BehaviorBacking.js +2 -2
  130. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  131. package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  132. package/dist/esm/behavior/system/commissioning/CommissioningServer.js +4 -3
  133. package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  134. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +1 -1
  135. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  136. package/dist/esm/behaviors/operational-credentials/VendorIdVerification.d.ts +6 -1
  137. package/dist/esm/behaviors/operational-credentials/VendorIdVerification.d.ts.map +1 -1
  138. package/dist/esm/behaviors/operational-credentials/VendorIdVerification.js +1 -1
  139. package/dist/esm/behaviors/operational-credentials/VendorIdVerification.js.map +1 -1
  140. package/dist/esm/endpoint/Endpoint.d.ts +8 -0
  141. package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
  142. package/dist/esm/endpoint/Endpoint.js +11 -3
  143. package/dist/esm/endpoint/Endpoint.js.map +1 -1
  144. package/dist/esm/endpoint/properties/Behaviors.d.ts +1 -1
  145. package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
  146. package/dist/esm/endpoint/properties/Behaviors.js +6 -3
  147. package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
  148. package/dist/esm/endpoint/properties/EndpointInitializer.d.ts +0 -4
  149. package/dist/esm/endpoint/properties/EndpointInitializer.d.ts.map +1 -1
  150. package/dist/esm/endpoint/properties/EndpointInitializer.js +0 -6
  151. package/dist/esm/endpoint/properties/EndpointInitializer.js.map +1 -1
  152. package/dist/esm/node/Node.d.ts.map +1 -1
  153. package/dist/esm/node/Node.js +2 -1
  154. package/dist/esm/node/Node.js.map +1 -1
  155. package/dist/esm/node/client/ClientCommandMethod.d.ts +11 -0
  156. package/dist/esm/node/client/ClientCommandMethod.d.ts.map +1 -0
  157. package/dist/esm/node/client/ClientCommandMethod.js +49 -0
  158. package/dist/esm/node/client/ClientCommandMethod.js.map +6 -0
  159. package/dist/esm/node/client/ClientEndpointInitializer.d.ts +0 -2
  160. package/dist/esm/node/client/ClientEndpointInitializer.d.ts.map +1 -1
  161. package/dist/esm/node/client/ClientEndpointInitializer.js +3 -34
  162. package/dist/esm/node/client/ClientEndpointInitializer.js.map +1 -1
  163. package/dist/esm/node/client/ClientStructure.d.ts.map +1 -1
  164. package/dist/esm/node/client/ClientStructure.js +164 -32
  165. package/dist/esm/node/client/ClientStructure.js.map +2 -2
  166. package/dist/esm/node/client/ClientStructureEvents.d.ts +22 -0
  167. package/dist/esm/node/client/ClientStructureEvents.d.ts.map +1 -0
  168. package/dist/esm/node/client/ClientStructureEvents.js +72 -0
  169. package/dist/esm/node/client/ClientStructureEvents.js.map +6 -0
  170. package/dist/esm/node/client/PeerBehavior.d.ts +14 -1
  171. package/dist/esm/node/client/PeerBehavior.d.ts.map +1 -1
  172. package/dist/esm/node/client/PeerBehavior.js +119 -74
  173. package/dist/esm/node/client/PeerBehavior.js.map +1 -1
  174. package/dist/esm/node/client/Peers.d.ts +17 -0
  175. package/dist/esm/node/client/Peers.d.ts.map +1 -1
  176. package/dist/esm/node/client/Peers.js +106 -43
  177. package/dist/esm/node/client/Peers.js.map +1 -1
  178. package/dist/esm/node/server/ServerSubscription.d.ts +1 -1
  179. package/dist/esm/node/server/ServerSubscription.d.ts.map +1 -1
  180. package/dist/esm/node/server/ServerSubscription.js +2 -3
  181. package/dist/esm/node/server/ServerSubscription.js.map +1 -1
  182. package/package.json +7 -7
  183. package/src/behavior/cluster/ClientBehavior.ts +2 -16
  184. package/src/behavior/cluster/ClusterBehavior.ts +9 -4
  185. package/src/behavior/cluster/ClusterBehaviorCache.ts +16 -9
  186. package/src/behavior/cluster/{ClusterBehaviorUtil.ts → ClusterBehaviorType.ts} +160 -64
  187. package/src/behavior/cluster/ClusterEvents.ts +1 -1
  188. package/src/behavior/cluster/ClusterState.ts +1 -1
  189. package/src/behavior/cluster/ValidatedElements.ts +1 -1
  190. package/src/behavior/cluster/cluster-behavior-utils.ts +48 -0
  191. package/src/behavior/cluster/index.ts +2 -1
  192. package/src/behavior/context/server/LocalActorContext.ts +8 -4
  193. package/src/behavior/context/server/RemoteActorContext.ts +6 -0
  194. package/src/behavior/internal/BehaviorBacking.ts +2 -2
  195. package/src/behavior/system/commissioning/CommissioningServer.ts +4 -3
  196. package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +1 -1
  197. package/src/behaviors/operational-credentials/VendorIdVerification.ts +3 -2
  198. package/src/endpoint/Endpoint.ts +23 -3
  199. package/src/endpoint/properties/Behaviors.ts +12 -6
  200. package/src/endpoint/properties/EndpointInitializer.ts +0 -7
  201. package/src/node/Node.ts +2 -1
  202. package/src/node/client/ClientCommandMethod.ts +63 -0
  203. package/src/node/client/ClientEndpointInitializer.ts +6 -39
  204. package/src/node/client/ClientStructure.ts +133 -27
  205. package/src/node/client/ClientStructureEvents.ts +97 -0
  206. package/src/node/client/PeerBehavior.ts +185 -104
  207. package/src/node/client/Peers.ts +131 -51
  208. package/src/node/server/ServerSubscription.ts +3 -3
  209. package/dist/cjs/behavior/cluster/ClusterBehaviorUtil.d.ts.map +0 -1
  210. package/dist/cjs/behavior/cluster/ClusterBehaviorUtil.js.map +0 -6
  211. package/dist/esm/behavior/cluster/ClusterBehaviorUtil.d.ts.map +0 -1
  212. package/dist/esm/behavior/cluster/ClusterBehaviorUtil.js.map +0 -6
@@ -249,7 +249,6 @@ class ServerSubscription extends Subscription {
249
249
  }
250
250
  /**
251
251
  * Determine all attributes that have changed since the last update and send them out to the subscriber.
252
- * Important: This method MUST NOT be called directly. Use triggerSendUpdate() instead!
253
252
  */
254
253
  async #sendUpdate(onlyWithData = false) {
255
254
  const attributeFilter = this.#outstandingAttributeUpdates;
@@ -438,7 +437,7 @@ class ServerSubscription extends Subscription {
438
437
  /**
439
438
  * Closes the subscription and flushes all outstanding data updates if requested.
440
439
  */
441
- async close(graceful = false, cancelledByPeer = false) {
440
+ async close(flush = false, cancelledByPeer = false) {
442
441
  if (this.isClosed) {
443
442
  return;
444
443
  }
@@ -446,7 +445,7 @@ class ServerSubscription extends Subscription {
446
445
  this.isCanceledByPeer = true;
447
446
  }
448
447
  await this.destroy();
449
- if (graceful) {
448
+ if (flush) {
450
449
  await this.#flush();
451
450
  }
452
451
  if (this.#currentUpdatePromise) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/node/server/ServerSubscription.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["ServerSubscriptionConfig"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/node",
3
- "version": "0.16.0-alpha.0-20251108-514b3f69e",
3
+ "version": "0.16.0-alpha.0-20251110-c4c70a41b",
4
4
  "description": "API for building Matter nodes",
5
5
  "keywords": [
6
6
  "iot",
@@ -42,14 +42,14 @@
42
42
  "#*": "./src/*"
43
43
  },
44
44
  "dependencies": {
45
- "@matter/general": "0.16.0-alpha.0-20251108-514b3f69e",
46
- "@matter/model": "0.16.0-alpha.0-20251108-514b3f69e",
47
- "@matter/types": "0.16.0-alpha.0-20251108-514b3f69e",
48
- "@matter/protocol": "0.16.0-alpha.0-20251108-514b3f69e"
45
+ "@matter/general": "0.16.0-alpha.0-20251110-c4c70a41b",
46
+ "@matter/model": "0.16.0-alpha.0-20251110-c4c70a41b",
47
+ "@matter/types": "0.16.0-alpha.0-20251110-c4c70a41b",
48
+ "@matter/protocol": "0.16.0-alpha.0-20251110-c4c70a41b"
49
49
  },
50
50
  "devDependencies": {
51
- "@matter/tools": "0.16.0-alpha.0-20251108-514b3f69e",
52
- "@matter/testing": "0.16.0-alpha.0-20251108-514b3f69e"
51
+ "@matter/tools": "0.16.0-alpha.0-20251110-c4c70a41b",
52
+ "@matter/testing": "0.16.0-alpha.0-20251110-c4c70a41b"
53
53
  },
54
54
  "files": [
55
55
  "dist/**/*",
@@ -4,13 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
- import { Behavior } from "#behavior/Behavior.js";
8
7
  import type { ClusterType } from "#types";
9
8
  import { ClusterBehavior } from "./ClusterBehavior.js";
10
-
11
- const isClient = Symbol("is-client");
12
-
13
- type ClientBehaviorType = { [isClient]?: boolean };
9
+ import { markClientBehavior } from "./cluster-behavior-utils.js";
14
10
 
15
11
  /**
16
12
  * Client view of a {@link ClusterBehavior}.
@@ -24,17 +20,7 @@ type ClientBehaviorType = { [isClient]?: boolean };
24
20
  export function ClientBehavior<const T extends ClusterType>(cluster: T): ClusterBehavior.Type<T> {
25
21
  const behavior = ClusterBehavior.for(cluster, undefined, `${cluster.name}Client`);
26
22
 
27
- (behavior as ClientBehaviorType)[isClient] = true;
23
+ markClientBehavior(behavior);
28
24
 
29
25
  return behavior;
30
26
  }
31
-
32
- export namespace ClientBehavior {
33
- /**
34
- * Determine whether a behavior is a client.
35
- */
36
- export function is(type: Behavior.Type) {
37
- // Use hasOwn so any derivation voids the client assertion
38
- return (type as ClientBehaviorType)[isClient] && Object.hasOwn(type, isClient);
39
- }
40
- }
@@ -13,8 +13,8 @@ import { Behavior } from "../Behavior.js";
13
13
  import type { BehaviorBacking } from "../internal/BehaviorBacking.js";
14
14
  import type { RootSupervisor } from "../supervision/RootSupervisor.js";
15
15
  import { NetworkBehavior } from "../system/network/NetworkBehavior.js";
16
- import { ClientBehavior } from "./ClientBehavior.js";
17
- import { ExtensionInterfaceOf, createType, type ClusterOf } from "./ClusterBehaviorUtil.js";
16
+ import { ExtensionInterfaceOf, isClientBehavior, type ClusterOf } from "./cluster-behavior-utils.js";
17
+ import { ClusterBehaviorType } from "./ClusterBehaviorType.js";
18
18
  import type { ClusterEvents } from "./ClusterEvents.js";
19
19
  import { ClusterInterface } from "./ClusterInterface.js";
20
20
  import type { ClusterState } from "./ClusterState.js";
@@ -105,7 +105,12 @@ export class ClusterBehavior extends Behavior {
105
105
  schema?: Schema.Cluster,
106
106
  name?: string,
107
107
  ) {
108
- return createType(cluster, this, schema, name) as ClusterBehavior.Type<ClusterT, This>;
108
+ return ClusterBehaviorType({
109
+ cluster,
110
+ base: this,
111
+ schema,
112
+ name,
113
+ }) as ClusterBehavior.Type<ClusterT, This>;
109
114
  }
110
115
 
111
116
  /**
@@ -182,7 +187,7 @@ export class ClusterBehavior extends Behavior {
182
187
  //
183
188
  // Further, we know the "Client" classes can have no extension methods or properties, so we don't need to do an
184
189
  // exact class match for type safety
185
- if (ClientBehavior.is(other) && otherCluster.id === this.cluster.id) {
190
+ if (isClientBehavior(other) && otherCluster.id === this.cluster.id) {
186
191
  return true;
187
192
  }
188
193
 
@@ -9,20 +9,27 @@ import { Schema } from "#model";
9
9
  import { ClusterType } from "#types";
10
10
  import type { ClusterBehavior } from "./ClusterBehavior.js";
11
11
 
12
+ const behaviorCache = new WeakMap<
13
+ Behavior.Type,
14
+ WeakMap<ClusterType, WeakMap<Schema, WeakRef<ClusterBehavior.Type<any>>>>
15
+ >();
16
+
17
+ const clientCache = new WeakMap<
18
+ Behavior.Type,
19
+ WeakMap<ClusterType, WeakMap<Schema, WeakRef<ClusterBehavior.Type<any>>>>
20
+ >();
21
+
12
22
  /**
13
23
  * To save memory we cache behavior implementations specialized for specific clusters. This allows for efficient
14
24
  * configuration of behaviors with conditional runtime logic.
15
25
  *
16
26
  * We use the cluster and schema as cache keys so this relies on similar caching for those items.
17
27
  */
18
- const typeCache = new WeakMap<
19
- Behavior.Type,
20
- WeakMap<ClusterType, WeakMap<Schema, WeakRef<ClusterBehavior.Type<any>>>>
21
- >();
22
-
23
28
  export namespace ClusterBehaviorCache {
24
- export function get(cluster: ClusterType, base: Behavior.Type, schema: Schema) {
25
- const baseCache = typeCache.get(base);
29
+ export function get(cluster: ClusterType, base: Behavior.Type, schema: Schema, forClient?: boolean) {
30
+ const cache = forClient ? clientCache : behaviorCache;
31
+
32
+ const baseCache = cache.get(base);
26
33
  if (baseCache === undefined) {
27
34
  return;
28
35
  }
@@ -36,9 +43,9 @@ export namespace ClusterBehaviorCache {
36
43
  }
37
44
 
38
45
  export function set(cluster: ClusterType, base: Behavior.Type, schema: Schema, type: ClusterBehavior.Type) {
39
- let baseCache = typeCache.get(base);
46
+ let baseCache = behaviorCache.get(base);
40
47
  if (baseCache === undefined) {
41
- typeCache.set(base, (baseCache = new WeakMap()));
48
+ behaviorCache.set(base, (baseCache = new WeakMap()));
42
49
  }
43
50
 
44
51
  let clusterCache = baseCache.get(cluster);
@@ -26,35 +26,22 @@ import { Behavior } from "../Behavior.js";
26
26
  import { DerivedState } from "../state/StateType.js";
27
27
  import type { ClusterBehavior } from "./ClusterBehavior.js";
28
28
  import { ClusterBehaviorCache } from "./ClusterBehaviorCache.js";
29
-
30
- const KNOWN_DEFAULTS = Symbol("knownDefaults");
29
+ import { introspectionInstanceOf } from "./cluster-behavior-utils.js";
31
30
 
32
31
  /**
33
- * This is an internal utility used to track default values that we've erased due to conformance. We reuse in
34
- * derivatives if the property is once again enabled.
32
+ * Generates a {@link ClusterBehavior.Type}.
35
33
  *
36
- * We cast the state constructor to this type so [KNOWN_DEFAULTS] becomes a static field on the state class.
37
- */
38
- interface HasKnownDefaults {
39
- [KNOWN_DEFAULTS]?: Val.Struct;
40
- }
41
-
42
- /**
43
- * Create a non-functional instance of a {@link Behavior} for introspection purposes.
34
+ * This factory performs runtime class generation of behaviors associated with a Matter cluster. It implements
35
+ * ClusterBehavior.for() directly and is a core component of PeerBehavior().
44
36
  */
45
- export function introspectionInstanceOf(type: Behavior.Type) {
46
- return new (type as unknown as new () => Record<string, (...args: any[]) => any>)();
47
- }
48
-
49
- /**
50
- * This is the actual implementation of ClusterBehavior.for(). The result must match {@link ClusterBehavior.Type}<C>.
51
- */
52
- export function createType<const C extends ClusterType>(
53
- cluster: C,
54
- base: Behavior.Type,
55
- schema?: Schema.Cluster,
56
- name?: string,
57
- ) {
37
+ export function ClusterBehaviorType<const C extends ClusterType>({
38
+ cluster,
39
+ base,
40
+ schema,
41
+ name,
42
+ forClient,
43
+ commandFactory,
44
+ }: ClusterBehaviorType.Configuration<C>) {
58
45
  if (schema === undefined) {
59
46
  if (base.schema.tag === ElementTag.Cluster) {
60
47
  schema = base.schema;
@@ -71,7 +58,7 @@ export function createType<const C extends ClusterType>(
71
58
  // If we are provided a name, the caller is creating a specialized version of the behavior. Disable caching and
72
59
  // do not create a name automatically
73
60
  if (useCache) {
74
- const cached = ClusterBehaviorCache.get(cluster, base, schema);
61
+ const cached = ClusterBehaviorCache.get(cluster, base, schema, forClient);
75
62
  if (cached) {
76
63
  return cached;
77
64
  }
@@ -83,7 +70,14 @@ export function createType<const C extends ClusterType>(
83
70
  }
84
71
  }
85
72
 
86
- const context = DerivationContext(schema, cluster, base);
73
+ const context: DerivationContext = {
74
+ scope: Scope(schema),
75
+ cluster,
76
+ base,
77
+ newProps: {},
78
+ forClient,
79
+ commandFactory,
80
+ };
87
81
 
88
82
  const type = GeneratedClass({
89
83
  name,
@@ -110,7 +104,7 @@ export function createType<const C extends ClusterType>(
110
104
  },
111
105
  },
112
106
 
113
- instanceDescriptors: createDefaultCommandDescriptors(cluster, base),
107
+ instanceDescriptors: createDefaultCommandDescriptors(context),
114
108
  }) as ClusterBehavior.Type;
115
109
 
116
110
  // Decorate the class
@@ -123,37 +117,75 @@ export function createType<const C extends ClusterType>(
123
117
  ClusterBehaviorCache.set(cluster, base, schema, type);
124
118
  }
125
119
 
126
- return type;
120
+ return type as ClusterBehavior.Type<C>;
127
121
  }
128
122
 
129
- /**
130
- * The cluster type for a behavior.
131
- */
132
- export type ClusterOf<B extends Behavior.Type> = B extends { cluster: infer C extends ClusterType }
133
- ? C
134
- : ClusterType.Unknown;
123
+ export namespace ClusterBehaviorType {
124
+ export interface Configuration<C extends ClusterType> {
125
+ /**
126
+ * The ClusterType for the new behavior.
127
+ */
128
+ cluster: C;
129
+
130
+ /**
131
+ * The behavior to extend.
132
+ */
133
+ base: Behavior.Type;
134
+
135
+ /**
136
+ * The schema for the new behavior.
137
+ *
138
+ * If omitted uses the schema from the standard Matter data model.
139
+ */
140
+ schema?: Schema.Cluster;
141
+
142
+ /**
143
+ * Name used for the generated class.
144
+ *
145
+ * If omitted derives name from the schema.
146
+ */
147
+ name?: string;
148
+
149
+ /**
150
+ * Modify generation for client instrumentation.
151
+ *
152
+ * This affects a few things like how quieter events generate.
153
+ */
154
+ forClient?: boolean;
155
+
156
+ /**
157
+ * Factory for command implementations.
158
+ *
159
+ * By default commands install as {@link Behavior.unimplemented}. In client scenarios this allows the caller to
160
+ * provide a useful default implementation.
161
+ */
162
+ commandFactory?: CommandFactory;
163
+ }
135
164
 
136
- /**
137
- * The extension interface for a behavior.
138
- */
139
- export type ExtensionInterfaceOf<B extends Behavior.Type> = B extends { ExtensionInterface: infer I extends {} }
140
- ? I
141
- : {};
165
+ export interface CommandFactory {
166
+ (name: string): (this: ClusterBehavior, fields?: {}) => unknown;
167
+ }
168
+ }
142
169
 
143
170
  interface DerivationContext {
144
171
  cluster: ClusterType;
145
172
  scope: Scope;
146
173
  base: Behavior.Type;
147
174
  newProps: Record<string, ValueModel>;
175
+ forClient?: boolean;
176
+ commandFactory?: ClusterBehaviorType.CommandFactory;
148
177
  }
149
178
 
150
- function DerivationContext(schema: Schema, cluster: ClusterType, base: Behavior.Type): DerivationContext {
151
- return {
152
- cluster,
153
- scope: Scope(schema),
154
- base,
155
- newProps: {},
156
- };
179
+ const KNOWN_DEFAULTS = Symbol("knownDefaults");
180
+
181
+ /**
182
+ * This is an internal utility used to track default values that we've erased due to conformance. We reuse in
183
+ * derivatives if the property is once again enabled.
184
+ *
185
+ * We cast the state constructor to this type so [KNOWN_DEFAULTS] becomes a static field on the state class.
186
+ */
187
+ interface HasKnownDefaults {
188
+ [KNOWN_DEFAULTS]?: Val.Struct;
157
189
  }
158
190
 
159
191
  /**
@@ -257,13 +289,16 @@ function createDerivedState({ cluster, scope, base, newProps }: DerivationContex
257
289
  /**
258
290
  * Extend events with additional implementations.
259
291
  */
260
- function createDerivedEvents({ scope, base, newProps }: DerivationContext) {
292
+ function createDerivedEvents({ scope, base, newProps, forClient }: DerivationContext) {
261
293
  const instanceDescriptors = {} as PropertyDescriptorMap;
262
294
 
263
295
  const baseInstance = new base.Events() as unknown as Record<string, unknown>;
264
296
 
265
297
  const eventNames = new Set<string>();
266
298
 
299
+ // Events are generally OnlineEvent except in the case of server-side elements marked Q
300
+ const quieterImplementation = forClient ? OnlineEvent : QuietEvent;
301
+
267
302
  // Add events that are mandatory or marked as supported and not present in the base class
268
303
  const applicableClusterEvents = new Set();
269
304
  for (const event of scope.membersOf(scope.owner as Schema, {
@@ -272,14 +307,25 @@ function createDerivedEvents({ scope, base, newProps }: DerivationContext) {
272
307
  })) {
273
308
  const name = camelize(event.name);
274
309
  applicableClusterEvents.add(name);
275
- if (scope.hasOperationalSupport(event) && baseInstance[name] === undefined) {
276
- eventNames.add(name);
277
- instanceDescriptors[name] = createEventDescriptor(
278
- name,
279
- event,
280
- event.quality.quieter ? QuietEvent : OnlineEvent,
281
- );
310
+
311
+ // Do not implement if already supported
312
+ if (baseInstance[name] !== undefined) {
313
+ continue;
282
314
  }
315
+
316
+ // For clients we implement all events because we can't know what's supported now that EventList is gone. For
317
+ // servers we only add events that are explicitly
318
+ if (!forClient && !scope.hasOperationalSupport(event)) {
319
+ continue;
320
+ }
321
+
322
+ // Add the event
323
+ eventNames.add(name);
324
+ instanceDescriptors[name] = createEventDescriptor(
325
+ name,
326
+ event,
327
+ event.quality.quieter ? quieterImplementation : OnlineEvent,
328
+ );
283
329
  }
284
330
 
285
331
  // Add events for mandatory attributes that are not present in the base class
@@ -294,10 +340,11 @@ function createDerivedEvents({ scope, base, newProps }: DerivationContext) {
294
340
  const changed = `${attrName}$Changed`;
295
341
  if (baseInstance[changed] === undefined) {
296
342
  eventNames.add(changed);
343
+
297
344
  instanceDescriptors[changed] = createEventDescriptor(
298
345
  changed,
299
346
  prop,
300
- prop.quality.quieter ? QuietEvent : OnlineEvent,
347
+ prop.quality.quieter ? quieterImplementation : OnlineEvent,
301
348
  );
302
349
  }
303
350
  }
@@ -386,17 +433,63 @@ function syncFeatures(schema: Schema.Cluster, cluster: ClusterType) {
386
433
  return schema;
387
434
  }
388
435
 
389
- function createDefaultCommandDescriptors(cluster: ClusterType, base: Behavior.Type) {
436
+ const sourceFactory = Symbol("source-factory");
437
+
438
+ interface MarkedCommand {
439
+ [sourceFactory]?: ClusterBehaviorType.CommandFactory;
440
+ }
441
+
442
+ /**
443
+ * Create descriptors for any command methods that are not already present in the base class.
444
+ */
445
+ function createDefaultCommandDescriptors({ scope, base, commandFactory }: DerivationContext) {
390
446
  const result = {} as Record<string, PropertyDescriptor>;
391
447
  const instance = introspectionInstanceOf(base);
392
448
 
393
- for (const name in cluster.commands) {
394
- if (!instance[name]) {
395
- result[name] = {
396
- value: Behavior.unimplemented,
397
- writable: true,
398
- };
449
+ // We add functions for all commands, not just those that are conformant. This ensures that the interface is
450
+ // compatible with the "client" clusters. Commands that are nonconformant will not appear in the type and if
451
+ // somehow invoked will result in an "unimplemented" error
452
+ const names = new Set(
453
+ scope.membersOf(scope.owner, { tags: [ElementTag.Command] }).map(command => camelize(command.name)),
454
+ );
455
+
456
+ const conformantNames = new Set(
457
+ scope
458
+ .membersOf(scope.owner, { tags: [ElementTag.Command], conformance: "conformant" })
459
+ .map(command => camelize(command.name)),
460
+ );
461
+
462
+ for (const name of names) {
463
+ let implementation;
464
+
465
+ // Choose implementation, or skip if appropriate implementation is already present
466
+ if (!conformantNames.has(name)) {
467
+ // Non-conformant; install as unimplemented
468
+ if (instance[name]) {
469
+ continue;
470
+ }
471
+ implementation = Behavior.unimplemented;
472
+ } else if (commandFactory) {
473
+ // With a factory, replace any existing implementation not provided by the factory
474
+ if ((instance[name] as MarkedCommand | undefined)?.[sourceFactory] === commandFactory) {
475
+ continue;
476
+ }
477
+
478
+ implementation = commandFactory(name);
479
+
480
+ (implementation as MarkedCommand)[sourceFactory] = commandFactory;
481
+ } else {
482
+ // Otherwise make sure we at least have an "unimplemented"... um, implementation
483
+ if (instance[name]) {
484
+ continue;
485
+ }
486
+ implementation = Behavior.unimplemented;
399
487
  }
488
+
489
+ result[name] = {
490
+ value: implementation,
491
+ writable: true,
492
+ };
400
493
  }
401
494
 
402
495
  return result;
@@ -445,6 +538,9 @@ function selectDefaultValue(scope: Scope, oldDefault: Val, member: ValueModel) {
445
538
  }
446
539
  }
447
540
 
541
+ /**
542
+ * Create a descriptor that lazily creates the {@link Observable} on the "Events" class.
543
+ */
448
544
  function createEventDescriptor(
449
545
  name: string,
450
546
  schema: ValueModel,
@@ -10,7 +10,7 @@ import type { AttributeModel, EventModel } from "#model";
10
10
  import type { ClusterType, TypeFromSchema } from "#types";
11
11
  import type { Behavior } from "../Behavior.js";
12
12
  import type { ActionContext } from "../context/ActionContext.js";
13
- import type { ClusterOf } from "./ClusterBehaviorUtil.js";
13
+ import type { ClusterOf } from "./cluster-behavior-utils.js";
14
14
 
15
15
  /**
16
16
  * Event instance type for ClusterBehaviors.
@@ -7,7 +7,7 @@
7
7
  import type { ClusterType, TypeFromSchema } from "#types";
8
8
  import { AttributeId, BitSchema, CommandId, TypeFromPartialBitSchema } from "#types";
9
9
  import type { Behavior } from "../Behavior.js";
10
- import type { ClusterOf } from "./ClusterBehaviorUtil.js";
10
+ import type { ClusterOf } from "./cluster-behavior-utils.js";
11
11
 
12
12
  /**
13
13
  * Instance type for complete (endpoint + fabric) state.
@@ -8,7 +8,7 @@ import { Diagnostic, ImplementationError, Logger, MatterAggregateError, Observab
8
8
  import { ClusterType } from "#types";
9
9
  import { Behavior } from "../Behavior.js";
10
10
  import { ClusterBehavior } from "./ClusterBehavior.js";
11
- import { introspectionInstanceOf } from "./ClusterBehaviorUtil.js";
11
+ import { introspectionInstanceOf } from "./cluster-behavior-utils.js";
12
12
 
13
13
  const logger = Logger.get("ValidatedElements");
14
14
 
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Behavior } from "#behavior/Behavior.js";
8
+ import { ClusterType } from "#types";
9
+
10
+ /**
11
+ * Create a non-functional instance of a {@link Behavior} for introspection purposes.
12
+ */
13
+ export function introspectionInstanceOf(type: Behavior.Type) {
14
+ return new (type as unknown as new () => Record<string, (...args: any[]) => any>)();
15
+ }
16
+
17
+ /**
18
+ * The cluster type for a behavior.
19
+ */
20
+ export type ClusterOf<B extends Behavior.Type> = B extends { cluster: infer C extends ClusterType }
21
+ ? C
22
+ : ClusterType.Unknown;
23
+
24
+ /**
25
+ * The extension interface for a behavior.
26
+ */
27
+ export type ExtensionInterfaceOf<B extends Behavior.Type> = B extends { ExtensionInterface: infer I extends {} }
28
+ ? I
29
+ : {};
30
+
31
+ const isClient = Symbol("is-client");
32
+
33
+ type ClientBehaviorType = { [isClient]?: boolean };
34
+
35
+ /**
36
+ * Mark a behavior as a cluster client.
37
+ */
38
+ export function markClientBehavior(type: Behavior.Type) {
39
+ (type as ClientBehaviorType)[isClient] = true;
40
+ }
41
+
42
+ /**
43
+ * Test whether a behavior is a cluster client.
44
+ */
45
+ export function isClientBehavior(type: Behavior.Type) {
46
+ // Use hasOwn so any derivation voids the client assertion
47
+ return (type as ClientBehaviorType)[isClient] && Object.hasOwn(type, isClient);
48
+ }
@@ -5,8 +5,9 @@
5
5
  */
6
6
 
7
7
  export * from "./ClientBehavior.js";
8
+ export * from "./cluster-behavior-utils.js";
8
9
  export * from "./ClusterBehavior.js";
9
- export * from "./ClusterBehaviorUtil.js";
10
+ export * from "./ClusterBehaviorType.js";
10
11
  export * from "./ClusterEvents.js";
11
12
  export * from "./ClusterInterface.js";
12
13
  export * from "./ClusterState.js";