@matter/protocol 0.16.0-alpha.0-20251230-22c86956b → 0.16.0-alpha.0-20260104-558783063

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.
@@ -23,6 +23,7 @@ export declare class BdxProtocol implements ProtocolHandler {
23
23
  disablePeerForScope(peer: PeerAddress, storage: ScopedStorage, force?: boolean): Promise<void>;
24
24
  onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
25
25
  close(): Promise<void>;
26
+ sessionFor(peerAddress: PeerAddress, scope: string): BdxSession | undefined;
26
27
  }
27
28
  export declare namespace BdxProtocol {
28
29
  interface Config extends BdxSessionConfiguration.Config {
@@ -1 +1 @@
1
- {"version":3,"file":"BdxProtocol.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxProtocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAoC,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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;IAMtC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAO9C,IAAI,cAAc,2DAEjB;IAED,IAAI,aAAa,2DAEhB;IASD,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM;IAenF,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,UAAQ;IAiB5E,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO;IAyEzD,KAAK;CAOd;AAED,yBAAiB,WAAW,CAAC;IACzB,UAAiB,MAAO,SAAQ,uBAAuB,CAAC,MAAM;QAC1D,cAAc,CAAC,EAAE,QAAQ,CAAC;KAC7B;CACJ"}
1
+ {"version":3,"file":"BdxProtocol.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxProtocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAoC,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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;IAMtC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAO9C,IAAI,cAAc,2DAEjB;IAED,IAAI,aAAa,2DAEhB;IASD,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM;IAenF,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,UAAQ;IAiB5E,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO;IAiFzD,KAAK;IAQX,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;CAQrD;AAED,yBAAiB,WAAW,CAAC;IACzB,UAAiB,MAAO,SAAQ,uBAAuB,CAAC,MAAM;QAC1D,cAAc,CAAC,EAAE,QAAQ,CAAC;KAC7B;CACJ"}
@@ -99,34 +99,42 @@ class BdxProtocol {
99
99
  switch (initMessageType) {
100
100
  case import_types.BdxMessageType.SendInit:
101
101
  case import_types.BdxMessageType.ReceiveInit:
102
- logger.debug(
103
- `Initialize Session for ${import_types.BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`
104
- );
105
- await exchange.nextMessage();
106
- const { payload } = message;
107
- const initMessage = new import_BdxInitMessagesSchema.BdxInitMessageSchema().decode(payload);
108
- const { fileDesignator: messageFileDesignator } = initMessage;
109
- const fd = new import_FileDesignator.FileDesignator(messageFileDesignator);
110
- const [storageScope, fileDesignator] = fd.text.split("/");
111
- const { storage, config } = this.#peerScopes.get(this.#peerScopeKey(exchange.session.peerAddress, storageScope)) ?? {};
112
- if (storage === void 0 || fileDesignator === void 0) {
113
- throw new import_BdxError.BdxError(
114
- `No storage context found for BDX file designator "${fd.text}"`,
115
- import_types.BdxStatusCode.FileDesignatorUnknown
116
- );
117
- }
118
- const messenger = new import_BdxMessenger.BdxMessenger(exchange, config?.messageTimeout);
119
- const bdxSession = import_BdxSession.BdxSession.fromMessage(messenger, {
120
- initMessageType,
121
- initMessage,
122
- fileDesignator: new import_PersistedFileDesignator.PersistedFileDesignator(fileDesignator, storage),
123
- ...config
124
- });
125
- await this.#registerSession(messenger, bdxSession, storageScope);
102
+ let messenger = void 0;
126
103
  try {
127
- await bdxSession.processTransfer();
104
+ logger.debug(
105
+ `Initialize Session for ${import_types.BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`
106
+ );
107
+ await exchange.nextMessage();
108
+ const { payload } = message;
109
+ const initMessage = new import_BdxInitMessagesSchema.BdxInitMessageSchema().decode(payload);
110
+ const { fileDesignator: messageFileDesignator } = initMessage;
111
+ const fd = new import_FileDesignator.FileDesignator(messageFileDesignator);
112
+ const [storageScope, fileDesignator] = fd.text.split("/");
113
+ const { storage, config } = this.#peerScopes.get(this.#peerScopeKey(exchange.session.peerAddress, storageScope)) ?? {};
114
+ if (storage === void 0 || fileDesignator === void 0) {
115
+ throw new import_BdxError.BdxError(
116
+ `No storage context found for BDX file designator "${fd.text}"`,
117
+ import_types.BdxStatusCode.FileDesignatorUnknown
118
+ );
119
+ }
120
+ messenger = new import_BdxMessenger.BdxMessenger(exchange, config?.messageTimeout);
121
+ const bdxSession = import_BdxSession.BdxSession.fromMessage(messenger, {
122
+ initMessageType,
123
+ initMessage,
124
+ fileDesignator: new import_PersistedFileDesignator.PersistedFileDesignator(fileDesignator, storage),
125
+ ...config
126
+ });
127
+ await this.#registerSession(messenger, bdxSession, storageScope);
128
+ try {
129
+ await bdxSession.processTransfer();
130
+ } catch (error) {
131
+ logger.error(`Error processing BDX transfer:`, error);
132
+ }
128
133
  } catch (error) {
129
- logger.error(`Error processing BDX transfer:`, error);
134
+ import_BdxError.BdxError.accept(error);
135
+ await (messenger ?? new import_BdxMessenger.BdxMessenger(exchange)).sendError(error.code);
136
+ logger.warn(`BDX session failed with error:`, error);
137
+ return;
130
138
  }
131
139
  break;
132
140
  default:
@@ -160,5 +168,13 @@ class BdxProtocol {
160
168
  }
161
169
  this.#activeBdxSessions.clear();
162
170
  }
171
+ sessionFor(peerAddress, scope) {
172
+ for (const { session, scope: activeScope } of this.#activeBdxSessions.values()) {
173
+ if (import_PeerAddress.PeerAddress.is(peerAddress, session.peerAddress) && activeScope === scope) {
174
+ return session;
175
+ }
176
+ }
177
+ return void 0;
178
+ }
163
179
  }
164
180
  //# sourceMappingURL=BdxProtocol.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/bdx/BdxProtocol.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -23,6 +23,7 @@ export declare class BdxProtocol implements ProtocolHandler {
23
23
  disablePeerForScope(peer: PeerAddress, storage: ScopedStorage, force?: boolean): Promise<void>;
24
24
  onNewExchange(exchange: MessageExchange, message: Message): Promise<void>;
25
25
  close(): Promise<void>;
26
+ sessionFor(peerAddress: PeerAddress, scope: string): BdxSession | undefined;
26
27
  }
27
28
  export declare namespace BdxProtocol {
28
29
  interface Config extends BdxSessionConfiguration.Config {
@@ -1 +1 @@
1
- {"version":3,"file":"BdxProtocol.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxProtocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAoC,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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;IAMtC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAO9C,IAAI,cAAc,2DAEjB;IAED,IAAI,aAAa,2DAEhB;IASD,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM;IAenF,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,UAAQ;IAiB5E,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO;IAyEzD,KAAK;CAOd;AAED,yBAAiB,WAAW,CAAC;IACzB,UAAiB,MAAO,SAAQ,uBAAuB,CAAC,MAAM;QAC1D,cAAc,CAAC,EAAE,QAAQ,CAAC;KAC7B;CACJ"}
1
+ {"version":3,"file":"BdxProtocol.d.ts","sourceRoot":"","sources":["../../../src/bdx/BdxProtocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAoC,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,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;IAMtC,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAO9C,IAAI,cAAc,2DAEjB;IAED,IAAI,aAAa,2DAEhB;IASD,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM;IAenF,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,UAAQ;IAiB5E,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO;IAiFzD,KAAK;IAQX,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM;CAQrD;AAED,yBAAiB,WAAW,CAAC;IACzB,UAAiB,MAAO,SAAQ,uBAAuB,CAAC,MAAM;QAC1D,cAAc,CAAC,EAAE,QAAQ,CAAC;KAC7B;CACJ"}
@@ -76,34 +76,42 @@ class BdxProtocol {
76
76
  switch (initMessageType) {
77
77
  case BdxMessageType.SendInit:
78
78
  case BdxMessageType.ReceiveInit:
79
- logger.debug(
80
- `Initialize Session for ${BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`
81
- );
82
- await exchange.nextMessage();
83
- const { payload } = message;
84
- const initMessage = new BdxInitMessageSchema().decode(payload);
85
- const { fileDesignator: messageFileDesignator } = initMessage;
86
- const fd = new FileDesignator(messageFileDesignator);
87
- const [storageScope, fileDesignator] = fd.text.split("/");
88
- const { storage, config } = this.#peerScopes.get(this.#peerScopeKey(exchange.session.peerAddress, storageScope)) ?? {};
89
- if (storage === void 0 || fileDesignator === void 0) {
90
- throw new BdxError(
91
- `No storage context found for BDX file designator "${fd.text}"`,
92
- BdxStatusCode.FileDesignatorUnknown
93
- );
94
- }
95
- const messenger = new BdxMessenger(exchange, config?.messageTimeout);
96
- const bdxSession = BdxSession.fromMessage(messenger, {
97
- initMessageType,
98
- initMessage,
99
- fileDesignator: new PersistedFileDesignator(fileDesignator, storage),
100
- ...config
101
- });
102
- await this.#registerSession(messenger, bdxSession, storageScope);
79
+ let messenger = void 0;
103
80
  try {
104
- await bdxSession.processTransfer();
81
+ logger.debug(
82
+ `Initialize Session for ${BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`
83
+ );
84
+ await exchange.nextMessage();
85
+ const { payload } = message;
86
+ const initMessage = new BdxInitMessageSchema().decode(payload);
87
+ const { fileDesignator: messageFileDesignator } = initMessage;
88
+ const fd = new FileDesignator(messageFileDesignator);
89
+ const [storageScope, fileDesignator] = fd.text.split("/");
90
+ const { storage, config } = this.#peerScopes.get(this.#peerScopeKey(exchange.session.peerAddress, storageScope)) ?? {};
91
+ if (storage === void 0 || fileDesignator === void 0) {
92
+ throw new BdxError(
93
+ `No storage context found for BDX file designator "${fd.text}"`,
94
+ BdxStatusCode.FileDesignatorUnknown
95
+ );
96
+ }
97
+ messenger = new BdxMessenger(exchange, config?.messageTimeout);
98
+ const bdxSession = BdxSession.fromMessage(messenger, {
99
+ initMessageType,
100
+ initMessage,
101
+ fileDesignator: new PersistedFileDesignator(fileDesignator, storage),
102
+ ...config
103
+ });
104
+ await this.#registerSession(messenger, bdxSession, storageScope);
105
+ try {
106
+ await bdxSession.processTransfer();
107
+ } catch (error) {
108
+ logger.error(`Error processing BDX transfer:`, error);
109
+ }
105
110
  } catch (error) {
106
- logger.error(`Error processing BDX transfer:`, error);
111
+ BdxError.accept(error);
112
+ await (messenger ?? new BdxMessenger(exchange)).sendError(error.code);
113
+ logger.warn(`BDX session failed with error:`, error);
114
+ return;
107
115
  }
108
116
  break;
109
117
  default:
@@ -137,6 +145,14 @@ class BdxProtocol {
137
145
  }
138
146
  this.#activeBdxSessions.clear();
139
147
  }
148
+ sessionFor(peerAddress, scope) {
149
+ for (const { session, scope: activeScope } of this.#activeBdxSessions.values()) {
150
+ if (PeerAddress.is(peerAddress, session.peerAddress) && activeScope === scope) {
151
+ return session;
152
+ }
153
+ }
154
+ return void 0;
155
+ }
140
156
  }
141
157
  export {
142
158
  BdxProtocol
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/bdx/BdxProtocol.ts"],
4
- "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAAS,sBAAsB;AAC/B,SAAS,+BAA+B;AAExC,SAAgC,eAAe,aAAa,QAAQ,aAAa,kBAAkB;AACnG,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB;AAGhC,SAAS,qBAAqB;AAC9B,SAAS,iBAAiB,gBAAgB,qBAAqB;AAE/D,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAE3B,SAAS,4BAA4B;AAErC,MAAM,SAAS,OAAO,IAAI,aAAa;AAGhC,MAAM,YAAuC;AAAA,EACvC,KAAK;AAAA,EACL,wBAAwB;AAAA,EACxB,qBAAqB,oBAAI,IAA6D;AAAA,EAC/F,cAAc,oBAAI,IAAwF;AAAA,EAC1G,kBAAkB,WAAiD;AAAA,EACnE,iBAAiB,WAAiD;AAAA,EAElE,QAAQ,cAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,YAAY;AACjC,QAAI,IAAI,eAAe,EAAE,mBAAmB,QAAQ;AACpD,QAAI,IAAI,aAAa,QAAQ;AAC7B,WAAO;AAAA,EACX;AAAA,EAEA,IAAI,iBAAiB;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,cAAc,MAAmB,OAAgB;AAC7C,QAAI,UAAU,QAAW;AACrB,YAAM,IAAI,YAAY,sEAAsE;AAAA,IAChG;AACA,WAAO,GAAG,KAAK,SAAS,CAAC,IAAI,KAAK;AAAA,EACtC;AAAA,EAEA,mBAAmB,MAAmB,SAAwB,QAA6B;AACvF,UAAM,eAAe,KAAK,cAAc,MAAM,QAAQ,KAAK;AAC3D,UAAM,cAAc,KAAK,YAAY,IAAI,YAAY;AACrD,QAAI,gBAAgB,QAAW;AAC3B,YAAM,EAAE,SAAS,iBAAiB,QAAQ,eAAe,IAAI;AAC7D,aAAO,KAAK,QAAQ,MAAM,cAAc;AACxC,UAAI,oBAAoB,WAAW,YAAY,QAAQ,cAAc,GAAG;AACpE,eAAO;AAAA,MACX;AAAA,IACJ,OAAO;AACH,WAAK,YAAY,IAAI,cAAc,EAAE,MAAM,SAAS,OAAO,CAAC;AAAA,IAChE;AACA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,oBAAoB,MAAmB,SAAwB,QAAQ,OAAO;AAChF,QAAI,KAAK,mBAAmB,OAAO,GAAG;AAClC,iBAAW,EAAE,SAAS,MAAM,KAAK,KAAK,mBAAmB,OAAO,GAAG;AAC/D,YAAI,QAAQ,UAAU,SAAS,YAAY,GAAG,MAAM,QAAQ,WAAW,GAAG;AACtE,cAAI,OAAO;AACP,kBAAM,QAAQ,MAAM,IAAI,YAAY,6BAA6B,CAAC;AAClE;AAAA,UACJ;AACA,gBAAM,IAAI;AAAA,YACN,gCAAgC,IAAI,aAAa,KAAK;AAAA,UAC1D;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,YAAY,OAAO,KAAK,cAAc,MAAM,QAAQ,KAAK,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,cAAc,UAA2B,SAAkB;AAC7D,UAAM,kBAAkB,QAAQ,cAAc;AAC9C,kBAAc,OAAO,SAAS,OAAO;AAErC,YAAQ,iBAAiB;AAAA,MACrB,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAChB,eAAO;AAAA,UACH,0BAA0B,eAAe,eAAe,CAAC,yCAAyC,SAAS,EAAE;AAAA,QACjH;AACA,cAAM,SAAS,YAAY;AAE3B,cAAM,EAAE,QAAQ,IAAI;AAEpB,cAAM,cAAc,IAAI,qBAAqB,EAAE,OAAO,OAAO;AAC7D,cAAM,EAAE,gBAAgB,sBAAsB,IAAI;AAClD,cAAM,KAAK,IAAI,eAAe,qBAAqB;AACnD,cAAM,CAAC,cAAc,cAAc,IAAI,GAAG,KAAK,MAAM,GAAG;AACxD,cAAM,EAAE,SAAS,OAAO,IACpB,KAAK,YAAY,IAAI,KAAK,cAAc,SAAS,QAAQ,aAAa,YAAY,CAAC,KAAK,CAAC;AAC7F,YAAI,YAAY,UAAa,mBAAmB,QAAW;AACvD,gBAAM,IAAI;AAAA,YACN,qDAAqD,GAAG,IAAI;AAAA,YAC5D,cAAc;AAAA,UAClB;AAAA,QACJ;AAEA,cAAM,YAAY,IAAI,aAAa,UAAU,QAAQ,cAAc;AAEnE,cAAM,aAAa,WAAW,YAAY,WAAW;AAAA,UACjD;AAAA,UACA;AAAA,UACA,gBAAgB,IAAI,wBAAwB,gBAAgB,OAAO;AAAA,UACnE,GAAG;AAAA,QACP,CAAC;AACD,cAAM,KAAK,iBAAiB,WAAW,YAAY,YAAY;AAE/D,YAAI;AACA,gBAAM,WAAW,gBAAgB;AAAA,QACrC,SAAS,OAAO;AACZ,iBAAO,MAAM,kCAAkC,KAAK;AAAA,QACxD;AAEA;AAAA,MACJ;AACI,eAAO;AAAA,UACH,+BAA+B,eAAe,eAAe,CAAC,oBAAoB,SAAS,EAAE;AAAA,QACjG;AACA,cAAM,IAAI,aAAa,QAAQ,EAAE,UAAU,cAAc,iBAAiB;AAAA,IAClF;AAAA,EACJ;AAAA;AAAA,EAGA,MAAM,iBAAiB,WAAyB,YAAwB,OAAe;AACnF,UAAM,WAAW,UAAU;AAC3B,QAAI,KAAK,mBAAmB,IAAI,QAAQ,GAAG;AACvC,aAAO,KAAK,4BAA4B,SAAS,EAAE,gCAAgC;AACnF,YAAM,UAAU,UAAU,cAAc,iBAAiB;AACzD;AAAA,IACJ;AACA,SAAK,mBAAmB,IAAI,UAAU,EAAE,SAAS,YAAY,MAAM,CAAC;AAEpE,SAAK,gBAAgB,KAAK,YAAY,KAAK;AAE3C,eAAW,OAAO,GAAG,YAAY;AAC7B,aAAO,MAAM,4BAA4B,SAAS,EAAE,SAAS;AAC7D,WAAK,mBAAmB,OAAO,QAAQ;AACvC,YAAM,SAAS,MAAM;AAErB,WAAK,eAAe,KAAK,YAAY,KAAK;AAAA,IAC9C,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,QAAQ;AACV,WAAO,MAAM,qCAAqC,KAAK,mBAAmB,IAAI,kBAAkB;AAChG,eAAW,EAAE,QAAQ,KAAK,KAAK,mBAAmB,OAAO,GAAG;AACxD,YAAM,QAAQ,MAAM,IAAI,YAAY,6BAA6B,CAAC;AAAA,IACtE;AACA,SAAK,mBAAmB,MAAM;AAAA,EAClC;AACJ;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/protocol",
3
- "version": "0.16.0-alpha.0-20251230-22c86956b",
3
+ "version": "0.16.0-alpha.0-20260104-558783063",
4
4
  "description": "Low-level APIs for Matter interaction",
5
5
  "keywords": [
6
6
  "iot",
@@ -40,13 +40,13 @@
40
40
  "#*": "./src/*"
41
41
  },
42
42
  "dependencies": {
43
- "@matter/general": "0.16.0-alpha.0-20251230-22c86956b",
44
- "@matter/model": "0.16.0-alpha.0-20251230-22c86956b",
45
- "@matter/types": "0.16.0-alpha.0-20251230-22c86956b"
43
+ "@matter/general": "0.16.0-alpha.0-20260104-558783063",
44
+ "@matter/model": "0.16.0-alpha.0-20260104-558783063",
45
+ "@matter/types": "0.16.0-alpha.0-20260104-558783063"
46
46
  },
47
47
  "devDependencies": {
48
- "@matter/tools": "0.16.0-alpha.0-20251230-22c86956b",
49
- "@matter/testing": "0.16.0-alpha.0-20251230-22c86956b"
48
+ "@matter/tools": "0.16.0-alpha.0-20260104-558783063",
49
+ "@matter/testing": "0.16.0-alpha.0-20260104-558783063"
50
50
  },
51
51
  "files": [
52
52
  "dist/**/*",
@@ -93,42 +93,50 @@ export class BdxProtocol implements ProtocolHandler {
93
93
  switch (initMessageType) {
94
94
  case BdxMessageType.SendInit:
95
95
  case BdxMessageType.ReceiveInit:
96
- logger.debug(
97
- `Initialize Session for ${BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`,
98
- );
99
- await exchange.nextMessage(); // Read the message we just know
100
-
101
- const { payload } = message;
102
-
103
- const initMessage = new BdxInitMessageSchema().decode(payload);
104
- const { fileDesignator: messageFileDesignator } = initMessage;
105
- const fd = new FileDesignator(messageFileDesignator);
106
- const [storageScope, fileDesignator] = fd.text.split("/");
107
- const { storage, config } =
108
- this.#peerScopes.get(this.#peerScopeKey(exchange.session.peerAddress, storageScope)) ?? {};
109
- if (storage === undefined || fileDesignator === undefined) {
110
- throw new BdxError(
111
- `No storage context found for BDX file designator "${fd.text}"`,
112
- BdxStatusCode.FileDesignatorUnknown,
96
+ let messenger: BdxMessenger | undefined = undefined;
97
+ try {
98
+ logger.debug(
99
+ `Initialize Session for ${BdxMessageType[initMessageType]} message on BDX protocol for exchange ${exchange.id}`,
113
100
  );
114
- }
101
+ await exchange.nextMessage(); // Read the message we just know
102
+
103
+ const { payload } = message;
104
+
105
+ const initMessage = new BdxInitMessageSchema().decode(payload);
106
+ const { fileDesignator: messageFileDesignator } = initMessage;
107
+ const fd = new FileDesignator(messageFileDesignator);
108
+ const [storageScope, fileDesignator] = fd.text.split("/");
109
+ const { storage, config } =
110
+ this.#peerScopes.get(this.#peerScopeKey(exchange.session.peerAddress, storageScope)) ?? {};
111
+ if (storage === undefined || fileDesignator === undefined) {
112
+ throw new BdxError(
113
+ `No storage context found for BDX file designator "${fd.text}"`,
114
+ BdxStatusCode.FileDesignatorUnknown,
115
+ );
116
+ }
115
117
 
116
- const messenger = new BdxMessenger(exchange, config?.messageTimeout);
118
+ messenger = new BdxMessenger(exchange, config?.messageTimeout);
117
119
 
118
- const bdxSession = BdxSession.fromMessage(messenger, {
119
- initMessageType,
120
- initMessage,
121
- fileDesignator: new PersistedFileDesignator(fileDesignator, storage),
122
- ...config,
123
- });
124
- await this.#registerSession(messenger, bdxSession, storageScope);
120
+ const bdxSession = BdxSession.fromMessage(messenger, {
121
+ initMessageType,
122
+ initMessage,
123
+ fileDesignator: new PersistedFileDesignator(fileDesignator, storage),
124
+ ...config,
125
+ });
126
+ await this.#registerSession(messenger, bdxSession, storageScope);
125
127
 
126
- try {
127
- await bdxSession.processTransfer();
128
+ try {
129
+ await bdxSession.processTransfer();
130
+ } catch (error) {
131
+ logger.error(`Error processing BDX transfer:`, error);
132
+ }
128
133
  } catch (error) {
129
- logger.error(`Error processing BDX transfer:`, error);
130
- }
134
+ BdxError.accept(error);
135
+ await (messenger ?? new BdxMessenger(exchange)).sendError(error.code);
131
136
 
137
+ logger.warn(`BDX session failed with error:`, error);
138
+ return;
139
+ }
132
140
  break;
133
141
  default:
134
142
  logger.warn(
@@ -166,6 +174,15 @@ export class BdxProtocol implements ProtocolHandler {
166
174
  }
167
175
  this.#activeBdxSessions.clear();
168
176
  }
177
+
178
+ sessionFor(peerAddress: PeerAddress, scope: string) {
179
+ for (const { session, scope: activeScope } of this.#activeBdxSessions.values()) {
180
+ if (PeerAddress.is(peerAddress, session.peerAddress) && activeScope === scope) {
181
+ return session;
182
+ }
183
+ }
184
+ return undefined;
185
+ }
169
186
  }
170
187
 
171
188
  export namespace BdxProtocol {