@matter/node 0.16.0-alpha.0-20251110-c4c70a41b → 0.16.0-alpha.0-20251112-dba1973d5
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/cluster/ClusterBehavior.d.ts +1 -0
- package/dist/cjs/behavior/cluster/ClusterBehavior.d.ts.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehavior.js +3 -0
- package/dist/cjs/behavior/cluster/ClusterBehavior.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehaviorType.d.ts.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehaviorType.js +3 -0
- package/dist/cjs/behavior/cluster/ClusterBehaviorType.js.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +2 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js +11 -3
- package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts +2 -0
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.js +4 -0
- package/dist/cjs/behavior/internal/ClientBehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts +3 -0
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.js +18 -0
- package/dist/cjs/behavior/internal/ServerBehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.d.ts +4 -0
- package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js +5 -0
- package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +4 -3
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.js +6 -2
- package/dist/cjs/behaviors/operational-credentials/VendorIdVerification.js.map +1 -1
- package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js +2 -3
- package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
- package/dist/cjs/endpoint/properties/Behaviors.d.ts +12 -2
- package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/Behaviors.js +44 -10
- package/dist/cjs/endpoint/properties/Behaviors.js.map +2 -2
- package/dist/cjs/node/client/ClientStructure.d.ts +31 -1
- package/dist/cjs/node/client/ClientStructure.d.ts.map +1 -1
- package/dist/cjs/node/client/ClientStructure.js +257 -81
- package/dist/cjs/node/client/ClientStructure.js.map +1 -1
- package/dist/cjs/node/client/ClientStructureEvents.d.ts +5 -2
- package/dist/cjs/node/client/ClientStructureEvents.d.ts.map +1 -1
- package/dist/cjs/node/client/ClientStructureEvents.js +38 -2
- package/dist/cjs/node/client/ClientStructureEvents.js.map +1 -1
- package/dist/cjs/node/client/Peers.d.ts +3 -0
- package/dist/cjs/node/client/Peers.d.ts.map +1 -1
- package/dist/cjs/node/client/Peers.js +3 -0
- package/dist/cjs/node/client/Peers.js.map +1 -1
- package/dist/cjs/node/server/ServerEndpointInitializer.js +1 -1
- package/dist/cjs/node/server/ServerEndpointInitializer.js.map +1 -1
- package/dist/cjs/storage/EndpointStore.d.ts +5 -1
- package/dist/cjs/storage/EndpointStore.d.ts.map +1 -1
- package/dist/cjs/storage/EndpointStore.js +7 -1
- package/dist/cjs/storage/EndpointStore.js.map +1 -1
- package/dist/cjs/storage/client/ClientEndpointStore.d.ts +2 -1
- package/dist/cjs/storage/client/ClientEndpointStore.d.ts.map +1 -1
- package/dist/cjs/storage/client/DatasourceCache.d.ts +14 -3
- package/dist/cjs/storage/client/DatasourceCache.d.ts.map +1 -1
- package/dist/cjs/storage/client/DatasourceCache.js +10 -0
- package/dist/cjs/storage/client/DatasourceCache.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehavior.d.ts +1 -0
- package/dist/esm/behavior/cluster/ClusterBehavior.d.ts.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehavior.js +3 -0
- package/dist/esm/behavior/cluster/ClusterBehavior.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehaviorType.d.ts.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehaviorType.js +3 -0
- package/dist/esm/behavior/cluster/ClusterBehaviorType.js.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js +11 -3
- package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts +2 -0
- package/dist/esm/behavior/internal/ClientBehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/ClientBehaviorBacking.js +4 -0
- package/dist/esm/behavior/internal/ClientBehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts +3 -0
- package/dist/esm/behavior/internal/ServerBehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/ServerBehaviorBacking.js +20 -2
- package/dist/esm/behavior/internal/ServerBehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.d.ts +4 -0
- package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.js +5 -0
- package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +4 -3
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/esm/behaviors/operational-credentials/VendorIdVerification.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/VendorIdVerification.js +7 -2
- package/dist/esm/behaviors/operational-credentials/VendorIdVerification.js.map +1 -1
- package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js +2 -3
- package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
- package/dist/esm/endpoint/properties/Behaviors.d.ts +12 -2
- package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/Behaviors.js +44 -10
- package/dist/esm/endpoint/properties/Behaviors.js.map +2 -2
- package/dist/esm/node/client/ClientStructure.d.ts +31 -1
- package/dist/esm/node/client/ClientStructure.d.ts.map +1 -1
- package/dist/esm/node/client/ClientStructure.js +258 -82
- package/dist/esm/node/client/ClientStructure.js.map +1 -1
- package/dist/esm/node/client/ClientStructureEvents.d.ts +5 -2
- package/dist/esm/node/client/ClientStructureEvents.d.ts.map +1 -1
- package/dist/esm/node/client/ClientStructureEvents.js +39 -3
- package/dist/esm/node/client/ClientStructureEvents.js.map +1 -1
- package/dist/esm/node/client/Peers.d.ts +3 -0
- package/dist/esm/node/client/Peers.d.ts.map +1 -1
- package/dist/esm/node/client/Peers.js +3 -0
- package/dist/esm/node/client/Peers.js.map +1 -1
- package/dist/esm/node/server/ServerEndpointInitializer.js +1 -1
- package/dist/esm/node/server/ServerEndpointInitializer.js.map +1 -1
- package/dist/esm/storage/EndpointStore.d.ts +5 -1
- package/dist/esm/storage/EndpointStore.d.ts.map +1 -1
- package/dist/esm/storage/EndpointStore.js +7 -1
- package/dist/esm/storage/EndpointStore.js.map +1 -1
- package/dist/esm/storage/client/ClientEndpointStore.d.ts +2 -1
- package/dist/esm/storage/client/ClientEndpointStore.d.ts.map +1 -1
- package/dist/esm/storage/client/DatasourceCache.d.ts +14 -3
- package/dist/esm/storage/client/DatasourceCache.d.ts.map +1 -1
- package/dist/esm/storage/client/DatasourceCache.js +10 -0
- package/dist/esm/storage/client/DatasourceCache.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/cluster/ClusterBehavior.ts +4 -0
- package/src/behavior/cluster/ClusterBehaviorType.ts +5 -0
- package/src/behavior/internal/BehaviorBacking.ts +16 -3
- package/src/behavior/internal/ClientBehaviorBacking.ts +10 -1
- package/src/behavior/internal/ServerBehaviorBacking.ts +22 -3
- package/src/behavior/state/managed/Datasource.ts +13 -0
- package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +4 -3
- package/src/behaviors/operational-credentials/VendorIdVerification.ts +7 -2
- package/src/behaviors/scenes-management/ScenesManagementServer.ts +2 -2
- package/src/endpoint/properties/Behaviors.ts +53 -12
- package/src/node/client/ClientStructure.ts +352 -91
- package/src/node/client/ClientStructureEvents.ts +55 -7
- package/src/node/client/Peers.ts +4 -0
- package/src/node/server/ServerEndpointInitializer.ts +1 -1
- package/src/storage/EndpointStore.ts +8 -1
- package/src/storage/client/DatasourceCache.ts +28 -4
|
@@ -54,6 +54,9 @@ export declare class Peers extends EndpointContainer<ClientNode> {
|
|
|
54
54
|
* This is useful for initializing general behavior on any peer endpoint with the specified cluster.
|
|
55
55
|
*/
|
|
56
56
|
clusterInstalled<T extends ClusterBehavior.Type>(type: T): Observable<[endpoint: Endpoint<EndpointType.Empty>, type: T], void>;
|
|
57
|
+
/**
|
|
58
|
+
* Emits when fixed attributes
|
|
59
|
+
*/
|
|
57
60
|
get(id: number | string | PeerAddress): ClientNode | undefined;
|
|
58
61
|
get owner(): ServerNode;
|
|
59
62
|
add(node: ClientNode): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Peers.d.ts","sourceRoot":"","sources":["../../../../src/node/client/Peers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAI5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAQH,UAAU,EAIb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAiE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnD;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,iBAAiB,CAAC,UAAU,CAAC;;gBAMxC,KAAK,EAAE,UAAU;IAe7B;;OAEG;IACH,UAAU;IAeV;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO;IAIlC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO;IAIpC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO;IAIlD;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAIvF;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Peers.d.ts","sourceRoot":"","sources":["../../../../src/node/client/Peers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAI5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAG/F,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAQH,UAAU,EAIb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAiE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnD;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,iBAAiB,CAAC,UAAU,CAAC;;gBAMxC,KAAK,EAAE,UAAU;IAe7B;;OAEG;IACH,UAAU;IAeV;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO;IAIlC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,OAAO;IAIpC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO;IAIlD;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAIvF;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,SAAS,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAIxD;;OAEG;IAEM,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW;IAe9C,IAAa,KAAK,IACQ,UAAU,CACnC;IAEQ,GAAG,CAAC,IAAI,EAAE,UAAU;IAM7B;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAM;IAuB3E,KAAK;CAuKvB"}
|
|
@@ -99,6 +99,9 @@ class Peers extends EndpointContainer {
|
|
|
99
99
|
clusterInstalled(type) {
|
|
100
100
|
return this.owner.env.get(ClientStructureEvents).clusterInstalled(type);
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Emits when fixed attributes
|
|
104
|
+
*/
|
|
102
105
|
get(id) {
|
|
103
106
|
if (typeof id !== "string" && typeof id !== "number") {
|
|
104
107
|
const address = PeerAddress(id);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/node/client/Peers.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,8BAA8B;AACvC,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAClC,SAAS,8BAA8B;AACvC,SAAS,oCAAoC;AAE7C,SAAS,yBAAyB;AAElC;AAAA,EAEI;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,2BAA2B,qBAAqB,eAAe,mBAAmB;AAC3F,SAAS,uBAAuB;AAEhC,SAAS,kBAAkB;AAE3B,SAAS,yBAAyB;AAClC,SAAS,6BAA6B;AAEtC,MAAM,SAAS,OAAO,IAAI,OAAO;AAEjC,MAAM,cAAc,QAAQ,EAAE;AAC9B,MAAM,sBAAsB,QAAQ;AAO7B,MAAM,cAAc,kBAA8B;AAAA,EACrD;AAAA,EACA;AAAA,EACA,SAAS,IAAI,MAAM,IAAI;AAAA,EACvB,UAAU;AAAA,EAEV,YAAY,OAAmB;AAC3B,UAAM,KAAK;AAEX,QAAI,CAAC,MAAM,IAAI,IAAI,iBAAiB,GAAG;AACnC,YAAM,IAAI,IAAI,mBAAmB,IAAI,QAAQ,IAAI,CAAC;AAAA,IACtD;AAEA,UAAM,IAAI,QAAQ,mBAAmB,KAAK,4BAA4B,KAAK,IAAI,CAAC;AAEhF,SAAK,MAAM,GAAG,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAC9C,SAAK,QAAQ,GAAG,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAEjD,SAAK,iBAAiB,sBAAsB,EAAE,GAAG,KAAK,4BAA4B,KAAK,IAAI,CAAC;AAAA,EAChG;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACT,UAAM,UAAU,KAAK,MAAM,IAAI,IAAI,iBAAiB;AAEpD,UAAM,eAAe,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;AAEzD,eAAW,MAAM,aAAa,UAAU;AACpC,WAAK;AAAA,QACD,QAAQ,OAAO;AAAA,UACX;AAAA,UACA,OAAO,KAAK;AAAA,QAChB,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,SAA6B;AAChC,WAAO,IAAI,kBAAkB,KAAK,OAAO,OAAO;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,SAA6B;AAClC,WAAO,IAAI,oBAAoB,KAAK,OAAO,OAAO;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,SAAyC;AAChD,WAAO,IAAI,uBAAuB,KAAK,OAAO,OAAO;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,kBAA0C,MAA8C;AACpF,WAAO,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,kBAAkB,IAAI;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAiD,MAAS;AACtD,WAAO,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,iBAAiB,IAAI;AAAA,EAC1E;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["freshestExp"]
|
|
6
6
|
}
|
|
@@ -22,7 +22,7 @@ class ServerEndpointInitializer extends EndpointInitializer {
|
|
|
22
22
|
}
|
|
23
23
|
this.#store.endpointStores.assignNumber(endpoint);
|
|
24
24
|
if (!(DescriptorServer.id in endpoint.behaviors.supported)) {
|
|
25
|
-
endpoint.behaviors.inject(DescriptorServer);
|
|
25
|
+
endpoint.behaviors.inject(DescriptorServer, void 0, false);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
async eraseDescendant(endpoint) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/node/server/ServerEndpointInitializer.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,6BAA6B;AACtC,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AACpC,SAAsB,eAAe,cAAc;AACnD,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AAEjC,MAAM,SAAS,OAAO,IAAI,cAAc;AAEjC,MAAM,kCAAkC,oBAAoB;AAAA,EAC/D;AAAA,EAEA,YAAY,aAA0B;AAClC,UAAM;AACN,SAAK,SAAS,YAAY,IAAI,eAAe;AAAA,EACjD;AAAA,EAES,qBAAqB,UAAoB;AAC9C,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B,eAAS,KAAK,KAAK,cAAc,QAAQ;AAAA,IAC7C;AAEA,SAAK,OAAO,eAAe,aAAa,QAAQ;AAGhD,QAAI,EAAE,iBAAiB,MAAM,SAAS,UAAU,YAAY;AACxD,eAAS,UAAU,OAAO,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,SAAS,6BAA6B;AACtC,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AACpC,SAAsB,eAAe,cAAc;AACnD,SAAS,uBAAuB;AAChC,SAAS,wBAAwB;AAEjC,MAAM,SAAS,OAAO,IAAI,cAAc;AAEjC,MAAM,kCAAkC,oBAAoB;AAAA,EAC/D;AAAA,EAEA,YAAY,aAA0B;AAClC,UAAM;AACN,SAAK,SAAS,YAAY,IAAI,eAAe;AAAA,EACjD;AAAA,EAES,qBAAqB,UAAoB;AAC9C,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B,eAAS,KAAK,KAAK,cAAc,QAAQ;AAAA,IAC7C;AAEA,SAAK,OAAO,eAAe,aAAa,QAAQ;AAGhD,QAAI,EAAE,iBAAiB,MAAM,SAAS,UAAU,YAAY;AACxD,eAAS,UAAU,OAAO,kBAAkB,QAAW,KAAK;AAAA,IAChE;AAAA,EACJ;AAAA,EAEA,MAAM,gBAAgB,UAAoB;AACtC,QAAI,CAAC,SAAS,UAAU,OAAO;AAC3B;AAAA,IACJ;AAEA,UAAM,KAAK,OAAO,eAAe,sBAAsB,QAAQ;AAAA,EACnE;AAAA,EAEA,MAAM,qBAAqB,UAAoB;AAC3C,QAAI,CAAC,SAAS,UAAU,SAAS,SAAS,WAAW,GAAG;AACpD;AAAA,IACJ;AAEA,SAAK,OAAO,eAAe,2BAA2B,QAAQ;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,cAAc,UAAoB,MAAsC;AACpE,UAAM,QAAQ,KAAK,OAAO,iBAAiB,QAAQ,EAAE,uBAAuB,KAAK,EAAE;AAEnF,WAAO,IAAI,sBAAsB,UAAU,MAAM,OAAO,SAAS,UAAU,WAAW,IAAI,CAAC;AAAA,EAC/F;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,UAAoB;AAC9B,UAAM,YACF,SAAS,UAAU,UAAU,oBAAoB,SAAS,UAAU,UAAU;AAClF,QAAI,WAAW;AACX,YAAM,WAAW;AAAA,QACb,GAAG,IAAI,UAAU,MAAM;AAAA,QACvB,GAAG,SAAS,UAAU,YAAY,SAAS;AAAA,MAC/C;AAEA,UAAIA,MAAM,SAAoC;AAC9C,UAAIA,KAAI;AACJ,eAAOA;AAAA,MACX;AAEA,MAAAA,MAAM,SAAoC;AAC1C,UAAIA,KAAI;AACJ,eAAOA;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,EAAE,SAAS,iBAAiB,WAAW;AACvC,YAAM,IAAI,cAAc,2DAA2D;AAAA,IACvF;AACA,QAAI,CAAC,SAAS,MAAM,UAAU,OAAO;AACjC,YAAM,IAAI,cAAc,2DAA2D;AAAA,IACvF;AAEA,UAAM,QAAQ,SAAS,MAAM,MAAM,QAAQ,QAAQ;AACnD,QAAI,UAAU,IAAI;AACd,YAAM,IAAI,cAAc,wEAAwE;AAAA,IACpG;AAGA,UAAM,KAAK,OAAO,KAAK;AACvB,WAAO,KAAK,wBAAwB,EAAE,iBAAiB,SAAS,KAAK,oCAAoC;AAEzG,WAAO;AAAA,EACX;AACJ;",
|
|
5
5
|
"names": ["id"]
|
|
6
6
|
}
|
|
@@ -40,9 +40,13 @@ export declare class EndpointStore {
|
|
|
40
40
|
*/
|
|
41
41
|
load(): Promise<void>;
|
|
42
42
|
/**
|
|
43
|
-
* Remove all persisted information for the {@link Endpoint}
|
|
43
|
+
* Remove all persisted information for the {@link Endpoint}.
|
|
44
44
|
*/
|
|
45
45
|
erase(): import("#general").MaybePromise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Remove all persisted information for a single behavior on the {@link Endpoint}.
|
|
48
|
+
*/
|
|
49
|
+
eraseStoreForBehavior(behaviorId: string): import("#general").MaybePromise<void>;
|
|
46
50
|
protected get storage(): StorageContext;
|
|
47
51
|
}
|
|
48
52
|
//# sourceMappingURL=EndpointStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EndpointStore.d.ts","sourceRoot":"","sources":["../../../src/storage/EndpointStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAyB,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC;;GAEG;AACH,qBAAa,aAAa;;IACtB,SAAS,CAAC,aAAa,0BAAiC;gBAM5C,OAAO,EAAE,cAAc;IAInC;;OAEG;IACH,IAAI,EAAE,WAEL;IAED;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM;IAQjD;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;IAkCxD;;OAEG;IACH,QAAQ;IAIR;;OAEG;IACH,IAAI,cAAc,gBAEjB;IAED;;OAEG;IACG,IAAI;IAiBV;;OAEG;IACH,KAAK;IAIL,SAAS,KAAK,OAAO,mBAEpB;CACJ"}
|
|
1
|
+
{"version":3,"file":"EndpointStore.d.ts","sourceRoot":"","sources":["../../../src/storage/EndpointStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAyB,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC;;GAEG;AACH,qBAAa,aAAa;;IACtB,SAAS,CAAC,aAAa,0BAAiC;gBAM5C,OAAO,EAAE,cAAc;IAInC;;OAEG;IACH,IAAI,EAAE,WAEL;IAED;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM;IAQjD;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;IAkCxD;;OAEG;IACH,QAAQ;IAIR;;OAEG;IACH,IAAI,cAAc,gBAEjB;IAED;;OAEG;IACG,IAAI;IAiBV;;OAEG;IACH,KAAK;IAIL;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM;IAIxC,SAAS,KAAK,OAAO,mBAEpB;CACJ"}
|
|
@@ -92,11 +92,17 @@ class EndpointStore {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
|
-
* Remove all persisted information for the {@link Endpoint}
|
|
95
|
+
* Remove all persisted information for the {@link Endpoint}.
|
|
96
96
|
*/
|
|
97
97
|
erase() {
|
|
98
98
|
return this.storage.clearAll();
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Remove all persisted information for a single behavior on the {@link Endpoint}.
|
|
102
|
+
*/
|
|
103
|
+
eraseStoreForBehavior(behaviorId) {
|
|
104
|
+
return this.storage.createContext(behaviorId).clearAll();
|
|
105
|
+
}
|
|
100
106
|
get storage() {
|
|
101
107
|
return this.#storage;
|
|
102
108
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/EndpointStore.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,MAAM,cAAc;AAAA,EACb,gBAAgB,oBAAI,IAAwB;AAAA,EAEtD;AAAA,EAEA,kBAAkB,oBAAI,IAAY;AAAA,EAElC,YAAY,SAAyB;AACjC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAK;AACL,WAAO,KAAK,QAAQ,aAAa,KAAK,QAAQ,aAAa,SAAS,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,qBAAqB,YAAoB;AAC/C,UAAM,gBAAgB,KAAK,cAAc,IAAI,UAAU;AACvD,QAAI,kBAAkB,QAAW;AAC7B,WAAK,cAAc,OAAO,UAAU;AAAA,IACxC;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,IAAI,QAAgD;AACtD,eAAW,cAAc,QAAQ;AAC7B,YAAM,iBAAiB,OAAO,UAAU;AACxC,YAAM,kBAAkB,KAAK,QAAQ,cAAc,UAAU;AAE7D,UAAI,mBAAmB,QAAW;AAC9B,YAAI,KAAK,eAAe,IAAI,UAAU,GAAG;AACrC,gBAAM,gBAAgB,SAAS;AAC/B,eAAK,eAAe,OAAO,UAAU;AAAA,QACzC;AACA;AAAA,MACJ;AAEA,UAAI,CAAC,KAAK,eAAe,IAAI,UAAU,GAAG;AACtC,aAAK,eAAe,IAAI,UAAU;AAAA,MACtC;AAEA,YAAM,SAAS,CAAC;AAChB,UAAI,aAAa;AACjB,iBAAW,OAAO,gBAAgB;AAC9B,cAAM,QAAQ,eAAe,GAAG;AAChC,YAAI,UAAU,QAAW;AACrB,gBAAM,gBAAgB,OAAO,GAAG;AAAA,QACpC,OAAO;AACH,iBAAO,GAAG,IAAI;AACd;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,aAAa,GAAG;AAChB,cAAM,gBAAgB,IAAI,MAAM;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACP,WAAO,WAAW,KAAK,SAAS,aAAa,KAAK,GAAG,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAiB;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO;AACT,SAAK,kBAAkB,IAAI,IAAI,MAAM,KAAK,QAAQ,SAAS,CAAC;AAE5D,eAAW,cAAc,KAAK,iBAAiB;AAC3C,YAAM,iBAAiB,CAAC;AACxB,WAAK,cAAc,IAAI,YAAY,cAAc;AACjD,YAAM,kBAAkB,KAAK,QAAQ,cAAc,UAAU;AAE7D,YAAM,eAAe,MAAM,gBAAgB,OAAO;AAClD,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,YAAI,UAAU,QAAW;AACrB,yBAAe,GAAG,IAAI;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ;AACJ,WAAO,KAAK,QAAQ,SAAS;AAAA,EACjC;AAAA,EAEA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AACJ;",
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,MAAM,cAAc;AAAA,EACb,gBAAgB,oBAAI,IAAwB;AAAA,EAEtD;AAAA,EAEA,kBAAkB,oBAAI,IAAY;AAAA,EAElC,YAAY,SAAyB;AACjC,SAAK,WAAW;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,KAAK;AACL,WAAO,KAAK,QAAQ,aAAa,KAAK,QAAQ,aAAa,SAAS,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,qBAAqB,YAAoB;AAC/C,UAAM,gBAAgB,KAAK,cAAc,IAAI,UAAU;AACvD,QAAI,kBAAkB,QAAW;AAC7B,WAAK,cAAc,OAAO,UAAU;AAAA,IACxC;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,IAAI,QAAgD;AACtD,eAAW,cAAc,QAAQ;AAC7B,YAAM,iBAAiB,OAAO,UAAU;AACxC,YAAM,kBAAkB,KAAK,QAAQ,cAAc,UAAU;AAE7D,UAAI,mBAAmB,QAAW;AAC9B,YAAI,KAAK,eAAe,IAAI,UAAU,GAAG;AACrC,gBAAM,gBAAgB,SAAS;AAC/B,eAAK,eAAe,OAAO,UAAU;AAAA,QACzC;AACA;AAAA,MACJ;AAEA,UAAI,CAAC,KAAK,eAAe,IAAI,UAAU,GAAG;AACtC,aAAK,eAAe,IAAI,UAAU;AAAA,MACtC;AAEA,YAAM,SAAS,CAAC;AAChB,UAAI,aAAa;AACjB,iBAAW,OAAO,gBAAgB;AAC9B,cAAM,QAAQ,eAAe,GAAG;AAChC,YAAI,UAAU,QAAW;AACrB,gBAAM,gBAAgB,OAAO,GAAG;AAAA,QACpC,OAAO;AACH,iBAAO,GAAG,IAAI;AACd;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,aAAa,GAAG;AAChB,cAAM,gBAAgB,IAAI,MAAM;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW;AACP,WAAO,WAAW,KAAK,SAAS,aAAa,KAAK,GAAG,CAAC;AAAA,EAC1D;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,iBAAiB;AACjB,WAAO,KAAK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO;AACT,SAAK,kBAAkB,IAAI,IAAI,MAAM,KAAK,QAAQ,SAAS,CAAC;AAE5D,eAAW,cAAc,KAAK,iBAAiB;AAC3C,YAAM,iBAAiB,CAAC;AACxB,WAAK,cAAc,IAAI,YAAY,cAAc;AACjD,YAAM,kBAAkB,KAAK,QAAQ,cAAc,UAAU;AAE7D,YAAM,eAAe,MAAM,gBAAgB,OAAO;AAClD,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,YAAI,UAAU,QAAW;AACrB,yBAAe,GAAG,IAAI;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ;AACJ,WAAO,KAAK,QAAQ,SAAS;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAKA,sBAAsB,YAAoB;AACtC,WAAO,KAAK,QAAQ,cAAc,UAAU,EAAE,SAAS;AAAA,EAC3D;AAAA,EAEA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -7,6 +7,7 @@ import { StorageContext, Transaction } from "#general";
|
|
|
7
7
|
import { EndpointStore } from "#storage/EndpointStore.js";
|
|
8
8
|
import type { EndpointNumber } from "#types";
|
|
9
9
|
import type { ClientNodeStore } from "./ClientNodeStore.js";
|
|
10
|
+
import { DatasourceCache } from "./DatasourceCache.js";
|
|
10
11
|
export declare class ClientEndpointStore extends EndpointStore {
|
|
11
12
|
#private;
|
|
12
13
|
constructor(owner: ClientNodeStore, number: EndpointNumber, storage: StorageContext);
|
|
@@ -19,7 +20,7 @@ export declare class ClientEndpointStore extends EndpointStore {
|
|
|
19
20
|
/**
|
|
20
21
|
* Create a {@link Datasource.ExternallyMutableStore} for a behavior.
|
|
21
22
|
*/
|
|
22
|
-
createStoreForBehavior(behaviorId: string):
|
|
23
|
+
createStoreForBehavior(behaviorId: string): DatasourceCache;
|
|
23
24
|
/**
|
|
24
25
|
* Create a {@link Datasource.Store} for a behavior that does not track a remote cluster.
|
|
25
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientEndpointStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/ClientEndpointStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ClientEndpointStore.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/ClientEndpointStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,qBAAa,mBAAoB,SAAQ,aAAa;;gBAItC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc;IAMnF,IAAI,MAAM,mBAET;IAED;;OAEG;IACH,IAAI,WAAW,YAEd;IAED,cAAc,CAAC,WAAW,EAAE,WAAW;IASvC;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM;IAKzC;;OAEG;IACH,2BAA2B,CAAC,UAAU,EAAE,MAAM;CAIjD"}
|
|
@@ -4,14 +4,25 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Datasource } from "#behavior/state/managed/Datasource.js";
|
|
7
|
+
import { MaybePromise } from "#general";
|
|
7
8
|
import { Val } from "#protocol";
|
|
8
9
|
import type { ClientEndpointStore } from "./ClientEndpointStore.js";
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
+
* The default implementation of {@link Datasource.ExternallyMutableStore}.
|
|
11
12
|
*
|
|
12
|
-
* This implements storage for attribute values for a single cluster loaded from
|
|
13
|
+
* This implements storage for attribute values for a single cluster loaded from peers.
|
|
13
14
|
*/
|
|
14
|
-
export
|
|
15
|
+
export interface DatasourceCache extends Datasource.ExternallyMutableStore {
|
|
16
|
+
/**
|
|
17
|
+
* Reset the cache to "uninitialized" state by reclaiming {@link initialValues} from an active datasource.
|
|
18
|
+
*/
|
|
19
|
+
reclaimValues(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Erase values just for this datasource.
|
|
22
|
+
*/
|
|
23
|
+
erase(): MaybePromise<void>;
|
|
24
|
+
}
|
|
25
|
+
export declare function DatasourceCache(store: ClientEndpointStore, behaviorId: string, initialValues: Val.Struct | undefined): DatasourceCache;
|
|
15
26
|
export declare namespace DatasourceCache {
|
|
16
27
|
/**
|
|
17
28
|
* Standard key for storing the version.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasourceCache.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/DatasourceCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"DatasourceCache.d.ts","sourceRoot":"","sources":["../../../../src/storage/client/DatasourceCache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACnE,OAAO,EAAiB,YAAY,EAAe,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,UAAU,CAAC,sBAAsB;IACtE;;OAEG;IACH,aAAa,IAAI,IAAI,CAAC;IAEtB;;OAEG;IACH,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAgB,eAAe,CAC3B,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,SAAS,GACtC,eAAe,CAqDjB;AAED,yBAAiB,eAAe,CAAC;IAC7B;;;;OAIG;IACI,MAAM,WAAW,gBAAgB,CAAC;CAC5C"}
|
|
@@ -31,11 +31,21 @@ function DatasourceCache(store, behaviorId, initialValues) {
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
externalChangeListener: void 0,
|
|
34
|
+
releaseValues: void 0,
|
|
35
|
+
reclaimValues() {
|
|
36
|
+
if (this.releaseValues) {
|
|
37
|
+
this.initialValues = this.releaseValues();
|
|
38
|
+
this.releaseValues = void 0;
|
|
39
|
+
}
|
|
40
|
+
},
|
|
34
41
|
get version() {
|
|
35
42
|
return version;
|
|
36
43
|
},
|
|
37
44
|
set version(_version) {
|
|
38
45
|
throw new InternalError("Datasource version must be set via externalSet");
|
|
46
|
+
},
|
|
47
|
+
async erase() {
|
|
48
|
+
await store.eraseStoreForBehavior(behaviorId);
|
|
39
49
|
}
|
|
40
50
|
};
|
|
41
51
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/storage/client/DatasourceCache.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,kBAAkB;AAC3B,SAAS,qBAAgD;AAsBlD,SAAS,gBACZ,OACA,YACA,eACe;AACf,MAAI,UAAU,gBAAgB,gBAAgB,WAAW;AACzD,MAAI,OAAO,YAAY,UAAU;AAC7B,cAAU,WAAW;AAAA,EACzB;AAEA,SAAO;AAAA,IACH;AAAA,IAEA,MAAM,IAAI,aAA0B,QAAoB;AACpD,YAAM,cAAc,MAAM,eAAe,WAAW;AACpD,kBAAY,IAAI,MAAM,QAAQ,YAAY,MAAM;AAAA,IACpD;AAAA,IAEA,MAAM,YAAY,QAAoB;AAClC,UAAI,OAAO,OAAO,gBAAgB,WAAW,MAAM,UAAU;AACzD,kBAAU,OAAO,gBAAgB,WAAW;AAAA,MAChD;AAEA,YAAM,MAAM,IAAI,EAAE,CAAC,UAAU,GAAG,OAAO,CAAC;AAExC,UAAI,KAAK,wBAAwB;AAC7B,cAAM,KAAK,uBAAuB,MAAM;AAAA,MAC5C,OAAO;AACH,YAAI,CAAC,KAAK,eAAe;AACrB,eAAK,gBAAgB,CAAC;AAAA,QAC1B;AACA,eAAO,OAAO,KAAK,eAAe,MAAM;AAAA,MAC5C;AAAA,IACJ;AAAA,IAEA,wBAAwB;AAAA,IACxB,eAAe;AAAA,IAEf,gBAAgB;AACZ,UAAI,KAAK,eAAe;AACpB,aAAK,gBAAgB,KAAK,cAAc;AACxC,aAAK,gBAAgB;AAAA,MACzB;AAAA,IACJ;AAAA,IAEA,IAAI,UAAU;AACV,aAAO;AAAA,IACX;AAAA,IAEA,IAAI,QAAQ,UAAkB;AAC1B,YAAM,IAAI,cAAc,gDAAgD;AAAA,IAC5E;AAAA,IAEA,MAAM,QAAQ;AACV,YAAM,MAAM,sBAAsB,UAAU;AAAA,IAChD;AAAA,EACJ;AACJ;AAAA,CAEO,CAAUA,qBAAV;AAMI,EAAMA,iBAAA,cAAc;AAAA,GANd;",
|
|
5
5
|
"names": ["DatasourceCache"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/node",
|
|
3
|
-
"version": "0.16.0-alpha.0-
|
|
3
|
+
"version": "0.16.0-alpha.0-20251112-dba1973d5",
|
|
4
4
|
"description": "API for building Matter nodes",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"#*": "./src/*"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@matter/general": "0.16.0-alpha.0-
|
|
46
|
-
"@matter/model": "0.16.0-alpha.0-
|
|
47
|
-
"@matter/types": "0.16.0-alpha.0-
|
|
48
|
-
"@matter/protocol": "0.16.0-alpha.0-
|
|
45
|
+
"@matter/general": "0.16.0-alpha.0-20251112-dba1973d5",
|
|
46
|
+
"@matter/model": "0.16.0-alpha.0-20251112-dba1973d5",
|
|
47
|
+
"@matter/types": "0.16.0-alpha.0-20251112-dba1973d5",
|
|
48
|
+
"@matter/protocol": "0.16.0-alpha.0-20251112-dba1973d5"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@matter/tools": "0.16.0-alpha.0-
|
|
52
|
-
"@matter/testing": "0.16.0-alpha.0-
|
|
51
|
+
"@matter/tools": "0.16.0-alpha.0-20251112-dba1973d5",
|
|
52
|
+
"@matter/testing": "0.16.0-alpha.0-20251112-dba1973d5"
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"dist/**/*",
|
|
@@ -56,6 +56,10 @@ export class ClusterBehavior extends Behavior {
|
|
|
56
56
|
return this.cluster.supportedFeatures;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
override get type() {
|
|
60
|
+
return this.constructor as ClusterBehavior.Type;
|
|
61
|
+
}
|
|
62
|
+
|
|
59
63
|
/**
|
|
60
64
|
* Every cluster behavior has an associated ClusterType defined statically.
|
|
61
65
|
*/
|
|
@@ -110,6 +110,11 @@ export function ClusterBehaviorType<const C extends ClusterType>({
|
|
|
110
110
|
// Decorate the class
|
|
111
111
|
ClassSemantics.of(type).mutableModel = schema;
|
|
112
112
|
|
|
113
|
+
// If the schema was overridden, it won't change with class semantics so override explicitly if necessary
|
|
114
|
+
if (type.schema !== schema) {
|
|
115
|
+
Object.defineProperty(type, "schema", { value: schema });
|
|
116
|
+
}
|
|
117
|
+
|
|
113
118
|
// Mutation of schema will almost certainly result in logic errors so ensure that can't happen
|
|
114
119
|
schema.finalize();
|
|
115
120
|
|
|
@@ -130,10 +130,10 @@ export abstract class BehaviorBacking {
|
|
|
130
130
|
/**
|
|
131
131
|
* Destroy the backing.
|
|
132
132
|
*/
|
|
133
|
-
close(agent
|
|
133
|
+
close(agent?: Agent) {
|
|
134
134
|
const initialized = this.construction.status === Lifecycle.Status.Active;
|
|
135
135
|
if (!initialized) {
|
|
136
|
-
|
|
136
|
+
agent = undefined;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
return this.construction.close(() => {
|
|
@@ -146,7 +146,7 @@ export abstract class BehaviorBacking {
|
|
|
146
146
|
},
|
|
147
147
|
);
|
|
148
148
|
|
|
149
|
-
if (
|
|
149
|
+
if (agent) {
|
|
150
150
|
result = MaybePromise.then(result, () => this.#invokeClose(agent));
|
|
151
151
|
}
|
|
152
152
|
|
|
@@ -178,6 +178,19 @@ export abstract class BehaviorBacking {
|
|
|
178
178
|
return this.#type;
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
+
set type(type: Behavior.Type) {
|
|
182
|
+
if (!type.supports(this.#type)) {
|
|
183
|
+
// This is unlikely to cause issues because we limit to peer contexts. In that case we implement elements
|
|
184
|
+
// fairly expansively regardless of reported support. So worst case scenario the metadata reported earlier
|
|
185
|
+
// may be out of sync with the device. There is a small possibility this causes problems, though, so log a
|
|
186
|
+
// warning
|
|
187
|
+
logger.warn(
|
|
188
|
+
`The cluster for active behavior ${this} may no longer be strictly compatible with local implementation`,
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
this.#type = type;
|
|
192
|
+
}
|
|
193
|
+
|
|
181
194
|
/**
|
|
182
195
|
* Create an instance of the backed {@link Behavior}.
|
|
183
196
|
*
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { GlobalAttributeState } from "#behavior/cluster/ClusterState.js";
|
|
8
|
+
import { DatasourceCache } from "#endpoint/index.js";
|
|
8
9
|
import { SupportedElements } from "#endpoint/properties/Behaviors.js";
|
|
9
|
-
import { camelize } from "#general";
|
|
10
|
+
import { camelize, MaybePromise } from "#general";
|
|
10
11
|
import { ClusterModel } from "#model";
|
|
11
12
|
import { AttributeId, CommandId } from "#types";
|
|
12
13
|
import { BehaviorBacking } from "./BehaviorBacking.js";
|
|
@@ -54,4 +55,12 @@ export class ClientBehaviorBacking extends BehaviorBacking {
|
|
|
54
55
|
options.primaryKey = "id";
|
|
55
56
|
return options;
|
|
56
57
|
}
|
|
58
|
+
|
|
59
|
+
override close(): MaybePromise {
|
|
60
|
+
// Prepare the store for reuse in the case of reset
|
|
61
|
+
(this.store as DatasourceCache).reclaimValues?.();
|
|
62
|
+
|
|
63
|
+
// Omit the agent to skip disposal logic as client behaviors have none
|
|
64
|
+
super.close();
|
|
65
|
+
}
|
|
57
66
|
}
|
|
@@ -8,8 +8,8 @@ import { ClusterBehavior } from "#behavior/cluster/ClusterBehavior.js";
|
|
|
8
8
|
import { GlobalAttributeState } from "#behavior/cluster/ClusterState.js";
|
|
9
9
|
import { ValidatedElements } from "#behavior/cluster/ValidatedElements.js";
|
|
10
10
|
import type { SupportedElements } from "#endpoint/properties/Behaviors.js";
|
|
11
|
-
import { camelize } from "#general";
|
|
12
|
-
import {
|
|
11
|
+
import { camelize, ImplementationError } from "#general";
|
|
12
|
+
import { ClusterModel, FeatureSet, FieldValue, Schema } from "#model";
|
|
13
13
|
import { Val } from "#protocol";
|
|
14
14
|
import { ClusterType, TlvNoResponse } from "#types";
|
|
15
15
|
import { Behavior } from "../Behavior.js";
|
|
@@ -17,6 +17,8 @@ import { BehaviorBacking } from "./BehaviorBacking.js";
|
|
|
17
17
|
|
|
18
18
|
const NoElements = new Set<string>();
|
|
19
19
|
|
|
20
|
+
export class FeatureMismatchError extends ImplementationError {}
|
|
21
|
+
|
|
20
22
|
/**
|
|
21
23
|
* This class backs the server implementation of a behavior.
|
|
22
24
|
*/
|
|
@@ -101,9 +103,26 @@ export class ServerBehaviorBacking extends BehaviorBacking {
|
|
|
101
103
|
),
|
|
102
104
|
];
|
|
103
105
|
|
|
106
|
+
// Validate the feature map
|
|
107
|
+
const schema = Schema(behavior.type) as ClusterModel;
|
|
108
|
+
if (schema.tag === "cluster") {
|
|
109
|
+
const { supportedFeatures, featureMap } = Schema(behavior.type) as ClusterModel;
|
|
110
|
+
const { featuresSupported, featuresAvailable } = FeatureSet.normalize(
|
|
111
|
+
featureMap,
|
|
112
|
+
new FeatureSet(globals.featureMap),
|
|
113
|
+
);
|
|
114
|
+
for (const name of featuresAvailable) {
|
|
115
|
+
if (supportedFeatures.has(name) !== featuresSupported.has(name)) {
|
|
116
|
+
throw new FeatureMismatchError(
|
|
117
|
+
`The featureMap for ${behavior} does not match the implementation; please use ${behavior.type.name}.with("FeatureName") to configure features`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
104
123
|
// Load public API
|
|
105
124
|
this.#elements = {
|
|
106
|
-
features:
|
|
125
|
+
features: behavior.type.schema.supportedFeatures ?? new Set(),
|
|
107
126
|
attributes: validation.attributes,
|
|
108
127
|
commands: validation.commands,
|
|
109
128
|
events: validation.events,
|
|
@@ -229,6 +229,11 @@ export namespace Datasource {
|
|
|
229
229
|
*/
|
|
230
230
|
externalChangeListener?: (changes: Val.Struct) => Promise<void>;
|
|
231
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Callback installed by the store that releases the values from the datasource when invoked.
|
|
234
|
+
*/
|
|
235
|
+
releaseValues?: () => Val.Struct;
|
|
236
|
+
|
|
232
237
|
/**
|
|
233
238
|
* The current version of the data.
|
|
234
239
|
*/
|
|
@@ -472,6 +477,14 @@ function configureExternalChanges(internals: Internals) {
|
|
|
472
477
|
}
|
|
473
478
|
}
|
|
474
479
|
};
|
|
480
|
+
|
|
481
|
+
store.releaseValues = () => {
|
|
482
|
+
const { values } = internals;
|
|
483
|
+
|
|
484
|
+
internals.values = {};
|
|
485
|
+
|
|
486
|
+
return values;
|
|
487
|
+
};
|
|
475
488
|
}
|
|
476
489
|
|
|
477
490
|
/**
|
|
@@ -115,7 +115,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
115
115
|
timestamp: 0,
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
const attestationSignature = await certification.sign(session, attestationElements);
|
|
118
|
+
const attestationSignature = (await certification.sign(session, attestationElements)).bytes;
|
|
119
119
|
|
|
120
120
|
return { attestationElements, attestationSignature };
|
|
121
121
|
}
|
|
@@ -153,7 +153,8 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
153
153
|
this.context.session.id,
|
|
154
154
|
);
|
|
155
155
|
const nocsrElements = TlvCertSigningRequest.encode({ certSigningRequest, csrNonce });
|
|
156
|
-
|
|
156
|
+
const attestationSignature = (await certification.sign(session, nocsrElements)).bytes;
|
|
157
|
+
return { nocsrElements, attestationSignature };
|
|
157
158
|
}
|
|
158
159
|
|
|
159
160
|
override async certificateChainRequest({ certificateType }: OperationalCredentials.CertificateChainRequest) {
|
|
@@ -480,7 +481,7 @@ export class OperationalCredentialsServer extends OperationalCredentialsBehavior
|
|
|
480
481
|
return {
|
|
481
482
|
fabricIndex,
|
|
482
483
|
fabricBindingVersion,
|
|
483
|
-
signature: await fabric.sign(signatureData),
|
|
484
|
+
signature: (await fabric.sign(signatureData)).bytes,
|
|
484
485
|
};
|
|
485
486
|
}
|
|
486
487
|
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
CryptoError,
|
|
12
12
|
DataReader,
|
|
13
13
|
DataWriter,
|
|
14
|
+
EcdsaSignature,
|
|
14
15
|
Endian,
|
|
15
16
|
InternalError,
|
|
16
17
|
Logger,
|
|
@@ -189,7 +190,7 @@ export namespace VendorIdVerification {
|
|
|
189
190
|
|
|
190
191
|
try {
|
|
191
192
|
// Validate signature over TBS data
|
|
192
|
-
await crypto.verifyEcdsa(PublicKey(rootPublicKey), tbs, signature);
|
|
193
|
+
await crypto.verifyEcdsa(PublicKey(rootPublicKey), tbs, new EcdsaSignature(signature));
|
|
193
194
|
|
|
194
195
|
// Verify Noc cert chain using trusted root
|
|
195
196
|
const rootCert = Rcac.fromTlv(rcac);
|
|
@@ -255,7 +256,11 @@ export namespace VendorIdVerification {
|
|
|
255
256
|
signerSkid,
|
|
256
257
|
});
|
|
257
258
|
|
|
258
|
-
await crypto.verifyEcdsa(
|
|
259
|
+
await crypto.verifyEcdsa(
|
|
260
|
+
PublicKey(ellipticCurvePublicKey),
|
|
261
|
+
ourStatement,
|
|
262
|
+
new EcdsaSignature(vidStatementSignature),
|
|
263
|
+
);
|
|
259
264
|
} else {
|
|
260
265
|
// TODO
|
|
261
266
|
// Look-up the entry in the Operational Trust Anchors Schema under the expected VendorID
|
|
@@ -845,8 +845,8 @@ export class ScenesManagementServer extends ScenesManagementBase {
|
|
|
845
845
|
* @param applyFunc Function that applies scene values for that cluster
|
|
846
846
|
*/
|
|
847
847
|
implementScenes<T extends ClusterBehavior>(behavior: T, applyFunc: ScenesManagementServer.ApplySceneValuesFunc<T>) {
|
|
848
|
-
const type = behavior
|
|
849
|
-
if (!
|
|
848
|
+
const { type } = behavior;
|
|
849
|
+
if (!type.schema.id) {
|
|
850
850
|
return;
|
|
851
851
|
}
|
|
852
852
|
const clusterName = camelize(type.schema.name);
|
|
@@ -54,6 +54,7 @@ export class Behaviors {
|
|
|
54
54
|
#endpoint: Endpoint;
|
|
55
55
|
#supported: SupportedBehaviors;
|
|
56
56
|
#backings: Record<string, BehaviorBacking> = {};
|
|
57
|
+
#events: Record<string, EventEmitter> = {};
|
|
57
58
|
#options: Record<string, object | undefined>;
|
|
58
59
|
#protocol?: ProtocolService;
|
|
59
60
|
|
|
@@ -296,12 +297,6 @@ export class Behaviors {
|
|
|
296
297
|
}
|
|
297
298
|
|
|
298
299
|
this.inject(type, options);
|
|
299
|
-
|
|
300
|
-
this.#endpoint.lifecycle.change(EndpointLifecycle.Change.ServersChanged);
|
|
301
|
-
|
|
302
|
-
if (type.early && this.#endpoint.lifecycle.isInstalled) {
|
|
303
|
-
this.#activateLate(type);
|
|
304
|
-
}
|
|
305
300
|
}
|
|
306
301
|
|
|
307
302
|
/**
|
|
@@ -456,9 +451,12 @@ export class Behaviors {
|
|
|
456
451
|
}
|
|
457
452
|
|
|
458
453
|
/**
|
|
459
|
-
* Add support for an additional behavior
|
|
454
|
+
* Add support for an additional behavior.
|
|
455
|
+
*
|
|
456
|
+
* This should generally only be used prior to initialization. It may cause subtle errors if incompatible types are
|
|
457
|
+
* injected once the endpoint is initialized.
|
|
460
458
|
*/
|
|
461
|
-
inject(type: Behavior.Type, options?: Behavior.Options) {
|
|
459
|
+
inject(type: Behavior.Type, options?: Behavior.Options, notify = true) {
|
|
462
460
|
if (options) {
|
|
463
461
|
this.#options[type.id] = options;
|
|
464
462
|
}
|
|
@@ -470,6 +468,47 @@ export class Behaviors {
|
|
|
470
468
|
this.#supported[type.id] = type;
|
|
471
469
|
|
|
472
470
|
this.#augmentEndpoint(type);
|
|
471
|
+
|
|
472
|
+
if (notify) {
|
|
473
|
+
this.#endpoint.lifecycle.change(EndpointLifecycle.Change.ServersChanged);
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
if (!this.#endpoint.lifecycle.isInstalled) {
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
const activeBacking = this.#backings[type.id];
|
|
481
|
+
if (activeBacking) {
|
|
482
|
+
activeBacking.type = type;
|
|
483
|
+
} else if (type.early) {
|
|
484
|
+
this.#activateLate(type);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Drop support for a behavior.
|
|
490
|
+
*
|
|
491
|
+
* This is intended for synchronization with peers and should not be used for servers as Matter does not allow an
|
|
492
|
+
* endpoint to change its set of supported clusters.
|
|
493
|
+
*/
|
|
494
|
+
drop(id: string): MaybePromise<void> {
|
|
495
|
+
const supported = this.#supported[id];
|
|
496
|
+
if (!supported) {
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
delete this.#supported[id];
|
|
501
|
+
|
|
502
|
+
let promise: undefined | MaybePromise<void>;
|
|
503
|
+
const backing = this.#backings[id];
|
|
504
|
+
if (backing) {
|
|
505
|
+
logger.warn(`Removing ${backing} from active endpoint`);
|
|
506
|
+
promise = backing.close();
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
this.#endpoint.lifecycle.change(EndpointLifecycle.Change.ServersChanged);
|
|
510
|
+
|
|
511
|
+
return promise;
|
|
473
512
|
}
|
|
474
513
|
|
|
475
514
|
/**
|
|
@@ -704,17 +743,19 @@ export class Behaviors {
|
|
|
704
743
|
* Updates endpoint "state" and "events" properties to include properties for a supported behavior.
|
|
705
744
|
*/
|
|
706
745
|
#augmentEndpoint(type: Behavior.Type) {
|
|
746
|
+
const { id, Events } = type;
|
|
747
|
+
|
|
707
748
|
const get = () => this.#backingFor(type).stateView;
|
|
708
|
-
Object.defineProperty(this.#endpoint.state,
|
|
749
|
+
Object.defineProperty(this.#endpoint.state, id, { get, enumerable: true });
|
|
709
750
|
if (type.schema.id !== undefined) {
|
|
710
751
|
Object.defineProperty(this.#endpoint.state, type.schema.id, { get });
|
|
711
752
|
}
|
|
712
753
|
|
|
713
|
-
|
|
714
|
-
Object.defineProperty(this.#endpoint.events, type.id, {
|
|
754
|
+
Object.defineProperty(this.#endpoint.events, id, {
|
|
715
755
|
get: () => {
|
|
756
|
+
let events = this.#events[id];
|
|
716
757
|
if (!events) {
|
|
717
|
-
events = new
|
|
758
|
+
events = this.#events[id] = new Events();
|
|
718
759
|
|
|
719
760
|
if (typeof (events as Events).setContext === "function") {
|
|
720
761
|
(events as Events).setContext(this.#endpoint, type);
|