@matter/protocol 0.16.0-alpha.0-20250913-0bc2515df → 0.16.0-alpha.0-20250920-809524dba

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 (245) hide show
  1. package/dist/cjs/bdx/BdxClient.d.ts +31 -0
  2. package/dist/cjs/bdx/BdxClient.d.ts.map +1 -0
  3. package/dist/cjs/bdx/BdxClient.js +57 -0
  4. package/dist/cjs/bdx/BdxClient.js.map +6 -0
  5. package/dist/cjs/bdx/BdxError.d.ts +21 -0
  6. package/dist/cjs/bdx/BdxError.d.ts.map +1 -0
  7. package/dist/cjs/bdx/BdxError.js +54 -0
  8. package/dist/cjs/bdx/BdxError.js.map +6 -0
  9. package/dist/cjs/bdx/BdxMessenger.d.ts +77 -0
  10. package/dist/cjs/bdx/BdxMessenger.d.ts.map +1 -0
  11. package/dist/cjs/bdx/BdxMessenger.js +245 -0
  12. package/dist/cjs/bdx/BdxMessenger.js.map +6 -0
  13. package/dist/cjs/bdx/BdxProtocol.d.ts +25 -0
  14. package/dist/cjs/bdx/BdxProtocol.d.ts.map +1 -0
  15. package/dist/cjs/bdx/BdxProtocol.js +102 -0
  16. package/dist/cjs/bdx/BdxProtocol.js.map +6 -0
  17. package/dist/cjs/bdx/BdxSession.d.ts +36 -0
  18. package/dist/cjs/bdx/BdxSession.d.ts.map +1 -0
  19. package/dist/cjs/bdx/BdxSession.js +153 -0
  20. package/dist/cjs/bdx/BdxSession.js.map +6 -0
  21. package/dist/cjs/bdx/BdxSessionConfiguration.d.ts +61 -0
  22. package/dist/cjs/bdx/BdxSessionConfiguration.d.ts.map +1 -0
  23. package/dist/cjs/bdx/BdxSessionConfiguration.js +95 -0
  24. package/dist/cjs/bdx/BdxSessionConfiguration.js.map +6 -0
  25. package/dist/cjs/bdx/FileDesignator.d.ts +21 -0
  26. package/dist/cjs/bdx/FileDesignator.d.ts.map +1 -0
  27. package/dist/cjs/bdx/FileDesignator.js +62 -0
  28. package/dist/cjs/bdx/FileDesignator.js.map +6 -0
  29. package/dist/cjs/bdx/PersistedFileDesignator.d.ts +16 -0
  30. package/dist/cjs/bdx/PersistedFileDesignator.d.ts.map +1 -0
  31. package/dist/cjs/bdx/PersistedFileDesignator.js +57 -0
  32. package/dist/cjs/bdx/PersistedFileDesignator.js.map +6 -0
  33. package/dist/cjs/bdx/bdx-session-initiator.d.ts +14 -0
  34. package/dist/cjs/bdx/bdx-session-initiator.d.ts.map +1 -0
  35. package/dist/cjs/bdx/bdx-session-initiator.js +218 -0
  36. package/dist/cjs/bdx/bdx-session-initiator.js.map +6 -0
  37. package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts +15 -0
  38. package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
  39. package/dist/cjs/bdx/flow/DrivenSendingFlow.js +49 -0
  40. package/dist/cjs/bdx/flow/DrivenSendingFlow.js.map +6 -0
  41. package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
  42. package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
  43. package/dist/cjs/bdx/flow/DrivingReceivingFlow.js +47 -0
  44. package/dist/cjs/bdx/flow/DrivingReceivingFlow.js.map +6 -0
  45. package/dist/cjs/bdx/flow/Flow.d.ts +48 -0
  46. package/dist/cjs/bdx/flow/Flow.d.ts.map +1 -0
  47. package/dist/cjs/bdx/flow/Flow.js +112 -0
  48. package/dist/cjs/bdx/flow/Flow.js.map +6 -0
  49. package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
  50. package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
  51. package/dist/cjs/bdx/flow/FollowingReceivingFlow.js +60 -0
  52. package/dist/cjs/bdx/flow/FollowingReceivingFlow.js.map +6 -0
  53. package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts +15 -0
  54. package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
  55. package/dist/cjs/bdx/flow/FollowingSendingFlow.js +49 -0
  56. package/dist/cjs/bdx/flow/FollowingSendingFlow.js.map +6 -0
  57. package/dist/cjs/bdx/flow/InboundFlow.d.ts +26 -0
  58. package/dist/cjs/bdx/flow/InboundFlow.d.ts.map +1 -0
  59. package/dist/cjs/bdx/flow/InboundFlow.js +101 -0
  60. package/dist/cjs/bdx/flow/InboundFlow.js.map +6 -0
  61. package/dist/cjs/bdx/flow/OutboundFlow.d.ts +31 -0
  62. package/dist/cjs/bdx/flow/OutboundFlow.d.ts.map +1 -0
  63. package/dist/cjs/bdx/flow/OutboundFlow.js +124 -0
  64. package/dist/cjs/bdx/flow/OutboundFlow.js.map +6 -0
  65. package/dist/cjs/bdx/index.d.ts +16 -0
  66. package/dist/cjs/bdx/index.d.ts.map +1 -0
  67. package/dist/cjs/bdx/index.js +33 -0
  68. package/dist/cjs/bdx/index.js.map +6 -0
  69. package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
  70. package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
  71. package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js +125 -0
  72. package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
  73. package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
  74. package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
  75. package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js +92 -0
  76. package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
  77. package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
  78. package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
  79. package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js +153 -0
  80. package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
  81. package/dist/cjs/bdx/schema/BdxMessage.d.ts +23 -0
  82. package/dist/cjs/bdx/schema/BdxMessage.d.ts.map +1 -0
  83. package/dist/cjs/bdx/schema/BdxMessage.js +75 -0
  84. package/dist/cjs/bdx/schema/BdxMessage.js.map +6 -0
  85. package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
  86. package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
  87. package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js +35 -0
  88. package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
  89. package/dist/cjs/bdx/schema/index.d.ts +11 -0
  90. package/dist/cjs/bdx/schema/index.d.ts.map +1 -0
  91. package/dist/cjs/bdx/schema/index.js +28 -0
  92. package/dist/cjs/bdx/schema/index.js.map +6 -0
  93. package/dist/cjs/index.d.ts +1 -0
  94. package/dist/cjs/index.d.ts.map +1 -1
  95. package/dist/cjs/index.js +1 -0
  96. package/dist/cjs/index.js.map +1 -1
  97. package/dist/cjs/mdns/MdnsClient.js +2 -2
  98. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  99. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  100. package/dist/cjs/protocol/ExchangeManager.js +4 -2
  101. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  102. package/dist/cjs/protocol/MessageExchange.d.ts +2 -0
  103. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  104. package/dist/cjs/protocol/MessageExchange.js +14 -8
  105. package/dist/cjs/protocol/MessageExchange.js.map +2 -2
  106. package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +1 -1
  107. package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
  108. package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
  109. package/dist/esm/bdx/BdxClient.d.ts +31 -0
  110. package/dist/esm/bdx/BdxClient.d.ts.map +1 -0
  111. package/dist/esm/bdx/BdxClient.js +37 -0
  112. package/dist/esm/bdx/BdxClient.js.map +6 -0
  113. package/dist/esm/bdx/BdxError.d.ts +21 -0
  114. package/dist/esm/bdx/BdxError.d.ts.map +1 -0
  115. package/dist/esm/bdx/BdxError.js +34 -0
  116. package/dist/esm/bdx/BdxError.js.map +6 -0
  117. package/dist/esm/bdx/BdxMessenger.d.ts +77 -0
  118. package/dist/esm/bdx/BdxMessenger.d.ts.map +1 -0
  119. package/dist/esm/bdx/BdxMessenger.js +233 -0
  120. package/dist/esm/bdx/BdxMessenger.js.map +6 -0
  121. package/dist/esm/bdx/BdxProtocol.d.ts +25 -0
  122. package/dist/esm/bdx/BdxProtocol.d.ts.map +1 -0
  123. package/dist/esm/bdx/BdxProtocol.js +82 -0
  124. package/dist/esm/bdx/BdxProtocol.js.map +6 -0
  125. package/dist/esm/bdx/BdxSession.d.ts +36 -0
  126. package/dist/esm/bdx/BdxSession.d.ts.map +1 -0
  127. package/dist/esm/bdx/BdxSession.js +133 -0
  128. package/dist/esm/bdx/BdxSession.js.map +6 -0
  129. package/dist/esm/bdx/BdxSessionConfiguration.d.ts +61 -0
  130. package/dist/esm/bdx/BdxSessionConfiguration.d.ts.map +1 -0
  131. package/dist/esm/bdx/BdxSessionConfiguration.js +75 -0
  132. package/dist/esm/bdx/BdxSessionConfiguration.js.map +6 -0
  133. package/dist/esm/bdx/FileDesignator.d.ts +21 -0
  134. package/dist/esm/bdx/FileDesignator.d.ts.map +1 -0
  135. package/dist/esm/bdx/FileDesignator.js +42 -0
  136. package/dist/esm/bdx/FileDesignator.js.map +6 -0
  137. package/dist/esm/bdx/PersistedFileDesignator.d.ts +16 -0
  138. package/dist/esm/bdx/PersistedFileDesignator.d.ts.map +1 -0
  139. package/dist/esm/bdx/PersistedFileDesignator.js +37 -0
  140. package/dist/esm/bdx/PersistedFileDesignator.js.map +6 -0
  141. package/dist/esm/bdx/bdx-session-initiator.d.ts +14 -0
  142. package/dist/esm/bdx/bdx-session-initiator.d.ts.map +1 -0
  143. package/dist/esm/bdx/bdx-session-initiator.js +198 -0
  144. package/dist/esm/bdx/bdx-session-initiator.js.map +6 -0
  145. package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts +15 -0
  146. package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
  147. package/dist/esm/bdx/flow/DrivenSendingFlow.js +29 -0
  148. package/dist/esm/bdx/flow/DrivenSendingFlow.js.map +6 -0
  149. package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
  150. package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
  151. package/dist/esm/bdx/flow/DrivingReceivingFlow.js +27 -0
  152. package/dist/esm/bdx/flow/DrivingReceivingFlow.js.map +6 -0
  153. package/dist/esm/bdx/flow/Flow.d.ts +48 -0
  154. package/dist/esm/bdx/flow/Flow.d.ts.map +1 -0
  155. package/dist/esm/bdx/flow/Flow.js +92 -0
  156. package/dist/esm/bdx/flow/Flow.js.map +6 -0
  157. package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
  158. package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
  159. package/dist/esm/bdx/flow/FollowingReceivingFlow.js +40 -0
  160. package/dist/esm/bdx/flow/FollowingReceivingFlow.js.map +6 -0
  161. package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts +15 -0
  162. package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
  163. package/dist/esm/bdx/flow/FollowingSendingFlow.js +29 -0
  164. package/dist/esm/bdx/flow/FollowingSendingFlow.js.map +6 -0
  165. package/dist/esm/bdx/flow/InboundFlow.d.ts +26 -0
  166. package/dist/esm/bdx/flow/InboundFlow.d.ts.map +1 -0
  167. package/dist/esm/bdx/flow/InboundFlow.js +81 -0
  168. package/dist/esm/bdx/flow/InboundFlow.js.map +6 -0
  169. package/dist/esm/bdx/flow/OutboundFlow.d.ts +31 -0
  170. package/dist/esm/bdx/flow/OutboundFlow.d.ts.map +1 -0
  171. package/dist/esm/bdx/flow/OutboundFlow.js +104 -0
  172. package/dist/esm/bdx/flow/OutboundFlow.js.map +6 -0
  173. package/dist/esm/bdx/index.d.ts +16 -0
  174. package/dist/esm/bdx/index.d.ts.map +1 -0
  175. package/dist/esm/bdx/index.js +16 -0
  176. package/dist/esm/bdx/index.js.map +6 -0
  177. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
  178. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
  179. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js +109 -0
  180. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
  181. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
  182. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
  183. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js +72 -0
  184. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
  185. package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
  186. package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
  187. package/dist/esm/bdx/schema/BdxInitMessagesSchema.js +133 -0
  188. package/dist/esm/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
  189. package/dist/esm/bdx/schema/BdxMessage.d.ts +23 -0
  190. package/dist/esm/bdx/schema/BdxMessage.d.ts.map +1 -0
  191. package/dist/esm/bdx/schema/BdxMessage.js +62 -0
  192. package/dist/esm/bdx/schema/BdxMessage.js.map +6 -0
  193. package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
  194. package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
  195. package/dist/esm/bdx/schema/BdxStatusMessageSchema.js +15 -0
  196. package/dist/esm/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
  197. package/dist/esm/bdx/schema/index.d.ts +11 -0
  198. package/dist/esm/bdx/schema/index.d.ts.map +1 -0
  199. package/dist/esm/bdx/schema/index.js +11 -0
  200. package/dist/esm/bdx/schema/index.js.map +6 -0
  201. package/dist/esm/index.d.ts +1 -0
  202. package/dist/esm/index.d.ts.map +1 -1
  203. package/dist/esm/index.js +1 -0
  204. package/dist/esm/index.js.map +1 -1
  205. package/dist/esm/mdns/MdnsClient.js +2 -2
  206. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  207. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  208. package/dist/esm/protocol/ExchangeManager.js +4 -2
  209. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  210. package/dist/esm/protocol/MessageExchange.d.ts +2 -0
  211. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  212. package/dist/esm/protocol/MessageExchange.js +14 -8
  213. package/dist/esm/protocol/MessageExchange.js.map +2 -2
  214. package/dist/esm/protocol/ProtocolStatusMessage.d.ts +1 -1
  215. package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
  216. package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
  217. package/package.json +6 -6
  218. package/src/bdx/BdxClient.ts +47 -0
  219. package/src/bdx/BdxError.ts +39 -0
  220. package/src/bdx/BdxMessenger.ts +291 -0
  221. package/src/bdx/BdxProtocol.ts +93 -0
  222. package/src/bdx/BdxSession.ts +174 -0
  223. package/src/bdx/BdxSessionConfiguration.ts +134 -0
  224. package/src/bdx/FileDesignator.ts +49 -0
  225. package/src/bdx/PersistedFileDesignator.ts +40 -0
  226. package/src/bdx/bdx-session-initiator.ts +246 -0
  227. package/src/bdx/flow/DrivenSendingFlow.ts +40 -0
  228. package/src/bdx/flow/DrivingReceivingFlow.ts +39 -0
  229. package/src/bdx/flow/Flow.ts +124 -0
  230. package/src/bdx/flow/FollowingReceivingFlow.ts +53 -0
  231. package/src/bdx/flow/FollowingSendingFlow.ts +38 -0
  232. package/src/bdx/flow/InboundFlow.ts +104 -0
  233. package/src/bdx/flow/OutboundFlow.ts +124 -0
  234. package/src/bdx/index.ts +16 -0
  235. package/src/bdx/schema/BdxAcceptMessagesSchema.ts +159 -0
  236. package/src/bdx/schema/BdxBlockMessagesSchema.ts +99 -0
  237. package/src/bdx/schema/BdxInitMessagesSchema.ts +213 -0
  238. package/src/bdx/schema/BdxMessage.ts +70 -0
  239. package/src/bdx/schema/BdxStatusMessageSchema.ts +14 -0
  240. package/src/bdx/schema/index.ts +11 -0
  241. package/src/index.ts +1 -0
  242. package/src/mdns/MdnsClient.ts +2 -2
  243. package/src/protocol/ExchangeManager.ts +2 -0
  244. package/src/protocol/MessageExchange.ts +17 -6
  245. package/src/protocol/ProtocolStatusMessage.ts +1 -1
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { InternalError } from "#general";
7
+ import { BdxMessageType, BdxStatusCode } from "#types";
8
+ import { BdxError } from "../BdxError.js";
9
+ import { Flow } from "./Flow.js";
10
+ class InboundFlow extends Flow {
11
+ #closeStreams;
12
+ #writeController;
13
+ #writePromise;
14
+ /**
15
+ * Returns initialized streams for the transfer and initializes the #closeStream class function
16
+ */
17
+ async initTransfer() {
18
+ let writeController;
19
+ const stream = new ReadableStream({
20
+ start: (controller) => {
21
+ writeController = controller;
22
+ }
23
+ });
24
+ const { fileDesignator } = this.transferParameters;
25
+ const writePromise = fileDesignator.writeFromStream(stream);
26
+ this.#closeStreams = async (error) => {
27
+ if (writeController !== void 0) {
28
+ if (error != void 0) {
29
+ writeController.error(error);
30
+ try {
31
+ await writePromise;
32
+ } catch {
33
+ }
34
+ }
35
+ }
36
+ if (!stream.locked) {
37
+ await stream.cancel();
38
+ }
39
+ };
40
+ this.#writeController = writeController;
41
+ this.#writePromise = writePromise;
42
+ }
43
+ get stream() {
44
+ if (!this.#writeController || !this.#writePromise) {
45
+ throw new InternalError("Transfer not initialized. Call initTransfer() before starting the transfer.");
46
+ }
47
+ return { writeController: this.#writeController, writePromise: this.#writePromise };
48
+ }
49
+ async finalizeTransfer() {
50
+ const { writePromise } = this.stream;
51
+ const blockCounter = this.finalBlockCounter;
52
+ await writePromise;
53
+ await this.messenger.sendBlockAckEof({ blockCounter });
54
+ }
55
+ writeDataChunk(writeController, data, messageType) {
56
+ writeController.enqueue(data);
57
+ if (this.bytesLeft !== void 0) {
58
+ this.bytesLeft -= data.byteLength;
59
+ }
60
+ let done = false;
61
+ if (messageType === BdxMessageType.BlockEof) {
62
+ if (this.bytesLeft !== void 0 && this.bytesLeft !== 0) {
63
+ throw new BdxError(
64
+ `Received BlockEof with ${this.bytesLeft}bytes left, but no more data available`,
65
+ this.bytesLeft > 0 ? BdxStatusCode.LengthTooShort : BdxStatusCode.LengthTooLarge
66
+ );
67
+ }
68
+ done = true;
69
+ writeController.close();
70
+ }
71
+ return done;
72
+ }
73
+ async close(error) {
74
+ await super.close(error);
75
+ await this.#closeStreams?.(error);
76
+ }
77
+ }
78
+ export {
79
+ InboundFlow
80
+ };
81
+ //# sourceMappingURL=InboundFlow.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bdx/flow/InboundFlow.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,qBAAmC;AACnD,SAAS,gBAAgB,qBAAqB;AAC9C,SAAS,gBAAgB;AACzB,SAAS,YAAY;AAKd,MAAe,oBAAoB,KAAK;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,eAAe;AAE3B,QAAI;AACJ,UAAM,SAAS,IAAI,eAAsB;AAAA,MACrC,OAAO,gBAAc;AACjB,0BAAkB;AAAA,MACtB;AAAA,IACJ,CAAC;AACD,UAAM,EAAE,eAAe,IAAI,KAAK;AAChC,UAAM,eAAe,eAAe,gBAAgB,MAAM;AAG1D,SAAK,gBAAgB,OAAO,UAAoB;AAC5C,UAAI,oBAAoB,QAAW;AAC/B,YAAI,SAAS,QAAW;AAEpB,0BAAgB,MAAM,KAAK;AAC3B,cAAI;AACA,kBAAM;AAAA,UACV,QAAQ;AAAA,UAER;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,CAAC,OAAO,QAAQ;AAChB,cAAM,OAAO,OAAO;AAAA,MACxB;AAAA,IACJ;AAEA,SAAK,mBAAmB;AACxB,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEA,IAAc,SAAS;AACnB,QAAI,CAAC,KAAK,oBAAoB,CAAC,KAAK,eAAe;AAC/C,YAAM,IAAI,cAAc,6EAA6E;AAAA,IACzG;AACA,WAAO,EAAE,iBAAiB,KAAK,kBAAkB,cAAc,KAAK,cAAc;AAAA,EACtF;AAAA,EAEA,MAAgB,mBAAmB;AAC/B,UAAM,EAAE,aAAa,IAAI,KAAK;AAC9B,UAAM,eAAe,KAAK;AAC1B,UAAM;AACN,UAAM,KAAK,UAAU,gBAAgB,EAAE,aAAa,CAAC;AAAA,EACzD;AAAA,EAEU,eACN,iBACA,MACA,aACF;AAEE,oBAAgB,QAAQ,IAAI;AAC5B,QAAI,KAAK,cAAc,QAAW;AAC9B,WAAK,aAAa,KAAK;AAAA,IAC3B;AAEA,QAAI,OAAO;AAGX,QAAI,gBAAgB,eAAe,UAAU;AACzC,UAAI,KAAK,cAAc,UAAa,KAAK,cAAc,GAAG;AACtD,cAAM,IAAI;AAAA,UACN,0BAA0B,KAAK,SAAS;AAAA,UACxC,KAAK,YAAY,IAAI,cAAc,iBAAiB,cAAc;AAAA,QACtE;AAAA,MACJ;AAEA,aAAO;AACP,sBAAgB,MAAM;AAAA,IAC1B;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAe,MAAM,OAAiB;AAClC,UAAM,MAAM,MAAM,KAAK;AACvB,UAAM,KAAK,gBAAgB,KAAK;AAAA,EACpC;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BytesStreamReader } from "#general";
7
+ import { Flow } from "./Flow.js";
8
+ /**
9
+ * Base class for outbound BDX transfer flows where data is read from our node and sent to the peer.
10
+ */
11
+ export declare abstract class OutboundFlow extends Flow {
12
+ #private;
13
+ protected get stream(): {
14
+ iterator: AsyncGenerator<Uint8Array<ArrayBufferLike>, void, unknown>;
15
+ streamReader: BytesStreamReader;
16
+ };
17
+ /**
18
+ * Returns initialized streams for the transfer and initializes the #closeStream class function
19
+ */
20
+ protected initTransfer(): Promise<void>;
21
+ /**
22
+ * Reads one data chunk from the reader and does some basic checks.
23
+ */
24
+ protected readDataChunk(reader: AsyncGenerator<Uint8Array<ArrayBufferLike>, void, unknown>): Promise<{
25
+ data: Uint8Array<ArrayBufferLike>;
26
+ done: boolean;
27
+ }>;
28
+ protected finalizeTransfer(): Promise<void>;
29
+ close(error?: unknown): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=OutboundFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutboundFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/OutboundFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,UAAU,CAAC;AAG5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,8BAAsB,YAAa,SAAQ,IAAI;;IAK3C,SAAS,KAAK,MAAM;;;MAKnB;IAED;;OAEG;cACa,YAAY;IAoC5B;;OAEG;cACa,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;;;;cA6ChF,gBAAgB;IAMjB,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;CAIvC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BytesStreamReader, InternalError } from "#general";
7
+ import { BdxStatusCode } from "#types";
8
+ import { BdxError } from "../BdxError.js";
9
+ import { Flow } from "./Flow.js";
10
+ class OutboundFlow extends Flow {
11
+ #closeStreams;
12
+ #iterator;
13
+ #streamReader;
14
+ get stream() {
15
+ if (this.#iterator === void 0 || this.#streamReader === void 0) {
16
+ throw new InternalError("Read stream not initialized");
17
+ }
18
+ return { iterator: this.#iterator, streamReader: this.#streamReader };
19
+ }
20
+ /**
21
+ * Returns initialized streams for the transfer and initializes the #closeStream class function
22
+ */
23
+ async initTransfer() {
24
+ const { blockSize } = this.transferParameters;
25
+ const blob = await this.transferParameters.fileDesignator.openBlob();
26
+ const blobSize = blob.size;
27
+ const { startOffset = 0, dataLength = blobSize } = this.transferParameters;
28
+ const dataBlob = startOffset > 0 || dataLength !== blobSize ? blob.slice(startOffset, startOffset + dataLength) : blob;
29
+ const stream = dataBlob.stream();
30
+ const reader = stream.getReader();
31
+ this.#closeStreams = async (_error) => {
32
+ if (stream.locked) {
33
+ reader?.releaseLock();
34
+ try {
35
+ await reader?.cancel();
36
+ } catch (error) {
37
+ if (!(error instanceof TypeError)) {
38
+ throw error;
39
+ }
40
+ }
41
+ }
42
+ await stream.cancel();
43
+ };
44
+ const streamReader = new BytesStreamReader(reader);
45
+ this.#iterator = streamReader.read(blockSize);
46
+ this.#streamReader = streamReader;
47
+ }
48
+ /**
49
+ * Reads one data chunk from the reader and does some basic checks.
50
+ */
51
+ async readDataChunk(reader) {
52
+ const { blockSize, dataLength } = this.transferParameters;
53
+ let { value, done = false } = await reader.next();
54
+ if (value === void 0) {
55
+ if (!done) {
56
+ throw new BdxError(
57
+ `Data length too short, expected ${blockSize}bytes, but got less`,
58
+ BdxStatusCode.LengthTooShort
59
+ );
60
+ }
61
+ value = new Uint8Array();
62
+ } else if (value.byteLength < blockSize) {
63
+ ({ done = false } = await reader.next());
64
+ if (!done) {
65
+ throw new BdxError(
66
+ `Data length too short, expected ${blockSize}bytes, but got less`,
67
+ BdxStatusCode.LengthTooShort
68
+ );
69
+ }
70
+ }
71
+ if (this.bytesLeft !== void 0 && dataLength !== void 0) {
72
+ this.bytesLeft -= value.byteLength;
73
+ if (this.bytesLeft < 0) {
74
+ throw new BdxError(
75
+ `Data length exceeded, expected ${dataLength}bytes, but got ${-this.bytesLeft}bytes more`,
76
+ BdxStatusCode.LengthTooLarge
77
+ );
78
+ }
79
+ if (done && this.bytesLeft > 0) {
80
+ throw new BdxError(
81
+ `Data length too short, expected ${dataLength}bytes, but got ${this.bytesLeft}bytes less`,
82
+ BdxStatusCode.LengthTooShort
83
+ );
84
+ }
85
+ if (this.bytesLeft === 0) {
86
+ done = true;
87
+ }
88
+ }
89
+ return { data: value, done };
90
+ }
91
+ async finalizeTransfer() {
92
+ const blockCounter = this.finalBlockCounter;
93
+ const { blockCounter: ackedBlockCounter } = await this.messenger.readBlockAckEof();
94
+ this.validateCounter(ackedBlockCounter, blockCounter);
95
+ }
96
+ async close(error) {
97
+ await super.close(error);
98
+ await this.#closeStreams?.(error);
99
+ }
100
+ }
101
+ export {
102
+ OutboundFlow
103
+ };
104
+ //# sourceMappingURL=OutboundFlow.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bdx/flow/OutboundFlow.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB,qBAAqB;AACjD,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AACzB,SAAS,YAAY;AAKd,MAAe,qBAAqB,KAAK;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EAEA,IAAc,SAAS;AACnB,QAAI,KAAK,cAAc,UAAa,KAAK,kBAAkB,QAAW;AAClE,YAAM,IAAI,cAAc,6BAA6B;AAAA,IACzD;AACA,WAAO,EAAE,UAAU,KAAK,WAAW,cAAc,KAAK,cAAc;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,eAAe;AAC3B,UAAM,EAAE,UAAU,IAAI,KAAK;AAE3B,UAAM,OAAO,MAAM,KAAK,mBAAmB,eAAe,SAAS;AACnE,UAAM,WAAW,KAAK;AAGtB,UAAM,EAAE,cAAc,GAAG,aAAa,SAAS,IAAI,KAAK;AAExD,UAAM,WACF,cAAc,KAAK,eAAe,WAAW,KAAK,MAAM,aAAa,cAAc,UAAU,IAAI;AAErG,UAAM,SAAS,SAAS,OAAO;AAE/B,UAAM,SAAS,OAAO,UAAU;AAEhC,SAAK,gBAAgB,OAAO,WAAqB;AAC7C,UAAI,OAAO,QAAQ;AACf,gBAAQ,YAAY;AACpB,YAAI;AACA,gBAAM,QAAQ,OAAO;AAAA,QACzB,SAAS,OAAO;AAEZ,cAAI,EAAE,iBAAiB,YAAY;AAC/B,kBAAM;AAAA,UACV;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,OAAO,OAAO;AAAA,IACxB;AAEA,UAAM,eAAe,IAAI,kBAAkB,MAAM;AACjD,SAAK,YAAY,aAAa,KAAK,SAAS;AAC5C,SAAK,gBAAgB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,cAAc,QAAoE;AAC9F,UAAM,EAAE,WAAW,WAAW,IAAI,KAAK;AACvC,QAAI,EAAE,OAAO,OAAO,MAAM,IAAI,MAAM,OAAO,KAAK;AAChD,QAAI,UAAU,QAAW;AAErB,UAAI,CAAC,MAAM;AACP,cAAM,IAAI;AAAA,UACN,mCAAmC,SAAS;AAAA,UAC5C,cAAc;AAAA,QAClB;AAAA,MACJ;AACA,cAAQ,IAAI,WAAW;AAAA,IAC3B,WAAW,MAAM,aAAa,WAAW;AAErC,OAAC,EAAE,OAAO,MAAM,IAAI,MAAM,OAAO,KAAK;AACtC,UAAI,CAAC,MAAM;AACP,cAAM,IAAI;AAAA,UACN,mCAAmC,SAAS;AAAA,UAC5C,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,KAAK,cAAc,UAAa,eAAe,QAAW;AAC1D,WAAK,aAAa,MAAM;AACxB,UAAI,KAAK,YAAY,GAAG;AACpB,cAAM,IAAI;AAAA,UACN,kCAAkC,UAAU,kBAAkB,CAAC,KAAK,SAAS;AAAA,UAC7E,cAAc;AAAA,QAClB;AAAA,MACJ;AACA,UAAI,QAAQ,KAAK,YAAY,GAAG;AAC5B,cAAM,IAAI;AAAA,UACN,mCAAmC,UAAU,kBAAkB,KAAK,SAAS;AAAA,UAC7E,cAAc;AAAA,QAClB;AAAA,MACJ;AACA,UAAI,KAAK,cAAc,GAAG;AACtB,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,WAAO,EAAE,MAAM,OAAO,KAAK;AAAA,EAC/B;AAAA,EAEA,MAAgB,mBAAmB;AAC/B,UAAM,eAAe,KAAK;AAC1B,UAAM,EAAE,cAAc,kBAAkB,IAAI,MAAM,KAAK,UAAU,gBAAgB;AACjF,SAAK,gBAAgB,mBAAmB,YAAY;AAAA,EACxD;AAAA,EAEA,MAAe,MAAM,OAAiB;AAClC,UAAM,MAAM,MAAM,KAAK;AACvB,UAAM,KAAK,gBAAgB,KAAK;AAAA,EACpC;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./BdxClient.js";
7
+ export * from "./BdxError.js";
8
+ export * from "./BdxMessenger.js";
9
+ export * from "./BdxProtocol.js";
10
+ export * from "./BdxSession.js";
11
+ export * from "./BdxSessionConfiguration.js";
12
+ export * from "./FileDesignator.js";
13
+ export * from "./flow/Flow.js";
14
+ export * from "./PersistedFileDesignator.js";
15
+ export * from "./schema/index.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bdx/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export * from "./BdxClient.js";
7
+ export * from "./BdxError.js";
8
+ export * from "./BdxMessenger.js";
9
+ export * from "./BdxProtocol.js";
10
+ export * from "./BdxSession.js";
11
+ export * from "./BdxSessionConfiguration.js";
12
+ export * from "./FileDesignator.js";
13
+ export * from "./flow/Flow.js";
14
+ export * from "./PersistedFileDesignator.js";
15
+ export * from "./schema/index.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/index.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes } from "#general";
7
+ import { Schema, TypeFromPartialBitSchema } from "#types";
8
+ import { BdxTransferControlBitmap } from "./BdxInitMessagesSchema.js";
9
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.5.2 */
10
+ export interface BdxSendAccept {
11
+ /**
12
+ * Transfer control details
13
+ * TC
14
+ * 1 octet
15
+ */
16
+ transferControl: TypeFromPartialBitSchema<typeof BdxTransferControlBitmap>;
17
+ /**
18
+ * Specifies the maximum data size (in bytes) of the block that the Initiator supports, exclusive of block header
19
+ * fields, such as a block counter.
20
+ * MBS, 2 octets
21
+ */
22
+ maxBlockSize: number;
23
+ /**
24
+ * Allows the Initiator to send additional application-specific information about the file to be transferred
25
+ * MD, Variable length, TLV
26
+ */
27
+ metaData?: Bytes;
28
+ }
29
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.5.3 */
30
+ export interface BdxReceiveAccept extends BdxSendAccept {
31
+ /**
32
+ * Specifies a predetermined definite length for the transfer
33
+ * DEFLEN, 4/8 octets
34
+ */
35
+ length?: number | bigint;
36
+ }
37
+ /** Schema for BDX SendAccept message */
38
+ export declare class BdxSendAcceptMessageSchema<M extends BdxSendAccept> extends Schema<M> {
39
+ encodeInternal(message: M): Uint8Array<ArrayBufferLike>;
40
+ decodeInternal(bytes: Bytes): M;
41
+ validate({ transferControl, maxBlockSize }: M): void;
42
+ }
43
+ export declare const BdxSendAcceptMessage: BdxSendAcceptMessageSchema<BdxSendAccept>;
44
+ /** Schema for Bdx ReceiveAccept message */
45
+ export declare class BdxReceiveAcceptMessageSchema extends BdxSendAcceptMessageSchema<BdxReceiveAccept> {
46
+ encodeInternal(message: BdxReceiveAccept): Uint8Array<ArrayBufferLike>;
47
+ decodeInternal(bytes: Bytes): BdxReceiveAccept;
48
+ }
49
+ export declare const BdxReceiveAcceptMessage: BdxReceiveAcceptMessageSchema;
50
+ //# sourceMappingURL=BdxAcceptMessagesSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxAcceptMessagesSchema.d.ts","sourceRoot":"","sources":["../../../../src/bdx/schema/BdxAcceptMessagesSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAkC,MAAM,UAAU,CAAC;AACjE,OAAO,EAAiB,MAAM,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAEzE,OAAO,EAGH,wBAAwB,EAE3B,MAAM,4BAA4B,CAAC;AAEpC,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,eAAe,EAAE,wBAAwB,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAE3E;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACnD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,wCAAwC;AACxC,qBAAa,0BAA0B,CAAC,CAAC,SAAS,aAAa,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;IAC9E,cAAc,CAAC,OAAO,EAAE,CAAC;IAezB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC;IAgBtB,QAAQ,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE,CAAC;CAiBzD;AACD,eAAO,MAAM,oBAAoB,2CAAmC,CAAC;AAErE,2CAA2C;AAC3C,qBAAa,6BAA8B,SAAQ,0BAA0B,CAAC,gBAAgB,CAAC;IAClF,cAAc,CAAC,OAAO,EAAE,gBAAgB;IA6BxC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB;CAyB1D;AACD,eAAO,MAAM,uBAAuB,+BAAsC,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DataReader, DataWriter, Endian } from "#general";
7
+ import { BdxStatusCode, Schema } from "#types";
8
+ import { BdxError } from "../BdxError.js";
9
+ import {
10
+ BDX_VERSION,
11
+ BdxRangeControlSchema,
12
+ BdxTransferControlSchema
13
+ } from "./BdxInitMessagesSchema.js";
14
+ class BdxSendAcceptMessageSchema extends Schema {
15
+ encodeInternal(message) {
16
+ this.validate(message);
17
+ const { transferControl, maxBlockSize, metaData } = message;
18
+ const writer = new DataWriter(Endian.Little);
19
+ writer.writeUInt8(BdxTransferControlSchema.encode(transferControl));
20
+ writer.writeUInt16(maxBlockSize);
21
+ if (metaData && metaData.byteLength > 0) {
22
+ writer.writeByteArray(metaData);
23
+ }
24
+ return writer.toByteArray();
25
+ }
26
+ decodeInternal(bytes) {
27
+ const reader = new DataReader(bytes, Endian.Little);
28
+ const transferControl = BdxTransferControlSchema.decode(reader.readUInt8());
29
+ const maxBlockSize = reader.readUInt16();
30
+ const metaData = reader.remainingBytesCount > 0 ? reader.remainingBytes : void 0;
31
+ const result = {
32
+ transferControl,
33
+ maxBlockSize,
34
+ metaData
35
+ };
36
+ this.validate(result);
37
+ return result;
38
+ }
39
+ validate({ transferControl, maxBlockSize }) {
40
+ if (transferControl.version !== BDX_VERSION) {
41
+ throw new BdxError(
42
+ `Unsupported BDX version: ${transferControl.version}`,
43
+ BdxStatusCode.VersionNotSupported
44
+ );
45
+ }
46
+ if (!transferControl.senderDrive && !transferControl.receiverDrive && !transferControl.asynchronousTransfer) {
47
+ throw new BdxError(
48
+ "BDX transfer control need to specify at least one of sender drive, receiver drive or asynchronousTransfer",
49
+ BdxStatusCode.BadMessageContent
50
+ );
51
+ }
52
+ if (maxBlockSize < 1 || maxBlockSize > 65535) {
53
+ throw new BdxError("Max Block Size must be between 1 and 65535bytes", BdxStatusCode.BadMessageContent);
54
+ }
55
+ }
56
+ }
57
+ const BdxSendAcceptMessage = new BdxSendAcceptMessageSchema();
58
+ class BdxReceiveAcceptMessageSchema extends BdxSendAcceptMessageSchema {
59
+ encodeInternal(message) {
60
+ this.validate(message);
61
+ const { transferControl, maxBlockSize, metaData, length } = message;
62
+ const rangeControl = {
63
+ definiteLength: length !== void 0 && length !== 0,
64
+ wideRange: typeof length === "bigint"
65
+ };
66
+ const writer = new DataWriter(Endian.Little);
67
+ writer.writeUInt8(BdxTransferControlSchema.encode(transferControl));
68
+ writer.writeUInt8(BdxRangeControlSchema.encode(rangeControl));
69
+ writer.writeUInt16(maxBlockSize);
70
+ if (length !== void 0 && length !== 0) {
71
+ if (rangeControl.wideRange) {
72
+ writer.writeUInt64(length);
73
+ } else {
74
+ writer.writeUInt32(length);
75
+ }
76
+ }
77
+ if (metaData && metaData.byteLength > 0) {
78
+ writer.writeByteArray(metaData);
79
+ }
80
+ return writer.toByteArray();
81
+ }
82
+ decodeInternal(bytes) {
83
+ const reader = new DataReader(bytes, Endian.Little);
84
+ const transferControl = BdxTransferControlSchema.decode(reader.readUInt8());
85
+ const rangeControl = BdxRangeControlSchema.decode(reader.readUInt8());
86
+ const maxBlockSize = reader.readUInt16();
87
+ let length = rangeControl.definiteLength ? rangeControl.wideRange ? reader.readUInt64() : reader.readUInt32() : void 0;
88
+ if (length === 0) {
89
+ length = void 0;
90
+ }
91
+ const metaData = reader.remainingBytesCount > 0 ? reader.remainingBytes : void 0;
92
+ const result = {
93
+ transferControl,
94
+ maxBlockSize,
95
+ metaData,
96
+ length
97
+ };
98
+ this.validate(result);
99
+ return result;
100
+ }
101
+ }
102
+ const BdxReceiveAcceptMessage = new BdxReceiveAcceptMessageSchema();
103
+ export {
104
+ BdxReceiveAcceptMessage,
105
+ BdxReceiveAcceptMessageSchema,
106
+ BdxSendAcceptMessage,
107
+ BdxSendAcceptMessageSchema
108
+ };
109
+ //# sourceMappingURL=BdxAcceptMessagesSchema.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bdx/schema/BdxAcceptMessagesSchema.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes } from "#general";
7
+ import { Schema } from "#types";
8
+ interface BdxCounterOnly {
9
+ blockCounter: number;
10
+ }
11
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.6.2 */
12
+ export interface BdxBlockQuery extends BdxCounterOnly {
13
+ }
14
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.6.6 */
15
+ export interface BdxBlockAck extends BdxCounterOnly {
16
+ }
17
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.6.7 */
18
+ export interface BdxBlockAckEof extends BdxCounterOnly {
19
+ }
20
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.6.3 */
21
+ export interface BdxBlockQueryWithSkip extends BdxCounterOnly {
22
+ bytesToSkip: number | bigint;
23
+ }
24
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.6.4 */
25
+ export interface BdxBlock extends BdxCounterOnly {
26
+ data: Bytes;
27
+ }
28
+ /** @see {@link MatterSpecification.v141.Core}, section 11.22.6.5 */
29
+ export interface BdxBlockEof extends BdxBlock {
30
+ }
31
+ /** Schema for BDX messages that only contain a block counter: BlockQuery, BlockAck, BlockAckEof. */
32
+ export declare class BdxCounterOnlyMessageSchema extends Schema<BdxCounterOnly> {
33
+ encodeInternal(message: BdxCounterOnly): Uint8Array<ArrayBufferLike>;
34
+ decodeInternal(bytes: Bytes): BdxCounterOnly;
35
+ }
36
+ export declare const BdxBlockQueryMessage: BdxCounterOnlyMessageSchema;
37
+ export declare const BdxBlockAckMessage: BdxCounterOnlyMessageSchema;
38
+ export declare const BdxBlockAckEofMessage: BdxCounterOnlyMessageSchema;
39
+ /** Schema for BDX BlockQueryWithSkip message. */
40
+ export declare class BdxBlockQueryWithSkipMessageSchema extends Schema<BdxBlockQueryWithSkip> {
41
+ encodeInternal(message: BdxBlockQueryWithSkip): Uint8Array<ArrayBufferLike>;
42
+ decodeInternal(bytes: Bytes): BdxBlockQueryWithSkip;
43
+ }
44
+ export declare const BdxBlockQueryWithSkipMessage: BdxBlockQueryWithSkipMessageSchema;
45
+ /** Schema for BDX Block and BlockEof message that contain Block data. */
46
+ export declare class BdxBlockMessageSchema extends Schema<BdxBlock> {
47
+ encodeInternal(message: BdxBlock): Uint8Array<ArrayBufferLike>;
48
+ decodeInternal(bytes: Bytes): BdxBlock;
49
+ }
50
+ export declare const BdxBlockMessage: BdxBlockMessageSchema;
51
+ export declare const BdxBlockEofMessage: BdxBlockMessageSchema;
52
+ export {};
53
+ //# sourceMappingURL=BdxBlockMessagesSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxBlockMessagesSchema.d.ts","sourceRoot":"","sources":["../../../../src/bdx/schema/BdxBlockMessagesSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAkC,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,UAAU,cAAc;IACpB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAc,SAAQ,cAAc;CAAG;AAExD,oEAAoE;AACpE,MAAM,WAAW,WAAY,SAAQ,cAAc;CAAG;AAEtD,oEAAoE;AACpE,MAAM,WAAW,cAAe,SAAQ,cAAc;CAAG;AAEzD,oEAAoE;AACpE,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IACzD,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,oEAAoE;AACpE,MAAM,WAAW,QAAS,SAAQ,cAAc;IAC5C,IAAI,EAAE,KAAK,CAAC;CACf;AAED,oEAAoE;AACpE,MAAM,WAAW,WAAY,SAAQ,QAAQ;CAAG;AAEhD,oGAAoG;AACpG,qBAAa,2BAA4B,SAAQ,MAAM,CAAC,cAAc,CAAC;IACnE,cAAc,CAAC,OAAO,EAAE,cAAc;IAQtC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc;CAM/C;AAED,eAAO,MAAM,oBAAoB,6BAAwB,CAAC;AAC1D,eAAO,MAAM,kBAAkB,6BAAwB,CAAC;AACxD,eAAO,MAAM,qBAAqB,6BAAwB,CAAC;AAE3D,iDAAiD;AACjD,qBAAa,kCAAmC,SAAQ,MAAM,CAAC,qBAAqB,CAAC;IACjF,cAAc,CAAC,OAAO,EAAE,qBAAqB;IAS7C,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,qBAAqB;CAOtD;AACD,eAAO,MAAM,4BAA4B,oCAA2C,CAAC;AAErF,yEAAyE;AACzE,qBAAa,qBAAsB,SAAQ,MAAM,CAAC,QAAQ,CAAC;IACvD,cAAc,CAAC,OAAO,EAAE,QAAQ;IAShC,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ;CAOzC;AACD,eAAO,MAAM,eAAe,uBAA8B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,uBAAkB,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DataReader, DataWriter, Endian } from "#general";
7
+ import { Schema } from "#types";
8
+ class BdxCounterOnlyMessageSchema extends Schema {
9
+ encodeInternal(message) {
10
+ const { blockCounter } = message;
11
+ const writer = new DataWriter(Endian.Little);
12
+ writer.writeUInt32(blockCounter);
13
+ return writer.toByteArray();
14
+ }
15
+ decodeInternal(bytes) {
16
+ const reader = new DataReader(bytes, Endian.Little);
17
+ return {
18
+ blockCounter: reader.readUInt32()
19
+ };
20
+ }
21
+ }
22
+ const BdxCounterOnlyMessage = new BdxCounterOnlyMessageSchema();
23
+ const BdxBlockQueryMessage = BdxCounterOnlyMessage;
24
+ const BdxBlockAckMessage = BdxCounterOnlyMessage;
25
+ const BdxBlockAckEofMessage = BdxCounterOnlyMessage;
26
+ class BdxBlockQueryWithSkipMessageSchema extends Schema {
27
+ encodeInternal(message) {
28
+ const { blockCounter, bytesToSkip } = message;
29
+ const writer = new DataWriter(Endian.Little);
30
+ writer.writeUInt32(blockCounter);
31
+ writer.writeUInt64(bytesToSkip);
32
+ return writer.toByteArray();
33
+ }
34
+ decodeInternal(bytes) {
35
+ const reader = new DataReader(bytes, Endian.Little);
36
+ return {
37
+ blockCounter: reader.readUInt32(),
38
+ bytesToSkip: reader.readUInt64()
39
+ };
40
+ }
41
+ }
42
+ const BdxBlockQueryWithSkipMessage = new BdxBlockQueryWithSkipMessageSchema();
43
+ class BdxBlockMessageSchema extends Schema {
44
+ encodeInternal(message) {
45
+ const { blockCounter, data } = message;
46
+ const writer = new DataWriter(Endian.Little);
47
+ writer.writeUInt32(blockCounter);
48
+ writer.writeByteArray(data);
49
+ return writer.toByteArray();
50
+ }
51
+ decodeInternal(bytes) {
52
+ const reader = new DataReader(bytes, Endian.Little);
53
+ return {
54
+ blockCounter: reader.readUInt32(),
55
+ data: reader.remainingBytes
56
+ };
57
+ }
58
+ }
59
+ const BdxBlockMessage = new BdxBlockMessageSchema();
60
+ const BdxBlockEofMessage = BdxBlockMessage;
61
+ export {
62
+ BdxBlockAckEofMessage,
63
+ BdxBlockAckMessage,
64
+ BdxBlockEofMessage,
65
+ BdxBlockMessage,
66
+ BdxBlockMessageSchema,
67
+ BdxBlockQueryMessage,
68
+ BdxBlockQueryWithSkipMessage,
69
+ BdxBlockQueryWithSkipMessageSchema,
70
+ BdxCounterOnlyMessageSchema
71
+ };
72
+ //# sourceMappingURL=BdxBlockMessagesSchema.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bdx/schema/BdxBlockMessagesSchema.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,YAAY,YAAY,cAAc;AACtD,SAAS,cAAc;AA6BhB,MAAM,oCAAoC,OAAuB;AAAA,EACpE,eAAe,SAAyB;AACpC,UAAM,EAAE,aAAa,IAAI;AAEzB,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,YAAY,YAAY;AAC/B,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAA8B;AACzC,UAAM,SAAS,IAAI,WAAW,OAAO,OAAO,MAAM;AAClD,WAAO;AAAA,MACH,cAAc,OAAO,WAAW;AAAA,IACpC;AAAA,EACJ;AACJ;AACA,MAAM,wBAAwB,IAAI,4BAA4B;AACvD,MAAM,uBAAuB;AAC7B,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB;AAG9B,MAAM,2CAA2C,OAA8B;AAAA,EAClF,eAAe,SAAgC;AAC3C,UAAM,EAAE,cAAc,YAAY,IAAI;AAEtC,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,YAAY,YAAY;AAC/B,WAAO,YAAY,WAAW;AAC9B,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAAqC;AAChD,UAAM,SAAS,IAAI,WAAW,OAAO,OAAO,MAAM;AAClD,WAAO;AAAA,MACH,cAAc,OAAO,WAAW;AAAA,MAChC,aAAa,OAAO,WAAW;AAAA,IACnC;AAAA,EACJ;AACJ;AACO,MAAM,+BAA+B,IAAI,mCAAmC;AAG5E,MAAM,8BAA8B,OAAiB;AAAA,EACxD,eAAe,SAAmB;AAC9B,UAAM,EAAE,cAAc,KAAK,IAAI;AAE/B,UAAM,SAAS,IAAI,WAAW,OAAO,MAAM;AAC3C,WAAO,YAAY,YAAY;AAC/B,WAAO,eAAe,IAAI;AAC1B,WAAO,OAAO,YAAY;AAAA,EAC9B;AAAA,EAEA,eAAe,OAAwB;AACnC,UAAM,SAAS,IAAI,WAAW,OAAO,OAAO,MAAM;AAClD,WAAO;AAAA,MACH,cAAc,OAAO,WAAW;AAAA,MAChC,MAAM,OAAO;AAAA,IACjB;AAAA,EACJ;AACJ;AACO,MAAM,kBAAkB,IAAI,sBAAsB;AAClD,MAAM,qBAAqB;",
5
+ "names": []
6
+ }