@matter/node 0.15.2-alpha.0-20250717-3607eeac6 → 0.15.2-alpha.0-20250718-7e661c331
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/behavior/internal/BehaviorBacking.d.ts +2 -2
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js +6 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts +1 -6
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.js +0 -5
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts +0 -3
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.js +0 -15
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js +7 -3
- package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/cjs/behavior/supervision/RootSupervisor.d.ts +2 -2
- package/dist/cjs/behavior/supervision/RootSupervisor.d.ts.map +1 -1
- package/dist/cjs/behavior/supervision/RootSupervisor.js +12 -10
- package/dist/cjs/behavior/supervision/RootSupervisor.js.map +1 -1
- package/dist/cjs/node/ClientNode.d.ts.map +1 -1
- package/dist/cjs/node/ClientNode.js +2 -2
- package/dist/cjs/node/ClientNode.js.map +1 -1
- package/dist/cjs/node/ServerNode.js +2 -2
- package/dist/cjs/node/ServerNode.js.map +1 -1
- package/dist/cjs/node/client/ClientEndpointInitializer.d.ts.map +1 -1
- package/dist/cjs/node/client/ClientEndpointInitializer.js +5 -4
- package/dist/cjs/node/client/ClientEndpointInitializer.js.map +2 -2
- package/dist/cjs/node/client/ClientStructure.d.ts +14 -2
- package/dist/cjs/node/client/ClientStructure.d.ts.map +1 -1
- package/dist/cjs/node/client/ClientStructure.js +21 -3
- package/dist/cjs/node/client/ClientStructure.js.map +1 -1
- package/dist/cjs/node/server/ServerEndpointInitializer.d.ts.map +1 -1
- package/dist/cjs/node/server/ServerEndpointInitializer.js +2 -1
- package/dist/cjs/node/server/ServerEndpointInitializer.js.map +1 -1
- package/dist/cjs/node/server/ServerEnvironment.d.ts.map +1 -1
- package/dist/cjs/node/server/ServerEnvironment.js +0 -2
- package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
- package/dist/cjs/storage/EndpointStore.d.ts +4 -4
- package/dist/cjs/storage/EndpointStore.d.ts.map +1 -1
- package/dist/cjs/storage/EndpointStore.js +9 -7
- package/dist/cjs/storage/EndpointStore.js.map +1 -1
- package/dist/cjs/storage/client/ClientEndpointStore.d.ts +24 -0
- package/dist/cjs/storage/client/ClientEndpointStore.d.ts.map +1 -0
- package/dist/cjs/storage/client/ClientEndpointStore.js +67 -0
- package/dist/cjs/storage/client/ClientEndpointStore.js.map +6 -0
- package/dist/cjs/storage/client/ClientNodeStore.d.ts +13 -3
- package/dist/cjs/storage/client/ClientNodeStore.d.ts.map +1 -1
- package/dist/cjs/storage/client/ClientNodeStore.js +24 -3
- package/dist/cjs/storage/client/ClientNodeStore.js.map +1 -1
- package/dist/cjs/storage/client/ClientNodeStores.d.ts +2 -2
- package/dist/cjs/storage/client/ClientNodeStores.d.ts.map +1 -1
- package/dist/cjs/storage/client/ClientNodeStores.js +1 -1
- package/dist/cjs/storage/client/ClientNodeStores.js.map +1 -1
- package/dist/cjs/storage/client/DatasourceCache.d.ts +2 -2
- package/dist/cjs/storage/client/DatasourceCache.d.ts.map +1 -1
- package/dist/cjs/storage/client/DatasourceCache.js +5 -3
- package/dist/cjs/storage/client/DatasourceCache.js.map +1 -1
- package/dist/cjs/storage/client/RemoteWriteParticipant.d.ts +30 -0
- package/dist/cjs/storage/client/RemoteWriteParticipant.d.ts.map +1 -0
- package/dist/cjs/storage/client/RemoteWriteParticipant.js +66 -0
- package/dist/cjs/storage/client/RemoteWriteParticipant.js.map +6 -0
- package/dist/cjs/storage/client/RemoteWriter.d.ts +29 -0
- package/dist/cjs/storage/client/RemoteWriter.d.ts.map +1 -0
- package/dist/cjs/storage/client/RemoteWriter.js +73 -0
- package/dist/cjs/storage/client/RemoteWriter.js.map +6 -0
- package/dist/cjs/storage/server/DatasourceStore.d.ts +0 -3
- package/dist/cjs/storage/server/DatasourceStore.d.ts.map +1 -1
- package/dist/cjs/storage/server/DatasourceStore.js.map +1 -1
- package/dist/cjs/storage/server/ServerEndpointStore.d.ts +4 -0
- package/dist/cjs/storage/server/ServerEndpointStore.d.ts.map +1 -1
- package/dist/cjs/storage/server/ServerEndpointStore.js +8 -0
- package/dist/cjs/storage/server/ServerEndpointStore.js.map +1 -1
- package/dist/cjs/storage/server/ServerNodeStore.d.ts +3 -2
- package/dist/cjs/storage/server/ServerNodeStore.d.ts.map +1 -1
- package/dist/cjs/storage/server/ServerNodeStore.js.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -2
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js +6 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts +1 -6
- package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.js +0 -5
- package/dist/esm/behavior/internal/ClientBehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts +0 -3
- package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/ServerBehaviorBacking.js +0 -15
- package/dist/esm/behavior/internal/ServerBehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.js +7 -3
- package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/esm/behavior/supervision/RootSupervisor.d.ts +2 -2
- package/dist/esm/behavior/supervision/RootSupervisor.d.ts.map +1 -1
- package/dist/esm/behavior/supervision/RootSupervisor.js +12 -10
- package/dist/esm/behavior/supervision/RootSupervisor.js.map +1 -1
- package/dist/esm/node/ClientNode.d.ts.map +1 -1
- package/dist/esm/node/ClientNode.js +2 -2
- package/dist/esm/node/ClientNode.js.map +1 -1
- package/dist/esm/node/ServerNode.js +2 -2
- package/dist/esm/node/ServerNode.js.map +1 -1
- package/dist/esm/node/client/ClientEndpointInitializer.d.ts.map +1 -1
- package/dist/esm/node/client/ClientEndpointInitializer.js +5 -4
- package/dist/esm/node/client/ClientEndpointInitializer.js.map +2 -2
- package/dist/esm/node/client/ClientStructure.d.ts +14 -2
- package/dist/esm/node/client/ClientStructure.d.ts.map +1 -1
- package/dist/esm/node/client/ClientStructure.js +21 -3
- package/dist/esm/node/client/ClientStructure.js.map +1 -1
- package/dist/esm/node/server/ServerEndpointInitializer.d.ts.map +1 -1
- package/dist/esm/node/server/ServerEndpointInitializer.js +2 -1
- package/dist/esm/node/server/ServerEndpointInitializer.js.map +1 -1
- package/dist/esm/node/server/ServerEnvironment.d.ts.map +1 -1
- package/dist/esm/node/server/ServerEnvironment.js +0 -2
- package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
- package/dist/esm/storage/EndpointStore.d.ts +4 -4
- package/dist/esm/storage/EndpointStore.d.ts.map +1 -1
- package/dist/esm/storage/EndpointStore.js +9 -7
- package/dist/esm/storage/EndpointStore.js.map +1 -1
- package/dist/esm/storage/client/ClientEndpointStore.d.ts +24 -0
- package/dist/esm/storage/client/ClientEndpointStore.d.ts.map +1 -0
- package/dist/esm/storage/client/ClientEndpointStore.js +47 -0
- package/dist/esm/storage/client/ClientEndpointStore.js.map +6 -0
- package/dist/esm/storage/client/ClientNodeStore.d.ts +13 -3
- package/dist/esm/storage/client/ClientNodeStore.d.ts.map +1 -1
- package/dist/esm/storage/client/ClientNodeStore.js +24 -3
- package/dist/esm/storage/client/ClientNodeStore.js.map +1 -1
- package/dist/esm/storage/client/ClientNodeStores.d.ts +2 -2
- package/dist/esm/storage/client/ClientNodeStores.d.ts.map +1 -1
- package/dist/esm/storage/client/ClientNodeStores.js +1 -1
- package/dist/esm/storage/client/ClientNodeStores.js.map +1 -1
- package/dist/esm/storage/client/DatasourceCache.d.ts +2 -2
- package/dist/esm/storage/client/DatasourceCache.d.ts.map +1 -1
- package/dist/esm/storage/client/DatasourceCache.js +5 -3
- package/dist/esm/storage/client/DatasourceCache.js.map +1 -1
- package/dist/esm/storage/client/RemoteWriteParticipant.d.ts +30 -0
- package/dist/esm/storage/client/RemoteWriteParticipant.d.ts.map +1 -0
- package/dist/esm/storage/client/RemoteWriteParticipant.js +46 -0
- package/dist/esm/storage/client/RemoteWriteParticipant.js.map +6 -0
- package/dist/esm/storage/client/RemoteWriter.d.ts +29 -0
- package/dist/esm/storage/client/RemoteWriter.d.ts.map +1 -0
- package/dist/esm/storage/client/RemoteWriter.js +53 -0
- package/dist/esm/storage/client/RemoteWriter.js.map +6 -0
- package/dist/esm/storage/server/DatasourceStore.d.ts +0 -3
- package/dist/esm/storage/server/DatasourceStore.d.ts.map +1 -1
- package/dist/esm/storage/server/DatasourceStore.js.map +1 -1
- package/dist/esm/storage/server/ServerEndpointStore.d.ts +4 -0
- package/dist/esm/storage/server/ServerEndpointStore.d.ts.map +1 -1
- package/dist/esm/storage/server/ServerEndpointStore.js +8 -0
- package/dist/esm/storage/server/ServerEndpointStore.js.map +1 -1
- package/dist/esm/storage/server/ServerNodeStore.d.ts +3 -2
- package/dist/esm/storage/server/ServerNodeStore.d.ts.map +1 -1
- package/dist/esm/storage/server/ServerNodeStore.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/internal/BehaviorBacking.ts +3 -2
- package/src/behavior/internal/ClientBehaviorBacking.ts +0 -15
- package/src/behavior/internal/ServerBehaviorBacking.ts +0 -19
- package/src/behavior/state/managed/Datasource.ts +10 -3
- package/src/behavior/supervision/RootSupervisor.ts +18 -15
- package/src/node/ClientNode.ts +4 -2
- package/src/node/ServerNode.ts +2 -2
- package/src/node/client/ClientEndpointInitializer.ts +7 -3
- package/src/node/client/ClientStructure.ts +26 -6
- package/src/node/server/ServerEndpointInitializer.ts +3 -1
- package/src/node/server/ServerEnvironment.ts +0 -2
- package/src/storage/EndpointStore.ts +9 -9
- package/src/storage/client/ClientEndpointStore.ts +53 -0
- package/src/storage/client/ClientNodeStore.ts +38 -6
- package/src/storage/client/ClientNodeStores.ts +3 -4
- package/src/storage/client/DatasourceCache.ts +10 -7
- package/src/storage/client/RemoteWriteParticipant.ts +62 -0
- package/src/storage/client/RemoteWriter.ts +81 -0
- package/src/storage/server/DatasourceStore.ts +1 -6
- package/src/storage/server/ServerEndpointStore.ts +9 -0
- package/src/storage/server/ServerNodeStore.ts +4 -2
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { InternalError } from "#general";
|
|
8
|
+
import { ClientStructure } from "#node/client/ClientStructure.js";
|
|
9
|
+
import type { ClientNode } from "#node/ClientNode.js";
|
|
10
|
+
import { Write, WriteResult, type Val } from "#protocol";
|
|
11
|
+
import type { ClusterId, ClusterType, EndpointNumber } from "#types";
|
|
12
|
+
import type { ClientNodeStore } from "./ClientNodeStore.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Persistence handler for {@link ClientNodeStore}.
|
|
16
|
+
*
|
|
17
|
+
* A remote writer conveys updates to the remote node. This performs actual persistence for client nodes where the
|
|
18
|
+
* local store is just a cache and the source of truth is on the remote device.
|
|
19
|
+
*/
|
|
20
|
+
export interface RemoteWriter {
|
|
21
|
+
(request: RemoteWriter.Request): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const attrCache = new WeakMap<ClusterType, Record<string, ClusterType.Attribute>>();
|
|
25
|
+
|
|
26
|
+
export function RemoteWriter(node: ClientNode, structure: ClientStructure): RemoteWriter {
|
|
27
|
+
return async function writeRemote(request: RemoteWriter.Request) {
|
|
28
|
+
const attrWrites = Array<Write.Attribute>();
|
|
29
|
+
for (const { number, behaviorId, values } of request) {
|
|
30
|
+
const cluster = structure.clusterFor(number, Number.parseInt(behaviorId) as ClusterId);
|
|
31
|
+
if (cluster === undefined) {
|
|
32
|
+
throw new InternalError(`Cannot remote write to non-cluster behavior ${behaviorId}`);
|
|
33
|
+
}
|
|
34
|
+
const attrs = attrsFor(cluster);
|
|
35
|
+
|
|
36
|
+
for (const id in values) {
|
|
37
|
+
const attr = attrs[id];
|
|
38
|
+
if (attr === undefined) {
|
|
39
|
+
if (id.startsWith("__")) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
throw new InternalError(`Cannot write unknown attribute ${id} for ${behaviorId}`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
attrWrites.push(
|
|
47
|
+
Write.Attribute({
|
|
48
|
+
endpoint: number,
|
|
49
|
+
cluster,
|
|
50
|
+
attributes: [attrs[id]],
|
|
51
|
+
value: values[id],
|
|
52
|
+
}),
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const write = Write(...attrWrites);
|
|
58
|
+
const response = await node.interaction.write(write);
|
|
59
|
+
WriteResult.assertSuccess(response);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export namespace RemoteWriter {
|
|
64
|
+
export interface EndpointUpdateRequest {
|
|
65
|
+
number: EndpointNumber;
|
|
66
|
+
behaviorId: string;
|
|
67
|
+
values: Val.Struct;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface Request extends Array<EndpointUpdateRequest> {}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function attrsFor(cluster: ClusterType) {
|
|
74
|
+
let attrs = attrCache.get(cluster);
|
|
75
|
+
if (attrs) {
|
|
76
|
+
return attrs;
|
|
77
|
+
}
|
|
78
|
+
attrs = Object.fromEntries(Object.values(cluster.attributes).map(attr => [attr.id, attr]));
|
|
79
|
+
attrCache.set(cluster, attrs);
|
|
80
|
+
return attrs;
|
|
81
|
+
}
|
|
@@ -67,8 +67,7 @@ function participantFor(transaction: Transaction, endpointStore: EndpointStore)
|
|
|
67
67
|
},
|
|
68
68
|
|
|
69
69
|
commit1(): MaybePromise {
|
|
70
|
-
// Persistence serves phase one commit; values are added directly to
|
|
71
|
-
// the journal so nothing necessary here
|
|
70
|
+
// Persistence serves phase one commit; values are added directly to the journal so nothing necessary here
|
|
72
71
|
},
|
|
73
72
|
|
|
74
73
|
async commit2() {
|
|
@@ -86,7 +85,3 @@ function participantFor(transaction: Transaction, endpointStore: EndpointStore)
|
|
|
86
85
|
|
|
87
86
|
return participant;
|
|
88
87
|
}
|
|
89
|
-
|
|
90
|
-
export namespace DatasourceStore {
|
|
91
|
-
export type Type = typeof DatasourceStore;
|
|
92
|
-
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { Endpoint } from "#endpoint/Endpoint.js";
|
|
8
8
|
import { ImplementationError, StorageContext } from "#general";
|
|
9
9
|
import { EndpointStore } from "#storage/EndpointStore.js";
|
|
10
|
+
import { DatasourceStore } from "./DatasourceStore.js";
|
|
10
11
|
|
|
11
12
|
const NUMBER_KEY = "__number__";
|
|
12
13
|
|
|
@@ -37,6 +38,14 @@ export class ServerEndpointStore extends EndpointStore {
|
|
|
37
38
|
this.#childStorage = storage.createContext("parts");
|
|
38
39
|
}
|
|
39
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Create a {@link Datasource.Store} for a behavior.
|
|
43
|
+
*/
|
|
44
|
+
createStoreForBehavior(behaviorId: string) {
|
|
45
|
+
const initialValues = this.consumeInitialValues(behaviorId);
|
|
46
|
+
return DatasourceStore(this, behaviorId, initialValues);
|
|
47
|
+
}
|
|
48
|
+
|
|
40
49
|
/**
|
|
41
50
|
* Invoke a function on this store and the stores of descendant parts.
|
|
42
51
|
*/
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
StorageManager,
|
|
16
16
|
StorageService,
|
|
17
17
|
} from "#general";
|
|
18
|
+
import type { ServerNode } from "#node/ServerNode.js";
|
|
18
19
|
import { NodeStore } from "../NodeStore.js";
|
|
19
20
|
import { ClientNodeStores } from "../client/ClientNodeStores.js";
|
|
20
21
|
import { ServerEndpointStores } from "./ServerEndpointStores.js";
|
|
@@ -22,8 +23,9 @@ import { ServerEndpointStores } from "./ServerEndpointStores.js";
|
|
|
22
23
|
const logger = Logger.get("ServerNodeStore");
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
26
|
+
* {@link ServerNode} persistence.
|
|
27
|
+
*
|
|
28
|
+
* Each {@link ServerNode} has an instance of this store.
|
|
27
29
|
*/
|
|
28
30
|
export class ServerNodeStore extends NodeStore implements Destructable {
|
|
29
31
|
#env: Environment;
|