@matter/nodejs 0.17.0-alpha.0-20260507-059f7763b → 0.17.0-alpha.0-20260508-29ff5ae9e
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/package.json +9 -9
- package/dist/cjs/behavior/index.d.ts +0 -7
- package/dist/cjs/behavior/index.d.ts.map +0 -1
- package/dist/cjs/behavior/index.js +0 -8
- package/dist/cjs/behavior/index.js.map +0 -6
- package/dist/cjs/behavior/instrumentation.d.ts +0 -11
- package/dist/cjs/behavior/instrumentation.d.ts.map +0 -1
- package/dist/cjs/behavior/instrumentation.js +0 -39
- package/dist/cjs/behavior/instrumentation.js.map +0 -6
- package/dist/cjs/behavior/register.d.ts +0 -7
- package/dist/cjs/behavior/register.d.ts.map +0 -1
- package/dist/cjs/behavior/register.js +0 -9
- package/dist/cjs/behavior/register.js.map +0 -6
- package/dist/cjs/config.d.ts +0 -98
- package/dist/cjs/config.d.ts.map +0 -1
- package/dist/cjs/config.js +0 -210
- package/dist/cjs/config.js.map +0 -6
- package/dist/cjs/crypto/NodeJsCrypto.d.ts +0 -13
- package/dist/cjs/crypto/NodeJsCrypto.d.ts.map +0 -1
- package/dist/cjs/crypto/NodeJsCrypto.js +0 -46
- package/dist/cjs/crypto/NodeJsCrypto.js.map +0 -6
- package/dist/cjs/crypto/index.d.ts +0 -7
- package/dist/cjs/crypto/index.d.ts.map +0 -1
- package/dist/cjs/crypto/index.js +0 -24
- package/dist/cjs/crypto/index.js.map +0 -6
- package/dist/cjs/environment/NodeJsEnvironment.d.ts +0 -77
- package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +0 -1
- package/dist/cjs/environment/NodeJsEnvironment.js +0 -254
- package/dist/cjs/environment/NodeJsEnvironment.js.map +0 -6
- package/dist/cjs/environment/ProcessManager.d.ts +0 -48
- package/dist/cjs/environment/ProcessManager.d.ts.map +0 -1
- package/dist/cjs/environment/ProcessManager.js +0 -129
- package/dist/cjs/environment/ProcessManager.js.map +0 -6
- package/dist/cjs/environment/index.d.ts +0 -9
- package/dist/cjs/environment/index.d.ts.map +0 -1
- package/dist/cjs/environment/index.js +0 -26
- package/dist/cjs/environment/index.js.map +0 -6
- package/dist/cjs/environment/register.d.ts +0 -7
- package/dist/cjs/environment/register.d.ts.map +0 -1
- package/dist/cjs/environment/register.js +0 -10
- package/dist/cjs/environment/register.js.map +0 -6
- package/dist/cjs/fs/NodeJsDirectory.d.ts +0 -24
- package/dist/cjs/fs/NodeJsDirectory.d.ts.map +0 -1
- package/dist/cjs/fs/NodeJsDirectory.js +0 -102
- package/dist/cjs/fs/NodeJsDirectory.js.map +0 -6
- package/dist/cjs/fs/NodeJsFile.d.ts +0 -22
- package/dist/cjs/fs/NodeJsFile.d.ts.map +0 -1
- package/dist/cjs/fs/NodeJsFile.js +0 -248
- package/dist/cjs/fs/NodeJsFile.js.map +0 -6
- package/dist/cjs/fs/NodeJsFilesystem.d.ts +0 -27
- package/dist/cjs/fs/NodeJsFilesystem.d.ts.map +0 -1
- package/dist/cjs/fs/NodeJsFilesystem.js +0 -83
- package/dist/cjs/fs/NodeJsFilesystem.js.map +0 -6
- package/dist/cjs/fs/fs-utils.d.ts +0 -16
- package/dist/cjs/fs/fs-utils.d.ts.map +0 -1
- package/dist/cjs/fs/fs-utils.js +0 -154
- package/dist/cjs/fs/fs-utils.js.map +0 -6
- package/dist/cjs/fs/index.d.ts +0 -7
- package/dist/cjs/fs/index.d.ts.map +0 -1
- package/dist/cjs/fs/index.js +0 -24
- package/dist/cjs/fs/index.js.map +0 -6
- package/dist/cjs/fs/lock-utils.d.ts +0 -12
- package/dist/cjs/fs/lock-utils.d.ts.map +0 -1
- package/dist/cjs/fs/lock-utils.js +0 -132
- package/dist/cjs/fs/lock-utils.js.map +0 -6
- package/dist/cjs/index.d.ts +0 -14
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -31
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/log/FileLogger.d.ts +0 -12
- package/dist/cjs/log/FileLogger.d.ts.map +0 -1
- package/dist/cjs/log/FileLogger.js +0 -46
- package/dist/cjs/log/FileLogger.js.map +0 -6
- package/dist/cjs/log/index.d.ts +0 -7
- package/dist/cjs/log/index.d.ts.map +0 -1
- package/dist/cjs/log/index.js +0 -24
- package/dist/cjs/log/index.js.map +0 -6
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts +0 -38
- package/dist/cjs/net/NodeJsHttpEndpoint.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsHttpEndpoint.js +0 -306
- package/dist/cjs/net/NodeJsHttpEndpoint.js.map +0 -6
- package/dist/cjs/net/NodeJsNetwork.d.ts +0 -37
- package/dist/cjs/net/NodeJsNetwork.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsNetwork.js +0 -199
- package/dist/cjs/net/NodeJsNetwork.js.map +0 -6
- package/dist/cjs/net/NodeJsTcpConnection.d.ts +0 -24
- package/dist/cjs/net/NodeJsTcpConnection.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsTcpConnection.js +0 -138
- package/dist/cjs/net/NodeJsTcpConnection.js.map +0 -6
- package/dist/cjs/net/NodeJsTcpListener.d.ts +0 -19
- package/dist/cjs/net/NodeJsTcpListener.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsTcpListener.js +0 -100
- package/dist/cjs/net/NodeJsTcpListener.js.map +0 -6
- package/dist/cjs/net/NodeJsUdpSocket.d.ts +0 -23
- package/dist/cjs/net/NodeJsUdpSocket.d.ts.map +0 -1
- package/dist/cjs/net/NodeJsUdpSocket.js +0 -394
- package/dist/cjs/net/NodeJsUdpSocket.js.map +0 -6
- package/dist/cjs/net/WsAdapter.d.ts +0 -25
- package/dist/cjs/net/WsAdapter.d.ts.map +0 -1
- package/dist/cjs/net/WsAdapter.js +0 -33
- package/dist/cjs/net/WsAdapter.js.map +0 -6
- package/dist/cjs/net/index.d.ts +0 -12
- package/dist/cjs/net/index.d.ts.map +0 -1
- package/dist/cjs/net/index.js +0 -29
- package/dist/cjs/net/index.js.map +0 -6
- package/dist/cjs/package.json +0 -6
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.d.ts +0 -29
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.js +0 -155
- package/dist/cjs/storage/fs/DirectoryBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/FileStorageDriver.d.ts +0 -44
- package/dist/cjs/storage/fs/FileStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/FileStorageDriver.js +0 -334
- package/dist/cjs/storage/fs/FileStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.d.ts +0 -30
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.js +0 -195
- package/dist/cjs/storage/fs/FlatFileBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/JsonFileStorageDriver.d.ts +0 -27
- package/dist/cjs/storage/fs/JsonFileStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/JsonFileStorageDriver.js +0 -128
- package/dist/cjs/storage/fs/JsonFileStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/WalBlobStorageDriver.d.ts +0 -19
- package/dist/cjs/storage/fs/WalBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/fs/WalBlobStorageDriver.js +0 -44
- package/dist/cjs/storage/fs/WalBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/fs/index.d.ts +0 -21
- package/dist/cjs/storage/fs/index.d.ts.map +0 -1
- package/dist/cjs/storage/fs/index.js +0 -40
- package/dist/cjs/storage/fs/index.js.map +0 -6
- package/dist/cjs/storage/index.d.ts +0 -8
- package/dist/cjs/storage/index.d.ts.map +0 -1
- package/dist/cjs/storage/index.js +0 -25
- package/dist/cjs/storage/index.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.d.ts +0 -48
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.js +0 -217
- package/dist/cjs/storage/sqlite/SqliteBlobStorageDriver.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqlitePlatform.d.ts +0 -23
- package/dist/cjs/storage/sqlite/SqlitePlatform.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqlitePlatform.js +0 -56
- package/dist/cjs/storage/sqlite/SqlitePlatform.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.d.ts +0 -102
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.js +0 -424
- package/dist/cjs/storage/sqlite/SqliteStorageDriver.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.d.ts +0 -19
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.js +0 -41
- package/dist/cjs/storage/sqlite/SqliteStorageDriverError.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteTypes.d.ts +0 -67
- package/dist/cjs/storage/sqlite/SqliteTypes.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteTypes.js +0 -35
- package/dist/cjs/storage/sqlite/SqliteTypes.js.map +0 -6
- package/dist/cjs/storage/sqlite/SqliteUtil.d.ts +0 -33
- package/dist/cjs/storage/sqlite/SqliteUtil.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/SqliteUtil.js +0 -64
- package/dist/cjs/storage/sqlite/SqliteUtil.js.map +0 -6
- package/dist/cjs/storage/sqlite/index.d.ts +0 -15
- package/dist/cjs/storage/sqlite/index.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/index.js +0 -37
- package/dist/cjs/storage/sqlite/index.js.map +0 -6
- package/dist/cjs/storage/sqlite/platform/BunSqlite.d.ts +0 -13
- package/dist/cjs/storage/sqlite/platform/BunSqlite.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/platform/BunSqlite.js +0 -61
- package/dist/cjs/storage/sqlite/platform/BunSqlite.js.map +0 -6
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.d.ts +0 -8
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.d.ts.map +0 -1
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.js +0 -53
- package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.js.map +0 -6
- package/dist/cjs/time/index.d.ts +0 -7
- package/dist/cjs/time/index.d.ts.map +0 -1
- package/dist/cjs/time/index.js +0 -8
- package/dist/cjs/time/index.js.map +0 -6
- package/dist/cjs/time/startup.d.ts +0 -7
- package/dist/cjs/time/startup.d.ts.map +0 -1
- package/dist/cjs/time/startup.js +0 -11
- package/dist/cjs/time/startup.js.map +0 -6
- package/dist/cjs/util/runtimeChecks.d.ts +0 -14
- package/dist/cjs/util/runtimeChecks.d.ts.map +0 -1
- package/dist/cjs/util/runtimeChecks.js +0 -45
- package/dist/cjs/util/runtimeChecks.js.map +0 -6
- package/dist/esm/behavior/index.js +0 -7
- package/dist/esm/behavior/index.js.map +0 -6
- package/dist/esm/behavior/instrumentation.js +0 -19
- package/dist/esm/behavior/instrumentation.js.map +0 -6
- package/dist/esm/behavior/register.js +0 -8
- package/dist/esm/behavior/register.js.map +0 -6
- package/dist/esm/config.js +0 -190
- package/dist/esm/config.js.map +0 -6
- package/dist/esm/crypto/NodeJsCrypto.js +0 -16
- package/dist/esm/crypto/NodeJsCrypto.js.map +0 -6
- package/dist/esm/crypto/index.js +0 -7
- package/dist/esm/crypto/index.js.map +0 -6
- package/dist/esm/environment/NodeJsEnvironment.js +0 -242
- package/dist/esm/environment/NodeJsEnvironment.js.map +0 -6
- package/dist/esm/environment/ProcessManager.js +0 -109
- package/dist/esm/environment/ProcessManager.js.map +0 -6
- package/dist/esm/environment/index.js +0 -9
- package/dist/esm/environment/index.js.map +0 -6
- package/dist/esm/environment/register.js +0 -9
- package/dist/esm/environment/register.js.map +0 -6
- package/dist/esm/fs/NodeJsDirectory.js +0 -82
- package/dist/esm/fs/NodeJsDirectory.js.map +0 -6
- package/dist/esm/fs/NodeJsFile.js +0 -232
- package/dist/esm/fs/NodeJsFile.js.map +0 -6
- package/dist/esm/fs/NodeJsFilesystem.js +0 -63
- package/dist/esm/fs/NodeJsFilesystem.js.map +0 -6
- package/dist/esm/fs/fs-utils.js +0 -137
- package/dist/esm/fs/fs-utils.js.map +0 -6
- package/dist/esm/fs/index.js +0 -7
- package/dist/esm/fs/index.js.map +0 -6
- package/dist/esm/fs/lock-utils.js +0 -112
- package/dist/esm/fs/lock-utils.js.map +0 -6
- package/dist/esm/index.js +0 -14
- package/dist/esm/index.js.map +0 -6
- package/dist/esm/log/FileLogger.js +0 -26
- package/dist/esm/log/FileLogger.js.map +0 -6
- package/dist/esm/log/index.js +0 -7
- package/dist/esm/log/index.js.map +0 -6
- package/dist/esm/net/NodeJsHttpEndpoint.js +0 -286
- package/dist/esm/net/NodeJsHttpEndpoint.js.map +0 -6
- package/dist/esm/net/NodeJsNetwork.js +0 -189
- package/dist/esm/net/NodeJsNetwork.js.map +0 -6
- package/dist/esm/net/NodeJsTcpConnection.js +0 -124
- package/dist/esm/net/NodeJsTcpConnection.js.map +0 -6
- package/dist/esm/net/NodeJsTcpListener.js +0 -86
- package/dist/esm/net/NodeJsTcpListener.js.map +0 -6
- package/dist/esm/net/NodeJsUdpSocket.js +0 -385
- package/dist/esm/net/NodeJsUdpSocket.js.map +0 -6
- package/dist/esm/net/WsAdapter.js +0 -13
- package/dist/esm/net/WsAdapter.js.map +0 -6
- package/dist/esm/net/index.js +0 -12
- package/dist/esm/net/index.js.map +0 -6
- package/dist/esm/package.json +0 -6
- package/dist/esm/storage/fs/DirectoryBlobStorageDriver.js +0 -140
- package/dist/esm/storage/fs/DirectoryBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/FileStorageDriver.js +0 -323
- package/dist/esm/storage/fs/FileStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/FlatFileBlobStorageDriver.js +0 -180
- package/dist/esm/storage/fs/FlatFileBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/JsonFileStorageDriver.js +0 -116
- package/dist/esm/storage/fs/JsonFileStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/WalBlobStorageDriver.js +0 -24
- package/dist/esm/storage/fs/WalBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/fs/index.js +0 -19
- package/dist/esm/storage/fs/index.js.map +0 -6
- package/dist/esm/storage/index.js +0 -8
- package/dist/esm/storage/index.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteBlobStorageDriver.js +0 -197
- package/dist/esm/storage/sqlite/SqliteBlobStorageDriver.js.map +0 -6
- package/dist/esm/storage/sqlite/SqlitePlatform.js +0 -26
- package/dist/esm/storage/sqlite/SqlitePlatform.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteStorageDriver.js +0 -409
- package/dist/esm/storage/sqlite/SqliteStorageDriver.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteStorageDriverError.js +0 -21
- package/dist/esm/storage/sqlite/SqliteStorageDriverError.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteTypes.js +0 -15
- package/dist/esm/storage/sqlite/SqliteTypes.js.map +0 -6
- package/dist/esm/storage/sqlite/SqliteUtil.js +0 -44
- package/dist/esm/storage/sqlite/SqliteUtil.js.map +0 -6
- package/dist/esm/storage/sqlite/index.js +0 -17
- package/dist/esm/storage/sqlite/index.js.map +0 -6
- package/dist/esm/storage/sqlite/platform/BunSqlite.js +0 -41
- package/dist/esm/storage/sqlite/platform/BunSqlite.js.map +0 -6
- package/dist/esm/storage/sqlite/platform/NodeJsSqlite.js +0 -33
- package/dist/esm/storage/sqlite/platform/NodeJsSqlite.js.map +0 -6
- package/dist/esm/time/index.js +0 -7
- package/dist/esm/time/index.js.map +0 -6
- package/dist/esm/time/startup.js +0 -10
- package/dist/esm/time/startup.js.map +0 -6
- package/dist/esm/util/runtimeChecks.js +0 -25
- package/dist/esm/util/runtimeChecks.js.map +0 -6
|
@@ -1,155 +0,0 @@
|
|
|
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 DirectoryBlobStorageDriver_exports = {};
|
|
20
|
-
__export(DirectoryBlobStorageDriver_exports, {
|
|
21
|
-
DirectoryBlobStorageDriver: () => DirectoryBlobStorageDriver
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(DirectoryBlobStorageDriver_exports);
|
|
24
|
-
var import_general = require("@matter/general");
|
|
25
|
-
/**
|
|
26
|
-
* @license
|
|
27
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
28
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
-
*/
|
|
30
|
-
class DirectoryBlobStorageDriver extends import_general.FilesystemBlobStorageDriver {
|
|
31
|
-
static id = "dir";
|
|
32
|
-
static create(namespace, _descriptor) {
|
|
33
|
-
return new DirectoryBlobStorageDriver(namespace);
|
|
34
|
-
}
|
|
35
|
-
#rootDir;
|
|
36
|
-
#initialized = false;
|
|
37
|
-
constructor(namespace) {
|
|
38
|
-
super(namespace);
|
|
39
|
-
this.#rootDir = this.root.directory;
|
|
40
|
-
}
|
|
41
|
-
get initialized() {
|
|
42
|
-
return this.#initialized;
|
|
43
|
-
}
|
|
44
|
-
async initialize() {
|
|
45
|
-
await super.initialize();
|
|
46
|
-
await this.#rootDir.mkdir();
|
|
47
|
-
this.#initialized = true;
|
|
48
|
-
}
|
|
49
|
-
async close() {
|
|
50
|
-
this.#initialized = false;
|
|
51
|
-
await super.close();
|
|
52
|
-
}
|
|
53
|
-
async openBlob(contexts, key) {
|
|
54
|
-
const file = this.#resolve(contexts, key);
|
|
55
|
-
if (!await file.exists()) {
|
|
56
|
-
return new Blob([]);
|
|
57
|
-
}
|
|
58
|
-
const bytes = await file.readAllBytes();
|
|
59
|
-
return new Blob([import_general.Bytes.exclusive(bytes)]);
|
|
60
|
-
}
|
|
61
|
-
// TODO: writes go directly to the final file via the File abstraction's streaming support.
|
|
62
|
-
// Not atomic — a crash mid-write leaves a partial file. Hardening with write-to-tmp + rename
|
|
63
|
-
// would require bypassing File.write() to get a temp path in the same directory.
|
|
64
|
-
async writeBlobFromStream(contexts, key, stream) {
|
|
65
|
-
validateKey(key);
|
|
66
|
-
let dir = this.#rootDir;
|
|
67
|
-
for (const ctx of contexts) {
|
|
68
|
-
if (ctx === ".." || ctx === "." || !ctx.length || ctx.includes("\\")) {
|
|
69
|
-
throw new import_general.StorageError(`Context segment "${ctx}" is not allowed`);
|
|
70
|
-
}
|
|
71
|
-
dir = dir.directory(encodeContextSegment(ctx));
|
|
72
|
-
await dir.mkdir();
|
|
73
|
-
}
|
|
74
|
-
const file = dir.file(key);
|
|
75
|
-
await file.write(streamToAsyncIterable(stream));
|
|
76
|
-
}
|
|
77
|
-
async delete(contexts, key) {
|
|
78
|
-
const file = this.#resolve(contexts, key);
|
|
79
|
-
if (await file.exists()) {
|
|
80
|
-
await file.delete();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
async has(contexts, key) {
|
|
84
|
-
return this.#resolve(contexts, key).exists();
|
|
85
|
-
}
|
|
86
|
-
async keys(contexts) {
|
|
87
|
-
const dir = this.#contextDir(contexts);
|
|
88
|
-
if (!await dir.exists()) {
|
|
89
|
-
return [];
|
|
90
|
-
}
|
|
91
|
-
const files = await dir.files();
|
|
92
|
-
return files.filter((f) => !import_general.BaseStorageDriver.RESERVED_FILENAMES.has(f) && !f.endsWith(".tmp"));
|
|
93
|
-
}
|
|
94
|
-
async contexts(contexts) {
|
|
95
|
-
const dir = this.#contextDir(contexts);
|
|
96
|
-
if (!await dir.exists()) {
|
|
97
|
-
return [];
|
|
98
|
-
}
|
|
99
|
-
const encoded = await dir.directories();
|
|
100
|
-
return encoded.map(decodeContextSegment);
|
|
101
|
-
}
|
|
102
|
-
async clearAll(contexts) {
|
|
103
|
-
const dir = this.#contextDir(contexts);
|
|
104
|
-
if (await dir.exists()) {
|
|
105
|
-
await dir.delete();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
#contextDir(contexts) {
|
|
109
|
-
let dir = this.#rootDir;
|
|
110
|
-
for (const ctx of contexts) {
|
|
111
|
-
if (ctx === ".." || ctx === "." || !ctx.length || ctx.includes("\\")) {
|
|
112
|
-
throw new import_general.StorageError(`Context segment "${ctx}" is not allowed`);
|
|
113
|
-
}
|
|
114
|
-
dir = dir.directory(encodeContextSegment(ctx));
|
|
115
|
-
}
|
|
116
|
-
return dir;
|
|
117
|
-
}
|
|
118
|
-
#resolve(contexts, key) {
|
|
119
|
-
validateKey(key);
|
|
120
|
-
return this.#contextDir(contexts).file(key);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
function validateKey(key) {
|
|
124
|
-
if (!key.length) {
|
|
125
|
-
throw new import_general.StorageError("Key must not be empty");
|
|
126
|
-
}
|
|
127
|
-
if (key.includes("/") || key.includes("\\") || key === ".." || key.startsWith("../") || key.includes("/../")) {
|
|
128
|
-
throw new import_general.StorageError(`Key "${key}" contains path traversal characters`);
|
|
129
|
-
}
|
|
130
|
-
if (import_general.BaseStorageDriver.RESERVED_FILENAMES.has(key)) {
|
|
131
|
-
throw new import_general.StorageError(`Key "${key}" is a reserved filename`);
|
|
132
|
-
}
|
|
133
|
-
if (key.endsWith(".tmp")) {
|
|
134
|
-
throw new import_general.StorageError(`Key "${key}" must not end with ".tmp" (reserved for atomic writes)`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
async function* streamToAsyncIterable(stream) {
|
|
138
|
-
const reader = stream.getReader();
|
|
139
|
-
try {
|
|
140
|
-
while (true) {
|
|
141
|
-
const { done, value } = await reader.read();
|
|
142
|
-
if (done) break;
|
|
143
|
-
yield import_general.Bytes.of(value);
|
|
144
|
-
}
|
|
145
|
-
} finally {
|
|
146
|
-
reader.releaseLock();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function encodeContextSegment(segment) {
|
|
150
|
-
return segment.replace(/%/g, "%25").replace(/\//g, "%2F");
|
|
151
|
-
}
|
|
152
|
-
function decodeContextSegment(encoded) {
|
|
153
|
-
return encoded.replace(/%2F/gi, "/").replace(/%25/g, "%");
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=DirectoryBlobStorageDriver.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/storage/fs/DirectoryBlobStorageDriver.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAQO;AAdP;AAAA;AAAA;AAAA;AAAA;AAsBO,MAAM,mCAAmC,2CAA4B;AAAA,EACxE,OAAgB,KAAa;AAAA,EAE7B,OAAO,OAAO,WAA0B,aAAuE;AAC3G,WAAO,IAAI,2BAA2B,SAAS;AAAA,EACnD;AAAA,EAES;AAAA,EACT,eAAe;AAAA,EAEf,YAAY,WAA0B;AAClC,UAAM,SAAS;AACf,SAAK,WAAW,KAAK,KAAM;AAAA,EAC/B;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAe,aAAa;AACxB,UAAM,MAAM,WAAW;AACvB,UAAM,KAAK,SAAS,MAAM;AAC1B,SAAK,eAAe;AAAA,EACxB;AAAA,EAEA,MAAe,QAAQ;AACnB,SAAK,eAAe;AACpB,UAAM,MAAM,MAAM;AAAA,EACtB;AAAA,EAEA,MAAM,SAAS,UAAoB,KAA4B;AAC3D,UAAM,OAAO,KAAK,SAAS,UAAU,GAAG;AACxC,QAAI,CAAE,MAAM,KAAK,OAAO,GAAI;AACxB,aAAO,IAAI,KAAK,CAAC,CAAC;AAAA,IACtB;AACA,UAAM,QAAQ,MAAM,KAAK,aAAa;AACtC,WAAO,IAAI,KAAK,CAAC,qBAAM,UAAU,KAAK,CAAC,CAAC;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,UAAoB,KAAa,QAA8C;AACrG,gBAAY,GAAG;AAGf,QAAI,MAAM,KAAK;AACf,eAAW,OAAO,UAAU;AACxB,UAAI,QAAQ,QAAQ,QAAQ,OAAO,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,GAAG;AAClE,cAAM,IAAI,4BAAa,oBAAoB,GAAG,kBAAkB;AAAA,MACpE;AACA,YAAM,IAAI,UAAU,qBAAqB,GAAG,CAAC;AAC7C,YAAM,IAAI,MAAM;AAAA,IACpB;AAGA,UAAM,OAAO,IAAI,KAAK,GAAG;AACzB,UAAM,KAAK,MAAM,sBAAsB,MAAM,CAAC;AAAA,EAClD;AAAA,EAEA,MAAM,OAAO,UAAoB,KAA4B;AACzD,UAAM,OAAO,KAAK,SAAS,UAAU,GAAG;AACxC,QAAI,MAAM,KAAK,OAAO,GAAG;AACrB,YAAM,KAAK,OAAO;AAAA,IACtB;AAAA,EACJ;AAAA,EAEA,MAAM,IAAI,UAAoB,KAA+B;AACzD,WAAO,KAAK,SAAS,UAAU,GAAG,EAAE,OAAO;AAAA,EAC/C;AAAA,EAEA,MAAM,KAAK,UAAuC;AAC9C,UAAM,MAAM,KAAK,YAAY,QAAQ;AACrC,QAAI,CAAE,MAAM,IAAI,OAAO,GAAI;AACvB,aAAO,CAAC;AAAA,IACZ;AACA,UAAM,QAAQ,MAAM,IAAI,MAAM;AAC9B,WAAO,MAAM,OAAO,OAAK,CAAC,iCAAkB,mBAAmB,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,CAAC;AAAA,EAChG;AAAA,EAEA,MAAM,SAAS,UAAuC;AAClD,UAAM,MAAM,KAAK,YAAY,QAAQ;AACrC,QAAI,CAAE,MAAM,IAAI,OAAO,GAAI;AACvB,aAAO,CAAC;AAAA,IACZ;AACA,UAAM,UAAU,MAAM,IAAI,YAAY;AACtC,WAAO,QAAQ,IAAI,oBAAoB;AAAA,EAC3C;AAAA,EAEA,MAAM,SAAS,UAAmC;AAC9C,UAAM,MAAM,KAAK,YAAY,QAAQ;AACrC,QAAI,MAAM,IAAI,OAAO,GAAG;AACpB,YAAM,IAAI,OAAO;AAAA,IACrB;AAAA,EACJ;AAAA,EAEA,YAAY,UAA+B;AACvC,QAAI,MAAiB,KAAK;AAC1B,eAAW,OAAO,UAAU;AACxB,UAAI,QAAQ,QAAQ,QAAQ,OAAO,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,GAAG;AAClE,cAAM,IAAI,4BAAa,oBAAoB,GAAG,kBAAkB;AAAA,MACpE;AACA,YAAM,IAAI,UAAU,qBAAqB,GAAG,CAAC;AAAA,IACjD;AACA,WAAO;AAAA,EACX;AAAA,EAEA,SAAS,UAAoB,KAAa;AACtC,gBAAY,GAAG;AACf,WAAO,KAAK,YAAY,QAAQ,EAAE,KAAK,GAAG;AAAA,EAC9C;AACJ;AAGA,SAAS,YAAY,KAAa;AAC9B,MAAI,CAAC,IAAI,QAAQ;AACb,UAAM,IAAI,4BAAa,uBAAuB;AAAA,EAClD;AACA,MAAI,IAAI,SAAS,GAAG,KAAK,IAAI,SAAS,IAAI,KAAK,QAAQ,QAAQ,IAAI,WAAW,KAAK,KAAK,IAAI,SAAS,MAAM,GAAG;AAC1G,UAAM,IAAI,4BAAa,QAAQ,GAAG,sCAAsC;AAAA,EAC5E;AACA,MAAI,iCAAkB,mBAAmB,IAAI,GAAG,GAAG;AAC/C,UAAM,IAAI,4BAAa,QAAQ,GAAG,0BAA0B;AAAA,EAChE;AACA,MAAI,IAAI,SAAS,MAAM,GAAG;AACtB,UAAM,IAAI,4BAAa,QAAQ,GAAG,yDAAyD;AAAA,EAC/F;AACJ;AAGA,gBAAgB,sBAAsB,QAA0D;AAC5F,QAAM,SAAS,OAAO,UAAU;AAChC,MAAI;AACA,WAAO,MAAM;AACT,YAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,UAAI,KAAM;AACV,YAAM,qBAAM,GAAG,KAAK;AAAA,IACxB;AAAA,EACJ,UAAE;AACE,WAAO,YAAY;AAAA,EACvB;AACJ;AAGA,SAAS,qBAAqB,SAAyB;AACnD,SAAO,QAAQ,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,KAAK;AAC5D;AAGA,SAAS,qBAAqB,SAAyB;AACnD,SAAO,QAAQ,QAAQ,SAAS,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAC5D;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { Bytes, FilesystemStorageDriver, StorageDriver, SupportedStorageTypes, type DataNamespace, type LegacyBlobSource } from "@matter/general";
|
|
7
|
-
export declare class FileStorageDriver extends FilesystemStorageDriver implements LegacyBlobSource {
|
|
8
|
-
#private;
|
|
9
|
-
static readonly id = "file";
|
|
10
|
-
static create(namespace: DataNamespace, _descriptor: StorageDriver.Descriptor): Promise<FileStorageDriver>;
|
|
11
|
-
protected isInitialized: boolean;
|
|
12
|
-
constructor(namespaceOrPath?: DataNamespace | string, clear?: boolean);
|
|
13
|
-
get initialized(): boolean;
|
|
14
|
-
initialize(): Promise<void>;
|
|
15
|
-
close(): Promise<void>;
|
|
16
|
-
filePath(fileName: string): string;
|
|
17
|
-
getContextBaseKey(contexts: string[]): string;
|
|
18
|
-
buildStorageKey(contexts: string[], key: string): string;
|
|
19
|
-
has(contexts: string[], key: string): Promise<boolean>;
|
|
20
|
-
get<T extends SupportedStorageTypes>(contexts: string[], key: string): Promise<T | undefined>;
|
|
21
|
-
/**
|
|
22
|
-
* Read a blob from the flat file format. Retained for legacy migration support — the
|
|
23
|
-
* {@link StorageMigration} cross-type kv→blob strategy duck-types this method to extract
|
|
24
|
-
* blobs from old FileStorageDriver data.
|
|
25
|
-
*
|
|
26
|
-
* @deprecated Only used for migration from legacy flat-file blob format.
|
|
27
|
-
*/
|
|
28
|
-
openBlob(contexts: string[], key: string): Promise<Blob>;
|
|
29
|
-
/**
|
|
30
|
-
* Write blob data in the flat file format. Retained for legacy migration support.
|
|
31
|
-
*
|
|
32
|
-
* @deprecated Only used for migration from legacy flat-file blob format.
|
|
33
|
-
*/
|
|
34
|
-
writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Bytes>): Promise<void>;
|
|
35
|
-
set(contexts: string[], key: string, value: SupportedStorageTypes): Promise<void>;
|
|
36
|
-
set(contexts: string[], values: Record<string, SupportedStorageTypes>): Promise<void>;
|
|
37
|
-
delete(contexts: string[], key: string): Promise<void>;
|
|
38
|
-
/** Returns all keys of a storage context without keys of sub-contexts */
|
|
39
|
-
keys(contexts: string[]): Promise<string[]>;
|
|
40
|
-
values(contexts: string[]): Promise<Record<string, SupportedStorageTypes>>;
|
|
41
|
-
contexts(contexts: string[]): string[];
|
|
42
|
-
clearAll(contexts: string[]): Promise<void>;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=FileStorageDriver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileStorageDriver.d.ts","sourceRoot":"","sources":["../../../../src/storage/fs/FileStorageDriver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,KAAK,EAEL,uBAAuB,EAIvB,aAAa,EAEb,qBAAqB,EAErB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACxB,MAAM,iBAAiB,CAAC;AAmBzB,qBAAa,iBAAkB,SAAQ,uBAAwB,YAAW,gBAAgB;;IACtF,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU;IAE5B,OAAa,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,CAAC,UAAU,8BASlF;IAID,SAAS,CAAC,aAAa,UAAS;IAIhC,YAAY,eAAe,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,KAAK,UAAQ,EASlE;IAED,IAAI,WAAW,YAEd;IAEc,UAAU,kBA2BxB;IA6Cc,KAAK,kBAInB;IAED,QAAQ,CAAC,QAAQ,EAAE,MAAM,UAExB;IAED,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAOnC;IAED,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,UAY9C;IAEc,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpE;IAEK,GAAG,CAAC,CAAC,SAAS,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAgBlG;IAED;;;;;;OAMG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7D;IAED;;;;OAIG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvG;IAED,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAwGhF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,iBAE3C;IASD,yEAAyE;IACnE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,qBAG5B;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,kDAiB9B;IAED,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAGrC;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAKhC;CAqBJ"}
|
|
@@ -1,334 +0,0 @@
|
|
|
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 FileStorageDriver_exports = {};
|
|
20
|
-
__export(FileStorageDriver_exports, {
|
|
21
|
-
FileStorageDriver: () => FileStorageDriver
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(FileStorageDriver_exports);
|
|
24
|
-
var import_general = require("@matter/general");
|
|
25
|
-
var import_node_fs = require("node:fs");
|
|
26
|
-
var import_promises = require("node:fs/promises");
|
|
27
|
-
var import_node_path = require("node:path");
|
|
28
|
-
/**
|
|
29
|
-
* @license
|
|
30
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
31
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
32
|
-
*/
|
|
33
|
-
const logger = new import_general.Logger("FileStorageDriver");
|
|
34
|
-
class FileStorageDriver extends import_general.FilesystemStorageDriver {
|
|
35
|
-
static id = "file";
|
|
36
|
-
static async create(namespace, _descriptor) {
|
|
37
|
-
const storage = new FileStorageDriver(namespace);
|
|
38
|
-
try {
|
|
39
|
-
await storage.initialize();
|
|
40
|
-
} catch (error) {
|
|
41
|
-
await storage.close().catch(() => {
|
|
42
|
-
});
|
|
43
|
-
throw error;
|
|
44
|
-
}
|
|
45
|
-
return storage;
|
|
46
|
-
}
|
|
47
|
-
#path;
|
|
48
|
-
#clear;
|
|
49
|
-
isInitialized = false;
|
|
50
|
-
#writeFileBlocker = /* @__PURE__ */ new Map();
|
|
51
|
-
#index = {};
|
|
52
|
-
constructor(namespaceOrPath, clear = false) {
|
|
53
|
-
super(typeof namespaceOrPath === "string" || namespaceOrPath === void 0 ? void 0 : namespaceOrPath);
|
|
54
|
-
this.#path = typeof namespaceOrPath === "string" ? namespaceOrPath : namespaceOrPath !== void 0 ? this.root.directory.path : "";
|
|
55
|
-
this.#clear = clear;
|
|
56
|
-
}
|
|
57
|
-
get initialized() {
|
|
58
|
-
return this.isInitialized;
|
|
59
|
-
}
|
|
60
|
-
async initialize() {
|
|
61
|
-
if (this.isInitialized) {
|
|
62
|
-
throw new import_general.StorageError("Storage already initialized!");
|
|
63
|
-
}
|
|
64
|
-
await super.initialize();
|
|
65
|
-
if (this.#clear) {
|
|
66
|
-
this.#index = {};
|
|
67
|
-
await (0, import_promises.rm)(this.#path, { recursive: true, force: true });
|
|
68
|
-
}
|
|
69
|
-
await (0, import_promises.mkdir)(this.#path, { recursive: true });
|
|
70
|
-
const files = await (0, import_promises.readdir)(this.#path);
|
|
71
|
-
for (const file of files) {
|
|
72
|
-
if (import_general.StorageDriver.RESERVED_FILENAMES.has(file)) {
|
|
73
|
-
continue;
|
|
74
|
-
}
|
|
75
|
-
if (file.endsWith(".tmp")) {
|
|
76
|
-
logger.info("Deleting orphaned temp file", file);
|
|
77
|
-
await (0, import_promises.rm)((0, import_node_path.join)(this.#path, file), { force: true });
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
const parts = decodeURIComponent(file).split(".");
|
|
81
|
-
this.#markValue(parts.slice(0, -1), parts[parts.length - 1]);
|
|
82
|
-
}
|
|
83
|
-
this.isInitialized = true;
|
|
84
|
-
}
|
|
85
|
-
#indexFor(contexts) {
|
|
86
|
-
let node = this.#index;
|
|
87
|
-
for (const name of contexts) {
|
|
88
|
-
let child = node.contexts?.get(name);
|
|
89
|
-
if (child === void 0) {
|
|
90
|
-
child = {};
|
|
91
|
-
if (!node.contexts) {
|
|
92
|
-
node.contexts = /* @__PURE__ */ new Map();
|
|
93
|
-
}
|
|
94
|
-
node.contexts.set(name, child);
|
|
95
|
-
}
|
|
96
|
-
node = child;
|
|
97
|
-
}
|
|
98
|
-
return node;
|
|
99
|
-
}
|
|
100
|
-
#markValue(contexts, key) {
|
|
101
|
-
const index = this.#indexFor(contexts);
|
|
102
|
-
if (!index.keys) {
|
|
103
|
-
index.keys = /* @__PURE__ */ new Set();
|
|
104
|
-
}
|
|
105
|
-
index.keys.add(key);
|
|
106
|
-
}
|
|
107
|
-
async #finishAllWrites(filename) {
|
|
108
|
-
if (filename !== void 0 && this.#writeFileBlocker.has(filename) || filename === void 0 && this.#writeFileBlocker.size > 0) {
|
|
109
|
-
for (let i = 0; i < 10; i++) {
|
|
110
|
-
await import_general.MatterAggregateError.allSettled(
|
|
111
|
-
filename !== void 0 ? [this.#writeFileBlocker.get(filename)] : this.#writeFileBlocker.values(),
|
|
112
|
-
"Error on finishing all file system writes to storage"
|
|
113
|
-
);
|
|
114
|
-
if (!this.#writeFileBlocker.size) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
await this.#fsyncStorageDir();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
async close() {
|
|
122
|
-
this.isInitialized = false;
|
|
123
|
-
await this.#finishAllWrites();
|
|
124
|
-
await super.close();
|
|
125
|
-
}
|
|
126
|
-
filePath(fileName) {
|
|
127
|
-
return (0, import_node_path.join)(this.#path, fileName);
|
|
128
|
-
}
|
|
129
|
-
getContextBaseKey(contexts) {
|
|
130
|
-
for (const ctx of contexts) {
|
|
131
|
-
if (!ctx.length || ctx.includes(".")) {
|
|
132
|
-
throw new import_general.StorageError("Context must not contain empty segments or leading or trailing dots.");
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return contexts.join(".");
|
|
136
|
-
}
|
|
137
|
-
buildStorageKey(contexts, key) {
|
|
138
|
-
if (!key.length) {
|
|
139
|
-
throw new import_general.StorageError("Key must not be an empty string.");
|
|
140
|
-
}
|
|
141
|
-
if (key === "tmp") {
|
|
142
|
-
throw new import_general.StorageError(`Key "tmp" is reserved for atomic write operations.`);
|
|
143
|
-
}
|
|
144
|
-
const contextKey = this.getContextBaseKey(contexts);
|
|
145
|
-
const rawName = contextKey.length ? `${contextKey}.${key}` : key;
|
|
146
|
-
return encodeURIComponent(rawName).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
|
|
147
|
-
}
|
|
148
|
-
async has(contexts, key) {
|
|
149
|
-
const index = this.#indexFor(contexts);
|
|
150
|
-
return !!index.keys?.has(key);
|
|
151
|
-
}
|
|
152
|
-
async get(contexts, key) {
|
|
153
|
-
const fileName = this.filePath(this.buildStorageKey(contexts, key));
|
|
154
|
-
await this.#finishAllWrites(fileName);
|
|
155
|
-
let value;
|
|
156
|
-
try {
|
|
157
|
-
value = await (0, import_promises.readFile)(fileName, "utf8");
|
|
158
|
-
} catch (error) {
|
|
159
|
-
if (error.code === "ENOENT") return void 0;
|
|
160
|
-
throw error;
|
|
161
|
-
}
|
|
162
|
-
try {
|
|
163
|
-
return (0, import_general.fromJson)(value);
|
|
164
|
-
} catch (error) {
|
|
165
|
-
logger.error(`Failed to parse storage value for key ${key} in context ${contexts.join(".")}`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Read a blob from the flat file format. Retained for legacy migration support — the
|
|
170
|
-
* {@link StorageMigration} cross-type kv→blob strategy duck-types this method to extract
|
|
171
|
-
* blobs from old FileStorageDriver data.
|
|
172
|
-
*
|
|
173
|
-
* @deprecated Only used for migration from legacy flat-file blob format.
|
|
174
|
-
*/
|
|
175
|
-
async openBlob(contexts, key) {
|
|
176
|
-
const fileName = this.filePath(this.buildStorageKey(contexts, key));
|
|
177
|
-
if (await this.has(contexts, key)) {
|
|
178
|
-
return await (0, import_node_fs.openAsBlob)(fileName);
|
|
179
|
-
}
|
|
180
|
-
return new Blob();
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Write blob data in the flat file format. Retained for legacy migration support.
|
|
184
|
-
*
|
|
185
|
-
* @deprecated Only used for migration from legacy flat-file blob format.
|
|
186
|
-
*/
|
|
187
|
-
async writeBlobFromStream(contexts, key, stream) {
|
|
188
|
-
return this.#writeFile(contexts, key, stream);
|
|
189
|
-
}
|
|
190
|
-
async set(contexts, keyOrValues, value) {
|
|
191
|
-
if (typeof keyOrValues === "string") {
|
|
192
|
-
return this.#writeFile(contexts, keyOrValues, (0, import_general.toJson)(value));
|
|
193
|
-
}
|
|
194
|
-
const promises = new Array();
|
|
195
|
-
for (const [key, value2] of Object.entries(keyOrValues)) {
|
|
196
|
-
promises.push(this.#writeFile(contexts, key, (0, import_general.toJson)(value2)));
|
|
197
|
-
}
|
|
198
|
-
await import_general.MatterAggregateError.allSettled(promises, "Error when writing values into filesystem storage");
|
|
199
|
-
}
|
|
200
|
-
/** According to Node.js documentation, writeFile is not atomic. This method ensures atomicity. */
|
|
201
|
-
async #writeFile(contexts, key, valueOrStream) {
|
|
202
|
-
const fileName = this.buildStorageKey(contexts, key);
|
|
203
|
-
if (import_general.StorageDriver.RESERVED_FILENAMES.has(fileName)) {
|
|
204
|
-
throw new import_general.StorageError(
|
|
205
|
-
`Key "${key}" in context "${contexts.join(".")}" maps to reserved file "${fileName}"`
|
|
206
|
-
);
|
|
207
|
-
}
|
|
208
|
-
const blocker = this.#writeFileBlocker.get(fileName);
|
|
209
|
-
if (blocker !== void 0) {
|
|
210
|
-
await blocker;
|
|
211
|
-
return this.#writeFile(contexts, key, valueOrStream);
|
|
212
|
-
}
|
|
213
|
-
const promise = this.#writeAndMoveFile(this.filePath(fileName), valueOrStream).finally(() => {
|
|
214
|
-
this.#writeFileBlocker.delete(fileName);
|
|
215
|
-
this.#markValue(contexts, key);
|
|
216
|
-
});
|
|
217
|
-
this.#writeFileBlocker.set(fileName, promise);
|
|
218
|
-
return promise;
|
|
219
|
-
}
|
|
220
|
-
async #writeAndMoveFile(filepath, valueOrStream) {
|
|
221
|
-
const tmpName = `${filepath}.tmp`;
|
|
222
|
-
const handle = await (0, import_promises.open)(tmpName, "w");
|
|
223
|
-
const isStream = valueOrStream instanceof ReadableStream;
|
|
224
|
-
const writer = handle.createWriteStream({ encoding: isStream ? null : "utf8", flush: true });
|
|
225
|
-
const { resolver, rejecter, promise: writePromise } = (0, import_general.createPromise)();
|
|
226
|
-
writer.on("finish", resolver);
|
|
227
|
-
writer.on("error", rejecter);
|
|
228
|
-
let reader;
|
|
229
|
-
try {
|
|
230
|
-
if (isStream) {
|
|
231
|
-
reader = valueOrStream.getReader();
|
|
232
|
-
while (true) {
|
|
233
|
-
const { value: chunk, done } = await reader.read();
|
|
234
|
-
if (chunk) {
|
|
235
|
-
if (!writer.write(chunk)) {
|
|
236
|
-
await new Promise((resolve) => writer.once("drain", resolve));
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (done) {
|
|
240
|
-
break;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
} else {
|
|
244
|
-
writer.write(valueOrStream);
|
|
245
|
-
}
|
|
246
|
-
writer.end();
|
|
247
|
-
await writePromise;
|
|
248
|
-
} finally {
|
|
249
|
-
if (isStream && reader) {
|
|
250
|
-
if (valueOrStream.locked) {
|
|
251
|
-
reader.releaseLock();
|
|
252
|
-
}
|
|
253
|
-
await valueOrStream.cancel();
|
|
254
|
-
}
|
|
255
|
-
await handle.close();
|
|
256
|
-
}
|
|
257
|
-
await (0, import_promises.rename)(tmpName, filepath);
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* fsync on a directory ensures there are no rename operations etc. which haven't been persisted to disk.
|
|
261
|
-
* We do this as best effort to ensure that all writes are persisted to disk.
|
|
262
|
-
*/
|
|
263
|
-
async #fsyncStorageDir() {
|
|
264
|
-
if (process.platform === "win32") {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
const fd = await (0, import_promises.open)(this.#path, "r");
|
|
268
|
-
try {
|
|
269
|
-
await fd.sync();
|
|
270
|
-
} catch (error) {
|
|
271
|
-
logger.warn(`Failed to fsync storage directory ${this.#path}`, error);
|
|
272
|
-
} finally {
|
|
273
|
-
await fd.close();
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
async delete(contexts, key) {
|
|
277
|
-
await this.#rm(this.buildStorageKey(contexts, key), this.#indexFor(contexts), key);
|
|
278
|
-
}
|
|
279
|
-
async #rm(filename, index, key) {
|
|
280
|
-
await this.#finishAllWrites(filename);
|
|
281
|
-
return (0, import_promises.rm)(this.filePath(filename), { force: true }).finally(() => {
|
|
282
|
-
index.keys?.delete(key);
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
/** Returns all keys of a storage context without keys of sub-contexts */
|
|
286
|
-
async keys(contexts) {
|
|
287
|
-
const index = this.#indexFor(contexts);
|
|
288
|
-
return index.keys ? [...index.keys] : [];
|
|
289
|
-
}
|
|
290
|
-
async values(contexts) {
|
|
291
|
-
const values = {};
|
|
292
|
-
const promises = new Array();
|
|
293
|
-
for (const key of await this.keys(contexts)) {
|
|
294
|
-
promises.push(
|
|
295
|
-
(async () => {
|
|
296
|
-
const value = await this.get(contexts, key);
|
|
297
|
-
if (value !== void 0) {
|
|
298
|
-
values[key] = value;
|
|
299
|
-
}
|
|
300
|
-
})()
|
|
301
|
-
);
|
|
302
|
-
}
|
|
303
|
-
await import_general.MatterAggregateError.allSettled(promises, "Error when reading values from filesystem storage");
|
|
304
|
-
return values;
|
|
305
|
-
}
|
|
306
|
-
contexts(contexts) {
|
|
307
|
-
const index = this.#indexFor(contexts);
|
|
308
|
-
return index.contexts ? [...index.contexts.keys()] : [];
|
|
309
|
-
}
|
|
310
|
-
async clearAll(contexts) {
|
|
311
|
-
await this.#finishAllWrites();
|
|
312
|
-
const parent = this.#indexFor(contexts.slice(0, -1));
|
|
313
|
-
const name = contexts[contexts.length - 1];
|
|
314
|
-
await this.#clearChildContext(contexts, parent, name);
|
|
315
|
-
}
|
|
316
|
-
async #clearChildContext(contexts, parent, name) {
|
|
317
|
-
const index = parent.contexts?.get(name);
|
|
318
|
-
if (index === void 0) {
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
if (index.contexts) {
|
|
322
|
-
for (const name2 of index.contexts.keys()) {
|
|
323
|
-
await this.#clearChildContext([...contexts, name2], index, name2);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
if (index.keys) {
|
|
327
|
-
await import_general.MatterAggregateError.allSettled(
|
|
328
|
-
[...index.keys].map((key) => this.#rm(this.buildStorageKey(contexts, key), index, key)),
|
|
329
|
-
`Error deleting keys of storage context ${contexts.join(".")}`
|
|
330
|
-
);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
//# sourceMappingURL=FileStorageDriver.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/storage/fs/FileStorageDriver.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAaO;AACP,qBAA2B;AAC3B,sBAA2D;AAC3D,uBAAqB;AAtBrB;AAAA;AAAA;AAAA;AAAA;AAwBA,MAAM,SAAS,IAAI,sBAAO,mBAAmB;AActC,MAAM,0BAA0B,uCAAoD;AAAA,EACvF,OAAgB,KAAK;AAAA,EAErB,aAAa,OAAO,WAA0B,aAAuC;AACjF,UAAM,UAAU,IAAI,kBAAkB,SAAS;AAC/C,QAAI;AACA,YAAM,QAAQ,WAAW;AAAA,IAC7B,SAAS,OAAO;AACZ,YAAM,QAAQ,MAAM,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AACpC,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX;AAAA,EAES;AAAA,EACA;AAAA,EACC,gBAAgB;AAAA,EAC1B,oBAAoB,oBAAI,IAA2B;AAAA,EACnD,SAAuB,CAAC;AAAA,EAExB,YAAY,iBAA0C,QAAQ,OAAO;AACjE,UAAM,OAAO,oBAAoB,YAAY,oBAAoB,SAAY,SAAY,eAAe;AACxG,SAAK,QACD,OAAO,oBAAoB,WACrB,kBACA,oBAAoB,SAClB,KAAK,KAAM,UAAU,OACrB;AACZ,SAAK,SAAS;AAAA,EAClB;AAAA,EAEA,IAAI,cAAc;AACd,WAAO,KAAK;AAAA,EAChB;AAAA,EAEA,MAAe,aAAa;AACxB,QAAI,KAAK,eAAe;AACpB,YAAM,IAAI,4BAAa,8BAA8B;AAAA,IACzD;AACA,UAAM,MAAM,WAAW;AAEvB,QAAI,KAAK,QAAQ;AACb,WAAK,SAAS,CAAC;AACf,gBAAM,oBAAG,KAAK,OAAO,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IACzD;AACA,cAAM,uBAAM,KAAK,OAAO,EAAE,WAAW,KAAK,CAAC;AAE3C,UAAM,QAAQ,UAAM,yBAAQ,KAAK,KAAK;AACtC,eAAW,QAAQ,OAAO;AACtB,UAAI,6BAAc,mBAAmB,IAAI,IAAI,GAAG;AAC5C;AAAA,MACJ;AACA,UAAI,KAAK,SAAS,MAAM,GAAG;AACvB,eAAO,KAAK,+BAA+B,IAAI;AAC/C,kBAAM,wBAAG,uBAAK,KAAK,OAAO,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;AAChD;AAAA,MACJ;AACA,YAAM,QAAQ,mBAAmB,IAAI,EAAE,MAAM,GAAG;AAChD,WAAK,WAAW,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,MAAM,SAAS,CAAC,CAAC;AAAA,IAC/D;AAEA,SAAK,gBAAgB;AAAA,EACzB;AAAA,EAEA,UAAU,UAAoB;AAC1B,QAAI,OAAO,KAAK;AAChB,eAAW,QAAQ,UAAU;AACzB,UAAI,QAAQ,KAAK,UAAU,IAAI,IAAI;AACnC,UAAI,UAAU,QAAW;AACrB,gBAAQ,CAAC;AACT,YAAI,CAAC,KAAK,UAAU;AAChB,eAAK,WAAW,oBAAI,IAAI;AAAA,QAC5B;AACA,aAAK,SAAS,IAAI,MAAM,KAAK;AAAA,MACjC;AACA,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EAEA,WAAW,UAAoB,KAAa;AACxC,UAAM,QAAQ,KAAK,UAAU,QAAQ;AACrC,QAAI,CAAC,MAAM,MAAM;AACb,YAAM,OAAO,oBAAI,IAAI;AAAA,IACzB;AACA,UAAM,KAAK,IAAI,GAAG;AAAA,EACtB;AAAA,EAEA,MAAM,iBAAiB,UAAmB;AAEtC,QACK,aAAa,UAAa,KAAK,kBAAkB,IAAI,QAAQ,KAC7D,aAAa,UAAa,KAAK,kBAAkB,OAAO,GAC3D;AACE,eAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,cAAM,oCAAqB;AAAA,UACvB,aAAa,SAAY,CAAC,KAAK,kBAAkB,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB,OAAO;AAAA,UAChG;AAAA,QACJ;AACA,YAAI,CAAC,KAAK,kBAAkB,MAAM;AAC9B;AAAA,QACJ;AAAA,MACJ;AACA,YAAM,KAAK,iBAAiB;AAAA,IAChC;AAAA,EACJ;AAAA,EAEA,MAAe,QAAQ;AACnB,SAAK,gBAAgB;AACrB,UAAM,KAAK,iBAAiB;AAC5B,UAAM,MAAM,MAAM;AAAA,EACtB;AAAA,EAEA,SAAS,UAAkB;AACvB,eAAO,uBAAK,KAAK,OAAO,QAAQ;AAAA,EACpC;AAAA,EAEA,kBAAkB,UAAoB;AAClC,eAAW,OAAO,UAAU;AACxB,UAAI,CAAC,IAAI,UAAU,IAAI,SAAS,GAAG,GAAG;AAClC,cAAM,IAAI,4BAAa,sEAAsE;AAAA,MACjG;AAAA,IACJ;AACA,WAAO,SAAS,KAAK,GAAG;AAAA,EAC5B;AAAA,EAEA,gBAAgB,UAAoB,KAAa;AAC7C,QAAI,CAAC,IAAI,QAAQ;AACb,YAAM,IAAI,4BAAa,kCAAkC;AAAA,IAC7D;AACA,QAAI,QAAQ,OAAO;AACf,YAAM,IAAI,4BAAa,oDAAoD;AAAA,IAC/E;AACA,UAAM,aAAa,KAAK,kBAAkB,QAAQ;AAClD,UAAM,UAAU,WAAW,SAAS,GAAG,UAAU,IAAI,GAAG,KAAK;AAC7D,WAAO,mBAAmB,OAAO,EAC5B,QAAQ,WAAW,MAAM,EACzB,QAAQ,OAAO,KAAK;AAAA,EAC7B;AAAA,EAEA,MAAe,IAAI,UAAoB,KAA+B;AAClE,UAAM,QAAQ,KAAK,UAAU,QAAQ;AACrC,WAAO,CAAC,CAAC,MAAM,MAAM,IAAI,GAAG;AAAA,EAChC;AAAA,EAEA,MAAM,IAAqC,UAAoB,KAAqC;AAChG,UAAM,WAAW,KAAK,SAAS,KAAK,gBAAgB,UAAU,GAAG,CAAC;AAClE,UAAM,KAAK,iBAAiB,QAAQ;AAEpC,QAAI;AACJ,QAAI;AACA,cAAQ,UAAM,0BAAS,UAAU,MAAM;AAAA,IAC3C,SAAS,OAAY;AACjB,UAAI,MAAM,SAAS,SAAU,QAAO;AACpC,YAAM;AAAA,IACV;AACA,QAAI;AACA,iBAAO,yBAAS,KAAK;AAAA,IACzB,SAAS,OAAO;AACZ,aAAO,MAAM,yCAAyC,GAAG,eAAe,SAAS,KAAK,GAAG,CAAC,EAAE;AAAA,IAChG;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,SAAS,UAAoB,KAA4B;AAC3D,UAAM,WAAW,KAAK,SAAS,KAAK,gBAAgB,UAAU,GAAG,CAAC;AAClE,QAAI,MAAM,KAAK,IAAI,UAAU,GAAG,GAAG;AAC/B,aAAO,UAAM,2BAAW,QAAQ;AAAA,IACpC;AACA,WAAO,IAAI,KAAK;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAoB,UAAoB,KAAa,QAA8C;AACrG,WAAO,KAAK,WAAW,UAAU,KAAK,MAAM;AAAA,EAChD;AAAA,EAIA,MAAM,IACF,UACA,aACA,OACF;AACE,QAAI,OAAO,gBAAgB,UAAU;AACjC,aAAO,KAAK,WAAW,UAAU,iBAAa,uBAAO,KAAK,CAAC;AAAA,IAC/D;AAEA,UAAM,WAAW,IAAI,MAAqB;AAC1C,eAAW,CAAC,KAAKA,MAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACpD,eAAS,KAAK,KAAK,WAAW,UAAU,SAAK,uBAAOA,MAAK,CAAC,CAAC;AAAA,IAC/D;AACA,UAAM,oCAAqB,WAAW,UAAU,mDAAmD;AAAA,EACvG;AAAA;AAAA,EAGA,MAAM,WAAW,UAAoB,KAAa,eAA8D;AAC5G,UAAM,WAAW,KAAK,gBAAgB,UAAU,GAAG;AACnD,QAAI,6BAAc,mBAAmB,IAAI,QAAQ,GAAG;AAChD,YAAM,IAAI;AAAA,QACN,QAAQ,GAAG,iBAAiB,SAAS,KAAK,GAAG,CAAC,4BAA4B,QAAQ;AAAA,MACtF;AAAA,IACJ;AACA,UAAM,UAAU,KAAK,kBAAkB,IAAI,QAAQ;AACnD,QAAI,YAAY,QAAW;AACvB,YAAM;AACN,aAAO,KAAK,WAAW,UAAU,KAAK,aAAa;AAAA,IACvD;AAEA,UAAM,UAAU,KAAK,kBAAkB,KAAK,SAAS,QAAQ,GAAG,aAAa,EAAE,QAAQ,MAAM;AACzF,WAAK,kBAAkB,OAAO,QAAQ;AACtC,WAAK,WAAW,UAAU,GAAG;AAAA,IACjC,CAAC;AACD,SAAK,kBAAkB,IAAI,UAAU,OAAO;AAE5C,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,kBAAkB,UAAkB,eAA8D;AACpG,UAAM,UAAU,GAAG,QAAQ;AAC3B,UAAM,SAAS,UAAM,sBAAK,SAAS,GAAG;AACtC,UAAM,WAAW,yBAAyB;AAC1C,UAAM,SAAS,OAAO,kBAAkB,EAAE,UAAU,WAAW,OAAO,QAAQ,OAAO,KAAK,CAAC;AAE3F,UAAM,EAAE,UAAU,UAAU,SAAS,aAAa,QAAI,8BAAoB;AAC1E,WAAO,GAAG,UAAU,QAAQ;AAC5B,WAAO,GAAG,SAAS,QAAQ;AAE3B,QAAI;AACJ,QAAI;AACA,UAAI,UAAU;AACV,iBAAS,cAAc,UAAU;AACjC,eAAO,MAAM;AACT,gBAAM,EAAE,OAAO,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK;AACjD,cAAI,OAAO;AACP,gBAAI,CAAC,OAAO,MAAM,KAAK,GAAG;AACtB,oBAAM,IAAI,QAAc,aAAW,OAAO,KAAK,SAAS,OAAO,CAAC;AAAA,YACpE;AAAA,UACJ;AACA,cAAI,MAAM;AACN;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,eAAO,MAAM,aAAa;AAAA,MAC9B;AACA,aAAO,IAAI;AAEX,YAAM;AAAA,IACV,UAAE;AACE,UAAI,YAAY,QAAQ;AACpB,YAAI,cAAc,QAAQ;AACtB,iBAAO,YAAY;AAAA,QACvB;AACA,cAAM,cAAc,OAAO;AAAA,MAC/B;AACA,YAAM,OAAO,MAAM;AAAA,IACvB;AAEA,cAAM,wBAAO,SAAS,QAAQ;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,mBAAmB;AACrB,QAAI,QAAQ,aAAa,SAAS;AAG9B;AAAA,IACJ;AACA,UAAM,KAAK,UAAM,sBAAK,KAAK,OAAO,GAAG;AACrC,QAAI;AACA,YAAM,GAAG,KAAK;AAAA,IAClB,SAAS,OAAO;AACZ,aAAO,KAAK,qCAAqC,KAAK,KAAK,IAAI,KAAK;AAAA,IACxE,UAAE;AACE,YAAM,GAAG,MAAM;AAAA,IACnB;AAAA,EACJ;AAAA,EAEA,MAAM,OAAO,UAAoB,KAAa;AAC1C,UAAM,KAAK,IAAI,KAAK,gBAAgB,UAAU,GAAG,GAAG,KAAK,UAAU,QAAQ,GAAG,GAAG;AAAA,EACrF;AAAA,EAEA,MAAM,IAAI,UAAkB,OAAqB,KAAa;AAC1D,UAAM,KAAK,iBAAiB,QAAQ;AACpC,eAAO,oBAAG,KAAK,SAAS,QAAQ,GAAG,EAAE,OAAO,KAAK,CAAC,EAAE,QAAQ,MAAM;AAC9D,YAAM,MAAM,OAAO,GAAG;AAAA,IAC1B,CAAC;AAAA,EACL;AAAA;AAAA,EAGA,MAAM,KAAK,UAAoB;AAC3B,UAAM,QAAQ,KAAK,UAAU,QAAQ;AACrC,WAAO,MAAM,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC;AAAA,EAC3C;AAAA,EAEA,MAAM,OAAO,UAAoB;AAE7B,UAAM,SAAS,CAAC;AAEhB,UAAM,WAAW,IAAI,MAAqB;AAC1C,eAAW,OAAO,MAAM,KAAK,KAAK,QAAQ,GAAG;AACzC,eAAS;AAAA,SACJ,YAAY;AACT,gBAAM,QAAQ,MAAM,KAAK,IAAI,UAAU,GAAG;AAC1C,cAAI,UAAU,QAAW;AACrB,mBAAO,GAAG,IAAI;AAAA,UAClB;AAAA,QACJ,GAAG;AAAA,MACP;AAAA,IACJ;AACA,UAAM,oCAAqB,WAAW,UAAU,mDAAmD;AACnG,WAAO;AAAA,EACX;AAAA,EAEA,SAAS,UAA8B;AACnC,UAAM,QAAQ,KAAK,UAAU,QAAQ;AACrC,WAAO,MAAM,WAAW,CAAC,GAAG,MAAM,SAAS,KAAK,CAAC,IAAI,CAAC;AAAA,EAC1D;AAAA,EAEA,MAAM,SAAS,UAAoB;AAC/B,UAAM,KAAK,iBAAiB;AAC5B,UAAM,SAAS,KAAK,UAAU,SAAS,MAAM,GAAG,EAAE,CAAC;AACnD,UAAM,OAAO,SAAS,SAAS,SAAS,CAAC;AACzC,UAAM,KAAK,mBAAmB,UAAU,QAAQ,IAAI;AAAA,EACxD;AAAA,EAEA,MAAM,mBAAmB,UAAoB,QAAsB,MAAc;AAC7E,UAAM,QAAQ,OAAO,UAAU,IAAI,IAAI;AACvC,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAEA,QAAI,MAAM,UAAU;AAChB,iBAAWC,SAAQ,MAAM,SAAS,KAAK,GAAG;AACtC,cAAM,KAAK,mBAAmB,CAAC,GAAG,UAAUA,KAAI,GAAG,OAAOA,KAAI;AAAA,MAClE;AAAA,IACJ;AAEA,QAAI,MAAM,MAAM;AACZ,YAAM,oCAAqB;AAAA,QACvB,CAAC,GAAG,MAAM,IAAI,EAAE,IAAI,SAAO,KAAK,IAAI,KAAK,gBAAgB,UAAU,GAAG,GAAG,OAAO,GAAG,CAAC;AAAA,QACpF,0CAA0C,SAAS,KAAK,GAAG,CAAC;AAAA,MAChE;AAAA,IACJ;AAAA,EACJ;AACJ;",
|
|
5
|
-
"names": ["value", "name"]
|
|
6
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { BlobStorageDriver, Bytes, type DataNamespace, FilesystemBlobStorageDriver } from "@matter/general";
|
|
7
|
-
/**
|
|
8
|
-
* Blob storage driver using the legacy flat-file format from {@link FileStorageDriver}.
|
|
9
|
-
*
|
|
10
|
-
* All blobs live in a single directory. The filename is the URI-encoded concatenation of context
|
|
11
|
-
* segments and key joined by `.`. Example: contexts `["bin", "fff1", "8000"]` with key `"prod"`
|
|
12
|
-
* becomes the file `bin.fff1.8000.prod` (percent-encoded).
|
|
13
|
-
*/
|
|
14
|
-
export declare class FlatFileBlobStorageDriver extends FilesystemBlobStorageDriver {
|
|
15
|
-
#private;
|
|
16
|
-
static readonly id = "file";
|
|
17
|
-
static create(namespace: DataNamespace, _descriptor: BlobStorageDriver.Descriptor): FlatFileBlobStorageDriver;
|
|
18
|
-
constructor(namespace: DataNamespace);
|
|
19
|
-
get initialized(): boolean;
|
|
20
|
-
initialize(): Promise<void>;
|
|
21
|
-
close(): Promise<void>;
|
|
22
|
-
openBlob(contexts: string[], key: string): Promise<Blob>;
|
|
23
|
-
writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Bytes>): Promise<void>;
|
|
24
|
-
delete(contexts: string[], key: string): Promise<void>;
|
|
25
|
-
has(contexts: string[], key: string): Promise<boolean>;
|
|
26
|
-
keys(contexts: string[]): Promise<string[]>;
|
|
27
|
-
contexts(contexts: string[]): Promise<string[]>;
|
|
28
|
-
clearAll(contexts: string[]): Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=FlatFileBlobStorageDriver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlatFileBlobStorageDriver.d.ts","sourceRoot":"","sources":["../../../../src/storage/fs/FlatFileBlobStorageDriver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,iBAAiB,EACjB,KAAK,EACL,KAAK,aAAa,EAClB,2BAA2B,EAE9B,MAAM,iBAAiB,CAAC;AAKzB;;;;;;GAMG;AACH,qBAAa,yBAA0B,SAAQ,2BAA2B;;IACtE,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU;IAE5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,CAAC,UAAU,GAAG,yBAAyB,CAE5G;IAKD,YAAY,SAAS,EAAE,aAAa,EAGnC;IAED,IAAI,WAAW,YAEd;IAEc,UAAU,kBAIxB;IAEc,KAAK,kBAGnB;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7D;IAGK,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BvG;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;IAEK,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3D;IAIK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYhD;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYpD;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAShD;CAoCJ"}
|