@yydb/light-db 0.0.0 → 0.0.11
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
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type EmittableItem } from '@voml/vos';
|
|
2
|
+
/** Schema 版本与文档。 */
|
|
3
|
+
export interface SchemaVersion {
|
|
4
|
+
version: number;
|
|
5
|
+
document: string;
|
|
6
|
+
}
|
|
7
|
+
/** 打开浏览器数据库的选项。 */
|
|
8
|
+
export interface LightDatabaseOptions {
|
|
9
|
+
/** 使用内存 session(测试专用;默认使用 OPFS 持久 session)。 */
|
|
10
|
+
memory?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** 浏览器侧 YYDB 数据库句柄,委托给 Rust WASM 核心。 */
|
|
13
|
+
export declare class BrowserDatabase {
|
|
14
|
+
/** 数据库名(OPFS 路径)。 */
|
|
15
|
+
readonly name: string;
|
|
16
|
+
private readonly session;
|
|
17
|
+
private constructor();
|
|
18
|
+
/** 初始化 WASM 并打开一个 session(memory 或 OPFS persistent)。 */
|
|
19
|
+
static open(name: string, options?: LightDatabaseOptions): Promise<BrowserDatabase>;
|
|
20
|
+
/** 读取已持久化的 schema,或 `null`。 */
|
|
21
|
+
schema(): Promise<SchemaVersion | null>;
|
|
22
|
+
/**
|
|
23
|
+
* 声明 schema 文档。接受原始 `.vos` 源码字符串,或 `@voml/vos`
|
|
24
|
+
* descriptor(`v.table()` / `v.class()`),或多个 descriptor。
|
|
25
|
+
*/
|
|
26
|
+
ensureSchema(...input: [string] | EmittableItem[]): Promise<void>;
|
|
27
|
+
/** 读取键,或 `null`。 */
|
|
28
|
+
get(key: string): Promise<Uint8Array | null>;
|
|
29
|
+
/** 写入键。 */
|
|
30
|
+
put(key: string, value: Uint8Array): Promise<void>;
|
|
31
|
+
/** 删除键(底层等价 write_batch([(key, None)]))。 */
|
|
32
|
+
delete(key: string): Promise<boolean>;
|
|
33
|
+
/** 开启事务。 */
|
|
34
|
+
begin(): Promise<void>;
|
|
35
|
+
/** 提交事务。 */
|
|
36
|
+
commit(): Promise<void>;
|
|
37
|
+
/** 回滚事务。 */
|
|
38
|
+
rollback(): Promise<void>;
|
|
39
|
+
/** 执行检查点(折叠 WAL)。 */
|
|
40
|
+
checkpoint(): Promise<void>;
|
|
41
|
+
/** 数据库统计(暂不可用)。 */
|
|
42
|
+
stats(): never;
|
|
43
|
+
/** 关闭 session。 */
|
|
44
|
+
close(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** 打开浏览器数据库的便捷函数。 */
|
|
47
|
+
export declare function openLightDatabase(name: string, options?: LightDatabaseOptions): Promise<BrowserDatabase>;
|
|
48
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/api/database.ts"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAY3D,oBAAoB;AACpB,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,mBAAmB;AACnB,MAAM,WAAW,oBAAoB;IACjC,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAWD,wCAAwC;AACxC,qBAAa,eAAe;IACxB,qBAAqB;IACrB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAE1C,OAAO;IAKP,wDAAwD;WACpC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAcpG,+BAA+B;IAClB,MAAM,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAWpD;;;OAGG;IACU,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9E,oBAAoB;IACP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmBzD,WAAW;IACE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,4CAA4C;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlD,YAAY;IACC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC,YAAY;IACC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC,YAAY;IACC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC,qBAAqB;IACR,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOxC,mBAAmB;IACZ,KAAK,IAAI,KAAK;IAIrB,kBAAkB;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC;AAED,qBAAqB;AACrB,wBAAsB,iBAAiB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,oBAAyB,GACnC,OAAO,CAAC,eAAe,CAAC,CAE1B"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { initWasm, openPersistentSession, createMemorySession, } from '@yydb/yydb-unknown-wasm32';
|
|
2
|
+
import { emitSource } from '@voml/vos';
|
|
3
|
+
/** 浏览器侧 YYDB 数据库句柄,委托给 Rust WASM 核心。 */
|
|
4
|
+
export class BrowserDatabase {
|
|
5
|
+
/** 数据库名(OPFS 路径)。 */
|
|
6
|
+
name;
|
|
7
|
+
session;
|
|
8
|
+
constructor(name, session) {
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.session = session;
|
|
11
|
+
}
|
|
12
|
+
/** 初始化 WASM 并打开一个 session(memory 或 OPFS persistent)。 */
|
|
13
|
+
static async open(name, options = {}) {
|
|
14
|
+
if (!name || name.length === 0) {
|
|
15
|
+
throw new Error('database name must not be empty');
|
|
16
|
+
}
|
|
17
|
+
await initWasm();
|
|
18
|
+
const base = options.memory
|
|
19
|
+
? createMemorySession()
|
|
20
|
+
: openPersistentSession(name);
|
|
21
|
+
return new BrowserDatabase(name, base);
|
|
22
|
+
}
|
|
23
|
+
/** 读取已持久化的 schema,或 `null`。 */
|
|
24
|
+
async schema() {
|
|
25
|
+
const raw = JSON.parse(this.session.getSchema());
|
|
26
|
+
if (!raw.ok) {
|
|
27
|
+
throw new Error(raw.error ?? 'getSchema failed');
|
|
28
|
+
}
|
|
29
|
+
if (!raw.schema) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return raw.schema;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 声明 schema 文档。接受原始 `.vos` 源码字符串,或 `@voml/vos`
|
|
36
|
+
* descriptor(`v.table()` / `v.class()`),或多个 descriptor。
|
|
37
|
+
*/
|
|
38
|
+
async ensureSchema(...input) {
|
|
39
|
+
const document = typeof input[0] === 'string' ? input[0] : emitSource(input);
|
|
40
|
+
const raw = JSON.parse(this.session.ensureSchema(document));
|
|
41
|
+
if (!raw.ok) {
|
|
42
|
+
throw new Error(raw.error ?? 'ensureSchema failed');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** 读取键,或 `null`。 */
|
|
46
|
+
async get(key) {
|
|
47
|
+
const raw = JSON.parse(this.session.get(key));
|
|
48
|
+
if (!raw.ok) {
|
|
49
|
+
throw new Error(raw.error ?? `get(${key}) failed`);
|
|
50
|
+
}
|
|
51
|
+
if (raw.value === null || raw.value === undefined) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
// WASM JSON 序列化为普通数组 [1, 2, 3, ...];转回 Uint8Array
|
|
55
|
+
if (raw.value instanceof Uint8Array) {
|
|
56
|
+
return raw.value;
|
|
57
|
+
}
|
|
58
|
+
if (Array.isArray(raw.value)) {
|
|
59
|
+
return new Uint8Array(raw.value);
|
|
60
|
+
}
|
|
61
|
+
// 兜底:如果是 base64 字符串等,尝试 new Uint8Array
|
|
62
|
+
return new Uint8Array(raw.value);
|
|
63
|
+
}
|
|
64
|
+
/** 写入键。 */
|
|
65
|
+
async put(key, value) {
|
|
66
|
+
const raw = JSON.parse(this.session.put(key, value));
|
|
67
|
+
if (!raw.ok) {
|
|
68
|
+
throw new Error(raw.error ?? `put(${key}) failed`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** 删除键(底层等价 write_batch([(key, None)]))。 */
|
|
72
|
+
async delete(key) {
|
|
73
|
+
const raw = JSON.parse(this.session.delete(key));
|
|
74
|
+
if (!raw.ok) {
|
|
75
|
+
throw new Error(raw.error ?? `delete(${key}) failed`);
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
/** 开启事务。 */
|
|
80
|
+
async begin() {
|
|
81
|
+
const raw = JSON.parse(this.session.begin());
|
|
82
|
+
if (!raw.ok) {
|
|
83
|
+
throw new Error(raw.error ?? 'begin failed');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** 提交事务。 */
|
|
87
|
+
async commit() {
|
|
88
|
+
const raw = JSON.parse(this.session.commit());
|
|
89
|
+
if (!raw.ok) {
|
|
90
|
+
throw new Error(raw.error ?? 'commit failed');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** 回滚事务。 */
|
|
94
|
+
async rollback() {
|
|
95
|
+
const raw = JSON.parse(this.session.rollback());
|
|
96
|
+
if (!raw.ok) {
|
|
97
|
+
throw new Error(raw.error ?? 'rollback failed');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** 执行检查点(折叠 WAL)。 */
|
|
101
|
+
async checkpoint() {
|
|
102
|
+
const raw = JSON.parse(this.session.checkpoint());
|
|
103
|
+
if (!raw.ok) {
|
|
104
|
+
throw new Error(raw.error ?? 'checkpoint failed');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** 数据库统计(暂不可用)。 */
|
|
108
|
+
stats() {
|
|
109
|
+
throw new Error('stats() is not available on the WASM core');
|
|
110
|
+
}
|
|
111
|
+
/** 关闭 session。 */
|
|
112
|
+
async close() {
|
|
113
|
+
this.session.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** 打开浏览器数据库的便捷函数。 */
|
|
117
|
+
export async function openLightDatabase(name, options = {}) {
|
|
118
|
+
return BrowserDatabase.open(name, options);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/api/database.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* 提供用户直接使用的接口层
|
|
4
|
-
*
|
|
5
|
-
* @packageDocumentation
|
|
2
|
+
* api 层导出
|
|
6
3
|
*/
|
|
7
|
-
export {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
TransactionOptions,
|
|
14
|
-
TransactionState,
|
|
15
|
-
TransactionResult,
|
|
16
|
-
DatabaseStats,
|
|
17
|
-
DatabaseConfig,
|
|
18
|
-
ILightDB,
|
|
19
|
-
DefineCollectionSchema,
|
|
20
|
-
CollectionSchema,
|
|
21
|
-
} from "./types";
|
|
22
|
-
export { TransactionError, Transaction, TransactionManager } from "./Transaction";
|
|
23
|
-
export { LightDB, defineCollectionSchema, openDatabase } from "./LightDB";
|
|
24
|
-
//# sourceMappingURL=index.d.ts.map
|
|
4
|
+
export { BrowserDatabase, openLightDatabase } from './database';
|
|
5
|
+
export { Transaction } from './transaction';
|
|
6
|
+
export type { TransactionState } from './transaction';
|
|
7
|
+
export { SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema } from './schema';
|
|
8
|
+
export type { LightDatabase, LightDatabaseOptions, SchemaVersion } from './types';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7H,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/api/index.js
CHANGED
|
@@ -1,54 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
* 提供用户直接使用的接口层
|
|
5
|
-
*
|
|
6
|
-
* @packageDocumentation
|
|
2
|
+
* api 层导出
|
|
7
3
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.TransactionManager =
|
|
13
|
-
exports.Transaction =
|
|
14
|
-
exports.TransactionError =
|
|
15
|
-
void 0;
|
|
16
|
-
var Transaction_1 = require("./Transaction");
|
|
17
|
-
Object.defineProperty(exports, "TransactionError", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
get: function () {
|
|
20
|
-
return Transaction_1.TransactionError;
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
Object.defineProperty(exports, "Transaction", {
|
|
24
|
-
enumerable: true,
|
|
25
|
-
get: function () {
|
|
26
|
-
return Transaction_1.Transaction;
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
Object.defineProperty(exports, "TransactionManager", {
|
|
30
|
-
enumerable: true,
|
|
31
|
-
get: function () {
|
|
32
|
-
return Transaction_1.TransactionManager;
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
var LightDB_1 = require("./LightDB");
|
|
36
|
-
Object.defineProperty(exports, "LightDB", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function () {
|
|
39
|
-
return LightDB_1.LightDB;
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(exports, "defineCollectionSchema", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function () {
|
|
45
|
-
return LightDB_1.defineCollectionSchema;
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
Object.defineProperty(exports, "openDatabase", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function () {
|
|
51
|
-
return LightDB_1.openDatabase;
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
//# sourceMappingURL=index.js.map
|
|
4
|
+
export { BrowserDatabase, openLightDatabase } from './database';
|
|
5
|
+
export { Transaction } from './transaction';
|
|
6
|
+
export { SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema } from './schema';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema 语义
|
|
3
|
+
*
|
|
4
|
+
* 与 `@yydb/yydb` 的 Rust 实现同构:Schema 文档是唯一真相,
|
|
5
|
+
* 版本由文档前导注释 `// @yydb-schema-version: <n>` 决定,默认 1。
|
|
6
|
+
*/
|
|
7
|
+
import type { SchemaVersion } from './types';
|
|
8
|
+
/** Schema 记录在数据库中的保留键 */
|
|
9
|
+
export declare const SCHEMA_KEY = "__yydb__/schema";
|
|
10
|
+
/** 用户键禁止使用的内部前缀 */
|
|
11
|
+
export declare const RESERVED_KEY_PREFIX = "__yydb__/";
|
|
12
|
+
/**
|
|
13
|
+
* 从文档中提取版本
|
|
14
|
+
* @param document Schema 文档
|
|
15
|
+
*/
|
|
16
|
+
export declare function documentVersion(document: string): number;
|
|
17
|
+
/**
|
|
18
|
+
* 校验 Schema 文档
|
|
19
|
+
* @param document Schema 文档
|
|
20
|
+
* @returns 文档声明的版本
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseSchemaDocument(document: string): number;
|
|
23
|
+
/**
|
|
24
|
+
* 编码 Schema 记录
|
|
25
|
+
* @param schema Schema 版本与文档
|
|
26
|
+
*/
|
|
27
|
+
export declare function encodeSchema(schema: SchemaVersion): Uint8Array;
|
|
28
|
+
/**
|
|
29
|
+
* 解码 Schema 记录
|
|
30
|
+
* @param value 记录值
|
|
31
|
+
*/
|
|
32
|
+
export declare function decodeSchema(value: Uint8Array): SchemaVersion;
|
|
33
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/api/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,yBAAyB;AACzB,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C,mBAAmB;AACnB,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAK/C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAE9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAkB7D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema 语义
|
|
3
|
+
*
|
|
4
|
+
* 与 `@yydb/yydb` 的 Rust 实现同构:Schema 文档是唯一真相,
|
|
5
|
+
* 版本由文档前导注释 `// @yydb-schema-version: <n>` 决定,默认 1。
|
|
6
|
+
*/
|
|
7
|
+
import { BinaryUtils } from '../codec';
|
|
8
|
+
import { LightDbError, LightDbErrorCodes } from '../errors';
|
|
9
|
+
/** Schema 记录在数据库中的保留键 */
|
|
10
|
+
export const SCHEMA_KEY = '__yydb__/schema';
|
|
11
|
+
/** 用户键禁止使用的内部前缀 */
|
|
12
|
+
export const RESERVED_KEY_PREFIX = '__yydb__/';
|
|
13
|
+
/** 版本声明注释 */
|
|
14
|
+
const VERSION_PRAGMA = /^\s*\/\/\s*@yydb-schema-version:\s*(\d+)\s*$/m;
|
|
15
|
+
/**
|
|
16
|
+
* 从文档中提取版本
|
|
17
|
+
* @param document Schema 文档
|
|
18
|
+
*/
|
|
19
|
+
export function documentVersion(document) {
|
|
20
|
+
const match = VERSION_PRAGMA.exec(document);
|
|
21
|
+
if (!match) {
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
24
|
+
const version = Number.parseInt(match[1], 10);
|
|
25
|
+
return Number.isFinite(version) && version > 0 ? version : 1;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 校验 Schema 文档
|
|
29
|
+
* @param document Schema 文档
|
|
30
|
+
* @returns 文档声明的版本
|
|
31
|
+
*/
|
|
32
|
+
export function parseSchemaDocument(document) {
|
|
33
|
+
if (document.trim().length === 0) {
|
|
34
|
+
throw new LightDbError(LightDbErrorCodes.schemaInvalid, 'schema document must not be empty', {
|
|
35
|
+
operation: 'ensureSchema',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return documentVersion(document);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 编码 Schema 记录
|
|
42
|
+
* @param schema Schema 版本与文档
|
|
43
|
+
*/
|
|
44
|
+
export function encodeSchema(schema) {
|
|
45
|
+
return BinaryUtils.encode(JSON.stringify(schema));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 解码 Schema 记录
|
|
49
|
+
* @param value 记录值
|
|
50
|
+
*/
|
|
51
|
+
export function decodeSchema(value) {
|
|
52
|
+
let parsed;
|
|
53
|
+
try {
|
|
54
|
+
parsed = JSON.parse(BinaryUtils.decode(value));
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
throw new LightDbError(LightDbErrorCodes.corrupt, 'persisted schema record is not valid JSON', {
|
|
58
|
+
operation: 'schema',
|
|
59
|
+
cause: error,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (!isSchemaVersion(parsed)) {
|
|
63
|
+
throw new LightDbError(LightDbErrorCodes.corrupt, 'persisted schema record has an unexpected shape', {
|
|
64
|
+
operation: 'schema',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return parsed;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 判断值是否为 Schema 记录
|
|
71
|
+
* @param value 待判断值
|
|
72
|
+
*/
|
|
73
|
+
function isSchemaVersion(value) {
|
|
74
|
+
if (typeof value !== 'object' || value === null) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
const record = value;
|
|
78
|
+
return typeof record.version === 'number' && typeof record.document === 'string';
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/api/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAG5D,yBAAyB;AACzB,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAE/C,aAAa;AACb,MAAM,cAAc,GAAG,+CAA+C,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAChD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,mCAAmC,EAAE;YACzF,SAAS,EAAE,cAAc;SAC5B,CAAC,CAAC;IACP,CAAC;IACD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAC9C,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiB;IAC1C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,2CAA2C,EAAE;YAC3F,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,KAAK;SACf,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,iDAAiD,EAAE;YACjG,SAAS,EAAE,QAAQ;SACtB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,KAAkD,CAAC;IAClE,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACrF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 事务作者面
|
|
3
|
+
*
|
|
4
|
+
* 事务语义由 `core/engine` 维护,本层只提供异步调用形态与状态跟踪。
|
|
5
|
+
*/
|
|
6
|
+
import type { StorageEngine } from '../core/engine';
|
|
7
|
+
export type { TransactionState } from '../core/engine';
|
|
8
|
+
/**
|
|
9
|
+
* 事务句柄
|
|
10
|
+
*
|
|
11
|
+
* 一个数据库同时只允许一个写事务;重复开始会得到 `yydb.unsupported`。
|
|
12
|
+
*/
|
|
13
|
+
export declare class Transaction {
|
|
14
|
+
private readonly engine;
|
|
15
|
+
private active;
|
|
16
|
+
constructor(engine: StorageEngine);
|
|
17
|
+
/** 是否处于事务中 */
|
|
18
|
+
get isActive(): boolean;
|
|
19
|
+
/** 开始事务 */
|
|
20
|
+
begin(): Promise<void>;
|
|
21
|
+
/** 提交事务,失败时事务仍视为结束 */
|
|
22
|
+
commit(): Promise<void>;
|
|
23
|
+
/** 回滚事务 */
|
|
24
|
+
rollback(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/api/transaction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,aAAa;IAIjC,cAAc;IACd,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,WAAW;IACE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,sBAAsB;IACT,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYpC,WAAW;IACE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAWzC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 事务作者面
|
|
3
|
+
*
|
|
4
|
+
* 事务语义由 `core/engine` 维护,本层只提供异步调用形态与状态跟踪。
|
|
5
|
+
*/
|
|
6
|
+
import { LightDbError, LightDbErrorCodes } from '../errors';
|
|
7
|
+
/**
|
|
8
|
+
* 事务句柄
|
|
9
|
+
*
|
|
10
|
+
* 一个数据库同时只允许一个写事务;重复开始会得到 `yydb.unsupported`。
|
|
11
|
+
*/
|
|
12
|
+
export class Transaction {
|
|
13
|
+
engine;
|
|
14
|
+
active = false;
|
|
15
|
+
constructor(engine) {
|
|
16
|
+
this.engine = engine;
|
|
17
|
+
}
|
|
18
|
+
/** 是否处于事务中 */
|
|
19
|
+
get isActive() {
|
|
20
|
+
return this.active;
|
|
21
|
+
}
|
|
22
|
+
/** 开始事务 */
|
|
23
|
+
async begin() {
|
|
24
|
+
this.engine.begin();
|
|
25
|
+
this.active = true;
|
|
26
|
+
}
|
|
27
|
+
/** 提交事务,失败时事务仍视为结束 */
|
|
28
|
+
async commit() {
|
|
29
|
+
if (!this.active) {
|
|
30
|
+
throw new LightDbError(LightDbErrorCodes.unsupported, 'no active transaction', { operation: 'commit' });
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
await this.engine.commit();
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
this.active = false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** 回滚事务 */
|
|
40
|
+
async rollback() {
|
|
41
|
+
if (!this.active) {
|
|
42
|
+
throw new LightDbError(LightDbErrorCodes.unsupported, 'no active transaction', { operation: 'rollback' });
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
this.engine.rollback();
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
this.active = false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/api/transaction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI5D;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACH,MAAM,CAAgB;IAC/B,MAAM,GAAY,KAAK,CAAC;IAEhC,YAAY,MAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,cAAc;IACd,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,WAAW;IACJ,KAAK,CAAC,KAAK;QACd,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,sBAAsB;IACf,KAAK,CAAC,MAAM;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,WAAW,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5G,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IAED,WAAW;IACJ,KAAK,CAAC,QAAQ;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,YAAY,CAAC,iBAAiB,CAAC,WAAW,EAAE,uBAAuB,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;CACJ"}
|