@matter/protocol 0.13.1-alpha.0-20250515-a4c61c546 → 0.13.1-alpha.0-20250517-99a1e848a
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/Interactable.d.ts +5 -1
- package/dist/cjs/action/Interactable.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.d.ts +3 -4
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +28 -16
- package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
- package/dist/cjs/action/protocols.d.ts +7 -2
- package/dist/cjs/action/protocols.d.ts.map +1 -1
- package/dist/cjs/action/request/Write.d.ts +43 -2
- package/dist/cjs/action/request/Write.d.ts.map +1 -1
- package/dist/cjs/action/request/Write.js +74 -0
- package/dist/cjs/action/request/Write.js.map +2 -2
- package/dist/cjs/action/response/InvokeResult.d.ts +1 -2
- package/dist/cjs/action/response/InvokeResult.d.ts.map +1 -1
- package/dist/cjs/action/response/ReadResult.d.ts +5 -14
- package/dist/cjs/action/response/ReadResult.d.ts.map +1 -1
- package/dist/cjs/action/response/WriteResult.d.ts +19 -5
- package/dist/cjs/action/response/WriteResult.d.ts.map +1 -1
- package/dist/cjs/action/server/AccessControl.js +4 -4
- package/dist/cjs/action/server/AccessControl.js.map +1 -1
- package/dist/cjs/action/server/{AttributeResponse.d.ts → AttributeReadResponse.d.ts} +4 -4
- package/dist/cjs/action/server/AttributeReadResponse.d.ts.map +1 -0
- package/dist/cjs/action/server/{AttributeResponse.js → AttributeReadResponse.js} +12 -12
- package/dist/cjs/action/server/{AttributeResponse.js.map → AttributeReadResponse.js.map} +2 -2
- package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts +4 -4
- package/dist/cjs/action/server/AttributeSubscriptionResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/AttributeSubscriptionResponse.js +2 -2
- package/dist/cjs/action/server/AttributeSubscriptionResponse.js.map +1 -1
- package/dist/cjs/action/server/AttributeWriteResponse.d.ts +28 -0
- package/dist/cjs/action/server/AttributeWriteResponse.d.ts.map +1 -0
- package/dist/cjs/action/server/AttributeWriteResponse.js +349 -0
- package/dist/cjs/action/server/AttributeWriteResponse.js.map +6 -0
- package/dist/cjs/action/server/DataResponse.d.ts +4 -3
- package/dist/cjs/action/server/DataResponse.d.ts.map +1 -1
- package/dist/cjs/action/server/DataResponse.js +1 -1
- package/dist/cjs/action/server/DataResponse.js.map +1 -1
- package/dist/cjs/action/server/{EventResponse.d.ts → EventReadResponse.d.ts} +4 -4
- package/dist/cjs/action/server/EventReadResponse.d.ts.map +1 -0
- package/dist/cjs/action/server/{EventResponse.js → EventReadResponse.js} +8 -8
- package/dist/cjs/action/server/EventReadResponse.js.map +6 -0
- package/dist/cjs/action/server/ServerInteraction.d.ts +3 -4
- package/dist/cjs/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/cjs/action/server/ServerInteraction.js +12 -10
- package/dist/cjs/action/server/ServerInteraction.js.map +1 -1
- package/dist/cjs/action/server/index.d.ts +3 -2
- package/dist/cjs/action/server/index.d.ts.map +1 -1
- package/dist/cjs/action/server/index.js +3 -2
- package/dist/cjs/action/server/index.js.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +12 -1
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +8 -3
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/action/Interactable.d.ts +5 -1
- package/dist/esm/action/Interactable.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts +3 -4
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +29 -17
- package/dist/esm/action/client/ClientInteraction.js.map +1 -1
- package/dist/esm/action/protocols.d.ts +7 -2
- package/dist/esm/action/protocols.d.ts.map +1 -1
- package/dist/esm/action/request/Write.d.ts +43 -2
- package/dist/esm/action/request/Write.d.ts.map +1 -1
- package/dist/esm/action/request/Write.js +70 -0
- package/dist/esm/action/request/Write.js.map +2 -2
- package/dist/esm/action/response/InvokeResult.d.ts +1 -2
- package/dist/esm/action/response/InvokeResult.d.ts.map +1 -1
- package/dist/esm/action/response/ReadResult.d.ts +5 -14
- package/dist/esm/action/response/ReadResult.d.ts.map +1 -1
- package/dist/esm/action/response/WriteResult.d.ts +19 -5
- package/dist/esm/action/response/WriteResult.d.ts.map +1 -1
- package/dist/esm/action/server/AccessControl.js +4 -4
- package/dist/esm/action/server/AccessControl.js.map +1 -1
- package/dist/esm/action/server/{AttributeResponse.d.ts → AttributeReadResponse.d.ts} +4 -4
- package/dist/esm/action/server/AttributeReadResponse.d.ts.map +1 -0
- package/dist/esm/action/server/{AttributeResponse.js → AttributeReadResponse.js} +9 -9
- package/dist/esm/action/server/{AttributeResponse.js.map → AttributeReadResponse.js.map} +2 -2
- package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts +4 -4
- package/dist/esm/action/server/AttributeSubscriptionResponse.d.ts.map +1 -1
- package/dist/esm/action/server/AttributeSubscriptionResponse.js +2 -2
- package/dist/esm/action/server/AttributeSubscriptionResponse.js.map +1 -1
- package/dist/esm/action/server/AttributeWriteResponse.d.ts +28 -0
- package/dist/esm/action/server/AttributeWriteResponse.d.ts.map +1 -0
- package/dist/esm/action/server/AttributeWriteResponse.js +335 -0
- package/dist/esm/action/server/AttributeWriteResponse.js.map +6 -0
- package/dist/esm/action/server/DataResponse.d.ts +4 -3
- package/dist/esm/action/server/DataResponse.d.ts.map +1 -1
- package/dist/esm/action/server/DataResponse.js +1 -1
- package/dist/esm/action/server/DataResponse.js.map +1 -1
- package/dist/esm/action/server/{EventResponse.d.ts → EventReadResponse.d.ts} +4 -4
- package/dist/esm/action/server/EventReadResponse.d.ts.map +1 -0
- package/dist/esm/action/server/{EventResponse.js → EventReadResponse.js} +5 -5
- package/dist/esm/action/server/EventReadResponse.js.map +6 -0
- package/dist/esm/action/server/ServerInteraction.d.ts +3 -4
- package/dist/esm/action/server/ServerInteraction.d.ts.map +1 -1
- package/dist/esm/action/server/ServerInteraction.js +12 -10
- package/dist/esm/action/server/ServerInteraction.js.map +1 -1
- package/dist/esm/action/server/index.d.ts +3 -2
- package/dist/esm/action/server/index.d.ts.map +1 -1
- package/dist/esm/action/server/index.js +3 -2
- package/dist/esm/action/server/index.js.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +12 -1
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +8 -3
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/package.json +6 -6
- package/src/action/Interactable.ts +6 -1
- package/src/action/client/ClientInteraction.ts +31 -23
- package/src/action/protocols.ts +8 -2
- package/src/action/request/Write.ts +127 -4
- package/src/action/response/InvokeResult.ts +1 -2
- package/src/action/response/ReadResult.ts +5 -22
- package/src/action/response/WriteResult.ts +21 -5
- package/src/action/server/AccessControl.ts +4 -4
- package/src/action/server/{AttributeResponse.ts → AttributeReadResponse.ts} +14 -13
- package/src/action/server/AttributeSubscriptionResponse.ts +5 -5
- package/src/action/server/AttributeWriteResponse.ts +437 -0
- package/src/action/server/DataResponse.ts +5 -4
- package/src/action/server/{EventResponse.ts → EventReadResponse.ts} +6 -5
- package/src/action/server/ServerInteraction.ts +16 -14
- package/src/action/server/index.ts +3 -2
- package/src/interaction/InteractionClient.ts +20 -1
- package/src/interaction/InteractionMessenger.ts +8 -3
- package/dist/cjs/action/server/AttributeResponse.d.ts.map +0 -1
- package/dist/cjs/action/server/EventResponse.d.ts.map +0 -1
- package/dist/cjs/action/server/EventResponse.js.map +0 -6
- package/dist/esm/action/server/AttributeResponse.d.ts.map +0 -1
- package/dist/esm/action/server/EventResponse.d.ts.map +0 -1
- package/dist/esm/action/server/EventResponse.js.map +0 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/action/server/
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
3
|
+
"sources": ["../../../../src/action/server/AttributeReadResponse.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["endpoint"]
|
|
6
6
|
}
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Copyright 2022-2025 Project CHIP Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { InteractionSession } from "#action/index.js";
|
|
6
7
|
import { AttributeTypeProtocol, ClusterProtocol, EndpointProtocol, NodeProtocol } from "#action/protocols.js";
|
|
7
8
|
import { ReadResult } from "#action/response/ReadResult.js";
|
|
8
9
|
import { AttributeId, AttributePath, ClusterId, EndpointNumber } from "#types";
|
|
9
|
-
import {
|
|
10
|
-
import { AttributeResponse } from "./AttributeResponse.js";
|
|
10
|
+
import { AttributeReadResponse } from "./AttributeReadResponse.js";
|
|
11
11
|
type ClusterFilter = {
|
|
12
12
|
[clusterId: ClusterId]: Set<AttributeId>;
|
|
13
13
|
};
|
|
@@ -15,10 +15,10 @@ export type AttributeResponseFilter = {
|
|
|
15
15
|
[endpointId: EndpointNumber]: ClusterFilter;
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
|
-
* AttributeSubscriptionResponse is a specialized version of
|
|
18
|
+
* AttributeSubscriptionResponse is a specialized version of AttributeReadResponse that processes a read/subscribe request
|
|
19
19
|
* with a filter applied to the attributes. Only the attributes that match the filter will be processed.
|
|
20
20
|
*/
|
|
21
|
-
export declare class AttributeSubscriptionResponse<SessionT extends
|
|
21
|
+
export declare class AttributeSubscriptionResponse<SessionT extends InteractionSession = InteractionSession> extends AttributeReadResponse<SessionT> {
|
|
22
22
|
#private;
|
|
23
23
|
constructor(node: NodeProtocol, session: SessionT, filter: AttributeResponseFilter);
|
|
24
24
|
get filter(): AttributeResponseFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeSubscriptionResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/AttributeSubscriptionResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AttributeSubscriptionResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/AttributeSubscriptionResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,KAAK,aAAa,GAAG;IACjB,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;CAC5C,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG;IAClC,CAAC,UAAU,EAAE,cAAc,GAAG,aAAa,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,qBAAa,6BAA6B,CACtC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CAC1D,SAAQ,qBAAqB,CAAC,QAAQ,CAAC;;gBAKzB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB;IAKlF,IAAI,MAAM,4BAET;IAED,wFAAwF;IACxF,SAAS,KAAK,qBAAqB,kBAKlC;IAED,uFAAuF;IACvF,SAAS,KAAK,oBAAoB,gBAKjC;cAEkB,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,qBAAqB;cAQjD,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa;cAQxE,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa;cAQpE,wBAAwB,CAAC,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,aAAa;cAO9E,SAAS;CAG/B"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { InternalError } from "#general";
|
|
7
|
-
import {
|
|
8
|
-
class AttributeSubscriptionResponse extends
|
|
7
|
+
import { AttributeReadResponse } from "./AttributeReadResponse.js";
|
|
8
|
+
class AttributeSubscriptionResponse extends AttributeReadResponse {
|
|
9
9
|
#filter;
|
|
10
10
|
#currentEndpointFilter;
|
|
11
11
|
#currentClusterFilter;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/server/AttributeSubscriptionResponse.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,qBAAqB;AAE9B,SAAS,6BAA6B;AAa/B,MAAM,sCAEH,sBAAgC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,MAAoB,SAAmB,QAAiC;AAChF,UAAM,MAAM,OAAO;AACnB,SAAK,UAAU;AAAA,EACnB;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAc,wBAAwB;AAClC,QAAI,CAAC,KAAK,wBAAwB;AAC9B,YAAM,IAAI,cAAc,uDAAuD;AAAA,IACnF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAc,uBAAuB;AACjC,QAAI,CAAC,KAAK,uBAAuB;AAC7B,YAAM,IAAI,cAAc,sDAAsD;AAAA,IAClF;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEmB,YAAY,MAAwC;AACnE,UAAM,EAAE,YAAY,WAAW,YAAY,IAAI;AAC/C,QAAI,KAAK,QAAQ,UAAU,IAAI,SAAS,GAAG,IAAI,WAAW,MAAM,QAAW;AACvE;AAAA,IACJ;AACA,UAAM,YAAY,IAAI;AAAA,EAC1B;AAAA,EAEA,CAAoB,wBAAwB,UAA4B,MAAqB;AACzF,SAAK,yBAAyB,KAAK,QAAQ,SAAS,EAAE;AACtD,QAAI,KAAK,2BAA2B,QAAW;AAC3C;AAAA,IACJ;AACA,WAAO,MAAM,wBAAwB,UAAU,IAAI;AAAA,EACvD;AAAA,EAEmB,uBAAuB,SAA0B,MAAqB;AACrF,SAAK,wBAAwB,KAAK,sBAAsB,QAAQ,KAAK,EAAE;AACvE,QAAI,KAAK,0BAA0B,QAAW;AAC1C;AAAA,IACJ;AACA,UAAM,uBAAuB,SAAS,IAAI;AAAA,EAC9C;AAAA,EAEmB,yBAAyB,WAAkC,MAAqB;AAC/F,QAAI,CAAC,KAAK,qBAAqB,IAAI,UAAU,EAAE,GAAG;AAC9C;AAAA,IACJ;AACA,UAAM,yBAAyB,WAAW,IAAI;AAAA,EAClD;AAAA,EAEmB,YAAY;AAAA,EAE/B;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Project CHIP Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { InteractionSession } from "#action/Interactable.js";
|
|
7
|
+
import { AttributeTypeProtocol, NodeProtocol } from "#action/protocols.js";
|
|
8
|
+
import { Write } from "#action/request/Write.js";
|
|
9
|
+
import { WriteResult } from "#action/response/WriteResult.js";
|
|
10
|
+
import { DataResponse } from "#action/server/DataResponse.js";
|
|
11
|
+
import { TlvStream } from "#types";
|
|
12
|
+
/**
|
|
13
|
+
* Implements read of attribute data for Matter "read" and "subscribe" interactions.
|
|
14
|
+
*
|
|
15
|
+
* TODO - profile; ensure nested functions are properly JITed and/or inlined
|
|
16
|
+
*/
|
|
17
|
+
export declare class AttributeWriteResponse<SessionT extends InteractionSession = InteractionSession> extends DataResponse<SessionT> {
|
|
18
|
+
#private;
|
|
19
|
+
constructor(node: NodeProtocol, session: SessionT);
|
|
20
|
+
process<T extends Write>({ writeRequests, suppressResponse }: T): WriteResult<T>;
|
|
21
|
+
get counts(): {
|
|
22
|
+
status: number;
|
|
23
|
+
success: number;
|
|
24
|
+
existent: number;
|
|
25
|
+
};
|
|
26
|
+
protected writeValue(attribute: AttributeTypeProtocol, path: WriteResult.ConcreteAttributePath, value: TlvStream): Promise<WriteResult.AttributeStatus>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=AttributeWriteResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttributeWriteResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/AttributeWriteResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAqC,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,YAAY,EAA0C,MAAM,gCAAgC,CAAC;AAGtG,OAAO,EAQH,SAAS,EACZ,MAAM,QAAQ,CAAC;AAIhB;;;;GAIG;AACH,qBAAa,sBAAsB,CAC/B,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CAC1D,SAAQ,YAAY,CAAC,QAAQ,CAAC;;gBAchB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;IAK3C,OAAO,CAAC,CAAC,SAAS,KAAK,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAsCtF,IAAI,MAAM;;;;MAMT;cA2Qe,UAAU,CACtB,SAAS,EAAE,qBAAqB,EAChC,IAAI,EAAE,WAAW,CAAC,qBAAqB,EACvC,KAAK,EAAE,SAAS;CAqEvB"}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Project CHIP Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { AccessControl } from "#action/server/AccessControl.js";
|
|
7
|
+
import { DataResponse, FallbackLimits, WildcardPathFlagsCodec } from "#action/server/DataResponse.js";
|
|
8
|
+
import { Diagnostic, InternalError, Logger } from "#general";
|
|
9
|
+
import { DataModelPath, ElementTag, FabricIndex as FabricIndexField } from "#model";
|
|
10
|
+
import {
|
|
11
|
+
ArraySchema,
|
|
12
|
+
FabricIndex,
|
|
13
|
+
Status,
|
|
14
|
+
StatusCode,
|
|
15
|
+
StatusResponseError
|
|
16
|
+
} from "#types";
|
|
17
|
+
const logger = Logger.get("AttributeWriteResponse");
|
|
18
|
+
class AttributeWriteResponse extends DataResponse {
|
|
19
|
+
#fabricIndex;
|
|
20
|
+
// The following state updates as data producers execute. This serves both to convey state between functions and as
|
|
21
|
+
// a cache between producers that touch the same endpoint and/or cluster
|
|
22
|
+
#currentEndpoint;
|
|
23
|
+
#currentCluster;
|
|
24
|
+
#previousProcessedAttributePath;
|
|
25
|
+
#wildcardPathFlags = 0;
|
|
26
|
+
// Count how many attribute status (on error) and attribute values (on success) we have emitted
|
|
27
|
+
#statusCount = 0;
|
|
28
|
+
#successCount = 0;
|
|
29
|
+
#errorCount = 0;
|
|
30
|
+
constructor(node, session) {
|
|
31
|
+
super(node, session);
|
|
32
|
+
this.#fabricIndex = session.fabric ?? FabricIndex.NO_FABRIC;
|
|
33
|
+
}
|
|
34
|
+
async process({ writeRequests, suppressResponse }) {
|
|
35
|
+
const writeResponses = new Array();
|
|
36
|
+
for (const { path, data, dataVersion } of writeRequests) {
|
|
37
|
+
if (path.endpointId === void 0 || path.clusterId === void 0 || path.attributeId === void 0) {
|
|
38
|
+
const responses = await this.#processWildcard(path, data);
|
|
39
|
+
if (responses !== void 0) {
|
|
40
|
+
writeResponses.push(...responses);
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
writeResponses.push(
|
|
44
|
+
await this.#writeConcrete(path, data, dataVersion)
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!suppressResponse) {
|
|
49
|
+
return writeResponses;
|
|
50
|
+
}
|
|
51
|
+
return void 0;
|
|
52
|
+
}
|
|
53
|
+
/** Guarded accessor for this.#currentEndpoint. This should never be undefined */
|
|
54
|
+
get #guardedCurrentEndpoint() {
|
|
55
|
+
if (this.#currentEndpoint === void 0) {
|
|
56
|
+
throw new InternalError("currentEndpoint is not set. Should never happen");
|
|
57
|
+
}
|
|
58
|
+
return this.#currentEndpoint;
|
|
59
|
+
}
|
|
60
|
+
/** Guarded accessor for this.#currentCluster. This should never be undefined */
|
|
61
|
+
get #guardedCurrentCluster() {
|
|
62
|
+
if (this.#currentCluster === void 0) {
|
|
63
|
+
throw new InternalError("currentCluster is not set. Should never happen");
|
|
64
|
+
}
|
|
65
|
+
return this.#currentCluster;
|
|
66
|
+
}
|
|
67
|
+
get counts() {
|
|
68
|
+
return {
|
|
69
|
+
status: this.#statusCount,
|
|
70
|
+
success: this.#successCount,
|
|
71
|
+
existent: this.#successCount + this.#errorCount
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Validate a wildcard path and update internal state.
|
|
76
|
+
*/
|
|
77
|
+
async #processWildcard(path, value) {
|
|
78
|
+
const { nodeId, endpointId, wildcardPathFlags } = path;
|
|
79
|
+
if (nodeId !== void 0 && nodeId !== this.nodeId) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
this.#wildcardPathFlags = wildcardPathFlags ? WildcardPathFlagsCodec.encode(wildcardPathFlags) : 0;
|
|
83
|
+
if (endpointId === void 0) {
|
|
84
|
+
const responses = new Array();
|
|
85
|
+
for (const endpoint2 of this.node) {
|
|
86
|
+
const response = await this.#writeEndpointForWildcard(endpoint2, path, value);
|
|
87
|
+
if (response !== void 0) {
|
|
88
|
+
responses.push(response);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return responses;
|
|
92
|
+
}
|
|
93
|
+
const endpoint = this.node[endpointId];
|
|
94
|
+
if (endpoint) {
|
|
95
|
+
const response = await this.#writeEndpointForWildcard(endpoint, path, value);
|
|
96
|
+
if (response !== void 0) {
|
|
97
|
+
return [response];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Write to a concrete path and update internal state.
|
|
103
|
+
*/
|
|
104
|
+
async #writeConcrete(path, value, version) {
|
|
105
|
+
const { nodeId, endpointId, clusterId, attributeId } = path;
|
|
106
|
+
if (nodeId !== void 0 && this.nodeId !== nodeId) {
|
|
107
|
+
return this.#asStatus(path, Status.UnsupportedNode);
|
|
108
|
+
}
|
|
109
|
+
const endpoint = this.node[endpointId];
|
|
110
|
+
const cluster = endpoint?.[clusterId];
|
|
111
|
+
const attribute = cluster?.type.attributes[attributeId];
|
|
112
|
+
let limits;
|
|
113
|
+
if (attribute === void 0) {
|
|
114
|
+
const modelAttr = this.node.matter.member(path.clusterId, [ElementTag.Cluster])?.member(path.attributeId, [ElementTag.Attribute]);
|
|
115
|
+
if (modelAttr) {
|
|
116
|
+
limits = AccessControl(modelAttr).limits;
|
|
117
|
+
} else {
|
|
118
|
+
limits = FallbackLimits;
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
limits = attribute.limits;
|
|
122
|
+
}
|
|
123
|
+
const location = {
|
|
124
|
+
...cluster?.location ?? {
|
|
125
|
+
path: DataModelPath.none,
|
|
126
|
+
endpoint: endpointId,
|
|
127
|
+
cluster: clusterId
|
|
128
|
+
},
|
|
129
|
+
owningFabric: this.session.fabric
|
|
130
|
+
};
|
|
131
|
+
const permission = this.session.authorityAt(limits.writeLevel, location);
|
|
132
|
+
switch (permission) {
|
|
133
|
+
case AccessControl.Authority.Granted:
|
|
134
|
+
break;
|
|
135
|
+
case AccessControl.Authority.Unauthorized:
|
|
136
|
+
return this.#asStatus(path, Status.UnsupportedAccess);
|
|
137
|
+
case AccessControl.Authority.Restricted:
|
|
138
|
+
return this.#asStatus(path, Status.AccessRestricted);
|
|
139
|
+
default:
|
|
140
|
+
throw new InternalError(`Unsupported authorization state ${permission}`);
|
|
141
|
+
}
|
|
142
|
+
if (endpoint === void 0) {
|
|
143
|
+
return this.#asStatus(path, Status.UnsupportedEndpoint);
|
|
144
|
+
}
|
|
145
|
+
if (cluster === void 0) {
|
|
146
|
+
return this.#asStatus(path, Status.UnsupportedCluster);
|
|
147
|
+
}
|
|
148
|
+
if (attribute === void 0 || !cluster.type.attributes[attribute.id]) {
|
|
149
|
+
return this.#asStatus(path, Status.UnsupportedAttribute);
|
|
150
|
+
}
|
|
151
|
+
if (!limits.writable) {
|
|
152
|
+
this.#errorCount++;
|
|
153
|
+
return this.#asStatus(path, Status.UnsupportedWrite);
|
|
154
|
+
}
|
|
155
|
+
if (limits.timed && !this.session.timed) {
|
|
156
|
+
this.#errorCount++;
|
|
157
|
+
return this.#asStatus(path, Status.NeedsTimedInteraction);
|
|
158
|
+
}
|
|
159
|
+
if (limits.fabricScoped && this.session.fabric === void 0) {
|
|
160
|
+
this.#errorCount++;
|
|
161
|
+
return this.#asStatus(path, Status.UnsupportedAccess);
|
|
162
|
+
}
|
|
163
|
+
if (version !== void 0 && version !== cluster.version) {
|
|
164
|
+
this.#errorCount++;
|
|
165
|
+
return this.#asStatus(path, Status.DataVersionMismatch);
|
|
166
|
+
}
|
|
167
|
+
if (this.#currentEndpoint !== endpoint) {
|
|
168
|
+
this.#currentEndpoint = endpoint;
|
|
169
|
+
this.#currentCluster = cluster;
|
|
170
|
+
} else if (this.#currentCluster !== cluster) {
|
|
171
|
+
this.#currentCluster = cluster;
|
|
172
|
+
}
|
|
173
|
+
return await this.writeValue(attribute, path, value);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Starts new chunk or adds to current chunk all values from {@link endpoint} selected by {@link path}.
|
|
177
|
+
*
|
|
178
|
+
* Emits previous chunk if it exists and was not for this endpoint. This means that our chunk size is one endpoint
|
|
179
|
+
* worth of data, except for the initial error chunk if there are path errors.
|
|
180
|
+
*
|
|
181
|
+
* {@link this.#wildcardPathFlags} to numeric bitmap must be set prior to invocation.
|
|
182
|
+
*
|
|
183
|
+
* TODO - skip endpoints for which subject is unauthorized as optimization
|
|
184
|
+
*/
|
|
185
|
+
#writeEndpointForWildcard(endpoint, path, value) {
|
|
186
|
+
const { clusterId, attributeId } = path;
|
|
187
|
+
if (clusterId === void 0 || attributeId === void 0) {
|
|
188
|
+
throw new StatusResponseError(
|
|
189
|
+
"Wildcard path write must specify a clusterId and attributeId",
|
|
190
|
+
StatusCode.InvalidAction
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
if (endpoint.wildcardPathFlags & this.#wildcardPathFlags) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (this.#currentEndpoint !== endpoint) {
|
|
197
|
+
this.#currentEndpoint = endpoint;
|
|
198
|
+
this.#currentCluster = void 0;
|
|
199
|
+
}
|
|
200
|
+
const cluster = endpoint[clusterId];
|
|
201
|
+
if (cluster !== void 0) {
|
|
202
|
+
return this.#writeClusterForWildcard(cluster, path, value);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Read values from a specific {@link cluster} for a wildcard path.
|
|
207
|
+
*
|
|
208
|
+
* Depends on state initialized by {@link #writeEndpointForWildcard}.
|
|
209
|
+
*
|
|
210
|
+
* TODO - skip clusters for which subject is unauthorized
|
|
211
|
+
*/
|
|
212
|
+
#writeClusterForWildcard(cluster, path, value) {
|
|
213
|
+
if (cluster.type.wildcardPathFlags & this.#wildcardPathFlags) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (this.#currentCluster !== cluster) {
|
|
217
|
+
this.#currentCluster = cluster;
|
|
218
|
+
}
|
|
219
|
+
const { attributeId } = path;
|
|
220
|
+
if (attributeId === void 0) {
|
|
221
|
+
throw new StatusResponseError("Wildcard path write must specify an attributeId", StatusCode.InvalidAction);
|
|
222
|
+
} else {
|
|
223
|
+
const attribute = cluster.type.attributes[attributeId];
|
|
224
|
+
if (attribute !== void 0) {
|
|
225
|
+
return this.#writeAttributeForWildcard(attribute, path, value);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Read values from a specific {@link attribute} for a wildcard path.
|
|
231
|
+
*
|
|
232
|
+
* Depends on state initialized by {@link #writeClusterForWildcard}.
|
|
233
|
+
*/
|
|
234
|
+
#writeAttributeForWildcard(attribute, path, value) {
|
|
235
|
+
if (!this.#guardedCurrentCluster.type.attributes[attribute.id]) {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (attribute.wildcardPathFlags & this.#wildcardPathFlags) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (!attribute.limits.writable || this.session.authorityAt(attribute.limits.readLevel, this.#guardedCurrentCluster.location) !== AccessControl.Authority.Granted || attribute.limits.timed && !this.session.timed) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
return this.writeValue(
|
|
245
|
+
attribute,
|
|
246
|
+
{
|
|
247
|
+
...path,
|
|
248
|
+
endpointId: this.#guardedCurrentEndpoint.id,
|
|
249
|
+
clusterId: this.#guardedCurrentCluster.type.id,
|
|
250
|
+
attributeId: attribute.id
|
|
251
|
+
},
|
|
252
|
+
value
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Add a status value.
|
|
257
|
+
*/
|
|
258
|
+
#asStatus(path, status, clusterStatus) {
|
|
259
|
+
if (status !== Status.Success) {
|
|
260
|
+
logger.debug(
|
|
261
|
+
() => `Error writing attribute ${this.node.inspectPath(path)}: Status=${StatusCode[status]}(${status}), ClusterStatus=${clusterStatus}`
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
const report = {
|
|
265
|
+
kind: "attr-status",
|
|
266
|
+
path,
|
|
267
|
+
status,
|
|
268
|
+
clusterStatus
|
|
269
|
+
};
|
|
270
|
+
if (status !== Status.Success) {
|
|
271
|
+
this.#statusCount++;
|
|
272
|
+
}
|
|
273
|
+
return report;
|
|
274
|
+
}
|
|
275
|
+
async writeValue(attribute, path, value) {
|
|
276
|
+
const { attributeId, listIndex } = path;
|
|
277
|
+
if (listIndex !== void 0 && listIndex !== null) {
|
|
278
|
+
throw new StatusResponseError(
|
|
279
|
+
`Unsupported Write path provided: listIndex === ${listIndex}`,
|
|
280
|
+
Status.InvalidAction
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
const previousPath = this.#previousProcessedAttributePath;
|
|
284
|
+
this.#previousProcessedAttributePath = path;
|
|
285
|
+
try {
|
|
286
|
+
const { tlv } = attribute;
|
|
287
|
+
if (listIndex === void 0) {
|
|
288
|
+
const decoded = this.#decodeWithSchema(tlv, value);
|
|
289
|
+
logger.debug(() => `Writing attribute ${this.node.inspectPath(path)}=${Diagnostic.json(decoded)}`);
|
|
290
|
+
const writeState = await this.#guardedCurrentCluster.openForWrite(this.session);
|
|
291
|
+
writeState[attributeId] = decoded;
|
|
292
|
+
await this.session.transaction?.commit();
|
|
293
|
+
} else if (listIndex === null) {
|
|
294
|
+
if (previousPath?.endpointId !== path.endpointId || previousPath?.clusterId !== path.clusterId || previousPath?.attributeId !== path.attributeId) {
|
|
295
|
+
throw new StatusResponseError("ADD list action without a former REPLACE_ALL action", Status.Busy);
|
|
296
|
+
}
|
|
297
|
+
if (!(tlv instanceof ArraySchema)) {
|
|
298
|
+
throw new StatusResponseError(
|
|
299
|
+
`Unsupported Write path provided: listIndex === ${listIndex} but attribute is not a list`,
|
|
300
|
+
Status.InvalidAction
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
const writeState = await this.#guardedCurrentCluster.openForWrite(this.session);
|
|
304
|
+
const decoded = this.#decodeWithSchema(tlv.elementSchema, value);
|
|
305
|
+
logger.debug(
|
|
306
|
+
() => `Writing attribute chunk ${this.node.inspectPath(path)} adding ${Diagnostic.json(decoded)}`
|
|
307
|
+
);
|
|
308
|
+
writeState[attributeId].push(decoded);
|
|
309
|
+
await this.session.transaction?.commit();
|
|
310
|
+
}
|
|
311
|
+
} catch (error) {
|
|
312
|
+
await this.session.transaction?.rollback();
|
|
313
|
+
if (StatusResponseError.is(error)) {
|
|
314
|
+
this.#errorCount++;
|
|
315
|
+
return this.#asStatus(path, error.code, error.clusterCode);
|
|
316
|
+
}
|
|
317
|
+
throw error;
|
|
318
|
+
}
|
|
319
|
+
this.#successCount++;
|
|
320
|
+
return this.#asStatus(path, Status.Success);
|
|
321
|
+
}
|
|
322
|
+
#decodeWithSchema(tlv, value) {
|
|
323
|
+
return tlv.injectField(
|
|
324
|
+
tlv.decodeTlv(value),
|
|
325
|
+
FabricIndexField.id,
|
|
326
|
+
this.#fabricIndex,
|
|
327
|
+
() => true
|
|
328
|
+
// We always inject the current fabricIndex for writes
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
export {
|
|
333
|
+
AttributeWriteResponse
|
|
334
|
+
};
|
|
335
|
+
//# sourceMappingURL=AttributeWriteResponse.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/action/server/AttributeWriteResponse.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["endpoint"]
|
|
6
|
+
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Project CHIP Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { InteractionSession } from "#action/index.js";
|
|
6
7
|
import { NodeProtocol } from "#action/protocols.js";
|
|
7
8
|
import { AccessControl } from "#action/server/AccessControl.js";
|
|
8
9
|
import { NodeId } from "#types";
|
|
@@ -18,7 +19,7 @@ export declare const WildcardPathFlagsCodec: import("#types").BitmapSchemaIntern
|
|
|
18
19
|
skipDiagnosticsClusters: import("#types").BitFlag;
|
|
19
20
|
}>;
|
|
20
21
|
export declare const FallbackLimits: AccessControl.Limits;
|
|
21
|
-
export declare abstract class DataResponse<SessionT extends
|
|
22
|
+
export declare abstract class DataResponse<SessionT extends InteractionSession = InteractionSession> {
|
|
22
23
|
#private;
|
|
23
24
|
constructor(node: NodeProtocol, session: SessionT);
|
|
24
25
|
protected get node(): NodeProtocol;
|
|
@@ -37,9 +38,9 @@ export declare abstract class DataResponse<SessionT extends AccessControl.Sessio
|
|
|
37
38
|
*/
|
|
38
39
|
status: number;
|
|
39
40
|
/**
|
|
40
|
-
* Number of value responses (aka success we have sent)
|
|
41
|
+
* Number of success or value responses (aka success we have sent)
|
|
41
42
|
*/
|
|
42
|
-
|
|
43
|
+
success: number;
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
46
|
//# sourceMappingURL=DataResponse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/DataResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAgB,MAAM,EAA2B,MAAM,QAAQ,CAAC;AAEvE,eAAO,MAAM,sBAAsB;;;;;;;;;;EAAwC,CAAC;AAC5E,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,MAQ1C,CAAC;AAEF,8BAAsB,YAAY,CAAC,QAAQ,SAAS,
|
|
1
|
+
{"version":3,"file":"DataResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/DataResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAgB,MAAM,EAA2B,MAAM,QAAQ,CAAC;AAEvE,eAAO,MAAM,sBAAsB;;;;;;;;;;EAAwC,CAAC;AAC5E,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,MAQ1C,CAAC;AAEF,8BAAsB,YAAY,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB;;gBAQ3E,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;IAKjD,SAAS,KAAK,IAAI,iBAEjB;IAED,SAAS,KAAK,OAAO,aAEpB;IAED;;OAEG;IACH,SAAS,KAAK,MAAM,WAMnB;IAED,QAAQ,CAAC,MAAM,EAAE;QACb;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;QAEf;;WAEG;QACH,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;CACL"}
|
|
@@ -19,7 +19,7 @@ class DataResponse {
|
|
|
19
19
|
// Configuration
|
|
20
20
|
#session;
|
|
21
21
|
#node;
|
|
22
|
-
// The node ID may be expensive to retrieve and is invariant so we cache it here
|
|
22
|
+
// The node ID may be expensive to retrieve and is invariant, so we cache it here
|
|
23
23
|
#cachedNodeId;
|
|
24
24
|
constructor(node, session) {
|
|
25
25
|
this.#node = node;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/server/DataResponse.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,mBAAmB;AAC5B,SAAS,cAAc,QAAQ,+BAA+B;AAEvD,MAAM,yBAAyB,aAAa,uBAAuB;AACnE,MAAM,iBAAuC;AAAA,EAChD,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,WAAW,YAAY;AAAA,EACvB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,YAAY,YAAY;AAC5B;AAEO,MAAe,aAAuE;AAAA;AAAA,EAEzF;AAAA,EACA;AAAA;AAAA,EAGA;AAAA,EAEA,YAAY,MAAoB,SAAmB;AAC/C,SAAK,QAAQ;AACb,SAAK,WAAW;AAAA,EACpB;AAAA,EAEA,IAAc,OAAO;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAc,SAAS;AACnB,QAAI,KAAK,kBAAkB,QAAW;AAClC,WAAK,iBACA,KAAK,SAAS,UAAU,KAAK,MAAM,UAAU,KAAK,SAAS,MAAM,MAAM,OAAO;AAAA,IACvF;AACA,WAAO,KAAK;AAAA,EAChB;AAkBJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright 2022-2025 Project CHIP Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { InteractionSession } from "#action/index.js";
|
|
6
7
|
import { NodeProtocol } from "#action/protocols.js";
|
|
7
8
|
import { Read } from "#action/request/Read.js";
|
|
8
9
|
import { ReadResult } from "#action/response/ReadResult.js";
|
|
9
|
-
import { AccessControl } from "#action/server/AccessControl.js";
|
|
10
10
|
import { DataResponse } from "#action/server/DataResponse.js";
|
|
11
11
|
/**
|
|
12
12
|
* Implements read of event data for Matter "read" and "subscribe" interactions.
|
|
@@ -15,14 +15,14 @@ import { DataResponse } from "#action/server/DataResponse.js";
|
|
|
15
15
|
*
|
|
16
16
|
* TODO - profile; ensure nested functions are properly JITed and/or inlined
|
|
17
17
|
*/
|
|
18
|
-
export declare class
|
|
18
|
+
export declare class EventReadResponse<SessionT extends InteractionSession = InteractionSession> extends DataResponse<SessionT> {
|
|
19
19
|
#private;
|
|
20
20
|
constructor(node: NodeProtocol, session: SessionT);
|
|
21
21
|
process({ eventFilters, eventRequests, isFabricFiltered, }: Read.Events): AsyncGenerator<ReadResult.Chunk, void, void>;
|
|
22
22
|
get counts(): {
|
|
23
23
|
status: number;
|
|
24
|
-
|
|
24
|
+
success: number;
|
|
25
25
|
existent: number;
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=EventReadResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventReadResponse.d.ts","sourceRoot":"","sources":["../../../../src/action/server/EventReadResponse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAwD,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAkB,MAAM,gCAAgC,CAAC;AAiB9E;;;;;;GAMG;AACH,qBAAa,iBAAiB,CAC1B,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,CAC1D,SAAQ,YAAY,CAAC,QAAQ,CAAC;;gBAmBhB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ;IAI1C,OAAO,CAAC,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,GACnB,EAAE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IAsC7D,IAAI,MAAM;;;;MAMT;CAiRJ"}
|
|
@@ -15,8 +15,8 @@ import {
|
|
|
15
15
|
StatusCode,
|
|
16
16
|
StatusResponseError
|
|
17
17
|
} from "#types";
|
|
18
|
-
const logger = Logger.get("
|
|
19
|
-
class
|
|
18
|
+
const logger = Logger.get("EventReadResponse");
|
|
19
|
+
class EventReadResponse extends DataResponse {
|
|
20
20
|
// Normalized Event Filter to just our node-id
|
|
21
21
|
#eventMinVersion;
|
|
22
22
|
// The Fabric filtering is done when we read the data from OccurrenceManager, so we can determine the parameter once
|
|
@@ -69,7 +69,7 @@ class EventResponse extends DataResponse {
|
|
|
69
69
|
get counts() {
|
|
70
70
|
return {
|
|
71
71
|
status: this.#statusCount,
|
|
72
|
-
|
|
72
|
+
success: this.#valueCount,
|
|
73
73
|
existent: this.#allowedEventPaths.size
|
|
74
74
|
};
|
|
75
75
|
}
|
|
@@ -300,6 +300,6 @@ class EventResponse extends DataResponse {
|
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
302
|
export {
|
|
303
|
-
|
|
303
|
+
EventReadResponse
|
|
304
304
|
};
|
|
305
|
-
//# sourceMappingURL=
|
|
305
|
+
//# sourceMappingURL=EventReadResponse.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/action/server/EventReadResponse.ts"],
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,SAAS,qBAAqB;AAC9B,SAAS,cAAc,sBAAsB;AAE7C,SAAS,eAAe,UAAU,cAAc;AAChD,SAAS,eAAe,kBAA8B;AACtD;AAAA,EACI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEG;AAEP,MAAM,SAAS,OAAO,IAAI,mBAAmB;AAStC,MAAM,0BAEH,aAAuB;AAAA;AAAA,EAE7B;AAAA;AAAA,EAGA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA;AAAA,EAGA,qBAAqB,oBAAI,IAAgC;AAAA;AAAA,EAGzD,eAAe;AAAA,EACf,cAAc;AAAA,EAEd,YAAY,MAAoB,SAAmB;AAC/C,UAAM,MAAM,OAAO;AAAA,EACvB;AAAA,EAEA,OAAO,QAAQ;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAA8D;AAC1D,UAAM,SAAS,KAAK,QAAQ,WAAW,SAAY,OAAO,sBAAsB,KAAK;AAErF,QAAI,iBAAiB,QAAW;AAC5B,iBAAW,EAAE,QAAQ,cAAc,SAAS,KAAK,cAAc;AAC3D,YAAI,iBAAiB,UAAa,iBAAiB,QAAQ;AACvD,eAAK,mBAAmB,YAAY,QAAQ;AAC5C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,kBAAkB;AAClB,WAAK,0BAA0B,KAAK,QAAQ,UAAU,YAAY;AAAA,IACtE;AAIA,eAAW,QAAQ,eAAe;AAC9B,UAAI,KAAK,eAAe,UAAa,KAAK,cAAc,UAAa,KAAK,YAAY,QAAW;AAC7F,aAAK,aAAa,IAAI;AAAA,MAC1B,OAAO;AACH,cAAM,SAAS,KAAK,aAAa,IAAoC;AACrE,YAAI,WAAW,QAAW;AAEtB,gBAAM,CAAC,MAAM;AACb,eAAK;AAAA,QACT;AAAA,MACJ;AAAA,IACJ;AAGA,qBAAiB,QAAQ,KAAK,mBAAmB,GAAG;AAChD,YAAM,CAAC,IAAI;AACX,WAAK;AAAA,IACT;AAAA,EACJ;AAAA,EAEA,IAAI,SAAS;AACT,WAAO;AAAA,MACH,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,UAAU,KAAK,mBAAmB;AAAA,IACtC;AAAA,EACJ;AAAA;AAAA,EAGA,IAAI,0BAA0B;AAC1B,QAAI,KAAK,qBAAqB,QAAW;AACrC,YAAM,IAAI,cAAc,iDAAiD;AAAA,IAC7E;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA,EAGA,IAAI,yBAA0C;AAC1C,QAAI,KAAK,oBAAoB,QAAW;AACpC,YAAM,IAAI,cAAc,gDAAgD;AAAA,IAC5E;AACA,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAiB;AAC1B,UAAM,EAAE,QAAQ,WAAW,YAAY,QAAQ,IAAI;AAEnD,QAAI,cAAc,UAAa,YAAY,QAAW;AAClD,YAAM,IAAI,oBAAoB,iDAAiD,WAAW,aAAa;AAAA,IAC3G;AAEA,QAAI,WAAW,UAAa,WAAW,KAAK,QAAQ;AAChD;AAAA,IACJ;AAEA,QAAI,eAAe,QAAW;AAC1B,iBAAWA,aAAY,KAAK,MAAM;AAC9B,aAAK,wBAAwBA,WAAU,IAAI;AAAA,MAC/C;AACA;AAAA,IACJ;AAEA,UAAM,WAAW,KAAK,KAAK,UAAU;AACrC,QAAI,UAAU;AACV,aAAO,KAAK,wBAAwB,UAAU,IAAI;AAAA,IACtD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAoC;AAC7C,UAAM,EAAE,QAAQ,YAAY,WAAW,QAAQ,IAAI;AACnD,QAAI,WAAW,UAAa,KAAK,WAAW,QAAQ;AAChD,aAAO,KAAK,UAAU,MAAM,OAAO,eAAe;AAAA,IACtD;AAGA,UAAM,WAAW,KAAK,KAAK,UAAU;AACrC,UAAM,UAAU,WAAW,SAAS;AACpC,UAAM,QAAQ,SAAS,KAAK,OAAO,OAAO;AAC1C,QAAI;AACJ,QAAI,UAAU,QAAW;AAIrB,YAAM,aAAa,KAAK,KAAK,OACxB,OAAO,KAAK,WAAW,CAAC,WAAW,OAAO,CAAC,GAC1C,OAAO,KAAK,SAAS,CAAC,WAAW,KAAK,CAAC;AAE7C,UAAI,YAAY;AAGZ,iBAAS,cAAc,UAAwB,EAAE;AAAA,MACrD,OAAO;AAEH,iBAAS;AAAA,MACb;AAAA,IACJ,OAAO;AACH,eAAS,MAAM;AAAA,IACnB;AAIA,UAAM,WAAW;AAAA,MACb,GAAI,SAAS,YAAY;AAAA,QACrB,MAAM,cAAc;AAAA,QACpB,UAAU;AAAA,QACV,SAAS;AAAA,MACb;AAAA,MACA,cAAc,KAAK,QAAQ;AAAA,IAC/B;AACA,UAAM,aAAa,KAAK,QAAQ,YAAY,OAAO,WAAW,QAAQ;AACtE,YAAQ,YAAY;AAAA,MAChB,KAAK,cAAc,UAAU;AACzB;AAAA,MAEJ,KAAK,cAAc,UAAU;AACzB,eAAO,KAAK,UAAU,MAAM,OAAO,iBAAiB;AAAA,MAExD,KAAK,cAAc,UAAU;AACzB,eAAO,KAAK,UAAU,MAAM,OAAO,gBAAgB;AAAA,MAEvD;AACI,cAAM,IAAI,cAAc,mCAAmC,UAAU,EAAE;AAAA,IAC/E;AACA,QAAI,aAAa,QAAW;AACxB,aAAO,KAAK,UAAU,MAAM,OAAO,mBAAmB;AAAA,IAC1D;AACA,QAAI,YAAY,QAAW;AACvB,aAAO,KAAK,UAAU,MAAM,OAAO,kBAAkB;AAAA,IACzD;AACA,QAAI,UAAU,UAAa,CAAC,QAAQ,KAAK,OAAO,MAAM,EAAE,GAAG;AACvD,aAAO,KAAK,UAAU,MAAM,OAAO,gBAAgB;AAAA,IACvD;AAEA,QAAI,KAAK,qBAAqB,UAAU;AACpC,WAAK,mBAAmB;AACxB,WAAK,kBAAkB;AAAA,IAC3B,WAAW,KAAK,oBAAoB,SAAS;AACzC,WAAK,kBAAkB;AAAA,IAC3B;AAGA,SAAK,mBAAmB,IAAI;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,wBAAwB,UAA4B,MAAiB;AACjE,QAAI,KAAK,qBAAqB,UAAU;AACpC,WAAK,mBAAmB;AACxB,WAAK,kBAAkB;AAAA,IAC3B;AAEA,UAAM,EAAE,UAAU,IAAI;AACtB,QAAI,cAAc,QAAW;AACzB,iBAAW,WAAW,UAAU;AAC5B,aAAK,uBAAuB,SAAS,EAAE,GAAG,MAAM,YAAY,SAAS,GAAG,CAAC;AAAA,MAC7E;AAAA,IACJ,OAAO;AACH,YAAM,UAAU,SAAS,SAAS;AAClC,UAAI,YAAY,QAAW;AACvB,aAAK,uBAAuB,SAAS,EAAE,GAAG,MAAM,YAAY,SAAS,GAAG,CAAC;AAAA,MAC7E;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,uBAAuB,SAA0B,MAAiB;AAC9D,QAAI,KAAK,oBAAoB,SAAS;AAClC,WAAK,kBAAkB;AAAA,IAC3B;AAEA,UAAM,EAAE,QAAQ,IAAI;AACpB,QAAI,YAAY,QAAW;AACvB,iBAAW,SAAS,QAAQ,KAAK,QAAQ;AACrC,aAAK,qBAAqB,OAAO;AAAA,UAC7B,GAAG;AAAA,UACH,WAAW,QAAQ,KAAK;AAAA,QAC5B,CAAC;AAAA,MACL;AAAA,IACJ,OAAO;AACH,YAAM,QAAQ,QAAQ,KAAK,OAAO,OAAO;AACzC,UAAI,UAAU,QAAW;AACrB,aAAK,qBAAqB,OAAO;AAAA,UAC7B,GAAG;AAAA,UACH,WAAW,QAAQ,KAAK;AAAA,QAC5B,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAqB,OAA0B,MAAiB;AAC5D,QAAI,CAAC,KAAK,uBAAuB,KAAK,OAAO,MAAM,EAAE,GAAG;AACpD;AAAA,IACJ;AACA,QACI,KAAK,QAAQ,YAAY,MAAM,OAAO,WAAW,KAAK,uBAAuB,QAAQ,MACrF,cAAc,UAAU,SAC1B;AACE;AAAA,IACJ;AAEA,SAAK,mBAAmB,EAAE,GAAG,MAAM,SAAS,MAAM,GAAG,CAAiC;AAAA,EAC1F;AAAA,EAEA,gBAAgB,MAAoC;AAChD,UAAM,EAAE,YAAY,WAAW,QAAQ,IAAI;AAC3C,WAAO,GAAG,UAAU,IAAI,SAAS,IAAI,OAAO;AAAA,EAChD;AAAA,EAEA,mBAAmB,MAAoC;AACnD,UAAM,EAAE,QAAQ,IAAI;AACpB,SAAK,mBAAmB;AAAA,MACpB,KAAK,gBAAgB;AAAA,QACjB,GAAG;AAAA,QACH,YAAY,KAAK,wBAAwB;AAAA,QACzC,WAAW,KAAK,uBAAuB,KAAK;AAAA,QAC5C;AAAA,MACJ,CAAC;AAAA,MACD,KAAK,uBAAuB,KAAK,OAAO,OAAO,EAAG;AAAA,IACtD;AAAA,EACJ;AAAA,EAEA,OAAO,qBAAqB;AACxB,qBAAiB,SAAS,KAAK,KAAK,aAAa,IAAI,KAAK,gBAAgB,GAAG;AACzE,YAAM,MAAM,KAAK,mBAAmB,IAAI,KAAK,gBAAgB,KAAK,CAAC;AACnE,UAAI,QAAQ,QAAW;AAEnB;AAAA,MACJ;AAEA,UAAI,KAAK,4BAA4B,QAAW;AAC5C,cAAM,EAAE,QAAQ,IAAI;AACpB,YAAI,CAAC,SAAS,OAAO,GAAG;AACpB;AAAA,QACJ;AACA,cAAM,EAAE,YAAY,IAAI;AACxB,YAAI,gBAAgB,UAAa,gBAAgB,KAAK,yBAAyB;AAC3E;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,KAAK,SAAS,OAAO,GAAG;AAAA,IAClC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,MAAoC,QAAgB;AAC1D,WAAO,MAAM,uBAAuB,KAAK,KAAK,YAAY,IAAI,CAAC,YAAY,WAAW,MAAM,CAAC,IAAI,MAAM,GAAG;AAE1G,UAAM,SAAiC;AAAA,MACnC,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,OAA2B,KAAyB;AACzD,UAAM,EAAE,QAAQ,gBAAgB,WAAW,UAAU,SAAS,OAAO,YAAY,WAAW,QAAQ,IAAI;AACxG,UAAM,SAAgC;AAAA,MAClC,MAAM;AAAA,MACN,MAAM,EAAE,YAAY,WAAW,QAAQ;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX;AACJ;",
|
|
5
|
+
"names": ["endpoint"]
|
|
6
|
+
}
|