@yydb/light-db 0.0.11 → 0.0.12
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 +78 -22
- package/dist/api/database.d.ts.map +1 -1
- package/dist/api/database.js +175 -67
- package/dist/api/database.js.map +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/errors/index.d.ts +25 -4
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +76 -2
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/api/database.d.ts
CHANGED
|
@@ -1,48 +1,104 @@
|
|
|
1
|
+
import { type WasmSession } from '@yydb/yydb-unknown-wasm32';
|
|
1
2
|
import { type EmittableItem } from '@voml/vos';
|
|
2
3
|
/** Schema 版本与文档。 */
|
|
3
4
|
export interface SchemaVersion {
|
|
4
5
|
version: number;
|
|
5
6
|
document: string;
|
|
6
7
|
}
|
|
8
|
+
/** One row from a scan. */
|
|
9
|
+
export interface ScanRow {
|
|
10
|
+
key: string;
|
|
11
|
+
value: Uint8Array;
|
|
12
|
+
}
|
|
13
|
+
/** Options for scan. */
|
|
14
|
+
export interface ScanOptions {
|
|
15
|
+
prefix?: string;
|
|
16
|
+
after?: string | null;
|
|
17
|
+
limit?: number;
|
|
18
|
+
}
|
|
19
|
+
/** One batch change. */
|
|
20
|
+
export interface BatchChange {
|
|
21
|
+
key: string;
|
|
22
|
+
value: Uint8Array | string | null;
|
|
23
|
+
}
|
|
24
|
+
/** Options for migrateSchema. */
|
|
25
|
+
export interface MigrateOptions {
|
|
26
|
+
renames?: ReadonlyArray<{
|
|
27
|
+
fromType: string;
|
|
28
|
+
toType: string;
|
|
29
|
+
} | {
|
|
30
|
+
type: string;
|
|
31
|
+
fromField: string;
|
|
32
|
+
toField: string;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
7
35
|
/** 打开浏览器数据库的选项。 */
|
|
8
|
-
export interface
|
|
36
|
+
export interface OpenOptions {
|
|
9
37
|
/** 使用内存 session(测试专用;默认使用 OPFS 持久 session)。 */
|
|
10
38
|
memory?: boolean;
|
|
11
39
|
}
|
|
12
|
-
/**
|
|
13
|
-
export declare class
|
|
40
|
+
/** Transaction-local handle for callback-style transactions. */
|
|
41
|
+
export declare class TransactionHandle {
|
|
42
|
+
private readonly session;
|
|
43
|
+
constructor(session: WasmSession);
|
|
44
|
+
private parseResult;
|
|
45
|
+
get(key: string): Promise<Uint8Array | null>;
|
|
46
|
+
put(key: string, value: Uint8Array | string): Promise<void>;
|
|
47
|
+
delete(key: string): Promise<void>;
|
|
48
|
+
scan(options?: ScanOptions): Promise<ScanRow[]>;
|
|
49
|
+
batch(changes: readonly BatchChange[]): Promise<void>;
|
|
50
|
+
compareExchange(key: string, expected: Uint8Array | string | null, replacement: Uint8Array | string | null): Promise<boolean>;
|
|
51
|
+
query<T = Record<string, unknown>>(source: string): Promise<T[]>;
|
|
52
|
+
execute(source: string): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Browser/WASM 侧 YYDB 数据库句柄。
|
|
56
|
+
*
|
|
57
|
+
* 与 `@yydb/yydb` 的 {@link Database} 同名——宿主靠 import 来源区分:
|
|
58
|
+
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* import { Database } from '@yydb/yydb'; // Node 原生
|
|
61
|
+
* import { Database } from '@yydb/light-db'; // 浏览器 WASM
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare class Database {
|
|
14
65
|
/** 数据库名(OPFS 路径)。 */
|
|
15
66
|
readonly name: string;
|
|
16
67
|
private readonly session;
|
|
17
68
|
private constructor();
|
|
18
69
|
/** 初始化 WASM 并打开一个 session(memory 或 OPFS persistent)。 */
|
|
19
|
-
static open(name: string, options?:
|
|
70
|
+
static open(name: string, options?: OpenOptions): Promise<Database>;
|
|
71
|
+
/** 解析 WASM JSON 结果,失败时转 LightDbError。 */
|
|
72
|
+
private parseResult;
|
|
20
73
|
/** 读取已持久化的 schema,或 `null`。 */
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* 声明 schema 文档。接受原始 `.vos` 源码字符串,或 `@voml/vos`
|
|
24
|
-
* descriptor(`v.table()` / `v.class()`),或多个 descriptor。
|
|
25
|
-
*/
|
|
74
|
+
getSchema(): Promise<SchemaVersion | null>;
|
|
75
|
+
/** 声明 schema 文档。 */
|
|
26
76
|
ensureSchema(...input: [string] | EmittableItem[]): Promise<void>;
|
|
27
77
|
/** 读取键,或 `null`。 */
|
|
28
78
|
get(key: string): Promise<Uint8Array | null>;
|
|
29
79
|
/** 写入键。 */
|
|
30
|
-
put(key: string, value: Uint8Array): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
delete(key: string): Promise<
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
|
|
80
|
+
put(key: string, value: Uint8Array | string): Promise<void>;
|
|
81
|
+
/** 删除键。 */
|
|
82
|
+
delete(key: string): Promise<void>;
|
|
83
|
+
/** 扫描键值对。 */
|
|
84
|
+
scan(options?: ScanOptions): Promise<ScanRow[]>;
|
|
85
|
+
/** 原子批量写入/删除。 */
|
|
86
|
+
batch(changes: readonly BatchChange[]): Promise<void>;
|
|
87
|
+
/** Compare-and-swap。 */
|
|
88
|
+
compareExchange(key: string, expected: Uint8Array | string | null, replacement: Uint8Array | string | null): Promise<boolean>;
|
|
89
|
+
/** Callback-style 事务:自动 begin/commit,异常自动 rollback。 */
|
|
90
|
+
transaction<T>(fn: (tx: TransactionHandle) => Promise<T>): Promise<T>;
|
|
91
|
+
/** 执行 VOS read pipeline,返回 typed rows。 */
|
|
92
|
+
query<T = Record<string, unknown>>(source: string): Promise<T[]>;
|
|
93
|
+
/** 执行 VOS write program。 */
|
|
94
|
+
execute(source: string): Promise<void>;
|
|
95
|
+
/** 发布新 schema 版本。 */
|
|
96
|
+
migrateSchema(documentOrSource: string | EmittableItem, ...rest: (EmittableItem | MigrateOptions)[]): Promise<void>;
|
|
39
97
|
/** 执行检查点(折叠 WAL)。 */
|
|
40
98
|
checkpoint(): Promise<void>;
|
|
41
|
-
/** 数据库统计(暂不可用)。 */
|
|
42
|
-
stats(): never;
|
|
43
99
|
/** 关闭 session。 */
|
|
44
100
|
close(): Promise<void>;
|
|
45
101
|
}
|
|
46
|
-
/**
|
|
47
|
-
export declare function openLightDatabase(name: string, options?:
|
|
102
|
+
/** 打开浏览器数据库的便捷函数(等价于 {@link Database.open})。 */
|
|
103
|
+
export declare function openLightDatabase(name: string, options?: OpenOptions): Promise<Database>;
|
|
48
104
|
//# sourceMappingURL=database.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/api/database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/api/database.ts"],"names":[],"mappings":"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"}
|
package/dist/api/database.js
CHANGED
|
@@ -1,7 +1,81 @@
|
|
|
1
1
|
import { initWasm, openPersistentSession, createMemorySession, } from '@yydb/yydb-unknown-wasm32';
|
|
2
2
|
import { emitSource } from '@voml/vos';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { LightDbError } from '../errors/index.js';
|
|
4
|
+
/** Transaction-local handle for callback-style transactions. */
|
|
5
|
+
export class TransactionHandle {
|
|
6
|
+
session;
|
|
7
|
+
constructor(session) {
|
|
8
|
+
this.session = session;
|
|
9
|
+
}
|
|
10
|
+
parseResult(raw) {
|
|
11
|
+
const parsed = JSON.parse(raw);
|
|
12
|
+
if (!parsed.ok) {
|
|
13
|
+
const err = LightDbError.fromDiagnosticJson(parsed.error);
|
|
14
|
+
throw err ?? new Error(typeof parsed.error === 'string' ? parsed.error : 'wasm error');
|
|
15
|
+
}
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
async get(key) {
|
|
19
|
+
const raw = JSON.parse(this.session.get(key));
|
|
20
|
+
if (!raw.ok)
|
|
21
|
+
throw new Error(raw.error);
|
|
22
|
+
if (raw.value === null || raw.value === undefined)
|
|
23
|
+
return null;
|
|
24
|
+
if (Array.isArray(raw.value))
|
|
25
|
+
return new Uint8Array(raw.value);
|
|
26
|
+
return new Uint8Array(raw.value);
|
|
27
|
+
}
|
|
28
|
+
async put(key, value) {
|
|
29
|
+
const bytes = typeof value === 'string' ? new TextEncoder().encode(value) : value;
|
|
30
|
+
this.parseResult(this.session.put(key, bytes));
|
|
31
|
+
}
|
|
32
|
+
async delete(key) {
|
|
33
|
+
this.parseResult(this.session.delete(key));
|
|
34
|
+
}
|
|
35
|
+
async scan(options = {}) {
|
|
36
|
+
const raw = JSON.parse(this.session.scanPrefix(options.prefix ?? '', options.after ?? null, options.limit ?? 1000));
|
|
37
|
+
if (!raw.ok)
|
|
38
|
+
throw new Error(raw.error);
|
|
39
|
+
return (raw.rows ?? []).map((r) => ({
|
|
40
|
+
key: r.key,
|
|
41
|
+
value: new Uint8Array(r.value),
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
async batch(changes) {
|
|
45
|
+
const body = changes.map((c) => ({
|
|
46
|
+
key: c.key,
|
|
47
|
+
value: c.value === null ? null : typeof c.value === 'string' ? Array.from(new TextEncoder().encode(c.value)) : Array.from(c.value),
|
|
48
|
+
}));
|
|
49
|
+
this.parseResult(this.session.writeBatch(new TextEncoder().encode(JSON.stringify(body))));
|
|
50
|
+
}
|
|
51
|
+
async compareExchange(key, expected, replacement) {
|
|
52
|
+
const toBytes = (v) => v === null ? null : typeof v === 'string' ? new TextEncoder().encode(v) : v;
|
|
53
|
+
const raw = JSON.parse(this.session.compareExchange(key, toBytes(expected), toBytes(replacement)));
|
|
54
|
+
if (!raw.ok)
|
|
55
|
+
throw new Error(raw.error);
|
|
56
|
+
return raw.success ?? false;
|
|
57
|
+
}
|
|
58
|
+
async query(source) {
|
|
59
|
+
const raw = JSON.parse(this.session.queryVos(source));
|
|
60
|
+
if (!raw.ok)
|
|
61
|
+
throw new Error(raw.error);
|
|
62
|
+
return (raw.rows ?? []);
|
|
63
|
+
}
|
|
64
|
+
async execute(source) {
|
|
65
|
+
this.parseResult(this.session.executeVosWrite(source));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Browser/WASM 侧 YYDB 数据库句柄。
|
|
70
|
+
*
|
|
71
|
+
* 与 `@yydb/yydb` 的 {@link Database} 同名——宿主靠 import 来源区分:
|
|
72
|
+
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* import { Database } from '@yydb/yydb'; // Node 原生
|
|
75
|
+
* import { Database } from '@yydb/light-db'; // 浏览器 WASM
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export class Database {
|
|
5
79
|
/** 数据库名(OPFS 路径)。 */
|
|
6
80
|
name;
|
|
7
81
|
session;
|
|
@@ -15,106 +89,140 @@ export class BrowserDatabase {
|
|
|
15
89
|
throw new Error('database name must not be empty');
|
|
16
90
|
}
|
|
17
91
|
await initWasm();
|
|
18
|
-
const
|
|
92
|
+
const session = options.memory
|
|
19
93
|
? createMemorySession()
|
|
20
94
|
: openPersistentSession(name);
|
|
21
|
-
return new
|
|
95
|
+
return new Database(name, session);
|
|
22
96
|
}
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
if (!
|
|
27
|
-
|
|
97
|
+
/** 解析 WASM JSON 结果,失败时转 LightDbError。 */
|
|
98
|
+
parseResult(raw) {
|
|
99
|
+
const parsed = JSON.parse(raw);
|
|
100
|
+
if (!parsed.ok) {
|
|
101
|
+
const err = LightDbError.fromDiagnosticJson(parsed.error);
|
|
102
|
+
throw err ?? new Error(typeof parsed.error === 'string' ? parsed.error : 'wasm error');
|
|
28
103
|
}
|
|
29
|
-
|
|
104
|
+
return parsed;
|
|
105
|
+
}
|
|
106
|
+
/** 读取已持久化的 schema,或 `null`。 */
|
|
107
|
+
async getSchema() {
|
|
108
|
+
const raw = this.parseResult(this.session.getSchema());
|
|
109
|
+
if (!raw.schema)
|
|
30
110
|
return null;
|
|
31
|
-
}
|
|
32
111
|
return raw.schema;
|
|
33
112
|
}
|
|
34
|
-
/**
|
|
35
|
-
* 声明 schema 文档。接受原始 `.vos` 源码字符串,或 `@voml/vos`
|
|
36
|
-
* descriptor(`v.table()` / `v.class()`),或多个 descriptor。
|
|
37
|
-
*/
|
|
113
|
+
/** 声明 schema 文档。 */
|
|
38
114
|
async ensureSchema(...input) {
|
|
39
115
|
const document = typeof input[0] === 'string' ? input[0] : emitSource(input);
|
|
40
|
-
|
|
41
|
-
if (!raw.ok) {
|
|
42
|
-
throw new Error(raw.error ?? 'ensureSchema failed');
|
|
43
|
-
}
|
|
116
|
+
this.parseResult(this.session.ensureSchema(document));
|
|
44
117
|
}
|
|
45
118
|
/** 读取键,或 `null`。 */
|
|
46
119
|
async get(key) {
|
|
47
120
|
const raw = JSON.parse(this.session.get(key));
|
|
48
|
-
if (!raw.ok)
|
|
49
|
-
throw
|
|
50
|
-
|
|
51
|
-
if (raw.value === null || raw.value === undefined) {
|
|
121
|
+
if (!raw.ok)
|
|
122
|
+
throw (LightDbError.fromDiagnosticJson(raw.error) ?? new Error(raw.error));
|
|
123
|
+
if (raw.value === null || raw.value === undefined)
|
|
52
124
|
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)) {
|
|
125
|
+
if (Array.isArray(raw.value))
|
|
59
126
|
return new Uint8Array(raw.value);
|
|
60
|
-
}
|
|
61
|
-
// 兜底:如果是 base64 字符串等,尝试 new Uint8Array
|
|
62
127
|
return new Uint8Array(raw.value);
|
|
63
128
|
}
|
|
64
129
|
/** 写入键。 */
|
|
65
130
|
async put(key, value) {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
throw new Error(raw.error ?? `put(${key}) failed`);
|
|
69
|
-
}
|
|
131
|
+
const bytes = typeof value === 'string' ? new TextEncoder().encode(value) : value;
|
|
132
|
+
this.parseResult(this.session.put(key, bytes));
|
|
70
133
|
}
|
|
71
|
-
/**
|
|
134
|
+
/** 删除键。 */
|
|
72
135
|
async delete(key) {
|
|
73
|
-
|
|
74
|
-
if (!raw.ok) {
|
|
75
|
-
throw new Error(raw.error ?? `delete(${key}) failed`);
|
|
76
|
-
}
|
|
77
|
-
return true;
|
|
136
|
+
this.parseResult(this.session.delete(key));
|
|
78
137
|
}
|
|
79
|
-
/**
|
|
80
|
-
async
|
|
81
|
-
const raw = JSON.parse(this.session.
|
|
82
|
-
if (!raw.ok)
|
|
83
|
-
throw
|
|
84
|
-
|
|
138
|
+
/** 扫描键值对。 */
|
|
139
|
+
async scan(options = {}) {
|
|
140
|
+
const raw = JSON.parse(this.session.scanPrefix(options.prefix ?? '', options.after ?? null, options.limit ?? 1000));
|
|
141
|
+
if (!raw.ok)
|
|
142
|
+
throw (LightDbError.fromDiagnosticJson(raw.error) ?? new Error(raw.error));
|
|
143
|
+
return (raw.rows ?? []).map((r) => ({
|
|
144
|
+
key: r.key,
|
|
145
|
+
value: new Uint8Array(r.value),
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
/** 原子批量写入/删除。 */
|
|
149
|
+
async batch(changes) {
|
|
150
|
+
const body = changes.map((c) => ({
|
|
151
|
+
key: c.key,
|
|
152
|
+
value: c.value === null ? null : typeof c.value === 'string' ? Array.from(new TextEncoder().encode(c.value)) : Array.from(c.value),
|
|
153
|
+
}));
|
|
154
|
+
this.parseResult(this.session.writeBatch(new TextEncoder().encode(JSON.stringify(body))));
|
|
155
|
+
}
|
|
156
|
+
/** Compare-and-swap。 */
|
|
157
|
+
async compareExchange(key, expected, replacement) {
|
|
158
|
+
const toBytes = (v) => v === null ? null : typeof v === 'string' ? new TextEncoder().encode(v) : v;
|
|
159
|
+
const raw = JSON.parse(this.session.compareExchange(key, toBytes(expected), toBytes(replacement)));
|
|
160
|
+
if (!raw.ok)
|
|
161
|
+
throw (LightDbError.fromDiagnosticJson(raw.error) ?? new Error(raw.error));
|
|
162
|
+
return raw.success ?? false;
|
|
85
163
|
}
|
|
86
|
-
/**
|
|
87
|
-
async
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
164
|
+
/** Callback-style 事务:自动 begin/commit,异常自动 rollback。 */
|
|
165
|
+
async transaction(fn) {
|
|
166
|
+
this.parseResult(this.session.begin());
|
|
167
|
+
const tx = new TransactionHandle(this.session);
|
|
168
|
+
try {
|
|
169
|
+
const result = await fn(tx);
|
|
170
|
+
this.parseResult(this.session.commit());
|
|
171
|
+
return result;
|
|
91
172
|
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
try {
|
|
175
|
+
this.session.rollback();
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// don't mask original
|
|
179
|
+
}
|
|
180
|
+
throw err;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/** 执行 VOS read pipeline,返回 typed rows。 */
|
|
184
|
+
async query(source) {
|
|
185
|
+
const raw = JSON.parse(this.session.queryVos(source));
|
|
186
|
+
if (!raw.ok)
|
|
187
|
+
throw (LightDbError.fromDiagnosticJson(raw.error) ?? new Error(raw.error));
|
|
188
|
+
return (raw.rows ?? []);
|
|
92
189
|
}
|
|
93
|
-
/**
|
|
94
|
-
async
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
190
|
+
/** 执行 VOS write program。 */
|
|
191
|
+
async execute(source) {
|
|
192
|
+
this.parseResult(this.session.executeVosWrite(source));
|
|
193
|
+
}
|
|
194
|
+
/** 发布新 schema 版本。 */
|
|
195
|
+
async migrateSchema(documentOrSource, ...rest) {
|
|
196
|
+
let document;
|
|
197
|
+
let options = {};
|
|
198
|
+
const all = [documentOrSource, ...rest];
|
|
199
|
+
const last = all[all.length - 1];
|
|
200
|
+
if (last && typeof last === 'object' &&
|
|
201
|
+
!('table' in last) &&
|
|
202
|
+
!('class' in last) &&
|
|
203
|
+
('renames' in last || Object.keys(last).length === 0)) {
|
|
204
|
+
options = all.pop() ?? {};
|
|
205
|
+
}
|
|
206
|
+
if (typeof all[0] === 'string') {
|
|
207
|
+
document = all[0];
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
document = emitSource(all);
|
|
98
211
|
}
|
|
212
|
+
const renamesJson = options.renames?.length ? JSON.stringify(options.renames) : null;
|
|
213
|
+
this.parseResult(this.session.migrateSchema(document, renamesJson));
|
|
99
214
|
}
|
|
100
215
|
/** 执行检查点(折叠 WAL)。 */
|
|
101
216
|
async checkpoint() {
|
|
102
|
-
|
|
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');
|
|
217
|
+
this.parseResult(this.session.checkpoint());
|
|
110
218
|
}
|
|
111
219
|
/** 关闭 session。 */
|
|
112
220
|
async close() {
|
|
113
221
|
this.session.close();
|
|
114
222
|
}
|
|
115
223
|
}
|
|
116
|
-
/**
|
|
224
|
+
/** 打开浏览器数据库的便捷函数(等价于 {@link Database.open})。 */
|
|
117
225
|
export async function openLightDatabase(name, options = {}) {
|
|
118
|
-
return
|
|
226
|
+
return Database.open(name, options);
|
|
119
227
|
}
|
|
120
228
|
//# sourceMappingURL=database.js.map
|
package/dist/api/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/api/database.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,GAEtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAsB,MAAM,WAAW,CAAC;
|
|
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,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* api 层导出
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { Database, openLightDatabase } from './database';
|
|
5
|
+
export type { OpenOptions, ScanRow, ScanOptions, BatchChange, MigrateOptions } from './database';
|
|
5
6
|
export { Transaction } from './transaction';
|
|
6
7
|
export type { TransactionState } from './transaction';
|
|
7
8
|
export { SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema } from './schema';
|
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;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjG,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,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* api 层导出
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { Database, openLightDatabase } from './database';
|
|
5
5
|
export { Transaction } from './transaction';
|
|
6
6
|
export { SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema } from './schema';
|
|
7
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzD,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"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* 稳定错误模型
|
|
3
3
|
*
|
|
4
4
|
* 与 `@yydb/yydb` / `@yydb/yydb-client` 共用同一组错误码:宿主只按 `code` 分支,
|
|
5
|
-
* `message`
|
|
5
|
+
* `message` 只用于显示。所有边界表面(N-API reason field、WASM JSON envelope、
|
|
6
|
+
* wire protocol)都承载 `yydb::Error::to_json` 产生的同一 `{ code, operation,
|
|
7
|
+
* retryable, message, params? }` 合同。
|
|
6
8
|
*/
|
|
7
9
|
/** 浏览器产品对外的稳定错误码 */
|
|
8
10
|
export declare const LightDbErrorCodes: {
|
|
@@ -23,12 +25,12 @@ export declare const LightDbErrorCodes: {
|
|
|
23
25
|
/** 存储配额不足 */
|
|
24
26
|
readonly quotaExceeded: "yydb.quota.exceeded";
|
|
25
27
|
};
|
|
26
|
-
/**
|
|
27
|
-
* 数据库错误选项
|
|
28
|
-
*/
|
|
28
|
+
/** 数据库错误选项 */
|
|
29
29
|
export interface LightDbErrorOptions {
|
|
30
30
|
/** 失败的操作(`schemaGet`、`kvPut` 等) */
|
|
31
31
|
operation?: string;
|
|
32
|
+
/** 结构化参数(catalog 模板用) */
|
|
33
|
+
params?: Readonly<Record<string, string>>;
|
|
32
34
|
/** 底层失败 */
|
|
33
35
|
cause?: unknown;
|
|
34
36
|
}
|
|
@@ -42,6 +44,25 @@ export declare class LightDbError extends Error {
|
|
|
42
44
|
readonly operation: string;
|
|
43
45
|
/** 是否可以用相同参数重试 */
|
|
44
46
|
readonly retryable: boolean;
|
|
47
|
+
/** 结构化参数(存在时) */
|
|
48
|
+
readonly params?: Readonly<Record<string, string>>;
|
|
45
49
|
constructor(code: string, message: string, options?: LightDbErrorOptions);
|
|
50
|
+
/**
|
|
51
|
+
* 解析 N-API / WASM 边界表面塞在 message 里的诊断 JSON。
|
|
52
|
+
*
|
|
53
|
+
* ```ts
|
|
54
|
+
* try {
|
|
55
|
+
* await db.put('key', value);
|
|
56
|
+
* } catch (err) {
|
|
57
|
+
* const parsed = LightDbError.fromDiagnosticJson(
|
|
58
|
+
* err instanceof Error ? err.message : String(err),
|
|
59
|
+
* );
|
|
60
|
+
* if (parsed) {
|
|
61
|
+
* // branch on parsed.code / retryable / operation
|
|
62
|
+
* }
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
static fromDiagnosticJson(value: unknown): LightDbError | null;
|
|
46
67
|
}
|
|
47
68
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oBAAoB;AACpB,eAAO,MAAM,iBAAiB;IAC1B,aAAa;;IAEb,cAAc;;IAEd,yBAAyB;;IAEzB,mBAAmB;;IAEnB,eAAe;;IAEf,gBAAgB;;IAEhB,+BAA+B;;IAE/B,aAAa;;CAEP,CAAC;AAWX,cAAc;AACd,MAAM,WAAW,mBAAmB;IAChC,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACnC,YAAY;IACZ,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,YAAY;IACZ,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC,kBAAkB;IAClB,SAAgB,SAAS,EAAE,OAAO,CAAC;IAEnC,iBAAiB;IACjB,SAAgB,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;gBAE9C,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;IAY5E;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;CAuCjE"}
|
package/dist/errors/index.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* 稳定错误模型
|
|
3
3
|
*
|
|
4
4
|
* 与 `@yydb/yydb` / `@yydb/yydb-client` 共用同一组错误码:宿主只按 `code` 分支,
|
|
5
|
-
* `message`
|
|
5
|
+
* `message` 只用于显示。所有边界表面(N-API reason field、WASM JSON envelope、
|
|
6
|
+
* wire protocol)都承载 `yydb::Error::to_json` 产生的同一 `{ code, operation,
|
|
7
|
+
* retryable, message, params? }` 合同。
|
|
6
8
|
*/
|
|
7
9
|
/** 浏览器产品对外的稳定错误码 */
|
|
8
10
|
export const LightDbErrorCodes = {
|
|
@@ -24,7 +26,13 @@ export const LightDbErrorCodes = {
|
|
|
24
26
|
quotaExceeded: 'yydb.quota.exceeded',
|
|
25
27
|
};
|
|
26
28
|
/** 相同参数重试即可成功的错误码 */
|
|
27
|
-
const RETRYABLE_CODES = new Set([
|
|
29
|
+
const RETRYABLE_CODES = new Set([
|
|
30
|
+
LightDbErrorCodes.leaseUnavailable,
|
|
31
|
+
// WASM core 还可能返回这些 engine 码,LightDbError 也要认
|
|
32
|
+
'yydb.lease.expired',
|
|
33
|
+
'yydb.protocol',
|
|
34
|
+
'yydb.cas.conflict',
|
|
35
|
+
]);
|
|
28
36
|
/**
|
|
29
37
|
* 携带稳定错误码的数据库错误
|
|
30
38
|
*/
|
|
@@ -35,13 +43,79 @@ export class LightDbError extends Error {
|
|
|
35
43
|
operation;
|
|
36
44
|
/** 是否可以用相同参数重试 */
|
|
37
45
|
retryable;
|
|
46
|
+
/** 结构化参数(存在时) */
|
|
47
|
+
params;
|
|
38
48
|
constructor(code, message, options = {}) {
|
|
39
49
|
super(message, { cause: options.cause });
|
|
40
50
|
this.name = 'LightDbError';
|
|
41
51
|
this.code = code;
|
|
42
52
|
this.operation = options.operation ?? 'unknown';
|
|
43
53
|
this.retryable = RETRYABLE_CODES.has(code);
|
|
54
|
+
if (options.params !== undefined) {
|
|
55
|
+
this.params = options.params;
|
|
56
|
+
}
|
|
44
57
|
Object.setPrototypeOf(this, LightDbError.prototype);
|
|
45
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* 解析 N-API / WASM 边界表面塞在 message 里的诊断 JSON。
|
|
61
|
+
*
|
|
62
|
+
* ```ts
|
|
63
|
+
* try {
|
|
64
|
+
* await db.put('key', value);
|
|
65
|
+
* } catch (err) {
|
|
66
|
+
* const parsed = LightDbError.fromDiagnosticJson(
|
|
67
|
+
* err instanceof Error ? err.message : String(err),
|
|
68
|
+
* );
|
|
69
|
+
* if (parsed) {
|
|
70
|
+
* // branch on parsed.code / retryable / operation
|
|
71
|
+
* }
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
static fromDiagnosticJson(value) {
|
|
76
|
+
let obj;
|
|
77
|
+
if (typeof value === 'string') {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(value);
|
|
80
|
+
if (!parsed || typeof parsed !== 'object')
|
|
81
|
+
return null;
|
|
82
|
+
obj = parsed;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (value && typeof value === 'object') {
|
|
89
|
+
obj = value;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
// WASM envelope 会是 { ok: false, error: { code, operation, ... } },
|
|
95
|
+
// 也可能直接 { code, operation, ... }。
|
|
96
|
+
let diag = obj;
|
|
97
|
+
if (typeof obj['ok'] === 'boolean' && !obj['ok'] && obj['error'] && typeof obj['error'] === 'object') {
|
|
98
|
+
diag = obj['error'];
|
|
99
|
+
}
|
|
100
|
+
const code = typeof diag['code'] === 'string' ? diag['code'] : null;
|
|
101
|
+
const message = typeof diag['message'] === 'string' ? diag['message'] : '';
|
|
102
|
+
if (!code)
|
|
103
|
+
return null;
|
|
104
|
+
const operation = typeof diag['operation'] === 'string' ? diag['operation'] : undefined;
|
|
105
|
+
const retryable = typeof diag['retryable'] === 'boolean' ? diag['retryable'] : undefined;
|
|
106
|
+
const params = diag['params'] && typeof diag['params'] === 'object'
|
|
107
|
+
? diag['params']
|
|
108
|
+
: undefined;
|
|
109
|
+
const options = {};
|
|
110
|
+
if (operation !== undefined)
|
|
111
|
+
options.operation = operation;
|
|
112
|
+
if (params !== undefined)
|
|
113
|
+
options.params = params;
|
|
114
|
+
const err = new LightDbError(code, message, options);
|
|
115
|
+
if (typeof retryable === 'boolean') {
|
|
116
|
+
err.retryable = retryable;
|
|
117
|
+
}
|
|
118
|
+
return err;
|
|
119
|
+
}
|
|
46
120
|
}
|
|
47
121
|
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,6 @@ export { STORAGE_FILES, MemoryStorageAdapter, MemoryStorageBackend, OpfsStorageA
|
|
|
14
14
|
export type { StorageAdapter, StorageAdapterFactory, StorageAdapterKind, StorageFile, StorageHandle, StorageOpenMode } from './storage';
|
|
15
15
|
export { StorageEngine, DEFAULT_WAL_THRESHOLD, acquireWriterLease, listenDatabaseEvents } from './core';
|
|
16
16
|
export type { CheckpointResult, LeaseMode, RecoveryOutcome, StorageEngineOptions, StorageEngineStats, TransactionState, DatabaseEvent, DatabaseEventType, WriterLease, } from './core';
|
|
17
|
-
export {
|
|
18
|
-
export type { LightDatabase, LightDatabaseOptions, SchemaVersion } from './api';
|
|
17
|
+
export { Database, openLightDatabase, Transaction, SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema, } from './api';
|
|
18
|
+
export type { OpenOptions, ScanRow, ScanOptions, BatchChange, MigrateOptions, LightDatabase, LightDatabaseOptions, SchemaVersion } from './api';
|
|
19
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,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;AACjB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG9F,OAAO,EACH,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,oBAAoB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGxI,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AACxG,YAAY,EACR,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,WAAW,GACd,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,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;AACjB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG9F,OAAO,EACH,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,8BAA8B,EAC9B,oBAAoB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGxI,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AACxG,YAAY,EACR,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,WAAW,GACd,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACH,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACf,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,5 +15,5 @@ export { STORAGE_FILES, MemoryStorageAdapter, MemoryStorageBackend, OpfsStorageA
|
|
|
15
15
|
// 数据库语义
|
|
16
16
|
export { StorageEngine, DEFAULT_WAL_THRESHOLD, acquireWriterLease, listenDatabaseEvents } from './core';
|
|
17
17
|
// 作者面
|
|
18
|
-
export {
|
|
18
|
+
export { Database, openLightDatabase, Transaction, SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema, } from './api';
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACf,MAAM,OAAO,CAAC"}
|