@matter/protocol 0.15.1-alpha.0-20250630-daa5888a0 → 0.15.2-alpha.0-20250703-2e16aba2b
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/action/Val.d.ts +4 -0
- package/dist/cjs/action/Val.d.ts.map +1 -1
- package/dist/cjs/action/Val.js.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts +10 -8
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +152 -80
- package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
- package/dist/cjs/action/client/ClientSubscription.d.ts +17 -0
- package/dist/cjs/action/client/ClientSubscription.d.ts.map +1 -0
- package/dist/cjs/action/client/ClientSubscription.js +22 -0
- package/dist/cjs/action/client/ClientSubscription.js.map +6 -0
- package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts +20 -0
- package/dist/cjs/action/client/ClientSubscriptionHandler.d.ts.map +1 -0
- package/dist/cjs/action/client/ClientSubscriptionHandler.js +117 -0
- package/dist/cjs/action/client/ClientSubscriptionHandler.js.map +6 -0
- package/dist/cjs/action/client/ClientSubscriptions.d.ts +45 -0
- package/dist/cjs/action/client/ClientSubscriptions.d.ts.map +1 -0
- package/dist/cjs/action/client/ClientSubscriptions.js +141 -0
- package/dist/cjs/action/client/ClientSubscriptions.js.map +6 -0
- package/dist/cjs/action/client/InputChunk.d.ts +12 -0
- package/dist/cjs/action/client/InputChunk.d.ts.map +1 -0
- package/dist/cjs/action/client/InputChunk.js +89 -0
- package/dist/cjs/action/client/InputChunk.js.map +6 -0
- package/dist/cjs/action/client/ReadScope.d.ts +26 -0
- package/dist/cjs/action/client/ReadScope.d.ts.map +1 -0
- package/dist/cjs/action/client/ReadScope.js +87 -0
- package/dist/cjs/action/client/ReadScope.js.map +6 -0
- package/dist/cjs/action/client/index.d.ts +5 -0
- package/dist/cjs/action/client/index.d.ts.map +1 -1
- package/dist/cjs/action/client/index.js +5 -0
- package/dist/cjs/action/client/index.js.map +1 -1
- package/dist/cjs/action/request/Read.d.ts +0 -4
- package/dist/cjs/action/request/Read.d.ts.map +1 -1
- package/dist/cjs/action/request/Read.js.map +1 -1
- package/dist/cjs/action/request/Subscribe.d.ts +14 -1
- package/dist/cjs/action/request/Subscribe.d.ts.map +1 -1
- package/dist/cjs/action/request/Subscribe.js +2 -2
- package/dist/cjs/action/request/Subscribe.js.map +1 -1
- package/dist/cjs/action/response/SubscribeResult.d.ts +3 -5
- package/dist/cjs/action/response/SubscribeResult.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +0 -1
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.d.ts +6 -1
- package/dist/cjs/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/cjs/fabric/FabricAuthority.js +16 -0
- package/dist/cjs/fabric/FabricAuthority.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +8 -4
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +20 -16
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +18 -10
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/mdns/MdnsScanner.d.ts +5 -6
- package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsScanner.js.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.d.ts +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/cjs/protocol/DeviceCommissioner.js +2 -5
- package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +3 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelMessenger.js +4 -0
- package/dist/cjs/securechannel/SecureChannelMessenger.js.map +1 -1
- package/dist/esm/action/Val.d.ts +4 -0
- package/dist/esm/action/Val.d.ts.map +1 -1
- package/dist/esm/action/Val.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts +10 -8
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +154 -82
- package/dist/esm/action/client/ClientInteraction.js.map +1 -1
- package/dist/esm/action/client/ClientSubscription.d.ts +17 -0
- package/dist/esm/action/client/ClientSubscription.d.ts.map +1 -0
- package/dist/esm/action/client/ClientSubscription.js +6 -0
- package/dist/esm/action/client/ClientSubscription.js.map +6 -0
- package/dist/esm/action/client/ClientSubscriptionHandler.d.ts +20 -0
- package/dist/esm/action/client/ClientSubscriptionHandler.d.ts.map +1 -0
- package/dist/esm/action/client/ClientSubscriptionHandler.js +97 -0
- package/dist/esm/action/client/ClientSubscriptionHandler.js.map +6 -0
- package/dist/esm/action/client/ClientSubscriptions.d.ts +45 -0
- package/dist/esm/action/client/ClientSubscriptions.d.ts.map +1 -0
- package/dist/esm/action/client/ClientSubscriptions.js +129 -0
- package/dist/esm/action/client/ClientSubscriptions.js.map +6 -0
- package/dist/esm/action/client/InputChunk.d.ts +12 -0
- package/dist/esm/action/client/InputChunk.d.ts.map +1 -0
- package/dist/esm/action/client/InputChunk.js +69 -0
- package/dist/esm/action/client/InputChunk.js.map +6 -0
- package/dist/esm/action/client/ReadScope.d.ts +26 -0
- package/dist/esm/action/client/ReadScope.d.ts.map +1 -0
- package/dist/esm/action/client/ReadScope.js +67 -0
- package/dist/esm/action/client/ReadScope.js.map +6 -0
- package/dist/esm/action/client/index.d.ts +5 -0
- package/dist/esm/action/client/index.d.ts.map +1 -1
- package/dist/esm/action/client/index.js +5 -0
- package/dist/esm/action/client/index.js.map +1 -1
- package/dist/esm/action/request/Read.d.ts +0 -4
- package/dist/esm/action/request/Read.d.ts.map +1 -1
- package/dist/esm/action/request/Read.js.map +1 -1
- package/dist/esm/action/request/Subscribe.d.ts +14 -1
- package/dist/esm/action/request/Subscribe.d.ts.map +1 -1
- package/dist/esm/action/request/Subscribe.js +2 -2
- package/dist/esm/action/request/Subscribe.js.map +1 -1
- package/dist/esm/action/response/SubscribeResult.d.ts +3 -5
- package/dist/esm/action/response/SubscribeResult.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +0 -1
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/fabric/FabricAuthority.d.ts +6 -1
- package/dist/esm/fabric/FabricAuthority.d.ts.map +1 -1
- package/dist/esm/fabric/FabricAuthority.js +25 -1
- package/dist/esm/fabric/FabricAuthority.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +8 -4
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +20 -16
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +18 -10
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/mdns/MdnsScanner.d.ts +5 -6
- package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsScanner.js.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.d.ts +1 -1
- package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
- package/dist/esm/protocol/DeviceCommissioner.js +2 -5
- package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts +3 -0
- package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelMessenger.js +4 -0
- package/dist/esm/securechannel/SecureChannelMessenger.js.map +1 -1
- package/package.json +6 -6
- package/src/action/Val.ts +5 -0
- package/src/action/client/ClientInteraction.ts +178 -90
- package/src/action/client/ClientSubscription.ts +18 -0
- package/src/action/client/ClientSubscriptionHandler.ts +137 -0
- package/src/action/client/ClientSubscriptions.ts +172 -0
- package/src/action/client/InputChunk.ts +79 -0
- package/src/action/client/ReadScope.ts +107 -0
- package/src/action/client/index.ts +5 -0
- package/src/action/request/Read.ts +0 -5
- package/src/action/request/Subscribe.ts +17 -3
- package/src/action/response/SubscribeResult.ts +3 -4
- package/src/common/FailsafeContext.ts +0 -1
- package/src/fabric/FabricAuthority.ts +29 -1
- package/src/interaction/InteractionClient.ts +8 -4
- package/src/interaction/InteractionMessenger.ts +18 -11
- package/src/mdns/MdnsScanner.ts +5 -6
- package/src/protocol/DeviceCommissioner.ts +2 -7
- package/src/securechannel/SecureChannelMessenger.ts +4 -0
package/dist/cjs/action/Val.d.ts
CHANGED
|
@@ -62,6 +62,10 @@ export declare namespace Val {
|
|
|
62
62
|
* Refresh any internal cache from the referenced container.
|
|
63
63
|
*/
|
|
64
64
|
refresh(): void;
|
|
65
|
+
/**
|
|
66
|
+
* The key used for storage of attributes and struct properties.
|
|
67
|
+
*/
|
|
68
|
+
primaryKey: "id" | "name";
|
|
65
69
|
/**
|
|
66
70
|
* The managed value that owns the reference.
|
|
67
71
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Val.d.ts","sourceRoot":"","sources":["../../../src/action/Val.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACjB;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;OAEG;IACH,KAAY,IAAI,GAAG,GAAG,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,UAAiB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;QAC1C;;WAEG;QACH,KAAK,EAAE,CAAC,CAAC;QAET;;WAEG;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErB;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QAEjC;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7C;;;;;;;WAOG;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElC;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;WAEG;QACH,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV;;WAEG;QACH,SAAS,CAAC,EAAE,GAAG,CAAC;QAEhB;;WAEG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB;IAEM,MAAM,UAAU,eAAuB,CAAC;IAE/C;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAE,SAAQ,MAAM;QACrG;;;;;;WAMG;QACH,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F;CACJ"}
|
|
1
|
+
{"version":3,"file":"Val.d.ts","sourceRoot":"","sources":["../../../src/action/Val.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACjB;;OAEG;IACH,KAAY,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzC;;OAEG;IACH,KAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEjD;;OAEG;IACH,KAAY,IAAI,GAAG,GAAG,EAAE,CAAC;IAEzB;;OAEG;IACH,KAAY,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAEvC;;OAEG;IACH,UAAiB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;QAC1C;;WAEG;QACH,KAAK,EAAE,CAAC,CAAC;QAET;;WAEG;QACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErB;;WAEG;QACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAE1B;;WAEG;QACH,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;QAEjC;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;QAE7C;;;;;;;WAOG;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;QAElC;;WAEG;QACH,OAAO,IAAI,IAAI,CAAC;QAEhB;;WAEG;QACH,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;QAE1B;;WAEG;QACH,KAAK,CAAC,EAAE,CAAC,CAAC;QAEV;;WAEG;QACH,SAAS,CAAC,EAAE,GAAG,CAAC;QAEhB;;WAEG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC;KACtB;IAEM,MAAM,UAAU,eAAuB,CAAC;IAE/C;;;OAGG;IACH,UAAiB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAE,SAAQ,MAAM;QACrG;;;;;;WAMG;QACH,CAAC,UAAU,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F;CACJ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/action/Val.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAU;AAAA,CAAV,CAAUA,SAAV;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,IAAU;AAAA,CAAV,CAAUA,SAAV;AAsFI,EAAMA,KAAA,aAAa,OAAO,YAAY;AAAA,GAtFhC;",
|
|
5
5
|
"names": ["Val"]
|
|
6
6
|
}
|
|
@@ -13,25 +13,27 @@ import { ReadResult } from "#action/response/ReadResult.js";
|
|
|
13
13
|
import { SubscribeResult } from "#action/response/SubscribeResult.js";
|
|
14
14
|
import { WriteResult } from "#action/response/WriteResult.js";
|
|
15
15
|
import { Environment, Environmental, PromiseQueue } from "#general";
|
|
16
|
-
import { SubscriptionClient } from "#interaction/SubscriptionClient.js";
|
|
17
16
|
import { ExchangeProvider } from "#protocol/ExchangeProvider.js";
|
|
18
|
-
|
|
17
|
+
import { ClientSubscriptions } from "./ClientSubscriptions.js";
|
|
18
|
+
export interface ClientInteractionContext {
|
|
19
19
|
exchanges: ExchangeProvider;
|
|
20
|
-
subscriptions:
|
|
20
|
+
subscriptions: ClientSubscriptions;
|
|
21
21
|
queue: PromiseQueue;
|
|
22
22
|
}
|
|
23
|
+
export declare const DEFAULT_MIN_INTERVAL_FLOOR_SECONDS = 1;
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
+
* Client-side implementation of the Matter protocol.
|
|
25
26
|
*/
|
|
26
27
|
export declare class ClientInteraction<SessionT extends InteractionSession = InteractionSession> implements Interactable<SessionT> {
|
|
27
28
|
#private;
|
|
28
|
-
constructor(context:
|
|
29
|
-
|
|
29
|
+
constructor(context: ClientInteractionContext);
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
get subscriptions(): ClientSubscriptions;
|
|
30
32
|
get queue(): PromiseQueue | undefined;
|
|
31
33
|
static [Environmental.create](env: Environment): ClientInteraction<InteractionSession>;
|
|
32
|
-
read(
|
|
34
|
+
read(request: Read, _session?: SessionT): ReadResult;
|
|
33
35
|
write<T extends Write>(request: T, _session?: SessionT): WriteResult<T>;
|
|
34
36
|
invoke(request: Invoke, _session?: SessionT): InvokeResult;
|
|
35
|
-
subscribe(
|
|
37
|
+
subscribe(request: Subscribe, _session?: SessionT): SubscribeResult;
|
|
36
38
|
}
|
|
37
39
|
//# sourceMappingURL=ClientInteraction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"ClientInteraction.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientInteraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAY,WAAW,EAAE,aAAa,EAAuB,YAAY,EAAE,MAAM,UAAU,CAAC;AAGnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,MAAM,WAAW,wBAAwB;IACrC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,mBAAmB,CAAC;IACnC,KAAK,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,kCAAkC,IAAI,CAAC;AAEpD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CACnF,YAAW,YAAY,CAAC,QAAQ,CAAC;;gBAQrB,OAAO,EAAE,wBAAwB;IAMvC,KAAK;IAQX,IAAI,aAAa,wBAEhB;IAED,IAAI,KAAK,6BAER;IAED,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAUvC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU;IAerD,KAAK,CAAC,CAAC,SAAS,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC;IAoCtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY;IA8D3D,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,eAAe;CAgD5E"}
|
|
@@ -18,28 +18,40 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var ClientInteraction_exports = {};
|
|
20
20
|
__export(ClientInteraction_exports, {
|
|
21
|
-
ClientInteraction: () => ClientInteraction
|
|
21
|
+
ClientInteraction: () => ClientInteraction,
|
|
22
|
+
DEFAULT_MIN_INTERVAL_FLOOR_SECONDS: () => DEFAULT_MIN_INTERVAL_FLOOR_SECONDS
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(ClientInteraction_exports);
|
|
24
25
|
var import_general = require("#general");
|
|
25
26
|
var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
|
|
26
|
-
var import_SubscriptionClient = require("#interaction/SubscriptionClient.js");
|
|
27
27
|
var import_InteractionQueue = require("#peer/InteractionQueue.js");
|
|
28
28
|
var import_ExchangeProvider = require("#protocol/ExchangeProvider.js");
|
|
29
|
+
var import_types = require("#types");
|
|
30
|
+
var import_ClientSubscriptions = require("./ClientSubscriptions.js");
|
|
31
|
+
var import_InputChunk = require("./InputChunk.js");
|
|
29
32
|
/**
|
|
30
33
|
* @license
|
|
31
34
|
* Copyright 2022-2025 Matter.js Authors
|
|
32
35
|
* SPDX-License-Identifier: Apache-2.0
|
|
33
36
|
*/
|
|
37
|
+
const DEFAULT_MIN_INTERVAL_FLOOR_SECONDS = 1;
|
|
34
38
|
class ClientInteraction {
|
|
35
39
|
#exchanges;
|
|
36
40
|
#subscriptions;
|
|
37
41
|
#queue;
|
|
42
|
+
#interactions = new import_general.BasicSet();
|
|
43
|
+
#closed = false;
|
|
38
44
|
constructor(context) {
|
|
39
45
|
this.#exchanges = context.exchanges;
|
|
40
46
|
this.#subscriptions = context.subscriptions;
|
|
41
47
|
this.#queue = context.queue;
|
|
42
48
|
}
|
|
49
|
+
async close() {
|
|
50
|
+
this.#closed = true;
|
|
51
|
+
while (this.#interactions.size) {
|
|
52
|
+
await this.#interactions.deleted;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
43
55
|
get subscriptions() {
|
|
44
56
|
return this.#subscriptions;
|
|
45
57
|
}
|
|
@@ -49,97 +61,157 @@ class ClientInteraction {
|
|
|
49
61
|
static [import_general.Environmental.create](env) {
|
|
50
62
|
const instance = new ClientInteraction({
|
|
51
63
|
exchanges: env.get(import_ExchangeProvider.ExchangeProvider),
|
|
52
|
-
subscriptions: env.get(
|
|
64
|
+
subscriptions: env.get(import_ClientSubscriptions.ClientSubscriptions),
|
|
53
65
|
queue: env.get(import_InteractionQueue.InteractionQueue)
|
|
54
66
|
});
|
|
55
67
|
env.set(ClientInteraction, instance);
|
|
56
68
|
return instance;
|
|
57
69
|
}
|
|
58
|
-
read(
|
|
59
|
-
|
|
70
|
+
async *read(request, _session) {
|
|
71
|
+
try {
|
|
72
|
+
this.#begin(request);
|
|
73
|
+
const messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
|
|
74
|
+
await messenger.sendReadRequest(request);
|
|
75
|
+
for await (const report of messenger.readDataReports()) {
|
|
76
|
+
yield (0, import_InputChunk.InputChunk)(report);
|
|
77
|
+
}
|
|
78
|
+
} finally {
|
|
79
|
+
this.#end(request);
|
|
80
|
+
}
|
|
60
81
|
}
|
|
61
82
|
async write(request, _session) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
let messenger;
|
|
84
|
+
try {
|
|
85
|
+
this.#begin(request);
|
|
86
|
+
messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
|
|
87
|
+
const response = await messenger.sendWriteCommand(request);
|
|
88
|
+
if (request.suppressResponse) {
|
|
89
|
+
return void 0;
|
|
90
|
+
}
|
|
91
|
+
if (!response || !response.writeResponses?.length) {
|
|
92
|
+
return new Array();
|
|
93
|
+
} else {
|
|
94
|
+
return response.writeResponses.map(
|
|
95
|
+
({
|
|
96
|
+
path: { nodeId, endpointId, clusterId, attributeId, listIndex },
|
|
97
|
+
status: { status, clusterStatus }
|
|
98
|
+
}) => ({
|
|
99
|
+
kind: "attr-status",
|
|
100
|
+
path: {
|
|
101
|
+
nodeId,
|
|
102
|
+
endpointId,
|
|
103
|
+
clusterId,
|
|
104
|
+
attributeId,
|
|
105
|
+
listIndex
|
|
106
|
+
},
|
|
107
|
+
status,
|
|
108
|
+
clusterStatus
|
|
109
|
+
})
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
} finally {
|
|
113
|
+
await messenger?.close();
|
|
114
|
+
this.#end(request);
|
|
87
115
|
}
|
|
88
116
|
}
|
|
89
117
|
async *invoke(request, _session) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
118
|
+
let messenger;
|
|
119
|
+
try {
|
|
120
|
+
this.#begin(request);
|
|
121
|
+
messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
|
|
122
|
+
const result = await messenger.sendInvokeCommand(request);
|
|
123
|
+
if (!request.suppressResponse) {
|
|
124
|
+
if (result && result.invokeResponses?.length) {
|
|
125
|
+
const chunk = result.invokeResponses.map((response) => {
|
|
126
|
+
if (response.command !== void 0) {
|
|
127
|
+
const {
|
|
128
|
+
commandPath: { endpointId, clusterId, commandId },
|
|
129
|
+
commandRef,
|
|
130
|
+
commandFields
|
|
131
|
+
} = response.command;
|
|
132
|
+
const res = {
|
|
133
|
+
kind: "cmd-response",
|
|
134
|
+
path: {
|
|
135
|
+
endpointId,
|
|
136
|
+
clusterId,
|
|
137
|
+
commandId
|
|
138
|
+
},
|
|
139
|
+
commandRef,
|
|
140
|
+
data: commandFields
|
|
141
|
+
// TODO add decoding
|
|
142
|
+
};
|
|
143
|
+
return res;
|
|
144
|
+
} else if (response.status !== void 0) {
|
|
145
|
+
const {
|
|
146
|
+
commandPath: { endpointId, clusterId, commandId },
|
|
147
|
+
commandRef,
|
|
148
|
+
status: { status, clusterStatus }
|
|
149
|
+
} = response.status;
|
|
150
|
+
const res = {
|
|
151
|
+
kind: "cmd-status",
|
|
152
|
+
path: {
|
|
153
|
+
endpointId,
|
|
154
|
+
clusterId,
|
|
155
|
+
commandId
|
|
156
|
+
},
|
|
157
|
+
commandRef,
|
|
158
|
+
status,
|
|
159
|
+
clusterStatus
|
|
160
|
+
};
|
|
161
|
+
return res;
|
|
162
|
+
} else {
|
|
163
|
+
return void 0;
|
|
164
|
+
}
|
|
165
|
+
}).filter((r) => r !== void 0);
|
|
166
|
+
yield chunk;
|
|
167
|
+
} else {
|
|
168
|
+
yield [];
|
|
169
|
+
}
|
|
138
170
|
}
|
|
171
|
+
} finally {
|
|
172
|
+
await messenger?.close();
|
|
173
|
+
this.#end(request);
|
|
139
174
|
}
|
|
140
175
|
}
|
|
141
|
-
subscribe(
|
|
142
|
-
|
|
176
|
+
async subscribe(request, _session) {
|
|
177
|
+
let messenger;
|
|
178
|
+
try {
|
|
179
|
+
this.#begin(request);
|
|
180
|
+
messenger = await import_InteractionMessenger.InteractionClientMessenger.create(this.#exchanges);
|
|
181
|
+
await messenger.sendSubscribeRequest({
|
|
182
|
+
...request,
|
|
183
|
+
minIntervalFloorSeconds: DEFAULT_MIN_INTERVAL_FLOOR_SECONDS,
|
|
184
|
+
maxIntervalCeilingSeconds: DEFAULT_MIN_INTERVAL_FLOOR_SECONDS
|
|
185
|
+
});
|
|
186
|
+
await this.#handleSubscriptionResponse(request, readChunks(messenger));
|
|
187
|
+
const responseMessage = await messenger.nextMessage(import_InteractionMessenger.MessageType.SubscribeResponse);
|
|
188
|
+
const response = import_types.TlvSubscribeResponse.decode(responseMessage.payload);
|
|
189
|
+
return this.#subscriptions.add(request, response);
|
|
190
|
+
} finally {
|
|
191
|
+
await messenger?.close();
|
|
192
|
+
this.#end(request);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async #handleSubscriptionResponse(request, result) {
|
|
196
|
+
if (request.updated) {
|
|
197
|
+
await request.updated(result);
|
|
198
|
+
} else {
|
|
199
|
+
for await (const _chunk of result) ;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
#begin(request) {
|
|
203
|
+
if (this.#closed) {
|
|
204
|
+
throw new import_general.ImplementationError("Client interaction unavailable after close");
|
|
205
|
+
}
|
|
206
|
+
this.#interactions.add(request);
|
|
207
|
+
}
|
|
208
|
+
#end(request) {
|
|
209
|
+
this.#interactions.delete(request);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
async function* readChunks(messenger) {
|
|
213
|
+
for await (const report of messenger.readDataReports()) {
|
|
214
|
+
yield (0, import_InputChunk.InputChunk)(report);
|
|
143
215
|
}
|
|
144
216
|
}
|
|
145
217
|
//# sourceMappingURL=ClientInteraction.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/client/ClientInteraction.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,qBAAwF;AACxF,kCAAwD;AACxD,8BAAiC;AACjC,8BAAiC;AACjC,mBAAqC;AACrC,iCAAoC;AACpC,wBAA2B;AArB3B;AAAA;AAAA;AAAA;AAAA;AA6BO,MAAM,qCAAqC;AAK3C,MAAM,kBAEb;AAAA,EACa;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,IAAI,wBAA4C;AAAA,EACzE,UAAU;AAAA,EAEV,YAAY,SAAmC;AAC3C,SAAK,aAAa,QAAQ;AAC1B,SAAK,iBAAiB,QAAQ;AAC9B,SAAK,SAAS,QAAQ;AAAA,EAC1B;AAAA,EAEA,MAAM,QAAQ;AACV,SAAK,UAAU;AAEf,WAAO,KAAK,cAAc,MAAM;AAC5B,YAAM,KAAK,cAAc;AAAA,IAC7B;AAAA,EACJ;AAAA,EAEA,IAAI,gBAAgB;AAChB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAI,QAAQ;AACR,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,QAAQ,6BAAc,MAAM,EAAE,KAAkB;AAC5C,UAAM,WAAW,IAAI,kBAAkB;AAAA,MACnC,WAAW,IAAI,IAAI,wCAAgB;AAAA,MACnC,eAAe,IAAI,IAAI,8CAAmB;AAAA,MAC1C,OAAO,IAAI,IAAI,wCAAgB;AAAA,IACnC,CAAC;AACD,QAAI,IAAI,mBAAmB,QAAQ;AACnC,WAAO;AAAA,EACX;AAAA,EAEA,OAAO,KAAK,SAAe,UAAiC;AACxD,QAAI;AACA,WAAK,OAAO,OAAO;AACnB,YAAM,YAAY,MAAM,uDAA2B,OAAO,KAAK,UAAU;AAEzE,YAAM,UAAU,gBAAgB,OAAO;AAEvC,uBAAiB,UAAU,UAAU,gBAAgB,GAAG;AACpD,kBAAM,8BAAW,MAAM;AAAA,MAC3B;AAAA,IACJ,UAAE;AACE,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,MAAM,MAAuB,SAAY,UAAqC;AAC1E,QAAI;AACJ,QAAI;AACA,WAAK,OAAO,OAAO;AACnB,kBAAY,MAAM,uDAA2B,OAAO,KAAK,UAAU;AACnE,YAAM,WAAW,MAAM,UAAU,iBAAiB,OAAO;AACzD,UAAI,QAAQ,kBAAkB;AAC1B,eAAO;AAAA,MACX;AACA,UAAI,CAAC,YAAY,CAAC,SAAS,gBAAgB,QAAQ;AAC/C,eAAO,IAAI,MAAmC;AAAA,MAClD,OAAO;AACH,eAAO,SAAS,eAAe;AAAA,UAC3B,CAAC;AAAA,YACG,MAAM,EAAE,QAAQ,YAAY,WAAW,aAAa,UAAU;AAAA,YAC9D,QAAQ,EAAE,QAAQ,cAAc;AAAA,UACpC,OAAO;AAAA,YACH,MAAM;AAAA,YACN,MAAM;AAAA,cACF;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,OAAO,OAAO,SAAiB,UAAmC;AAC9D,QAAI;AACJ,QAAI;AACA,WAAK,OAAO,OAAO;AACnB,kBAAY,MAAM,uDAA2B,OAAO,KAAK,UAAU;AACnE,YAAM,SAAS,MAAM,UAAU,kBAAkB,OAAO;AACxD,UAAI,CAAC,QAAQ,kBAAkB;AAC3B,YAAI,UAAU,OAAO,iBAAiB,QAAQ;AAC1C,gBAAM,QAA4B,OAAO,gBACpC,IAAI,cAAY;AACb,gBAAI,SAAS,YAAY,QAAW;AAChC,oBAAM;AAAA,gBACF,aAAa,EAAE,YAAY,WAAW,UAAU;AAAA,gBAChD;AAAA,gBACA;AAAA,cACJ,IAAI,SAAS;AACb,oBAAM,MAAoC;AAAA,gBACtC,MAAM;AAAA,gBACN,MAAM;AAAA,kBACF;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA,MAAM;AAAA;AAAA,cACV;AACA,qBAAO;AAAA,YACX,WAAW,SAAS,WAAW,QAAW;AACtC,oBAAM;AAAA,gBACF,aAAa,EAAE,YAAY,WAAW,UAAU;AAAA,gBAChD;AAAA,gBACA,QAAQ,EAAE,QAAQ,cAAc;AAAA,cACpC,IAAI,SAAS;AACb,oBAAM,MAAkC;AAAA,gBACpC,MAAM;AAAA,gBACN,MAAM;AAAA,kBACF;AAAA,kBACA;AAAA,kBACA;AAAA,gBACJ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACJ;AACA,qBAAO;AAAA,YACX,OAAO;AAEH,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC,EACA,OAAO,OAAK,MAAM,MAAS;AAChC,gBAAM;AAAA,QACV,OAAO;AACH,gBAAM,CAAC;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,MAAM,UAAU,SAAoB,UAAsC;AACtE,QAAI;AACJ,QAAI;AACA,WAAK,OAAO,OAAO;AAEnB,kBAAY,MAAM,uDAA2B,OAAO,KAAK,UAAU;AAEnE,YAAM,UAAU,qBAAqB;AAAA,QACjC,GAAG;AAAA,QACH,yBAAyB;AAAA,QACzB,2BAA2B;AAAA,MAC/B,CAAC;AAED,YAAM,KAAK,4BAA4B,SAAS,WAAW,SAAS,CAAC;AAErE,YAAM,kBAAkB,MAAM,UAAU,YAAY,wCAAY,iBAAiB;AACjF,YAAM,WAAW,kCAAqB,OAAO,gBAAgB,OAAO;AAEpE,aAAO,KAAK,eAAe,IAAI,SAAS,QAAQ;AAAA,IACpD,UAAE;AACE,YAAM,WAAW,MAAM;AACvB,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,MAAM,4BAA4B,SAAoB,QAAoB;AACtE,QAAI,QAAQ,SAAS;AACjB,YAAM,QAAQ,QAAQ,MAAM;AAAA,IAChC,OAAO;AAMH,uBAAiB,UAAU,OAAO;AAAA,IACtC;AAAA,EACJ;AAAA,EAEA,OAAO,SAA4C;AAC/C,QAAI,KAAK,SAAS;AACd,YAAM,IAAI,mCAAoB,4CAA4C;AAAA,IAC9E;AACA,SAAK,cAAc,IAAI,OAAO;AAAA,EAClC;AAAA,EAEA,KAAK,SAA4C;AAC7C,SAAK,cAAc,OAAO,OAAO;AAAA,EACrC;AACJ;AAEA,gBAAgB,WAAW,WAAuC;AAC9D,mBAAiB,UAAU,UAAU,gBAAgB,GAAG;AACpD,cAAM,8BAAW,MAAM;AAAA,EAC3B;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Subscribe } from "#action/request/Subscribe.js";
|
|
7
|
+
import { ActiveSubscription } from "#action/response/SubscribeResult.js";
|
|
8
|
+
/**
|
|
9
|
+
* The client view of an established Matter subscription.
|
|
10
|
+
*/
|
|
11
|
+
export interface ClientSubscription extends ActiveSubscription {
|
|
12
|
+
request: Subscribe;
|
|
13
|
+
timeoutAtMs?: number;
|
|
14
|
+
isClosed: boolean;
|
|
15
|
+
isReading: boolean;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ClientSubscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientSubscription.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscription.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC1D,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var ClientSubscription_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(ClientSubscription_exports);
|
|
17
|
+
/**
|
|
18
|
+
* @license
|
|
19
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
20
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
*/
|
|
22
|
+
//# sourceMappingURL=ClientSubscription.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MessageExchange } from "#protocol/MessageExchange.js";
|
|
7
|
+
import { ProtocolHandler } from "#protocol/ProtocolHandler.js";
|
|
8
|
+
import { ClientSubscriptions } from "./ClientSubscriptions.js";
|
|
9
|
+
/**
|
|
10
|
+
* A protocol handler that informs {@link ClientSubscriptions} of new exchanges.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ClientSubscriptionHandler implements ProtocolHandler {
|
|
13
|
+
#private;
|
|
14
|
+
id: number;
|
|
15
|
+
requiresSecureSession: boolean;
|
|
16
|
+
constructor(subscriptions: ClientSubscriptions);
|
|
17
|
+
onNewExchange(exchange: MessageExchange): Promise<void>;
|
|
18
|
+
close(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ClientSubscriptionHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientSubscriptionHandler.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptionHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D;;GAEG;AACH,qBAAa,yBAA0B,YAAW,eAAe;;IAC7D,EAAE,SAA2B;IAC7B,qBAAqB,UAAQ;gBAIjB,aAAa,EAAE,mBAAmB;IAIxC,aAAa,CAAC,QAAQ,EAAE,eAAe;IAuDvC,KAAK;CACd"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var ClientSubscriptionHandler_exports = {};
|
|
20
|
+
__export(ClientSubscriptionHandler_exports, {
|
|
21
|
+
ClientSubscriptionHandler: () => ClientSubscriptionHandler
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ClientSubscriptionHandler_exports);
|
|
24
|
+
var import_DecodedDataReport = require("#interaction/DecodedDataReport.js");
|
|
25
|
+
var import_InteractionMessenger = require("#interaction/InteractionMessenger.js");
|
|
26
|
+
var import_types = require("#types");
|
|
27
|
+
var import_general = require("@matter/general");
|
|
28
|
+
var import_InputChunk = require("./InputChunk.js");
|
|
29
|
+
/**
|
|
30
|
+
* @license
|
|
31
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
32
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
33
|
+
*/
|
|
34
|
+
const logger = import_general.Logger.get("ClientSubscriptionHandler");
|
|
35
|
+
class ClientSubscriptionHandler {
|
|
36
|
+
id = import_types.INTERACTION_PROTOCOL_ID;
|
|
37
|
+
requiresSecureSession = true;
|
|
38
|
+
#subscriptions;
|
|
39
|
+
constructor(subscriptions) {
|
|
40
|
+
this.#subscriptions = subscriptions;
|
|
41
|
+
}
|
|
42
|
+
async onNewExchange(exchange) {
|
|
43
|
+
const messenger = new import_InteractionMessenger.IncomingInteractionClientMessenger(exchange);
|
|
44
|
+
const reports = messenger.readDataReports();
|
|
45
|
+
const initialIteration = await reports.next();
|
|
46
|
+
if (initialIteration.done) {
|
|
47
|
+
throw new import_general.InternalError("Exchange initiated with no initial message");
|
|
48
|
+
}
|
|
49
|
+
const initialReport = initialIteration.value;
|
|
50
|
+
const { subscriptionId } = initialReport;
|
|
51
|
+
if (subscriptionId === void 0) {
|
|
52
|
+
logger.debug("Ignoring unsolicited data report with no subscription ID");
|
|
53
|
+
await sendInvalid(messenger, void 0);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const subscription = this.#subscriptions.get(subscriptionId);
|
|
57
|
+
if (subscription === void 0) {
|
|
58
|
+
logger.debug("Ignoring data report for unknown subscription ID", import_general.Diagnostic.strong(subscriptionId));
|
|
59
|
+
await sendInvalid(messenger, subscriptionId);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!initialReport.attributeReports?.length && !initialReport.eventReports?.length) {
|
|
63
|
+
subscription.timeoutAtMs = void 0;
|
|
64
|
+
this.#subscriptions.resetTimer();
|
|
65
|
+
await exchange.close();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
subscription.isReading = true;
|
|
70
|
+
if (subscription.request.updated) {
|
|
71
|
+
await subscription.request.updated(processReports(initialReport, reports, messenger));
|
|
72
|
+
} else {
|
|
73
|
+
for await (const _chunk of reports) ;
|
|
74
|
+
}
|
|
75
|
+
} finally {
|
|
76
|
+
subscription.isReading = false;
|
|
77
|
+
subscription.timeoutAtMs = void 0;
|
|
78
|
+
this.#subscriptions.resetTimer();
|
|
79
|
+
await exchange.close();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async close() {
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function sendInvalid(messenger, subscriptionId) {
|
|
86
|
+
await messenger.sendStatus(import_types.Status.InvalidSubscription, {
|
|
87
|
+
multipleMessageInteraction: true,
|
|
88
|
+
logContext: {
|
|
89
|
+
subId: subscriptionId
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
await messenger.close();
|
|
93
|
+
}
|
|
94
|
+
async function* processReports(initialReport, otherReports, messenger) {
|
|
95
|
+
yield (0, import_InputChunk.InputChunk)(initialReport);
|
|
96
|
+
const { subscriptionId } = initialReport;
|
|
97
|
+
for await (const report of otherReports) {
|
|
98
|
+
const decoded = (0, import_DecodedDataReport.DecodedDataReport)(report);
|
|
99
|
+
if (decoded.subscriptionId === void 0) {
|
|
100
|
+
logger.debug(
|
|
101
|
+
"Ignoring data report for incorrect subscription id",
|
|
102
|
+
import_general.Diagnostic.strong(decoded.subscriptionId)
|
|
103
|
+
);
|
|
104
|
+
await sendInvalid(messenger, decoded.subscriptionId);
|
|
105
|
+
}
|
|
106
|
+
if (decoded.subscriptionId !== subscriptionId) {
|
|
107
|
+
logger.debug(
|
|
108
|
+
"Ignoring data report for incorrect subscription id",
|
|
109
|
+
import_general.Diagnostic.strong(decoded.subscriptionId)
|
|
110
|
+
);
|
|
111
|
+
await sendInvalid(messenger, decoded.subscriptionId);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
yield (0, import_InputChunk.InputChunk)(report);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=ClientSubscriptionHandler.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/action/client/ClientSubscriptionHandler.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,+BAAkC;AAClC,kCAAmD;AAInD,mBAA4D;AAC5D,qBAAkD;AAElD,wBAA2B;AAf3B;AAAA;AAAA;AAAA;AAAA;AAiBA,MAAM,SAAS,sBAAO,IAAI,2BAA2B;AAK9C,MAAM,0BAAqD;AAAA,EAC9D,KAAK;AAAA,EACL,wBAAwB;AAAA,EAExB;AAAA,EAEA,YAAY,eAAoC;AAC5C,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEA,MAAM,cAAc,UAA2B;AAC3C,UAAM,YAAY,IAAI,+DAAmC,QAAQ;AAEjE,UAAM,UAAU,UAAU,gBAAgB;AAE1C,UAAM,mBAAmB,MAAM,QAAQ,KAAK;AAC5C,QAAI,iBAAiB,MAAM;AACvB,YAAM,IAAI,6BAAc,4CAA4C;AAAA,IACxE;AACA,UAAM,gBAAgB,iBAAiB;AAGvC,UAAM,EAAE,eAAe,IAAI;AAC3B,QAAI,mBAAmB,QAAW;AAC9B,aAAO,MAAM,0DAA0D;AACvE,YAAM,YAAY,WAAW,MAAS;AACtC;AAAA,IACJ;AAGA,UAAM,eAAe,KAAK,eAAe,IAAI,cAAc;AAC3D,QAAI,iBAAiB,QAAW;AAC5B,aAAO,MAAM,oDAAoD,0BAAW,OAAO,cAAc,CAAC;AAClG,YAAM,YAAY,WAAW,cAAc;AAC3C;AAAA,IACJ;AAGA,QAAI,CAAC,cAAc,kBAAkB,UAAU,CAAC,cAAc,cAAc,QAAQ;AAChF,mBAAa,cAAc;AAC3B,WAAK,eAAe,WAAW;AAC/B,YAAM,SAAS,MAAM;AACrB;AAAA,IACJ;AAGA,QAAI;AACA,mBAAa,YAAY;AAEzB,UAAI,aAAa,QAAQ,SAAS;AAC9B,cAAM,aAAa,QAAQ,QAAQ,eAAe,eAAe,SAAS,SAAS,CAAC;AAAA,MACxF,OAAO;AAIH,yBAAiB,UAAU,QAAQ;AAAA,MACvC;AAAA,IACJ,UAAE;AACE,mBAAa,YAAY;AACzB,mBAAa,cAAc;AAC3B,WAAK,eAAe,WAAW;AAC/B,YAAM,SAAS,MAAM;AAAA,IACzB;AAAA,EACJ;AAAA,EAEA,MAAM,QAAQ;AAAA,EAAC;AACnB;AAEA,eAAe,YAAY,WAA+C,gBAAiC;AACvG,QAAM,UAAU,WAAW,oBAAO,qBAAqB;AAAA,IACnD,4BAA4B;AAAA,IAC5B,YAAY;AAAA,MACR,OAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,QAAM,UAAU,MAAM;AAC1B;AAOA,gBAAgB,eACZ,eACA,cACA,WACU;AACV,YAAM,8BAAW,aAAa;AAE9B,QAAM,EAAE,eAAe,IAAI;AAE3B,mBAAiB,UAAU,cAAc;AACrC,UAAM,cAAU,4CAAkB,MAAM;AAExC,QAAI,QAAQ,mBAAmB,QAAW;AACtC,aAAO;AAAA,QACH;AAAA,QACA,0BAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AAAA,IACvD;AAEA,QAAI,QAAQ,mBAAmB,gBAAgB;AAC3C,aAAO;AAAA,QACH;AAAA,QACA,0BAAW,OAAO,QAAQ,cAAc;AAAA,MAC5C;AACA,YAAM,YAAY,WAAW,QAAQ,cAAc;AACnD;AAAA,IACJ;AAEA,cAAM,8BAAW,MAAM;AAAA,EAC3B;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Subscribe } from "#action/request/Subscribe.js";
|
|
7
|
+
import { ReadResult } from "#action/response/ReadResult.js";
|
|
8
|
+
import { ActiveSubscription } from "#action/response/SubscribeResult.js";
|
|
9
|
+
import { Environment, Environmental } from "#general";
|
|
10
|
+
import { SubscriptionId } from "#interaction/Subscription.js";
|
|
11
|
+
import { SubscribeResponse } from "#types";
|
|
12
|
+
import { ClientSubscription } from "./ClientSubscription.js";
|
|
13
|
+
/**
|
|
14
|
+
* A managed set of {@link ClientSubscription} instances.
|
|
15
|
+
*/
|
|
16
|
+
export declare class ClientSubscriptions {
|
|
17
|
+
#private;
|
|
18
|
+
static [Environmental.create](env: Environment): ClientSubscriptions;
|
|
19
|
+
/**
|
|
20
|
+
* Register an active subscription.
|
|
21
|
+
*/
|
|
22
|
+
add(request: Subscribe, response: SubscribeResponse): ActiveSubscription;
|
|
23
|
+
/**
|
|
24
|
+
* Retrieve a subscription by ID.
|
|
25
|
+
*/
|
|
26
|
+
get(id: SubscriptionId): ClientSubscription | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Iterate over active subscriptions.
|
|
29
|
+
*/
|
|
30
|
+
[Symbol.iterator](): SetIterator<ClientSubscription>;
|
|
31
|
+
/**
|
|
32
|
+
* Terminate all subscriptions.
|
|
33
|
+
*/
|
|
34
|
+
close(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Restart the timeout timer for the current set of active subscriptions.
|
|
37
|
+
*/
|
|
38
|
+
resetTimer(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare namespace ClientSubscriptions {
|
|
41
|
+
interface Listener {
|
|
42
|
+
(reports: AsyncIterable<ReadResult.Chunk>): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ClientSubscriptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientSubscriptions.d.ts","sourceRoot":"","sources":["../../../../src/action/client/ClientSubscriptions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAIH,WAAW,EACX,aAAa,EAKhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D;;GAEG;AACH,qBAAa,mBAAmB;;IAK5B,MAAM,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW;IAM9C;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB;IAgBxE;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,cAAc;IAItB;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC;IAIjB;;OAEG;IACG,KAAK;IAUX;;OAEG;IACH,UAAU;CAwEb;AAMD,yBAAiB,mBAAmB,CAAC;IACjC,UAAiB,QAAQ;QACrB,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7D;CACJ"}
|