@matter/protocol 0.16.0-alpha.0-20251016-b56cf5683 → 0.16.0-alpha.0-20251018-dd1ea6a8a
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/client/ClientInteraction.d.ts +10 -5
- package/dist/cjs/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/cjs/action/client/ClientInteraction.js +129 -18
- package/dist/cjs/action/client/ClientInteraction.js.map +1 -1
- package/dist/cjs/action/request/Invoke.d.ts +36 -8
- package/dist/cjs/action/request/Invoke.d.ts.map +1 -1
- package/dist/cjs/action/request/Invoke.js +80 -15
- package/dist/cjs/action/request/Invoke.js.map +1 -1
- package/dist/cjs/action/request/Read.d.ts +1 -1
- package/dist/cjs/action/request/Read.d.ts.map +1 -1
- package/dist/cjs/action/request/Read.js +10 -2
- package/dist/cjs/action/request/Read.js.map +1 -1
- package/dist/cjs/action/request/Specifier.d.ts +16 -1
- package/dist/cjs/action/request/Specifier.d.ts.map +1 -1
- package/dist/cjs/action/request/Specifier.js +56 -1
- package/dist/cjs/action/request/Specifier.js.map +1 -1
- package/dist/cjs/action/request/Write.d.ts +5 -3
- package/dist/cjs/action/request/Write.d.ts.map +1 -1
- package/dist/cjs/action/request/Write.js +52 -12
- package/dist/cjs/action/request/Write.js.map +1 -1
- package/dist/cjs/action/response/InvokeResult.d.ts +6 -0
- package/dist/cjs/action/response/InvokeResult.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionClient.js +91 -74
- package/dist/cjs/interaction/InteractionClient.js.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.d.ts +3 -2
- package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionMessenger.js +10 -3
- package/dist/cjs/interaction/InteractionMessenger.js.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/cjs/protocol/ExchangeManager.js +20 -17
- package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
- package/dist/cjs/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageChannel.js +1 -1
- package/dist/cjs/protocol/MessageChannel.js.map +1 -1
- package/dist/cjs/protocol/MessageExchange.d.ts +1 -0
- package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/cjs/protocol/MessageExchange.js +14 -4
- package/dist/cjs/protocol/MessageExchange.js.map +1 -1
- package/dist/cjs/protocol/ProtocolHandler.d.ts +7 -2
- package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js +2 -1
- package/dist/cjs/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/cjs/session/GroupSession.d.ts +8 -1
- package/dist/cjs/session/GroupSession.d.ts.map +1 -1
- package/dist/cjs/session/GroupSession.js +10 -0
- package/dist/cjs/session/GroupSession.js.map +1 -1
- package/dist/cjs/session/NodeSession.d.ts +3 -1
- package/dist/cjs/session/NodeSession.d.ts.map +1 -1
- package/dist/cjs/session/NodeSession.js +13 -0
- package/dist/cjs/session/NodeSession.js.map +2 -2
- package/dist/cjs/session/SecureSession.d.ts +2 -0
- package/dist/cjs/session/SecureSession.d.ts.map +1 -1
- package/dist/cjs/session/SecureSession.js.map +1 -1
- package/dist/cjs/session/case/CaseClient.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseClient.js +3 -15
- package/dist/cjs/session/case/CaseClient.js.map +1 -1
- package/dist/cjs/session/case/CaseServer.d.ts.map +1 -1
- package/dist/cjs/session/case/CaseServer.js +10 -18
- package/dist/cjs/session/case/CaseServer.js.map +1 -1
- package/dist/cjs/session/pase/PaseClient.js +1 -1
- package/dist/cjs/session/pase/PaseClient.js.map +1 -1
- package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/cjs/session/pase/PaseServer.js +2 -2
- package/dist/cjs/session/pase/PaseServer.js.map +1 -1
- package/dist/esm/action/client/ClientInteraction.d.ts +10 -5
- package/dist/esm/action/client/ClientInteraction.d.ts.map +1 -1
- package/dist/esm/action/client/ClientInteraction.js +140 -20
- package/dist/esm/action/client/ClientInteraction.js.map +1 -1
- package/dist/esm/action/request/Invoke.d.ts +36 -8
- package/dist/esm/action/request/Invoke.d.ts.map +1 -1
- package/dist/esm/action/request/Invoke.js +81 -16
- package/dist/esm/action/request/Invoke.js.map +1 -1
- package/dist/esm/action/request/Read.d.ts +1 -1
- package/dist/esm/action/request/Read.d.ts.map +1 -1
- package/dist/esm/action/request/Read.js +12 -4
- package/dist/esm/action/request/Read.js.map +1 -1
- package/dist/esm/action/request/Specifier.d.ts +16 -1
- package/dist/esm/action/request/Specifier.d.ts.map +1 -1
- package/dist/esm/action/request/Specifier.js +56 -1
- package/dist/esm/action/request/Specifier.js.map +1 -1
- package/dist/esm/action/request/Write.d.ts +5 -3
- package/dist/esm/action/request/Write.d.ts.map +1 -1
- package/dist/esm/action/request/Write.js +53 -13
- package/dist/esm/action/request/Write.js.map +1 -1
- package/dist/esm/action/response/InvokeResult.d.ts +6 -0
- package/dist/esm/action/response/InvokeResult.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionClient.js +92 -74
- package/dist/esm/interaction/InteractionClient.js.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.d.ts +3 -2
- package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionMessenger.js +10 -3
- package/dist/esm/interaction/InteractionMessenger.js.map +1 -1
- package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -1
- package/dist/esm/protocol/ExchangeManager.js +20 -17
- package/dist/esm/protocol/ExchangeManager.js.map +1 -1
- package/dist/esm/protocol/MessageChannel.d.ts.map +1 -1
- package/dist/esm/protocol/MessageChannel.js +2 -2
- package/dist/esm/protocol/MessageChannel.js.map +1 -1
- package/dist/esm/protocol/MessageExchange.d.ts +1 -0
- package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
- package/dist/esm/protocol/MessageExchange.js +14 -4
- package/dist/esm/protocol/MessageExchange.js.map +1 -1
- package/dist/esm/protocol/ProtocolHandler.d.ts +7 -2
- package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.d.ts +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js +2 -1
- package/dist/esm/securechannel/SecureChannelProtocol.js.map +1 -1
- package/dist/esm/session/GroupSession.d.ts +8 -1
- package/dist/esm/session/GroupSession.d.ts.map +1 -1
- package/dist/esm/session/GroupSession.js +11 -1
- package/dist/esm/session/GroupSession.js.map +1 -1
- package/dist/esm/session/NodeSession.d.ts +3 -1
- package/dist/esm/session/NodeSession.d.ts.map +1 -1
- package/dist/esm/session/NodeSession.js +13 -0
- package/dist/esm/session/NodeSession.js.map +2 -2
- package/dist/esm/session/SecureSession.d.ts +2 -0
- package/dist/esm/session/SecureSession.d.ts.map +1 -1
- package/dist/esm/session/SecureSession.js.map +1 -1
- package/dist/esm/session/case/CaseClient.d.ts.map +1 -1
- package/dist/esm/session/case/CaseClient.js +5 -17
- package/dist/esm/session/case/CaseClient.js.map +1 -1
- package/dist/esm/session/case/CaseServer.d.ts.map +1 -1
- package/dist/esm/session/case/CaseServer.js +12 -20
- package/dist/esm/session/case/CaseServer.js.map +1 -1
- package/dist/esm/session/pase/PaseClient.js +1 -1
- package/dist/esm/session/pase/PaseClient.js.map +1 -1
- package/dist/esm/session/pase/PaseServer.d.ts.map +1 -1
- package/dist/esm/session/pase/PaseServer.js +3 -2
- package/dist/esm/session/pase/PaseServer.js.map +1 -1
- package/package.json +6 -6
- package/src/action/client/ClientInteraction.ts +181 -27
- package/src/action/request/Invoke.ts +149 -27
- package/src/action/request/Read.ts +27 -7
- package/src/action/request/Specifier.ts +80 -1
- package/src/action/request/Write.ts +71 -19
- package/src/action/response/InvokeResult.ts +8 -0
- package/src/interaction/InteractionClient.ts +135 -96
- package/src/interaction/InteractionMessenger.ts +15 -3
- package/src/protocol/ExchangeManager.ts +27 -29
- package/src/protocol/MessageChannel.ts +2 -2
- package/src/protocol/MessageExchange.ts +18 -4
- package/src/protocol/ProtocolHandler.ts +7 -2
- package/src/securechannel/SecureChannelProtocol.ts +5 -1
- package/src/session/GroupSession.ts +12 -1
- package/src/session/NodeSession.ts +21 -0
- package/src/session/SecureSession.ts +2 -0
- package/src/session/case/CaseClient.ts +3 -23
- package/src/session/case/CaseServer.ts +15 -20
- package/src/session/pase/PaseClient.ts +1 -1
- package/src/session/pase/PaseServer.ts +3 -2
|
@@ -3,37 +3,65 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Duration } from "#general";
|
|
6
7
|
import { ClusterType, CommandData, InvokeRequest, TlvSchema, TypeFromSchema } from "#types";
|
|
7
8
|
import { Specifier } from "./Specifier.js";
|
|
9
|
+
export interface InvokeCommandData extends CommandData {
|
|
10
|
+
timed?: boolean;
|
|
11
|
+
}
|
|
8
12
|
export interface Invoke extends InvokeRequest {
|
|
9
13
|
/** Timeout only relevant for Client Interactions */
|
|
10
|
-
timeout?:
|
|
14
|
+
timeout?: Duration;
|
|
15
|
+
expectedProcessingTime?: Duration;
|
|
16
|
+
useExtendedFailSafeMessageResponseTimeout?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ClientInvoke extends Invoke {
|
|
19
|
+
commands: Map<number | undefined, Invoke.CommandRequest<any>>;
|
|
11
20
|
}
|
|
12
21
|
/**
|
|
13
22
|
* Request invocation of one or more commands.
|
|
14
23
|
*/
|
|
15
|
-
export declare function Invoke(options: Invoke.Definition):
|
|
24
|
+
export declare function Invoke(options: Invoke.Definition): ClientInvoke;
|
|
16
25
|
/**
|
|
17
26
|
* Request invocation multiple commands with defined options
|
|
18
27
|
*/
|
|
19
|
-
export declare function Invoke(options: Invoke.Definition, ...commands:
|
|
28
|
+
export declare function Invoke(options: Invoke.Definition, ...commands: Invoke.CommandRequest<any>[]): ClientInvoke;
|
|
20
29
|
/**
|
|
21
30
|
* Request invocation multiple commands as list of Commands with default options.
|
|
22
31
|
*/
|
|
23
|
-
export declare function Invoke(...commands:
|
|
32
|
+
export declare function Invoke(...commands: Invoke.CommandRequest<any>[]): ClientInvoke;
|
|
24
33
|
export declare namespace Invoke {
|
|
25
34
|
interface Definition {
|
|
26
|
-
commands
|
|
35
|
+
/** List of commands to invoke */
|
|
36
|
+
commands: Invoke.CommandRequest<any>[];
|
|
37
|
+
/** Tell the server to not send a response */
|
|
27
38
|
suppressResponse?: boolean;
|
|
39
|
+
/** Whether this is sent as a timed request, if no timeout is specified a default is used */
|
|
28
40
|
timed?: boolean;
|
|
41
|
+
/** Timeout when sent as a timed request, if timed flag is not set it will be set automatically */
|
|
42
|
+
timeout?: Duration;
|
|
43
|
+
/** Interaction model revision to use, if not specified a default is used */
|
|
29
44
|
interactionModelRevision?: number;
|
|
45
|
+
/** Processing time of the command of the server assumed for this invoke. If not set a default is used */
|
|
46
|
+
expectedProcessingTime?: Duration;
|
|
47
|
+
/** Whether to use extended timeout for fail-safe messages. Overwrites the expectedProcessingTime if both are set */
|
|
48
|
+
useExtendedFailSafeMessageResponseTimeout?: boolean;
|
|
49
|
+
/** Whether to skip validation of command fields against schema */
|
|
50
|
+
skipValidation?: boolean;
|
|
30
51
|
}
|
|
31
|
-
function Command<const C extends ClusterType>(request: Invoke.CommandRequest<C
|
|
32
|
-
type CommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> =
|
|
33
|
-
|
|
52
|
+
function Command<const C extends ClusterType>(request: Invoke.CommandRequest<C>, skipValidation?: boolean): InvokeCommandData;
|
|
53
|
+
type CommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = ConcreteCommandRequest<C, CMD> | WildcardCommandRequest<C, CMD>;
|
|
54
|
+
type ConcreteCommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = WildcardCommandRequest<C, CMD> & {
|
|
55
|
+
endpoint: Specifier.Endpoint;
|
|
56
|
+
};
|
|
57
|
+
function ConcreteCommandRequest<const C extends ClusterType>(data: Invoke.ConcreteCommandRequest<C>): Invoke.ConcreteCommandRequest<any>;
|
|
58
|
+
type WildcardCommandRequest<C extends Specifier.Cluster = Specifier.Cluster, CMD extends Specifier.Command<Specifier.ClusterFor<C>> = Specifier.Command<Specifier.ClusterFor<C>>> = {
|
|
34
59
|
cluster: C;
|
|
35
60
|
command: CMD;
|
|
61
|
+
commandName?: string;
|
|
62
|
+
commandRef?: number;
|
|
36
63
|
} & Fields<Specifier.CommandFor<Specifier.ClusterFor<C>, CMD>["requestSchema"]>;
|
|
64
|
+
function WildcardCommandRequest<const C extends ClusterType>(data: Invoke.WildcardCommandRequest<C>): Invoke.WildcardCommandRequest<any>;
|
|
37
65
|
function commandOf<const R extends CommandRequest>(request: R): ClusterType.Command;
|
|
38
66
|
type Fields<S extends TlvSchema<any>> = S extends TlvSchema<void> ? {} : S extends TlvSchema<null> ? {
|
|
39
67
|
fields?: TypeFromSchema<S>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Invoke.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Invoke.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"Invoke.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Diagnostic, isObject } from "#general";
|
|
6
7
|
import { FALLBACK_INTERACTIONMODEL_REVISION } from "#session/Session.js";
|
|
8
|
+
import { FabricIndex, ObjectSchema } from "#types";
|
|
7
9
|
import { MalformedRequestError } from "./MalformedRequestError.js";
|
|
8
|
-
import { Specifier } from "./Specifier.js";
|
|
10
|
+
import { resolvePathForSpecifier, Specifier } from "./Specifier.js";
|
|
9
11
|
function Invoke(optionsOrData, ...commands) {
|
|
10
12
|
if (optionsOrData === void 0) {
|
|
11
13
|
throw new MalformedRequestError(`Invocation requires at least one command`);
|
|
@@ -13,44 +15,93 @@ function Invoke(optionsOrData, ...commands) {
|
|
|
13
15
|
let options;
|
|
14
16
|
if ("commands" in optionsOrData) {
|
|
15
17
|
options = optionsOrData;
|
|
18
|
+
commands = [...optionsOrData.commands, ...commands];
|
|
16
19
|
} else {
|
|
17
20
|
commands = [optionsOrData, ...commands];
|
|
18
21
|
options = {};
|
|
19
22
|
}
|
|
20
23
|
const {
|
|
21
|
-
commands: invokeRequests = [],
|
|
22
24
|
interactionModelRevision = FALLBACK_INTERACTIONMODEL_REVISION,
|
|
23
25
|
suppressResponse = false,
|
|
24
|
-
|
|
26
|
+
timeout,
|
|
27
|
+
expectedProcessingTime,
|
|
28
|
+
useExtendedFailSafeMessageResponseTimeout = false,
|
|
29
|
+
skipValidation = false
|
|
25
30
|
} = options;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
invokeRequests.push(entry);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (!invokeRequests?.length) {
|
|
31
|
+
let timedRequest = !!options.timed || !!timeout;
|
|
32
|
+
if (!commands?.length) {
|
|
32
33
|
throw new MalformedRequestError(`Invocation requires at least one command`);
|
|
33
34
|
}
|
|
35
|
+
if (commands.length > 1) {
|
|
36
|
+
const commandRefs = /* @__PURE__ */ new Set();
|
|
37
|
+
for (const { commandRef } of commands) {
|
|
38
|
+
if (commandRef === void 0) {
|
|
39
|
+
throw new MalformedRequestError(`CommandRef required when invoking multiple commands`);
|
|
40
|
+
}
|
|
41
|
+
if (commandRefs.has(commandRef)) {
|
|
42
|
+
throw new MalformedRequestError(`Duplicate commandRef ${commandRef} in multiple command invoke`);
|
|
43
|
+
}
|
|
44
|
+
commandRefs.add(commandRef);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const commandMap = /* @__PURE__ */ new Map();
|
|
48
|
+
const invokeRequests = commands.map((cmd) => {
|
|
49
|
+
const cmdData = Invoke.Command(cmd, skipValidation);
|
|
50
|
+
timedRequest ||= !!cmdData.timed;
|
|
51
|
+
commandMap.set(cmdData.commandRef, cmd);
|
|
52
|
+
return cmdData;
|
|
53
|
+
});
|
|
34
54
|
return {
|
|
55
|
+
timedRequest,
|
|
56
|
+
timeout,
|
|
35
57
|
invokeRequests,
|
|
36
58
|
interactionModelRevision,
|
|
37
59
|
suppressResponse,
|
|
38
|
-
|
|
60
|
+
expectedProcessingTime,
|
|
61
|
+
useExtendedFailSafeMessageResponseTimeout,
|
|
62
|
+
// Additional meta-data for client side processing
|
|
63
|
+
commands: commandMap,
|
|
64
|
+
[Diagnostic.value]: () => Diagnostic.list(
|
|
65
|
+
commands.map((cmd) => {
|
|
66
|
+
const { commandRef } = cmd;
|
|
67
|
+
const fields = "fields" in cmd ? cmd.fields : void 0;
|
|
68
|
+
return [
|
|
69
|
+
Diagnostic.strong(resolvePathForSpecifier(cmd)),
|
|
70
|
+
"with",
|
|
71
|
+
isObject(fields) ? Diagnostic.dict(fields) : "(no payload)",
|
|
72
|
+
commandRef !== void 0 ? `(ref ${commandRef})` : ""
|
|
73
|
+
];
|
|
74
|
+
})
|
|
75
|
+
)
|
|
39
76
|
};
|
|
40
77
|
}
|
|
41
78
|
((Invoke2) => {
|
|
42
|
-
function Command(request) {
|
|
79
|
+
function Command(request, skipValidation = false) {
|
|
43
80
|
const command = Invoke2.commandOf(request);
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
81
|
+
const { requestSchema, requestId, timed } = command;
|
|
82
|
+
const { commandRef } = request;
|
|
83
|
+
let fields = "fields" in request ? request.fields : void 0;
|
|
84
|
+
if (requestSchema instanceof ObjectSchema) {
|
|
85
|
+
if (fields === void 0) {
|
|
86
|
+
fields = {};
|
|
87
|
+
}
|
|
88
|
+
if (requestSchema.isFabricScoped && fields.fabricIndex === void 0) {
|
|
89
|
+
fields.fabricIndex = FabricIndex.NO_FABRIC;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!skipValidation) {
|
|
93
|
+
requestSchema.validate(fields);
|
|
47
94
|
}
|
|
95
|
+
const commandFields = requestSchema.encodeTlv(fields);
|
|
48
96
|
const result = {
|
|
49
97
|
commandPath: {
|
|
98
|
+
// Endpoint id is added below if not wildcard
|
|
50
99
|
clusterId: Specifier.clusterFor(request.cluster).id,
|
|
51
|
-
commandId:
|
|
100
|
+
commandId: requestId
|
|
52
101
|
},
|
|
53
|
-
commandFields
|
|
102
|
+
commandFields,
|
|
103
|
+
timed: timed ?? false,
|
|
104
|
+
commandRef
|
|
54
105
|
};
|
|
55
106
|
const endpointId = Specifier.endpointIdOf(request);
|
|
56
107
|
if (endpointId !== void 0) {
|
|
@@ -59,6 +110,20 @@ function Invoke(optionsOrData, ...commands) {
|
|
|
59
110
|
return result;
|
|
60
111
|
}
|
|
61
112
|
Invoke2.Command = Command;
|
|
113
|
+
function ConcreteCommandRequest(data) {
|
|
114
|
+
if (data.endpoint === void 0) {
|
|
115
|
+
throw new MalformedRequestError(`ConcreteCommandRequest requires an endpoint`);
|
|
116
|
+
}
|
|
117
|
+
return data;
|
|
118
|
+
}
|
|
119
|
+
Invoke2.ConcreteCommandRequest = ConcreteCommandRequest;
|
|
120
|
+
function WildcardCommandRequest(data) {
|
|
121
|
+
if ("endpoint" in data && data.endpoint !== void 0) {
|
|
122
|
+
throw new MalformedRequestError(`ConcreteCommandRequest must not have an endpoint`);
|
|
123
|
+
}
|
|
124
|
+
return data;
|
|
125
|
+
}
|
|
126
|
+
Invoke2.WildcardCommandRequest = WildcardCommandRequest;
|
|
62
127
|
function commandOf(request) {
|
|
63
128
|
if (typeof request.command === "string") {
|
|
64
129
|
const cluster = Specifier.clusterFor(request.cluster);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/request/Invoke.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,0CAA0C;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["Invoke"]
|
|
6
6
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
6
|
+
import { AttributePath, ClusterType, DataVersionFilter, EventFilter, EventPath, GlobalAttributes, ReadRequest } from "#types";
|
|
7
7
|
import { Specifier } from "./Specifier.js";
|
|
8
8
|
/**
|
|
9
9
|
* A read request formulated using Matter protocol semantics.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Read.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Read.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"Read.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Read.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { camelize } from "#general";
|
|
7
|
-
import {
|
|
6
|
+
import { camelize, Diagnostic } from "#general";
|
|
7
|
+
import { Specification } from "#model";
|
|
8
8
|
import { MalformedRequestError } from "./MalformedRequestError.js";
|
|
9
|
-
import { Specifier } from "./Specifier.js";
|
|
9
|
+
import { resolvePathForSpecifier, Specifier } from "./Specifier.js";
|
|
10
10
|
function Read(optionsOrSelector, ...selectors) {
|
|
11
11
|
if (optionsOrSelector === void 0) {
|
|
12
12
|
throw new MalformedRequestError(`Read action designates no attributes or events`);
|
|
@@ -21,7 +21,15 @@ function Read(optionsOrSelector, ...selectors) {
|
|
|
21
21
|
let { attributes: attributeRequests, versionFilters, events: eventRequests, eventFilters } = options;
|
|
22
22
|
const result = {
|
|
23
23
|
isFabricFiltered: options.fabricFilter ?? true,
|
|
24
|
-
interactionModelRevision: options.interactionModelRevision ??
|
|
24
|
+
interactionModelRevision: options.interactionModelRevision ?? Specification.INTERACTION_MODEL_REVISION,
|
|
25
|
+
[Diagnostic.value]: () => Diagnostic.dict({
|
|
26
|
+
attributes: attributeRequests?.length ? attributeRequests?.map((path) => resolvePathForSpecifier(path)).join(", ") : void 0,
|
|
27
|
+
events: eventRequests?.length ? eventRequests?.map((path) => resolvePathForSpecifier(path)).join(", ") : void 0,
|
|
28
|
+
dataVersionFilters: versionFilters?.length ? versionFilters.map(
|
|
29
|
+
({ path: { endpointId, clusterId }, dataVersion }) => `${endpointId}/${clusterId}=${dataVersion}`
|
|
30
|
+
).join(", ") : void 0,
|
|
31
|
+
eventFilters: eventFilters?.length ? eventFilters.map(({ nodeId, eventMin }) => `${nodeId}=${eventMin}`).join(", ") : void 0
|
|
32
|
+
})
|
|
25
33
|
};
|
|
26
34
|
for (const selector of selectors) {
|
|
27
35
|
reifySelector(selector);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/request/Read.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["Read"]
|
|
6
6
|
}
|
|
@@ -33,7 +33,7 @@ export declare namespace Specifier {
|
|
|
33
33
|
*/
|
|
34
34
|
type Command<C extends ClusterType = ClusterType> = ClusterType.Command | (string & keyof C["commands"]);
|
|
35
35
|
/**
|
|
36
|
-
* An event specifier may be the name of a
|
|
36
|
+
* An event specifier may be the name of a cluster event or an event object.
|
|
37
37
|
*/
|
|
38
38
|
type Event<C extends ClusterType = ClusterType> = ClusterType.Event | (string & keyof C["events"]);
|
|
39
39
|
/**
|
|
@@ -54,6 +54,7 @@ export declare namespace Specifier {
|
|
|
54
54
|
* Extract a command type from a cluster type and command specifier.
|
|
55
55
|
*/
|
|
56
56
|
type CommandFor<C extends ClusterType, CMD extends Specifier.Command<C>> = CMD extends string ? C["commands"][CMD] : CMD extends ClusterType.Command ? CMD : never;
|
|
57
|
+
function commandFor<const C extends ClusterType, const CMD extends Specifier.Command<C>>(cluster: C | undefined, specifier: CMD): CommandFor<C, CMD>;
|
|
57
58
|
/**
|
|
58
59
|
* Extract an event object from a cluster and event specifier.
|
|
59
60
|
*/
|
|
@@ -79,4 +80,18 @@ export declare namespace Specifier {
|
|
|
79
80
|
endpoint?: Endpoint;
|
|
80
81
|
}>(request: T): EndpointNumber | undefined;
|
|
81
82
|
}
|
|
83
|
+
export declare function toWildcardOrHexPath(name: string, value: number | bigint | undefined): string;
|
|
84
|
+
/**
|
|
85
|
+
* Resolve a path into a human readable textual form for logging
|
|
86
|
+
* TODO: Add a Diagnostic display formatter for this
|
|
87
|
+
*/
|
|
88
|
+
export declare function resolvePathForSpecifier<const C extends ClusterType>(location: {
|
|
89
|
+
endpoint?: Specifier.Endpoint;
|
|
90
|
+
cluster?: Specifier.Cluster;
|
|
91
|
+
attribute?: Specifier.Attribute<Specifier.ClusterFor<C>>;
|
|
92
|
+
event?: Specifier.Event<Specifier.ClusterFor<C>>;
|
|
93
|
+
command?: Specifier.Command<Specifier.ClusterFor<C>>;
|
|
94
|
+
isUrgent?: boolean;
|
|
95
|
+
listIndex?: number | null;
|
|
96
|
+
}): string;
|
|
82
97
|
//# sourceMappingURL=Specifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Specifier.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Specifier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAoB,MAAM,QAAQ,CAAC;AAK7F;;GAEG;AACH,yBAAiB,SAAS,CAAC;IACvB;;;OAGG;IACH,KAAY,OAAO,GAAG,WAAW,GAAG;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,CAAC;IAE7D;;;OAGG;IACH,KAAY,QAAQ,GACd,cAAc,GACd;QAAE,MAAM,EAAE,cAAc,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEvF;;OAEG;IACH,KAAY,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IACnD,WAAW,CAAC,SAAS,GACrB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,GAChC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEhC;;OAEG;IACH,KAAY,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,WAAW,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAEhH;;OAEG;IACH,KAAY,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1G;;OAEG;IACH,KAAY,UAAU,CAAC,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,WAAW,GAC3D,CAAC,GACD,CAAC,SAAS;QAAE,OAAO,EAAE,WAAW,CAAA;KAAE,GAChC,CAAC,CAAC,SAAS,CAAC,GACZ,KAAK,CAAC;IAEd;;OAEG;IACH,SAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,CAAC,iBAK/D;IAED;;OAEG;IACH,SAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,yBAmB5F;IAED;;OAEG;IACH,KAAY,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,SAAS,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,MAAM,GAC9F,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAClB,GAAG,SAAS,WAAW,CAAC,OAAO,GAC7B,GAAG,GACH,KAAK,CAAC;IAEd;;OAEG;IACH,SAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,qBAepF;IAED;;OAEG;IACH,KAAY,SAAS,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAA;KAAE,GAC3F,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAClC,SAAS,CAAC;IAEhB;;OAEG;IACH,SAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAKzF;IAED;;OAEG;IACH,SAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,EAAE,OAAO,EAAE,CAAC,GAAG,cAAc,GAAG,SAAS,CAK5G;CACJ"}
|
|
1
|
+
{"version":3,"file":"Specifier.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Specifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,20 @@ var Specifier;
|
|
|
33
33
|
return attr;
|
|
34
34
|
}
|
|
35
35
|
Specifier2.attributeFor = attributeFor;
|
|
36
|
+
function commandFor(cluster, specifier) {
|
|
37
|
+
if (typeof specifier !== "string") {
|
|
38
|
+
return specifier;
|
|
39
|
+
}
|
|
40
|
+
if (cluster === void 0) {
|
|
41
|
+
throw new MalformedRequestError(`Cannot designate command "${specifier}" without a cluster`);
|
|
42
|
+
}
|
|
43
|
+
const command = cluster.commands?.[specifier];
|
|
44
|
+
if (command === void 0) {
|
|
45
|
+
throw new MalformedRequestError(`Cluster ${cluster.name} does not define command ${specifier}`);
|
|
46
|
+
}
|
|
47
|
+
return command;
|
|
48
|
+
}
|
|
49
|
+
Specifier2.commandFor = commandFor;
|
|
36
50
|
function eventFor(cluster, specifier) {
|
|
37
51
|
if (typeof specifier === "object") {
|
|
38
52
|
return specifier;
|
|
@@ -62,7 +76,48 @@ var Specifier;
|
|
|
62
76
|
}
|
|
63
77
|
Specifier2.endpointIdOf = endpointIdOf;
|
|
64
78
|
})(Specifier || (Specifier = {}));
|
|
79
|
+
function toWildcardOrHexPath(name, value) {
|
|
80
|
+
if (value === void 0) {
|
|
81
|
+
return "*";
|
|
82
|
+
}
|
|
83
|
+
return `${name ? `${name}:` : ""}0x${value.toString(16)}`;
|
|
84
|
+
}
|
|
85
|
+
function resolvePathForSpecifier(location) {
|
|
86
|
+
const endpointId = Specifier.endpointIdOf(location);
|
|
87
|
+
const cluster = location.cluster ? Specifier.clusterFor(location.cluster) : void 0;
|
|
88
|
+
const attribute = location.attribute && cluster ? Specifier.attributeFor(cluster, location.attribute) : void 0;
|
|
89
|
+
const event = location.event && cluster ? Specifier.eventFor(cluster, location.event) : void 0;
|
|
90
|
+
const command = location.command && cluster ? Specifier.commandFor(cluster, location.command) : void 0;
|
|
91
|
+
const isUrgentString = "isUrgent" in location && location.isUrgent ? "!" : "";
|
|
92
|
+
const listIndexString = "listIndex" in location && location.listIndex === null ? "[ADD]" : "";
|
|
93
|
+
const postString = `${listIndexString}${isUrgentString}`;
|
|
94
|
+
const clusterId = cluster?.id;
|
|
95
|
+
const elementId = attribute ? attribute.id : event ? event.id : command ? command.requestId : void 0;
|
|
96
|
+
if (endpointId === void 0) {
|
|
97
|
+
return `*.${toWildcardOrHexPath("", clusterId)}.${toWildcardOrHexPath("", elementId)}${postString}`;
|
|
98
|
+
}
|
|
99
|
+
const endpointName = toWildcardOrHexPath("", endpointId);
|
|
100
|
+
if (cluster === void 0 || clusterId === void 0) {
|
|
101
|
+
return `${endpointName}.*.${toWildcardOrHexPath("", elementId)}${postString}`;
|
|
102
|
+
}
|
|
103
|
+
const clusterName = toWildcardOrHexPath(cluster.name, clusterId);
|
|
104
|
+
if (elementId !== void 0) {
|
|
105
|
+
if (event) {
|
|
106
|
+
return `${endpointName}.${clusterName}.${toWildcardOrHexPath(typeof location.event === "string" ? location.event : "?", elementId)}${postString}`;
|
|
107
|
+
} else if (attribute) {
|
|
108
|
+
return `${endpointName}.${clusterName}.${toWildcardOrHexPath(typeof location.attribute === "string" ? location.attribute : "?", elementId)}${postString}`;
|
|
109
|
+
} else if (command) {
|
|
110
|
+
return `${endpointName}.${clusterName}.${toWildcardOrHexPath(typeof location.command === "string" ? location.command : "?", elementId)}${postString}`;
|
|
111
|
+
} else {
|
|
112
|
+
return "unknown";
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
return `${endpointName}.${clusterName}.*${postString}`;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
65
118
|
export {
|
|
66
|
-
Specifier
|
|
119
|
+
Specifier,
|
|
120
|
+
resolvePathForSpecifier,
|
|
121
|
+
toWildcardOrHexPath
|
|
67
122
|
};
|
|
68
123
|
//# sourceMappingURL=Specifier.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/request/Specifier.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAA4D,wBAAwB;AACpF,SAAS,6BAA6B;AAEtC,MAAM,gBAAgB,iBAAiB,CAAC,CAAC;AAKlC,IAAU;AAAA,CAAV,CAAUA,eAAV;AA6CI,WAAS,WAAoC,WAAc;AAC9D,QAAI,aAAa,WAAW;AACxB,aAAO,UAAU,SAAS;AAAA,IAC9B;AACA,WAAO;AAAA,EACX;AALO,EAAAA,WAAS;AAUT,WAAS,aAAa,SAAkC,WAAgC;AAC3F,QAAI,OAAO,cAAc,UAAU;AAC/B,aAAO;AAAA,IACX;AAEA,QAAI,YAAY,QAAW;AACvB,YAAMC,QAAO,cAAc,SAAS;AACpC,UAAIA,UAAS,QAAW;AACpB,cAAM,IAAI,sBAAsB,2BAA2B,SAAS,qBAAqB;AAAA,MAC7F;AACA,aAAOA;AAAA,IACX;AAEA,UAAM,OAAO,QAAQ,aAAa,SAAS;AAC3C,QAAI,SAAS,QAAW;AACpB,YAAM,IAAI,sBAAsB,WAAW,QAAQ,IAAI,8BAA8B,SAAS,EAAE;AAAA,IACpG;AAEA,WAAO;AAAA,EACX;AAnBO,EAAAD,WAAS;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["Specifier", "attr"]
|
|
6
6
|
}
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { Duration } from "#general";
|
|
6
7
|
import { AttributeData, ClusterType, WriteRequest } from "#types";
|
|
7
8
|
import { Specifier } from "./Specifier.js";
|
|
8
9
|
export interface Write extends WriteRequest {
|
|
9
|
-
/** Timeout only relevant for Client Interactions */
|
|
10
|
-
timeout?:
|
|
10
|
+
/** Timeout only relevant for Client Interactions with a required TimedRequest flagging */
|
|
11
|
+
timeout?: Duration;
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
14
|
* Formulate a write-request using Matter numeric IDs.
|
|
@@ -25,8 +26,9 @@ export declare namespace Write {
|
|
|
25
26
|
interface Options {
|
|
26
27
|
writes?: AttributeData[];
|
|
27
28
|
timed?: boolean;
|
|
28
|
-
timeout?:
|
|
29
|
+
timeout?: Duration;
|
|
29
30
|
interactionModelRevision?: number;
|
|
31
|
+
chunkLists?: boolean;
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Selects attributes to Write. Limits fields to legal permutations per the Matter specification.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Write.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"Write.d.ts","sourceRoot":"","sources":["../../../../src/action/request/Write.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAc,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAe,aAAa,EAA0B,WAAW,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEvG,OAAO,EAA2B,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAWpE,MAAM,WAAW,KAAM,SAAQ,YAAY;IACvC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAErD;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC;AAEjF;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC;AAiHzD,yBAAiB,KAAK,CAAC;IACnB,UAAiB,OAAO;QACpB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,UAAU,CAAC,EAAE,OAAO,CAAC;KACxB;IAED;;OAEG;IACH,KAAY,SAAS,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,CACnE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GACrB,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAClC,GAAG;QACA,IAAI,EAAE,WAAW,CAAC;QAClB,KAAK,EAAE,GAAG,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,SAAgB,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAKrG;IAED,UAAiB,SAAS,CAAC;QACvB,UAAiB,QAAQ,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO;YACjD,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC;YACX,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7G;QAED,UAAiB,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO;YACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;YACrB,OAAO,EAAE,CAAC,CAAC;YACX,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7G;KACJ;CACJ"}
|
|
@@ -3,9 +3,19 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { AccessControl } from "#clusters/access-control";
|
|
7
|
+
import { Diagnostic } from "#general";
|
|
8
|
+
import { Specification } from "#model";
|
|
9
|
+
import { ArraySchema } from "#types";
|
|
7
10
|
import { MalformedRequestError } from "./MalformedRequestError.js";
|
|
8
|
-
import { Specifier } from "./Specifier.js";
|
|
11
|
+
import { resolvePathForSpecifier, Specifier } from "./Specifier.js";
|
|
12
|
+
const AclClusterId = AccessControl.Complete.id;
|
|
13
|
+
const AclAttributeId = AccessControl.Complete.attributes.acl.id;
|
|
14
|
+
const AclExtensionAttributeId = AccessControl.Complete.attributes.extension.id;
|
|
15
|
+
function isAclOrExtensionPath(path) {
|
|
16
|
+
const { clusterId, attributeId } = path;
|
|
17
|
+
return clusterId === AclClusterId && (attributeId === AclAttributeId || attributeId === AclExtensionAttributeId);
|
|
18
|
+
}
|
|
9
19
|
function Write(optionsOrData, ...data) {
|
|
10
20
|
if (optionsOrData === void 0) {
|
|
11
21
|
throw new MalformedRequestError(`Write action must have options or data`);
|
|
@@ -17,11 +27,21 @@ function Write(optionsOrData, ...data) {
|
|
|
17
27
|
} else {
|
|
18
28
|
options = optionsOrData;
|
|
19
29
|
}
|
|
20
|
-
const { writes: writeRequests = [] } = options;
|
|
30
|
+
const { writes: writeRequests = [], timed, timeout, chunkLists } = options;
|
|
21
31
|
const result = {
|
|
22
|
-
timedRequest: !!
|
|
32
|
+
timedRequest: !!timed || !!timeout,
|
|
33
|
+
timeout,
|
|
23
34
|
writeRequests,
|
|
24
|
-
|
|
35
|
+
moreChunkedMessages: false,
|
|
36
|
+
interactionModelRevision: options.interactionModelRevision ?? Specification.INTERACTION_MODEL_REVISION,
|
|
37
|
+
[Diagnostic.value]: () => Diagnostic.list(
|
|
38
|
+
data.map((entry) => {
|
|
39
|
+
const { version, value } = entry;
|
|
40
|
+
return `${resolvePathForSpecifier(entry)} = ${Diagnostic.json(
|
|
41
|
+
value
|
|
42
|
+
)}${version !== void 0 ? `(version=${version})` : ""}`;
|
|
43
|
+
})
|
|
44
|
+
)
|
|
25
45
|
};
|
|
26
46
|
for (const entry of data) {
|
|
27
47
|
reifyData(entry);
|
|
@@ -52,15 +72,35 @@ function Write(optionsOrData, ...data) {
|
|
|
52
72
|
dataVersion
|
|
53
73
|
};
|
|
54
74
|
for (const specifier of attributes) {
|
|
75
|
+
const clusterId = cluster.id;
|
|
55
76
|
const attribute = Specifier.attributeFor(cluster, specifier);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
const { schema, id: attributeId } = attribute;
|
|
78
|
+
if (chunkLists && Array.isArray(value) && schema instanceof ArraySchema && // As implemented for Matter 1.4.2 in https://github.com/project-chip/connectedhomeip/pull/38263
|
|
79
|
+
// Acl writes will no longer be chunked by default, all others still
|
|
80
|
+
// Will be streamlined later ... see https://github.com/project-chip/connectedhomeip/issues/38270
|
|
81
|
+
!isAclOrExtensionPath({ clusterId, attributeId })) {
|
|
82
|
+
writeRequests.push(
|
|
83
|
+
...schema.encodeAsChunkedArray(value, { forWriteInteraction: true }).map(({ element: data3, listIndex }) => ({
|
|
84
|
+
path: {
|
|
85
|
+
...prototype.path,
|
|
86
|
+
attributeId: attribute.id,
|
|
87
|
+
listIndex
|
|
88
|
+
},
|
|
89
|
+
data: data3,
|
|
90
|
+
dataVersion
|
|
91
|
+
}))
|
|
92
|
+
);
|
|
93
|
+
} else {
|
|
94
|
+
writeRequests.push({
|
|
95
|
+
...prototype,
|
|
96
|
+
path: {
|
|
97
|
+
...prototype.path,
|
|
98
|
+
attributeId: attribute.id
|
|
99
|
+
},
|
|
100
|
+
data: attribute.schema.encodeTlv(value, { forWriteInteraction: true })
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
result.timedRequest ||= attribute.timed;
|
|
64
104
|
}
|
|
65
105
|
}
|
|
66
106
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/action/request/Write.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["data", "Write"]
|
|
6
6
|
}
|