@yydb/light-db 0.0.17 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/api/index.d.ts +4 -9
  2. package/dist/api/index.d.ts.map +1 -1
  3. package/dist/api/index.js +3 -6
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/types.d.ts +71 -42
  6. package/dist/api/types.d.ts.map +1 -1
  7. package/dist/api/types.js +5 -3
  8. package/dist/api/types.js.map +1 -1
  9. package/dist/api/wasm-database.d.ts +134 -27
  10. package/dist/api/wasm-database.d.ts.map +1 -1
  11. package/dist/api/wasm-database.js +172 -28
  12. package/dist/api/wasm-database.js.map +1 -1
  13. package/dist/index.d.ts +14 -11
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +14 -11
  16. package/dist/index.js.map +1 -1
  17. package/dist/shared/micro.d.ts +86 -0
  18. package/dist/shared/micro.d.ts.map +1 -0
  19. package/dist/shared/micro.js +194 -0
  20. package/dist/shared/micro.js.map +1 -0
  21. package/dist/shared/udf-types.d.ts +31 -0
  22. package/dist/shared/udf-types.d.ts.map +1 -0
  23. package/dist/shared/udf-types.js +12 -0
  24. package/dist/shared/udf-types.js.map +1 -0
  25. package/package.json +5 -7
  26. package/readme.md +60 -63
  27. package/dist/api/database.d.ts +0 -101
  28. package/dist/api/database.d.ts.map +0 -1
  29. package/dist/api/database.js +0 -149
  30. package/dist/api/database.js.map +0 -1
  31. package/dist/api/schema.d.ts +0 -33
  32. package/dist/api/schema.d.ts.map +0 -1
  33. package/dist/api/schema.js +0 -80
  34. package/dist/api/schema.js.map +0 -1
  35. package/dist/api/transaction.d.ts +0 -26
  36. package/dist/api/transaction.d.ts.map +0 -1
  37. package/dist/api/transaction.js +0 -52
  38. package/dist/api/transaction.js.map +0 -1
  39. package/dist/codec/binary.d.ts +0 -196
  40. package/dist/codec/binary.d.ts.map +0 -1
  41. package/dist/codec/binary.js +0 -342
  42. package/dist/codec/binary.js.map +0 -1
  43. package/dist/codec/checksum.d.ts +0 -21
  44. package/dist/codec/checksum.d.ts.map +0 -1
  45. package/dist/codec/checksum.js +0 -46
  46. package/dist/codec/checksum.js.map +0 -1
  47. package/dist/codec/index.d.ts +0 -12
  48. package/dist/codec/index.d.ts.map +0 -1
  49. package/dist/codec/index.js +0 -10
  50. package/dist/codec/index.js.map +0 -1
  51. package/dist/codec/page.d.ts +0 -114
  52. package/dist/codec/page.d.ts.map +0 -1
  53. package/dist/codec/page.js +0 -225
  54. package/dist/codec/page.js.map +0 -1
  55. package/dist/codec/record.d.ts +0 -62
  56. package/dist/codec/record.d.ts.map +0 -1
  57. package/dist/codec/record.js +0 -82
  58. package/dist/codec/record.js.map +0 -1
  59. package/dist/core/broadcast.d.ts +0 -39
  60. package/dist/core/broadcast.d.ts.map +0 -1
  61. package/dist/core/broadcast.js +0 -54
  62. package/dist/core/broadcast.js.map +0 -1
  63. package/dist/core/checkpoint.d.ts +0 -23
  64. package/dist/core/checkpoint.d.ts.map +0 -1
  65. package/dist/core/checkpoint.js +0 -49
  66. package/dist/core/checkpoint.js.map +0 -1
  67. package/dist/core/engine.d.ts +0 -142
  68. package/dist/core/engine.d.ts.map +0 -1
  69. package/dist/core/engine.js +0 -304
  70. package/dist/core/engine.js.map +0 -1
  71. package/dist/core/index.d.ts +0 -17
  72. package/dist/core/index.d.ts.map +0 -1
  73. package/dist/core/index.js +0 -13
  74. package/dist/core/index.js.map +0 -1
  75. package/dist/core/lease.d.ts +0 -32
  76. package/dist/core/lease.d.ts.map +0 -1
  77. package/dist/core/lease.js +0 -81
  78. package/dist/core/lease.js.map +0 -1
  79. package/dist/core/records.d.ts +0 -49
  80. package/dist/core/records.d.ts.map +0 -1
  81. package/dist/core/records.js +0 -70
  82. package/dist/core/records.js.map +0 -1
  83. package/dist/core/recovery.d.ts +0 -43
  84. package/dist/core/recovery.d.ts.map +0 -1
  85. package/dist/core/recovery.js +0 -99
  86. package/dist/core/recovery.js.map +0 -1
  87. package/dist/core/wal.d.ts +0 -50
  88. package/dist/core/wal.d.ts.map +0 -1
  89. package/dist/core/wal.js +0 -114
  90. package/dist/core/wal.js.map +0 -1
  91. package/dist/storage/StorageAdapter.d.ts +0 -97
  92. package/dist/storage/StorageAdapter.d.ts.map +0 -1
  93. package/dist/storage/StorageAdapter.js +0 -9
  94. package/dist/storage/StorageAdapter.js.map +0 -1
  95. package/dist/storage/index.d.ts +0 -11
  96. package/dist/storage/index.d.ts.map +0 -1
  97. package/dist/storage/index.js +0 -10
  98. package/dist/storage/index.js.map +0 -1
  99. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +0 -140
  100. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +0 -1
  101. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +0 -403
  102. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +0 -1
  103. package/dist/storage/memory/MemoryStorageAdapter.d.ts +0 -76
  104. package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +0 -1
  105. package/dist/storage/memory/MemoryStorageAdapter.js +0 -212
  106. package/dist/storage/memory/MemoryStorageAdapter.js.map +0 -1
  107. package/dist/storage/opfs/OpfsStorageAdapter.d.ts +0 -141
  108. package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +0 -1
  109. package/dist/storage/opfs/OpfsStorageAdapter.js +0 -400
  110. package/dist/storage/opfs/OpfsStorageAdapter.js.map +0 -1
@@ -1,14 +1,9 @@
1
1
  /**
2
2
  * api 层导出
3
3
  *
4
- * 主线是 {@link Database}(纯 TS,无 WASM 依赖,与 Node 侧 `@yydb/yydb` 同构)。
5
- * 需要 WASM 可选后端的宿主显式从 `./wasm-database` 引入 {@link WasmDatabase}。
4
+ * 唯一的生产路径:{@link Database}(WASM-backed,委托给
5
+ * `@yydb/yydb-unknown-wasm32` 的 Rust 语义核心)。
6
6
  */
7
- export { Database } from './database';
8
- export type { OpenOptions, ScanRow, ScanOptions, BatchChange, MigrateOptions, SchemaVersion } from './database';
9
- export { WasmDatabase, TransactionHandle, openLightDatabase } from './wasm-database';
10
- export { Transaction } from './transaction';
11
- export type { TransactionState } from './transaction';
12
- export { SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema } from './schema';
13
- export type { LightDatabase, LightDatabaseOptions } from './types';
7
+ export { Database, TransactionHandle, openLightDatabase } from './wasm-database';
8
+ export type { BatchChange, LightDatabase, MigrateOptions, OpenOptions, ScanOptions, ScanRow, SchemaVersion, } from './types';
14
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErF,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,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,YAAY,EACR,WAAW,EACX,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,OAAO,EACP,aAAa,GAChB,MAAM,SAAS,CAAC"}
package/dist/api/index.js CHANGED
@@ -1,11 +1,8 @@
1
1
  /**
2
2
  * api 层导出
3
3
  *
4
- * 主线是 {@link Database}(纯 TS,无 WASM 依赖,与 Node 侧 `@yydb/yydb` 同构)。
5
- * 需要 WASM 可选后端的宿主显式从 `./wasm-database` 引入 {@link WasmDatabase}。
4
+ * 唯一的生产路径:{@link Database}(WASM-backed,委托给
5
+ * `@yydb/yydb-unknown-wasm32` 的 Rust 语义核心)。
6
6
  */
7
- export { Database } from './database';
8
- export { WasmDatabase, TransactionHandle, openLightDatabase } from './wasm-database';
9
- export { Transaction } from './transaction';
10
- export { SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema } from './schema';
7
+ export { Database, TransactionHandle, openLightDatabase } from './wasm-database';
11
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErF,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,61 +1,90 @@
1
1
  /**
2
- * 浏览器数据库作者面类型
2
+ * Browser database authoring-surface types.
3
3
  *
4
- * 这些类型是 `@yydb/light-db` 的稳定合同:二进制一律 `Uint8Array`,
5
- * 不出现本地路径、文件句柄或 Node 专属类型。
4
+ * These are the stable contract for `@yydb/light-db`:
5
+ * - Binary values are always `Uint8Array` — never `Buffer`.
6
+ * - No local file paths, file handles, or Node-exclusive types leak through.
7
+ * - Aligned with the Node-side `@yydb/yydb` method names and return semantics.
6
8
  */
7
- import type { LeaseMode } from '../core/lease';
8
- import type { CheckpointResult, StorageEngineStats } from '../core/engine';
9
- import type { StorageAdapterFactory } from '../storage/StorageAdapter';
10
- /** Schema 版本与文档,与 `@yydb/yydb` 同构 */
9
+ /** Schema version and document (aligned with `@yydb/yydb`). */
11
10
  export interface SchemaVersion {
12
- /** Schema 版本 */
13
11
  version: number;
14
- /** Schema 文档全文 */
15
12
  document: string;
16
13
  }
17
- /** 打开数据库的选项 */
18
- export interface LightDatabaseOptions {
19
- /** 页大小,默认 4KB */
20
- pageSize?: number;
21
- /** WAL 字节阈值,超过后自动检查点,默认 16MB */
22
- walThreshold?: number;
23
- /** 是否自动检查点,默认 true */
24
- autoCheckpoint?: boolean;
25
- /** 写租约模式,默认 `web-locks` */
26
- lease?: LeaseMode;
27
- /** 存储后端,默认 OPFS */
28
- storage?: StorageAdapterFactory;
14
+ /** One row from {@link Database.scan}. */
15
+ export interface ScanRow {
16
+ key: string;
17
+ value: Uint8Array;
18
+ }
19
+ /** Options for {@link Database.scan}. */
20
+ export interface ScanOptions {
21
+ /** Include this prefix in every returned key; default `""` returns everything. */
22
+ prefix?: string;
23
+ /** Exclusive continuation cursor from a previous scan's last row; default `null` starts fresh. */
24
+ after?: string | null;
25
+ /** Max rows returned per call; default `1000`. */
26
+ limit?: number;
27
+ }
28
+ /** One change in {@link Database.batch}. Use `null` to delete. */
29
+ export interface BatchChange {
30
+ key: string;
31
+ value: Uint8Array | string | null;
32
+ }
33
+ /** Options for {@link Database.migrateSchema}. */
34
+ export interface MigrateOptions {
35
+ /** Rename entries — `fromType`/`toType` updates a type name; `type`/`fromField`/`toField` updates one field. */
36
+ renames?: ReadonlyArray<{
37
+ fromType: string;
38
+ toType: string;
39
+ } | {
40
+ type: string;
41
+ fromField: string;
42
+ toField: string;
43
+ }>;
44
+ }
45
+ /** Options for opening the WASM-backed {@link Database}. */
46
+ export interface OpenOptions {
47
+ /** Use an in-memory session (test only; default is OPFS persistent). */
48
+ memory?: boolean;
29
49
  }
30
50
  /**
31
- * 浏览器数据库
32
- *
33
- * 与 `@yydb/yydb` 的 TypeScript 作者面保持同一调用形态与返回语义。
51
+ * Light database contract — aligned with the Node-side `@yydb/yydb`.
52
+ * Only the WASM-backed {@link Database} implements this in production;
53
+ * the formerly pure-TS backend has been removed.
34
54
  */
35
55
  export interface LightDatabase {
36
- /** 数据库名 */
56
+ /** Database name (OPFS path / namespace). */
37
57
  readonly name: string;
38
- /** 读取已持久化的 schema */
39
- schema(): Promise<SchemaVersion | null>;
40
- /** 声明 schema 文档,文档是唯一真相 */
41
- ensureSchema(document: string): Promise<void>;
42
- /** 读取键 */
58
+ /** Engine version string. */
59
+ serverVersion(): string;
60
+ /** Basic diagnostics — session info from the engine. */
61
+ info(): string;
62
+ /** Published schema metadata, or `null` before the first schema. */
63
+ getSchema(): Promise<SchemaVersion | null>;
64
+ /**
65
+ * Validate and publish a VOS schema document. Accepts raw `.vos`
66
+ * source or `@voml/vos` descriptors (e.g. `v.table()`, `v.class()`).
67
+ */
68
+ ensureSchema(...input: [string] | object[]): Promise<void>;
69
+ /** Read one record, or `null`. */
43
70
  get(key: string): Promise<Uint8Array | null>;
44
- /** 写入键 */
45
- put(key: string, value: Uint8Array): Promise<void>;
46
- /** 删除键,键存在时返回 true */
47
- delete(key: string): Promise<boolean>;
48
- /** 开启事务 */
71
+ /** Insert or replace one record. */
72
+ put(key: string, value: Uint8Array | string): Promise<void>;
73
+ /** Delete one record. Silently succeeds when absent. */
74
+ delete(key: string): Promise<void>;
75
+ /** Fold the WAL into the main storage. */
76
+ checkpoint(): Promise<void>;
77
+ /** Begin an explicit transaction. */
49
78
  begin(): Promise<void>;
50
- /** 提交事务 */
79
+ /** Commit the current transaction. */
51
80
  commit(): Promise<void>;
52
- /** 回滚事务 */
81
+ /** Roll back the current transaction. */
53
82
  rollback(): Promise<void>;
54
- /** 执行检查点 */
55
- checkpoint(): Promise<CheckpointResult>;
56
- /** 数据库统计 */
57
- stats(): StorageEngineStats;
58
- /** 关闭数据库 */
83
+ /** Execute a VOS read pipeline. */
84
+ query<T = Record<string, unknown>>(source: string): Promise<T[]>;
85
+ /** Execute a VOS write program. */
86
+ execute(source: string): Promise<void>;
87
+ /** Close the session. Idempotent. */
59
88
  close(): Promise<void>;
60
89
  }
61
90
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC1B,gBAAgB;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,eAAe;AACf,MAAM,WAAW,oBAAoB;IACjC,iBAAiB;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,mBAAmB;IACnB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,qBAAqB;IACrB,MAAM,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAExC,2BAA2B;IAC3B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,UAAU;IACV,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE7C,UAAU;IACV,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,sBAAsB;IACtB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtC,WAAW;IACX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,WAAW;IACX,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB,WAAW;IACX,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,YAAY;IACZ,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExC,YAAY;IACZ,KAAK,IAAI,kBAAkB,CAAC;IAE5B,YAAY;IACZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IACxB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC3B,gHAAgH;IAChH,OAAO,CAAC,EAAE,aAAa,CACjB;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GACpC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CACzD,CAAC;CACL;AAED,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IACxB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,6BAA6B;IAC7B,aAAa,IAAI,MAAM,CAAC;IAExB,wDAAwD;IACxD,IAAI,IAAI,MAAM,CAAC;IAEf,oEAAoE;IACpE,SAAS,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAE3C;;;OAGG;IACH,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,kCAAkC;IAClC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAE7C,oCAAoC;IACpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,wDAAwD;IACxD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,qCAAqC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,sCAAsC;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB,yCAAyC;IACzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B,mCAAmC;IACnC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEjE,mCAAmC;IACnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,qCAAqC;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
package/dist/api/types.js CHANGED
@@ -1,8 +1,10 @@
1
1
  /**
2
- * 浏览器数据库作者面类型
2
+ * Browser database authoring-surface types.
3
3
  *
4
- * 这些类型是 `@yydb/light-db` 的稳定合同:二进制一律 `Uint8Array`,
5
- * 不出现本地路径、文件句柄或 Node 专属类型。
4
+ * These are the stable contract for `@yydb/light-db`:
5
+ * - Binary values are always `Uint8Array` — never `Buffer`.
6
+ * - No local file paths, file handles, or Node-exclusive types leak through.
7
+ * - Aligned with the Node-side `@yydb/yydb` method names and return semantics.
6
8
  */
7
9
  export {};
8
10
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,10 +1,35 @@
1
+ /**
2
+ * WASM-backed Database — the production path for `@yydb/light-db`.
3
+ *
4
+ * Delegates to `@yydb/yydb-unknown-wasm32`, which ships a Rust semantic
5
+ * core compiled to WebAssembly. This gives browser users the same VOS
6
+ * schema validation, transaction semantics, OPFS persistence and UDF
7
+ * execution as the Node-side `@yydb/yydb`.
8
+ *
9
+ * ```ts
10
+ * // Node
11
+ * import { Database } from '@yydb/yydb';
12
+ * const db = await Database.open('app.yydb');
13
+ *
14
+ * // Browser
15
+ * import { Database } from '@yydb/light-db';
16
+ * const db = await Database.open('app');
17
+ * ```
18
+ */
1
19
  import { type WasmSession } from '@yydb/yydb-unknown-wasm32';
2
20
  import { type EmittableItem } from '@voml/vos';
3
- import type { BatchChange, MigrateOptions, OpenOptions, ScanOptions, ScanRow, SchemaVersion } from './database.js';
4
- /** Transaction-local handle for callback-style transactions. */
21
+ import { type DefinedMicro, type MicroHandle } from '../shared/micro.js';
22
+ import type { BatchChange, LightDatabase, MigrateOptions, OpenOptions, ScanOptions, ScanRow, SchemaVersion } from './types.js';
23
+ import type { InferUdfArgs, InferUdfReturn, UdfScalarDescriptor } from '../shared/udf-types.js';
24
+ /**
25
+ * Transaction-local handle passed to {@link Database.transaction} callbacks.
26
+ * All methods forward to the underlying WASM session; commit/rollback are
27
+ * owned by {@link Database.transaction}.
28
+ */
5
29
  export declare class TransactionHandle {
6
30
  private readonly session;
7
31
  constructor(session: WasmSession);
32
+ /** Parse a WASM envelope, converting `{ ok: false, error }` to a thrown error. */
8
33
  private parseResult;
9
34
  get(key: string): Promise<Uint8Array | null>;
10
35
  put(key: string, value: Uint8Array | string): Promise<void>;
@@ -16,49 +41,131 @@ export declare class TransactionHandle {
16
41
  execute(source: string): Promise<void>;
17
42
  }
18
43
  /**
19
- * Browser/WASM 侧 YYDB 数据库句柄(可选后端)。
44
+ * Browser-local YYDB handle.
20
45
  *
21
- * 这是 `@yydb/light-db` 的 WASM 路径。默认可选——包主线是 {@link Database}
22
- * (`api/database.ts`,纯 TS,无 WASM 依赖),宿主按需显式 import 本文件以引入 WASM。
46
+ * This is the main {@link Database} export of `@yydb/light-db`. It owns a
47
+ * Rust-backed WASM session (memory or OPFS) and exposes the same user API
48
+ * as the Node-side `@yydb/yydb`.
23
49
  */
24
- export declare class WasmDatabase {
25
- /** 数据库名(OPFS 路径)。 */
50
+ export declare class Database implements LightDatabase {
51
+ /** Database name (OPFS path). */
26
52
  readonly name: string;
27
53
  private readonly session;
54
+ private readonly registry;
28
55
  private constructor();
29
- /** 初始化 WASM 并打开一个 session(memory 或 OPFS persistent)。 */
30
- static open(name: string, options?: OpenOptions): Promise<WasmDatabase>;
31
- /** 解析 WASM JSON 结果,失败时转 LightDbError。 */
56
+ /**
57
+ * Initialize WASM and open a session (in-memory or OPFS persistent).
58
+ *
59
+ * @param name Database name. Persistent sessions use it as the OPFS path.
60
+ * @param options Open options — pass `{ memory: true }` for a transient session.
61
+ */
62
+ static open(name: string, options?: OpenOptions): Promise<Database>;
63
+ /** Parse a WASM envelope, converting `{ ok: false, error }` to a thrown error. */
32
64
  private parseResult;
33
- /** 读取已持久化的 schema,或 `null`。 */
65
+ /** Engine version string (same as `@yydb/yydb` semver). */
66
+ serverVersion(): string;
67
+ /** Basic diagnostics: session info from the WASM core. */
68
+ info(): string;
69
+ /** Published schema metadata, or `null` before the first schema. */
34
70
  getSchema(): Promise<SchemaVersion | null>;
35
- /** 声明 schema 文档。 */
71
+ /**
72
+ * Validate and publish a VOS schema document.
73
+ *
74
+ * Accepts either a raw `.vos` source string, or `@voml/vos` descriptors
75
+ * (`v.table()`, `v.class()`). When descriptors are supplied, they are
76
+ * rendered to source via `emitSource` before being handed to the Rust
77
+ * core for validation.
78
+ */
36
79
  ensureSchema(...input: [string] | EmittableItem[]): Promise<void>;
37
- /** 读取键,或 `null`。 */
80
+ /** Read one record, or `null`. */
38
81
  get(key: string): Promise<Uint8Array | null>;
39
- /** 写入键。 */
82
+ /** Insert or replace one record. */
40
83
  put(key: string, value: Uint8Array | string): Promise<void>;
41
- /** 删除键。 */
84
+ /** Delete one record. Silently succeeds when the key is absent. */
42
85
  delete(key: string): Promise<void>;
43
- /** 扫描键值对。 */
86
+ /** List key/value pairs in lexical order. */
44
87
  scan(options?: ScanOptions): Promise<ScanRow[]>;
45
- /** 原子批量写入/删除。 */
88
+ /** Atomically write or delete many keys in one call. */
46
89
  batch(changes: readonly BatchChange[]): Promise<void>;
47
- /** Compare-and-swap。 */
90
+ /**
91
+ * Compare-and-swap: replace or delete `key` only when its current value
92
+ * exactly equals `expected`. Both may be `null` (meaning absent / delete).
93
+ */
48
94
  compareExchange(key: string, expected: Uint8Array | string | null, replacement: Uint8Array | string | null): Promise<boolean>;
49
- /** Callback-style 事务:自动 begin/commit,异常自动 rollback。 */
95
+ /** Fold the WAL into the main storage. */
96
+ checkpoint(): Promise<void>;
97
+ /** Begin an explicit transaction. Balanced with {@link commit} or {@link rollback}. */
98
+ begin(): Promise<void>;
99
+ /** Commit the current transaction. */
100
+ commit(): Promise<void>;
101
+ /** Roll back the current transaction. */
102
+ rollback(): Promise<void>;
103
+ /**
104
+ * Run `fn` inside an explicit transaction. Commits on normal return,
105
+ * rolls back on throw. Nested calls are not supported.
106
+ */
50
107
  transaction<T>(fn: (tx: TransactionHandle) => Promise<T>): Promise<T>;
51
- /** 执行 VOS read pipeline,返回 typed rows。 */
108
+ /** Execute a VOS read pipeline and return typed rows. */
52
109
  query<T = Record<string, unknown>>(source: string): Promise<T[]>;
53
- /** 执行 VOS write program。 */
110
+ /** Execute a VOS write program. */
54
111
  execute(source: string): Promise<void>;
55
- /** 发布新 schema 版本。 */
112
+ /**
113
+ * Publish a new schema version, migrating existing records when their
114
+ * shape no longer matches. Accepts raw `.vos` source or descriptors.
115
+ */
56
116
  migrateSchema(documentOrSource: string | EmittableItem, ...rest: (EmittableItem | MigrateOptions)[]): Promise<void>;
57
- /** 执行检查点(折叠 WAL)。 */
58
- checkpoint(): Promise<void>;
59
- /** 关闭 session。 */
117
+ /**
118
+ * Override the host micro invoker.
119
+ *
120
+ * The constructor wires this to the per-session {@link MicroSessionRegistry}
121
+ * so that high-level {@link registerMicro} + {@link callScalar} works out of
122
+ * the box. Call this only if you need to replace the default resolution
123
+ * logic (e.g. to inject a mock invoker in tests).
124
+ */
125
+ overrideMicroHostInvoker(invoker: (payload: {
126
+ hostId: number;
127
+ handleVersion: number;
128
+ functionId: string;
129
+ args: readonly unknown[];
130
+ }) => unknown): void;
131
+ /**
132
+ * Build a typed session-local micro definition without registering it.
133
+ *
134
+ * Same signature as the Node-side `@yydb/yydb`; this is a thin alias
135
+ * over the shared `defineMicro` helper so author code stays portable.
136
+ */
137
+ defineMicro<TArgs extends readonly UdfScalarDescriptor[], TReturn extends UdfScalarDescriptor>(input: {
138
+ readonly name: string;
139
+ readonly version: number;
140
+ readonly args: TArgs;
141
+ readonly returns: TReturn;
142
+ readonly effect: 'pure';
143
+ readonly deterministic: boolean;
144
+ readonly mode?: 'scalar';
145
+ readonly fn: (...args: InferUdfArgs<TArgs>) => InferUdfReturn<TReturn>;
146
+ }): DefinedMicro<TArgs, TReturn>;
147
+ /**
148
+ * Install a session-local host micro into both the JS registry and the
149
+ * WASM core. Host micros never persist across sessions.
150
+ *
151
+ * Uses the high-level JSON bridge (`registerMicroJson`) so we never
152
+ * encode wire bodies in TS; Rust owns the protocol.
153
+ */
154
+ registerMicro<TArgs extends readonly UdfScalarDescriptor[], TReturn extends UdfScalarDescriptor>(definition: DefinedMicro<TArgs, TReturn>): Promise<MicroHandle>;
155
+ /**
156
+ * Invoke a registered scalar UDF via the WASM core.
157
+ *
158
+ * Uses the high-level JSON bridge (`callScalarJson`) — args are encoded
159
+ * as plain JSON scalars (`number`, `string`, `boolean`, `null`).
160
+ */
161
+ callScalar(name: string, version: number, args: readonly (string | number | boolean | null)[]): Promise<string | number | boolean | null>;
162
+ /**
163
+ * Close the session. Idempotent — further calls fail.
164
+ *
165
+ * On persistent (OPFS) sessions this triggers a final snapshot publish.
166
+ */
60
167
  close(): Promise<void>;
61
168
  }
62
- /** 打开浏览器 WASM 数据库的便捷函数(等价于 {@link WasmDatabase.open})。 */
63
- export declare function openLightDatabase(name: string, options?: OpenOptions): Promise<WasmDatabase>;
169
+ /** Open a browser database — convenience alias for {@link Database.open}. */
170
+ export declare function openLightDatabase(name: string, options?: OpenOptions): Promise<Database>;
64
171
  //# sourceMappingURL=wasm-database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wasm-database.d.ts","sourceRoot":"","sources":["../../src/api/wasm-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,WAAW,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAanH,gEAAgE;AAChE,qBAAa,iBAAiB;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAEjD,OAAO,CAAC,WAAW;IASb,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQ5C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IASnD,KAAK,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD,eAAe,CACjB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAC3F,OAAO,CAAC,OAAO,CAAC;IAQb,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAMhE,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/C;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACrB,qBAAqB;IACrB,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IAEtC,OAAO;IAKP,wDAAwD;WACpC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAcxF,yCAAyC;IACzC,OAAO,CAAC,WAAW;IASnB,+BAA+B;IAClB,SAAS,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAMvD,oBAAoB;IACP,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9E,oBAAoB;IACP,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQzD,WAAW;IACE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxE,WAAW;IACE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,aAAa;IACA,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAahE,iBAAiB;IACJ,KAAK,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,wBAAwB;IACX,eAAe,CACxB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAC3F,OAAO,CAAC,OAAO,CAAC;IAQnB,uDAAuD;IAC1C,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBlF,0CAA0C;IAC7B,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAM7E,4BAA4B;IACf,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,qBAAqB;IACR,aAAa,CACtB,gBAAgB,EAAE,MAAM,GAAG,aAAa,EACxC,GAAG,IAAI,EAAE,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE,GAC5C,OAAO,CAAC,IAAI,CAAC;IAsBhB,qBAAqB;IACR,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC,kBAAkB;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGtC;AAED,0DAA0D;AAC1D,wBAAsB,iBAAiB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAEvB"}
1
+ {"version":3,"file":"wasm-database.d.ts","sourceRoot":"","sources":["../../src/api/wasm-database.ts"],"names":[],"mappings":"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"}