@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,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BdxMessenger } from "./BdxMessenger.js";
7
+ import { BdxSession } from "./BdxSession.js";
8
+ import { BdxSessionConfiguration } from "./BdxSessionConfiguration.js";
9
+ /**
10
+ * BDX Client to initiate a BDX transfer.
11
+ * Unless differently configured it tries to be the Driver of the transfer.
12
+ * Asynchronous transfer is provisional, implemented in theory but disabled internally.
13
+ */
14
+ export declare class BdxClient {
15
+ #private;
16
+ /**
17
+ * Create a BDX client to initiate a BDX transfer as sender.
18
+ * A file designator needs to be provided and needs to exist in the storage context.
19
+ */
20
+ static asSender(messenger: BdxMessenger, options: BdxSessionConfiguration.SenderInitiatorOptions): BdxClient;
21
+ /**
22
+ * Create a BDX client to initiate a BDX transfer as receiver.
23
+ * A file designator needs to be provided. The content will be written to the storage context.
24
+ */
25
+ static asReceiver(messenger: BdxMessenger, options: BdxSessionConfiguration.InitiatorOptions): BdxClient;
26
+ constructor(bdxSession: BdxSession);
27
+ /** This is the main entry point to initiate and process the BDX transfer. */
28
+ processTransfer(): Promise<void>;
29
+ close(): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=BdxClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxClient.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxClient.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;GAIG;AACH,qBAAa,SAAS;;IAGlB;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,uBAAuB,CAAC,sBAAsB;IAIhG;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,uBAAuB,CAAC,gBAAgB;gBAIhF,UAAU,EAAE,UAAU;IAIlC,6EAA6E;IAC7E,eAAe;IAIf,KAAK;CAGR"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var BdxClient_exports = {};
20
+ __export(BdxClient_exports, {
21
+ BdxClient: () => BdxClient
22
+ });
23
+ module.exports = __toCommonJS(BdxClient_exports);
24
+ var import_BdxSession = require("./BdxSession.js");
25
+ /**
26
+ * @license
27
+ * Copyright 2022-2025 Matter.js Authors
28
+ * SPDX-License-Identifier: Apache-2.0
29
+ */
30
+ class BdxClient {
31
+ #session;
32
+ /**
33
+ * Create a BDX client to initiate a BDX transfer as sender.
34
+ * A file designator needs to be provided and needs to exist in the storage context.
35
+ */
36
+ static asSender(messenger, options) {
37
+ return new BdxClient(import_BdxSession.BdxSession.asSender(messenger, options));
38
+ }
39
+ /**
40
+ * Create a BDX client to initiate a BDX transfer as receiver.
41
+ * A file designator needs to be provided. The content will be written to the storage context.
42
+ */
43
+ static asReceiver(messenger, options) {
44
+ return new BdxClient(import_BdxSession.BdxSession.asReceiver(messenger, options));
45
+ }
46
+ constructor(bdxSession) {
47
+ this.#session = bdxSession;
48
+ }
49
+ /** This is the main entry point to initiate and process the BDX transfer. */
50
+ processTransfer() {
51
+ return this.#session.processTransfer();
52
+ }
53
+ close() {
54
+ return this.#session.close();
55
+ }
56
+ }
57
+ //# sourceMappingURL=BdxClient.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/BdxClient.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,wBAA2B;AAP3B;AAAA;AAAA;AAAA;AAAA;AAeO,MAAM,UAAU;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,SAAS,WAAyB,SAAyD;AAC9F,WAAO,IAAI,UAAU,6BAAW,SAAS,WAAW,OAAO,CAAC;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,WAAW,WAAyB,SAAmD;AAC1F,WAAO,IAAI,UAAU,6BAAW,WAAW,WAAW,OAAO,CAAC;AAAA,EAClE;AAAA,EAEA,YAAY,YAAwB;AAChC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA,EAGA,kBAAkB;AACd,WAAO,KAAK,SAAS,gBAAgB;AAAA,EACzC;AAAA,EAEA,QAAQ;AACJ,WAAO,KAAK,SAAS,MAAM;AAAA,EAC/B;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MatterError } from "#general";
7
+ import { BdxStatusCode, GeneralStatusCode } from "#types";
8
+ /** Error class used by the BDX protocol. */
9
+ export declare class BdxError extends MatterError {
10
+ #private;
11
+ constructor(message: string, code?: BdxStatusCode);
12
+ get code(): BdxStatusCode;
13
+ static is(error: unknown): error is BdxError;
14
+ }
15
+ /** Error base Class for all errors related to the BDX status response messages. */
16
+ export declare class BdxStatusResponseError extends MatterError {
17
+ readonly generalStatusCode: GeneralStatusCode;
18
+ readonly protocolStatusCode: BdxStatusCode;
19
+ constructor(message: string, generalStatusCode: GeneralStatusCode, protocolStatusCode: BdxStatusCode);
20
+ }
21
+ //# sourceMappingURL=BdxError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxError.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAE1D,4CAA4C;AAC5C,qBAAa,QAAS,SAAQ,WAAW;;gBAGzB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,aAAqC;IAKxE,IAAI,IAAI,IAAI,aAAa,CAExB;IAED,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO;CAG3B;AAED,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,WAAW;aAG/B,iBAAiB,EAAE,iBAAiB;aACpC,kBAAkB,EAAE,aAAa;gBAFjD,OAAO,EAAE,MAAM,EACC,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,aAAa;CAMxD"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var BdxError_exports = {};
20
+ __export(BdxError_exports, {
21
+ BdxError: () => BdxError,
22
+ BdxStatusResponseError: () => BdxStatusResponseError
23
+ });
24
+ module.exports = __toCommonJS(BdxError_exports);
25
+ var import_general = require("#general");
26
+ var import_types = require("#types");
27
+ /**
28
+ * @license
29
+ * Copyright 2022-2025 Matter.js Authors
30
+ * SPDX-License-Identifier: Apache-2.0
31
+ */
32
+ class BdxError extends import_general.MatterError {
33
+ #code;
34
+ constructor(message, code = import_types.BdxStatusCode.Unknown) {
35
+ super(`BDX error ${import_types.BdxStatusCode[code]}(${code}): ${message}`);
36
+ this.#code = code;
37
+ }
38
+ get code() {
39
+ return this.#code;
40
+ }
41
+ static is(error) {
42
+ return error instanceof BdxError;
43
+ }
44
+ }
45
+ class BdxStatusResponseError extends import_general.MatterError {
46
+ constructor(message, generalStatusCode, protocolStatusCode) {
47
+ super(
48
+ `(${import_types.GeneralStatusCode[generalStatusCode]} (${generalStatusCode}) / ${import_types.BdxStatusCode[protocolStatusCode]} (${protocolStatusCode})) ${message}`
49
+ );
50
+ this.generalStatusCode = generalStatusCode;
51
+ this.protocolStatusCode = protocolStatusCode;
52
+ }
53
+ }
54
+ //# sourceMappingURL=BdxError.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/BdxError.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4B;AAC5B,mBAAiD;AAPjD;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,iBAAiB,2BAAY;AAAA,EACtC;AAAA,EAEA,YAAY,SAAiB,OAAsB,2BAAc,SAAS;AACtE,UAAM,aAAa,2BAAc,IAAI,CAAC,IAAI,IAAI,MAAM,OAAO,EAAE;AAC7D,SAAK,QAAQ;AAAA,EACjB;AAAA,EAEA,IAAI,OAAsB;AACtB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,OAAO,GAAG,OAAgB;AACtB,WAAO,iBAAiB;AAAA,EAC5B;AACJ;AAGO,MAAM,+BAA+B,2BAAY;AAAA,EAC7C,YACH,SACgB,mBACA,oBAClB;AACE;AAAA,MACI,IAAI,+BAAkB,iBAAiB,CAAC,KAAK,iBAAiB,OAAO,2BAAc,kBAAkB,CAAC,KAAK,kBAAkB,MAAM,OAAO;AAAA,IAC9I;AALgB;AACA;AAAA,EAKpB;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Message } from "#codec/MessageCodec.js";
7
+ import { Duration } from "#general";
8
+ import { MessageExchange } from "#protocol/MessageExchange.js";
9
+ import { BdxMessageType, BdxStatusCode } from "#types";
10
+ import { BdxReceiveAccept, BdxSendAccept } from "./schema/BdxAcceptMessagesSchema.js";
11
+ import { BdxBlock, BdxBlockAck, BdxBlockAckEof, BdxBlockEof, BdxBlockQuery, BdxBlockQueryWithSkip } from "./schema/BdxBlockMessagesSchema.js";
12
+ import { BdxInit } from "./schema/BdxInitMessagesSchema.js";
13
+ import { BdxMessage } from "./schema/BdxMessage.js";
14
+ export declare const BDX_TRANSFER_IDLE_TIMEOUT: Duration;
15
+ /** Messenger class that contains all Bdx Messages */
16
+ export declare class BdxMessenger {
17
+ #private;
18
+ /**
19
+ * Creates a new BdxMessenger instance.
20
+ * @param exchange Exchange to use for the messaging
21
+ * @param messageTimeout Communication Timeout for the Bdx Messages, defaults to 5 minutes as defined for Matter OTA transfers
22
+ */
23
+ constructor(exchange: MessageExchange, messageTimeout?: Duration);
24
+ get channel(): import("../index.js").MessageChannel;
25
+ get exchange(): MessageExchange;
26
+ get maxPayloadSize(): number;
27
+ /**
28
+ * Waits for the next message and returns it.
29
+ * A List of allowed expected message types can be provided.
30
+ * If the message type is not in the list, an error will be thrown.
31
+ */
32
+ nextMessage(expectedMessageTypes: BdxMessageType[], timeout?: Duration, expectedMessageInfo?: string): Promise<BdxMessage<any>>;
33
+ send(bdxMessage: BdxMessage<any>): Promise<void>;
34
+ /** Sends a Bdx SendInit message and waits for the SendAccept message as a response and returns it decoded. */
35
+ sendSendInit(message: BdxInit): Promise<BdxSendAccept>;
36
+ /** Sends a ReceiveInit message and waits for the ReceiveAccept message as a response and returns it decoded. */
37
+ sendReceiveInit(message: BdxInit): Promise<BdxReceiveAccept>;
38
+ /** Encodes and sends a Bdx SendAccept message. */
39
+ sendSendAccept(message: BdxSendAccept): Promise<void>;
40
+ /** Encodes and sends a Bdx ReceiveAccept message. */
41
+ sendReceiveAccept(message: BdxReceiveAccept): Promise<void>;
42
+ /** Encodes and sends a Bdx Block message. */
43
+ sendBlock(message: BdxBlock): Promise<void>;
44
+ /** Encodes and sends a Bdx BlockQuery message. */
45
+ sendBlockQuery(message: BdxBlockQuery): Promise<void>;
46
+ /** Encodes and sends a Bdx BlockQueryWithSkip message. */
47
+ sendBlockQueryWithSkip(message: BdxBlockQueryWithSkip): Promise<void>;
48
+ /** Encodes and sends a Bdx BlockEof message. */
49
+ sendBlockEof(message: BdxBlockEof): Promise<void>;
50
+ /** Encodes and sends a Bdx BlockAck message. */
51
+ sendBlockAck(message: BdxBlockAck): Promise<void>;
52
+ /** Encodes and sends a Bdx BlockAckEof message */
53
+ sendBlockAckEof(message: BdxBlockAckEof): Promise<void>;
54
+ /** Read the next Block message, accepts Block and BlockEof messages. Returns the decoded message and it's type. */
55
+ readBlock(): Promise<BdxMessage<BdxMessageType.Block | BdxMessageType.BlockEof>>;
56
+ /**
57
+ * Read the next BlockQuery message, accepts BlockQuery and BlockQueryWithSkip and BlockAck messages.
58
+ * When a BlockAck is received, it will be validated and the next BlockQuery message will be read.
59
+ * Returns the decoded message and it's type.
60
+ */
61
+ readBlockQuery(): Promise<BdxMessage<BdxMessageType.BlockQuery | BdxMessageType.BlockQueryWithSkip>>;
62
+ /** Reads the next BlockAckEof message and returns the decoded message. */
63
+ readBlockAckEof(): Promise<BdxBlockAckEof>;
64
+ /** Reads the next BlockAck message and returns the decoded message. */
65
+ readBlockAck(): Promise<BdxBlockAck>;
66
+ /** Sends a Bdx Error StatusReport message with the given protocol status. */
67
+ sendError(code: BdxStatusCode): Promise<void>;
68
+ protected throwIfErrorStatusReport(message: Message, logHint?: string): void;
69
+ close(): Promise<void>;
70
+ /**
71
+ * Ensure that the value is a safe JavaScript "number" type and that it is not too large. Matter spec allows also
72
+ * 64bit values, but they make little sense for now, so make sure we handle them as too large. MAX_SAFE_INTEGER is
73
+ * 2^53-1 and is enough for now.
74
+ */
75
+ static asSafeNumber(value: number | bigint | undefined, context?: string, bdxErrorCode?: BdxStatusCode): number;
76
+ }
77
+ //# sourceMappingURL=BdxMessenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxMessenger.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxMessenger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAGH,QAAQ,EAMX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAwC,MAAM,QAAQ,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EACH,QAAQ,EACR,WAAW,EACX,cAAc,EACd,WAAW,EACX,aAAa,EACb,qBAAqB,EACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKpD,eAAO,MAAM,yBAAyB,UAAa,CAAC;AAEpD,qDAAqD;AACrD,qBAAa,YAAY;;IAIrB;;;;OAIG;gBACS,QAAQ,EAAE,eAAe,EAAE,cAAc,WAA4B;IAQjF,IAAI,OAAO,yCAEV;IAED,IAAI,QAAQ,oBAEX;IAED,IAAI,cAAc,WAEjB;IAED;;;;OAIG;IACG,WAAW,CACb,oBAAoB,EAAE,cAAc,EAAE,EACtC,OAAO,WAAuB,EAC9B,mBAAmB,CAAC,EAAE,MAAM,GAC7B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAuBrB,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;IAStC,8GAA8G;IACxG,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ5D,gHAAgH;IAC1G,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQlE,kDAAkD;IAC5C,cAAc,CAAC,OAAO,EAAE,aAAa;IAI3C,qDAAqD;IAC/C,iBAAiB,CAAC,OAAO,EAAE,gBAAgB;IAIjD,6CAA6C;IACvC,SAAS,CAAC,OAAO,EAAE,QAAQ;IAIjC,kDAAkD;IAC5C,cAAc,CAAC,OAAO,EAAE,aAAa;IAI3C,0DAA0D;IACpD,sBAAsB,CAAC,OAAO,EAAE,qBAAqB;IAI3D,gDAAgD;IAC1C,YAAY,CAAC,OAAO,EAAE,WAAW;IAIvC,gDAAgD;IAC1C,YAAY,CAAC,OAAO,EAAE,WAAW;IAIvC,kDAAkD;IAC5C,eAAe,CAAC,OAAO,EAAE,cAAc;IAI7C,mHAAmH;IAC7G,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAStF;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;IA0B1G,0EAA0E;IACpE,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;IAMhD,uEAAuE;IACjE,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IAM1C,6EAA6E;IAC7E,SAAS,CAAC,IAAI,EAAE,aAAa;IAsB7B,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM;IAwBrE,KAAK;IAIL;;;;OAIG;IACH,MAAM,CAAC,YAAY,CACf,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAClC,OAAO,SAAK,EACZ,YAAY,gBAAwB,GACrC,MAAM;CASZ"}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var BdxMessenger_exports = {};
20
+ __export(BdxMessenger_exports, {
21
+ BDX_TRANSFER_IDLE_TIMEOUT: () => BDX_TRANSFER_IDLE_TIMEOUT,
22
+ BdxMessenger: () => BdxMessenger
23
+ });
24
+ module.exports = __toCommonJS(BdxMessenger_exports);
25
+ var import_general = require("#general");
26
+ var import_types = require("#types");
27
+ var import_BdxError = require("./BdxError.js");
28
+ var import_BdxMessage = require("./schema/BdxMessage.js");
29
+ var import_BdxStatusMessageSchema = require("./schema/BdxStatusMessageSchema.js");
30
+ /**
31
+ * @license
32
+ * Copyright 2022-2025 Matter.js Authors
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
35
+ const logger = import_general.Logger.get("BdxMessenger");
36
+ const BDX_TRANSFER_IDLE_TIMEOUT = (0, import_general.Minutes)(5);
37
+ class BdxMessenger {
38
+ #exchange;
39
+ #messageTimeout;
40
+ /**
41
+ * Creates a new BdxMessenger instance.
42
+ * @param exchange Exchange to use for the messaging
43
+ * @param messageTimeout Communication Timeout for the Bdx Messages, defaults to 5 minutes as defined for Matter OTA transfers
44
+ */
45
+ constructor(exchange, messageTimeout = BDX_TRANSFER_IDLE_TIMEOUT) {
46
+ if (!exchange.channel.isReliable) {
47
+ throw new import_general.ImplementationError("Bdx Protocol requires a reliable channel for message exchange");
48
+ }
49
+ this.#messageTimeout = messageTimeout;
50
+ this.#exchange = exchange;
51
+ }
52
+ get channel() {
53
+ return this.#exchange.channel;
54
+ }
55
+ get exchange() {
56
+ return this.#exchange;
57
+ }
58
+ get maxPayloadSize() {
59
+ return this.#exchange.maxPayloadSize;
60
+ }
61
+ /**
62
+ * Waits for the next message and returns it.
63
+ * A List of allowed expected message types can be provided.
64
+ * If the message type is not in the list, an error will be thrown.
65
+ */
66
+ async nextMessage(expectedMessageTypes, timeout = this.#messageTimeout, expectedMessageInfo) {
67
+ logger.debug(
68
+ `Waiting for Bdx ${expectedMessageTypes.map((t) => import_types.BdxMessageType[t]).join("/")} message with timeout ${timeout}ms`
69
+ );
70
+ const message = await this.exchange.nextMessage({ timeout });
71
+ const messageType = message.payloadHeader.messageType;
72
+ if (expectedMessageInfo === void 0) {
73
+ expectedMessageInfo = expectedMessageTypes.map((t) => `${t} (${import_types.BdxMessageType[t]})`).join(",");
74
+ }
75
+ this.throwIfErrorStatusReport(message, expectedMessageInfo);
76
+ if (!expectedMessageTypes.includes(messageType))
77
+ throw new import_general.UnexpectedDataError(
78
+ `Received unexpected message type: ${import_types.BdxMessageType[messageType] ?? "unknown"}#${messageType}, expected: ${expectedMessageInfo}`
79
+ );
80
+ logger.debug(
81
+ `Received Bdx ${import_types.BdxMessageType[messageType]}${message.payload.byteLength > 0 ? ` with ${message.payload.byteLength}bytes` : ""}`,
82
+ message
83
+ );
84
+ return import_BdxMessage.BdxMessage.decode(messageType, message.payload);
85
+ }
86
+ async send(bdxMessage) {
87
+ const { kind: messageType, message } = bdxMessage;
88
+ logger.debug(
89
+ `Sending Bdx ${import_types.BdxMessageType[messageType]}${"data" in message && import_general.Bytes.isBytes(message.data) ? ` with ${message.data.byteLength}bytes` : ""}`,
90
+ message
91
+ );
92
+ await this.exchange.send(messageType, import_BdxMessage.BdxMessage.encode(bdxMessage));
93
+ }
94
+ /** Sends a Bdx SendInit message and waits for the SendAccept message as a response and returns it decoded. */
95
+ async sendSendInit(message) {
96
+ await this.send({ kind: import_types.BdxMessageType.SendInit, message });
97
+ const response = await this.nextMessage([import_types.BdxMessageType.SendAccept]);
98
+ import_BdxMessage.BdxMessage.assert(response, import_types.BdxMessageType.SendAccept);
99
+ return response.message;
100
+ }
101
+ /** Sends a ReceiveInit message and waits for the ReceiveAccept message as a response and returns it decoded. */
102
+ async sendReceiveInit(message) {
103
+ await this.send({ kind: import_types.BdxMessageType.ReceiveInit, message });
104
+ const response = await this.nextMessage([import_types.BdxMessageType.ReceiveAccept]);
105
+ import_BdxMessage.BdxMessage.assert(response, import_types.BdxMessageType.ReceiveAccept);
106
+ return response.message;
107
+ }
108
+ /** Encodes and sends a Bdx SendAccept message. */
109
+ async sendSendAccept(message) {
110
+ await this.send({ kind: import_types.BdxMessageType.SendAccept, message });
111
+ }
112
+ /** Encodes and sends a Bdx ReceiveAccept message. */
113
+ async sendReceiveAccept(message) {
114
+ await this.send({ kind: import_types.BdxMessageType.ReceiveAccept, message });
115
+ }
116
+ /** Encodes and sends a Bdx Block message. */
117
+ async sendBlock(message) {
118
+ await this.send({ kind: import_types.BdxMessageType.Block, message });
119
+ }
120
+ /** Encodes and sends a Bdx BlockQuery message. */
121
+ async sendBlockQuery(message) {
122
+ await this.send({ kind: import_types.BdxMessageType.BlockQuery, message });
123
+ }
124
+ /** Encodes and sends a Bdx BlockQueryWithSkip message. */
125
+ async sendBlockQueryWithSkip(message) {
126
+ await this.send({ kind: import_types.BdxMessageType.BlockQueryWithSkip, message });
127
+ }
128
+ /** Encodes and sends a Bdx BlockEof message. */
129
+ async sendBlockEof(message) {
130
+ await this.send({ kind: import_types.BdxMessageType.BlockEof, message });
131
+ }
132
+ /** Encodes and sends a Bdx BlockAck message. */
133
+ async sendBlockAck(message) {
134
+ await this.send({ kind: import_types.BdxMessageType.BlockAck, message });
135
+ }
136
+ /** Encodes and sends a Bdx BlockAckEof message */
137
+ async sendBlockAckEof(message) {
138
+ await this.send({ kind: import_types.BdxMessageType.BlockAckEof, message });
139
+ }
140
+ /** Read the next Block message, accepts Block and BlockEof messages. Returns the decoded message and it's type. */
141
+ async readBlock() {
142
+ const block = await this.nextMessage([import_types.BdxMessageType.Block, import_types.BdxMessageType.BlockEof]);
143
+ if (import_BdxMessage.BdxMessage.is(block, import_types.BdxMessageType.Block) && block.message.data.byteLength === 0) {
144
+ throw new import_BdxError.BdxError("Received empty data in Block message", import_types.BdxStatusCode.BadMessageContent);
145
+ }
146
+ return block;
147
+ }
148
+ /**
149
+ * Read the next BlockQuery message, accepts BlockQuery and BlockQueryWithSkip and BlockAck messages.
150
+ * When a BlockAck is received, it will be validated and the next BlockQuery message will be read.
151
+ * Returns the decoded message and it's type.
152
+ */
153
+ async readBlockQuery() {
154
+ let response = await this.nextMessage([
155
+ import_types.BdxMessageType.BlockQuery,
156
+ import_types.BdxMessageType.BlockQueryWithSkip,
157
+ import_types.BdxMessageType.BlockAck
158
+ ]);
159
+ let expectedBlockMessageCounter = void 0;
160
+ if (import_BdxMessage.BdxMessage.is(response, import_types.BdxMessageType.BlockAck)) {
161
+ expectedBlockMessageCounter = (response.message.blockCounter + 1) % 4294967296;
162
+ response = await this.nextMessage([import_types.BdxMessageType.BlockQuery, import_types.BdxMessageType.BlockQueryWithSkip]);
163
+ }
164
+ if (expectedBlockMessageCounter !== void 0 && response.message.blockCounter !== expectedBlockMessageCounter) {
165
+ throw new import_BdxError.BdxError(
166
+ `Received BlockQuery with unexpected block counter: ${response.message.blockCounter}, expected: ${expectedBlockMessageCounter}`,
167
+ import_types.BdxStatusCode.BadBlockCounter
168
+ );
169
+ }
170
+ return response;
171
+ }
172
+ /** Reads the next BlockAckEof message and returns the decoded message. */
173
+ async readBlockAckEof() {
174
+ const response = await this.nextMessage([import_types.BdxMessageType.BlockAckEof]);
175
+ import_BdxMessage.BdxMessage.assert(response, import_types.BdxMessageType.BlockAckEof);
176
+ return response.message;
177
+ }
178
+ /** Reads the next BlockAck message and returns the decoded message. */
179
+ async readBlockAck() {
180
+ const response = await this.nextMessage([import_types.BdxMessageType.BlockAck]);
181
+ import_BdxMessage.BdxMessage.assert(response, import_types.BdxMessageType.BlockAck);
182
+ return response.message;
183
+ }
184
+ /** Sends a Bdx Error StatusReport message with the given protocol status. */
185
+ sendError(code) {
186
+ return this.#sendStatusReport(import_types.GeneralStatusCode.Failure, code);
187
+ }
188
+ /** Encodes and sends a Bdx StatusReport message with the given general and protocol status. */
189
+ async #sendStatusReport(generalStatus, protocolStatus, requiresAck) {
190
+ await this.#exchange.send(
191
+ import_types.SecureMessageType.StatusReport,
192
+ import_BdxStatusMessageSchema.BdxStatusMessage.encode({
193
+ generalStatus,
194
+ protocolStatus
195
+ }),
196
+ {
197
+ requiresAck,
198
+ logContext: {
199
+ generalStatus: import_types.GeneralStatusCode[generalStatus] ?? import_general.Diagnostic.hex(generalStatus),
200
+ protocolStatus: import_types.BdxStatusCode[protocolStatus] ?? import_general.Diagnostic.hex(protocolStatus)
201
+ }
202
+ }
203
+ );
204
+ }
205
+ throwIfErrorStatusReport(message, logHint) {
206
+ const {
207
+ payloadHeader: { messageType },
208
+ payload
209
+ } = message;
210
+ if (messageType !== import_types.SecureMessageType.StatusReport) return;
211
+ const { generalStatus, protocolId, protocolStatus } = import_BdxStatusMessageSchema.BdxStatusMessage.decode(payload);
212
+ if (generalStatus !== import_types.GeneralStatusCode.Success) {
213
+ throw new import_BdxError.BdxStatusResponseError(
214
+ `Received general error status for protocol ${protocolId}${logHint ? ` (${logHint})` : ""}`,
215
+ generalStatus,
216
+ protocolStatus
217
+ );
218
+ }
219
+ if (protocolStatus !== import_types.BdxStatusCode.Success) {
220
+ throw new import_BdxError.BdxStatusResponseError(
221
+ `Received general success status, but protocol status is not Success${logHint ? ` (${logHint})` : ""}`,
222
+ generalStatus,
223
+ protocolStatus
224
+ );
225
+ }
226
+ }
227
+ close() {
228
+ return this.#exchange.close();
229
+ }
230
+ /**
231
+ * Ensure that the value is a safe JavaScript "number" type and that it is not too large. Matter spec allows also
232
+ * 64bit values, but they make little sense for now, so make sure we handle them as too large. MAX_SAFE_INTEGER is
233
+ * 2^53-1 and is enough for now.
234
+ */
235
+ static asSafeNumber(value, context = "", bdxErrorCode = import_types.BdxStatusCode.Unknown) {
236
+ if (typeof value !== "number" && typeof value !== "bigint") {
237
+ throw new import_general.InternalError(`${context} ${value} is not a number`);
238
+ }
239
+ if (value > Number.MAX_SAFE_INTEGER) {
240
+ throw new import_BdxError.BdxError(`${context} ${value} exceeds maximum safe integer value`, bdxErrorCode);
241
+ }
242
+ return Number(value);
243
+ }
244
+ }
245
+ //# sourceMappingURL=BdxMessenger.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/BdxMessenger.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,qBASO;AAEP,mBAAoF;AACpF,sBAAiD;AAWjD,wBAA2B;AAC3B,oCAAiC;AA/BjC;AAAA;AAAA;AAAA;AAAA;AAiCA,MAAM,SAAS,sBAAO,IAAI,cAAc;AAEjC,MAAM,gCAA4B,wBAAQ,CAAC;AAG3C,MAAM,aAAa;AAAA,EACtB;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAY,UAA2B,iBAAiB,2BAA2B;AAC/E,QAAI,CAAC,SAAS,QAAQ,YAAY;AAC9B,YAAM,IAAI,mCAAoB,+DAA+D;AAAA,IACjG;AACA,SAAK,kBAAkB;AACvB,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,UAAU;AAAA,EAC1B;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK,UAAU;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YACF,sBACA,UAAU,KAAK,iBACf,qBACwB;AACxB,WAAO;AAAA,MACH,mBAAmB,qBAAqB,IAAI,OAAK,4BAAe,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,yBAAyB,OAAO;AAAA,IACjH;AAEA,UAAM,UAAU,MAAM,KAAK,SAAS,YAAY,EAAE,QAAQ,CAAC;AAC3D,UAAM,cAAc,QAAQ,cAAc;AAC1C,QAAI,wBAAwB,QAAW;AACnC,4BAAsB,qBAAqB,IAAI,OAAK,GAAG,CAAC,KAAK,4BAAe,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG;AAAA,IAC/F;AACA,SAAK,yBAAyB,SAAS,mBAAmB;AAC1D,QAAI,CAAC,qBAAqB,SAAS,WAAW;AAC1C,YAAM,IAAI;AAAA,QACN,qCAAqC,4BAAe,WAAW,KAAK,SAAS,IAAI,WAAW,eAAe,mBAAmB;AAAA,MAClI;AAEJ,WAAO;AAAA,MACH,gBAAgB,4BAAe,WAAW,CAAC,GAAG,QAAQ,QAAQ,aAAa,IAAI,SAAS,QAAQ,QAAQ,UAAU,UAAU,EAAE;AAAA,MAC9H;AAAA,IACJ;AACA,WAAO,6BAAW,OAAO,aAAa,QAAQ,OAAO;AAAA,EACzD;AAAA,EAEA,MAAM,KAAK,YAA6B;AACpC,UAAM,EAAE,MAAM,aAAa,QAAQ,IAAI;AACvC,WAAO;AAAA,MACH,eAAe,4BAAe,WAAW,CAAC,GAAG,UAAU,WAAW,qBAAM,QAAQ,QAAQ,IAAI,IAAI,SAAS,QAAQ,KAAK,UAAU,UAAU,EAAE;AAAA,MAC5I;AAAA,IACJ;AACA,UAAM,KAAK,SAAS,KAAK,aAAa,6BAAW,OAAO,UAAU,CAAC;AAAA,EACvE;AAAA;AAAA,EAGA,MAAM,aAAa,SAA0C;AACzD,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,UAAU,QAAQ,CAAC;AAE1D,UAAM,WAAW,MAAM,KAAK,YAAY,CAAC,4BAAe,UAAU,CAAC;AACnE,iCAAW,OAAO,UAAU,4BAAe,UAAU;AACrD,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA,EAGA,MAAM,gBAAgB,SAA6C;AAC/D,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,aAAa,QAAQ,CAAC;AAE7D,UAAM,WAAW,MAAM,KAAK,YAAY,CAAC,4BAAe,aAAa,CAAC;AACtE,iCAAW,OAAO,UAAU,4BAAe,aAAa;AACxD,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA,EAGA,MAAM,eAAe,SAAwB;AACzC,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,YAAY,QAAQ,CAAC;AAAA,EAChE;AAAA;AAAA,EAGA,MAAM,kBAAkB,SAA2B;AAC/C,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,eAAe,QAAQ,CAAC;AAAA,EACnE;AAAA;AAAA,EAGA,MAAM,UAAU,SAAmB;AAC/B,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,OAAO,QAAQ,CAAC;AAAA,EAC3D;AAAA;AAAA,EAGA,MAAM,eAAe,SAAwB;AACzC,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,YAAY,QAAQ,CAAC;AAAA,EAChE;AAAA;AAAA,EAGA,MAAM,uBAAuB,SAAgC;AACzD,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,oBAAoB,QAAQ,CAAC;AAAA,EACxE;AAAA;AAAA,EAGA,MAAM,aAAa,SAAsB;AACrC,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,UAAU,QAAQ,CAAC;AAAA,EAC9D;AAAA;AAAA,EAGA,MAAM,aAAa,SAAsB;AACrC,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,UAAU,QAAQ,CAAC;AAAA,EAC9D;AAAA;AAAA,EAGA,MAAM,gBAAgB,SAAyB;AAC3C,UAAM,KAAK,KAAK,EAAE,MAAM,4BAAe,aAAa,QAAQ,CAAC;AAAA,EACjE;AAAA;AAAA,EAGA,MAAM,YAAiF;AACnF,UAAM,QAAQ,MAAM,KAAK,YAAY,CAAC,4BAAe,OAAO,4BAAe,QAAQ,CAAC;AACpF,QAAI,6BAAW,GAAG,OAAO,4BAAe,KAAK,KAAK,MAAM,QAAQ,KAAK,eAAe,GAAG;AAEnF,YAAM,IAAI,yBAAS,wCAAwC,2BAAc,iBAAiB;AAAA,IAC9F;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,iBAAqG;AACvG,QAAI,WAAW,MAAM,KAAK,YAAY;AAAA,MAClC,4BAAe;AAAA,MACf,4BAAe;AAAA,MACf,4BAAe;AAAA,IACnB,CAAC;AACD,QAAI,8BAAkD;AACtD,QAAI,6BAAW,GAAG,UAAU,4BAAe,QAAQ,GAAG;AAClD,qCAA+B,SAAS,QAAQ,eAAe,KAAK;AACpE,iBAAW,MAAM,KAAK,YAAY,CAAC,4BAAe,YAAY,4BAAe,kBAAkB,CAAC;AAAA,IACpG;AAGA,QACI,gCAAgC,UAChC,SAAS,QAAQ,iBAAiB,6BACpC;AACE,YAAM,IAAI;AAAA,QACN,sDAAsD,SAAS,QAAQ,YAAY,eAAe,2BAA2B;AAAA,QAC7H,2BAAc;AAAA,MAClB;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA;AAAA,EAGA,MAAM,kBAA2C;AAC7C,UAAM,WAAW,MAAM,KAAK,YAAY,CAAC,4BAAe,WAAW,CAAC;AACpE,iCAAW,OAAO,UAAU,4BAAe,WAAW;AACtD,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA,EAGA,MAAM,eAAqC;AACvC,UAAM,WAAW,MAAM,KAAK,YAAY,CAAC,4BAAe,QAAQ,CAAC;AACjE,iCAAW,OAAO,UAAU,4BAAe,QAAQ;AACnD,WAAO,SAAS;AAAA,EACpB;AAAA;AAAA,EAGA,UAAU,MAAqB;AAC3B,WAAO,KAAK,kBAAkB,+BAAkB,SAAS,IAAI;AAAA,EACjE;AAAA;AAAA,EAGA,MAAM,kBAAkB,eAAkC,gBAA+B,aAAuB;AAC5G,UAAM,KAAK,UAAU;AAAA,MACjB,+BAAkB;AAAA,MAClB,+CAAiB,OAAO;AAAA,QACpB;AAAA,QACA;AAAA,MACJ,CAAC;AAAA,MACD;AAAA,QACI;AAAA,QACA,YAAY;AAAA,UACR,eAAe,+BAAkB,aAAa,KAAK,0BAAW,IAAI,aAAa;AAAA,UAC/E,gBAAgB,2BAAc,cAAc,KAAK,0BAAW,IAAI,cAAc;AAAA,QAClF;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEU,yBAAyB,SAAkB,SAAkB;AACnE,UAAM;AAAA,MACF,eAAe,EAAE,YAAY;AAAA,MAC7B;AAAA,IACJ,IAAI;AACJ,QAAI,gBAAgB,+BAAkB,aAAc;AAEpD,UAAM,EAAE,eAAe,YAAY,eAAe,IAAI,+CAAiB,OAAO,OAAO;AACrF,QAAI,kBAAkB,+BAAkB,SAAS;AAC7C,YAAM,IAAI;AAAA,QACN,8CAA8C,UAAU,GAAG,UAAU,KAAK,OAAO,MAAM,EAAE;AAAA,QACzF;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,mBAAmB,2BAAc,SAAS;AAC1C,YAAM,IAAI;AAAA,QACN,sEAAsE,UAAU,KAAK,OAAO,MAAM,EAAE;AAAA,QACpG;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,QAAQ;AACJ,WAAO,KAAK,UAAU,MAAM;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,aACH,OACA,UAAU,IACV,eAAe,2BAAc,SACvB;AACN,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAAU;AACxD,YAAM,IAAI,6BAAc,GAAG,OAAO,IAAI,KAAK,kBAAkB;AAAA,IACjE;AACA,QAAI,QAAQ,OAAO,kBAAkB;AACjC,YAAM,IAAI,yBAAS,GAAG,OAAO,IAAI,KAAK,uCAAuC,YAAY;AAAA,IAC7F;AACA,WAAO,OAAO,KAAK;AAAA,EACvB;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { StorageContext } from "#general";
7
+ import { MessageExchange } from "#protocol/MessageExchange.js";
8
+ import { ProtocolHandler } from "#protocol/ProtocolHandler.js";
9
+ import { Message } from "../codec/MessageCodec.js";
10
+ import { BdxSessionConfiguration } from "./BdxSessionConfiguration.js";
11
+ /** BDX protocol handler. */
12
+ export declare class BdxProtocol implements ProtocolHandler {
13
+ #private;
14
+ readonly id = 2;
15
+ readonly requiresSecureSession = true;
16
+ /**
17
+ * Create a new BDX protocol handler.
18
+ * @param storage StorageContext to read or write files from/to.
19
+ * @param options BDX options/limits to use for this session. us this to control how the transfer should behave.
20
+ */
21
+ constructor(storage: StorageContext, options?: BdxSessionConfiguration.Config);
22
+ onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
23
+ close(): Promise<void>;
24
+ }
25
+ //# sourceMappingURL=BdxProtocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxProtocol.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxProtocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAKvE,4BAA4B;AAC5B,qBAAa,WAAY,YAAW,eAAe;;IAC/C,QAAQ,CAAC,EAAE,KAAmB;IAC9B,QAAQ,CAAC,qBAAqB,QAAQ;IAKtC;;;;OAIG;gBACS,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,uBAAuB,CAAC,MAAM;IAKvE,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO;IAiDzD,KAAK;CAOd"}