@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.
- package/dist/cjs/bdx/BdxClient.d.ts +31 -0
- package/dist/cjs/bdx/BdxClient.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxClient.js +57 -0
- package/dist/cjs/bdx/BdxClient.js.map +6 -0
- package/dist/cjs/bdx/BdxError.d.ts +21 -0
- package/dist/cjs/bdx/BdxError.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxError.js +54 -0
- package/dist/cjs/bdx/BdxError.js.map +6 -0
- package/dist/cjs/bdx/BdxMessenger.d.ts +77 -0
- package/dist/cjs/bdx/BdxMessenger.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxMessenger.js +245 -0
- package/dist/cjs/bdx/BdxMessenger.js.map +6 -0
- package/dist/cjs/bdx/BdxProtocol.d.ts +25 -0
- package/dist/cjs/bdx/BdxProtocol.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxProtocol.js +102 -0
- package/dist/cjs/bdx/BdxProtocol.js.map +6 -0
- package/dist/cjs/bdx/BdxSession.d.ts +36 -0
- package/dist/cjs/bdx/BdxSession.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxSession.js +153 -0
- package/dist/cjs/bdx/BdxSession.js.map +6 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.d.ts +61 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.d.ts.map +1 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.js +95 -0
- package/dist/cjs/bdx/BdxSessionConfiguration.js.map +6 -0
- package/dist/cjs/bdx/FileDesignator.d.ts +21 -0
- package/dist/cjs/bdx/FileDesignator.d.ts.map +1 -0
- package/dist/cjs/bdx/FileDesignator.js +62 -0
- package/dist/cjs/bdx/FileDesignator.js.map +6 -0
- package/dist/cjs/bdx/PersistedFileDesignator.d.ts +16 -0
- package/dist/cjs/bdx/PersistedFileDesignator.d.ts.map +1 -0
- package/dist/cjs/bdx/PersistedFileDesignator.js +57 -0
- package/dist/cjs/bdx/PersistedFileDesignator.js.map +6 -0
- package/dist/cjs/bdx/bdx-session-initiator.d.ts +14 -0
- package/dist/cjs/bdx/bdx-session-initiator.d.ts.map +1 -0
- package/dist/cjs/bdx/bdx-session-initiator.js +218 -0
- package/dist/cjs/bdx/bdx-session-initiator.js.map +6 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.js +49 -0
- package/dist/cjs/bdx/flow/DrivenSendingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.js +47 -0
- package/dist/cjs/bdx/flow/DrivingReceivingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/Flow.d.ts +48 -0
- package/dist/cjs/bdx/flow/Flow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/Flow.js +112 -0
- package/dist/cjs/bdx/flow/Flow.js.map +6 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.js +60 -0
- package/dist/cjs/bdx/flow/FollowingReceivingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts +15 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.js +49 -0
- package/dist/cjs/bdx/flow/FollowingSendingFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/InboundFlow.d.ts +26 -0
- package/dist/cjs/bdx/flow/InboundFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/InboundFlow.js +101 -0
- package/dist/cjs/bdx/flow/InboundFlow.js.map +6 -0
- package/dist/cjs/bdx/flow/OutboundFlow.d.ts +31 -0
- package/dist/cjs/bdx/flow/OutboundFlow.d.ts.map +1 -0
- package/dist/cjs/bdx/flow/OutboundFlow.js +124 -0
- package/dist/cjs/bdx/flow/OutboundFlow.js.map +6 -0
- package/dist/cjs/bdx/index.d.ts +16 -0
- package/dist/cjs/bdx/index.d.ts.map +1 -0
- package/dist/cjs/bdx/index.js +33 -0
- package/dist/cjs/bdx/index.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js +125 -0
- package/dist/cjs/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js +92 -0
- package/dist/cjs/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js +153 -0
- package/dist/cjs/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxMessage.d.ts +23 -0
- package/dist/cjs/bdx/schema/BdxMessage.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxMessage.js +75 -0
- package/dist/cjs/bdx/schema/BdxMessage.js.map +6 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js +35 -0
- package/dist/cjs/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
- package/dist/cjs/bdx/schema/index.d.ts +11 -0
- package/dist/cjs/bdx/schema/index.d.ts.map +1 -0
- package/dist/cjs/bdx/schema/index.js +28 -0
- package/dist/cjs/bdx/schema/index.js.map +6 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts +4 -4
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +27 -39
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/mdns/MdnsClient.js +2 -2
- package/dist/cjs/mdns/MdnsClient.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +4 -2
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +2 -0
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +14 -8
- package/dist/cjs/protocol/MessageExchange.js.map +2 -2
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/cjs/protocol/ProtocolStatusMessage.js.map +1 -1
- package/dist/esm/bdx/BdxClient.d.ts +31 -0
- package/dist/esm/bdx/BdxClient.d.ts.map +1 -0
- package/dist/esm/bdx/BdxClient.js +37 -0
- package/dist/esm/bdx/BdxClient.js.map +6 -0
- package/dist/esm/bdx/BdxError.d.ts +21 -0
- package/dist/esm/bdx/BdxError.d.ts.map +1 -0
- package/dist/esm/bdx/BdxError.js +34 -0
- package/dist/esm/bdx/BdxError.js.map +6 -0
- package/dist/esm/bdx/BdxMessenger.d.ts +77 -0
- package/dist/esm/bdx/BdxMessenger.d.ts.map +1 -0
- package/dist/esm/bdx/BdxMessenger.js +233 -0
- package/dist/esm/bdx/BdxMessenger.js.map +6 -0
- package/dist/esm/bdx/BdxProtocol.d.ts +25 -0
- package/dist/esm/bdx/BdxProtocol.d.ts.map +1 -0
- package/dist/esm/bdx/BdxProtocol.js +82 -0
- package/dist/esm/bdx/BdxProtocol.js.map +6 -0
- package/dist/esm/bdx/BdxSession.d.ts +36 -0
- package/dist/esm/bdx/BdxSession.d.ts.map +1 -0
- package/dist/esm/bdx/BdxSession.js +133 -0
- package/dist/esm/bdx/BdxSession.js.map +6 -0
- package/dist/esm/bdx/BdxSessionConfiguration.d.ts +61 -0
- package/dist/esm/bdx/BdxSessionConfiguration.d.ts.map +1 -0
- package/dist/esm/bdx/BdxSessionConfiguration.js +75 -0
- package/dist/esm/bdx/BdxSessionConfiguration.js.map +6 -0
- package/dist/esm/bdx/FileDesignator.d.ts +21 -0
- package/dist/esm/bdx/FileDesignator.d.ts.map +1 -0
- package/dist/esm/bdx/FileDesignator.js +42 -0
- package/dist/esm/bdx/FileDesignator.js.map +6 -0
- package/dist/esm/bdx/PersistedFileDesignator.d.ts +16 -0
- package/dist/esm/bdx/PersistedFileDesignator.d.ts.map +1 -0
- package/dist/esm/bdx/PersistedFileDesignator.js +37 -0
- package/dist/esm/bdx/PersistedFileDesignator.js.map +6 -0
- package/dist/esm/bdx/bdx-session-initiator.d.ts +14 -0
- package/dist/esm/bdx/bdx-session-initiator.d.ts.map +1 -0
- package/dist/esm/bdx/bdx-session-initiator.js +198 -0
- package/dist/esm/bdx/bdx-session-initiator.js.map +6 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.js +29 -0
- package/dist/esm/bdx/flow/DrivenSendingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.js +27 -0
- package/dist/esm/bdx/flow/DrivingReceivingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/Flow.d.ts +48 -0
- package/dist/esm/bdx/flow/Flow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/Flow.js +92 -0
- package/dist/esm/bdx/flow/Flow.js.map +6 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts +16 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.js +40 -0
- package/dist/esm/bdx/flow/FollowingReceivingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts +15 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.js +29 -0
- package/dist/esm/bdx/flow/FollowingSendingFlow.js.map +6 -0
- package/dist/esm/bdx/flow/InboundFlow.d.ts +26 -0
- package/dist/esm/bdx/flow/InboundFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/InboundFlow.js +81 -0
- package/dist/esm/bdx/flow/InboundFlow.js.map +6 -0
- package/dist/esm/bdx/flow/OutboundFlow.d.ts +31 -0
- package/dist/esm/bdx/flow/OutboundFlow.d.ts.map +1 -0
- package/dist/esm/bdx/flow/OutboundFlow.js +104 -0
- package/dist/esm/bdx/flow/OutboundFlow.js.map +6 -0
- package/dist/esm/bdx/index.d.ts +16 -0
- package/dist/esm/bdx/index.d.ts.map +1 -0
- package/dist/esm/bdx/index.js +16 -0
- package/dist/esm/bdx/index.js.map +6 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts +50 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js +109 -0
- package/dist/esm/bdx/schema/BdxAcceptMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts +53 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js +72 -0
- package/dist/esm/bdx/schema/BdxBlockMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts +117 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.js +133 -0
- package/dist/esm/bdx/schema/BdxInitMessagesSchema.js.map +6 -0
- package/dist/esm/bdx/schema/BdxMessage.d.ts +23 -0
- package/dist/esm/bdx/schema/BdxMessage.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxMessage.js +62 -0
- package/dist/esm/bdx/schema/BdxMessage.js.map +6 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts +12 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.d.ts.map +1 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.js +15 -0
- package/dist/esm/bdx/schema/BdxStatusMessageSchema.js.map +6 -0
- package/dist/esm/bdx/schema/index.d.ts +11 -0
- package/dist/esm/bdx/schema/index.d.ts.map +1 -0
- package/dist/esm/bdx/schema/index.js +11 -0
- package/dist/esm/bdx/schema/index.js.map +6 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts +4 -4
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +27 -39
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/mdns/MdnsClient.js +2 -2
- package/dist/esm/mdns/MdnsClient.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +4 -2
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +2 -0
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +14 -8
- package/dist/esm/protocol/MessageExchange.js.map +2 -2
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.d.ts.map +1 -1
- package/dist/esm/protocol/ProtocolStatusMessage.js.map +1 -1
- package/package.json +6 -6
- package/src/bdx/BdxClient.ts +47 -0
- package/src/bdx/BdxError.ts +39 -0
- package/src/bdx/BdxMessenger.ts +291 -0
- package/src/bdx/BdxProtocol.ts +93 -0
- package/src/bdx/BdxSession.ts +174 -0
- package/src/bdx/BdxSessionConfiguration.ts +134 -0
- package/src/bdx/FileDesignator.ts +49 -0
- package/src/bdx/PersistedFileDesignator.ts +40 -0
- package/src/bdx/bdx-session-initiator.ts +246 -0
- package/src/bdx/flow/DrivenSendingFlow.ts +40 -0
- package/src/bdx/flow/DrivingReceivingFlow.ts +39 -0
- package/src/bdx/flow/Flow.ts +124 -0
- package/src/bdx/flow/FollowingReceivingFlow.ts +53 -0
- package/src/bdx/flow/FollowingSendingFlow.ts +38 -0
- package/src/bdx/flow/InboundFlow.ts +104 -0
- package/src/bdx/flow/OutboundFlow.ts +124 -0
- package/src/bdx/index.ts +16 -0
- package/src/bdx/schema/BdxAcceptMessagesSchema.ts +159 -0
- package/src/bdx/schema/BdxBlockMessagesSchema.ts +99 -0
- package/src/bdx/schema/BdxInitMessagesSchema.ts +213 -0
- package/src/bdx/schema/BdxMessage.ts +70 -0
- package/src/bdx/schema/BdxStatusMessageSchema.ts +14 -0
- package/src/bdx/schema/index.ts +11 -0
- package/src/index.ts +1 -0
- package/src/interaction/InteractionClient.ts +34 -48
- package/src/mdns/MdnsClient.ts +2 -2
- package/src/protocol/ExchangeManager.ts +2 -0
- package/src/protocol/MessageExchange.ts +17 -6
- 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
|
+
}
|