@matter/protocol 0.16.0-alpha.0-20250916-d577beb1d → 0.16.0-alpha.0-20250921-b7a3dda23

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 (254) 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/interaction/InteractionClient.d.ts +4 -4
  98. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
  99. package/dist/cjs/interaction/InteractionClient.js +27 -39
  100. package/dist/cjs/interaction/InteractionClient.js.map +1 -1
  101. package/dist/cjs/mdns/MdnsClient.js +2 -2
  102. package/dist/cjs/mdns/MdnsClient.js.map +1 -1
  103. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
  104. package/dist/cjs/protocol/ExchangeManager.js +4 -2
  105. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  106. package/dist/cjs/protocol/MessageExchange.d.ts +2 -0
  107. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  108. package/dist/cjs/protocol/MessageExchange.js +14 -8
  109. package/dist/cjs/protocol/MessageExchange.js.map +2 -2
  110. package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +1 -1
  111. package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
  112. package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
  113. package/dist/esm/bdx/BdxClient.d.ts +31 -0
  114. package/dist/esm/bdx/BdxClient.d.ts.map +1 -0
  115. package/dist/esm/bdx/BdxClient.js +37 -0
  116. package/dist/esm/bdx/BdxClient.js.map +6 -0
  117. package/dist/esm/bdx/BdxError.d.ts +21 -0
  118. package/dist/esm/bdx/BdxError.d.ts.map +1 -0
  119. package/dist/esm/bdx/BdxError.js +34 -0
  120. package/dist/esm/bdx/BdxError.js.map +6 -0
  121. package/dist/esm/bdx/BdxMessenger.d.ts +77 -0
  122. package/dist/esm/bdx/BdxMessenger.d.ts.map +1 -0
  123. package/dist/esm/bdx/BdxMessenger.js +233 -0
  124. package/dist/esm/bdx/BdxMessenger.js.map +6 -0
  125. package/dist/esm/bdx/BdxProtocol.d.ts +25 -0
  126. package/dist/esm/bdx/BdxProtocol.d.ts.map +1 -0
  127. package/dist/esm/bdx/BdxProtocol.js +82 -0
  128. package/dist/esm/bdx/BdxProtocol.js.map +6 -0
  129. package/dist/esm/bdx/BdxSession.d.ts +36 -0
  130. package/dist/esm/bdx/BdxSession.d.ts.map +1 -0
  131. package/dist/esm/bdx/BdxSession.js +133 -0
  132. package/dist/esm/bdx/BdxSession.js.map +6 -0
  133. package/dist/esm/bdx/BdxSessionConfiguration.d.ts +61 -0
  134. package/dist/esm/bdx/BdxSessionConfiguration.d.ts.map +1 -0
  135. package/dist/esm/bdx/BdxSessionConfiguration.js +75 -0
  136. package/dist/esm/bdx/BdxSessionConfiguration.js.map +6 -0
  137. package/dist/esm/bdx/FileDesignator.d.ts +21 -0
  138. package/dist/esm/bdx/FileDesignator.d.ts.map +1 -0
  139. package/dist/esm/bdx/FileDesignator.js +42 -0
  140. package/dist/esm/bdx/FileDesignator.js.map +6 -0
  141. package/dist/esm/bdx/PersistedFileDesignator.d.ts +16 -0
  142. package/dist/esm/bdx/PersistedFileDesignator.d.ts.map +1 -0
  143. package/dist/esm/bdx/PersistedFileDesignator.js +37 -0
  144. package/dist/esm/bdx/PersistedFileDesignator.js.map +6 -0
  145. package/dist/esm/bdx/bdx-session-initiator.d.ts +14 -0
  146. package/dist/esm/bdx/bdx-session-initiator.d.ts.map +1 -0
  147. package/dist/esm/bdx/bdx-session-initiator.js +198 -0
  148. package/dist/esm/bdx/bdx-session-initiator.js.map +6 -0
  149. package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts +15 -0
  150. package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
  151. package/dist/esm/bdx/flow/DrivenSendingFlow.js +29 -0
  152. package/dist/esm/bdx/flow/DrivenSendingFlow.js.map +6 -0
  153. package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
  154. package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
  155. package/dist/esm/bdx/flow/DrivingReceivingFlow.js +27 -0
  156. package/dist/esm/bdx/flow/DrivingReceivingFlow.js.map +6 -0
  157. package/dist/esm/bdx/flow/Flow.d.ts +48 -0
  158. package/dist/esm/bdx/flow/Flow.d.ts.map +1 -0
  159. package/dist/esm/bdx/flow/Flow.js +92 -0
  160. package/dist/esm/bdx/flow/Flow.js.map +6 -0
  161. package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
  162. package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
  163. package/dist/esm/bdx/flow/FollowingReceivingFlow.js +40 -0
  164. package/dist/esm/bdx/flow/FollowingReceivingFlow.js.map +6 -0
  165. package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts +15 -0
  166. package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
  167. package/dist/esm/bdx/flow/FollowingSendingFlow.js +29 -0
  168. package/dist/esm/bdx/flow/FollowingSendingFlow.js.map +6 -0
  169. package/dist/esm/bdx/flow/InboundFlow.d.ts +26 -0
  170. package/dist/esm/bdx/flow/InboundFlow.d.ts.map +1 -0
  171. package/dist/esm/bdx/flow/InboundFlow.js +81 -0
  172. package/dist/esm/bdx/flow/InboundFlow.js.map +6 -0
  173. package/dist/esm/bdx/flow/OutboundFlow.d.ts +31 -0
  174. package/dist/esm/bdx/flow/OutboundFlow.d.ts.map +1 -0
  175. package/dist/esm/bdx/flow/OutboundFlow.js +104 -0
  176. package/dist/esm/bdx/flow/OutboundFlow.js.map +6 -0
  177. package/dist/esm/bdx/index.d.ts +16 -0
  178. package/dist/esm/bdx/index.d.ts.map +1 -0
  179. package/dist/esm/bdx/index.js +16 -0
  180. package/dist/esm/bdx/index.js.map +6 -0
  181. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
  182. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
  183. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js +109 -0
  184. package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
  185. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
  186. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
  187. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js +72 -0
  188. package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
  189. package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
  190. package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
  191. package/dist/esm/bdx/schema/BdxInitMessagesSchema.js +133 -0
  192. package/dist/esm/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
  193. package/dist/esm/bdx/schema/BdxMessage.d.ts +23 -0
  194. package/dist/esm/bdx/schema/BdxMessage.d.ts.map +1 -0
  195. package/dist/esm/bdx/schema/BdxMessage.js +62 -0
  196. package/dist/esm/bdx/schema/BdxMessage.js.map +6 -0
  197. package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
  198. package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
  199. package/dist/esm/bdx/schema/BdxStatusMessageSchema.js +15 -0
  200. package/dist/esm/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
  201. package/dist/esm/bdx/schema/index.d.ts +11 -0
  202. package/dist/esm/bdx/schema/index.d.ts.map +1 -0
  203. package/dist/esm/bdx/schema/index.js +11 -0
  204. package/dist/esm/bdx/schema/index.js.map +6 -0
  205. package/dist/esm/index.d.ts +1 -0
  206. package/dist/esm/index.d.ts.map +1 -1
  207. package/dist/esm/index.js +1 -0
  208. package/dist/esm/index.js.map +1 -1
  209. package/dist/esm/interaction/InteractionClient.d.ts +4 -4
  210. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
  211. package/dist/esm/interaction/InteractionClient.js +27 -39
  212. package/dist/esm/interaction/InteractionClient.js.map +1 -1
  213. package/dist/esm/mdns/MdnsClient.js +2 -2
  214. package/dist/esm/mdns/MdnsClient.js.map +1 -1
  215. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
  216. package/dist/esm/protocol/ExchangeManager.js +4 -2
  217. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  218. package/dist/esm/protocol/MessageExchange.d.ts +2 -0
  219. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  220. package/dist/esm/protocol/MessageExchange.js +14 -8
  221. package/dist/esm/protocol/MessageExchange.js.map +2 -2
  222. package/dist/esm/protocol/ProtocolStatusMessage.d.ts +1 -1
  223. package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
  224. package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
  225. package/package.json +6 -6
  226. package/src/bdx/BdxClient.ts +47 -0
  227. package/src/bdx/BdxError.ts +39 -0
  228. package/src/bdx/BdxMessenger.ts +291 -0
  229. package/src/bdx/BdxProtocol.ts +93 -0
  230. package/src/bdx/BdxSession.ts +174 -0
  231. package/src/bdx/BdxSessionConfiguration.ts +134 -0
  232. package/src/bdx/FileDesignator.ts +49 -0
  233. package/src/bdx/PersistedFileDesignator.ts +40 -0
  234. package/src/bdx/bdx-session-initiator.ts +246 -0
  235. package/src/bdx/flow/DrivenSendingFlow.ts +40 -0
  236. package/src/bdx/flow/DrivingReceivingFlow.ts +39 -0
  237. package/src/bdx/flow/Flow.ts +124 -0
  238. package/src/bdx/flow/FollowingReceivingFlow.ts +53 -0
  239. package/src/bdx/flow/FollowingSendingFlow.ts +38 -0
  240. package/src/bdx/flow/InboundFlow.ts +104 -0
  241. package/src/bdx/flow/OutboundFlow.ts +124 -0
  242. package/src/bdx/index.ts +16 -0
  243. package/src/bdx/schema/BdxAcceptMessagesSchema.ts +159 -0
  244. package/src/bdx/schema/BdxBlockMessagesSchema.ts +99 -0
  245. package/src/bdx/schema/BdxInitMessagesSchema.ts +213 -0
  246. package/src/bdx/schema/BdxMessage.ts +70 -0
  247. package/src/bdx/schema/BdxStatusMessageSchema.ts +14 -0
  248. package/src/bdx/schema/index.ts +11 -0
  249. package/src/index.ts +1 -0
  250. package/src/interaction/InteractionClient.ts +34 -48
  251. package/src/mdns/MdnsClient.ts +2 -2
  252. package/src/protocol/ExchangeManager.ts +2 -0
  253. package/src/protocol/MessageExchange.ts +17 -6
  254. package/src/protocol/ProtocolStatusMessage.ts +1 -1
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { BdxMessageType } from "#types";
7
+ import { Flow } from "./flow/Flow.js";
8
+ import { PersistedFileDesignator } from "./PersistedFileDesignator.js";
9
+ import { BdxInit } from "./schema/BdxInitMessagesSchema.js";
10
+ export declare class BdxSessionConfiguration {
11
+ #private;
12
+ constructor(options: BdxSessionConfiguration.Options);
13
+ get isSender(): boolean;
14
+ get initMessage(): BdxInit | undefined;
15
+ get isInitiator(): boolean;
16
+ get fileDesignator(): PersistedFileDesignator;
17
+ get transferConfig(): BdxSessionConfiguration.Config;
18
+ }
19
+ export declare namespace BdxSessionConfiguration {
20
+ interface Config {
21
+ /**
22
+ * Array of preferred transfer driver modes, in order of preference. Use this to configure the proposed behavior.
23
+ * Default is [SenderDrive, ReceiverDrive]
24
+ */
25
+ preferredDriverModes?: Flow.DriverMode[];
26
+ /** Asynchronous transfer is not supported right now because provisional. */
27
+ asynchronousTransferAllowed?: false;
28
+ /** Maximum block size to use for the session. This value is ignored if the transport only supports smaller blocks. */
29
+ maxBlockSize?: number;
30
+ /** Maximum transfer size to use for the session. Defaults to 100MB */
31
+ maxTransferSize?: number;
32
+ /** The start offset of the data to send. When using this, you need to know what you are doing. */
33
+ senderStartOffset?: number;
34
+ /** The maximum length of the data to send. When using this, you need to know what you are doing. */
35
+ senderMaxLength?: number;
36
+ }
37
+ const DefaultConfig: BdxSessionConfiguration.Config;
38
+ interface InitiatorOptions extends BdxSessionConfiguration.Config {
39
+ /** FileDesignator to use for the session. The value is usually pre-determined with the peer. */
40
+ fileDesignator: PersistedFileDesignator;
41
+ }
42
+ interface SenderInitiatorOptions extends InitiatorOptions {
43
+ /** The start offset of the data to send. When using this, you need to know what you are doing. */
44
+ senderStartOffset?: number;
45
+ /** The maximum length of the data to send. When using this, you need to know what you are doing. */
46
+ senderMaxLength?: number;
47
+ }
48
+ interface ReceiverOptions extends BdxSessionConfiguration.Config {
49
+ initMessageType: BdxMessageType;
50
+ initMessage: BdxInit;
51
+ }
52
+ interface Options extends BdxSessionConfiguration.Config {
53
+ /** True if the session is initiated as a sender, false for receiver */
54
+ isSender: boolean;
55
+ /** File designator to use for the session */
56
+ fileDesignator: PersistedFileDesignator;
57
+ /** The initial message received to start the session */
58
+ initMessage?: BdxInit;
59
+ }
60
+ }
61
+ //# sourceMappingURL=BdxSessionConfiguration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BdxSessionConfiguration.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxSessionConfiguration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,qBAAa,uBAAuB;;gBAMpB,OAAO,EAAE,uBAAuB,CAAC,OAAO;IAiCpD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAErC;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,cAAc,IAAI,uBAAuB,CAE5C;IAED,IAAI,cAAc,IAAI,uBAAuB,CAAC,MAAM,CAEnD;CACJ;AAED,yBAAiB,uBAAuB,CAAC;IACrC,UAAiB,MAAM;QACnB;;;WAGG;QACH,oBAAoB,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAEzC,4EAA4E;QAC5E,2BAA2B,CAAC,EAAE,KAAK,CAAC;QAEpC,sHAAsH;QACtH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB,sEAAsE;QACtE,eAAe,CAAC,EAAE,MAAM,CAAC;QAEzB,kGAAkG;QAClG,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B,oGAAoG;QACpG,eAAe,CAAC,EAAE,MAAM,CAAC;KAC5B;IAEM,MAAM,aAAa,EAAE,uBAAuB,CAAC,MAOnD,CAAC;IAEF,UAAiB,gBAAiB,SAAQ,uBAAuB,CAAC,MAAM;QACpE,gGAAgG;QAChG,cAAc,EAAE,uBAAuB,CAAC;KAC3C;IAED,UAAiB,sBAAuB,SAAQ,gBAAgB;QAC5D,kGAAkG;QAClG,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B,oGAAoG;QACpG,eAAe,CAAC,EAAE,MAAM,CAAC;KAC5B;IAED,UAAiB,eAAgB,SAAQ,uBAAuB,CAAC,MAAM;QACnE,eAAe,EAAE,cAAc,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC;KACxB;IAED,UAAiB,OAAQ,SAAQ,uBAAuB,CAAC,MAAM;QAC3D,uEAAuE;QACvE,QAAQ,EAAE,OAAO,CAAC;QAElB,6CAA6C;QAC7C,cAAc,EAAE,uBAAuB,CAAC;QAExC,wDAAwD;QACxD,WAAW,CAAC,EAAE,OAAO,CAAC;KACzB;CACJ"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ImplementationError } from "#general";
7
+ import { Flow } from "./flow/Flow.js";
8
+ class BdxSessionConfiguration {
9
+ #isSender;
10
+ #initMessage;
11
+ #transferConfig;
12
+ #fileDesignator;
13
+ constructor(options) {
14
+ const { isSender, fileDesignator, initMessage } = options;
15
+ this.#fileDesignator = fileDesignator;
16
+ this.#isSender = isSender;
17
+ this.#initMessage = initMessage;
18
+ this.#transferConfig = { ...BdxSessionConfiguration.DefaultConfig, ...options };
19
+ const {
20
+ preferredDriverModes = [],
21
+ maxBlockSize,
22
+ maxTransferSize,
23
+ asynchronousTransferAllowed,
24
+ senderStartOffset,
25
+ senderMaxLength
26
+ } = this.#transferConfig;
27
+ if (preferredDriverModes.length === 0) {
28
+ throw new ImplementationError("At least one preferred driver mode must be set.");
29
+ }
30
+ if (maxBlockSize !== void 0 && maxBlockSize <= 0) {
31
+ throw new ImplementationError("Max block size must be greater than 0");
32
+ }
33
+ if (maxTransferSize !== void 0 && maxTransferSize <= 0) {
34
+ throw new ImplementationError("Max transfer size must be greater than 0");
35
+ }
36
+ if (asynchronousTransferAllowed) {
37
+ throw new ImplementationError("Asynchronous transfer is not supported");
38
+ }
39
+ if (!isSender && (senderStartOffset !== void 0 || senderMaxLength !== void 0)) {
40
+ throw new ImplementationError("Sender start offset and sender max length are only supported for senders");
41
+ }
42
+ }
43
+ get isSender() {
44
+ return this.#isSender;
45
+ }
46
+ get initMessage() {
47
+ return this.#initMessage;
48
+ }
49
+ get isInitiator() {
50
+ return this.#initMessage === void 0;
51
+ }
52
+ get fileDesignator() {
53
+ return this.#fileDesignator;
54
+ }
55
+ get transferConfig() {
56
+ return this.#transferConfig;
57
+ }
58
+ }
59
+ ((BdxSessionConfiguration2) => {
60
+ BdxSessionConfiguration2.DefaultConfig = {
61
+ preferredDriverModes: [
62
+ Flow.DriverMode.SenderDrive,
63
+ // Default if multiple is supported, so lets use this
64
+ Flow.DriverMode.ReceiverDrive
65
+ ],
66
+ asynchronousTransferAllowed: false,
67
+ // Provisional, not supported
68
+ maxTransferSize: 1024 * 1e5
69
+ // 100 MB, lets use that as maximum transfer filesize for now just to protect
70
+ };
71
+ })(BdxSessionConfiguration || (BdxSessionConfiguration = {}));
72
+ export {
73
+ BdxSessionConfiguration
74
+ };
75
+ //# sourceMappingURL=BdxSessionConfiguration.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/BdxSessionConfiguration.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,2BAA2B;AAEpC,SAAS,YAAY;AAId,MAAM,wBAAwB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAA0C;AAClD,UAAM,EAAE,UAAU,gBAAgB,YAAY,IAAI;AAClD,SAAK,kBAAkB;AACvB,SAAK,YAAY;AACjB,SAAK,eAAe;AACpB,SAAK,kBAAkB,EAAE,GAAG,wBAAwB,eAAe,GAAG,QAAQ;AAG9E,UAAM;AAAA,MACF,uBAAuB,CAAC;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,IAAI,KAAK;AACT,QAAI,qBAAqB,WAAW,GAAG;AACnC,YAAM,IAAI,oBAAoB,iDAAiD;AAAA,IACnF;AACA,QAAI,iBAAiB,UAAa,gBAAgB,GAAG;AACjD,YAAM,IAAI,oBAAoB,uCAAuC;AAAA,IACzE;AACA,QAAI,oBAAoB,UAAa,mBAAmB,GAAG;AACvD,YAAM,IAAI,oBAAoB,0CAA0C;AAAA,IAC5E;AACA,QAAI,6BAA6B;AAC7B,YAAM,IAAI,oBAAoB,wCAAwC;AAAA,IAC1E;AACA,QAAI,CAAC,aAAa,sBAAsB,UAAa,oBAAoB,SAAY;AACjF,YAAM,IAAI,oBAAoB,0EAA0E;AAAA,IAC5G;AAAA,EACJ;AAAA,EAEA,IAAI,WAAoB;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAmC;AACnC,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,cAAuB;AACvB,WAAO,KAAK,iBAAiB;AAAA,EACjC;AAAA,EAEA,IAAI,iBAA0C;AAC1C,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,iBAAiD;AACjD,WAAO,KAAK;AAAA,EAChB;AACJ;AAAA,CAEO,CAAUA,6BAAV;AAwBI,EAAMA,yBAAA,gBAAgD;AAAA,IACzD,sBAAsB;AAAA,MAClB,KAAK,WAAW;AAAA;AAAA,MAChB,KAAK,WAAW;AAAA,IACpB;AAAA,IACA,6BAA6B;AAAA;AAAA,IAC7B,iBAAiB,OAAQ;AAAA;AAAA,EAC7B;AAAA,GA/Ba;",
5
+ "names": ["BdxSessionConfiguration"]
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 { Bytes } from "#general";
7
+ /**
8
+ * Class to represent a File designator from Matter.
9
+ * Specification wise this is a bytes object, but to store in a storage we need a string name.
10
+ * This class provides a way to convert between the two.
11
+ */
12
+ export declare class FileDesignator {
13
+ #private;
14
+ /** Create a FileDesignator from a string or bytes object. */
15
+ constructor(fd: string | Bytes);
16
+ /** Return the bytes representation of the FileDesignator. */
17
+ get bytes(): Bytes;
18
+ /** Return the textual/string representation of the FileDesignator. */
19
+ get text(): string;
20
+ }
21
+ //# sourceMappingURL=FileDesignator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDesignator.d.ts","sourceRoot":"","sources":["../../../src/bdx/FileDesignator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;;;GAIG;AACH,qBAAa,cAAc;;IAGvB,6DAA6D;gBACjD,EAAE,EAAE,MAAM,GAAG,KAAK;IAQ9B,6DAA6D;IAC7D,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,sEAAsE;IACtE,IAAI,IAAI,IAAI,MAAM,CAgBjB;CACJ"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Bytes } from "#general";
7
+ class FileDesignator {
8
+ #fd;
9
+ /** Create a FileDesignator from a string or bytes object. */
10
+ constructor(fd) {
11
+ if (typeof fd === "string") {
12
+ this.#fd = Bytes.fromString(fd);
13
+ } else {
14
+ this.#fd = fd;
15
+ }
16
+ }
17
+ /** Return the bytes representation of the FileDesignator. */
18
+ get bytes() {
19
+ return this.#fd;
20
+ }
21
+ /** Return the textual/string representation of the FileDesignator. */
22
+ get text() {
23
+ const fileDesignatorData = Bytes.of(this.#fd);
24
+ const isValidName = fileDesignatorData.every(
25
+ (byte) => byte >= 65 && byte <= 90 || // A-Z
26
+ byte >= 97 && byte <= 122 || // a-z
27
+ byte >= 48 && byte <= 57 || // 0..9
28
+ byte === 46 || // "."
29
+ byte === 45
30
+ // "-"
31
+ );
32
+ if (isValidName) {
33
+ return fileDesignatorData.reduce((name, byte) => name + String.fromCharCode(byte), "");
34
+ } else {
35
+ return `0x${Bytes.toHex(fileDesignatorData)}`;
36
+ }
37
+ }
38
+ }
39
+ export {
40
+ FileDesignator
41
+ };
42
+ //# sourceMappingURL=FileDesignator.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/FileDesignator.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,aAAa;AAOf,MAAM,eAAe;AAAA,EACxB;AAAA;AAAA,EAGA,YAAY,IAAoB;AAC5B,QAAI,OAAO,OAAO,UAAU;AACxB,WAAK,MAAM,MAAM,WAAW,EAAE;AAAA,IAClC,OAAO;AACH,WAAK,MAAM;AAAA,IACf;AAAA,EACJ;AAAA;AAAA,EAGA,IAAI,QAAe;AACf,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAI,OAAe;AACf,UAAM,qBAAqB,MAAM,GAAG,KAAK,GAAG;AAE5C,UAAM,cAAc,mBAAmB;AAAA,MACnC,UACK,QAAQ,MAAQ,QAAQ;AAAA,MACxB,QAAQ,MAAQ,QAAQ;AAAA,MACxB,QAAQ,MAAQ,QAAQ;AAAA,MACzB,SAAS;AAAA,MACT,SAAS;AAAA;AAAA,IACjB;AACA,QAAI,aAAa;AACb,aAAO,mBAAmB,OAAO,CAAC,MAAM,SAAS,OAAO,OAAO,aAAa,IAAI,GAAG,EAAE;AAAA,IACzF,OAAO;AACH,aAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAAA,IAC/C;AAAA,EACJ;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
+ import { Bytes, StorageContext } from "#general";
7
+ import { FileDesignator } from "./FileDesignator.js";
8
+ /** A FileDesignator that points to a persisted file in a given StorageContext. */
9
+ export declare class PersistedFileDesignator extends FileDesignator {
10
+ #private;
11
+ constructor(fd: string | Bytes, storage: StorageContext);
12
+ exists(): import("#general").MaybePromise<boolean>;
13
+ openBlob(): Promise<Blob>;
14
+ writeFromStream(stream: ReadableStream<Bytes>): import("#general").MaybePromise<void>;
15
+ }
16
+ //# sourceMappingURL=PersistedFileDesignator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersistedFileDesignator.d.ts","sourceRoot":"","sources":["../../../src/bdx/PersistedFileDesignator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAuB,cAAc,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,kFAAkF;AAClF,qBAAa,uBAAwB,SAAQ,cAAc;;gBAI3C,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,cAAc;IAKvD,MAAM;IAIA,QAAQ;IAad,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC;CAGhD"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ImplementationError } from "#general";
7
+ import { FileDesignator } from "./FileDesignator.js";
8
+ class PersistedFileDesignator extends FileDesignator {
9
+ #storage;
10
+ #blob;
11
+ constructor(fd, storage) {
12
+ super(fd);
13
+ this.#storage = storage;
14
+ }
15
+ exists() {
16
+ return this.#storage.has(this.text);
17
+ }
18
+ async openBlob() {
19
+ if (this.#blob === void 0) {
20
+ const blobName = this.text;
21
+ if (!this.#storage.has(blobName)) {
22
+ throw new ImplementationError(
23
+ "File designator must point to an existing file in the storage to send data"
24
+ );
25
+ }
26
+ this.#blob = await this.#storage.openBlob(blobName);
27
+ }
28
+ return this.#blob;
29
+ }
30
+ writeFromStream(stream) {
31
+ return this.#storage.writeBlobFromStream(this.text, stream);
32
+ }
33
+ }
34
+ export {
35
+ PersistedFileDesignator
36
+ };
37
+ //# sourceMappingURL=PersistedFileDesignator.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/PersistedFileDesignator.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAgB,2BAA2C;AAC3D,SAAS,sBAAsB;AAGxB,MAAM,gCAAgC,eAAe;AAAA,EACxD;AAAA,EACA;AAAA,EAEA,YAAY,IAAoB,SAAyB;AACrD,UAAM,EAAE;AACR,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,SAAS;AACL,WAAO,KAAK,SAAS,IAAI,KAAK,IAAI;AAAA,EACtC;AAAA,EAEA,MAAM,WAAW;AACb,QAAI,KAAK,UAAU,QAAW;AAC1B,YAAM,WAAW,KAAK;AACtB,UAAI,CAAC,KAAK,SAAS,IAAI,QAAQ,GAAG;AAC9B,cAAM,IAAI;AAAA,UACN;AAAA,QACJ;AAAA,MACJ;AACA,WAAK,QAAQ,MAAM,KAAK,SAAS,SAAS,QAAQ;AAAA,IACtD;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,gBAAgB,QAA+B;AAC3C,WAAO,KAAK,SAAS,oBAAoB,KAAK,MAAM,MAAM;AAAA,EAC9D;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
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 { BdxSessionConfiguration } from "./BdxSessionConfiguration.js";
8
+ import { Flow } from "./flow/Flow.js";
9
+ /**
10
+ * Handles the initiation of a BDX session by exchanging *Init and *Accept messages and negotiating the transfer
11
+ * parameters.
12
+ */
13
+ export declare function bdxSessionInitiator(messenger: BdxMessenger, config: BdxSessionConfiguration): Promise<Flow.TransferOptions>;
14
+ //# sourceMappingURL=bdx-session-initiator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bdx-session-initiator.d.ts","sourceRoot":"","sources":["../../../src/bdx/bdx-session-initiator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAMtC;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,uBAAuB,iCAgOjG"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ImplementationError, InternalError, Logger } from "#general";
7
+ import { BdxStatusCode } from "#types";
8
+ import { BdxError } from "./BdxError.js";
9
+ import { BdxMessenger } from "./BdxMessenger.js";
10
+ import { Flow } from "./flow/Flow.js";
11
+ import { BDX_VERSION } from "./schema/BdxInitMessagesSchema.js";
12
+ const logger = Logger.get("bdxSessionInitiator");
13
+ async function bdxSessionInitiator(messenger, config) {
14
+ if (config.isInitiator) {
15
+ if (config.isSender) {
16
+ const initMessage2 = await buildInitMessage();
17
+ const acceptMessage3 = await messenger.sendSendInit(initMessage2);
18
+ return collectAcceptParameters(
19
+ acceptMessage3,
20
+ // We define the data, so we know it are numbers
21
+ initMessage2.startOffset !== void 0 ? Number(initMessage2.startOffset) : void 0,
22
+ initMessage2.maxLength !== void 0 ? Number(initMessage2.maxLength) : void 0
23
+ );
24
+ }
25
+ const acceptMessage2 = await messenger.sendReceiveInit(await buildInitMessage());
26
+ return collectAcceptParameters(acceptMessage2);
27
+ }
28
+ const initMessage = config.initMessage;
29
+ if (initMessage === void 0) {
30
+ throw new InternalError("Initial message must be set before starting from initial message");
31
+ }
32
+ logger.debug(`Initialize BDX ${config.isSender ? "ReceiveInit" : "SendInit"} from incoming Message`, initMessage);
33
+ if (config.isSender) {
34
+ if (!config.fileDesignator.exists()) {
35
+ throw new BdxError(
36
+ `File designator ${config.fileDesignator.text} does not point to an existing file in the storage to send data`,
37
+ BdxStatusCode.FileDesignatorUnknown
38
+ );
39
+ }
40
+ let { startOffset } = initMessage;
41
+ if (startOffset !== void 0) {
42
+ startOffset = BdxMessenger.asSafeNumber(startOffset, "Start offset", BdxStatusCode.StartOffsetNotSupported);
43
+ }
44
+ const acceptMessage2 = await determineAcceptParameters(initMessage);
45
+ const length = "length" in acceptMessage2 && typeof acceptMessage2.length === "number" ? acceptMessage2.length : void 0;
46
+ const blobToRead = await config.fileDesignator.openBlob();
47
+ if (length !== void 0 && length > 0) {
48
+ const availableSize = blobToRead.size - (startOffset ?? 0);
49
+ if (length > availableSize) {
50
+ throw new BdxError(
51
+ `Requested maxLength ${length}bytes${startOffset ? ` with startOffset ${startOffset}` : ""} exceeds available size ${blobToRead.size} for blob ${config.fileDesignator.text}`,
52
+ BdxStatusCode.LengthTooLarge
53
+ );
54
+ }
55
+ }
56
+ await messenger.sendReceiveAccept(acceptMessage2);
57
+ return collectAcceptParameters(acceptMessage2, startOffset, length);
58
+ }
59
+ const acceptMessage = {
60
+ ...await determineAcceptParameters(initMessage),
61
+ length: void 0
62
+ // Length is not included in SendAccept, so take out to not confuse in logs
63
+ };
64
+ await messenger.sendSendAccept(acceptMessage);
65
+ return collectAcceptParameters(acceptMessage);
66
+ async function buildInitMessage() {
67
+ const {
68
+ senderStartOffset,
69
+ maxTransferSize,
70
+ senderMaxLength,
71
+ preferredDriverModes,
72
+ asynchronousTransferAllowed
73
+ } = config.transferConfig;
74
+ const { isSender, fileDesignator } = config;
75
+ let startOffset;
76
+ let maxLength;
77
+ if (isSender) {
78
+ maxLength = (await fileDesignator.openBlob()).size;
79
+ if (senderStartOffset !== void 0) {
80
+ if (maxLength <= senderStartOffset) {
81
+ throw new ImplementationError(
82
+ `Available data of ${maxLength}bytes are smaller than senderStartOffset ${senderStartOffset}bytes`
83
+ );
84
+ }
85
+ startOffset = senderStartOffset;
86
+ maxLength -= startOffset;
87
+ }
88
+ if (maxTransferSize !== void 0) {
89
+ if (maxLength > maxTransferSize) {
90
+ throw new ImplementationError(
91
+ `Requested maxLength ${maxLength}bytes exceeds maximum transfer size ${maxTransferSize}bytes`
92
+ );
93
+ }
94
+ }
95
+ if (senderMaxLength !== void 0) {
96
+ if (maxLength >= senderMaxLength) {
97
+ maxLength = senderMaxLength;
98
+ } else {
99
+ logger.info(
100
+ `Ignoring requested senderMaxLength ${senderMaxLength}bytes as it is larger then the relevant payload size of ${maxLength}bytes`
101
+ );
102
+ }
103
+ }
104
+ }
105
+ let maxBlockSize = messenger.maxPayloadSize - 4;
106
+ const requestedBlockSize = config.transferConfig.maxBlockSize;
107
+ if (requestedBlockSize !== void 0) {
108
+ if (maxBlockSize > requestedBlockSize) {
109
+ maxBlockSize = requestedBlockSize;
110
+ } else {
111
+ logger.info(
112
+ `Ignoring requested maxBlockSize ${requestedBlockSize}, as it is larger then the transport max payload size ${maxBlockSize}bytes`
113
+ );
114
+ }
115
+ }
116
+ return {
117
+ transferProtocol: {
118
+ version: BDX_VERSION,
119
+ senderDrive: !!preferredDriverModes?.includes(Flow.DriverMode.SenderDrive),
120
+ receiverDrive: !!preferredDriverModes?.includes(Flow.DriverMode.ReceiverDrive),
121
+ asynchronousTransfer: asynchronousTransferAllowed
122
+ // always false for now
123
+ },
124
+ maxBlockSize,
125
+ fileDesignator: fileDesignator.bytes,
126
+ startOffset,
127
+ maxLength
128
+ };
129
+ }
130
+ async function determineAcceptParameters(initMessage2) {
131
+ const { transferProtocol, maxLength: initMaxLength = 0 } = initMessage2;
132
+ let { maxBlockSize } = initMessage2;
133
+ let finalDriverMode;
134
+ for (const mode of config.transferConfig.preferredDriverModes) {
135
+ if (transferProtocol[mode]) {
136
+ finalDriverMode = mode;
137
+ break;
138
+ }
139
+ }
140
+ if (finalDriverMode === void 0) {
141
+ throw new BdxError("Can not determine a valid transfer mode", BdxStatusCode.TransferMethodNotSupported);
142
+ }
143
+ const requestedMaxBlockSize = config.transferConfig.maxBlockSize;
144
+ if (requestedMaxBlockSize !== void 0 && maxBlockSize > requestedMaxBlockSize) {
145
+ maxBlockSize = requestedMaxBlockSize;
146
+ }
147
+ const maxLength = BdxMessenger.asSafeNumber(initMaxLength, "Max length", BdxStatusCode.LengthTooLarge);
148
+ const transferControl = {
149
+ version: BDX_VERSION,
150
+ // We support the minimum version, so no need for further checks
151
+ [finalDriverMode]: true,
152
+ // this sets either senderDrive or receiveDriver property
153
+ asynchronousTransfer: false
154
+ // Not supported so ignore if it was received
155
+ };
156
+ return {
157
+ transferControl,
158
+ maxBlockSize,
159
+ length: maxLength > 0 ? maxLength : void 0
160
+ };
161
+ }
162
+ function collectAcceptParameters(acceptMessage2, startOffset = 0, maxLength) {
163
+ const {
164
+ transferControl: { senderDrive, asynchronousTransfer },
165
+ maxBlockSize
166
+ } = acceptMessage2;
167
+ if (asynchronousTransfer) {
168
+ throw new BdxError(
169
+ "Asynchronous transfer is not supported in this implementation",
170
+ BdxStatusCode.TransferMethodNotSupported
171
+ );
172
+ }
173
+ const dataLength = "length" in acceptMessage2 && acceptMessage2.length !== void 0 ? BdxMessenger.asSafeNumber(
174
+ acceptMessage2.length,
175
+ "Accept message length field",
176
+ BdxStatusCode.LengthTooLarge
177
+ ) : maxLength;
178
+ const transferParameters = {
179
+ transferMode: senderDrive ? Flow.DriverMode.SenderDrive : Flow.DriverMode.ReceiverDrive,
180
+ asynchronousTransfer: false,
181
+ // always false for now
182
+ dataLength,
183
+ startOffset,
184
+ blockSize: maxBlockSize,
185
+ isDriver: config.isSender && senderDrive || !config.isSender && !senderDrive,
186
+ fileDesignator: config.fileDesignator
187
+ };
188
+ logger.debug(
189
+ `${transferParameters.isDriver ? "We are" : "Peer is"} driving-${config.isSender ? "sender" : "receiver"} with negotiated transfer parameters`,
190
+ transferParameters
191
+ );
192
+ return transferParameters;
193
+ }
194
+ }
195
+ export {
196
+ bdxSessionInitiator
197
+ };
198
+ //# sourceMappingURL=bdx-session-initiator.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bdx/bdx-session-initiator.ts"],
4
+ "mappings": "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",
5
+ "names": ["initMessage", "acceptMessage"]
6
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { OutboundFlow } from "./OutboundFlow.js";
7
+ /**
8
+ * BDX Transport flow logic for a "BDX Driving Sender":
9
+ * - Send out the Block and wait for Ack (if synchronous transfer is used)
10
+ * - Last message is sent with BlockEof and expects AckEof
11
+ */
12
+ export declare class DrivenSendingFlow extends OutboundFlow {
13
+ protected transferNextChunk(): Promise<boolean>;
14
+ }
15
+ //# sourceMappingURL=DrivenSendingFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrivenSendingFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/DrivenSendingFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;cAC/B,iBAAiB;CAyBpC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { OutboundFlow } from "./OutboundFlow.js";
7
+ class DrivenSendingFlow extends OutboundFlow {
8
+ async transferNextChunk() {
9
+ const { asynchronousTransfer } = this.transferParameters;
10
+ const { iterator } = this.stream;
11
+ const blockCounter = this.nextMessageCounter;
12
+ const { data, done } = await this.readDataChunk(iterator);
13
+ if (done) {
14
+ await this.messenger.sendBlockEof({ data: data ?? new Uint8Array(), blockCounter });
15
+ this.finalBlockCounter = blockCounter;
16
+ return true;
17
+ }
18
+ await this.messenger.sendBlock({ data, blockCounter });
19
+ if (!asynchronousTransfer) {
20
+ const { blockCounter: ackedBlockCounter } = await this.messenger.readBlockAck();
21
+ this.validateCounter(ackedBlockCounter, blockCounter);
22
+ }
23
+ return false;
24
+ }
25
+ }
26
+ export {
27
+ DrivenSendingFlow
28
+ };
29
+ //# sourceMappingURL=DrivenSendingFlow.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bdx/flow/DrivenSendingFlow.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,oBAAoB;AAOtB,MAAM,0BAA0B,aAAa;AAAA,EAChD,MAAgB,oBAAoB;AAChC,UAAM,EAAE,qBAAqB,IAAI,KAAK;AACtC,UAAM,EAAE,SAAS,IAAI,KAAK;AAE1B,UAAM,eAAe,KAAK;AAE1B,UAAM,EAAE,MAAM,KAAK,IAAI,MAAM,KAAK,cAAc,QAAQ;AAExD,QAAI,MAAM;AAEN,YAAM,KAAK,UAAU,aAAa,EAAE,MAAM,QAAQ,IAAI,WAAW,GAAG,aAAa,CAAC;AAClF,WAAK,oBAAoB;AACzB,aAAO;AAAA,IACX;AAGA,UAAM,KAAK,UAAU,UAAU,EAAE,MAAM,aAAa,CAAC;AAGrD,QAAI,CAAC,sBAAsB;AACvB,YAAM,EAAE,cAAc,kBAAkB,IAAI,MAAM,KAAK,UAAU,aAAa;AAC9E,WAAK,gBAAgB,mBAAmB,YAAY;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACJ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { InboundFlow } from "./InboundFlow.js";
7
+ /**
8
+ * BDX Transport flow logic for a "BDX Driving Receiver":
9
+ * - Requests the next Blow using BlockQuery and then reads the Block
10
+ * - Last message is confirmed with an AckEof
11
+ */
12
+ export declare class DrivingReceivingFlow extends InboundFlow {
13
+ transferNextChunk(): Promise<boolean>;
14
+ }
15
+ //# sourceMappingURL=DrivingReceivingFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrivingReceivingFlow.d.ts","sourceRoot":"","sources":["../../../../src/bdx/flow/DrivingReceivingFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IAC3C,iBAAiB;CAwB1B"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { InboundFlow } from "./InboundFlow.js";
7
+ class DrivingReceivingFlow extends InboundFlow {
8
+ async transferNextChunk() {
9
+ const { writeController } = this.stream;
10
+ const blockCounter = this.nextMessageCounter;
11
+ await this.messenger.sendBlockQuery({ blockCounter });
12
+ const {
13
+ kind: messageType,
14
+ message: { blockCounter: dataBlockCounter, data }
15
+ } = await this.messenger.readBlock();
16
+ this.validateCounter(dataBlockCounter, blockCounter);
17
+ if (this.writeDataChunk(writeController, data, messageType)) {
18
+ this.finalBlockCounter = dataBlockCounter;
19
+ return true;
20
+ }
21
+ return false;
22
+ }
23
+ }
24
+ export {
25
+ DrivingReceivingFlow
26
+ };
27
+ //# sourceMappingURL=DrivingReceivingFlow.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/bdx/flow/DrivingReceivingFlow.ts"],
4
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,mBAAmB;AAOrB,MAAM,6BAA6B,YAAY;AAAA,EAClD,MAAM,oBAAoB;AACtB,UAAM,EAAE,gBAAgB,IAAI,KAAK;AAEjC,UAAM,eAAe,KAAK;AAI1B,UAAM,KAAK,UAAU,eAAe,EAAE,aAAa,CAAC;AAGpD,UAAM;AAAA,MACF,MAAM;AAAA,MACN,SAAS,EAAE,cAAc,kBAAkB,KAAK;AAAA,IACpD,IAAI,MAAM,KAAK,UAAU,UAAU;AACnC,SAAK,gBAAgB,kBAAkB,YAAY;AAGnD,QAAI,KAAK,eAAe,iBAAiB,MAAM,WAAW,GAAG;AACzD,WAAK,oBAAoB;AACzB,aAAO;AAAA,IACX;AAEA,WAAO;AAAA,EACX;AACJ;",
5
+ "names": []
6
+ }