@matter/protocol 0.11.9 → 0.12.0-alpha.0-20241213-fcd71a96d
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/cluster/server/ClusterDatasource.d.ts +4 -4
- package/dist/cjs/cluster/server/ClusterDatasource.d.ts.map +1 -1
- package/dist/cjs/cluster/server/EventServer.d.ts +9 -8
- package/dist/cjs/cluster/server/EventServer.d.ts.map +1 -1
- package/dist/cjs/cluster/server/EventServer.js +7 -7
- package/dist/cjs/cluster/server/EventServer.js.map +1 -1
- package/dist/cjs/common/FailsafeContext.d.ts +1 -0
- package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
- package/dist/cjs/common/FailsafeContext.js +6 -1
- package/dist/cjs/common/FailsafeContext.js.map +1 -1
- package/dist/cjs/events/BaseEventStore.d.ts +45 -0
- package/dist/cjs/events/BaseEventStore.d.ts.map +1 -0
- package/dist/cjs/events/BaseEventStore.js +115 -0
- package/dist/cjs/events/BaseEventStore.js.map +6 -0
- package/dist/cjs/events/EventStore.d.ts +31 -0
- package/dist/cjs/events/EventStore.d.ts.map +1 -0
- package/dist/cjs/events/EventStore.js +38 -0
- package/dist/cjs/events/EventStore.js.map +6 -0
- package/dist/cjs/events/NonvolatileEventStore.d.ts +30 -0
- package/dist/cjs/events/NonvolatileEventStore.d.ts.map +1 -0
- package/dist/cjs/events/NonvolatileEventStore.js +113 -0
- package/dist/cjs/events/NonvolatileEventStore.js.map +6 -0
- package/dist/cjs/events/Occurrence.d.ts +24 -0
- package/dist/cjs/events/Occurrence.d.ts.map +1 -0
- package/dist/cjs/events/Occurrence.js +22 -0
- package/dist/cjs/events/Occurrence.js.map +6 -0
- package/dist/cjs/events/OccurrenceManager.d.ts +63 -0
- package/dist/cjs/events/OccurrenceManager.d.ts.map +1 -0
- package/dist/cjs/events/OccurrenceManager.js +235 -0
- package/dist/cjs/events/OccurrenceManager.js.map +6 -0
- package/dist/cjs/events/VolatileEventStore.d.ts +32 -0
- package/dist/cjs/events/VolatileEventStore.d.ts.map +1 -0
- package/dist/cjs/events/VolatileEventStore.js +114 -0
- package/dist/cjs/events/VolatileEventStore.js.map +6 -0
- package/dist/cjs/events/index.d.ts +11 -0
- package/dist/cjs/events/index.d.ts.map +1 -0
- package/dist/cjs/events/index.js +28 -0
- package/dist/cjs/events/index.js.map +6 -0
- package/dist/cjs/fabric/Fabric.d.ts +0 -1
- package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
- package/dist/cjs/fabric/Fabric.js +0 -3
- package/dist/cjs/fabric/Fabric.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interaction/InteractionServer.d.ts +1 -1
- package/dist/cjs/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/cjs/interaction/InteractionServer.js +22 -11
- package/dist/cjs/interaction/InteractionServer.js.map +1 -1
- package/dist/cjs/interaction/ServerSubscription.d.ts +3 -4
- package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -1
- package/dist/cjs/interaction/ServerSubscription.js +32 -22
- package/dist/cjs/interaction/ServerSubscription.js.map +1 -1
- package/dist/cjs/interaction/index.d.ts +0 -1
- package/dist/cjs/interaction/index.d.ts.map +1 -1
- package/dist/cjs/interaction/index.js +0 -1
- package/dist/cjs/interaction/index.js.map +1 -1
- package/dist/cjs/mdns/MdnsBroadcaster.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsBroadcaster.js.map +1 -1
- package/dist/cjs/mdns/MdnsScanner.d.ts +2 -2
- package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
- package/dist/cjs/mdns/MdnsService.js +3 -0
- package/dist/cjs/mdns/MdnsService.js.map +1 -1
- package/dist/esm/cluster/server/ClusterDatasource.d.ts +4 -4
- package/dist/esm/cluster/server/ClusterDatasource.d.ts.map +1 -1
- package/dist/esm/cluster/server/EventServer.d.ts +9 -8
- package/dist/esm/cluster/server/EventServer.d.ts.map +1 -1
- package/dist/esm/cluster/server/EventServer.js +7 -7
- package/dist/esm/cluster/server/EventServer.js.map +1 -1
- package/dist/esm/common/FailsafeContext.d.ts +1 -0
- package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
- package/dist/esm/common/FailsafeContext.js +6 -1
- package/dist/esm/common/FailsafeContext.js.map +1 -1
- package/dist/esm/events/BaseEventStore.d.ts +45 -0
- package/dist/esm/events/BaseEventStore.d.ts.map +1 -0
- package/dist/esm/events/BaseEventStore.js +95 -0
- package/dist/esm/events/BaseEventStore.js.map +6 -0
- package/dist/esm/events/EventStore.d.ts +31 -0
- package/dist/esm/events/EventStore.d.ts.map +1 -0
- package/dist/esm/events/EventStore.js +18 -0
- package/dist/esm/events/EventStore.js.map +6 -0
- package/dist/esm/events/NonvolatileEventStore.d.ts +30 -0
- package/dist/esm/events/NonvolatileEventStore.d.ts.map +1 -0
- package/dist/esm/events/NonvolatileEventStore.js +93 -0
- package/dist/esm/events/NonvolatileEventStore.js.map +6 -0
- package/dist/esm/events/Occurrence.d.ts +24 -0
- package/dist/esm/events/Occurrence.d.ts.map +1 -0
- package/dist/esm/events/Occurrence.js +6 -0
- package/dist/esm/events/Occurrence.js.map +6 -0
- package/dist/esm/events/OccurrenceManager.d.ts +63 -0
- package/dist/esm/events/OccurrenceManager.d.ts.map +1 -0
- package/dist/esm/events/OccurrenceManager.js +219 -0
- package/dist/esm/events/OccurrenceManager.js.map +6 -0
- package/dist/esm/events/VolatileEventStore.d.ts +32 -0
- package/dist/esm/events/VolatileEventStore.d.ts.map +1 -0
- package/dist/esm/events/VolatileEventStore.js +94 -0
- package/dist/esm/events/VolatileEventStore.js.map +6 -0
- package/dist/esm/events/index.d.ts +11 -0
- package/dist/esm/events/index.d.ts.map +1 -0
- package/dist/esm/events/index.js +11 -0
- package/dist/esm/events/index.js.map +6 -0
- package/dist/esm/fabric/Fabric.d.ts +0 -1
- package/dist/esm/fabric/Fabric.d.ts.map +1 -1
- package/dist/esm/fabric/Fabric.js +0 -3
- package/dist/esm/fabric/Fabric.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interaction/InteractionServer.d.ts +1 -1
- package/dist/esm/interaction/InteractionServer.d.ts.map +1 -1
- package/dist/esm/interaction/InteractionServer.js +22 -11
- package/dist/esm/interaction/InteractionServer.js.map +1 -1
- package/dist/esm/interaction/ServerSubscription.d.ts +3 -4
- package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -1
- package/dist/esm/interaction/ServerSubscription.js +32 -22
- package/dist/esm/interaction/ServerSubscription.js.map +1 -1
- package/dist/esm/interaction/index.d.ts +0 -1
- package/dist/esm/interaction/index.d.ts.map +1 -1
- package/dist/esm/interaction/index.js +0 -1
- package/dist/esm/interaction/index.js.map +1 -1
- package/dist/esm/mdns/MdnsBroadcaster.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsBroadcaster.js.map +1 -1
- package/dist/esm/mdns/MdnsScanner.d.ts +2 -2
- package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
- package/dist/esm/mdns/MdnsService.js +3 -0
- package/dist/esm/mdns/MdnsService.js.map +1 -1
- package/package.json +6 -6
- package/src/certificate/DeviceCertification.ts +1 -1
- package/src/cluster/server/ClusterDatasource.ts +4 -4
- package/src/cluster/server/EventServer.ts +16 -15
- package/src/common/FailsafeContext.ts +7 -1
- package/src/events/BaseEventStore.ts +124 -0
- package/src/events/EventStore.ts +43 -0
- package/src/events/NonvolatileEventStore.ts +122 -0
- package/src/events/Occurrence.ts +26 -0
- package/src/events/OccurrenceManager.ts +311 -0
- package/src/events/VolatileEventStore.ts +115 -0
- package/src/events/index.ts +11 -0
- package/src/fabric/Fabric.ts +0 -4
- package/src/index.ts +1 -0
- package/src/interaction/InteractionServer.ts +27 -11
- package/src/interaction/ServerSubscription.ts +53 -41
- package/src/interaction/index.ts +0 -1
- package/src/mdns/MdnsBroadcaster.ts +1 -0
- package/src/mdns/MdnsScanner.ts +2 -2
- package/src/mdns/MdnsService.ts +4 -0
- package/dist/cjs/interaction/EventHandler.d.ts +0 -40
- package/dist/cjs/interaction/EventHandler.d.ts.map +0 -1
- package/dist/cjs/interaction/EventHandler.js +0 -127
- package/dist/cjs/interaction/EventHandler.js.map +0 -6
- package/dist/esm/interaction/EventHandler.d.ts +0 -40
- package/dist/esm/interaction/EventHandler.d.ts.map +0 -1
- package/dist/esm/interaction/EventHandler.js +0 -117
- package/dist/esm/interaction/EventHandler.js.map +0 -6
- package/src/interaction/EventHandler.ts +0 -169
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Copyright 2022-2024 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { OccurrenceManager } from "#events/OccurrenceManager.js";
|
|
6
7
|
import { Fabric } from "#fabric/Fabric.js";
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
export interface ClusterDatasource<S extends Storage = any> {
|
|
8
|
+
import { SupportedStorageTypes } from "#general";
|
|
9
|
+
export interface ClusterDatasource {
|
|
10
10
|
readonly version: number;
|
|
11
|
-
readonly eventHandler?:
|
|
11
|
+
readonly eventHandler?: OccurrenceManager;
|
|
12
12
|
readonly fabrics: Fabric[];
|
|
13
13
|
increaseVersion(): number;
|
|
14
14
|
changed(key: string, value: SupportedStorageTypes): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterDatasource.d.ts","sourceRoot":"","sources":["../../../../src/cluster/server/ClusterDatasource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ClusterDatasource.d.ts","sourceRoot":"","sources":["../../../../src/cluster/server/ClusterDatasource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,IAAI,MAAM,CAAC;IAC1B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC5D"}
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* Copyright 2022-2024 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { NumberedOccurrence } from "#events/Occurrence.js";
|
|
7
|
+
import { OccurrenceManager } from "#events/OccurrenceManager.js";
|
|
8
|
+
import { MaybePromise, Storage, StorageOperationResult } from "#general";
|
|
7
9
|
import { AccessLevel } from "#model";
|
|
8
10
|
import { Attributes, BitSchema, Cluster, ClusterId, Commands, Event, EventId, EventPriority, Events, TlvEventFilter, TlvSchema, TypeFromPartialBitSchema, TypeFromSchema } from "#types";
|
|
9
11
|
import { Message } from "../../codec/MessageCodec.js";
|
|
10
12
|
import { EndpointInterface } from "../../endpoint/EndpointInterface.js";
|
|
11
|
-
import { EventHandler, EventStorageData } from "../../interaction/EventHandler.js";
|
|
12
13
|
import { Session } from "../../session/Session.js";
|
|
13
14
|
export type AnyEventServer<T = any, S extends Storage = any> = EventServer<T, S> | FabricSensitiveEventServer<T, S>;
|
|
14
15
|
export declare function createEventServer<T, F extends BitSchema, SF extends TypeFromPartialBitSchema<F>, A extends Attributes, C extends Commands, E extends Events, S extends Storage>(clusterDef: Cluster<F, SF, A, C, E>, eventDef: Event<T, F>, eventName: string, schema: TlvSchema<T>, priority: EventPriority, readAcl: AccessLevel | undefined): EventServer<T, S>;
|
|
@@ -22,20 +23,20 @@ export declare class EventServer<T = any, S extends Storage = any> {
|
|
|
22
23
|
private eventList;
|
|
23
24
|
private readonly listeners;
|
|
24
25
|
protected endpoint?: EndpointInterface;
|
|
25
|
-
protected eventHandler?:
|
|
26
|
+
protected eventHandler?: OccurrenceManager;
|
|
26
27
|
hasFabricSensitiveData: boolean;
|
|
27
28
|
constructor(id: EventId, clusterId: ClusterId, name: string, schema: TlvSchema<T>, priority: EventPriority, readAcl: AccessLevel | undefined);
|
|
28
29
|
get readAcl(): AccessLevel;
|
|
29
30
|
assignToEndpoint(endpoint: EndpointInterface): void;
|
|
30
|
-
bindToEventHandler(eventHandler:
|
|
31
|
+
bindToEventHandler(eventHandler: OccurrenceManager): StorageOperationResult<S>;
|
|
31
32
|
triggerEvent(data: T): StorageOperationResult<S>;
|
|
32
|
-
addListener(listener: (event:
|
|
33
|
-
removeListener(listener: (event:
|
|
34
|
-
get(session: Session, isFabricFiltered: boolean, _message?: Message, filters?: TypeFromSchema<typeof TlvEventFilter>[]):
|
|
33
|
+
addListener(listener: (event: NumberedOccurrence) => void): void;
|
|
34
|
+
removeListener(listener: (event: NumberedOccurrence) => void): void;
|
|
35
|
+
get(session: Session, isFabricFiltered: boolean, _message?: Message, filters?: TypeFromSchema<typeof TlvEventFilter>[]): MaybePromise<NumberedOccurrence[]>;
|
|
35
36
|
}
|
|
36
37
|
export declare class FabricSensitiveEventServer<T, S extends Storage> extends EventServer<T, S> {
|
|
37
38
|
hasFabricSensitiveData: boolean;
|
|
38
|
-
get(session: Session, _isFabricFiltered: boolean, message?: Message, filters?: TypeFromSchema<typeof TlvEventFilter>[]):
|
|
39
|
+
get(session: Session, _isFabricFiltered: boolean, message?: Message, filters?: TypeFromSchema<typeof TlvEventFilter>[]): MaybePromise<NumberedOccurrence[]>;
|
|
39
40
|
triggerEvent(data: T): StorageOperationResult<S, void>;
|
|
40
41
|
}
|
|
41
42
|
//# sourceMappingURL=EventServer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventServer.d.ts","sourceRoot":"","sources":["../../../../src/cluster/server/EventServer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"EventServer.d.ts","sourceRoot":"","sources":["../../../../src/cluster/server/EventServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,7 +72,7 @@ class EventServer {
|
|
|
72
72
|
this.eventHandler = eventHandler;
|
|
73
73
|
const promises = new Array();
|
|
74
74
|
for (const event of this.eventList) {
|
|
75
|
-
const finalEvent = this.eventHandler.
|
|
75
|
+
const finalEvent = this.eventHandler.add(event);
|
|
76
76
|
if (finalEvent !== void 0 && import_general.MaybePromise.is(finalEvent)) {
|
|
77
77
|
promises.push(finalEvent.then((e) => this.listeners.forEach((listener) => listener(e))));
|
|
78
78
|
} else {
|
|
@@ -89,18 +89,18 @@ class EventServer {
|
|
|
89
89
|
if (this.endpoint === void 0 || this.endpoint.number === void 0) {
|
|
90
90
|
throw new import_general.InternalError("Endpoint not assigned");
|
|
91
91
|
}
|
|
92
|
-
const
|
|
92
|
+
const occurrence = {
|
|
93
93
|
eventId: this.id,
|
|
94
94
|
clusterId: this.clusterId,
|
|
95
95
|
endpointId: this.endpoint.number,
|
|
96
96
|
epochTimestamp: import_general.Time.nowMs(),
|
|
97
97
|
priority: this.priority,
|
|
98
|
-
data
|
|
98
|
+
payload: data
|
|
99
99
|
};
|
|
100
100
|
if (this.eventHandler === void 0) {
|
|
101
|
-
this.eventList.push(
|
|
101
|
+
this.eventList.push(occurrence);
|
|
102
102
|
} else {
|
|
103
|
-
const finalEvent = this.eventHandler.
|
|
103
|
+
const finalEvent = this.eventHandler.add(occurrence);
|
|
104
104
|
return import_general.MaybePromise.then(finalEvent, (e) => {
|
|
105
105
|
this.listeners.forEach((listener) => listener(e));
|
|
106
106
|
});
|
|
@@ -118,12 +118,12 @@ class EventServer {
|
|
|
118
118
|
}
|
|
119
119
|
get(session, isFabricFiltered, _message, filters) {
|
|
120
120
|
if (this.eventHandler === void 0) {
|
|
121
|
-
throw new import_general.InternalError("EventServer not bound to
|
|
121
|
+
throw new import_general.InternalError("EventServer not bound to OccurrenceManager");
|
|
122
122
|
}
|
|
123
123
|
if (this.endpoint === void 0) {
|
|
124
124
|
throw new import_general.InternalError("EventServer not bound to Endpoint");
|
|
125
125
|
}
|
|
126
|
-
return this.eventHandler.
|
|
126
|
+
return this.eventHandler.query(
|
|
127
127
|
{ endpointId: this.endpoint.number, clusterId: this.clusterId, eventId: this.id },
|
|
128
128
|
filters,
|
|
129
129
|
// When request is fabric filtered or the event is Fabric sensitive then filter the events for the fabrics
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/cluster/server/EventServer.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -30,6 +30,7 @@ export declare abstract class FailsafeContext {
|
|
|
30
30
|
get associatedFabric(): Fabric | undefined;
|
|
31
31
|
get csrSessionId(): number | undefined;
|
|
32
32
|
get forUpdateNoc(): boolean | undefined;
|
|
33
|
+
get rootCertSet(): boolean;
|
|
33
34
|
get hasRootCert(): boolean;
|
|
34
35
|
get rootCert(): Uint8Array<ArrayBufferLike> | undefined;
|
|
35
36
|
completeCommission(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FailsafeContext.d.ts","sourceRoot":"","sources":["../../../src/common/FailsafeContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAU,eAAe,EAAuB,MAAM,UAAU,CAAC;AACvG,OAAO,EAAwB,MAAM,EAAmB,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACjF,OAAO,EAAE,MAAM,EAAiB,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAI9E,qBAAa,oCAAqC,SAAQ,eAAe;CAAG;AAE5E;;;;;;;;GAQG;AACH,8BAAsB,eAAe;;
|
|
1
|
+
{"version":3,"file":"FailsafeContext.d.ts","sourceRoot":"","sources":["../../../src/common/FailsafeContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAU,eAAe,EAAuB,MAAM,UAAU,CAAC;AACvG,OAAO,EAAwB,MAAM,EAAmB,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACjF,OAAO,EAAE,MAAM,EAAiB,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAI9E,qBAAa,oCAAqC,SAAQ,eAAe;CAAG;AAE5E;;;;;;;;GAQG;AACH,8BAAsB,eAAe;;gBAarB,OAAO,EAAE,eAAe,CAAC,OAAO;IAyBtC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,mBAAmB,EAAE,MAAM;IAQpE,IAAI,WAAW,6CAEd;IAED,IAAI,YAAY,kCAEf;IAED,IAAI,YAAY,8BAEf;IAED,IAAI,gBAAgB,uBAEnB;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,YAAY,wBAEf;IAED,IAAI,WAAW,YAEd;IAED,IAAI,WAAW,YAEd;IAED,IAAI,QAAQ,4CAEX;IAEK,kBAAkB;IAwBxB,kBAAkB;IAKlB,kBAAkB;IAIZ,SAAS,CAAC,MAAM,EAAE,MAAM;IAQxB,YAAY,CAAC,MAAM,EAAE,MAAM;IAKjC;;;OAGG;IACH,+BAA+B,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM;IAWpE,iBAAiB;IAOjB,KAAK;IAWX,sFAAsF;IACtF,WAAW,CAAC,QAAQ,EAAE,UAAU;IAKhC;;;OAGG;IACG,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,SAAS;IAShF,+GAA+G;IACzG,WAAW,CAAC,OAAO,EAAE;QACvB,QAAQ,EAAE,UAAU,CAAC;QACrB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;QAClC,aAAa,EAAE,QAAQ,CAAC;QACxB,QAAQ,EAAE,UAAU,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC5B;cA2Ce,QAAQ;IAsDxB,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE5C,8DAA8D;IAC9D,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvC,aAAa,CAAC,MAAM,EAAE,MAAM;IAIlC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpD,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAC9C;AAED,yBAAiB,eAAe,CAAC;IAC7B,UAAiB,OAAO;QACpB,QAAQ,EAAE,cAAc,CAAC;QACzB,OAAO,EAAE,aAAa,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,4BAA4B,EAAE,MAAM,CAAC;QACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;KACxC;CACJ"}
|
|
@@ -43,6 +43,7 @@ class FailsafeContext {
|
|
|
43
43
|
#csrSessionId;
|
|
44
44
|
#forUpdateNoc;
|
|
45
45
|
#fabricBuilder = new import_Fabric.FabricBuilder();
|
|
46
|
+
#rootCertSet = false;
|
|
46
47
|
#commissioned = (0, import_general.AsyncObservable)();
|
|
47
48
|
constructor(options) {
|
|
48
49
|
const { expiryLengthSeconds, associatedFabric, maxCumulativeFailsafeSeconds } = options;
|
|
@@ -86,8 +87,11 @@ class FailsafeContext {
|
|
|
86
87
|
get forUpdateNoc() {
|
|
87
88
|
return this.#forUpdateNoc;
|
|
88
89
|
}
|
|
90
|
+
get rootCertSet() {
|
|
91
|
+
return this.#rootCertSet;
|
|
92
|
+
}
|
|
89
93
|
get hasRootCert() {
|
|
90
|
-
return this.#fabricBuilder.
|
|
94
|
+
return this.#fabricBuilder.rootCert !== void 0;
|
|
91
95
|
}
|
|
92
96
|
get rootCert() {
|
|
93
97
|
return this.#fabricBuilder.rootCert;
|
|
@@ -155,6 +159,7 @@ class FailsafeContext {
|
|
|
155
159
|
/** Handles adding a trusted root certificate from Operational Credentials cluster. */
|
|
156
160
|
setRootCert(rootCert) {
|
|
157
161
|
this.#fabricBuilder.setRootCert(rootCert);
|
|
162
|
+
this.#rootCertSet = true;
|
|
158
163
|
}
|
|
159
164
|
/**
|
|
160
165
|
* Build a new Fabric object based on an existing fabric for the "UpdateNoc" case of the Operational Credentials
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/common/FailsafeContext.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA4F;AAC5F,mBAAwE;AACxE,oBAAsC;AAGtC,2BAAyD;AAXzD;AAAA;AAAA;AAAA;AAAA;AAaA,MAAM,SAAS,sBAAO,IAAI,iBAAiB;AAEpC,MAAM,6CAA6C,+BAAgB;AAAC;AAWpE,MAAe,gBAAgB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,IAAI,4BAAc;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MaybePromise, StorageContext } from "#general";
|
|
7
|
+
import { EventNumber } from "#types";
|
|
8
|
+
import { EventStore, OccurrenceSummary } from "./EventStore.js";
|
|
9
|
+
import { Occurrence } from "./Occurrence.js";
|
|
10
|
+
/**
|
|
11
|
+
* Common base class for standard event stores.
|
|
12
|
+
*
|
|
13
|
+
* This supports data load for both persistent and ephemeral stores so stores can manage conversion when the
|
|
14
|
+
* implementation changes across restarts.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class BaseEventStore implements EventStore {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(storage: StorageContext);
|
|
19
|
+
abstract load(): MaybePromise<OccurrenceSummary[]>;
|
|
20
|
+
abstract add(occurrence: Occurrence): MaybePromise<OccurrenceSummary>;
|
|
21
|
+
abstract get(number: EventNumber): MaybePromise<Occurrence>;
|
|
22
|
+
abstract delete(number: EventNumber): MaybePromise<void>;
|
|
23
|
+
clear(): MaybePromise<void>;
|
|
24
|
+
abstract close(): MaybePromise<void>;
|
|
25
|
+
protected loadInitialState(): Promise<{
|
|
26
|
+
reservationEnd: bigint | undefined;
|
|
27
|
+
eventIds: bigint[];
|
|
28
|
+
}>;
|
|
29
|
+
protected get nextNumber(): bigint;
|
|
30
|
+
protected allocateNumber(): EventNumber;
|
|
31
|
+
protected get storage(): StorageContext<any>;
|
|
32
|
+
protected get eventStorage(): StorageContext<any>;
|
|
33
|
+
protected logLoad(type: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* If present in the store, this sub-context contains persisted events.
|
|
36
|
+
*/
|
|
37
|
+
static EVENTS_KEY: string;
|
|
38
|
+
/**
|
|
39
|
+
* If present in the store, this value designates the next event value to use on startup.
|
|
40
|
+
*
|
|
41
|
+
* This should really be "lastReservedNumber" but keeping old name for backwards compatibility.
|
|
42
|
+
*/
|
|
43
|
+
static LAST_RESERVED_NUMBER_KEY: string;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=BaseEventStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseEventStore.d.ts","sourceRoot":"","sources":["../../../src/events/BaseEventStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAyB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C;;;;;GAKG;AACH,8BAAsB,cAAe,YAAW,UAAU;;gBAK1C,OAAO,EAAE,cAAc;IAKnC,QAAQ,CAAC,IAAI,IAAI,YAAY,CAAC,iBAAiB,EAAE,CAAC;IAElD,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAErE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC;IAE3D,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;IAExD,KAAK;IAUL,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;cAEpB,gBAAgB;;;;IAkChC,SAAS,KAAK,UAAU,WAKvB;IAED,SAAS,CAAC,cAAc,IAGH,WAAW;IAGhC,SAAS,KAAK,OAAO,wBAEpB;IAED,SAAS,KAAK,YAAY,wBAEzB;IAED,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;IAQ9B;;OAEG;IACH,MAAM,CAAC,UAAU,SAAY;IAE7B;;;;OAIG;IACH,MAAM,CAAC,wBAAwB,SAAqB;CACvD"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var BaseEventStore_exports = {};
|
|
20
|
+
__export(BaseEventStore_exports, {
|
|
21
|
+
BaseEventStore: () => BaseEventStore
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(BaseEventStore_exports);
|
|
24
|
+
var import_general = require("#general");
|
|
25
|
+
/**
|
|
26
|
+
* @license
|
|
27
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
28
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
+
*/
|
|
30
|
+
const logger = import_general.Logger.get("BaseEventStore");
|
|
31
|
+
class BaseEventStore {
|
|
32
|
+
#storage;
|
|
33
|
+
#eventStorage;
|
|
34
|
+
#nextNumber;
|
|
35
|
+
constructor(storage) {
|
|
36
|
+
this.#storage = storage;
|
|
37
|
+
this.#eventStorage = storage.createContext(BaseEventStore.EVENTS_KEY);
|
|
38
|
+
}
|
|
39
|
+
clear() {
|
|
40
|
+
return import_general.MaybePromise.then(
|
|
41
|
+
this.close(),
|
|
42
|
+
() => import_general.MaybePromise.then(
|
|
43
|
+
this.#storage.clear(),
|
|
44
|
+
() => import_general.MaybePromise.then(this.#eventStorage.clear(), () => {
|
|
45
|
+
this.#nextNumber = 1n;
|
|
46
|
+
})
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
async loadInitialState() {
|
|
51
|
+
let reservationEnd;
|
|
52
|
+
if (await this.#storage.has(BaseEventStore.LAST_RESERVED_NUMBER_KEY)) {
|
|
53
|
+
reservationEnd = await this.#storage.get(BaseEventStore.LAST_RESERVED_NUMBER_KEY);
|
|
54
|
+
if (reservationEnd !== void 0 && !Number.isInteger(reservationEnd)) {
|
|
55
|
+
logger.warn("Ignoring invalid value for last persisted event number");
|
|
56
|
+
reservationEnd = void 0;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
let nextNumber = reservationEnd;
|
|
60
|
+
const eventNumbers = Array();
|
|
61
|
+
for (const key of await this.#storage.createContext(BaseEventStore.EVENTS_KEY).keys()) {
|
|
62
|
+
let number;
|
|
63
|
+
try {
|
|
64
|
+
number = BigInt(key);
|
|
65
|
+
} catch (e) {
|
|
66
|
+
if (e instanceof SyntaxError) {
|
|
67
|
+
logger.warn(`Ignoring event stored with invalid key ${key}`);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
throw e;
|
|
71
|
+
}
|
|
72
|
+
eventNumbers.push(number);
|
|
73
|
+
if (nextNumber === void 0 || nextNumber <= number) {
|
|
74
|
+
nextNumber = number + 1n;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
this.#nextNumber = nextNumber ?? 1n;
|
|
78
|
+
return { reservationEnd, eventIds: eventNumbers };
|
|
79
|
+
}
|
|
80
|
+
get nextNumber() {
|
|
81
|
+
if (this.#nextNumber === void 0) {
|
|
82
|
+
throw new import_general.InternalError("Event store numbering accessed before load");
|
|
83
|
+
}
|
|
84
|
+
return this.#nextNumber;
|
|
85
|
+
}
|
|
86
|
+
allocateNumber() {
|
|
87
|
+
const number = this.nextNumber;
|
|
88
|
+
this.#nextNumber = this.nextNumber + 1n;
|
|
89
|
+
return number;
|
|
90
|
+
}
|
|
91
|
+
get storage() {
|
|
92
|
+
return this.#storage;
|
|
93
|
+
}
|
|
94
|
+
get eventStorage() {
|
|
95
|
+
return this.#eventStorage;
|
|
96
|
+
}
|
|
97
|
+
logLoad(type) {
|
|
98
|
+
if (this.nextNumber === 1n) {
|
|
99
|
+
logger.info(`Initialized new ${type} event store`);
|
|
100
|
+
} else {
|
|
101
|
+
logger.info(`Loaded ${type} event store with next number ${this.nextNumber}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* If present in the store, this sub-context contains persisted events.
|
|
106
|
+
*/
|
|
107
|
+
static EVENTS_KEY = "events";
|
|
108
|
+
/**
|
|
109
|
+
* If present in the store, this value designates the next event value to use on startup.
|
|
110
|
+
*
|
|
111
|
+
* This should really be "lastReservedNumber" but keeping old name for backwards compatibility.
|
|
112
|
+
*/
|
|
113
|
+
static LAST_RESERVED_NUMBER_KEY = "lastEventNumber";
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=BaseEventStore.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/events/BaseEventStore.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAAoE;AANpE;AAAA;AAAA;AAAA;AAAA;AAWA,MAAM,SAAS,sBAAO,IAAI,gBAAgB;AAQnC,MAAe,eAAqC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,SAAyB;AACjC,SAAK,WAAW;AAChB,SAAK,gBAAgB,QAAQ,cAAc,eAAe,UAAU;AAAA,EACxE;AAAA,EAUA,QAAQ;AACJ,WAAO,4BAAa;AAAA,MAAK,KAAK,MAAM;AAAA,MAAG,MACnC,4BAAa;AAAA,QAAK,KAAK,SAAS,MAAM;AAAA,QAAG,MACrC,4BAAa,KAAK,KAAK,cAAc,MAAM,GAAG,MAAM;AAChD,eAAK,cAAc;AAAA,QACvB,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAAA,EAIA,MAAgB,mBAAmB;AAC/B,QAAI;AACJ,QAAI,MAAM,KAAK,SAAS,IAAI,eAAe,wBAAwB,GAAG;AAClE,uBAAiB,MAAM,KAAK,SAAS,IAAY,eAAe,wBAAwB;AACxF,UAAI,mBAAmB,UAAa,CAAC,OAAO,UAAU,cAAc,GAAG;AACnE,eAAO,KAAK,wDAAwD;AACpE,yBAAiB;AAAA,MACrB;AAAA,IACJ;AACA,QAAI,aAAa;AAEjB,UAAM,eAAe,MAAc;AACnC,eAAW,OAAO,MAAM,KAAK,SAAS,cAAc,eAAe,UAAU,EAAE,KAAK,GAAG;AACnF,UAAI;AACJ,UAAI;AACA,iBAAS,OAAO,GAAG;AAAA,MACvB,SAAS,GAAG;AACR,YAAI,aAAa,aAAa;AAC1B,iBAAO,KAAK,0CAA0C,GAAG,EAAE;AAC3D;AAAA,QACJ;AACA,cAAM;AAAA,MACV;AACA,mBAAa,KAAK,MAAM;AACxB,UAAI,eAAe,UAAa,cAAc,QAAQ;AAClD,qBAAa,SAAS;AAAA,MAC1B;AAAA,IACJ;AAEA,SAAK,cAAe,cAAc;AAElC,WAAO,EAAE,gBAAgB,UAAU,aAAa;AAAA,EACpD;AAAA,EAEA,IAAc,aAAa;AACvB,QAAI,KAAK,gBAAgB,QAAW;AAChC,YAAM,IAAI,6BAAc,4CAA4C;AAAA,IACxE;AACA,WAAO,KAAK;AAAA,EAChB;AAAA,EAEU,iBAAiB;AACvB,UAAM,SAAS,KAAK;AACpB,SAAK,cAAc,KAAK,aAAa;AACrC,WAAO;AAAA,EACX;AAAA,EAEA,IAAc,UAAU;AACpB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,IAAc,eAAe;AACzB,WAAO,KAAK;AAAA,EAChB;AAAA,EAEU,QAAQ,MAAc;AAC5B,QAAI,KAAK,eAAe,IAAI;AACxB,aAAO,KAAK,mBAAmB,IAAI,cAAc;AAAA,IACrD,OAAO;AACH,aAAO,KAAK,UAAU,IAAI,iCAAiC,KAAK,UAAU,EAAE;AAAA,IAChF;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpB,OAAO,2BAA2B;AACtC;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MaybePromise } from "#general";
|
|
7
|
+
import { ClusterId, EndpointNumber, EventId, EventNumber, EventPriority } from "#types";
|
|
8
|
+
import { Occurrence } from "./Occurrence.js";
|
|
9
|
+
/**
|
|
10
|
+
* Index entry associated with an event occurrence.
|
|
11
|
+
*/
|
|
12
|
+
export interface OccurrenceSummary {
|
|
13
|
+
number: EventNumber;
|
|
14
|
+
priority: EventPriority;
|
|
15
|
+
endpointId: EndpointNumber;
|
|
16
|
+
clusterId: ClusterId;
|
|
17
|
+
eventId: EventId;
|
|
18
|
+
}
|
|
19
|
+
export declare function OccurrenceSummary(number: bigint, occurrence: Occurrence): OccurrenceSummary;
|
|
20
|
+
/**
|
|
21
|
+
* Backing store for {@link OccurrenceManager}.
|
|
22
|
+
*/
|
|
23
|
+
export interface EventStore {
|
|
24
|
+
load(): MaybePromise<OccurrenceSummary[]>;
|
|
25
|
+
add(event: Occurrence): MaybePromise<OccurrenceSummary>;
|
|
26
|
+
get(number: EventNumber): MaybePromise<Occurrence>;
|
|
27
|
+
delete(number: EventNumber): MaybePromise<void>;
|
|
28
|
+
clear(): MaybePromise<void>;
|
|
29
|
+
close(): MaybePromise<void>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=EventStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventStore.d.ts","sourceRoot":"","sources":["../../../src/events/EventStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,iBAAiB,CAQ3F;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,IAAI,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC1C,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACxD,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var EventStore_exports = {};
|
|
20
|
+
__export(EventStore_exports, {
|
|
21
|
+
OccurrenceSummary: () => OccurrenceSummary
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(EventStore_exports);
|
|
24
|
+
/**
|
|
25
|
+
* @license
|
|
26
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
27
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
28
|
+
*/
|
|
29
|
+
function OccurrenceSummary(number, occurrence) {
|
|
30
|
+
return {
|
|
31
|
+
number,
|
|
32
|
+
priority: occurrence.priority,
|
|
33
|
+
endpointId: occurrence.endpointId,
|
|
34
|
+
clusterId: occurrence.clusterId,
|
|
35
|
+
eventId: occurrence.eventId
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=EventStore.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/events/EventStore.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBO,SAAS,kBAAkB,QAAgB,YAA2C;AACzF,SAAO;AAAA,IACH;AAAA,IACA,UAAU,WAAW;AAAA,IACrB,YAAY,WAAW;AAAA,IACvB,WAAW,WAAW;AAAA,IACtB,SAAS,WAAW;AAAA,EACxB;AACJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { MaybePromise, StorageContext } from "#general";
|
|
7
|
+
import { EventNumber } from "#types";
|
|
8
|
+
import { BaseEventStore } from "./BaseEventStore.js";
|
|
9
|
+
import { OccurrenceSummary } from "./EventStore.js";
|
|
10
|
+
import { Occurrence } from "./Occurrence.js";
|
|
11
|
+
/**
|
|
12
|
+
* Event store that maintains even state across restarts.
|
|
13
|
+
*
|
|
14
|
+
* Reduces memory usage vs. non-volatle storage and maintains auditibility across restarts. Requires a write for every
|
|
15
|
+
* event.
|
|
16
|
+
*/
|
|
17
|
+
export declare class NonvolatileEventStore extends BaseEventStore {
|
|
18
|
+
#private;
|
|
19
|
+
/**
|
|
20
|
+
* Create new store that persistes events into {@link storage}.
|
|
21
|
+
*/
|
|
22
|
+
constructor(storage: StorageContext);
|
|
23
|
+
load(): Promise<OccurrenceSummary[]>;
|
|
24
|
+
add(occurrence: Occurrence): MaybePromise<OccurrenceSummary>;
|
|
25
|
+
get(number: EventNumber): MaybePromise<Occurrence>;
|
|
26
|
+
delete(number: EventNumber): MaybePromise<void>;
|
|
27
|
+
clear(): MaybePromise<void>;
|
|
28
|
+
close(): Promise<void> | undefined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=NonvolatileEventStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NonvolatileEventStore.d.ts","sourceRoot":"","sources":["../../../src/events/NonvolatileEventStore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAU,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,cAAc;;IAIrD;;OAEG;gBACS,OAAO,EAAE,cAAc;IAIpB,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0B1C,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,iBAAiB,CAAC;IA8B5D,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC;IAIlD,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC;IAI/C,KAAK;IAKL,KAAK;CAqBjB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var NonvolatileEventStore_exports = {};
|
|
20
|
+
__export(NonvolatileEventStore_exports, {
|
|
21
|
+
NonvolatileEventStore: () => NonvolatileEventStore
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(NonvolatileEventStore_exports);
|
|
24
|
+
var import_general = require("#general");
|
|
25
|
+
var import_BaseEventStore = require("./BaseEventStore.js");
|
|
26
|
+
var import_EventStore = require("./EventStore.js");
|
|
27
|
+
/**
|
|
28
|
+
* @license
|
|
29
|
+
* Copyright 2022-2024 Matter.js Authors
|
|
30
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
31
|
+
*/
|
|
32
|
+
const logger = import_general.Logger.get("NonvolatileEventStore");
|
|
33
|
+
class NonvolatileEventStore extends import_BaseEventStore.BaseEventStore {
|
|
34
|
+
#removeNumberReservation = false;
|
|
35
|
+
#iops = /* @__PURE__ */ new Set();
|
|
36
|
+
/**
|
|
37
|
+
* Create new store that persistes events into {@link storage}.
|
|
38
|
+
*/
|
|
39
|
+
constructor(storage) {
|
|
40
|
+
super(storage);
|
|
41
|
+
}
|
|
42
|
+
async load() {
|
|
43
|
+
const { reservationEnd, eventIds: eventNumbers } = await this.loadInitialState();
|
|
44
|
+
if (reservationEnd !== void 0) {
|
|
45
|
+
logger.warn("Converting volatile state store to non-volatile");
|
|
46
|
+
this.#removeNumberReservation = true;
|
|
47
|
+
}
|
|
48
|
+
const index = Array();
|
|
49
|
+
for (const number of eventNumbers) {
|
|
50
|
+
const occurrence = await this.eventStorage.get(number.toString());
|
|
51
|
+
if (typeof occurrence !== "object" || occurrence === null) {
|
|
52
|
+
logger.warn("Ignoring invalid stored event occurrence");
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
index.push((0, import_EventStore.OccurrenceSummary)(number, occurrence));
|
|
56
|
+
}
|
|
57
|
+
this.logLoad("non-volatile");
|
|
58
|
+
return index;
|
|
59
|
+
}
|
|
60
|
+
add(occurrence) {
|
|
61
|
+
const number = this.allocateNumber();
|
|
62
|
+
const result = import_general.MaybePromise.then(this.eventStorage.set(number.toString(), occurrence), () => {
|
|
63
|
+
const summary = (0, import_EventStore.OccurrenceSummary)(number, occurrence);
|
|
64
|
+
if (this.#removeNumberReservation) {
|
|
65
|
+
this.#removeNumberReservation = false;
|
|
66
|
+
const conversion = this.storage.delete(import_BaseEventStore.BaseEventStore.LAST_RESERVED_NUMBER_KEY);
|
|
67
|
+
return import_general.MaybePromise.then(
|
|
68
|
+
conversion,
|
|
69
|
+
() => summary,
|
|
70
|
+
(error) => {
|
|
71
|
+
console.warn("Error clearing volatile event number reservation", error);
|
|
72
|
+
return summary;
|
|
73
|
+
}
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
return summary;
|
|
77
|
+
});
|
|
78
|
+
return this.#trackIop(result);
|
|
79
|
+
}
|
|
80
|
+
get(number) {
|
|
81
|
+
return this.#trackIop(this.eventStorage.get(number.toString()));
|
|
82
|
+
}
|
|
83
|
+
delete(number) {
|
|
84
|
+
return this.#trackIop(this.eventStorage.delete(number.toString()));
|
|
85
|
+
}
|
|
86
|
+
clear() {
|
|
87
|
+
this.#removeNumberReservation = false;
|
|
88
|
+
return super.clear();
|
|
89
|
+
}
|
|
90
|
+
close() {
|
|
91
|
+
if (this.#iops.size) {
|
|
92
|
+
return Promise.allSettled(this.#iops).then(
|
|
93
|
+
() => {
|
|
94
|
+
},
|
|
95
|
+
() => {
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* All operations may be async depending on storage so we track them in a set so we can ensure we don't close until
|
|
102
|
+
* they complete. This should happen at higher levels so this is just for completeness.
|
|
103
|
+
*/
|
|
104
|
+
#trackIop(result) {
|
|
105
|
+
if (import_general.MaybePromise.is(result)) {
|
|
106
|
+
logger.warn("Waiting on ongoing write before event store closure");
|
|
107
|
+
result = Promise.resolve(result).finally(() => this.#iops.delete(result));
|
|
108
|
+
this.#iops.add(result);
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=NonvolatileEventStore.js.map
|