@yydb/light-db 0.0.0 → 0.0.10

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 (230) hide show
  1. package/dist/api/database.d.ts +48 -0
  2. package/dist/api/database.d.ts.map +1 -0
  3. package/dist/api/database.js +120 -0
  4. package/dist/api/database.js.map +1 -0
  5. package/dist/api/index.d.ts +7 -22
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/index.js +5 -52
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/api/schema.d.ts +33 -0
  10. package/dist/api/schema.d.ts.map +1 -0
  11. package/dist/api/schema.js +80 -0
  12. package/dist/api/schema.js.map +1 -0
  13. package/dist/api/transaction.d.ts +26 -0
  14. package/dist/api/transaction.d.ts.map +1 -0
  15. package/dist/api/transaction.js +52 -0
  16. package/dist/api/transaction.js.map +1 -0
  17. package/dist/api/types.d.ts +55 -148
  18. package/dist/api/types.d.ts.map +1 -1
  19. package/dist/api/types.js +6 -5
  20. package/dist/api/types.js.map +1 -1
  21. package/dist/codec/binary.d.ts +196 -0
  22. package/dist/codec/binary.d.ts.map +1 -0
  23. package/dist/codec/binary.js +342 -0
  24. package/dist/codec/binary.js.map +1 -0
  25. package/dist/codec/checksum.d.ts +21 -0
  26. package/dist/codec/checksum.d.ts.map +1 -0
  27. package/dist/codec/checksum.js +46 -0
  28. package/dist/codec/checksum.js.map +1 -0
  29. package/dist/codec/index.d.ts +12 -0
  30. package/dist/codec/index.d.ts.map +1 -0
  31. package/dist/codec/index.js +10 -0
  32. package/dist/codec/index.js.map +1 -0
  33. package/dist/codec/page.d.ts +114 -0
  34. package/dist/codec/page.d.ts.map +1 -0
  35. package/dist/codec/page.js +225 -0
  36. package/dist/codec/page.js.map +1 -0
  37. package/dist/codec/record.d.ts +62 -0
  38. package/dist/codec/record.d.ts.map +1 -0
  39. package/dist/codec/record.js +82 -0
  40. package/dist/codec/record.js.map +1 -0
  41. package/dist/core/broadcast.d.ts +39 -0
  42. package/dist/core/broadcast.d.ts.map +1 -0
  43. package/dist/core/broadcast.js +54 -0
  44. package/dist/core/broadcast.js.map +1 -0
  45. package/dist/core/checkpoint.d.ts +23 -0
  46. package/dist/core/checkpoint.d.ts.map +1 -0
  47. package/dist/core/checkpoint.js +49 -0
  48. package/dist/core/checkpoint.js.map +1 -0
  49. package/dist/core/engine.d.ts +142 -0
  50. package/dist/core/engine.d.ts.map +1 -0
  51. package/dist/core/engine.js +304 -0
  52. package/dist/core/engine.js.map +1 -0
  53. package/dist/core/index.d.ts +17 -0
  54. package/dist/core/index.d.ts.map +1 -0
  55. package/dist/core/index.js +13 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/lease.d.ts +32 -0
  58. package/dist/core/lease.d.ts.map +1 -0
  59. package/dist/core/lease.js +81 -0
  60. package/dist/core/lease.js.map +1 -0
  61. package/dist/core/records.d.ts +49 -0
  62. package/dist/core/records.d.ts.map +1 -0
  63. package/dist/core/records.js +70 -0
  64. package/dist/core/records.js.map +1 -0
  65. package/dist/core/recovery.d.ts +43 -0
  66. package/dist/core/recovery.d.ts.map +1 -0
  67. package/dist/core/recovery.js +99 -0
  68. package/dist/core/recovery.js.map +1 -0
  69. package/dist/core/wal.d.ts +50 -0
  70. package/dist/core/wal.d.ts.map +1 -0
  71. package/dist/core/wal.js +114 -0
  72. package/dist/core/wal.js.map +1 -0
  73. package/dist/errors/index.d.ts +44 -66
  74. package/dist/errors/index.d.ts.map +1 -1
  75. package/dist/errors/index.js +43 -128
  76. package/dist/errors/index.js.map +1 -1
  77. package/dist/index.d.ts +14 -215
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +14 -724
  80. package/dist/index.js.map +1 -1
  81. package/dist/storage/StorageAdapter.d.ts +97 -0
  82. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  83. package/dist/storage/StorageAdapter.js +9 -0
  84. package/dist/storage/StorageAdapter.js.map +1 -0
  85. package/dist/storage/index.d.ts +9 -8
  86. package/dist/storage/index.d.ts.map +1 -1
  87. package/dist/storage/index.js +8 -151
  88. package/dist/storage/index.js.map +1 -1
  89. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +140 -0
  90. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +1 -0
  91. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +403 -0
  92. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +1 -0
  93. package/dist/storage/memory/MemoryStorageAdapter.d.ts +76 -0
  94. package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +1 -0
  95. package/dist/storage/memory/MemoryStorageAdapter.js +212 -0
  96. package/dist/storage/memory/MemoryStorageAdapter.js.map +1 -0
  97. package/dist/storage/opfs/OpfsStorageAdapter.d.ts +141 -0
  98. package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +1 -0
  99. package/dist/storage/opfs/OpfsStorageAdapter.js +400 -0
  100. package/dist/storage/opfs/OpfsStorageAdapter.js.map +1 -0
  101. package/package.json +48 -36
  102. package/readme.md +80 -94
  103. package/dist/api/LightDB.d.ts +0 -194
  104. package/dist/api/LightDB.d.ts.map +0 -1
  105. package/dist/api/LightDB.js +0 -299
  106. package/dist/api/LightDB.js.map +0 -1
  107. package/dist/api/Transaction.d.ts +0 -100
  108. package/dist/api/Transaction.d.ts.map +0 -1
  109. package/dist/api/Transaction.js +0 -263
  110. package/dist/api/Transaction.js.map +0 -1
  111. package/dist/collection/Collection.d.ts +0 -235
  112. package/dist/collection/Collection.d.ts.map +0 -1
  113. package/dist/collection/Collection.js +0 -671
  114. package/dist/collection/Collection.js.map +0 -1
  115. package/dist/collection/QueryBuilder.d.ts +0 -225
  116. package/dist/collection/QueryBuilder.d.ts.map +0 -1
  117. package/dist/collection/QueryBuilder.js +0 -475
  118. package/dist/collection/QueryBuilder.js.map +0 -1
  119. package/dist/collection/QueryParser.d.ts +0 -117
  120. package/dist/collection/QueryParser.d.ts.map +0 -1
  121. package/dist/collection/QueryParser.js +0 -438
  122. package/dist/collection/QueryParser.js.map +0 -1
  123. package/dist/collection/index.d.ts +0 -42
  124. package/dist/collection/index.d.ts.map +0 -1
  125. package/dist/collection/index.js +0 -41
  126. package/dist/collection/index.js.map +0 -1
  127. package/dist/collection/types.d.ts +0 -365
  128. package/dist/collection/types.d.ts.map +0 -1
  129. package/dist/collection/types.js +0 -7
  130. package/dist/collection/types.js.map +0 -1
  131. package/dist/constants/index.d.ts +0 -51
  132. package/dist/constants/index.d.ts.map +0 -1
  133. package/dist/constants/index.js +0 -68
  134. package/dist/constants/index.js.map +0 -1
  135. package/dist/indexes/BPlusTree.d.ts +0 -181
  136. package/dist/indexes/BPlusTree.d.ts.map +0 -1
  137. package/dist/indexes/BPlusTree.js +0 -528
  138. package/dist/indexes/BPlusTree.js.map +0 -1
  139. package/dist/indexes/IndexManager.d.ts +0 -236
  140. package/dist/indexes/IndexManager.d.ts.map +0 -1
  141. package/dist/indexes/IndexManager.js +0 -502
  142. package/dist/indexes/IndexManager.js.map +0 -1
  143. package/dist/indexes/PrimaryIndex.d.ts +0 -240
  144. package/dist/indexes/PrimaryIndex.d.ts.map +0 -1
  145. package/dist/indexes/PrimaryIndex.js +0 -354
  146. package/dist/indexes/PrimaryIndex.js.map +0 -1
  147. package/dist/indexes/SecondaryIndex.d.ts +0 -204
  148. package/dist/indexes/SecondaryIndex.d.ts.map +0 -1
  149. package/dist/indexes/SecondaryIndex.js +0 -480
  150. package/dist/indexes/SecondaryIndex.js.map +0 -1
  151. package/dist/indexes/errors.d.ts +0 -66
  152. package/dist/indexes/errors.d.ts.map +0 -1
  153. package/dist/indexes/errors.js +0 -117
  154. package/dist/indexes/errors.js.map +0 -1
  155. package/dist/indexes/index.d.ts +0 -52
  156. package/dist/indexes/index.d.ts.map +0 -1
  157. package/dist/indexes/index.js +0 -131
  158. package/dist/indexes/index.js.map +0 -1
  159. package/dist/indexes/types.d.ts +0 -246
  160. package/dist/indexes/types.d.ts.map +0 -1
  161. package/dist/indexes/types.js +0 -30
  162. package/dist/indexes/types.js.map +0 -1
  163. package/dist/performance/BatchWALWriter.d.ts +0 -185
  164. package/dist/performance/BatchWALWriter.d.ts.map +0 -1
  165. package/dist/performance/BatchWALWriter.js +0 -490
  166. package/dist/performance/BatchWALWriter.js.map +0 -1
  167. package/dist/performance/ColumnarStorage.d.ts +0 -138
  168. package/dist/performance/ColumnarStorage.d.ts.map +0 -1
  169. package/dist/performance/ColumnarStorage.js +0 -875
  170. package/dist/performance/ColumnarStorage.js.map +0 -1
  171. package/dist/performance/LazyQuery.d.ts +0 -307
  172. package/dist/performance/LazyQuery.d.ts.map +0 -1
  173. package/dist/performance/LazyQuery.js +0 -588
  174. package/dist/performance/LazyQuery.js.map +0 -1
  175. package/dist/performance/OptimizedBuffer.d.ts +0 -375
  176. package/dist/performance/OptimizedBuffer.d.ts.map +0 -1
  177. package/dist/performance/OptimizedBuffer.js +0 -730
  178. package/dist/performance/OptimizedBuffer.js.map +0 -1
  179. package/dist/performance/RWLock.d.ts +0 -260
  180. package/dist/performance/RWLock.d.ts.map +0 -1
  181. package/dist/performance/RWLock.js +0 -570
  182. package/dist/performance/RWLock.js.map +0 -1
  183. package/dist/performance/index.d.ts +0 -41
  184. package/dist/performance/index.d.ts.map +0 -1
  185. package/dist/performance/index.js +0 -162
  186. package/dist/performance/index.js.map +0 -1
  187. package/dist/performance/types.d.ts +0 -247
  188. package/dist/performance/types.d.ts.map +0 -1
  189. package/dist/performance/types.js +0 -26
  190. package/dist/performance/types.js.map +0 -1
  191. package/dist/storage/Checkpoint.d.ts +0 -128
  192. package/dist/storage/Checkpoint.d.ts.map +0 -1
  193. package/dist/storage/Checkpoint.js +0 -251
  194. package/dist/storage/Checkpoint.js.map +0 -1
  195. package/dist/storage/LightFile.d.ts +0 -227
  196. package/dist/storage/LightFile.d.ts.map +0 -1
  197. package/dist/storage/LightFile.js +0 -526
  198. package/dist/storage/LightFile.js.map +0 -1
  199. package/dist/storage/Recovery.d.ts +0 -172
  200. package/dist/storage/Recovery.d.ts.map +0 -1
  201. package/dist/storage/Recovery.js +0 -399
  202. package/dist/storage/Recovery.js.map +0 -1
  203. package/dist/storage/SHMFile.d.ts +0 -243
  204. package/dist/storage/SHMFile.d.ts.map +0 -1
  205. package/dist/storage/SHMFile.js +0 -436
  206. package/dist/storage/SHMFile.js.map +0 -1
  207. package/dist/storage/StorageEngine.d.ts +0 -146
  208. package/dist/storage/StorageEngine.d.ts.map +0 -1
  209. package/dist/storage/StorageEngine.js +0 -353
  210. package/dist/storage/StorageEngine.js.map +0 -1
  211. package/dist/storage/WALFile.d.ts +0 -248
  212. package/dist/storage/WALFile.d.ts.map +0 -1
  213. package/dist/storage/WALFile.js +0 -597
  214. package/dist/storage/WALFile.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -220
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -7
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/utils/binary.d.ts +0 -271
  220. package/dist/utils/binary.d.ts.map +0 -1
  221. package/dist/utils/binary.js +0 -454
  222. package/dist/utils/binary.js.map +0 -1
  223. package/dist/utils/file.d.ts +0 -166
  224. package/dist/utils/file.d.ts.map +0 -1
  225. package/dist/utils/file.js +0 -346
  226. package/dist/utils/file.js.map +0 -1
  227. package/dist/utils/index.d.ts +0 -6
  228. package/dist/utils/index.d.ts.map +0 -1
  229. package/dist/utils/index.js +0 -39
  230. package/dist/utils/index.js.map +0 -1
@@ -0,0 +1,400 @@
1
+ /**
2
+ * OPFS 存储适配器
3
+ *
4
+ * 默认持久化后端。优先使用 sync access handle(需 Worker 上下文),
5
+ * 主线程退化为 `createWritable` + `getFile`,两条路径共享同一套逻辑文件语义。
6
+ *
7
+ * 不把 OPFS 目录结构暴露给上层:上层只认识 `main` / `main.tmp` / `wal` / `shm`。
8
+ */
9
+ import { LightDbError, LightDbErrorCodes } from '../../errors';
10
+ import { STORAGE_FILES } from '../StorageAdapter';
11
+ /** 逻辑文件在 OPFS 中的物理文件名 */
12
+ const PHYSICAL_NAMES = {
13
+ main: 'main.snapshot',
14
+ 'main.tmp': 'main.snapshot.tmp',
15
+ wal: 'wal.log',
16
+ shm: 'wal.index',
17
+ };
18
+ /**
19
+ * 判断当前宿主是否提供 OPFS
20
+ */
21
+ export function isOpfsAvailable() {
22
+ const storage = globalThis.navigator?.storage;
23
+ return typeof storage?.getDirectory === 'function';
24
+ }
25
+ /**
26
+ * OPFS 适配器工厂
27
+ */
28
+ export class OpfsStorageAdapterFactory {
29
+ /** 适配器类型 */
30
+ kind = 'opfs';
31
+ /** 数据持久化 */
32
+ persistent = true;
33
+ root = null;
34
+ /**
35
+ * 打开数据库适配器
36
+ * @param name 数据库名
37
+ */
38
+ async openDatabase(name) {
39
+ const root = await this.getRoot();
40
+ const directory = await this.getDirectory(root, encodeURIComponent(name), 'openDatabase');
41
+ return new OpfsStorageAdapter(name, directory);
42
+ }
43
+ /**
44
+ * 取得 OPFS 根目录
45
+ */
46
+ async getRoot() {
47
+ const storage = globalThis.navigator?.storage;
48
+ if (!storage) {
49
+ throw new LightDbError(LightDbErrorCodes.unsupported, 'OPFS is not available in this environment', {
50
+ operation: 'openDatabase',
51
+ });
52
+ }
53
+ if (!this.root) {
54
+ this.root = storage.getDirectory();
55
+ }
56
+ try {
57
+ return await this.root;
58
+ }
59
+ catch (error) {
60
+ this.root = null;
61
+ throw new LightDbError(LightDbErrorCodes.io, 'failed to open the OPFS root directory', {
62
+ operation: 'openDatabase',
63
+ cause: error,
64
+ });
65
+ }
66
+ }
67
+ /**
68
+ * 取得或创建目录
69
+ * @param parent 父目录
70
+ * @param name 目录名
71
+ * @param operation 操作名
72
+ */
73
+ async getDirectory(parent, name, operation) {
74
+ try {
75
+ return await parent.getDirectoryHandle(name, { create: true });
76
+ }
77
+ catch (error) {
78
+ throw new LightDbError(LightDbErrorCodes.io, `failed to open OPFS directory "${name}"`, {
79
+ operation,
80
+ cause: error,
81
+ });
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * OPFS 存储适配器
87
+ */
88
+ export class OpfsStorageAdapter {
89
+ /** 适配器类型 */
90
+ kind = 'opfs';
91
+ /** 数据持久化 */
92
+ persistent = true;
93
+ name;
94
+ directory;
95
+ closed = false;
96
+ constructor(name, directory) {
97
+ this.name = name;
98
+ this.directory = directory;
99
+ }
100
+ /**
101
+ * 打开逻辑文件
102
+ * @param file 逻辑文件名
103
+ * @param mode 打开模式
104
+ */
105
+ async open(file, mode = 'readwrite') {
106
+ this.assertOpen('storageOpen');
107
+ const physical = PHYSICAL_NAMES[file];
108
+ let handle;
109
+ try {
110
+ handle = await this.directory.getFileHandle(physical, { create: mode === 'readwrite' });
111
+ }
112
+ catch (error) {
113
+ throw new LightDbError(LightDbErrorCodes.io, `failed to open OPFS file "${physical}"`, {
114
+ operation: 'storageOpen',
115
+ cause: error,
116
+ });
117
+ }
118
+ return new OpfsStorageHandle(physical, handle);
119
+ }
120
+ /**
121
+ * 判断文件是否存在
122
+ * @param file 逻辑文件名
123
+ */
124
+ async exists(file) {
125
+ this.assertOpen('storageExists');
126
+ try {
127
+ await this.directory.getFileHandle(PHYSICAL_NAMES[file]);
128
+ return true;
129
+ }
130
+ catch {
131
+ return false;
132
+ }
133
+ }
134
+ /**
135
+ * 删除文件
136
+ * @param file 逻辑文件名
137
+ */
138
+ async delete(file) {
139
+ this.assertOpen('storageDelete');
140
+ try {
141
+ await this.directory.removeEntry(PHYSICAL_NAMES[file]);
142
+ }
143
+ catch (error) {
144
+ if (isNotFound(error)) {
145
+ return;
146
+ }
147
+ throw new LightDbError(LightDbErrorCodes.io, `failed to delete OPFS file "${PHYSICAL_NAMES[file]}"`, {
148
+ operation: 'storageDelete',
149
+ cause: error,
150
+ });
151
+ }
152
+ }
153
+ /**
154
+ * 发布快照:优先 `move`,否则复制后删除
155
+ * @param from 源文件
156
+ * @param to 目标文件
157
+ */
158
+ async rename(from, to) {
159
+ this.assertOpen('storageRename');
160
+ const fromName = PHYSICAL_NAMES[from];
161
+ const toName = PHYSICAL_NAMES[to];
162
+ try {
163
+ const source = await this.directory.getFileHandle(fromName);
164
+ if (typeof source.move === 'function') {
165
+ try {
166
+ await source.move(toName);
167
+ return;
168
+ }
169
+ catch {
170
+ // 宿主声明了 `move` 但拒绝执行(目标已存在或上下文受限),退回复制路径
171
+ }
172
+ }
173
+ }
174
+ catch (error) {
175
+ if (!isNotFound(error)) {
176
+ throw new LightDbError(LightDbErrorCodes.io, `failed to rename OPFS file "${fromName}"`, {
177
+ operation: 'storageRename',
178
+ cause: error,
179
+ });
180
+ }
181
+ }
182
+ const data = await this.readAll(from);
183
+ const target = await this.open(to, 'readwrite');
184
+ try {
185
+ await target.truncate(0);
186
+ await target.write(0, data);
187
+ await target.sync();
188
+ }
189
+ finally {
190
+ await target.close();
191
+ }
192
+ await this.delete(from);
193
+ }
194
+ /**
195
+ * 列出已存在的文件
196
+ */
197
+ async list() {
198
+ this.assertOpen('storageList');
199
+ const present = [];
200
+ for (const file of STORAGE_FILES) {
201
+ if (await this.exists(file)) {
202
+ present.push(file);
203
+ }
204
+ }
205
+ return present;
206
+ }
207
+ /** 关闭适配器 */
208
+ async close() {
209
+ this.closed = true;
210
+ }
211
+ /**
212
+ * 读取逻辑文件全部内容
213
+ * @param file 逻辑文件名
214
+ */
215
+ async readAll(file) {
216
+ const handle = await this.open(file, 'read');
217
+ try {
218
+ return await handle.read(0, await handle.size());
219
+ }
220
+ finally {
221
+ await handle.close();
222
+ }
223
+ }
224
+ /**
225
+ * 断言适配器未关闭
226
+ * @param operation 操作名
227
+ */
228
+ assertOpen(operation) {
229
+ if (this.closed) {
230
+ throw new LightDbError(LightDbErrorCodes.sessionClosed, `OPFS database "${this.name}" is closed`, {
231
+ operation,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ /**
237
+ * OPFS 文件句柄
238
+ */
239
+ class OpfsStorageHandle {
240
+ physical;
241
+ handle;
242
+ syncHandle = null;
243
+ syncProbed = false;
244
+ closed = false;
245
+ constructor(physical, handle) {
246
+ this.physical = physical;
247
+ this.handle = handle;
248
+ }
249
+ /**
250
+ * 读取指定区间
251
+ * @param position 起始位置
252
+ * @param length 期望长度
253
+ */
254
+ async read(position, length) {
255
+ this.assertOpen('read');
256
+ if (length <= 0) {
257
+ return new Uint8Array(0);
258
+ }
259
+ const sync = await this.getSyncHandle();
260
+ if (sync) {
261
+ const buffer = new Uint8Array(length);
262
+ const bytesRead = sync.read(buffer, { at: position });
263
+ return buffer.subarray(0, bytesRead);
264
+ }
265
+ const file = await this.handle.getFile();
266
+ const data = new Uint8Array(await file.arrayBuffer());
267
+ if (position >= data.length) {
268
+ return new Uint8Array(0);
269
+ }
270
+ return data.subarray(position, Math.min(position + length, data.length));
271
+ }
272
+ /**
273
+ * 写入指定位置
274
+ * @param position 起始位置
275
+ * @param data 数据
276
+ */
277
+ async write(position, data) {
278
+ this.assertOpen('write');
279
+ const sync = await this.getSyncHandle();
280
+ if (sync) {
281
+ sync.write(data, { at: position });
282
+ return;
283
+ }
284
+ await this.withWritable(async (writable) => {
285
+ await writable.write({ type: 'write', position, data });
286
+ }, 'write');
287
+ }
288
+ /**
289
+ * 截断文件
290
+ * @param size 目标大小
291
+ */
292
+ async truncate(size) {
293
+ this.assertOpen('truncate');
294
+ const sync = await this.getSyncHandle();
295
+ if (sync) {
296
+ sync.truncate(size);
297
+ return;
298
+ }
299
+ await this.withWritable(async (writable) => {
300
+ await writable.truncate(size);
301
+ }, 'truncate');
302
+ }
303
+ /** 落盘 */
304
+ async sync() {
305
+ this.assertOpen('sync');
306
+ if (this.syncHandle) {
307
+ this.syncHandle.flush();
308
+ }
309
+ // `createWritable` 路径每次写入都会 close 提交,无需额外 flush。
310
+ }
311
+ /** 当前文件大小 */
312
+ async size() {
313
+ this.assertOpen('size');
314
+ if (this.syncHandle) {
315
+ return this.syncHandle.getSize();
316
+ }
317
+ const file = await this.handle.getFile();
318
+ return file.size;
319
+ }
320
+ /** 关闭句柄 */
321
+ async close() {
322
+ if (this.closed) {
323
+ return;
324
+ }
325
+ this.closed = true;
326
+ if (this.syncHandle) {
327
+ this.syncHandle.close();
328
+ this.syncHandle = null;
329
+ }
330
+ }
331
+ /**
332
+ * 尝试取得同步访问句柄
333
+ *
334
+ * 主线程没有 `createSyncAccessHandle` 或调用被拒绝时返回 null,退化到可写流。
335
+ */
336
+ async getSyncHandle() {
337
+ if (this.syncHandle) {
338
+ return this.syncHandle;
339
+ }
340
+ if (this.syncProbed || typeof this.handle.createSyncAccessHandle !== 'function') {
341
+ return null;
342
+ }
343
+ this.syncProbed = true;
344
+ try {
345
+ this.syncHandle = await this.handle.createSyncAccessHandle();
346
+ return this.syncHandle;
347
+ }
348
+ catch {
349
+ return null;
350
+ }
351
+ }
352
+ /**
353
+ * 使用可写流执行一次提交
354
+ * @param action 写入动作
355
+ * @param operation 操作名
356
+ */
357
+ async withWritable(action, operation) {
358
+ let writable;
359
+ try {
360
+ writable = await this.handle.createWritable({ keepExistingData: true });
361
+ }
362
+ catch (error) {
363
+ throw new LightDbError(LightDbErrorCodes.io, `failed to open OPFS writable "${this.physical}"`, {
364
+ operation,
365
+ cause: error,
366
+ });
367
+ }
368
+ try {
369
+ await action(writable);
370
+ }
371
+ catch (error) {
372
+ throw new LightDbError(LightDbErrorCodes.io, `failed to write OPFS file "${this.physical}"`, {
373
+ operation,
374
+ cause: error,
375
+ });
376
+ }
377
+ finally {
378
+ await writable.close();
379
+ }
380
+ }
381
+ /**
382
+ * 断言句柄未关闭
383
+ * @param operation 操作名
384
+ */
385
+ assertOpen(operation) {
386
+ if (this.closed) {
387
+ throw new LightDbError(LightDbErrorCodes.sessionClosed, `OPFS handle "${this.physical}" is closed`, {
388
+ operation,
389
+ });
390
+ }
391
+ }
392
+ }
393
+ /**
394
+ * 判断是否为「文件不存在」错误
395
+ * @param error 错误
396
+ */
397
+ function isNotFound(error) {
398
+ return typeof error === 'object' && error !== null && error.name === 'NotFoundError';
399
+ }
400
+ //# sourceMappingURL=OpfsStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpfsStorageAdapter.js","sourceRoot":"","sources":["../../../src/storage/opfs/OpfsStorageAdapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,37 +1,49 @@
1
1
  {
2
- "name": "@yydb/light-db",
3
- "version": "0.0.0",
4
- "description": "LightDB Storage Engine - A high-performance TypeScript database storage layer",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "files": [
8
- "dist"
9
- ],
10
- "scripts": {
11
- "build": "tsc",
12
- "typecheck": "tsc --noEmit"
13
- },
14
- "keywords": [
15
- "database",
16
- "storage-engine",
17
- "wal",
18
- "typescript"
19
- ],
20
- "license": "MPL-2.0",
21
- "engines": {
22
- "node": ">=14.0.0"
23
- },
24
- "author": "LightDB Team",
25
- "repository": {
26
- "type": "git",
27
- "url": "https://github.com/yy-database/LightDB.ts.git",
28
- "directory": "projects/light-db"
29
- },
30
- "publishConfig": {
31
- "access": "public"
32
- },
33
- "devDependencies": {
34
- "@types/node": "^20.10.0",
35
- "typescript": "^5.3.0"
36
- }
37
- }
2
+ "name": "@yydb/light-db",
3
+ "version": "0.0.10",
4
+ "description": "Light DB — browser-native YYDB database written in pure TypeScript",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "typecheck": "tsc --noEmit",
13
+ "test": "tsx tests/index.ts",
14
+ "test:browser": "tsx tests/browser/run.ts"
15
+ },
16
+ "keywords": [
17
+ "yydb",
18
+ "light-db",
19
+ "database",
20
+ "browser",
21
+ "opfs",
22
+ "wal",
23
+ "typescript"
24
+ ],
25
+ "license": "MPL-2.0",
26
+ "author": "YYDB Contributors",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/yy-database/yydb.git",
30
+ "directory": "projects/packages/light-db"
31
+ },
32
+ "homepage": "https://github.com/yy-database/yydb/tree/dev/projects/packages/light-db#readme",
33
+ "bugs": {
34
+ "url": "https://github.com/yy-database/yydb/issues"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^20.19.43",
41
+ "playwright-core": "^1.64.1",
42
+ "tsx": "^4.23.15",
43
+ "typescript": "^5.3.0"
44
+ },
45
+ "dependencies": {
46
+ "@voml/vos": "^0.0.1",
47
+ "@yydb/yydb-unknown-wasm32": "workspace:*"
48
+ }
49
+ }