@project-chip/matter.js 0.9.3 → 0.9.4

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 (281) hide show
  1. package/dist/cjs/CommissioningServer.d.ts.map +1 -1
  2. package/dist/cjs/CommissioningServer.js +0 -1
  3. package/dist/cjs/CommissioningServer.js.map +2 -2
  4. package/dist/cjs/MatterDevice.d.ts +3 -1
  5. package/dist/cjs/MatterDevice.d.ts.map +1 -1
  6. package/dist/cjs/MatterDevice.js +20 -9
  7. package/dist/cjs/MatterDevice.js.map +2 -2
  8. package/dist/cjs/behavior/AccessControl.js +2 -2
  9. package/dist/cjs/behavior/AccessControl.js.map +2 -2
  10. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts +1 -0
  11. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  12. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js +14 -0
  13. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js.map +2 -2
  14. package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  15. package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.js +11 -2
  16. package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.js.map +2 -2
  17. package/dist/cjs/behavior/state/transaction/Transaction.d.ts +18 -18
  18. package/dist/cjs/certificate/CertificateManager.d.ts.map +1 -1
  19. package/dist/cjs/certificate/CertificateManager.js +1 -0
  20. package/dist/cjs/certificate/CertificateManager.js.map +2 -2
  21. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +1 -1
  22. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +1 -1
  23. package/dist/cjs/certificate/CertificationDeclarationManager.js +3 -2
  24. package/dist/cjs/certificate/CertificationDeclarationManager.js.map +2 -2
  25. package/dist/cjs/cluster/server/AccessControlServer.js.map +1 -1
  26. package/dist/cjs/cluster/server/AttributeServer.d.ts +9 -0
  27. package/dist/cjs/cluster/server/AttributeServer.d.ts.map +1 -1
  28. package/dist/cjs/cluster/server/AttributeServer.js +62 -0
  29. package/dist/cjs/cluster/server/AttributeServer.js.map +3 -3
  30. package/dist/cjs/cluster/server/ClusterServer.d.ts.map +1 -1
  31. package/dist/cjs/cluster/server/ClusterServer.js +8 -1
  32. package/dist/cjs/cluster/server/ClusterServer.js.map +2 -2
  33. package/dist/cjs/cluster/server/ClusterServerTypes.d.ts +3 -3
  34. package/dist/cjs/cluster/server/ClusterServerTypes.d.ts.map +1 -1
  35. package/dist/cjs/cluster/server/ClusterServerTypes.js.map +1 -1
  36. package/dist/cjs/cluster/server/EventServer.d.ts +8 -2
  37. package/dist/cjs/cluster/server/EventServer.d.ts.map +1 -1
  38. package/dist/cjs/cluster/server/EventServer.js +33 -7
  39. package/dist/cjs/cluster/server/EventServer.js.map +2 -2
  40. package/dist/cjs/cluster/server/OperationalCredentialsServer.d.ts.map +1 -1
  41. package/dist/cjs/cluster/server/OperationalCredentialsServer.js +31 -8
  42. package/dist/cjs/cluster/server/OperationalCredentialsServer.js.map +2 -2
  43. package/dist/cjs/common/FailsafeContext.d.ts +1 -0
  44. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  45. package/dist/cjs/common/FailsafeContext.js +16 -2
  46. package/dist/cjs/common/FailsafeContext.js.map +2 -2
  47. package/dist/cjs/crypto/Crypto.d.ts +1 -1
  48. package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
  49. package/dist/cjs/crypto/Crypto.js +2 -2
  50. package/dist/cjs/crypto/Crypto.js.map +2 -2
  51. package/dist/cjs/device/LegacyInteractionServer.d.ts +2 -2
  52. package/dist/cjs/device/LegacyInteractionServer.d.ts.map +1 -1
  53. package/dist/cjs/device/LegacyInteractionServer.js +13 -1
  54. package/dist/cjs/device/LegacyInteractionServer.js.map +2 -2
  55. package/dist/cjs/fabric/Fabric.d.ts +1 -0
  56. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  57. package/dist/cjs/fabric/Fabric.js +5 -0
  58. package/dist/cjs/fabric/Fabric.js.map +2 -2
  59. package/dist/cjs/fabric/FabricManager.d.ts +1 -0
  60. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  61. package/dist/cjs/fabric/FabricManager.js +2 -1
  62. package/dist/cjs/fabric/FabricManager.js.map +2 -2
  63. package/dist/cjs/model/models/EventModel.d.ts +1 -0
  64. package/dist/cjs/model/models/EventModel.d.ts.map +1 -1
  65. package/dist/cjs/model/models/EventModel.js +3 -0
  66. package/dist/cjs/model/models/EventModel.js.map +2 -2
  67. package/dist/cjs/model/models/FieldModel.d.ts +1 -0
  68. package/dist/cjs/model/models/FieldModel.d.ts.map +1 -1
  69. package/dist/cjs/model/models/FieldModel.js +3 -0
  70. package/dist/cjs/model/models/FieldModel.js.map +2 -2
  71. package/dist/cjs/node/server/TransactionalInteractionServer.d.ts +2 -2
  72. package/dist/cjs/node/server/TransactionalInteractionServer.d.ts.map +1 -1
  73. package/dist/cjs/node/server/TransactionalInteractionServer.js +0 -2
  74. package/dist/cjs/node/server/TransactionalInteractionServer.js.map +2 -2
  75. package/dist/cjs/protocol/interaction/AttributeDataEncoder.d.ts +6 -3
  76. package/dist/cjs/protocol/interaction/AttributeDataEncoder.d.ts.map +1 -1
  77. package/dist/cjs/protocol/interaction/AttributeDataEncoder.js +14 -8
  78. package/dist/cjs/protocol/interaction/AttributeDataEncoder.js.map +2 -2
  79. package/dist/cjs/protocol/interaction/EventHandler.d.ts.map +1 -1
  80. package/dist/cjs/protocol/interaction/EventHandler.js +1 -3
  81. package/dist/cjs/protocol/interaction/EventHandler.js.map +2 -2
  82. package/dist/cjs/protocol/interaction/InteractionClient.js +1 -1
  83. package/dist/cjs/protocol/interaction/InteractionClient.js.map +2 -2
  84. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.d.ts +3 -3
  85. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.d.ts.map +1 -1
  86. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.js +1 -0
  87. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.js.map +2 -2
  88. package/dist/cjs/protocol/interaction/InteractionMessenger.d.ts +1 -1
  89. package/dist/cjs/protocol/interaction/InteractionMessenger.d.ts.map +1 -1
  90. package/dist/cjs/protocol/interaction/InteractionMessenger.js +11 -4
  91. package/dist/cjs/protocol/interaction/InteractionMessenger.js.map +2 -2
  92. package/dist/cjs/protocol/interaction/InteractionServer.d.ts +5 -6
  93. package/dist/cjs/protocol/interaction/InteractionServer.d.ts.map +1 -1
  94. package/dist/cjs/protocol/interaction/InteractionServer.js +41 -36
  95. package/dist/cjs/protocol/interaction/InteractionServer.js.map +2 -2
  96. package/dist/cjs/protocol/interaction/SubscriptionHandler.d.ts +31 -12
  97. package/dist/cjs/protocol/interaction/SubscriptionHandler.d.ts.map +1 -1
  98. package/dist/cjs/protocol/interaction/SubscriptionHandler.js +161 -69
  99. package/dist/cjs/protocol/interaction/SubscriptionHandler.js.map +3 -3
  100. package/dist/cjs/session/SessionManager.d.ts +2 -1
  101. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  102. package/dist/cjs/session/SessionManager.js +2 -2
  103. package/dist/cjs/session/SessionManager.js.map +2 -2
  104. package/dist/cjs/tlv/TlvArray.d.ts +2 -2
  105. package/dist/cjs/tlv/TlvArray.d.ts.map +1 -1
  106. package/dist/cjs/tlv/TlvArray.js +2 -2
  107. package/dist/cjs/tlv/TlvArray.js.map +2 -2
  108. package/dist/cjs/tlv/TlvNullable.d.ts +2 -2
  109. package/dist/cjs/tlv/TlvNullable.d.ts.map +1 -1
  110. package/dist/cjs/tlv/TlvNullable.js +2 -2
  111. package/dist/cjs/tlv/TlvNullable.js.map +2 -2
  112. package/dist/cjs/tlv/TlvObject.d.ts +2 -2
  113. package/dist/cjs/tlv/TlvObject.d.ts.map +1 -1
  114. package/dist/cjs/tlv/TlvObject.js +18 -12
  115. package/dist/cjs/tlv/TlvObject.js.map +2 -2
  116. package/dist/cjs/tlv/TlvSchema.d.ts +14 -2
  117. package/dist/cjs/tlv/TlvSchema.d.ts.map +1 -1
  118. package/dist/cjs/tlv/TlvSchema.js +2 -2
  119. package/dist/cjs/tlv/TlvSchema.js.map +2 -2
  120. package/dist/cjs/tlv/TlvWrapper.d.ts +2 -2
  121. package/dist/cjs/tlv/TlvWrapper.d.ts.map +1 -1
  122. package/dist/cjs/tlv/TlvWrapper.js +2 -2
  123. package/dist/cjs/tlv/TlvWrapper.js.map +2 -2
  124. package/dist/esm/CommissioningServer.d.ts.map +1 -1
  125. package/dist/esm/CommissioningServer.js +0 -1
  126. package/dist/esm/CommissioningServer.js.map +2 -2
  127. package/dist/esm/MatterDevice.d.ts +3 -1
  128. package/dist/esm/MatterDevice.d.ts.map +1 -1
  129. package/dist/esm/MatterDevice.js +20 -9
  130. package/dist/esm/MatterDevice.js.map +2 -2
  131. package/dist/esm/behavior/AccessControl.js +2 -2
  132. package/dist/esm/behavior/AccessControl.js.map +2 -2
  133. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts +1 -0
  134. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  135. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js +15 -1
  136. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js.map +2 -2
  137. package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  138. package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.js +11 -2
  139. package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.js.map +2 -2
  140. package/dist/esm/behavior/state/transaction/Transaction.d.ts +18 -18
  141. package/dist/esm/certificate/CertificateManager.d.ts.map +1 -1
  142. package/dist/esm/certificate/CertificateManager.js +1 -0
  143. package/dist/esm/certificate/CertificateManager.js.map +2 -2
  144. package/dist/esm/certificate/CertificationDeclarationManager.d.ts +1 -1
  145. package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +1 -1
  146. package/dist/esm/certificate/CertificationDeclarationManager.js +3 -2
  147. package/dist/esm/certificate/CertificationDeclarationManager.js.map +2 -2
  148. package/dist/esm/cluster/server/AccessControlServer.js.map +1 -1
  149. package/dist/esm/cluster/server/AttributeServer.d.ts +9 -0
  150. package/dist/esm/cluster/server/AttributeServer.d.ts.map +1 -1
  151. package/dist/esm/cluster/server/AttributeServer.js +69 -1
  152. package/dist/esm/cluster/server/AttributeServer.js.map +2 -2
  153. package/dist/esm/cluster/server/ClusterServer.d.ts.map +1 -1
  154. package/dist/esm/cluster/server/ClusterServer.js +9 -2
  155. package/dist/esm/cluster/server/ClusterServer.js.map +2 -2
  156. package/dist/esm/cluster/server/ClusterServerTypes.d.ts +3 -3
  157. package/dist/esm/cluster/server/ClusterServerTypes.d.ts.map +1 -1
  158. package/dist/esm/cluster/server/ClusterServerTypes.js.map +1 -1
  159. package/dist/esm/cluster/server/EventServer.d.ts +8 -2
  160. package/dist/esm/cluster/server/EventServer.d.ts.map +1 -1
  161. package/dist/esm/cluster/server/EventServer.js +33 -7
  162. package/dist/esm/cluster/server/EventServer.js.map +2 -2
  163. package/dist/esm/cluster/server/OperationalCredentialsServer.d.ts.map +1 -1
  164. package/dist/esm/cluster/server/OperationalCredentialsServer.js +31 -8
  165. package/dist/esm/cluster/server/OperationalCredentialsServer.js.map +2 -2
  166. package/dist/esm/common/FailsafeContext.d.ts +1 -0
  167. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  168. package/dist/esm/common/FailsafeContext.js +17 -3
  169. package/dist/esm/common/FailsafeContext.js.map +2 -2
  170. package/dist/esm/crypto/Crypto.d.ts +1 -1
  171. package/dist/esm/crypto/Crypto.d.ts.map +1 -1
  172. package/dist/esm/crypto/Crypto.js +2 -2
  173. package/dist/esm/crypto/Crypto.js.map +2 -2
  174. package/dist/esm/device/LegacyInteractionServer.d.ts +2 -2
  175. package/dist/esm/device/LegacyInteractionServer.d.ts.map +1 -1
  176. package/dist/esm/device/LegacyInteractionServer.js +13 -1
  177. package/dist/esm/device/LegacyInteractionServer.js.map +2 -2
  178. package/dist/esm/fabric/Fabric.d.ts +1 -0
  179. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  180. package/dist/esm/fabric/Fabric.js +5 -0
  181. package/dist/esm/fabric/Fabric.js.map +2 -2
  182. package/dist/esm/fabric/FabricManager.d.ts +1 -0
  183. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  184. package/dist/esm/fabric/FabricManager.js +2 -1
  185. package/dist/esm/fabric/FabricManager.js.map +2 -2
  186. package/dist/esm/model/models/EventModel.d.ts +1 -0
  187. package/dist/esm/model/models/EventModel.d.ts.map +1 -1
  188. package/dist/esm/model/models/EventModel.js +3 -0
  189. package/dist/esm/model/models/EventModel.js.map +2 -2
  190. package/dist/esm/model/models/FieldModel.d.ts +1 -0
  191. package/dist/esm/model/models/FieldModel.d.ts.map +1 -1
  192. package/dist/esm/model/models/FieldModel.js +3 -0
  193. package/dist/esm/model/models/FieldModel.js.map +2 -2
  194. package/dist/esm/node/server/TransactionalInteractionServer.d.ts +2 -2
  195. package/dist/esm/node/server/TransactionalInteractionServer.d.ts.map +1 -1
  196. package/dist/esm/node/server/TransactionalInteractionServer.js +0 -2
  197. package/dist/esm/node/server/TransactionalInteractionServer.js.map +2 -2
  198. package/dist/esm/protocol/interaction/AttributeDataEncoder.d.ts +6 -3
  199. package/dist/esm/protocol/interaction/AttributeDataEncoder.d.ts.map +1 -1
  200. package/dist/esm/protocol/interaction/AttributeDataEncoder.js +14 -8
  201. package/dist/esm/protocol/interaction/AttributeDataEncoder.js.map +2 -2
  202. package/dist/esm/protocol/interaction/EventHandler.d.ts.map +1 -1
  203. package/dist/esm/protocol/interaction/EventHandler.js +1 -3
  204. package/dist/esm/protocol/interaction/EventHandler.js.map +2 -2
  205. package/dist/esm/protocol/interaction/InteractionClient.js +1 -1
  206. package/dist/esm/protocol/interaction/InteractionClient.js.map +2 -2
  207. package/dist/esm/protocol/interaction/InteractionEndpointStructure.d.ts +3 -3
  208. package/dist/esm/protocol/interaction/InteractionEndpointStructure.d.ts.map +1 -1
  209. package/dist/esm/protocol/interaction/InteractionEndpointStructure.js +1 -0
  210. package/dist/esm/protocol/interaction/InteractionEndpointStructure.js.map +2 -2
  211. package/dist/esm/protocol/interaction/InteractionMessenger.d.ts +1 -1
  212. package/dist/esm/protocol/interaction/InteractionMessenger.d.ts.map +1 -1
  213. package/dist/esm/protocol/interaction/InteractionMessenger.js +11 -4
  214. package/dist/esm/protocol/interaction/InteractionMessenger.js.map +2 -2
  215. package/dist/esm/protocol/interaction/InteractionServer.d.ts +5 -6
  216. package/dist/esm/protocol/interaction/InteractionServer.d.ts.map +1 -1
  217. package/dist/esm/protocol/interaction/InteractionServer.js +41 -36
  218. package/dist/esm/protocol/interaction/InteractionServer.js.map +2 -2
  219. package/dist/esm/protocol/interaction/SubscriptionHandler.d.ts +31 -12
  220. package/dist/esm/protocol/interaction/SubscriptionHandler.d.ts.map +1 -1
  221. package/dist/esm/protocol/interaction/SubscriptionHandler.js +161 -69
  222. package/dist/esm/protocol/interaction/SubscriptionHandler.js.map +3 -3
  223. package/dist/esm/session/SessionManager.d.ts +2 -1
  224. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  225. package/dist/esm/session/SessionManager.js +2 -2
  226. package/dist/esm/session/SessionManager.js.map +2 -2
  227. package/dist/esm/tlv/TlvArray.d.ts +2 -2
  228. package/dist/esm/tlv/TlvArray.d.ts.map +1 -1
  229. package/dist/esm/tlv/TlvArray.js +2 -2
  230. package/dist/esm/tlv/TlvArray.js.map +2 -2
  231. package/dist/esm/tlv/TlvNullable.d.ts +2 -2
  232. package/dist/esm/tlv/TlvNullable.d.ts.map +1 -1
  233. package/dist/esm/tlv/TlvNullable.js +2 -2
  234. package/dist/esm/tlv/TlvNullable.js.map +2 -2
  235. package/dist/esm/tlv/TlvObject.d.ts +2 -2
  236. package/dist/esm/tlv/TlvObject.d.ts.map +1 -1
  237. package/dist/esm/tlv/TlvObject.js +19 -13
  238. package/dist/esm/tlv/TlvObject.js.map +2 -2
  239. package/dist/esm/tlv/TlvSchema.d.ts +14 -2
  240. package/dist/esm/tlv/TlvSchema.d.ts.map +1 -1
  241. package/dist/esm/tlv/TlvSchema.js +2 -2
  242. package/dist/esm/tlv/TlvSchema.js.map +2 -2
  243. package/dist/esm/tlv/TlvWrapper.d.ts +2 -2
  244. package/dist/esm/tlv/TlvWrapper.d.ts.map +1 -1
  245. package/dist/esm/tlv/TlvWrapper.js +2 -2
  246. package/dist/esm/tlv/TlvWrapper.js.map +2 -2
  247. package/package.json +3 -3
  248. package/src/CommissioningServer.ts +0 -1
  249. package/src/MatterDevice.ts +32 -9
  250. package/src/behavior/AccessControl.ts +2 -2
  251. package/src/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.ts +21 -1
  252. package/src/behavior/definitions/operational-credentials/OperationalCredentialsServer.ts +13 -0
  253. package/src/certificate/CertificateManager.ts +1 -2
  254. package/src/certificate/CertificationDeclarationManager.ts +2 -2
  255. package/src/cluster/server/AccessControlServer.ts +3 -3
  256. package/src/cluster/server/AttributeServer.ts +79 -1
  257. package/src/cluster/server/ClusterServer.ts +9 -2
  258. package/src/cluster/server/ClusterServerTypes.ts +3 -3
  259. package/src/cluster/server/EventServer.ts +57 -10
  260. package/src/cluster/server/OperationalCredentialsServer.ts +35 -5
  261. package/src/common/FailsafeContext.ts +19 -7
  262. package/src/crypto/Crypto.ts +1 -1
  263. package/src/device/LegacyInteractionServer.ts +15 -4
  264. package/src/fabric/Fabric.ts +6 -0
  265. package/src/fabric/FabricManager.ts +1 -0
  266. package/src/model/models/EventModel.ts +4 -0
  267. package/src/model/models/FieldModel.ts +4 -0
  268. package/src/node/server/TransactionalInteractionServer.ts +2 -4
  269. package/src/protocol/interaction/AttributeDataEncoder.ts +20 -9
  270. package/src/protocol/interaction/EventHandler.ts +1 -3
  271. package/src/protocol/interaction/InteractionClient.ts +1 -1
  272. package/src/protocol/interaction/InteractionEndpointStructure.ts +4 -4
  273. package/src/protocol/interaction/InteractionMessenger.ts +12 -3
  274. package/src/protocol/interaction/InteractionServer.ts +50 -51
  275. package/src/protocol/interaction/SubscriptionHandler.ts +215 -92
  276. package/src/session/SessionManager.ts +3 -2
  277. package/src/tlv/TlvArray.ts +3 -3
  278. package/src/tlv/TlvNullable.ts +3 -3
  279. package/src/tlv/TlvObject.ts +20 -14
  280. package/src/tlv/TlvSchema.ts +17 -3
  281. package/src/tlv/TlvWrapper.ts +3 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/tlv/TlvSchema.ts"],
4
- "sourcesContent": ["/**\n * @license\n * Copyright 2022-2024 Matter.js Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Schema } from \"../schema/Schema.js\";\nimport { ByteArray, Endian } from \"../util/ByteArray.js\";\nimport { DataReader } from \"../util/DataReader.js\";\nimport { DataWriter } from \"../util/DataWriter.js\";\nimport { TlvCodec, TlvTag, TlvToPrimitive, TlvTypeLength } from \"./TlvCodec.js\";\n\nexport abstract class TlvSchema<T> extends Schema<T, ByteArray> implements TlvSchema<T> {\n override decodeInternal(encoded: ByteArray): T {\n return this.decodeTlvInternal(new TlvByteArrayReader(encoded)).value;\n }\n\n override encodeInternal(value: T): ByteArray {\n const writer = new TlvByteArrayWriter();\n this.encodeTlvInternal(writer, value);\n return writer.toByteArray();\n }\n\n encodeTlv(value: T, forWriteInteraction = false): TlvStream {\n const writer = new TlvArrayWriter();\n this.encodeTlvInternal(writer, value, undefined, forWriteInteraction);\n return writer.toTlvArray();\n }\n\n decodeTlv(encoded: TlvStream): T {\n return this.decodeTlvInternal(new TlvArrayReader(encoded)).value;\n }\n\n decodeTlvInternal(reader: TlvReader): { value: T; tag?: TlvTag } {\n const { tag, typeLength } = reader.readTagType();\n return { tag, value: this.decodeTlvInternalValue(reader, typeLength) };\n }\n\n abstract decodeTlvInternalValue(reader: TlvReader, typeLength: TlvTypeLength): T;\n\n abstract encodeTlvInternal(writer: TlvWriter, value: T, tag?: TlvTag, forWriteInteraction?: boolean): void;\n\n injectField(value: T, _fieldId: number, _fieldValue: any, _injectChecker: (fieldValue: any) => boolean): T {\n return value;\n }\n\n removeField(value: T, _fieldId: number, _removeChecker: (fieldValue: any) => boolean): T {\n return value;\n }\n}\n\nexport type TlvStream = TlvElement<any>[];\n\nexport type TlvElement<T extends TlvTypeLength> = {\n tag?: TlvTag;\n typeLength: T;\n value?: TlvToPrimitive[T[\"type\"]];\n};\n\nexport class TlvArrayWriter implements TlvWriter {\n private readonly tlvArray = new Array<TlvElement<any>>();\n\n writeTag(typeLength: TlvTypeLength, tag?: TlvTag) {\n this.tlvArray.push({ tag, typeLength });\n }\n\n writePrimitive<T extends TlvTypeLength>(_typeLength: T, value: TlvToPrimitive[T[\"type\"]]) {\n this.tlvArray[this.tlvArray.length - 1].value = value;\n }\n\n toTlvArray() {\n return this.tlvArray;\n }\n}\n\nexport class TlvArrayReader implements TlvReader {\n private index = -1;\n\n constructor(private readonly tlvElements: TlvElement<any>[]) {}\n\n readTagType() {\n this.index++;\n return this.tlvElements[this.index];\n }\n\n readPrimitive<T extends TlvTypeLength, V = TlvToPrimitive[T[\"type\"]]>(_typeLength: T): V {\n return this.tlvElements[this.index].value;\n }\n}\n\n/** Type defined by the TLV schema. */\nexport type TypeFromSchema<S extends TlvSchema<any>> = S extends TlvSchema<infer T> ? T : never;\n\nexport interface TlvReader {\n readTagType(): { tag?: TlvTag; typeLength: TlvTypeLength };\n\n readPrimitive<T extends TlvTypeLength, V = TlvToPrimitive[T[\"type\"]]>(typeLength: T): V;\n}\n\nexport interface TlvWriter {\n writeTag(typeLength: TlvTypeLength, tag?: TlvTag): void;\n\n writePrimitive<T extends TlvTypeLength>(typeLength: T, value: TlvToPrimitive[T[\"type\"]]): void;\n}\n\nexport class TlvByteArrayWriter implements TlvWriter {\n private readonly writer = new DataWriter(Endian.Little);\n\n writeTag(typeLength: TlvTypeLength, tag?: TlvTag) {\n TlvCodec.writeTag(this.writer, typeLength, tag);\n }\n\n writePrimitive<T extends TlvTypeLength>(typeLength: T, value: TlvToPrimitive[T[\"type\"]]) {\n TlvCodec.writePrimitive(this.writer, typeLength, value);\n }\n\n toByteArray() {\n return this.writer.toByteArray();\n }\n}\n\nexport class TlvByteArrayReader implements TlvReader {\n private readonly reader: DataReader<Endian.Little>;\n\n constructor(byteArray: ByteArray) {\n this.reader = new DataReader(byteArray, Endian.Little);\n }\n\n readTagType() {\n return TlvCodec.readTagType(this.reader);\n }\n\n readPrimitive<T extends TlvTypeLength, V = TlvToPrimitive[T[\"type\"]]>(typeLength: T): V {\n return TlvCodec.readPrimitive(this.reader, typeLength);\n }\n}\n"],
5
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAoB,cAAc;AAClC,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,gBAAuD;AAEzD,MAAe,kBAAqB,OAA6C;AAAA,EAC3E,eAAe,SAAuB;AAC3C,WAAO,KAAK,kBAAkB,IAAI,mBAAmB,OAAO,CAAC,EAAE;AAAA,EACnE;AAAA,EAES,eAAe,OAAqB;AACzC,UAAM,SAAS,IAAI,mBAAmB;AACtC,SAAK,kBAAkB,QAAQ,KAAK;AACpC,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,UAAU,OAAU,sBAAsB,OAAkB;AACxD,UAAM,SAAS,IAAI,eAAe;AAClC,SAAK,kBAAkB,QAAQ,OAAO,QAAW,mBAAmB;AACpE,WAAO,OAAO,WAAW;AAAA,EAC7B;AAAA,EAEA,UAAU,SAAuB;AAC7B,WAAO,KAAK,kBAAkB,IAAI,eAAe,OAAO,CAAC,EAAE;AAAA,EAC/D;AAAA,EAEA,kBAAkB,QAA+C;AAC7D,UAAM,EAAE,KAAK,WAAW,IAAI,OAAO,YAAY;AAC/C,WAAO,EAAE,KAAK,OAAO,KAAK,uBAAuB,QAAQ,UAAU,EAAE;AAAA,EACzE;AAAA,EAMA,YAAY,OAAU,UAAkB,aAAkB,gBAAiD;AACvG,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,OAAU,UAAkB,gBAAiD;AACrF,WAAO;AAAA,EACX;AACJ;AAUO,MAAM,eAAoC;AAAA,EAA1C;AACH,SAAiB,WAAW,IAAI,MAAuB;AAAA;AAAA,EAEvD,SAAS,YAA2B,KAAc;AAC9C,SAAK,SAAS,KAAK,EAAE,KAAK,WAAW,CAAC;AAAA,EAC1C;AAAA,EAEA,eAAwC,aAAgB,OAAkC;AACtF,SAAK,SAAS,KAAK,SAAS,SAAS,CAAC,EAAE,QAAQ;AAAA,EACpD;AAAA,EAEA,aAAa;AACT,WAAO,KAAK;AAAA,EAChB;AACJ;AAEO,MAAM,eAAoC;AAAA,EAG7C,YAA6B,aAAgC;AAAhC;AAF7B,SAAQ,QAAQ;AAAA,EAE8C;AAAA,EAE9D,cAAc;AACV,SAAK;AACL,WAAO,KAAK,YAAY,KAAK,KAAK;AAAA,EACtC;AAAA,EAEA,cAAsE,aAAmB;AACrF,WAAO,KAAK,YAAY,KAAK,KAAK,EAAE;AAAA,EACxC;AACJ;AAiBO,MAAM,mBAAwC;AAAA,EAA9C;AACH,SAAiB,SAAS,IAAI,WAAW,OAAO,MAAM;AAAA;AAAA,EAEtD,SAAS,YAA2B,KAAc;AAC9C,aAAS,SAAS,KAAK,QAAQ,YAAY,GAAG;AAAA,EAClD;AAAA,EAEA,eAAwC,YAAe,OAAkC;AACrF,aAAS,eAAe,KAAK,QAAQ,YAAY,KAAK;AAAA,EAC1D;AAAA,EAEA,cAAc;AACV,WAAO,KAAK,OAAO,YAAY;AAAA,EACnC;AACJ;AAEO,MAAM,mBAAwC;AAAA,EAGjD,YAAY,WAAsB;AAC9B,SAAK,SAAS,IAAI,WAAW,WAAW,OAAO,MAAM;AAAA,EACzD;AAAA,EAEA,cAAc;AACV,WAAO,SAAS,YAAY,KAAK,MAAM;AAAA,EAC3C;AAAA,EAEA,cAAsE,YAAkB;AACpF,WAAO,SAAS,cAAc,KAAK,QAAQ,UAAU;AAAA,EACzD;AACJ;",
4
+ "sourcesContent": ["/**\n * @license\n * Copyright 2022-2024 Matter.js Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Schema } from \"../schema/Schema.js\";\nimport { ByteArray, Endian } from \"../util/ByteArray.js\";\nimport { DataReader } from \"../util/DataReader.js\";\nimport { DataWriter } from \"../util/DataWriter.js\";\nimport { TlvCodec, TlvTag, TlvToPrimitive, TlvTypeLength } from \"./TlvCodec.js\";\n\nexport type TlvEncodingOptions = {\n /**\n * When true, the fabricIndex field will be excluded from the TLV encoding for list entries.\n * This flag must not be set together with the following flag.\n */\n forWriteInteraction?: boolean;\n\n /**\n * When true, mandatory field validation is skipped when encoding TLV for list entries.\n * This flag must not be set together with the former flag.\n */\n allowMissingFieldsForNonFabricFilteredRead?: boolean;\n};\n\nexport abstract class TlvSchema<T> extends Schema<T, ByteArray> implements TlvSchema<T> {\n override decodeInternal(encoded: ByteArray): T {\n return this.decodeTlvInternal(new TlvByteArrayReader(encoded)).value;\n }\n\n override encodeInternal(value: T): ByteArray {\n const writer = new TlvByteArrayWriter();\n this.encodeTlvInternal(writer, value);\n return writer.toByteArray();\n }\n\n encodeTlv(value: T, options?: TlvEncodingOptions): TlvStream {\n const writer = new TlvArrayWriter();\n this.encodeTlvInternal(writer, value, undefined, options);\n return writer.toTlvArray();\n }\n\n decodeTlv(encoded: TlvStream): T {\n return this.decodeTlvInternal(new TlvArrayReader(encoded)).value;\n }\n\n decodeTlvInternal(reader: TlvReader): { value: T; tag?: TlvTag } {\n const { tag, typeLength } = reader.readTagType();\n return { tag, value: this.decodeTlvInternalValue(reader, typeLength) };\n }\n\n abstract decodeTlvInternalValue(reader: TlvReader, typeLength: TlvTypeLength): T;\n\n abstract encodeTlvInternal(writer: TlvWriter, value: T, tag?: TlvTag, options?: TlvEncodingOptions): void;\n\n injectField(value: T, _fieldId: number, _fieldValue: any, _injectChecker: (fieldValue: any) => boolean): T {\n return value;\n }\n\n removeField(value: T, _fieldId: number, _removeChecker: (fieldValue: any) => boolean): T {\n return value;\n }\n}\n\nexport type TlvStream = TlvElement<any>[];\n\nexport type TlvElement<T extends TlvTypeLength> = {\n tag?: TlvTag;\n typeLength: T;\n value?: TlvToPrimitive[T[\"type\"]];\n};\n\nexport class TlvArrayWriter implements TlvWriter {\n private readonly tlvArray = new Array<TlvElement<any>>();\n\n writeTag(typeLength: TlvTypeLength, tag?: TlvTag) {\n this.tlvArray.push({ tag, typeLength });\n }\n\n writePrimitive<T extends TlvTypeLength>(_typeLength: T, value: TlvToPrimitive[T[\"type\"]]) {\n this.tlvArray[this.tlvArray.length - 1].value = value;\n }\n\n toTlvArray() {\n return this.tlvArray;\n }\n}\n\nexport class TlvArrayReader implements TlvReader {\n private index = -1;\n\n constructor(private readonly tlvElements: TlvElement<any>[]) {}\n\n readTagType() {\n this.index++;\n return this.tlvElements[this.index];\n }\n\n readPrimitive<T extends TlvTypeLength, V = TlvToPrimitive[T[\"type\"]]>(_typeLength: T): V {\n return this.tlvElements[this.index].value;\n }\n}\n\n/** Type defined by the TLV schema. */\nexport type TypeFromSchema<S extends TlvSchema<any>> = S extends TlvSchema<infer T> ? T : never;\n\nexport interface TlvReader {\n readTagType(): { tag?: TlvTag; typeLength: TlvTypeLength };\n\n readPrimitive<T extends TlvTypeLength, V = TlvToPrimitive[T[\"type\"]]>(typeLength: T): V;\n}\n\nexport interface TlvWriter {\n writeTag(typeLength: TlvTypeLength, tag?: TlvTag): void;\n\n writePrimitive<T extends TlvTypeLength>(typeLength: T, value: TlvToPrimitive[T[\"type\"]]): void;\n}\n\nexport class TlvByteArrayWriter implements TlvWriter {\n private readonly writer = new DataWriter(Endian.Little);\n\n writeTag(typeLength: TlvTypeLength, tag?: TlvTag) {\n TlvCodec.writeTag(this.writer, typeLength, tag);\n }\n\n writePrimitive<T extends TlvTypeLength>(typeLength: T, value: TlvToPrimitive[T[\"type\"]]) {\n TlvCodec.writePrimitive(this.writer, typeLength, value);\n }\n\n toByteArray() {\n return this.writer.toByteArray();\n }\n}\n\nexport class TlvByteArrayReader implements TlvReader {\n private readonly reader: DataReader<Endian.Little>;\n\n constructor(byteArray: ByteArray) {\n this.reader = new DataReader(byteArray, Endian.Little);\n }\n\n readTagType() {\n return TlvCodec.readTagType(this.reader);\n }\n\n readPrimitive<T extends TlvTypeLength, V = TlvToPrimitive[T[\"type\"]]>(typeLength: T): V {\n return TlvCodec.readPrimitive(this.reader, typeLength);\n }\n}\n"],
5
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,cAAc;AACvB,SAAoB,cAAc;AAClC,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,gBAAuD;AAgBzD,MAAe,kBAAqB,OAA6C;AAAA,EAC3E,eAAe,SAAuB;AAC3C,WAAO,KAAK,kBAAkB,IAAI,mBAAmB,OAAO,CAAC,EAAE;AAAA,EACnE;AAAA,EAES,eAAe,OAAqB;AACzC,UAAM,SAAS,IAAI,mBAAmB;AACtC,SAAK,kBAAkB,QAAQ,KAAK;AACpC,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,UAAU,OAAU,SAAyC;AACzD,UAAM,SAAS,IAAI,eAAe;AAClC,SAAK,kBAAkB,QAAQ,OAAO,QAAW,OAAO;AACxD,WAAO,OAAO,WAAW;AAAA,EAC7B;AAAA,EAEA,UAAU,SAAuB;AAC7B,WAAO,KAAK,kBAAkB,IAAI,eAAe,OAAO,CAAC,EAAE;AAAA,EAC/D;AAAA,EAEA,kBAAkB,QAA+C;AAC7D,UAAM,EAAE,KAAK,WAAW,IAAI,OAAO,YAAY;AAC/C,WAAO,EAAE,KAAK,OAAO,KAAK,uBAAuB,QAAQ,UAAU,EAAE;AAAA,EACzE;AAAA,EAMA,YAAY,OAAU,UAAkB,aAAkB,gBAAiD;AACvG,WAAO;AAAA,EACX;AAAA,EAEA,YAAY,OAAU,UAAkB,gBAAiD;AACrF,WAAO;AAAA,EACX;AACJ;AAUO,MAAM,eAAoC;AAAA,EAA1C;AACH,SAAiB,WAAW,IAAI,MAAuB;AAAA;AAAA,EAEvD,SAAS,YAA2B,KAAc;AAC9C,SAAK,SAAS,KAAK,EAAE,KAAK,WAAW,CAAC;AAAA,EAC1C;AAAA,EAEA,eAAwC,aAAgB,OAAkC;AACtF,SAAK,SAAS,KAAK,SAAS,SAAS,CAAC,EAAE,QAAQ;AAAA,EACpD;AAAA,EAEA,aAAa;AACT,WAAO,KAAK;AAAA,EAChB;AACJ;AAEO,MAAM,eAAoC;AAAA,EAG7C,YAA6B,aAAgC;AAAhC;AAF7B,SAAQ,QAAQ;AAAA,EAE8C;AAAA,EAE9D,cAAc;AACV,SAAK;AACL,WAAO,KAAK,YAAY,KAAK,KAAK;AAAA,EACtC;AAAA,EAEA,cAAsE,aAAmB;AACrF,WAAO,KAAK,YAAY,KAAK,KAAK,EAAE;AAAA,EACxC;AACJ;AAiBO,MAAM,mBAAwC;AAAA,EAA9C;AACH,SAAiB,SAAS,IAAI,WAAW,OAAO,MAAM;AAAA;AAAA,EAEtD,SAAS,YAA2B,KAAc;AAC9C,aAAS,SAAS,KAAK,QAAQ,YAAY,GAAG;AAAA,EAClD;AAAA,EAEA,eAAwC,YAAe,OAAkC;AACrF,aAAS,eAAe,KAAK,QAAQ,YAAY,KAAK;AAAA,EAC1D;AAAA,EAEA,cAAc;AACV,WAAO,KAAK,OAAO,YAAY;AAAA,EACnC;AACJ;AAEO,MAAM,mBAAwC;AAAA,EAGjD,YAAY,WAAsB;AAC9B,SAAK,SAAS,IAAI,WAAW,WAAW,OAAO,MAAM;AAAA,EACzD;AAAA,EAEA,cAAc;AACV,WAAO,SAAS,YAAY,KAAK,MAAM;AAAA,EAC3C;AAAA,EAEA,cAAsE,YAAkB;AACpF,WAAO,SAAS,cAAc,KAAK,QAAQ,UAAU;AAAA,EACzD;AACJ;",
6
6
  "names": []
7
7
  }
@@ -4,14 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { TlvTag, TlvTypeLength } from "./TlvCodec.js";
7
- import { TlvReader, TlvSchema, TlvWriter } from "./TlvSchema.js";
7
+ import { TlvEncodingOptions, TlvReader, TlvSchema, TlvWriter } from "./TlvSchema.js";
8
8
  export declare class TlvWrapper<O, T> extends TlvSchema<O> {
9
9
  protected readonly underlyingSchema: TlvSchema<T>;
10
10
  protected readonly wrap: (object: O) => T;
11
11
  private readonly unwrap;
12
12
  constructor(underlyingSchema: TlvSchema<T>, wrap: (object: O) => T, unwrap: (value: T) => O);
13
13
  decodeTlvInternalValue(reader: TlvReader, typeLength: TlvTypeLength): O;
14
- encodeTlvInternal(writer: TlvWriter, value: O, tag?: TlvTag, forWriteInteraction?: boolean): void;
14
+ encodeTlvInternal(writer: TlvWriter, value: O, tag?: TlvTag, options?: TlvEncodingOptions): void;
15
15
  validate(value: O): void;
16
16
  }
17
17
  //# sourceMappingURL=TlvWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TlvWrapper.d.ts","sourceRoot":"","sources":["../../../src/tlv/TlvWrapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEjE,qBAAa,UAAU,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFJ,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EACxB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;IAKnC,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,GAAG,CAAC;IAIvE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI;IAIjG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAGpC"}
1
+ {"version":3,"file":"TlvWrapper.d.ts","sourceRoot":"","sources":["../../../src/tlv/TlvWrapper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAErF,qBAAa,UAAU,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAE1C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFJ,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EACxB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;IAKnC,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,GAAG,CAAC;IAIvE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIhG,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAGpC"}
@@ -14,8 +14,8 @@ class TlvWrapper extends TlvSchema {
14
14
  decodeTlvInternalValue(reader, typeLength) {
15
15
  return this.unwrap(this.underlyingSchema.decodeTlvInternalValue(reader, typeLength));
16
16
  }
17
- encodeTlvInternal(writer, value, tag, forWriteInteraction) {
18
- this.underlyingSchema.encodeTlvInternal(writer, this.wrap(value), tag, forWriteInteraction);
17
+ encodeTlvInternal(writer, value, tag, options) {
18
+ this.underlyingSchema.encodeTlvInternal(writer, this.wrap(value), tag, options);
19
19
  }
20
20
  validate(value) {
21
21
  this.underlyingSchema.validate(this.wrap(value));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/tlv/TlvWrapper.ts"],
4
- "sourcesContent": ["/**\n * @license\n * Copyright 2022-2024 Matter.js Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TlvTag, TlvTypeLength } from \"./TlvCodec.js\";\nimport { TlvReader, TlvSchema, TlvWriter } from \"./TlvSchema.js\";\n\nexport class TlvWrapper<O, T> extends TlvSchema<O> {\n constructor(\n protected readonly underlyingSchema: TlvSchema<T>,\n protected readonly wrap: (object: O) => T,\n private readonly unwrap: (value: T) => O,\n ) {\n super();\n }\n\n override decodeTlvInternalValue(reader: TlvReader, typeLength: TlvTypeLength): O {\n return this.unwrap(this.underlyingSchema.decodeTlvInternalValue(reader, typeLength));\n }\n\n override encodeTlvInternal(writer: TlvWriter, value: O, tag?: TlvTag, forWriteInteraction?: boolean): void {\n this.underlyingSchema.encodeTlvInternal(writer, this.wrap(value), tag, forWriteInteraction);\n }\n\n override validate(value: O): void {\n this.underlyingSchema.validate(this.wrap(value));\n }\n}\n"],
5
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAoB,iBAA4B;AAEzC,MAAM,mBAAyB,UAAa;AAAA,EAC/C,YACuB,kBACA,MACF,QACnB;AACE,UAAM;AAJa;AACA;AACF;AAAA,EAGrB;AAAA,EAES,uBAAuB,QAAmB,YAA8B;AAC7E,WAAO,KAAK,OAAO,KAAK,iBAAiB,uBAAuB,QAAQ,UAAU,CAAC;AAAA,EACvF;AAAA,EAES,kBAAkB,QAAmB,OAAU,KAAc,qBAAqC;AACvG,SAAK,iBAAiB,kBAAkB,QAAQ,KAAK,KAAK,KAAK,GAAG,KAAK,mBAAmB;AAAA,EAC9F;AAAA,EAES,SAAS,OAAgB;AAC9B,SAAK,iBAAiB,SAAS,KAAK,KAAK,KAAK,CAAC;AAAA,EACnD;AACJ;",
4
+ "sourcesContent": ["/**\n * @license\n * Copyright 2022-2024 Matter.js Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { TlvTag, TlvTypeLength } from \"./TlvCodec.js\";\nimport { TlvEncodingOptions, TlvReader, TlvSchema, TlvWriter } from \"./TlvSchema.js\";\n\nexport class TlvWrapper<O, T> extends TlvSchema<O> {\n constructor(\n protected readonly underlyingSchema: TlvSchema<T>,\n protected readonly wrap: (object: O) => T,\n private readonly unwrap: (value: T) => O,\n ) {\n super();\n }\n\n override decodeTlvInternalValue(reader: TlvReader, typeLength: TlvTypeLength): O {\n return this.unwrap(this.underlyingSchema.decodeTlvInternalValue(reader, typeLength));\n }\n\n override encodeTlvInternal(writer: TlvWriter, value: O, tag?: TlvTag, options?: TlvEncodingOptions): void {\n this.underlyingSchema.encodeTlvInternal(writer, this.wrap(value), tag, options);\n }\n\n override validate(value: O): void {\n this.underlyingSchema.validate(this.wrap(value));\n }\n}\n"],
5
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAwC,iBAA4B;AAE7D,MAAM,mBAAyB,UAAa;AAAA,EAC/C,YACuB,kBACA,MACF,QACnB;AACE,UAAM;AAJa;AACA;AACF;AAAA,EAGrB;AAAA,EAES,uBAAuB,QAAmB,YAA8B;AAC7E,WAAO,KAAK,OAAO,KAAK,iBAAiB,uBAAuB,QAAQ,UAAU,CAAC;AAAA,EACvF;AAAA,EAES,kBAAkB,QAAmB,OAAU,KAAc,SAAoC;AACtG,SAAK,iBAAiB,kBAAkB,QAAQ,KAAK,KAAK,KAAK,GAAG,KAAK,OAAO;AAAA,EAClF;AAAA,EAES,SAAS,OAAgB;AAC9B,SAAK,iBAAiB,SAAS,KAAK,KAAK,KAAK,CAAC;AAAA,EACnD;AACJ;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@project-chip/matter.js",
3
- "version": "0.9.3",
3
+ "version": "0.9.4",
4
4
  "description": "Matter protocol in pure js",
5
5
  "keywords": [
6
6
  "iot",
@@ -36,7 +36,7 @@
36
36
  "@noble/curves": "^1.4.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@project-chip/matter.js-tools": "0.9.3",
39
+ "@project-chip/matter.js-tools": "0.9.4",
40
40
  "@types/chai": "^4.3.12",
41
41
  "@types/mocha": "^10.0.6",
42
42
  "@types/wtfnode": "^0.7.3",
@@ -169,5 +169,5 @@
169
169
  "publishConfig": {
170
170
  "access": "public"
171
171
  },
172
- "gitHead": "7bbb377e3a1a5ac4bb006b0573c25c2fe0d6dd75"
172
+ "gitHead": "eb59507fb8188184dd65c593b093e8d21b813ce7"
173
173
  }
@@ -549,7 +549,6 @@ export class CommissioningServer extends MatterNode {
549
549
 
550
550
  this.interactionServer = new LegacyInteractionServer({
551
551
  endpointStructure: this.endpointStructure,
552
- eventHandler: this.eventHandler,
553
552
  subscriptionOptions: {
554
553
  maxIntervalSeconds: this.options.subscriptionMaxIntervalSeconds,
555
554
  minIntervalSeconds: this.options.subscriptionMinIntervalSeconds,
@@ -56,6 +56,7 @@ export class MatterDevice {
56
56
  private readonly channelManager: ChannelManager;
57
57
  private readonly secureChannelProtocol = new SecureChannelProtocol(() => this.endCommissioning());
58
58
  private activeCommissioningMode = AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen;
59
+ private activeCommissioningDiscriminator?: number;
59
60
  private activeCommissioningEndCallback?: () => void;
60
61
  private announceInterval: Timer;
61
62
  private announcementStartedTime: number | null = null;
@@ -115,6 +116,8 @@ export class MatterDevice {
115
116
  // Last fabric got removed, so expire all announcements
116
117
  await this.expireAllFabricAnnouncements();
117
118
  }
119
+ // If a commissioning window is open then we reannounce this because it was ended as fabric got added
120
+ this.reAnnounceAsCommissionable();
118
121
  });
119
122
  this.#fabricManager.events.updated.on(({ fabricIndex }) =>
120
123
  this.commissioningChangedCallback(fabricIndex, FabricAction.Updated),
@@ -143,18 +146,25 @@ export class MatterDevice {
143
146
  // Delayed closing is executed when exchange is closed
144
147
  await this.exchangeManager.closeSession(session);
145
148
  }
146
- const currentFabric = session.fabric;
147
- if (currentFabric !== undefined) {
148
- this.sessionChangedCallback(currentFabric.fabricIndex);
149
+
150
+ const currentFabricIndex = session.fabric?.fabricIndex;
151
+ if (currentFabricIndex !== undefined) {
152
+ this.sessionChangedCallback(currentFabricIndex);
149
153
  }
154
+
150
155
  if (this.isClosing) {
151
156
  return;
152
157
  }
158
+
159
+ // Verify if the session associated fabric still exists
160
+ const existingSessionFabric =
161
+ currentFabricIndex === undefined ? undefined : this.getFabricByIndex(currentFabricIndex)?.fabricIndex;
162
+
153
163
  // When a session closes, announce existing fabrics again so that controller can detect the device again.
154
164
  // When session was closed and no fabric exist anymore then this is triggering a factory reset in upper layer
155
165
  // and it would be not good to announce a commissionable device and then reset that again with the factory reset
156
- if (this.#fabricManager.getFabrics().length > 0 || !currentFabric) {
157
- await this.startAnnouncement();
166
+ if (this.#fabricManager.getFabrics().length > 0 || session.isPase || !existingSessionFabric) {
167
+ this.startAnnouncement().catch(error => logger.warn(`Error while announcing`, error));
158
168
  }
159
169
  });
160
170
 
@@ -293,7 +303,7 @@ export class MatterDevice {
293
303
 
294
304
  async expireAllFabricAnnouncements() {
295
305
  for (const broadcaster of this.broadcasters) {
296
- await broadcaster.expireAllAnnouncements();
306
+ await broadcaster.expireFabricAnnouncement();
297
307
  }
298
308
  }
299
309
 
@@ -328,7 +338,10 @@ export class MatterDevice {
328
338
  }
329
339
  for (const broadcaster of this.broadcasters) {
330
340
  await broadcaster.setFabrics(fabrics);
331
- if (fabricsWithoutSessions > 0) {
341
+ if (
342
+ fabricsWithoutSessions > 0 ||
343
+ this.activeCommissioningMode !== AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen
344
+ ) {
332
345
  await broadcaster.announce();
333
346
  }
334
347
  }
@@ -354,6 +367,7 @@ export class MatterDevice {
354
367
  throw new InternalError("Commissioning window already open with different callback!");
355
368
  }
356
369
  this.activeCommissioningMode = mode;
370
+ this.activeCommissioningDiscriminator = discriminator;
357
371
  if (activeCommissioningEndCallback !== undefined) {
358
372
  this.activeCommissioningEndCallback = activeCommissioningEndCallback;
359
373
  }
@@ -364,6 +378,15 @@ export class MatterDevice {
364
378
  );
365
379
  }
366
380
 
381
+ reAnnounceAsCommissionable() {
382
+ if (this.activeCommissioningMode === AdministratorCommissioning.CommissioningWindowStatus.WindowNotOpen) {
383
+ return;
384
+ }
385
+ this.sendCommissionableAnnouncement(this.activeCommissioningMode, this.activeCommissioningDiscriminator).catch(
386
+ error => logger.warn("Error sending announcement", error),
387
+ );
388
+ }
389
+
367
390
  async sendCommissionableAnnouncement(
368
391
  mode: AdministratorCommissioning.CommissioningWindowStatus,
369
392
  discriminator?: number,
@@ -504,8 +527,8 @@ export class MatterDevice {
504
527
  return { session, channel: await networkInterface.openChannel(device.addresses[0]) };
505
528
  }
506
529
 
507
- async clearSubscriptionsForNode(peerNodeId: NodeId, flushSubscriptions?: boolean) {
508
- await this.#sessionManager.clearSubscriptionsForNode(peerNodeId, flushSubscriptions);
530
+ async clearSubscriptionsForNode(fabricIndex: FabricIndex, peerNodeId: NodeId, flushSubscriptions?: boolean) {
531
+ await this.#sessionManager.clearSubscriptionsForNode(fabricIndex, peerNodeId, flushSubscriptions);
509
532
  }
510
533
 
511
534
  async close() {
@@ -271,7 +271,7 @@ function dataEnforcerFor(schema: Schema): AccessControl {
271
271
  }
272
272
 
273
273
  if (location?.owningFabric && location.owningFabric !== session.fabric) {
274
- throw new WriteError(
274
+ throw new ReadError(
275
275
  location,
276
276
  "Permission denied: Owning/accessing fabric mismatch",
277
277
  StatusCode.UnsupportedAccess,
@@ -291,7 +291,7 @@ function dataEnforcerFor(schema: Schema): AccessControl {
291
291
  return false;
292
292
  }
293
293
 
294
- if (session.fabricFiltered && location?.owningFabric && location.owningFabric !== session.fabric) {
294
+ if (location?.owningFabric && location.owningFabric !== session.fabric) {
295
295
  return false;
296
296
  }
297
297
 
@@ -5,9 +5,10 @@
5
5
  */
6
6
 
7
7
  import { FailsafeContext } from "../../../common/FailsafeContext.js";
8
- import { Lifecycle } from "../../../common/Lifecycle.js";
8
+ import { Lifecycle, UnsupportedDependencyError } from "../../../common/Lifecycle.js";
9
9
  import { Endpoint } from "../../../endpoint/Endpoint.js";
10
10
  import { Fabric } from "../../../fabric/Fabric.js";
11
+ import { FabricManager } from "../../../fabric/FabricManager.js";
11
12
  import { Node } from "../../../node/Node.js";
12
13
  import { Immutable } from "../../../util/Type.js";
13
14
  import { NetworkCommissioningBehavior } from "../network-commissioning/NetworkCommissioningBehavior.js";
@@ -101,6 +102,25 @@ export class ServerNodeFailsafeContext extends FailsafeContext {
101
102
  });
102
103
  }
103
104
 
105
+ override async rollback() {
106
+ if (!this.fabricIndex && this.hasRootCert) {
107
+ // Update the fabric details if needed (like Trusted Root certificates)
108
+ // Only if fabric was not added because else all data gets updated anyway
109
+ try {
110
+ const fabricManager = this.#node.env.get(FabricManager);
111
+ fabricManager.events.failsafeClosed.emit();
112
+ } catch (error) {
113
+ // UnsupportedDependencyError can happen when the node closes.
114
+ // Then data are refreshed on next start anyway, so ignore this case
115
+ if (!(error instanceof UnsupportedDependencyError)) {
116
+ throw error;
117
+ }
118
+ }
119
+ }
120
+
121
+ return super.rollback();
122
+ }
123
+
104
124
  /*
105
125
  override async restoreFabric() {
106
126
  await super.restoreFabric();
@@ -12,6 +12,7 @@ import { MatterFabricInvalidAdminSubjectError } from "../../../common/FailsafeCo
12
12
  import { MatterFabricConflictError } from "../../../common/FailsafeTimer.js";
13
13
  import { MatterFlowError, UnexpectedDataError } from "../../../common/MatterError.js";
14
14
  import { ValidationError } from "../../../common/ValidationError.js";
15
+ import { CryptoVerifyError } from "../../../crypto/Crypto.js";
15
16
  import { FabricIndex } from "../../../datatype/FabricIndex.js";
16
17
  import { Endpoint } from "../../../endpoint/Endpoint.js";
17
18
  import { Fabric, PublicKeyError } from "../../../fabric/Fabric.js";
@@ -169,6 +170,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
169
170
  debugText: error.message,
170
171
  };
171
172
  } else if (
173
+ error instanceof CryptoVerifyError ||
172
174
  error instanceof CertificateError ||
173
175
  error instanceof ValidationError ||
174
176
  error instanceof UnexpectedDataError
@@ -411,6 +413,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
411
413
  } catch (error) {
412
414
  logger.info("setting root certificate failed", error);
413
415
  if (
416
+ error instanceof CryptoVerifyError ||
414
417
  error instanceof CertificateError ||
415
418
  error instanceof ValidationError ||
416
419
  error instanceof UnexpectedDataError
@@ -419,6 +422,11 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
419
422
  }
420
423
  throw error;
421
424
  }
425
+
426
+ const fabrics = this.endpoint.env.get(FabricManager).getFabrics();
427
+ const trustedRootCertificates = fabrics.map(fabric => fabric.rootCert);
428
+ trustedRootCertificates.push(rootCaCertificate);
429
+ this.state.trustedRootCertificates = trustedRootCertificates;
422
430
  }
423
431
 
424
432
  async #updateFabrics() {
@@ -474,11 +482,16 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
474
482
  this.agent.get(CommissioningBehavior).handleFabricChange(fabricIndex, FabricAction.Removed);
475
483
  }
476
484
 
485
+ async #handleFailsafeClosed() {
486
+ await this.#updateFabrics();
487
+ }
488
+
477
489
  async #nodeOnline() {
478
490
  const fabricManager = this.endpoint.env.get(FabricManager);
479
491
  this.reactTo(fabricManager.events.added, this.#handleAddedFabric);
480
492
  this.reactTo(fabricManager.events.updated, this.#handleUpdatedFabric);
481
493
  this.reactTo(fabricManager.events.deleted, this.#handleRemovedFabric);
494
+ this.reactTo(fabricManager.events.failsafeClosed, this.#handleFailsafeClosed, { lock: true });
482
495
  await this.#updateFabrics();
483
496
  }
484
497
  }
@@ -800,8 +800,7 @@ export class CertificateManager {
800
800
  );
801
801
  }
802
802
 
803
- // Root cert is self signed anyway, so we do not need to verify it with itself
804
- //Crypto.verify(PublicKey(rootCert.ellipticCurvePublicKey), this.rootCertToAsn1(rootCert), rootCert.signature);
803
+ Crypto.verify(PublicKey(rootCert.ellipticCurvePublicKey), this.rootCertToAsn1(rootCert), rootCert.signature);
805
804
  }
806
805
 
807
806
  /**
@@ -31,7 +31,7 @@ const TestCMS_SignerPrivateKey = ByteArray.fromHex("AEF3484116E9481EC57BE0472DF4
31
31
  const TestCMS_SignerSubjectKeyIdentifier = ByteArray.fromHex("62FA823359ACFAA9963E1CFA140ADDF504F37160");
32
32
 
33
33
  export class CertificationDeclarationManager {
34
- static generate(vendorId: VendorId, productId: number) {
34
+ static generate(vendorId: VendorId, productId: number, provisional = false) {
35
35
  const certificationElements = TlvCertificationDeclaration.encode({
36
36
  formatVersion: 1,
37
37
  vendorId,
@@ -41,7 +41,7 @@ export class CertificationDeclarationManager {
41
41
  securityLevel: 0,
42
42
  securityInformation: 0,
43
43
  versionNumber: 1,
44
- certificationType: 0,
44
+ certificationType: provisional ? 1 : 0, // 0 = Test, 1 = Provisional/In certification, 2 = official
45
45
  });
46
46
 
47
47
  return CertificateManager.CertificationDeclarationToAsn1(
@@ -28,16 +28,16 @@ import {
28
28
  } from "./AttributeServer.js";
29
29
  import { ClusterServer } from "./ClusterServer.js";
30
30
  import { ClusterServerHandlers } from "./ClusterServerTypes.js";
31
- import { EventServer } from "./EventServer.js";
31
+ import { FabricSensitiveEventServer } from "./EventServer.js";
32
32
 
33
33
  const logger = Logger.get("AccessControlClusterServer");
34
34
 
35
35
  export const AccessControlClusterHandler: () => ClusterServerHandlers<typeof AccessControlCluster> = () => {
36
36
  let accessControlEntryChangedEvent:
37
- | EventServer<AccessControl.AccessControlEntryChangedEvent, SyncStorage>
37
+ | FabricSensitiveEventServer<AccessControl.AccessControlEntryChangedEvent, SyncStorage>
38
38
  | undefined = undefined;
39
39
  let accessControlExtensionChangedEvent:
40
- | EventServer<AccessControl.AccessControlExtensionChangedEvent, SyncStorage>
40
+ | FabricSensitiveEventServer<AccessControl.AccessControlExtensionChangedEvent, SyncStorage>
41
41
  | undefined = undefined;
42
42
 
43
43
  return {
@@ -13,7 +13,13 @@ import { AttributeId } from "../../datatype/AttributeId.js";
13
13
  import { Endpoint as EndpointInterface } from "../../device/Endpoint.js";
14
14
  import { Fabric } from "../../fabric/Fabric.js";
15
15
  import { Logger } from "../../log/Logger.js";
16
- import { Globals } from "../../model/index.js";
16
+ import {
17
+ AttributeModel,
18
+ ClusterModel,
19
+ DatatypeModel,
20
+ Globals,
21
+ MatterModel as MatterModelObj,
22
+ } from "../../model/index.js";
17
23
  import { StatusCode, StatusResponseError } from "../../protocol/interaction/StatusCode.js";
18
24
  import { BitSchema, TypeFromPartialBitSchema } from "../../schema/BitmapSchema.js";
19
25
  import { NoAssociatedFabricError, SecureSession, assertSecureSession } from "../../session/SecureSession.js";
@@ -21,11 +27,15 @@ import { Session } from "../../session/Session.js";
21
27
  import { TlvSchema } from "../../tlv/TlvSchema.js";
22
28
  import { isDeepEqual } from "../../util/DeepEqual.js";
23
29
  import { MaybePromise } from "../../util/Promises.js";
30
+ import { camelize } from "../../util/String.js";
24
31
  import { AccessLevel, Attribute, Attributes, Cluster, Commands, Events } from "../Cluster.js";
25
32
  import { ClusterDatasource } from "./ClusterServerTypes.js";
26
33
 
27
34
  const logger = Logger.get("AttributeServer");
28
35
 
36
+ const FabricIndexName = "fabricIndex";
37
+ const MatterModel = new MatterModelObj();
38
+
29
39
  /**
30
40
  * Thrown when an operation cannot complete because fabric information is
31
41
  * unavailable.
@@ -178,6 +188,10 @@ export abstract class BaseAttributeServer<T> {
178
188
  this.defaultValue = this.value;
179
189
  }
180
190
 
191
+ get hasFabricSensitiveData() {
192
+ return false;
193
+ }
194
+
181
195
  validateWithSchema(value: T) {
182
196
  try {
183
197
  this.schema.validate(value);
@@ -727,6 +741,7 @@ export function genericFabricScopedAttributeSetter<T>(
727
741
  export class FabricScopedAttributeServer<T> extends AttributeServer<T> {
728
742
  private readonly isCustomGetter: boolean;
729
743
  private readonly isCustomSetter: boolean;
744
+ private readonly fabricSensitiveElementsToRemove = new Array<string>();
730
745
 
731
746
  constructor(
732
747
  id: AttributeId,
@@ -814,6 +829,69 @@ export class FabricScopedAttributeServer<T> extends AttributeServer<T> {
814
829
  );
815
830
  this.isCustomGetter = isCustomGetter;
816
831
  this.isCustomSetter = isCustomSetter;
832
+
833
+ this.#determineSensitiveFieldsToRemove();
834
+ }
835
+
836
+ #determineSensitiveFieldsToRemove() {
837
+ const clusterFromModel = MatterModel.get(ClusterModel, this.cluster.id);
838
+ if (clusterFromModel === undefined) {
839
+ logger.debug(`${this.cluster.name}: Cluster for Fabric scoped element not found in Model, ignore`);
840
+ return;
841
+ }
842
+ const attributeFromModel = clusterFromModel.get(AttributeModel, this.id);
843
+ if (attributeFromModel === undefined) {
844
+ logger.debug(
845
+ `${this.cluster.name}.${this.id}: Attribute for Fabric scoped element not found in Model, ignore`,
846
+ );
847
+ return;
848
+ }
849
+ if (!attributeFromModel.fabricScoped) {
850
+ logger.debug(`${this.cluster.name}.${this.id}: Attribute is not Fabric scoped in model, ignore`);
851
+ return;
852
+ }
853
+ if (attributeFromModel.children.length !== 1) {
854
+ logger.debug(`${this.cluster.name}.${this.id}: Attribute has not exactly one child, ignore`);
855
+ return;
856
+ }
857
+ const type = attributeFromModel.children[0].type;
858
+ if (type === undefined) {
859
+ logger.debug(`${this.cluster.name}.${this.id}: Attribute field has no type, ignore`);
860
+ return;
861
+ }
862
+ const dataType = clusterFromModel.get(DatatypeModel, type);
863
+ if (dataType === undefined) {
864
+ logger.debug(`${this.cluster.name}.${this.id}: DataType ${type} not found in model, ignore`);
865
+ return;
866
+ }
867
+ dataType.children
868
+ .filter(field => field.fabricSensitive)
869
+ .forEach(field => this.fabricSensitiveElementsToRemove.push(camelize(field.name)));
870
+ }
871
+
872
+ override get hasFabricSensitiveData() {
873
+ return this.fabricSensitiveElementsToRemove.length > 0;
874
+ }
875
+
876
+ /**
877
+ * Sanitize the value of the attribute by removing fabric sensitive fields that do not belong to the
878
+ * associated fabric
879
+ */
880
+ sanitizeFabricSensitiveFields(value: T, associatedFabric?: Fabric) {
881
+ if (this.fabricSensitiveElementsToRemove.length && Array.isArray(value)) {
882
+ // Get the associated Fabric Index or uses -1 when no Fabric is associated because this value will
883
+ // never be in the struct
884
+ const associatedFabricIndex = associatedFabric?.fabricIndex ?? -1;
885
+ return value.map(data => {
886
+ if (data[FabricIndexName] !== associatedFabricIndex) {
887
+ const result = { ...data };
888
+ this.fabricSensitiveElementsToRemove.forEach(fieldName => delete result[fieldName]);
889
+ return result;
890
+ }
891
+ return data;
892
+ });
893
+ }
894
+ return value;
817
895
  }
818
896
 
819
897
  /**
@@ -37,7 +37,7 @@ import {
37
37
  SupportedEventsList,
38
38
  } from "./ClusterServerTypes.js";
39
39
  import { CommandServer } from "./CommandServer.js";
40
- import { EventServer } from "./EventServer.js";
40
+ import { createEventServer } from "./EventServer.js";
41
41
 
42
42
  const logger = Logger.get("ClusterServer");
43
43
 
@@ -508,7 +508,14 @@ export function ClusterServer<
508
508
  }
509
509
 
510
510
  if ((supportedEvents as any)[eventName] === true) {
511
- (events as any)[eventName] = new EventServer(id, clusterId, eventName, schema, priority, readAcl);
511
+ (events as any)[eventName] = createEventServer(
512
+ clusterDef,
513
+ eventDef[eventName],
514
+ eventName,
515
+ schema,
516
+ priority,
517
+ readAcl,
518
+ );
512
519
  const capitalizedEventName = capitalize(eventName);
513
520
  result[`trigger${capitalizedEventName}Event`] = <T>(event: T) =>
514
521
  (events as any)[eventName].triggerEvent(event);
@@ -49,7 +49,7 @@ import {
49
49
  import { Scenes } from "../definitions/ScenesCluster.js";
50
50
  import { AttributeServer, FabricScopedAttributeServer, FixedAttributeServer } from "./AttributeServer.js";
51
51
  import { CommandServer } from "./CommandServer.js";
52
- import { EventServer } from "./EventServer.js";
52
+ import { AnyEventServer } from "./EventServer.js";
53
53
 
54
54
  /** Cluster attributes accessible on the cluster server */
55
55
  type MandatoryAttributeServers<A extends Attributes> = Omit<
@@ -243,8 +243,8 @@ type ServerAttributeSubscribers<A extends Attributes> = {
243
243
  };
244
244
 
245
245
  export type EventServers<E extends Events> = Merge<
246
- { [P in MandatoryEventNames<E>]: EventServer<EventType<E[P]>, any> },
247
- { [P in OptionalEventNames<E>]?: EventServer<EventType<E[P]>, any> }
246
+ { [P in MandatoryEventNames<E>]: AnyEventServer<EventType<E[P]>, any> },
247
+ { [P in OptionalEventNames<E>]?: AnyEventServer<EventType<E[P]>, any> }
248
248
  >;
249
249
  type ServerEventTriggers<E extends Events> = {
250
250
  [P in MandatoryEventNames<E> as `trigger${Capitalize<string & P>}Event`]: (event: EventType<E[P]>) => void;