@matter/general 0.15.3 → 0.16.0-alpha.0-20250802-1af103e3d
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/storage/Storage.d.ts +20 -39
- package/dist/cjs/storage/Storage.d.ts.map +1 -1
- package/dist/cjs/storage/Storage.js +17 -7
- package/dist/cjs/storage/Storage.js.map +1 -1
- package/dist/cjs/storage/StorageBackendMemory.d.ts +5 -3
- package/dist/cjs/storage/StorageBackendMemory.d.ts.map +1 -1
- package/dist/cjs/storage/StorageBackendMemory.js +34 -1
- package/dist/cjs/storage/StorageBackendMemory.js.map +1 -1
- package/dist/cjs/storage/StorageContext.d.ts +20 -17
- package/dist/cjs/storage/StorageContext.d.ts.map +1 -1
- package/dist/cjs/storage/StorageContext.js +9 -12
- package/dist/cjs/storage/StorageContext.js.map +1 -1
- package/dist/cjs/storage/StorageManager.d.ts +3 -3
- package/dist/cjs/storage/StorageManager.d.ts.map +1 -1
- package/dist/cjs/storage/StorageManager.js.map +1 -1
- package/dist/cjs/storage/StorageService.d.ts +1 -1
- package/dist/esm/storage/Storage.d.ts +20 -39
- package/dist/esm/storage/Storage.d.ts.map +1 -1
- package/dist/esm/storage/Storage.js +17 -7
- package/dist/esm/storage/Storage.js.map +1 -1
- package/dist/esm/storage/StorageBackendMemory.d.ts +5 -3
- package/dist/esm/storage/StorageBackendMemory.d.ts.map +1 -1
- package/dist/esm/storage/StorageBackendMemory.js +35 -2
- package/dist/esm/storage/StorageBackendMemory.js.map +1 -1
- package/dist/esm/storage/StorageContext.d.ts +20 -17
- package/dist/esm/storage/StorageContext.d.ts.map +1 -1
- package/dist/esm/storage/StorageContext.js +9 -12
- package/dist/esm/storage/StorageContext.js.map +1 -1
- package/dist/esm/storage/StorageManager.d.ts +3 -3
- package/dist/esm/storage/StorageManager.d.ts.map +1 -1
- package/dist/esm/storage/StorageManager.js.map +1 -1
- package/dist/esm/storage/StorageService.d.ts +1 -1
- package/package.json +2 -2
- package/src/storage/Storage.ts +32 -46
- package/src/storage/StorageBackendMemory.ts +39 -3
- package/src/storage/StorageContext.ts +32 -36
- package/src/storage/StorageManager.ts +3 -3
|
@@ -11,34 +11,11 @@ export declare class StorageError extends MatterError {
|
|
|
11
11
|
/**
|
|
12
12
|
* Matter.js uses this key/value API to manage persistent state.
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
15
|
-
readonly initialized: boolean;
|
|
16
|
-
initialize(): MaybePromise<void>;
|
|
17
|
-
close(): MaybePromise<void>;
|
|
18
|
-
get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
|
|
19
|
-
set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
20
|
-
set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
21
|
-
delete(contexts: string[], key: string): MaybePromise<void>;
|
|
22
|
-
keys(contexts: string[]): MaybePromise<string[]>;
|
|
23
|
-
values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
24
|
-
contexts(contexts: string[]): MaybePromise<string[]>;
|
|
25
|
-
clearAll(contexts: string[]): MaybePromise<void>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Extended interface for storage that supports snapshotting.
|
|
29
|
-
*/
|
|
30
|
-
export interface CloneableStorage {
|
|
31
|
-
clone(): MaybePromise<Storage>;
|
|
32
|
-
}
|
|
33
|
-
export declare namespace CloneableStorage {
|
|
34
|
-
function is<T extends {}>(storage: T): storage is T & CloneableStorage;
|
|
35
|
-
function assert<T extends {}>(storage: T): asserts storage is T & CloneableStorage;
|
|
36
|
-
}
|
|
37
|
-
export declare abstract class MaybeAsyncStorage implements Storage {
|
|
38
|
-
abstract initialized: boolean;
|
|
14
|
+
export declare abstract class Storage {
|
|
15
|
+
abstract readonly initialized: boolean;
|
|
39
16
|
abstract initialize(): MaybePromise<void>;
|
|
40
17
|
abstract close(): MaybePromise<void>;
|
|
41
|
-
abstract get
|
|
18
|
+
abstract get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
|
|
42
19
|
abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
43
20
|
abstract set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
44
21
|
abstract delete(contexts: string[], key: string): MaybePromise<void>;
|
|
@@ -46,19 +23,23 @@ export declare abstract class MaybeAsyncStorage implements Storage {
|
|
|
46
23
|
abstract values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
47
24
|
abstract contexts(contexts: string[]): MaybePromise<string[]>;
|
|
48
25
|
abstract clearAll(contexts: string[]): MaybePromise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a key exists in the storage for the given contexts.
|
|
28
|
+
* Important Note: This default implementation just reads the value for the key and checks if it is undefined.
|
|
29
|
+
* Please implement this method in your storage implementation if you want to optimize it.
|
|
30
|
+
*/
|
|
31
|
+
has(contexts: string[], key: string): MaybePromise<boolean>;
|
|
32
|
+
abstract openBlob(contexts: string[], key: string): MaybePromise<Blob>;
|
|
33
|
+
abstract writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Uint8Array>): MaybePromise<void>;
|
|
49
34
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
abstract values(contexts: string[]): Record<string, SupportedStorageTypes>;
|
|
60
|
-
abstract contexts(contexts: string[]): string[];
|
|
61
|
-
abstract clearAll(contexts: string[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Extended interface for storage that supports snapshotting.
|
|
37
|
+
*/
|
|
38
|
+
export interface CloneableStorage {
|
|
39
|
+
clone(): MaybePromise<Storage>;
|
|
40
|
+
}
|
|
41
|
+
export declare namespace CloneableStorage {
|
|
42
|
+
function is<T extends {}>(storage: T): storage is T & CloneableStorage;
|
|
43
|
+
function assert<T extends {}>(storage: T): asserts storage is T & CloneableStorage;
|
|
62
44
|
}
|
|
63
|
-
export type StorageOperationResult<S extends Storage, T = void> = S extends SyncStorage ? T : Promise<T>;
|
|
64
45
|
//# sourceMappingURL=Storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../src/storage/Storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../src/storage/Storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD;;GAEG;AACH,8BAAsB,OAAO;IACzB,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAC9F,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;IACnG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC;IAC/F,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACxF,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC;IAEzD;;;;OAIG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;IAQ3D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;IACtE,QAAQ,CAAC,mBAAmB,CACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,YAAY,CAAC,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;CAClC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,SAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,gBAAgB,CAE5E;IAED,SAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,gBAAgB,CAIxF;CACJ"}
|
|
@@ -19,12 +19,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var Storage_exports = {};
|
|
20
20
|
__export(Storage_exports, {
|
|
21
21
|
CloneableStorage: () => CloneableStorage,
|
|
22
|
-
|
|
23
|
-
StorageError: () => StorageError
|
|
24
|
-
SyncStorage: () => SyncStorage
|
|
22
|
+
Storage: () => Storage,
|
|
23
|
+
StorageError: () => StorageError
|
|
25
24
|
});
|
|
26
25
|
module.exports = __toCommonJS(Storage_exports);
|
|
27
26
|
var import_MatterError = require("../MatterError.js");
|
|
27
|
+
var import_Promises = require("../util/Promises.js");
|
|
28
28
|
/**
|
|
29
29
|
* @license
|
|
30
30
|
* Copyright 2022-2025 Matter.js Authors
|
|
@@ -32,6 +32,20 @@ var import_MatterError = require("../MatterError.js");
|
|
|
32
32
|
*/
|
|
33
33
|
class StorageError extends import_MatterError.MatterError {
|
|
34
34
|
}
|
|
35
|
+
class Storage {
|
|
36
|
+
/**
|
|
37
|
+
* Checks if a key exists in the storage for the given contexts.
|
|
38
|
+
* Important Note: This default implementation just reads the value for the key and checks if it is undefined.
|
|
39
|
+
* Please implement this method in your storage implementation if you want to optimize it.
|
|
40
|
+
*/
|
|
41
|
+
has(contexts, key) {
|
|
42
|
+
const value = this.get(contexts, key);
|
|
43
|
+
if (import_Promises.MaybePromise.is(value)) {
|
|
44
|
+
return import_Promises.MaybePromise.then(value, (v) => v !== void 0);
|
|
45
|
+
}
|
|
46
|
+
return value !== void 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
35
49
|
var CloneableStorage;
|
|
36
50
|
((CloneableStorage2) => {
|
|
37
51
|
function is(storage) {
|
|
@@ -45,8 +59,4 @@ var CloneableStorage;
|
|
|
45
59
|
}
|
|
46
60
|
CloneableStorage2.assert = assert;
|
|
47
61
|
})(CloneableStorage || (CloneableStorage = {}));
|
|
48
|
-
class MaybeAsyncStorage {
|
|
49
|
-
}
|
|
50
|
-
class SyncStorage {
|
|
51
|
-
}
|
|
52
62
|
//# sourceMappingURL=Storage.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/Storage.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,yBAAiD;AACjD,sBAA6B;AAN7B;AAAA;AAAA;AAAA;AAAA;AASO,MAAM,qBAAqB,+BAAY;AAAC;AAKxC,MAAe,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkB1B,IAAI,UAAoB,KAAoC;AACxD,UAAM,QAAQ,KAAK,IAAI,UAAU,GAAG;AACpC,QAAI,6BAAa,GAAG,KAAK,GAAG;AACxB,aAAO,6BAAa,KAAK,OAAO,OAAK,MAAM,MAAS;AAAA,IACxD;AACA,WAAO,UAAU;AAAA,EACrB;AAQJ;AASO,IAAU;AAAA,CAAV,CAAUA,sBAAV;AACI,WAAS,GAAiB,SAA6C;AAC1E,WAAO,WAAW,WAAW,OAAO,QAAQ,UAAU;AAAA,EAC1D;AAFO,EAAAA,kBAAS;AAIT,WAAS,OAAqB,SAAqD;AACtF,QAAI,CAAC,GAAG,OAAO,GAAG;AACd,YAAM,IAAI,uCAAoB,yDAAyD;AAAA,IAC3F;AAAA,EACJ;AAJO,EAAAA,kBAAS;AAAA,GALH;",
|
|
5
5
|
"names": ["CloneableStorage"]
|
|
6
6
|
}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { CloneableStorage,
|
|
6
|
+
import { CloneableStorage, Storage } from "./Storage.js";
|
|
7
7
|
import { SupportedStorageTypes } from "./StringifyTools.js";
|
|
8
|
-
export declare class StorageBackendMemory extends
|
|
8
|
+
export declare class StorageBackendMemory extends Storage implements CloneableStorage {
|
|
9
9
|
#private;
|
|
10
10
|
protected store: any;
|
|
11
11
|
protected isInitialized: boolean;
|
|
@@ -18,7 +18,9 @@ export declare class StorageBackendMemory extends SyncStorage implements Cloneab
|
|
|
18
18
|
close(): Promise<void>;
|
|
19
19
|
clear(): void;
|
|
20
20
|
get data(): any;
|
|
21
|
-
get
|
|
21
|
+
get(contexts: string[], key: string): SupportedStorageTypes | undefined;
|
|
22
|
+
openBlob(contexts: string[], key: string): Blob;
|
|
23
|
+
writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Uint8Array>): Promise<void>;
|
|
22
24
|
set(contexts: string[], keyOrValues: string | Record<string, SupportedStorageTypes>, value?: SupportedStorageTypes): void;
|
|
23
25
|
delete(contexts: string[], key: string): void;
|
|
24
26
|
keys(contexts: string[]): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageBackendMemory.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageBackendMemory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"StorageBackendMemory.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageBackendMemory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,oBAAqB,SAAQ,OAAQ,YAAW,gBAAgB;;IAG7D,SAAS,CAAC,KAAK,EAAE,GAAG;IAFhC,SAAS,CAAC,aAAa,UAAS;gBAEV,KAAK,GAAE,GAAQ;IAIrC,IAAI,WAAW,YAEd;WAEY,MAAM,CAAC,KAAK,GAAE,GAAQ;IAMnC,OAAO,CAAC,gBAAgB;IAOxB,UAAU;IAMV,KAAK;IAMC,KAAK;IAKX,KAAK;IAIL,IAAI,IAAI,QAEP;IAED,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAMvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7G,GAAG,CACC,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC3D,KAAK,CAAC,EAAE,qBAAqB;IAYjC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;IAMtC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;IAMvB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;IASzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IAkB3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;CAqB9B"}
|
|
@@ -28,7 +28,7 @@ var import_Storage = require("./Storage.js");
|
|
|
28
28
|
* Copyright 2022-2025 Matter.js Authors
|
|
29
29
|
* SPDX-License-Identifier: Apache-2.0
|
|
30
30
|
*/
|
|
31
|
-
class StorageBackendMemory extends import_Storage.
|
|
31
|
+
class StorageBackendMemory extends import_Storage.Storage {
|
|
32
32
|
constructor(store = {}) {
|
|
33
33
|
super();
|
|
34
34
|
this.store = store;
|
|
@@ -71,6 +71,39 @@ class StorageBackendMemory extends import_Storage.SyncStorage {
|
|
|
71
71
|
if (!contexts.length || !key.length) throw new import_Storage.StorageError("Context and key must not be empty.");
|
|
72
72
|
return this.store[this.createContextKey(contexts)]?.[key];
|
|
73
73
|
}
|
|
74
|
+
openBlob(contexts, key) {
|
|
75
|
+
const value = this.get(contexts, key);
|
|
76
|
+
if (value === void 0) {
|
|
77
|
+
return new Blob([]);
|
|
78
|
+
}
|
|
79
|
+
if (!(value instanceof Uint8Array)) {
|
|
80
|
+
throw new import_Storage.StorageError("Value must be an Uint8Array to read as blob stream.");
|
|
81
|
+
}
|
|
82
|
+
return new Blob([value]);
|
|
83
|
+
}
|
|
84
|
+
async writeBlobFromStream(contexts, key, stream) {
|
|
85
|
+
this.#assertInitialized();
|
|
86
|
+
const reader = stream.getReader();
|
|
87
|
+
const chunks = [];
|
|
88
|
+
try {
|
|
89
|
+
let length = 0;
|
|
90
|
+
while (true) {
|
|
91
|
+
const { done, value } = await reader.read();
|
|
92
|
+
if (done) break;
|
|
93
|
+
chunks.push(value);
|
|
94
|
+
length += value.length;
|
|
95
|
+
}
|
|
96
|
+
const combined = new Uint8Array(length);
|
|
97
|
+
let offset = 0;
|
|
98
|
+
for (const chunk of chunks) {
|
|
99
|
+
combined.set(chunk, offset);
|
|
100
|
+
offset += chunk.length;
|
|
101
|
+
}
|
|
102
|
+
this.#setKey(contexts, key, combined);
|
|
103
|
+
} catch (error) {
|
|
104
|
+
throw new import_Storage.StorageError(`Error reading stream: ${error.message}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
74
107
|
#setKey(contexts, key, value) {
|
|
75
108
|
if (!contexts.length || !key.length) throw new import_Storage.StorageError("Context and key must not be empty.");
|
|
76
109
|
const contextKey = this.createContextKey(contexts);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/StorageBackendMemory.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAAyB;AACzB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["value"]
|
|
6
6
|
}
|
|
@@ -3,27 +3,30 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { MaybePromise } from "../util/Promises.js";
|
|
7
|
+
import { Storage } from "./Storage.js";
|
|
7
8
|
import { SupportedStorageTypes } from "./StringifyTools.js";
|
|
8
|
-
export interface StorageContextFactory
|
|
9
|
-
createContext(context: string): StorageContext
|
|
9
|
+
export interface StorageContextFactory {
|
|
10
|
+
createContext(context: string): StorageContext;
|
|
10
11
|
}
|
|
11
|
-
export declare class StorageContext
|
|
12
|
-
|
|
12
|
+
export declare class StorageContext implements StorageContextFactory {
|
|
13
|
+
protected readonly storage: Storage;
|
|
13
14
|
readonly thisContexts: string[];
|
|
14
|
-
constructor(storage:
|
|
15
|
-
get<T extends SupportedStorageTypes>(key: string, defaultValue?: T):
|
|
16
|
-
has(key: string):
|
|
17
|
-
set(key: string, value: SupportedStorageTypes):
|
|
18
|
-
set(values: Record<string, SupportedStorageTypes>):
|
|
19
|
-
delete(key: string):
|
|
20
|
-
createContext(context: string): StorageContext
|
|
21
|
-
keys():
|
|
22
|
-
values():
|
|
23
|
-
contexts():
|
|
15
|
+
constructor(storage: Storage, thisContexts: string[]);
|
|
16
|
+
get<T extends SupportedStorageTypes>(key: string, defaultValue?: T): MaybePromise<T>;
|
|
17
|
+
has(key: string): MaybePromise<boolean>;
|
|
18
|
+
set(key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
19
|
+
set(values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
20
|
+
delete(key: string): MaybePromise<void>;
|
|
21
|
+
createContext(context: string): StorageContext;
|
|
22
|
+
keys(): MaybePromise<string[]>;
|
|
23
|
+
values(): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
24
|
+
contexts(): MaybePromise<string[]>;
|
|
24
25
|
/** Clears all keys in this context */
|
|
25
|
-
clear():
|
|
26
|
+
clear(): PromiseLike<void> | undefined;
|
|
26
27
|
/** Clears all keys in this context and all created sub-contexts. */
|
|
27
|
-
clearAll():
|
|
28
|
+
clearAll(): MaybePromise<void>;
|
|
29
|
+
openBlob(key: string): MaybePromise<Blob>;
|
|
30
|
+
writeBlobFromStream(key: string, stream: ReadableStream<Uint8Array>): MaybePromise<void>;
|
|
28
31
|
}
|
|
29
32
|
//# sourceMappingURL=StorageContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageContext.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"StorageContext.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IAClC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;CAClD;AAED,qBAAa,cAAe,YAAW,qBAAqB;IAEpD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;gBADZ,OAAO,EAAE,OAAO,EAC1B,YAAY,EAAE,MAAM,EAAE;IAGnC,GAAG,CAAC,CAAC,SAAS,qBAAqB,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAwBpF,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC;IAClE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;IAQtE,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAM9C,IAAI;IAIJ,MAAM;IAIN,QAAQ;IAIR,sCAAsC;IACtC,KAAK;IAuBL,oEAAoE;IACpE,QAAQ;IAIR,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;CAGtE"}
|
|
@@ -58,14 +58,7 @@ class StorageContext {
|
|
|
58
58
|
return defaultValue;
|
|
59
59
|
}
|
|
60
60
|
has(key) {
|
|
61
|
-
|
|
62
|
-
if (value !== void 0) {
|
|
63
|
-
if (import_Promises.MaybePromise.is(value)) {
|
|
64
|
-
return value.then((v) => v !== void 0);
|
|
65
|
-
}
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
return false;
|
|
61
|
+
return this.storage.has(this.thisContexts, key);
|
|
69
62
|
}
|
|
70
63
|
set(keyOrValues, value) {
|
|
71
64
|
if (typeof keyOrValues === "string") {
|
|
@@ -110,10 +103,8 @@ class StorageContext {
|
|
|
110
103
|
}
|
|
111
104
|
});
|
|
112
105
|
if (promises.length > 0) {
|
|
113
|
-
return import_MatterError.MatterAggregateError.allSettled(promises, "Error while clearing storage").then(
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
);
|
|
106
|
+
return import_MatterError.MatterAggregateError.allSettled(promises, "Error while clearing storage").then(() => {
|
|
107
|
+
});
|
|
117
108
|
}
|
|
118
109
|
return void 0;
|
|
119
110
|
}
|
|
@@ -121,5 +112,11 @@ class StorageContext {
|
|
|
121
112
|
clearAll() {
|
|
122
113
|
return this.storage.clearAll(this.thisContexts);
|
|
123
114
|
}
|
|
115
|
+
openBlob(key) {
|
|
116
|
+
return this.storage.openBlob(this.thisContexts, key);
|
|
117
|
+
}
|
|
118
|
+
writeBlobFromStream(key, stream) {
|
|
119
|
+
return this.storage.writeBlobFromStream(this.thisContexts, key, stream);
|
|
120
|
+
}
|
|
124
121
|
}
|
|
125
122
|
//# sourceMappingURL=StorageContext.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/StorageContext.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,yBAAqC;AACrC,sBAA6B;AAC7B,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["keys"]
|
|
6
6
|
}
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
import { MaybePromise } from "../util/Promises.js";
|
|
7
7
|
import { Storage } from "./Storage.js";
|
|
8
8
|
import { StorageContext, StorageContextFactory } from "./StorageContext.js";
|
|
9
|
-
export declare class StorageManager
|
|
9
|
+
export declare class StorageManager implements StorageContextFactory {
|
|
10
10
|
private storage;
|
|
11
11
|
private initialized;
|
|
12
|
-
constructor(storage:
|
|
12
|
+
constructor(storage: Storage);
|
|
13
13
|
initialize(): MaybePromise<void>;
|
|
14
14
|
close(): MaybePromise<void>;
|
|
15
|
-
createContext(context: string): StorageContext
|
|
15
|
+
createContext(context: string): StorageContext;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=StorageManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,qBAAa,
|
|
1
|
+
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,qBAAa,cAAe,YAAW,qBAAqB;IAG5C,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,WAAW,CAAS;gBAER,OAAO,EAAE,OAAO;IAEpC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;IAYhC,KAAK;IAKL,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAMjD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/StorageManager.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAA6B;AAC7B,qBAAsC;AACtC,4BAAsD;AARtD;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,sBAA6B;AAC7B,qBAAsC;AACtC,4BAAsD;AARtD;AAAA;AAAA;AAAA;AAAA;AAUO,MAAM,eAAgD;AAAA,EAGzD,YAAoB,SAAkB;AAAlB;AAAA,EAAmB;AAAA,EAF/B,cAAc;AAAA,EAItB,aAAiC;AAC7B,QAAI,CAAC,KAAK,QAAQ,aAAa;AAC3B,YAAM,OAAO,KAAK,QAAQ,WAAW;AACrC,UAAI,6BAAa,GAAG,IAAI,GAAG;AACvB,eAAO,KAAK,KAAK,MAAM;AACnB,eAAK,cAAc;AAAA,QACvB,CAAC;AAAA,MACL;AAAA,IACJ;AACA,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,QAAQ;AACJ,SAAK,cAAc;AACnB,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC9B;AAAA,EAEA,cAAc,SAAiC;AAC3C,QAAI,CAAC,KAAK,YAAa,OAAM,IAAI,4BAAa,4CAA4C;AAC1F,QAAI,CAAC,QAAQ,OAAQ,OAAM,IAAI,4BAAa,sCAAsC;AAClF,QAAI,QAAQ,SAAS,GAAG,EAAG,OAAM,IAAI,4BAAa,gCAAgC;AAClF,WAAO,IAAI,qCAAe,KAAK,SAAS,CAAC,OAAO,CAAC;AAAA,EACrD;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -20,7 +20,7 @@ export declare class StorageService {
|
|
|
20
20
|
*
|
|
21
21
|
* @param namespace a unique namespace identifier such as a root node ID
|
|
22
22
|
*/
|
|
23
|
-
open(namespace: string): Promise<StorageManager
|
|
23
|
+
open(namespace: string): Promise<StorageManager>;
|
|
24
24
|
/**
|
|
25
25
|
* Install a factory for opening storage. Without such a factory storage is unavailable.
|
|
26
26
|
*/
|
|
@@ -11,34 +11,11 @@ export declare class StorageError extends MatterError {
|
|
|
11
11
|
/**
|
|
12
12
|
* Matter.js uses this key/value API to manage persistent state.
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
15
|
-
readonly initialized: boolean;
|
|
16
|
-
initialize(): MaybePromise<void>;
|
|
17
|
-
close(): MaybePromise<void>;
|
|
18
|
-
get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
|
|
19
|
-
set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
20
|
-
set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
21
|
-
delete(contexts: string[], key: string): MaybePromise<void>;
|
|
22
|
-
keys(contexts: string[]): MaybePromise<string[]>;
|
|
23
|
-
values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
24
|
-
contexts(contexts: string[]): MaybePromise<string[]>;
|
|
25
|
-
clearAll(contexts: string[]): MaybePromise<void>;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Extended interface for storage that supports snapshotting.
|
|
29
|
-
*/
|
|
30
|
-
export interface CloneableStorage {
|
|
31
|
-
clone(): MaybePromise<Storage>;
|
|
32
|
-
}
|
|
33
|
-
export declare namespace CloneableStorage {
|
|
34
|
-
function is<T extends {}>(storage: T): storage is T & CloneableStorage;
|
|
35
|
-
function assert<T extends {}>(storage: T): asserts storage is T & CloneableStorage;
|
|
36
|
-
}
|
|
37
|
-
export declare abstract class MaybeAsyncStorage implements Storage {
|
|
38
|
-
abstract initialized: boolean;
|
|
14
|
+
export declare abstract class Storage {
|
|
15
|
+
abstract readonly initialized: boolean;
|
|
39
16
|
abstract initialize(): MaybePromise<void>;
|
|
40
17
|
abstract close(): MaybePromise<void>;
|
|
41
|
-
abstract get
|
|
18
|
+
abstract get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
|
|
42
19
|
abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
43
20
|
abstract set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
44
21
|
abstract delete(contexts: string[], key: string): MaybePromise<void>;
|
|
@@ -46,19 +23,23 @@ export declare abstract class MaybeAsyncStorage implements Storage {
|
|
|
46
23
|
abstract values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
47
24
|
abstract contexts(contexts: string[]): MaybePromise<string[]>;
|
|
48
25
|
abstract clearAll(contexts: string[]): MaybePromise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if a key exists in the storage for the given contexts.
|
|
28
|
+
* Important Note: This default implementation just reads the value for the key and checks if it is undefined.
|
|
29
|
+
* Please implement this method in your storage implementation if you want to optimize it.
|
|
30
|
+
*/
|
|
31
|
+
has(contexts: string[], key: string): MaybePromise<boolean>;
|
|
32
|
+
abstract openBlob(contexts: string[], key: string): MaybePromise<Blob>;
|
|
33
|
+
abstract writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Uint8Array>): MaybePromise<void>;
|
|
49
34
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
abstract values(contexts: string[]): Record<string, SupportedStorageTypes>;
|
|
60
|
-
abstract contexts(contexts: string[]): string[];
|
|
61
|
-
abstract clearAll(contexts: string[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Extended interface for storage that supports snapshotting.
|
|
37
|
+
*/
|
|
38
|
+
export interface CloneableStorage {
|
|
39
|
+
clone(): MaybePromise<Storage>;
|
|
40
|
+
}
|
|
41
|
+
export declare namespace CloneableStorage {
|
|
42
|
+
function is<T extends {}>(storage: T): storage is T & CloneableStorage;
|
|
43
|
+
function assert<T extends {}>(storage: T): asserts storage is T & CloneableStorage;
|
|
62
44
|
}
|
|
63
|
-
export type StorageOperationResult<S extends Storage, T = void> = S extends SyncStorage ? T : Promise<T>;
|
|
64
45
|
//# sourceMappingURL=Storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../src/storage/Storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../src/storage/Storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,YAAa,SAAQ,WAAW;CAAG;AAEhD;;GAEG;AACH,8BAAsB,OAAO;IACzB,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAC9F,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;IACnG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC;IAC/F,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACxF,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC;IAEzD;;;;OAIG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;IAQ3D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC;IACtE,QAAQ,CAAC,mBAAmB,CACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,YAAY,CAAC,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;CAClC;AAED,yBAAiB,gBAAgB,CAAC;IAC9B,SAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,gBAAgB,CAE5E;IAED,SAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,GAAG,gBAAgB,CAIxF;CACJ"}
|
|
@@ -4,8 +4,23 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { ImplementationError, MatterError } from "../MatterError.js";
|
|
7
|
+
import { MaybePromise } from "../util/Promises.js";
|
|
7
8
|
class StorageError extends MatterError {
|
|
8
9
|
}
|
|
10
|
+
class Storage {
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a key exists in the storage for the given contexts.
|
|
13
|
+
* Important Note: This default implementation just reads the value for the key and checks if it is undefined.
|
|
14
|
+
* Please implement this method in your storage implementation if you want to optimize it.
|
|
15
|
+
*/
|
|
16
|
+
has(contexts, key) {
|
|
17
|
+
const value = this.get(contexts, key);
|
|
18
|
+
if (MaybePromise.is(value)) {
|
|
19
|
+
return MaybePromise.then(value, (v) => v !== void 0);
|
|
20
|
+
}
|
|
21
|
+
return value !== void 0;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
9
24
|
var CloneableStorage;
|
|
10
25
|
((CloneableStorage2) => {
|
|
11
26
|
function is(storage) {
|
|
@@ -19,14 +34,9 @@ var CloneableStorage;
|
|
|
19
34
|
}
|
|
20
35
|
CloneableStorage2.assert = assert;
|
|
21
36
|
})(CloneableStorage || (CloneableStorage = {}));
|
|
22
|
-
class MaybeAsyncStorage {
|
|
23
|
-
}
|
|
24
|
-
class SyncStorage {
|
|
25
|
-
}
|
|
26
37
|
export {
|
|
27
38
|
CloneableStorage,
|
|
28
|
-
|
|
29
|
-
StorageError
|
|
30
|
-
SyncStorage
|
|
39
|
+
Storage,
|
|
40
|
+
StorageError
|
|
31
41
|
};
|
|
32
42
|
//# sourceMappingURL=Storage.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/Storage.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,qBAAqB,mBAAmB;
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,SAAS,qBAAqB,mBAAmB;AACjD,SAAS,oBAAoB;AAGtB,MAAM,qBAAqB,YAAY;AAAC;AAKxC,MAAe,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkB1B,IAAI,UAAoB,KAAoC;AACxD,UAAM,QAAQ,KAAK,IAAI,UAAU,GAAG;AACpC,QAAI,aAAa,GAAG,KAAK,GAAG;AACxB,aAAO,aAAa,KAAK,OAAO,OAAK,MAAM,MAAS;AAAA,IACxD;AACA,WAAO,UAAU;AAAA,EACrB;AAQJ;AASO,IAAU;AAAA,CAAV,CAAUA,sBAAV;AACI,WAAS,GAAiB,SAA6C;AAC1E,WAAO,WAAW,WAAW,OAAO,QAAQ,UAAU;AAAA,EAC1D;AAFO,EAAAA,kBAAS;AAIT,WAAS,OAAqB,SAAqD;AACtF,QAAI,CAAC,GAAG,OAAO,GAAG;AACd,YAAM,IAAI,oBAAoB,yDAAyD;AAAA,IAC3F;AAAA,EACJ;AAJO,EAAAA,kBAAS;AAAA,GALH;",
|
|
5
5
|
"names": ["CloneableStorage"]
|
|
6
6
|
}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { CloneableStorage,
|
|
6
|
+
import { CloneableStorage, Storage } from "./Storage.js";
|
|
7
7
|
import { SupportedStorageTypes } from "./StringifyTools.js";
|
|
8
|
-
export declare class StorageBackendMemory extends
|
|
8
|
+
export declare class StorageBackendMemory extends Storage implements CloneableStorage {
|
|
9
9
|
#private;
|
|
10
10
|
protected store: any;
|
|
11
11
|
protected isInitialized: boolean;
|
|
@@ -18,7 +18,9 @@ export declare class StorageBackendMemory extends SyncStorage implements Cloneab
|
|
|
18
18
|
close(): Promise<void>;
|
|
19
19
|
clear(): void;
|
|
20
20
|
get data(): any;
|
|
21
|
-
get
|
|
21
|
+
get(contexts: string[], key: string): SupportedStorageTypes | undefined;
|
|
22
|
+
openBlob(contexts: string[], key: string): Blob;
|
|
23
|
+
writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Uint8Array>): Promise<void>;
|
|
22
24
|
set(contexts: string[], keyOrValues: string | Record<string, SupportedStorageTypes>, value?: SupportedStorageTypes): void;
|
|
23
25
|
delete(contexts: string[], key: string): void;
|
|
24
26
|
keys(contexts: string[]): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageBackendMemory.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageBackendMemory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"StorageBackendMemory.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageBackendMemory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,oBAAqB,SAAQ,OAAQ,YAAW,gBAAgB;;IAG7D,SAAS,CAAC,KAAK,EAAE,GAAG;IAFhC,SAAS,CAAC,aAAa,UAAS;gBAEV,KAAK,GAAE,GAAQ;IAIrC,IAAI,WAAW,YAEd;WAEY,MAAM,CAAC,KAAK,GAAE,GAAQ;IAMnC,OAAO,CAAC,gBAAgB;IAOxB,UAAU;IAMV,KAAK;IAMC,KAAK;IAKX,KAAK;IAIL,IAAI,IAAI,QAEP;IAED,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAMvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWzC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7G,GAAG,CACC,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC3D,KAAK,CAAC,EAAE,qBAAqB;IAYjC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM;IAMtC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;IAMvB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;IASzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IAkB3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;CAqB9B"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { deepCopy } from "#util/DeepCopy.js";
|
|
7
|
-
import {
|
|
8
|
-
class StorageBackendMemory extends
|
|
7
|
+
import { Storage, StorageError } from "./Storage.js";
|
|
8
|
+
class StorageBackendMemory extends Storage {
|
|
9
9
|
constructor(store = {}) {
|
|
10
10
|
super();
|
|
11
11
|
this.store = store;
|
|
@@ -48,6 +48,39 @@ class StorageBackendMemory extends SyncStorage {
|
|
|
48
48
|
if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
|
|
49
49
|
return this.store[this.createContextKey(contexts)]?.[key];
|
|
50
50
|
}
|
|
51
|
+
openBlob(contexts, key) {
|
|
52
|
+
const value = this.get(contexts, key);
|
|
53
|
+
if (value === void 0) {
|
|
54
|
+
return new Blob([]);
|
|
55
|
+
}
|
|
56
|
+
if (!(value instanceof Uint8Array)) {
|
|
57
|
+
throw new StorageError("Value must be an Uint8Array to read as blob stream.");
|
|
58
|
+
}
|
|
59
|
+
return new Blob([value]);
|
|
60
|
+
}
|
|
61
|
+
async writeBlobFromStream(contexts, key, stream) {
|
|
62
|
+
this.#assertInitialized();
|
|
63
|
+
const reader = stream.getReader();
|
|
64
|
+
const chunks = [];
|
|
65
|
+
try {
|
|
66
|
+
let length = 0;
|
|
67
|
+
while (true) {
|
|
68
|
+
const { done, value } = await reader.read();
|
|
69
|
+
if (done) break;
|
|
70
|
+
chunks.push(value);
|
|
71
|
+
length += value.length;
|
|
72
|
+
}
|
|
73
|
+
const combined = new Uint8Array(length);
|
|
74
|
+
let offset = 0;
|
|
75
|
+
for (const chunk of chunks) {
|
|
76
|
+
combined.set(chunk, offset);
|
|
77
|
+
offset += chunk.length;
|
|
78
|
+
}
|
|
79
|
+
this.#setKey(contexts, key, combined);
|
|
80
|
+
} catch (error) {
|
|
81
|
+
throw new StorageError(`Error reading stream: ${error.message}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
51
84
|
#setKey(contexts, key, value) {
|
|
52
85
|
if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
|
|
53
86
|
const contextKey = this.createContextKey(contexts);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/StorageBackendMemory.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,gBAAgB;AACzB,SAA2B,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["value"]
|
|
6
6
|
}
|
|
@@ -3,27 +3,30 @@
|
|
|
3
3
|
* Copyright 2022-2025 Matter.js Authors
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { MaybePromise } from "../util/Promises.js";
|
|
7
|
+
import { Storage } from "./Storage.js";
|
|
7
8
|
import { SupportedStorageTypes } from "./StringifyTools.js";
|
|
8
|
-
export interface StorageContextFactory
|
|
9
|
-
createContext(context: string): StorageContext
|
|
9
|
+
export interface StorageContextFactory {
|
|
10
|
+
createContext(context: string): StorageContext;
|
|
10
11
|
}
|
|
11
|
-
export declare class StorageContext
|
|
12
|
-
|
|
12
|
+
export declare class StorageContext implements StorageContextFactory {
|
|
13
|
+
protected readonly storage: Storage;
|
|
13
14
|
readonly thisContexts: string[];
|
|
14
|
-
constructor(storage:
|
|
15
|
-
get<T extends SupportedStorageTypes>(key: string, defaultValue?: T):
|
|
16
|
-
has(key: string):
|
|
17
|
-
set(key: string, value: SupportedStorageTypes):
|
|
18
|
-
set(values: Record<string, SupportedStorageTypes>):
|
|
19
|
-
delete(key: string):
|
|
20
|
-
createContext(context: string): StorageContext
|
|
21
|
-
keys():
|
|
22
|
-
values():
|
|
23
|
-
contexts():
|
|
15
|
+
constructor(storage: Storage, thisContexts: string[]);
|
|
16
|
+
get<T extends SupportedStorageTypes>(key: string, defaultValue?: T): MaybePromise<T>;
|
|
17
|
+
has(key: string): MaybePromise<boolean>;
|
|
18
|
+
set(key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
19
|
+
set(values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
20
|
+
delete(key: string): MaybePromise<void>;
|
|
21
|
+
createContext(context: string): StorageContext;
|
|
22
|
+
keys(): MaybePromise<string[]>;
|
|
23
|
+
values(): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
24
|
+
contexts(): MaybePromise<string[]>;
|
|
24
25
|
/** Clears all keys in this context */
|
|
25
|
-
clear():
|
|
26
|
+
clear(): PromiseLike<void> | undefined;
|
|
26
27
|
/** Clears all keys in this context and all created sub-contexts. */
|
|
27
|
-
clearAll():
|
|
28
|
+
clearAll(): MaybePromise<void>;
|
|
29
|
+
openBlob(key: string): MaybePromise<Blob>;
|
|
30
|
+
writeBlobFromStream(key: string, stream: ReadableStream<Uint8Array>): MaybePromise<void>;
|
|
28
31
|
}
|
|
29
32
|
//# sourceMappingURL=StorageContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageContext.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"StorageContext.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IAClC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAAC;CAClD;AAED,qBAAa,cAAe,YAAW,qBAAqB;IAEpD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE;gBADZ,OAAO,EAAE,OAAO,EAC1B,YAAY,EAAE,MAAM,EAAE;IAGnC,GAAG,CAAC,CAAC,SAAS,qBAAqB,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAwBpF,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC;IAClE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;IAQtE,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAM9C,IAAI;IAIJ,MAAM;IAIN,QAAQ;IAIR,sCAAsC;IACtC,KAAK;IAuBL,oEAAoE;IACpE,QAAQ;IAIR,QAAQ,CAAC,GAAG,EAAE,MAAM;IAIpB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC;CAGtE"}
|
|
@@ -35,14 +35,7 @@ class StorageContext {
|
|
|
35
35
|
return defaultValue;
|
|
36
36
|
}
|
|
37
37
|
has(key) {
|
|
38
|
-
|
|
39
|
-
if (value !== void 0) {
|
|
40
|
-
if (MaybePromise.is(value)) {
|
|
41
|
-
return value.then((v) => v !== void 0);
|
|
42
|
-
}
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
return false;
|
|
38
|
+
return this.storage.has(this.thisContexts, key);
|
|
46
39
|
}
|
|
47
40
|
set(keyOrValues, value) {
|
|
48
41
|
if (typeof keyOrValues === "string") {
|
|
@@ -87,10 +80,8 @@ class StorageContext {
|
|
|
87
80
|
}
|
|
88
81
|
});
|
|
89
82
|
if (promises.length > 0) {
|
|
90
|
-
return MatterAggregateError.allSettled(promises, "Error while clearing storage").then(
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
);
|
|
83
|
+
return MatterAggregateError.allSettled(promises, "Error while clearing storage").then(() => {
|
|
84
|
+
});
|
|
94
85
|
}
|
|
95
86
|
return void 0;
|
|
96
87
|
}
|
|
@@ -98,6 +89,12 @@ class StorageContext {
|
|
|
98
89
|
clearAll() {
|
|
99
90
|
return this.storage.clearAll(this.thisContexts);
|
|
100
91
|
}
|
|
92
|
+
openBlob(key) {
|
|
93
|
+
return this.storage.openBlob(this.thisContexts, key);
|
|
94
|
+
}
|
|
95
|
+
writeBlobFromStream(key, stream) {
|
|
96
|
+
return this.storage.writeBlobFromStream(this.thisContexts, key, stream);
|
|
97
|
+
}
|
|
101
98
|
}
|
|
102
99
|
export {
|
|
103
100
|
StorageContext
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/StorageContext.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B,SAAkB,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["keys"]
|
|
6
6
|
}
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
import { MaybePromise } from "../util/Promises.js";
|
|
7
7
|
import { Storage } from "./Storage.js";
|
|
8
8
|
import { StorageContext, StorageContextFactory } from "./StorageContext.js";
|
|
9
|
-
export declare class StorageManager
|
|
9
|
+
export declare class StorageManager implements StorageContextFactory {
|
|
10
10
|
private storage;
|
|
11
11
|
private initialized;
|
|
12
|
-
constructor(storage:
|
|
12
|
+
constructor(storage: Storage);
|
|
13
13
|
initialize(): MaybePromise<void>;
|
|
14
14
|
close(): MaybePromise<void>;
|
|
15
|
-
createContext(context: string): StorageContext
|
|
15
|
+
createContext(context: string): StorageContext;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=StorageManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,qBAAa,
|
|
1
|
+
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../../src/storage/StorageManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,qBAAa,cAAe,YAAW,qBAAqB;IAG5C,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,WAAW,CAAS;gBAER,OAAO,EAAE,OAAO;IAEpC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC;IAYhC,KAAK;IAKL,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;CAMjD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/storage/StorageManager.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,oBAAoB;AAC7B,SAAkB,oBAAoB;AACtC,SAAS,sBAA6C;AAE/C,MAAM,
|
|
4
|
+
"mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,SAAS,oBAAoB;AAC7B,SAAkB,oBAAoB;AACtC,SAAS,sBAA6C;AAE/C,MAAM,eAAgD;AAAA,EAGzD,YAAoB,SAAkB;AAAlB;AAAA,EAAmB;AAAA,EAF/B,cAAc;AAAA,EAItB,aAAiC;AAC7B,QAAI,CAAC,KAAK,QAAQ,aAAa;AAC3B,YAAM,OAAO,KAAK,QAAQ,WAAW;AACrC,UAAI,aAAa,GAAG,IAAI,GAAG;AACvB,eAAO,KAAK,KAAK,MAAM;AACnB,eAAK,cAAc;AAAA,QACvB,CAAC;AAAA,MACL;AAAA,IACJ;AACA,SAAK,cAAc;AAAA,EACvB;AAAA,EAEA,QAAQ;AACJ,SAAK,cAAc;AACnB,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC9B;AAAA,EAEA,cAAc,SAAiC;AAC3C,QAAI,CAAC,KAAK,YAAa,OAAM,IAAI,aAAa,4CAA4C;AAC1F,QAAI,CAAC,QAAQ,OAAQ,OAAM,IAAI,aAAa,sCAAsC;AAClF,QAAI,QAAQ,SAAS,GAAG,EAAG,OAAM,IAAI,aAAa,gCAAgC;AAClF,WAAO,IAAI,eAAe,KAAK,SAAS,CAAC,OAAO,CAAC;AAAA,EACrD;AACJ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -20,7 +20,7 @@ export declare class StorageService {
|
|
|
20
20
|
*
|
|
21
21
|
* @param namespace a unique namespace identifier such as a root node ID
|
|
22
22
|
*/
|
|
23
|
-
open(namespace: string): Promise<StorageManager
|
|
23
|
+
open(namespace: string): Promise<StorageManager>;
|
|
24
24
|
/**
|
|
25
25
|
* Install a factory for opening storage. Without such a factory storage is unavailable.
|
|
26
26
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/general",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0-alpha.0-20250802-1af103e3d",
|
|
4
4
|
"description": "Non-Matter support for Matter.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@noble/curves": "^1.9.5"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@matter/testing": "0.
|
|
39
|
+
"@matter/testing": "0.16.0-alpha.0-20250802-1af103e3d"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"dist/**/*",
|
package/src/storage/Storage.ts
CHANGED
|
@@ -12,18 +12,38 @@ export class StorageError extends MatterError {}
|
|
|
12
12
|
/**
|
|
13
13
|
* Matter.js uses this key/value API to manage persistent state.
|
|
14
14
|
*/
|
|
15
|
-
export
|
|
16
|
-
readonly initialized: boolean;
|
|
17
|
-
initialize(): MaybePromise<void>;
|
|
18
|
-
close(): MaybePromise<void>;
|
|
19
|
-
get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
|
|
20
|
-
set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
21
|
-
set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
22
|
-
delete(contexts: string[], key: string): MaybePromise<void>;
|
|
23
|
-
keys(contexts: string[]): MaybePromise<string[]>;
|
|
24
|
-
values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
25
|
-
contexts(contexts: string[]): MaybePromise<string[]>;
|
|
26
|
-
clearAll(contexts: string[]): MaybePromise<void>;
|
|
15
|
+
export abstract class Storage {
|
|
16
|
+
abstract readonly initialized: boolean;
|
|
17
|
+
abstract initialize(): MaybePromise<void>;
|
|
18
|
+
abstract close(): MaybePromise<void>;
|
|
19
|
+
abstract get(contexts: string[], key: string): MaybePromise<SupportedStorageTypes | undefined>;
|
|
20
|
+
abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
21
|
+
abstract set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
22
|
+
abstract delete(contexts: string[], key: string): MaybePromise<void>;
|
|
23
|
+
abstract keys(contexts: string[]): MaybePromise<string[]>;
|
|
24
|
+
abstract values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
25
|
+
abstract contexts(contexts: string[]): MaybePromise<string[]>;
|
|
26
|
+
abstract clearAll(contexts: string[]): MaybePromise<void>;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Checks if a key exists in the storage for the given contexts.
|
|
30
|
+
* Important Note: This default implementation just reads the value for the key and checks if it is undefined.
|
|
31
|
+
* Please implement this method in your storage implementation if you want to optimize it.
|
|
32
|
+
*/
|
|
33
|
+
has(contexts: string[], key: string): MaybePromise<boolean> {
|
|
34
|
+
const value = this.get(contexts, key);
|
|
35
|
+
if (MaybePromise.is(value)) {
|
|
36
|
+
return MaybePromise.then(value, v => v !== undefined);
|
|
37
|
+
}
|
|
38
|
+
return value !== undefined;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
abstract openBlob(contexts: string[], key: string): MaybePromise<Blob>;
|
|
42
|
+
abstract writeBlobFromStream(
|
|
43
|
+
contexts: string[],
|
|
44
|
+
key: string,
|
|
45
|
+
stream: ReadableStream<Uint8Array>,
|
|
46
|
+
): MaybePromise<void>;
|
|
27
47
|
}
|
|
28
48
|
|
|
29
49
|
/**
|
|
@@ -44,37 +64,3 @@ export namespace CloneableStorage {
|
|
|
44
64
|
}
|
|
45
65
|
}
|
|
46
66
|
}
|
|
47
|
-
|
|
48
|
-
// This extra class is needed because of https://github.com/microsoft/TypeScript/issues/57905 in order
|
|
49
|
-
// to have the generics typing support on the "get" method and can be removed when the TS issue is fixed
|
|
50
|
-
// or we remove the legacy API.
|
|
51
|
-
export abstract class MaybeAsyncStorage implements Storage {
|
|
52
|
-
abstract initialized: boolean;
|
|
53
|
-
abstract initialize(): MaybePromise<void>;
|
|
54
|
-
abstract close(): MaybePromise<void>;
|
|
55
|
-
abstract get<T extends SupportedStorageTypes>(contexts: string[], key: string): MaybePromise<T | undefined>;
|
|
56
|
-
abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
57
|
-
abstract set(contexts: string[], key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
58
|
-
abstract delete(contexts: string[], key: string): MaybePromise<void>;
|
|
59
|
-
abstract keys(contexts: string[]): MaybePromise<string[]>;
|
|
60
|
-
abstract values(contexts: string[]): MaybePromise<Record<string, SupportedStorageTypes>>;
|
|
61
|
-
abstract contexts(contexts: string[]): MaybePromise<string[]>;
|
|
62
|
-
abstract clearAll(contexts: string[]): MaybePromise<void>;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// This can be removed once we remove the legacy API
|
|
66
|
-
export abstract class SyncStorage implements Storage {
|
|
67
|
-
abstract initialized: boolean;
|
|
68
|
-
abstract initialize(): MaybePromise<void>;
|
|
69
|
-
abstract close(): MaybePromise<void>;
|
|
70
|
-
abstract get<T extends SupportedStorageTypes>(contexts: string[], key: string): T | undefined;
|
|
71
|
-
abstract set(contexts: string[], values: Record<string, SupportedStorageTypes>): void;
|
|
72
|
-
abstract set(contexts: string[], key: string, value: SupportedStorageTypes): void;
|
|
73
|
-
abstract delete(contexts: string[], key: string): void;
|
|
74
|
-
abstract keys(contexts: string[]): string[];
|
|
75
|
-
abstract values(contexts: string[]): Record<string, SupportedStorageTypes>;
|
|
76
|
-
abstract contexts(contexts: string[]): string[];
|
|
77
|
-
abstract clearAll(contexts: string[]): void;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export type StorageOperationResult<S extends Storage, T = void> = S extends SyncStorage ? T : Promise<T>;
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { deepCopy } from "#util/DeepCopy.js";
|
|
8
|
-
import { CloneableStorage,
|
|
8
|
+
import { CloneableStorage, Storage, StorageError } from "./Storage.js";
|
|
9
9
|
import { SupportedStorageTypes } from "./StringifyTools.js";
|
|
10
10
|
|
|
11
|
-
export class StorageBackendMemory extends
|
|
11
|
+
export class StorageBackendMemory extends Storage implements CloneableStorage {
|
|
12
12
|
protected isInitialized = false;
|
|
13
13
|
|
|
14
14
|
constructor(protected store: any = {}) {
|
|
@@ -57,12 +57,48 @@ export class StorageBackendMemory extends SyncStorage implements CloneableStorag
|
|
|
57
57
|
return this.store;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
get
|
|
60
|
+
get(contexts: string[], key: string): SupportedStorageTypes | undefined {
|
|
61
61
|
this.#assertInitialized();
|
|
62
62
|
if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
|
|
63
63
|
return this.store[this.createContextKey(contexts)]?.[key];
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
+
openBlob(contexts: string[], key: string): Blob {
|
|
67
|
+
const value = this.get(contexts, key);
|
|
68
|
+
if (value === undefined) {
|
|
69
|
+
return new Blob([]);
|
|
70
|
+
}
|
|
71
|
+
if (!(value instanceof Uint8Array)) {
|
|
72
|
+
throw new StorageError("Value must be an Uint8Array to read as blob stream.");
|
|
73
|
+
}
|
|
74
|
+
return new Blob([value]);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Uint8Array>): Promise<void> {
|
|
78
|
+
this.#assertInitialized();
|
|
79
|
+
const reader = stream.getReader();
|
|
80
|
+
const chunks: Uint8Array[] = [];
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
let length = 0;
|
|
84
|
+
while (true) {
|
|
85
|
+
const { done, value } = await reader.read();
|
|
86
|
+
if (done) break;
|
|
87
|
+
chunks.push(value);
|
|
88
|
+
length += value.length;
|
|
89
|
+
}
|
|
90
|
+
const combined = new Uint8Array(length);
|
|
91
|
+
let offset = 0;
|
|
92
|
+
for (const chunk of chunks) {
|
|
93
|
+
combined.set(chunk, offset);
|
|
94
|
+
offset += chunk.length;
|
|
95
|
+
}
|
|
96
|
+
this.#setKey(contexts, key, combined);
|
|
97
|
+
} catch (error: any) {
|
|
98
|
+
throw new StorageError(`Error reading stream: ${error.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
66
102
|
#setKey(contexts: string[], key: string, value: SupportedStorageTypes) {
|
|
67
103
|
if (!contexts.length || !key.length) throw new StorageError("Context and key must not be empty.");
|
|
68
104
|
const contextKey = this.createContextKey(contexts);
|
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
|
|
7
7
|
import { MatterAggregateError } from "#MatterError.js";
|
|
8
8
|
import { MaybePromise } from "../util/Promises.js";
|
|
9
|
-
import { Storage, StorageError
|
|
9
|
+
import { Storage, StorageError } from "./Storage.js";
|
|
10
10
|
import { SupportedStorageTypes } from "./StringifyTools.js";
|
|
11
11
|
|
|
12
|
-
export interface StorageContextFactory
|
|
13
|
-
createContext(context: string): StorageContext
|
|
12
|
+
export interface StorageContextFactory {
|
|
13
|
+
createContext(context: string): StorageContext;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export class StorageContext
|
|
16
|
+
export class StorageContext implements StorageContextFactory {
|
|
17
17
|
constructor(
|
|
18
|
-
|
|
18
|
+
protected readonly storage: Storage,
|
|
19
19
|
readonly thisContexts: string[],
|
|
20
20
|
) {}
|
|
21
21
|
|
|
22
|
-
get<T extends SupportedStorageTypes>(key: string, defaultValue?: T):
|
|
22
|
+
get<T extends SupportedStorageTypes>(key: string, defaultValue?: T): MaybePromise<T> {
|
|
23
23
|
const value = this.storage.get(this.thisContexts, key);
|
|
24
24
|
if (value !== undefined) {
|
|
25
25
|
if (MaybePromise.is(value)) {
|
|
@@ -30,62 +30,52 @@ export class StorageContext<S extends Storage = any> implements StorageContextFa
|
|
|
30
30
|
`No value found for key ${key} in context ${this.thisContexts} and no default value specified!`,
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
|
-
return defaultValue;
|
|
34
|
-
}) as
|
|
33
|
+
return defaultValue as T;
|
|
34
|
+
}) as MaybePromise<T>;
|
|
35
35
|
}
|
|
36
|
-
return value as
|
|
36
|
+
return value as T;
|
|
37
37
|
}
|
|
38
38
|
if (defaultValue === undefined) {
|
|
39
39
|
throw new StorageError(
|
|
40
40
|
`No value found for key ${key} in context ${this.thisContexts} and no default value specified!`,
|
|
41
41
|
);
|
|
42
42
|
}
|
|
43
|
-
return defaultValue
|
|
43
|
+
return defaultValue;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
has(key: string) {
|
|
47
|
-
|
|
48
|
-
if (value !== undefined) {
|
|
49
|
-
if (MaybePromise.is(value)) {
|
|
50
|
-
return value.then(v => v !== undefined) as StorageOperationResult<S, boolean>;
|
|
51
|
-
}
|
|
52
|
-
return true as StorageOperationResult<S, boolean>;
|
|
53
|
-
}
|
|
54
|
-
return false as StorageOperationResult<S, boolean>;
|
|
47
|
+
return this.storage.has(this.thisContexts, key);
|
|
55
48
|
}
|
|
56
49
|
|
|
57
|
-
set(key: string, value: SupportedStorageTypes):
|
|
58
|
-
set(values: Record<string, SupportedStorageTypes>):
|
|
50
|
+
set(key: string, value: SupportedStorageTypes): MaybePromise<void>;
|
|
51
|
+
set(values: Record<string, SupportedStorageTypes>): MaybePromise<void>;
|
|
59
52
|
set(keyOrValues: string | Record<string, SupportedStorageTypes>, value?: SupportedStorageTypes) {
|
|
60
53
|
if (typeof keyOrValues === "string") {
|
|
61
|
-
return this.storage.set(this.thisContexts, keyOrValues, value)
|
|
54
|
+
return this.storage.set(this.thisContexts, keyOrValues, value);
|
|
62
55
|
}
|
|
63
|
-
return this.storage.set(this.thisContexts, keyOrValues)
|
|
56
|
+
return this.storage.set(this.thisContexts, keyOrValues);
|
|
64
57
|
}
|
|
65
58
|
|
|
66
59
|
delete(key: string) {
|
|
67
|
-
return this.storage.delete(this.thisContexts, key)
|
|
60
|
+
return this.storage.delete(this.thisContexts, key);
|
|
68
61
|
}
|
|
69
62
|
|
|
70
|
-
createContext(context: string): StorageContext
|
|
63
|
+
createContext(context: string): StorageContext {
|
|
71
64
|
if (context.length === 0) throw new StorageError("Context must not be an empty string");
|
|
72
65
|
if (context.includes(".")) throw new StorageError("Context must not contain dots!");
|
|
73
66
|
return new StorageContext(this.storage, [...this.thisContexts, context]);
|
|
74
67
|
}
|
|
75
68
|
|
|
76
69
|
keys() {
|
|
77
|
-
return this.storage.keys(this.thisContexts)
|
|
70
|
+
return this.storage.keys(this.thisContexts);
|
|
78
71
|
}
|
|
79
72
|
|
|
80
73
|
values() {
|
|
81
|
-
return this.storage.values(this.thisContexts)
|
|
82
|
-
S,
|
|
83
|
-
Record<string, SupportedStorageTypes>
|
|
84
|
-
>;
|
|
74
|
+
return this.storage.values(this.thisContexts);
|
|
85
75
|
}
|
|
86
76
|
|
|
87
77
|
contexts() {
|
|
88
|
-
return this.storage.contexts(this.thisContexts)
|
|
78
|
+
return this.storage.contexts(this.thisContexts);
|
|
89
79
|
}
|
|
90
80
|
|
|
91
81
|
/** Clears all keys in this context */
|
|
@@ -97,7 +87,7 @@ export class StorageContext<S extends Storage = any> implements StorageContextFa
|
|
|
97
87
|
keys.map(key => this.delete(key)),
|
|
98
88
|
"Error while clearing storage",
|
|
99
89
|
).then(() => {});
|
|
100
|
-
})
|
|
90
|
+
});
|
|
101
91
|
}
|
|
102
92
|
const promises = new Array<PromiseLike<void>>();
|
|
103
93
|
keys.forEach(key => {
|
|
@@ -107,15 +97,21 @@ export class StorageContext<S extends Storage = any> implements StorageContextFa
|
|
|
107
97
|
}
|
|
108
98
|
});
|
|
109
99
|
if (promises.length > 0) {
|
|
110
|
-
return MatterAggregateError.allSettled(promises, "Error while clearing storage").then(
|
|
111
|
-
() => {},
|
|
112
|
-
) as StorageOperationResult<S>;
|
|
100
|
+
return MatterAggregateError.allSettled(promises, "Error while clearing storage").then(() => {});
|
|
113
101
|
}
|
|
114
|
-
return undefined
|
|
102
|
+
return undefined;
|
|
115
103
|
}
|
|
116
104
|
|
|
117
105
|
/** Clears all keys in this context and all created sub-contexts. */
|
|
118
106
|
clearAll() {
|
|
119
|
-
return this.storage.clearAll(this.thisContexts)
|
|
107
|
+
return this.storage.clearAll(this.thisContexts);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
openBlob(key: string) {
|
|
111
|
+
return this.storage.openBlob(this.thisContexts, key);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
writeBlobFromStream(key: string, stream: ReadableStream<Uint8Array>) {
|
|
115
|
+
return this.storage.writeBlobFromStream(this.thisContexts, key, stream);
|
|
120
116
|
}
|
|
121
117
|
}
|
|
@@ -8,10 +8,10 @@ import { MaybePromise } from "../util/Promises.js";
|
|
|
8
8
|
import { Storage, StorageError } from "./Storage.js";
|
|
9
9
|
import { StorageContext, StorageContextFactory } from "./StorageContext.js";
|
|
10
10
|
|
|
11
|
-
export class StorageManager
|
|
11
|
+
export class StorageManager implements StorageContextFactory {
|
|
12
12
|
private initialized = false;
|
|
13
13
|
|
|
14
|
-
constructor(private storage:
|
|
14
|
+
constructor(private storage: Storage) {}
|
|
15
15
|
|
|
16
16
|
initialize(): MaybePromise<void> {
|
|
17
17
|
if (!this.storage.initialized) {
|
|
@@ -30,7 +30,7 @@ export class StorageManager<S extends Storage = any> implements StorageContextFa
|
|
|
30
30
|
return this.storage.close();
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
createContext(context: string): StorageContext
|
|
33
|
+
createContext(context: string): StorageContext {
|
|
34
34
|
if (!this.initialized) throw new StorageError("The storage needs to be initialized first!");
|
|
35
35
|
if (!context.length) throw new StorageError("Context must not be an empty string!");
|
|
36
36
|
if (context.includes(".")) throw new StorageError("Context must not contain dots!");
|