@matter/nodejs 0.16.6-alpha.0-20260121-bc6d62766 → 0.16.6

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.
Files changed (150) hide show
  1. package/dist/cjs/config.d.ts +6 -0
  2. package/dist/cjs/config.d.ts.map +1 -1
  3. package/dist/cjs/config.js +14 -1
  4. package/dist/cjs/config.js.map +1 -1
  5. package/dist/cjs/environment/NodeJsEnvironment.d.ts +2 -1
  6. package/dist/cjs/environment/NodeJsEnvironment.d.ts.map +1 -1
  7. package/dist/cjs/environment/NodeJsEnvironment.js +28 -10
  8. package/dist/cjs/environment/NodeJsEnvironment.js.map +1 -1
  9. package/dist/cjs/storage/StorageFactory.d.ts +52 -0
  10. package/dist/cjs/storage/StorageFactory.d.ts.map +1 -0
  11. package/dist/cjs/storage/StorageFactory.js +215 -0
  12. package/dist/cjs/storage/StorageFactory.js.map +6 -0
  13. package/dist/cjs/storage/fs/StorageBackendDisk.d.ts.map +1 -0
  14. package/dist/cjs/storage/{StorageBackendDisk.js.map → fs/StorageBackendDisk.js.map} +1 -1
  15. package/dist/cjs/storage/fs/StorageBackendJsonFile.d.ts.map +1 -0
  16. package/dist/cjs/storage/{StorageBackendJsonFile.js.map → fs/StorageBackendJsonFile.js.map} +1 -1
  17. package/dist/cjs/storage/fs/index.d.ts +8 -0
  18. package/dist/cjs/storage/fs/index.d.ts.map +1 -0
  19. package/dist/cjs/storage/fs/index.js +25 -0
  20. package/dist/cjs/storage/fs/index.js.map +6 -0
  21. package/dist/cjs/storage/index.d.ts +3 -2
  22. package/dist/cjs/storage/index.d.ts.map +1 -1
  23. package/dist/cjs/storage/index.js +3 -2
  24. package/dist/cjs/storage/index.js.map +1 -1
  25. package/dist/cjs/storage/sqlite/SqliteStorage.d.ts +105 -0
  26. package/dist/cjs/storage/sqlite/SqliteStorage.d.ts.map +1 -0
  27. package/dist/cjs/storage/sqlite/SqliteStorage.js +439 -0
  28. package/dist/cjs/storage/sqlite/SqliteStorage.js.map +6 -0
  29. package/dist/cjs/storage/sqlite/SqliteStorageError.d.ts +19 -0
  30. package/dist/cjs/storage/sqlite/SqliteStorageError.d.ts.map +1 -0
  31. package/dist/cjs/storage/sqlite/SqliteStorageError.js +38 -0
  32. package/dist/cjs/storage/sqlite/SqliteStorageError.js.map +6 -0
  33. package/dist/cjs/storage/sqlite/SqliteTypes.d.ts +67 -0
  34. package/dist/cjs/storage/sqlite/SqliteTypes.d.ts.map +1 -0
  35. package/dist/cjs/storage/sqlite/SqliteTypes.js +35 -0
  36. package/dist/cjs/storage/sqlite/SqliteTypes.js.map +6 -0
  37. package/dist/cjs/storage/sqlite/SqliteUtil.d.ts +33 -0
  38. package/dist/cjs/storage/sqlite/SqliteUtil.d.ts.map +1 -0
  39. package/dist/cjs/storage/sqlite/SqliteUtil.js +64 -0
  40. package/dist/cjs/storage/sqlite/SqliteUtil.js.map +6 -0
  41. package/dist/cjs/storage/sqlite/index.d.ts +10 -0
  42. package/dist/cjs/storage/sqlite/index.d.ts.map +1 -0
  43. package/dist/cjs/storage/sqlite/index.js +34 -0
  44. package/dist/cjs/storage/sqlite/index.js.map +6 -0
  45. package/dist/cjs/storage/sqlite/platform/BunSqlite.d.ts +17 -0
  46. package/dist/cjs/storage/sqlite/platform/BunSqlite.d.ts.map +1 -0
  47. package/dist/cjs/storage/sqlite/platform/BunSqlite.js +62 -0
  48. package/dist/cjs/storage/sqlite/platform/BunSqlite.js.map +6 -0
  49. package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.d.ts +12 -0
  50. package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.d.ts.map +1 -0
  51. package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.js +49 -0
  52. package/dist/cjs/storage/sqlite/platform/NodeJsSqlite.js.map +6 -0
  53. package/dist/cjs/storage/sqlite/platform/PlatformSqlite.d.ts +8 -0
  54. package/dist/cjs/storage/sqlite/platform/PlatformSqlite.d.ts.map +1 -0
  55. package/dist/cjs/storage/sqlite/platform/PlatformSqlite.js +54 -0
  56. package/dist/cjs/storage/sqlite/platform/PlatformSqlite.js.map +6 -0
  57. package/dist/cjs/util/runtimeChecks.d.ts +14 -0
  58. package/dist/cjs/util/runtimeChecks.d.ts.map +1 -0
  59. package/dist/cjs/util/runtimeChecks.js +45 -0
  60. package/dist/cjs/util/runtimeChecks.js.map +6 -0
  61. package/dist/esm/config.d.ts +6 -0
  62. package/dist/esm/config.d.ts.map +1 -1
  63. package/dist/esm/config.js +14 -1
  64. package/dist/esm/config.js.map +1 -1
  65. package/dist/esm/environment/NodeJsEnvironment.d.ts +2 -1
  66. package/dist/esm/environment/NodeJsEnvironment.d.ts.map +1 -1
  67. package/dist/esm/environment/NodeJsEnvironment.js +29 -10
  68. package/dist/esm/environment/NodeJsEnvironment.js.map +1 -1
  69. package/dist/esm/storage/StorageFactory.d.ts +52 -0
  70. package/dist/esm/storage/StorageFactory.d.ts.map +1 -0
  71. package/dist/esm/storage/StorageFactory.js +195 -0
  72. package/dist/esm/storage/StorageFactory.js.map +6 -0
  73. package/dist/esm/storage/fs/StorageBackendDisk.d.ts.map +1 -0
  74. package/dist/esm/storage/{StorageBackendDisk.js.map → fs/StorageBackendDisk.js.map} +1 -1
  75. package/dist/esm/storage/fs/StorageBackendJsonFile.d.ts.map +1 -0
  76. package/dist/esm/storage/{StorageBackendJsonFile.js.map → fs/StorageBackendJsonFile.js.map} +1 -1
  77. package/dist/esm/storage/fs/index.d.ts +8 -0
  78. package/dist/esm/storage/fs/index.d.ts.map +1 -0
  79. package/dist/esm/storage/fs/index.js +8 -0
  80. package/dist/esm/storage/fs/index.js.map +6 -0
  81. package/dist/esm/storage/index.d.ts +3 -2
  82. package/dist/esm/storage/index.d.ts.map +1 -1
  83. package/dist/esm/storage/index.js +3 -2
  84. package/dist/esm/storage/index.js.map +1 -1
  85. package/dist/esm/storage/sqlite/SqliteStorage.d.ts +105 -0
  86. package/dist/esm/storage/sqlite/SqliteStorage.d.ts.map +1 -0
  87. package/dist/esm/storage/sqlite/SqliteStorage.js +423 -0
  88. package/dist/esm/storage/sqlite/SqliteStorage.js.map +6 -0
  89. package/dist/esm/storage/sqlite/SqliteStorageError.d.ts +19 -0
  90. package/dist/esm/storage/sqlite/SqliteStorageError.d.ts.map +1 -0
  91. package/dist/esm/storage/sqlite/SqliteStorageError.js +18 -0
  92. package/dist/esm/storage/sqlite/SqliteStorageError.js.map +6 -0
  93. package/dist/esm/storage/sqlite/SqliteTypes.d.ts +67 -0
  94. package/dist/esm/storage/sqlite/SqliteTypes.d.ts.map +1 -0
  95. package/dist/esm/storage/sqlite/SqliteTypes.js +15 -0
  96. package/dist/esm/storage/sqlite/SqliteTypes.js.map +6 -0
  97. package/dist/esm/storage/sqlite/SqliteUtil.d.ts +33 -0
  98. package/dist/esm/storage/sqlite/SqliteUtil.d.ts.map +1 -0
  99. package/dist/esm/storage/sqlite/SqliteUtil.js +44 -0
  100. package/dist/esm/storage/sqlite/SqliteUtil.js.map +6 -0
  101. package/dist/esm/storage/sqlite/index.d.ts +10 -0
  102. package/dist/esm/storage/sqlite/index.d.ts.map +1 -0
  103. package/dist/esm/storage/sqlite/index.js +14 -0
  104. package/dist/esm/storage/sqlite/index.js.map +6 -0
  105. package/dist/esm/storage/sqlite/platform/BunSqlite.d.ts +17 -0
  106. package/dist/esm/storage/sqlite/platform/BunSqlite.d.ts.map +1 -0
  107. package/dist/esm/storage/sqlite/platform/BunSqlite.js +32 -0
  108. package/dist/esm/storage/sqlite/platform/BunSqlite.js.map +6 -0
  109. package/dist/esm/storage/sqlite/platform/NodeJsSqlite.d.ts +12 -0
  110. package/dist/esm/storage/sqlite/platform/NodeJsSqlite.d.ts.map +1 -0
  111. package/dist/esm/storage/sqlite/platform/NodeJsSqlite.js +29 -0
  112. package/dist/esm/storage/sqlite/platform/NodeJsSqlite.js.map +6 -0
  113. package/dist/esm/storage/sqlite/platform/PlatformSqlite.d.ts +8 -0
  114. package/dist/esm/storage/sqlite/platform/PlatformSqlite.d.ts.map +1 -0
  115. package/dist/esm/storage/sqlite/platform/PlatformSqlite.js +24 -0
  116. package/dist/esm/storage/sqlite/platform/PlatformSqlite.js.map +6 -0
  117. package/dist/esm/util/runtimeChecks.d.ts +14 -0
  118. package/dist/esm/util/runtimeChecks.d.ts.map +1 -0
  119. package/dist/esm/util/runtimeChecks.js +25 -0
  120. package/dist/esm/util/runtimeChecks.js.map +6 -0
  121. package/package.json +10 -10
  122. package/src/config.ts +18 -4
  123. package/src/environment/NodeJsEnvironment.ts +41 -12
  124. package/src/net/NodeJsHttpEndpoint.ts +1 -1
  125. package/src/storage/StorageFactory.ts +310 -0
  126. package/src/storage/fs/index.ts +8 -0
  127. package/src/storage/index.ts +3 -2
  128. package/src/storage/sqlite/SqliteStorage.ts +572 -0
  129. package/src/storage/sqlite/SqliteStorageError.ts +23 -0
  130. package/src/storage/sqlite/SqliteTypes.ts +75 -0
  131. package/src/storage/sqlite/SqliteUtil.ts +61 -0
  132. package/src/storage/sqlite/index.ts +10 -0
  133. package/src/storage/sqlite/platform/BunSqlite.ts +40 -0
  134. package/src/storage/sqlite/platform/NodeJsSqlite.ts +35 -0
  135. package/src/storage/sqlite/platform/PlatformSqlite.ts +52 -0
  136. package/src/util/runtimeChecks.ts +31 -0
  137. package/dist/cjs/storage/StorageBackendDisk.d.ts.map +0 -1
  138. package/dist/cjs/storage/StorageBackendJsonFile.d.ts.map +0 -1
  139. package/dist/esm/storage/StorageBackendDisk.d.ts.map +0 -1
  140. package/dist/esm/storage/StorageBackendJsonFile.d.ts.map +0 -1
  141. /package/dist/cjs/storage/{StorageBackendDisk.d.ts → fs/StorageBackendDisk.d.ts} +0 -0
  142. /package/dist/cjs/storage/{StorageBackendDisk.js → fs/StorageBackendDisk.js} +0 -0
  143. /package/dist/cjs/storage/{StorageBackendJsonFile.d.ts → fs/StorageBackendJsonFile.d.ts} +0 -0
  144. /package/dist/cjs/storage/{StorageBackendJsonFile.js → fs/StorageBackendJsonFile.js} +0 -0
  145. /package/dist/esm/storage/{StorageBackendDisk.d.ts → fs/StorageBackendDisk.d.ts} +0 -0
  146. /package/dist/esm/storage/{StorageBackendDisk.js → fs/StorageBackendDisk.js} +0 -0
  147. /package/dist/esm/storage/{StorageBackendJsonFile.d.ts → fs/StorageBackendJsonFile.d.ts} +0 -0
  148. /package/dist/esm/storage/{StorageBackendJsonFile.js → fs/StorageBackendJsonFile.js} +0 -0
  149. /package/src/storage/{StorageBackendDisk.ts → fs/StorageBackendDisk.ts} +0 -0
  150. /package/src/storage/{StorageBackendJsonFile.ts → fs/StorageBackendJsonFile.ts} +0 -0
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type Bytes, type CloneableStorage, type SupportedStorageTypes, Storage } from "@matter/general";
7
+ import type { DatabaseCreator, DatabaseLike, SafeUint8Array } from "./SqliteTypes.js";
8
+ import { SqliteTransaction as Transaction } from "./SqliteTypes.js";
9
+ /**
10
+ * Type of Key-Value store table
11
+ *
12
+ * T means JSON or BLOB type
13
+ */
14
+ type KVStoreType<T extends string | SafeUint8Array = string | SafeUint8Array> = {
15
+ context: string;
16
+ key: string;
17
+ value_type: T extends string ? "json" : "blob";
18
+ value_json: T extends string ? string : null;
19
+ value_blob: T extends SafeUint8Array ? SafeUint8Array : null;
20
+ };
21
+ /**
22
+ * SQLite implementation of `StorageBackendDisk.ts`
23
+ *
24
+ * `DatabaseCreator` is need to use (sqlite).
25
+ *
26
+ * Supports `node:sqlite`, `bun:sqlite`. (maybe also `better-sqlite3` support)
27
+ */
28
+ export declare class SqliteStorage extends Storage implements CloneableStorage {
29
+ #private;
30
+ static readonly memoryPath = ":memory:";
31
+ static readonly defaultTableName = "kvstore";
32
+ protected isInitialized: boolean;
33
+ protected readonly database: DatabaseLike;
34
+ protected readonly dbPath: string;
35
+ protected readonly tableName: string;
36
+ protected readonly clearOnInit: boolean;
37
+ protected readonly databaseCreator: DatabaseCreator;
38
+ /**
39
+ * Create sqlite-based disk
40
+ *
41
+ * @param args.databaseCreator database instance creator
42
+ * @param args.path Database path (treats `null` as `:memory:`, DO NOT input `:memory:` directly)
43
+ * @param args.clear Clear on init
44
+ * @param args.tableName table name
45
+ */
46
+ constructor(args: {
47
+ databaseCreator: DatabaseCreator;
48
+ path: string | null;
49
+ tableName?: string;
50
+ clear?: boolean;
51
+ });
52
+ /**
53
+ * Manual transaction control
54
+ *
55
+ * Use this for explicit transaction management across multiple operations.
56
+ * Internal methods like `set()` will automatically detect and use external transactions.
57
+ *
58
+ * TODO: Sync transaction to native matter.js API
59
+ */
60
+ transaction(mode: Transaction): void;
61
+ protected withAnyTransaction<T>(callback: () => T): T;
62
+ get initialized(): boolean;
63
+ initialize(): Promise<void>;
64
+ clone(): Storage;
65
+ close(): void;
66
+ get<T extends SupportedStorageTypes>(contexts: string[], key: string): T | null | undefined;
67
+ protected getRawAll(): KVStoreType<string | SafeUint8Array>[];
68
+ set(contexts: string[], key: string, value: SupportedStorageTypes): void;
69
+ set(contexts: string[], values: Record<string, SupportedStorageTypes>): void;
70
+ /**
71
+ * Set [contexts, key] to value
72
+ * @param contexts Context
73
+ * @param key Key
74
+ * @param value Value
75
+ * @returns
76
+ */
77
+ protected setValue(contexts: string[], key: string, value: string): void;
78
+ /**
79
+ * Set Raw data. (for copy)
80
+ */
81
+ protected setRaw(rawData: KVStoreType[]): void;
82
+ delete(contexts: string[], key: string): void;
83
+ keys(contexts: string[]): string[];
84
+ values(contexts: string[]): Record<string, SupportedStorageTypes>;
85
+ /**
86
+ * Return sub contexts of context
87
+ * (search nested depth, return 1 depth of them)
88
+ * @param contexts context path
89
+ * @returns sub contexts
90
+ */
91
+ contexts(contexts: string[]): string[];
92
+ /**
93
+ * Should be implement to platform specific class
94
+ * when `completely = true`
95
+ *
96
+ * basic cleanup query for here.
97
+ */
98
+ clear(_completely?: boolean): Promise<void>;
99
+ clearAll(contexts: string[]): void;
100
+ has(contexts: string[], key: string): boolean;
101
+ openBlob(contexts: string[], key: string): Blob;
102
+ writeBlobFromStream(contexts: string[], key: string, stream: ReadableStream<Bytes>): Promise<void>;
103
+ }
104
+ export {};
105
+ //# sourceMappingURL=SqliteStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteStorage.d.ts","sourceRoot":"","sources":["../../../../src/storage/sqlite/SqliteStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,439 @@
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 SqliteStorage_exports = {};
20
+ __export(SqliteStorage_exports, {
21
+ SqliteStorage: () => SqliteStorage
22
+ });
23
+ module.exports = __toCommonJS(SqliteStorage_exports);
24
+ var import_general = require("@matter/general");
25
+ var import_SqliteStorageError = require("./SqliteStorageError.js");
26
+ var import_SqliteTypes = require("./SqliteTypes.js");
27
+ var import_SqliteUtil = require("./SqliteUtil.js");
28
+ /**
29
+ * @license
30
+ * Copyright 2022-2026 Matter.js Authors
31
+ * SPDX-License-Identifier: Apache-2.0
32
+ */
33
+ class SqliteStorage extends import_general.Storage {
34
+ static memoryPath = ":memory:";
35
+ static defaultTableName = "kvstore";
36
+ isInitialized = false;
37
+ #inTransaction = false;
38
+ // internal values
39
+ database;
40
+ dbPath;
41
+ tableName;
42
+ clearOnInit;
43
+ databaseCreator;
44
+ // queries
45
+ #queryInit;
46
+ #queryGet;
47
+ #queryGetRaw;
48
+ #querySet;
49
+ #querySetRaw;
50
+ #queryDelete;
51
+ #queryKeys;
52
+ #queryValues;
53
+ #queryContextSub;
54
+ #queryClear;
55
+ #queryClearAll;
56
+ #queryHas;
57
+ #queryOpenBlob;
58
+ #queryWriteBlob;
59
+ /**
60
+ * Create sqlite-based disk
61
+ *
62
+ * @param args.databaseCreator database instance creator
63
+ * @param args.path Database path (treats `null` as `:memory:`, DO NOT input `:memory:` directly)
64
+ * @param args.clear Clear on init
65
+ * @param args.tableName table name
66
+ */
67
+ constructor(args) {
68
+ super();
69
+ const { databaseCreator, path, tableName, clear } = args;
70
+ this.dbPath = path === null ? SqliteStorage.memoryPath : path;
71
+ this.databaseCreator = databaseCreator;
72
+ this.database = databaseCreator(this.dbPath);
73
+ this.tableName = tableName ?? SqliteStorage.defaultTableName;
74
+ this.clearOnInit = clear ?? false;
75
+ this.#queryInit = this.database.prepare(`
76
+ CREATE TABLE IF NOT EXISTS ${this.tableName} (
77
+ context TEXT NOT NULL,
78
+ key TEXT NOT NULL,
79
+ value_type TEXT CHECK(value_type IN ('json', 'blob')),
80
+ value_json TEXT,
81
+ value_blob BLOB,
82
+ CONSTRAINT PKPair PRIMARY KEY (context, key)
83
+ ) STRICT
84
+ `);
85
+ this.#queryInit.run();
86
+ this.#queryGet = this.database.prepare(`
87
+ SELECT value_json FROM ${this.tableName} WHERE
88
+ context=$context AND
89
+ key=$key AND
90
+ value_type='json'
91
+ `);
92
+ this.#queryGetRaw = this.database.prepare(`
93
+ SELECT * FROM ${this.tableName}
94
+ `);
95
+ this.#queryHas = this.database.prepare(`
96
+ SELECT EXISTS(
97
+ SELECT 1 FROM ${this.tableName}
98
+ WHERE context=$context AND key=$key
99
+ ) as has_record
100
+ `);
101
+ this.#querySet = this.database.prepare(`
102
+ INSERT INTO ${this.tableName}
103
+ (context, key, value_type, value_json, value_blob)
104
+ VALUES($context, $key, 'json', $value_json, NULL)
105
+ ON CONFLICT(context, key)
106
+ DO UPDATE SET
107
+ value_type = 'json',
108
+ value_json = excluded.value_json,
109
+ value_blob = NULL
110
+ `);
111
+ this.#querySetRaw = this.database.prepare(`
112
+ INSERT INTO ${this.tableName}
113
+ (context, key, value_type, value_json, value_blob)
114
+ VALUES($context, $key, $value_type, $value_json, $value_blob)
115
+ ON CONFLICT(context, key)
116
+ DO UPDATE SET
117
+ value_type = excluded.value_type,
118
+ value_json = excluded.value_json,
119
+ value_blob = excluded.value_blob
120
+ `);
121
+ this.#queryDelete = this.database.prepare(`
122
+ DELETE FROM ${this.tableName} WHERE
123
+ context=$context AND
124
+ key=$key
125
+ `);
126
+ this.#queryClear = this.database.prepare(`
127
+ DELETE FROM ${this.tableName}
128
+ `);
129
+ this.#queryClearAll = this.database.prepare(`
130
+ DELETE FROM ${this.tableName} WHERE
131
+ context=$context OR context GLOB $contextGlob
132
+ `);
133
+ this.#queryKeys = this.database.prepare(`
134
+ SELECT DISTINCT key FROM ${this.tableName} WHERE
135
+ context=$context
136
+ `);
137
+ this.#queryValues = this.database.prepare(`
138
+ SELECT key, value_json FROM ${this.tableName} WHERE
139
+ context=$context AND
140
+ value_type='json'
141
+ `);
142
+ this.#queryContextSub = this.database.prepare(`
143
+ SELECT DISTINCT context FROM ${this.tableName} WHERE
144
+ context GLOB $contextGlob
145
+ `);
146
+ this.#queryOpenBlob = this.database.prepare(`
147
+ SELECT value_type, value_json, value_blob FROM ${this.tableName} WHERE
148
+ context=$context AND
149
+ key=$key
150
+ `);
151
+ this.#queryWriteBlob = this.database.prepare(`
152
+ INSERT INTO ${this.tableName}
153
+ (context, key, value_type, value_json, value_blob)
154
+ VALUES($context, $key, 'blob', NULL, $value_blob)
155
+ ON CONFLICT(context, key)
156
+ DO UPDATE SET
157
+ value_type = 'blob',
158
+ value_json = NULL,
159
+ value_blob = excluded.value_blob
160
+ `);
161
+ }
162
+ /**
163
+ * Manual transaction control
164
+ *
165
+ * Use this for explicit transaction management across multiple operations.
166
+ * Internal methods like `set()` will automatically detect and use external transactions.
167
+ *
168
+ * TODO: Sync transaction to native matter.js API
169
+ */
170
+ transaction(mode) {
171
+ switch (mode) {
172
+ case import_SqliteTypes.SqliteTransaction.BEGIN:
173
+ if (this.#inTransaction) {
174
+ throw new import_SqliteStorageError.SqliteStorageError("transaction", "BEGIN", "Transaction is in progress.");
175
+ }
176
+ this.database.exec("BEGIN IMMEDIATE TRANSACTION");
177
+ this.#inTransaction = true;
178
+ break;
179
+ case import_SqliteTypes.SqliteTransaction.COMMIT:
180
+ if (!this.#inTransaction) {
181
+ throw new import_SqliteStorageError.SqliteStorageError("transaction", "COMMIT", "No transaction in progress.");
182
+ }
183
+ this.database.exec("COMMIT");
184
+ this.#inTransaction = false;
185
+ break;
186
+ case import_SqliteTypes.SqliteTransaction.ROLLBACK:
187
+ if (!this.#inTransaction) {
188
+ return;
189
+ }
190
+ this.database.exec("ROLLBACK");
191
+ this.#inTransaction = false;
192
+ break;
193
+ }
194
+ }
195
+ withAnyTransaction(callback) {
196
+ if (this.#inTransaction) {
197
+ return callback();
198
+ }
199
+ this.transaction(import_SqliteTypes.SqliteTransaction.BEGIN);
200
+ try {
201
+ const result = callback();
202
+ this.transaction(import_SqliteTypes.SqliteTransaction.COMMIT);
203
+ return result;
204
+ } catch (err) {
205
+ this.transaction(import_SqliteTypes.SqliteTransaction.ROLLBACK);
206
+ throw err;
207
+ }
208
+ }
209
+ get initialized() {
210
+ return this.isInitialized;
211
+ }
212
+ async initialize() {
213
+ if (this.clearOnInit) {
214
+ await this.clear(false);
215
+ }
216
+ this.isInitialized = true;
217
+ }
218
+ clone() {
219
+ const clonedStorage = new SqliteStorage({
220
+ databaseCreator: this.databaseCreator,
221
+ path: null,
222
+ tableName: this.tableName,
223
+ clear: false
224
+ });
225
+ const rawData = this.getRawAll();
226
+ clonedStorage.setRaw(rawData);
227
+ clonedStorage.isInitialized = true;
228
+ return clonedStorage;
229
+ }
230
+ close() {
231
+ this.isInitialized = false;
232
+ this.database.close();
233
+ }
234
+ get(contexts, key) {
235
+ const queryResult = this.#queryGet.get((0, import_SqliteUtil.buildContextKeyPair)(contexts, key));
236
+ if (queryResult == null) {
237
+ return void 0;
238
+ }
239
+ if (queryResult.value_json === null) {
240
+ this.delete(contexts, key);
241
+ throw new import_SqliteStorageError.SqliteStorageError(
242
+ "get",
243
+ (0, import_SqliteUtil.buildContextKeyLog)(contexts, key),
244
+ "path has null json-value! (expected non-null value)"
245
+ );
246
+ }
247
+ return (0, import_general.fromJson)(queryResult.value_json);
248
+ }
249
+ getRawAll() {
250
+ return this.#queryGetRaw.all().filter((v) => v != null);
251
+ }
252
+ set(contexts, keyOrValues, value) {
253
+ if (typeof keyOrValues === "string") {
254
+ if (value === void 0) {
255
+ throw new import_SqliteStorageError.SqliteStorageError(
256
+ "set",
257
+ (0, import_SqliteUtil.buildContextKeyLog)(contexts, keyOrValues),
258
+ "Use null instead of undefined if you want to store null value!"
259
+ );
260
+ }
261
+ this.setValue(contexts, keyOrValues, (0, import_general.toJson)(value));
262
+ } else {
263
+ this.withAnyTransaction(() => {
264
+ for (const [key, value2] of Object.entries(keyOrValues)) {
265
+ this.setValue(contexts, key, (0, import_general.toJson)(value2 ?? null));
266
+ }
267
+ });
268
+ }
269
+ }
270
+ /**
271
+ * Set [contexts, key] to value
272
+ * @param contexts Context
273
+ * @param key Key
274
+ * @param value Value
275
+ * @returns
276
+ */
277
+ setValue(contexts, key, value) {
278
+ const { changes } = this.#querySet.run({
279
+ ...(0, import_SqliteUtil.buildContextKeyPair)(contexts, key),
280
+ value_json: value
281
+ });
282
+ if (Number(changes) <= 0) {
283
+ throw new import_SqliteStorageError.SqliteStorageError(
284
+ "set",
285
+ (0, import_SqliteUtil.buildContextKeyLog)(contexts, key),
286
+ `Something went wrong! Value wasn't changed.`
287
+ );
288
+ }
289
+ }
290
+ /**
291
+ * Set Raw data. (for copy)
292
+ */
293
+ setRaw(rawData) {
294
+ if (rawData.length <= 0) {
295
+ return;
296
+ }
297
+ if (rawData.length === 1) {
298
+ const raw = rawData[0];
299
+ const { changes } = this.#querySetRaw.run({
300
+ context: raw.context,
301
+ key: raw.key,
302
+ value_type: raw.value_type,
303
+ value_json: raw.value_json,
304
+ value_blob: raw.value_blob
305
+ });
306
+ if (Number(changes) <= 0) {
307
+ throw new import_SqliteStorageError.SqliteStorageError(
308
+ "setraw",
309
+ `${raw.context}$${raw.key}`,
310
+ `Something went wrong! Value wasn't changed.`
311
+ );
312
+ }
313
+ return;
314
+ }
315
+ this.withAnyTransaction(() => {
316
+ for (const raw of rawData) {
317
+ const { changes } = this.#querySetRaw.run({
318
+ context: raw.context,
319
+ key: raw.key,
320
+ value_type: raw.value_type,
321
+ value_json: raw.value_json,
322
+ value_blob: raw.value_blob
323
+ });
324
+ if (Number(changes) <= 0) {
325
+ throw new import_SqliteStorageError.SqliteStorageError(
326
+ "setraw",
327
+ `${raw.context}$${raw.key}`,
328
+ `Something went wrong! Value wasn't changed.`
329
+ );
330
+ }
331
+ }
332
+ });
333
+ }
334
+ delete(contexts, key) {
335
+ this.#queryDelete.run((0, import_SqliteUtil.buildContextKeyPair)(contexts, key));
336
+ }
337
+ keys(contexts) {
338
+ const queryResults = this.#queryKeys.all({
339
+ context: (0, import_SqliteUtil.buildContextPath)(contexts)
340
+ }).filter((v) => v != null);
341
+ return queryResults.map((v) => v.key);
342
+ }
343
+ values(contexts) {
344
+ const queryResults = this.#queryValues.all({
345
+ context: (0, import_SqliteUtil.buildContextPath)(contexts)
346
+ }).filter((v) => v != null);
347
+ const record = /* @__PURE__ */ Object.create(null);
348
+ for (const element of queryResults) {
349
+ record[element.key] = (0, import_general.fromJson)(element.value_json);
350
+ }
351
+ return record;
352
+ }
353
+ /**
354
+ * Return sub contexts of context
355
+ * (search nested depth, return 1 depth of them)
356
+ * @param contexts context path
357
+ * @returns sub contexts
358
+ */
359
+ contexts(contexts) {
360
+ const parentCtx = (0, import_SqliteUtil.buildContextPath)(contexts);
361
+ let subContexts;
362
+ if (contexts.length === 0) {
363
+ const allContexts = this.#queryContextSub.all({ contextGlob: "*" }).filter((v) => v != null);
364
+ subContexts = allContexts.map((v) => {
365
+ const firstDotIndex = v.context.indexOf(".");
366
+ if (firstDotIndex < 0) {
367
+ return v.context;
368
+ }
369
+ return v.context.substring(0, firstDotIndex);
370
+ });
371
+ } else {
372
+ const allSubContexts = this.#queryContextSub.all({
373
+ contextGlob: (0, import_SqliteUtil.escapeGlob)(parentCtx) + ".*"
374
+ }).filter((v) => v != null);
375
+ subContexts = allSubContexts.map((v) => {
376
+ const subKey = v.context.substring(parentCtx.length + 1);
377
+ const dotIndex = subKey.indexOf(".");
378
+ if (dotIndex < 0) {
379
+ return subKey;
380
+ }
381
+ return subKey.substring(0, dotIndex);
382
+ });
383
+ }
384
+ return [...new Set(subContexts.filter((c) => c != null && c.trim().length > 0))];
385
+ }
386
+ /**
387
+ * Should be implement to platform specific class
388
+ * when `completely = true`
389
+ *
390
+ * basic cleanup query for here.
391
+ */
392
+ async clear(_completely) {
393
+ this.#queryClear.run();
394
+ }
395
+ clearAll(contexts) {
396
+ if (contexts.length === 0) {
397
+ return;
398
+ }
399
+ const contextPath = (0, import_SqliteUtil.buildContextPath)(contexts);
400
+ this.#queryClearAll.run({
401
+ context: contextPath,
402
+ contextGlob: (0, import_SqliteUtil.escapeGlob)(contextPath) + ".*"
403
+ });
404
+ }
405
+ has(contexts, key) {
406
+ const result = this.#queryHas.get((0, import_SqliteUtil.buildContextKeyPair)(contexts, key));
407
+ return result?.has_record === 1;
408
+ }
409
+ openBlob(contexts, key) {
410
+ const queryResult = this.#queryOpenBlob.get((0, import_SqliteUtil.buildContextKeyPair)(contexts, key));
411
+ if (queryResult == null) {
412
+ return new Blob();
413
+ }
414
+ if (queryResult.value_type === "blob" && queryResult.value_blob != null) {
415
+ return new Blob([new Uint8Array(queryResult.value_blob)]);
416
+ }
417
+ if (queryResult.value_type === "json" && queryResult.value_json != null) {
418
+ return new Blob([queryResult.value_json]);
419
+ }
420
+ this.delete(contexts, key);
421
+ return new Blob();
422
+ }
423
+ async writeBlobFromStream(contexts, key, stream) {
424
+ const arrayBuffer = await new Response(stream).arrayBuffer();
425
+ const bytes = new Uint8Array(arrayBuffer);
426
+ const queryResult = this.#queryWriteBlob.run({
427
+ ...(0, import_SqliteUtil.buildContextKeyPair)(contexts, key),
428
+ value_blob: bytes
429
+ });
430
+ if (Number(queryResult.changes) <= 0) {
431
+ throw new import_SqliteStorageError.SqliteStorageError(
432
+ "writeBlob",
433
+ (0, import_SqliteUtil.buildContextKeyLog)(contexts, key),
434
+ `Something went wrong! Value wasn't changed.`
435
+ );
436
+ }
437
+ }
438
+ }
439
+ //# sourceMappingURL=SqliteStorage.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/storage/sqlite/SqliteStorage.ts"],
4
+ "mappings": "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",
5
+ "names": ["Transaction", "value"]
6
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { StorageError } from "@matter/general";
7
+ /**
8
+ * StorageError with
9
+ *
10
+ * `methodType`: Method type of Storage
11
+ * `contextKey`: Context$Key
12
+ */
13
+ export declare class SqliteStorageError extends StorageError {
14
+ readonly methodType: string;
15
+ readonly contextKey: string;
16
+ readonly mainReason: string;
17
+ constructor(methodType: string, contextKey: string, mainReason: string);
18
+ }
19
+ //# sourceMappingURL=SqliteStorageError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteStorageError.d.ts","sourceRoot":"","sources":["../../../../src/storage/sqlite/SqliteStorageError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;aAE5B,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;gBAFlB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM;CAIzC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var SqliteStorageError_exports = {};
20
+ __export(SqliteStorageError_exports, {
21
+ SqliteStorageError: () => SqliteStorageError
22
+ });
23
+ module.exports = __toCommonJS(SqliteStorageError_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 SqliteStorageError extends import_general.StorageError {
31
+ constructor(methodType, contextKey, mainReason) {
32
+ super(`[${methodType.toUpperCase()}] ${contextKey}: ${mainReason}`);
33
+ this.methodType = methodType;
34
+ this.contextKey = contextKey;
35
+ this.mainReason = mainReason;
36
+ }
37
+ }
38
+ //# sourceMappingURL=SqliteStorageError.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/storage/sqlite/SqliteStorageError.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA6B;AAN7B;AAAA;AAAA;AAAA;AAAA;AAcO,MAAM,2BAA2B,4BAAa;AAAA,EACjD,YACoB,YACA,YACA,YAClB;AACE,UAAM,IAAI,WAAW,YAAY,CAAC,KAAK,UAAU,KAAK,UAAU,EAAE;AAJlD;AACA;AACA;AAAA,EAGpB;AACJ;",
5
+ "names": []
6
+ }