@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.
- package/dist/api/database.d.ts +48 -0
- package/dist/api/database.d.ts.map +1 -0
- package/dist/api/database.js +120 -0
- package/dist/api/database.js.map +1 -0
- package/dist/api/index.d.ts +7 -22
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +5 -52
- package/dist/api/index.js.map +1 -1
- package/dist/api/schema.d.ts +33 -0
- package/dist/api/schema.d.ts.map +1 -0
- package/dist/api/schema.js +80 -0
- package/dist/api/schema.js.map +1 -0
- package/dist/api/transaction.d.ts +26 -0
- package/dist/api/transaction.d.ts.map +1 -0
- package/dist/api/transaction.js +52 -0
- package/dist/api/transaction.js.map +1 -0
- package/dist/api/types.d.ts +55 -148
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js +6 -5
- package/dist/api/types.js.map +1 -1
- package/dist/codec/binary.d.ts +196 -0
- package/dist/codec/binary.d.ts.map +1 -0
- package/dist/codec/binary.js +342 -0
- package/dist/codec/binary.js.map +1 -0
- package/dist/codec/checksum.d.ts +21 -0
- package/dist/codec/checksum.d.ts.map +1 -0
- package/dist/codec/checksum.js +46 -0
- package/dist/codec/checksum.js.map +1 -0
- package/dist/codec/index.d.ts +12 -0
- package/dist/codec/index.d.ts.map +1 -0
- package/dist/codec/index.js +10 -0
- package/dist/codec/index.js.map +1 -0
- package/dist/codec/page.d.ts +114 -0
- package/dist/codec/page.d.ts.map +1 -0
- package/dist/codec/page.js +225 -0
- package/dist/codec/page.js.map +1 -0
- package/dist/codec/record.d.ts +62 -0
- package/dist/codec/record.d.ts.map +1 -0
- package/dist/codec/record.js +82 -0
- package/dist/codec/record.js.map +1 -0
- package/dist/core/broadcast.d.ts +39 -0
- package/dist/core/broadcast.d.ts.map +1 -0
- package/dist/core/broadcast.js +54 -0
- package/dist/core/broadcast.js.map +1 -0
- package/dist/core/checkpoint.d.ts +23 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +49 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/engine.d.ts +142 -0
- package/dist/core/engine.d.ts.map +1 -0
- package/dist/core/engine.js +304 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lease.d.ts +32 -0
- package/dist/core/lease.d.ts.map +1 -0
- package/dist/core/lease.js +81 -0
- package/dist/core/lease.js.map +1 -0
- package/dist/core/records.d.ts +49 -0
- package/dist/core/records.d.ts.map +1 -0
- package/dist/core/records.js +70 -0
- package/dist/core/records.js.map +1 -0
- package/dist/core/recovery.d.ts +43 -0
- package/dist/core/recovery.d.ts.map +1 -0
- package/dist/core/recovery.js +99 -0
- package/dist/core/recovery.js.map +1 -0
- package/dist/core/wal.d.ts +50 -0
- package/dist/core/wal.d.ts.map +1 -0
- package/dist/core/wal.js +114 -0
- package/dist/core/wal.js.map +1 -0
- package/dist/errors/index.d.ts +44 -66
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +43 -128
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +14 -215
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -724
- package/dist/index.js.map +1 -1
- package/dist/storage/StorageAdapter.d.ts +97 -0
- package/dist/storage/StorageAdapter.d.ts.map +1 -0
- package/dist/storage/StorageAdapter.js +9 -0
- package/dist/storage/StorageAdapter.js.map +1 -0
- package/dist/storage/index.d.ts +9 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +8 -151
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +140 -0
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +1 -0
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +403 -0
- package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +1 -0
- package/dist/storage/memory/MemoryStorageAdapter.d.ts +76 -0
- package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +1 -0
- package/dist/storage/memory/MemoryStorageAdapter.js +212 -0
- package/dist/storage/memory/MemoryStorageAdapter.js.map +1 -0
- package/dist/storage/opfs/OpfsStorageAdapter.d.ts +141 -0
- package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +1 -0
- package/dist/storage/opfs/OpfsStorageAdapter.js +400 -0
- package/dist/storage/opfs/OpfsStorageAdapter.js.map +1 -0
- package/package.json +48 -36
- package/readme.md +80 -94
- package/dist/api/LightDB.d.ts +0 -194
- package/dist/api/LightDB.d.ts.map +0 -1
- package/dist/api/LightDB.js +0 -299
- package/dist/api/LightDB.js.map +0 -1
- package/dist/api/Transaction.d.ts +0 -100
- package/dist/api/Transaction.d.ts.map +0 -1
- package/dist/api/Transaction.js +0 -263
- package/dist/api/Transaction.js.map +0 -1
- package/dist/collection/Collection.d.ts +0 -235
- package/dist/collection/Collection.d.ts.map +0 -1
- package/dist/collection/Collection.js +0 -671
- package/dist/collection/Collection.js.map +0 -1
- package/dist/collection/QueryBuilder.d.ts +0 -225
- package/dist/collection/QueryBuilder.d.ts.map +0 -1
- package/dist/collection/QueryBuilder.js +0 -475
- package/dist/collection/QueryBuilder.js.map +0 -1
- package/dist/collection/QueryParser.d.ts +0 -117
- package/dist/collection/QueryParser.d.ts.map +0 -1
- package/dist/collection/QueryParser.js +0 -438
- package/dist/collection/QueryParser.js.map +0 -1
- package/dist/collection/index.d.ts +0 -42
- package/dist/collection/index.d.ts.map +0 -1
- package/dist/collection/index.js +0 -41
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/types.d.ts +0 -365
- package/dist/collection/types.d.ts.map +0 -1
- package/dist/collection/types.js +0 -7
- package/dist/collection/types.js.map +0 -1
- package/dist/constants/index.d.ts +0 -51
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js +0 -68
- package/dist/constants/index.js.map +0 -1
- package/dist/indexes/BPlusTree.d.ts +0 -181
- package/dist/indexes/BPlusTree.d.ts.map +0 -1
- package/dist/indexes/BPlusTree.js +0 -528
- package/dist/indexes/BPlusTree.js.map +0 -1
- package/dist/indexes/IndexManager.d.ts +0 -236
- package/dist/indexes/IndexManager.d.ts.map +0 -1
- package/dist/indexes/IndexManager.js +0 -502
- package/dist/indexes/IndexManager.js.map +0 -1
- package/dist/indexes/PrimaryIndex.d.ts +0 -240
- package/dist/indexes/PrimaryIndex.d.ts.map +0 -1
- package/dist/indexes/PrimaryIndex.js +0 -354
- package/dist/indexes/PrimaryIndex.js.map +0 -1
- package/dist/indexes/SecondaryIndex.d.ts +0 -204
- package/dist/indexes/SecondaryIndex.d.ts.map +0 -1
- package/dist/indexes/SecondaryIndex.js +0 -480
- package/dist/indexes/SecondaryIndex.js.map +0 -1
- package/dist/indexes/errors.d.ts +0 -66
- package/dist/indexes/errors.d.ts.map +0 -1
- package/dist/indexes/errors.js +0 -117
- package/dist/indexes/errors.js.map +0 -1
- package/dist/indexes/index.d.ts +0 -52
- package/dist/indexes/index.d.ts.map +0 -1
- package/dist/indexes/index.js +0 -131
- package/dist/indexes/index.js.map +0 -1
- package/dist/indexes/types.d.ts +0 -246
- package/dist/indexes/types.d.ts.map +0 -1
- package/dist/indexes/types.js +0 -30
- package/dist/indexes/types.js.map +0 -1
- package/dist/performance/BatchWALWriter.d.ts +0 -185
- package/dist/performance/BatchWALWriter.d.ts.map +0 -1
- package/dist/performance/BatchWALWriter.js +0 -490
- package/dist/performance/BatchWALWriter.js.map +0 -1
- package/dist/performance/ColumnarStorage.d.ts +0 -138
- package/dist/performance/ColumnarStorage.d.ts.map +0 -1
- package/dist/performance/ColumnarStorage.js +0 -875
- package/dist/performance/ColumnarStorage.js.map +0 -1
- package/dist/performance/LazyQuery.d.ts +0 -307
- package/dist/performance/LazyQuery.d.ts.map +0 -1
- package/dist/performance/LazyQuery.js +0 -588
- package/dist/performance/LazyQuery.js.map +0 -1
- package/dist/performance/OptimizedBuffer.d.ts +0 -375
- package/dist/performance/OptimizedBuffer.d.ts.map +0 -1
- package/dist/performance/OptimizedBuffer.js +0 -730
- package/dist/performance/OptimizedBuffer.js.map +0 -1
- package/dist/performance/RWLock.d.ts +0 -260
- package/dist/performance/RWLock.d.ts.map +0 -1
- package/dist/performance/RWLock.js +0 -570
- package/dist/performance/RWLock.js.map +0 -1
- package/dist/performance/index.d.ts +0 -41
- package/dist/performance/index.d.ts.map +0 -1
- package/dist/performance/index.js +0 -162
- package/dist/performance/index.js.map +0 -1
- package/dist/performance/types.d.ts +0 -247
- package/dist/performance/types.d.ts.map +0 -1
- package/dist/performance/types.js +0 -26
- package/dist/performance/types.js.map +0 -1
- package/dist/storage/Checkpoint.d.ts +0 -128
- package/dist/storage/Checkpoint.d.ts.map +0 -1
- package/dist/storage/Checkpoint.js +0 -251
- package/dist/storage/Checkpoint.js.map +0 -1
- package/dist/storage/LightFile.d.ts +0 -227
- package/dist/storage/LightFile.d.ts.map +0 -1
- package/dist/storage/LightFile.js +0 -526
- package/dist/storage/LightFile.js.map +0 -1
- package/dist/storage/Recovery.d.ts +0 -172
- package/dist/storage/Recovery.d.ts.map +0 -1
- package/dist/storage/Recovery.js +0 -399
- package/dist/storage/Recovery.js.map +0 -1
- package/dist/storage/SHMFile.d.ts +0 -243
- package/dist/storage/SHMFile.d.ts.map +0 -1
- package/dist/storage/SHMFile.js +0 -436
- package/dist/storage/SHMFile.js.map +0 -1
- package/dist/storage/StorageEngine.d.ts +0 -146
- package/dist/storage/StorageEngine.d.ts.map +0 -1
- package/dist/storage/StorageEngine.js +0 -353
- package/dist/storage/StorageEngine.js.map +0 -1
- package/dist/storage/WALFile.d.ts +0 -248
- package/dist/storage/WALFile.d.ts.map +0 -1
- package/dist/storage/WALFile.js +0 -597
- package/dist/storage/WALFile.js.map +0 -1
- package/dist/types/index.d.ts +0 -220
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -7
- package/dist/types/index.js.map +0 -1
- package/dist/utils/binary.d.ts +0 -271
- package/dist/utils/binary.d.ts.map +0 -1
- package/dist/utils/binary.js +0 -454
- package/dist/utils/binary.js.map +0 -1
- package/dist/utils/file.d.ts +0 -166
- package/dist/utils/file.d.ts.map +0 -1
- package/dist/utils/file.js +0 -346
- package/dist/utils/file.js.map +0 -1
- package/dist/utils/index.d.ts +0 -6
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -39
- package/dist/utils/index.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO;AACP,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG3D,MAAM;AACN,OAAO,EACH,WAAW,EACX,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAClB,MAAM,SAAS,CAAC;AAGjB,SAAS;AACT,OAAO,EACH,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,oBAAoB,GACvB,MAAM,WAAW,CAAC;AAGnB,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAaxG,MAAM;AACN,OAAO,EACH,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACf,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 存储适配器合同
|
|
3
|
+
*
|
|
4
|
+
* 这是 `@yydb/light-db` 唯一的平台边界。上层只认识逻辑文件名与随机访问句柄,
|
|
5
|
+
* 不认识本地路径、OPFS 目录结构或任何 Node 文件 API。
|
|
6
|
+
*/
|
|
7
|
+
/** 逻辑文件名,对外不暴露扩展名与目录结构 */
|
|
8
|
+
export type StorageFile = 'main' | 'main.tmp' | 'wal' | 'shm';
|
|
9
|
+
/** 所有逻辑文件 */
|
|
10
|
+
export declare const STORAGE_FILES: readonly StorageFile[];
|
|
11
|
+
/** 打开模式 */
|
|
12
|
+
export type StorageOpenMode = 'read' | 'readwrite';
|
|
13
|
+
/** 适配器类型 */
|
|
14
|
+
export type StorageAdapterKind = 'opfs' | 'indexeddb' | 'memory';
|
|
15
|
+
/**
|
|
16
|
+
* 随机访问句柄
|
|
17
|
+
*
|
|
18
|
+
* 语义参照 OPFS `FileSystemSyncAccessHandle`:按位置读写、可截断、可 flush,
|
|
19
|
+
* 不提供路径、目录或文件重命名能力。
|
|
20
|
+
*/
|
|
21
|
+
export interface StorageHandle {
|
|
22
|
+
/**
|
|
23
|
+
* 读取指定区间
|
|
24
|
+
* @param position 起始位置
|
|
25
|
+
* @param length 期望长度,超出文件末尾时返回实际可读部分
|
|
26
|
+
*/
|
|
27
|
+
read(position: number, length: number): Promise<Uint8Array>;
|
|
28
|
+
/**
|
|
29
|
+
* 写入指定位置,必要时扩展文件
|
|
30
|
+
* @param position 起始位置
|
|
31
|
+
* @param data 数据
|
|
32
|
+
*/
|
|
33
|
+
write(position: number, data: Uint8Array): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* 截断到指定大小
|
|
36
|
+
* @param size 目标大小
|
|
37
|
+
*/
|
|
38
|
+
truncate(size: number): Promise<void>;
|
|
39
|
+
/** 将已写入的数据持久化到宿主 */
|
|
40
|
+
sync(): Promise<void>;
|
|
41
|
+
/** 当前文件大小 */
|
|
42
|
+
size(): Promise<number>;
|
|
43
|
+
/** 关闭句柄 */
|
|
44
|
+
close(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 单个数据库的存储适配器
|
|
48
|
+
*
|
|
49
|
+
* 适配器只管理四个逻辑文件,原子发布由 `rename` 完成。
|
|
50
|
+
*/
|
|
51
|
+
export interface StorageAdapter {
|
|
52
|
+
/** 适配器类型 */
|
|
53
|
+
readonly kind: StorageAdapterKind;
|
|
54
|
+
/** 数据是否在会话结束后仍然存在 */
|
|
55
|
+
readonly persistent: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* 打开逻辑文件
|
|
58
|
+
* @param file 逻辑文件名
|
|
59
|
+
* @param mode 打开模式,默认 `readwrite`
|
|
60
|
+
*/
|
|
61
|
+
open(file: StorageFile, mode?: StorageOpenMode): Promise<StorageHandle>;
|
|
62
|
+
/**
|
|
63
|
+
* 判断逻辑文件是否存在
|
|
64
|
+
* @param file 逻辑文件名
|
|
65
|
+
*/
|
|
66
|
+
exists(file: StorageFile): Promise<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* 删除逻辑文件,不存在时视为成功
|
|
69
|
+
* @param file 逻辑文件名
|
|
70
|
+
*/
|
|
71
|
+
delete(file: StorageFile): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* 原子重命名,用于发布快照
|
|
74
|
+
* @param from 源文件
|
|
75
|
+
* @param to 目标文件
|
|
76
|
+
*/
|
|
77
|
+
rename(from: StorageFile, to: StorageFile): Promise<void>;
|
|
78
|
+
/** 列出已存在的逻辑文件 */
|
|
79
|
+
list(): Promise<StorageFile[]>;
|
|
80
|
+
/** 关闭适配器 */
|
|
81
|
+
close(): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 按数据库名打开适配器的工厂
|
|
85
|
+
*/
|
|
86
|
+
export interface StorageAdapterFactory {
|
|
87
|
+
/** 适配器类型 */
|
|
88
|
+
readonly kind: StorageAdapterKind;
|
|
89
|
+
/** 数据是否在会话结束后仍然存在 */
|
|
90
|
+
readonly persistent: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* 打开指定数据库的适配器
|
|
93
|
+
* @param name 数据库名(浏览器 storage namespace)
|
|
94
|
+
*/
|
|
95
|
+
openDatabase(name: string): Promise<StorageAdapter>;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=StorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageAdapter.d.ts","sourceRoot":"","sources":["../../src/storage/StorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0BAA0B;AAC1B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D,aAAa;AACb,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAuC,CAAC;AAExF,WAAW;AACX,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnD,YAAY;AACZ,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC1B;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE5D;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,oBAAoB;IACpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB,aAAa;IACb,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAExB,WAAW;IACX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAElC,qBAAqB;IACrB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAExE;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,iBAAiB;IACjB,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/B,YAAY;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAElC,qBAAqB;IACrB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageAdapter.js","sourceRoot":"","sources":["../../src/storage/StorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,aAAa;AACb,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC"}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* storage 层导出
|
|
3
|
+
*
|
|
4
|
+
* `StorageAdapter` 是唯一平台边界;OPFS 为默认后端,内存后端用于测试与一次性会话。
|
|
3
5
|
*/
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
6
|
+
export { STORAGE_FILES } from './StorageAdapter';
|
|
7
|
+
export type { StorageAdapter, StorageAdapterFactory, StorageAdapterKind, StorageFile, StorageHandle, StorageOpenMode } from './StorageAdapter';
|
|
8
|
+
export { MemoryStorageAdapter, MemoryStorageBackend } from './memory/MemoryStorageAdapter';
|
|
9
|
+
export { OpfsStorageAdapter, OpfsStorageAdapterFactory, isOpfsAvailable } from './opfs/OpfsStorageAdapter';
|
|
10
|
+
export { IndexedDbStorageAdapter, IndexedDbStorageAdapterFactory, isIndexedDbAvailable } from './indexeddb/IndexedDbStorageAdapter';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/I,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC"}
|
package/dist/storage/index.js
CHANGED
|
@@ -1,153 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
2
|
+
* storage 层导出
|
|
3
|
+
*
|
|
4
|
+
* `StorageAdapter` 是唯一平台边界;OPFS 为默认后端,内存后端用于测试与一次性会话。
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.FastRecoveryManager =
|
|
11
|
-
exports.RecoveryManager =
|
|
12
|
-
exports.IncrementalCheckpointManager =
|
|
13
|
-
exports.AutoCheckpointScheduler =
|
|
14
|
-
exports.CheckpointManager =
|
|
15
|
-
exports.WalIndexManager =
|
|
16
|
-
exports.ShmFileManager =
|
|
17
|
-
exports.ShmHashTable =
|
|
18
|
-
exports.ShmSerializer =
|
|
19
|
-
exports.WalManager =
|
|
20
|
-
exports.WalReader =
|
|
21
|
-
exports.WalWriter =
|
|
22
|
-
exports.WalRecordSerializer =
|
|
23
|
-
exports.PageManager =
|
|
24
|
-
exports.LightFileManager =
|
|
25
|
-
exports.LightFileSerializer =
|
|
26
|
-
void 0;
|
|
27
|
-
var LightFile_1 = require("./LightFile");
|
|
28
|
-
Object.defineProperty(exports, "LightFileSerializer", {
|
|
29
|
-
enumerable: true,
|
|
30
|
-
get: function () {
|
|
31
|
-
return LightFile_1.LightFileSerializer;
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
Object.defineProperty(exports, "LightFileManager", {
|
|
35
|
-
enumerable: true,
|
|
36
|
-
get: function () {
|
|
37
|
-
return LightFile_1.LightFileManager;
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(exports, "PageManager", {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
get: function () {
|
|
43
|
-
return LightFile_1.PageManager;
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
var WALFile_1 = require("./WALFile");
|
|
47
|
-
Object.defineProperty(exports, "WalRecordSerializer", {
|
|
48
|
-
enumerable: true,
|
|
49
|
-
get: function () {
|
|
50
|
-
return WALFile_1.WalRecordSerializer;
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
Object.defineProperty(exports, "WalWriter", {
|
|
54
|
-
enumerable: true,
|
|
55
|
-
get: function () {
|
|
56
|
-
return WALFile_1.WalWriter;
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
Object.defineProperty(exports, "WalReader", {
|
|
60
|
-
enumerable: true,
|
|
61
|
-
get: function () {
|
|
62
|
-
return WALFile_1.WalReader;
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
Object.defineProperty(exports, "WalManager", {
|
|
66
|
-
enumerable: true,
|
|
67
|
-
get: function () {
|
|
68
|
-
return WALFile_1.WalManager;
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
var SHMFile_1 = require("./SHMFile");
|
|
72
|
-
Object.defineProperty(exports, "ShmSerializer", {
|
|
73
|
-
enumerable: true,
|
|
74
|
-
get: function () {
|
|
75
|
-
return SHMFile_1.ShmSerializer;
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
Object.defineProperty(exports, "ShmHashTable", {
|
|
79
|
-
enumerable: true,
|
|
80
|
-
get: function () {
|
|
81
|
-
return SHMFile_1.ShmHashTable;
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(exports, "ShmFileManager", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
get: function () {
|
|
87
|
-
return SHMFile_1.ShmFileManager;
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
Object.defineProperty(exports, "WalIndexManager", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
get: function () {
|
|
93
|
-
return SHMFile_1.WalIndexManager;
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
var Checkpoint_1 = require("./Checkpoint");
|
|
97
|
-
Object.defineProperty(exports, "CheckpointManager", {
|
|
98
|
-
enumerable: true,
|
|
99
|
-
get: function () {
|
|
100
|
-
return Checkpoint_1.CheckpointManager;
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
Object.defineProperty(exports, "AutoCheckpointScheduler", {
|
|
104
|
-
enumerable: true,
|
|
105
|
-
get: function () {
|
|
106
|
-
return Checkpoint_1.AutoCheckpointScheduler;
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
Object.defineProperty(exports, "IncrementalCheckpointManager", {
|
|
110
|
-
enumerable: true,
|
|
111
|
-
get: function () {
|
|
112
|
-
return Checkpoint_1.IncrementalCheckpointManager;
|
|
113
|
-
},
|
|
114
|
-
});
|
|
115
|
-
var Recovery_1 = require("./Recovery");
|
|
116
|
-
Object.defineProperty(exports, "RecoveryManager", {
|
|
117
|
-
enumerable: true,
|
|
118
|
-
get: function () {
|
|
119
|
-
return Recovery_1.RecoveryManager;
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
Object.defineProperty(exports, "FastRecoveryManager", {
|
|
123
|
-
enumerable: true,
|
|
124
|
-
get: function () {
|
|
125
|
-
return Recovery_1.FastRecoveryManager;
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
Object.defineProperty(exports, "RecoveryValidator", {
|
|
129
|
-
enumerable: true,
|
|
130
|
-
get: function () {
|
|
131
|
-
return Recovery_1.RecoveryValidator;
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
Object.defineProperty(exports, "RecoveryPhase", {
|
|
135
|
-
enumerable: true,
|
|
136
|
-
get: function () {
|
|
137
|
-
return Recovery_1.RecoveryPhase;
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
var StorageEngine_1 = require("./StorageEngine");
|
|
141
|
-
Object.defineProperty(exports, "StorageEngine", {
|
|
142
|
-
enumerable: true,
|
|
143
|
-
get: function () {
|
|
144
|
-
return StorageEngine_1.StorageEngine;
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
Object.defineProperty(exports, "createStorageEngine", {
|
|
148
|
-
enumerable: true,
|
|
149
|
-
get: function () {
|
|
150
|
-
return StorageEngine_1.createStorageEngine;
|
|
151
|
-
},
|
|
152
|
-
});
|
|
153
|
-
//# sourceMappingURL=index.js.map
|
|
6
|
+
export { STORAGE_FILES } from './StorageAdapter';
|
|
7
|
+
export { MemoryStorageAdapter, MemoryStorageBackend } from './memory/MemoryStorageAdapter';
|
|
8
|
+
export { OpfsStorageAdapter, OpfsStorageAdapterFactory, isOpfsAvailable } from './opfs/OpfsStorageAdapter';
|
|
9
|
+
export { IndexedDbStorageAdapter, IndexedDbStorageAdapterFactory, isIndexedDbAvailable } from './indexeddb/IndexedDbStorageAdapter';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexedDB 存储适配器
|
|
3
|
+
*
|
|
4
|
+
* 兼容后端:宿主没有 OPFS,或需要在同一浏览器配置里复用既有存储时使用。
|
|
5
|
+
* 它只实现 `StorageAdapter` 合同,事务、恢复与检查点语义仍由 `core` 决定,
|
|
6
|
+
* 两套后端不各自实现一套数据库语义。
|
|
7
|
+
*
|
|
8
|
+
* IndexedDB 没有按位置随机写的原生能力,因此句柄在内存中维护整份文件内容,
|
|
9
|
+
* `sync()` 与 `close()` 负责把它写回对象仓库。这牺牲了 OPFS 那样的细粒度
|
|
10
|
+
* 原子性,属于兼容后端的已知取舍。
|
|
11
|
+
*/
|
|
12
|
+
import type { StorageAdapter, StorageAdapterFactory, StorageFile, StorageHandle, StorageOpenMode } from '../StorageAdapter';
|
|
13
|
+
/** IndexedDB 请求的结构化视图 */
|
|
14
|
+
interface IdbRequestLike<T> {
|
|
15
|
+
result: T;
|
|
16
|
+
error: unknown;
|
|
17
|
+
onsuccess: (() => void) | null;
|
|
18
|
+
onerror: (() => void) | null;
|
|
19
|
+
}
|
|
20
|
+
/** 对象仓库的结构化视图 */
|
|
21
|
+
interface IdbObjectStoreLike {
|
|
22
|
+
get(key: string): IdbRequestLike<ArrayBuffer | undefined>;
|
|
23
|
+
put(value: ArrayBuffer, key: string): IdbRequestLike<unknown>;
|
|
24
|
+
delete(key: string): IdbRequestLike<unknown>;
|
|
25
|
+
getAllKeys(): IdbRequestLike<string[]>;
|
|
26
|
+
}
|
|
27
|
+
/** 事务的结构化视图 */
|
|
28
|
+
interface IdbTransactionLike {
|
|
29
|
+
error: unknown;
|
|
30
|
+
oncomplete: (() => void) | null;
|
|
31
|
+
onerror: (() => void) | null;
|
|
32
|
+
onabort: (() => void) | null;
|
|
33
|
+
objectStore(name: string): IdbObjectStoreLike;
|
|
34
|
+
abort(): void;
|
|
35
|
+
}
|
|
36
|
+
/** 数据库的结构化视图 */
|
|
37
|
+
interface IdbDatabaseLike {
|
|
38
|
+
objectStoreNames: {
|
|
39
|
+
contains(name: string): boolean;
|
|
40
|
+
};
|
|
41
|
+
createObjectStore(name: string): IdbObjectStoreLike;
|
|
42
|
+
transaction(name: string, mode?: 'readonly' | 'readwrite'): IdbTransactionLike;
|
|
43
|
+
close(): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 判断当前宿主是否提供 IndexedDB
|
|
47
|
+
*/
|
|
48
|
+
export declare function isIndexedDbAvailable(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* IndexedDB 适配器工厂
|
|
51
|
+
*/
|
|
52
|
+
export declare class IndexedDbStorageAdapterFactory implements StorageAdapterFactory {
|
|
53
|
+
/** 适配器类型 */
|
|
54
|
+
readonly kind: "indexeddb";
|
|
55
|
+
/** 数据持久化 */
|
|
56
|
+
readonly persistent = true;
|
|
57
|
+
/**
|
|
58
|
+
* 打开数据库适配器
|
|
59
|
+
* @param name 数据库名
|
|
60
|
+
*/
|
|
61
|
+
openDatabase(name: string): Promise<StorageAdapter>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* IndexedDB 存储适配器
|
|
65
|
+
*/
|
|
66
|
+
export declare class IndexedDbStorageAdapter implements StorageAdapter {
|
|
67
|
+
/** 适配器类型 */
|
|
68
|
+
readonly kind: "indexeddb";
|
|
69
|
+
/** 数据持久化 */
|
|
70
|
+
readonly persistent = true;
|
|
71
|
+
private readonly name;
|
|
72
|
+
private readonly db;
|
|
73
|
+
private closed;
|
|
74
|
+
constructor(name: string, db: IdbDatabaseLike);
|
|
75
|
+
/**
|
|
76
|
+
* 打开逻辑文件
|
|
77
|
+
* @param file 逻辑文件名
|
|
78
|
+
* @param mode 打开模式
|
|
79
|
+
*/
|
|
80
|
+
open(file: StorageFile, mode?: StorageOpenMode): Promise<StorageHandle>;
|
|
81
|
+
/**
|
|
82
|
+
* 判断文件是否存在
|
|
83
|
+
* @param file 逻辑文件名
|
|
84
|
+
*/
|
|
85
|
+
exists(file: StorageFile): Promise<boolean>;
|
|
86
|
+
/**
|
|
87
|
+
* 删除文件,不存在时视为成功
|
|
88
|
+
* @param file 逻辑文件名
|
|
89
|
+
*/
|
|
90
|
+
delete(file: StorageFile): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* 原子重命名:同一事务内写入目标并删除源
|
|
93
|
+
* @param from 源文件
|
|
94
|
+
* @param to 目标文件
|
|
95
|
+
*/
|
|
96
|
+
rename(from: StorageFile, to: StorageFile): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* 列出已存在的文件
|
|
99
|
+
*/
|
|
100
|
+
list(): Promise<StorageFile[]>;
|
|
101
|
+
/** 关闭适配器 */
|
|
102
|
+
close(): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* 写回逻辑文件内容
|
|
105
|
+
* @param file 逻辑文件名
|
|
106
|
+
* @param data 文件内容
|
|
107
|
+
*/
|
|
108
|
+
persist(file: StorageFile, data: Uint8Array): Promise<void>;
|
|
109
|
+
/**
|
|
110
|
+
* 读取逻辑文件内容
|
|
111
|
+
* @param file 逻辑文件名
|
|
112
|
+
* @returns 内容,文件不存在时返回 null
|
|
113
|
+
*/
|
|
114
|
+
private readFile;
|
|
115
|
+
/**
|
|
116
|
+
* 执行只读事务
|
|
117
|
+
* @param operation 操作名
|
|
118
|
+
* @param action 请求构造
|
|
119
|
+
*/
|
|
120
|
+
private readTransaction;
|
|
121
|
+
/**
|
|
122
|
+
* 执行读写事务
|
|
123
|
+
* @param operation 操作名
|
|
124
|
+
* @param action 请求构造
|
|
125
|
+
*/
|
|
126
|
+
private writeTransaction;
|
|
127
|
+
/**
|
|
128
|
+
* 创建事务
|
|
129
|
+
* @param mode 事务模式
|
|
130
|
+
* @param operation 操作名
|
|
131
|
+
*/
|
|
132
|
+
private beginTransaction;
|
|
133
|
+
/**
|
|
134
|
+
* 断言适配器未关闭
|
|
135
|
+
* @param operation 操作名
|
|
136
|
+
*/
|
|
137
|
+
private assertOpen;
|
|
138
|
+
}
|
|
139
|
+
export {};
|
|
140
|
+
//# sourceMappingURL=IndexedDbStorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndexedDbStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/storage/indexeddb/IndexedDbStorageAdapter.ts"],"names":[],"mappings":"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"}
|