@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.
Files changed (230) hide show
  1. package/dist/api/database.d.ts +48 -0
  2. package/dist/api/database.d.ts.map +1 -0
  3. package/dist/api/database.js +120 -0
  4. package/dist/api/database.js.map +1 -0
  5. package/dist/api/index.d.ts +7 -22
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/index.js +5 -52
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/api/schema.d.ts +33 -0
  10. package/dist/api/schema.d.ts.map +1 -0
  11. package/dist/api/schema.js +80 -0
  12. package/dist/api/schema.js.map +1 -0
  13. package/dist/api/transaction.d.ts +26 -0
  14. package/dist/api/transaction.d.ts.map +1 -0
  15. package/dist/api/transaction.js +52 -0
  16. package/dist/api/transaction.js.map +1 -0
  17. package/dist/api/types.d.ts +55 -148
  18. package/dist/api/types.d.ts.map +1 -1
  19. package/dist/api/types.js +6 -5
  20. package/dist/api/types.js.map +1 -1
  21. package/dist/codec/binary.d.ts +196 -0
  22. package/dist/codec/binary.d.ts.map +1 -0
  23. package/dist/codec/binary.js +342 -0
  24. package/dist/codec/binary.js.map +1 -0
  25. package/dist/codec/checksum.d.ts +21 -0
  26. package/dist/codec/checksum.d.ts.map +1 -0
  27. package/dist/codec/checksum.js +46 -0
  28. package/dist/codec/checksum.js.map +1 -0
  29. package/dist/codec/index.d.ts +12 -0
  30. package/dist/codec/index.d.ts.map +1 -0
  31. package/dist/codec/index.js +10 -0
  32. package/dist/codec/index.js.map +1 -0
  33. package/dist/codec/page.d.ts +114 -0
  34. package/dist/codec/page.d.ts.map +1 -0
  35. package/dist/codec/page.js +225 -0
  36. package/dist/codec/page.js.map +1 -0
  37. package/dist/codec/record.d.ts +62 -0
  38. package/dist/codec/record.d.ts.map +1 -0
  39. package/dist/codec/record.js +82 -0
  40. package/dist/codec/record.js.map +1 -0
  41. package/dist/core/broadcast.d.ts +39 -0
  42. package/dist/core/broadcast.d.ts.map +1 -0
  43. package/dist/core/broadcast.js +54 -0
  44. package/dist/core/broadcast.js.map +1 -0
  45. package/dist/core/checkpoint.d.ts +23 -0
  46. package/dist/core/checkpoint.d.ts.map +1 -0
  47. package/dist/core/checkpoint.js +49 -0
  48. package/dist/core/checkpoint.js.map +1 -0
  49. package/dist/core/engine.d.ts +142 -0
  50. package/dist/core/engine.d.ts.map +1 -0
  51. package/dist/core/engine.js +304 -0
  52. package/dist/core/engine.js.map +1 -0
  53. package/dist/core/index.d.ts +17 -0
  54. package/dist/core/index.d.ts.map +1 -0
  55. package/dist/core/index.js +13 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/lease.d.ts +32 -0
  58. package/dist/core/lease.d.ts.map +1 -0
  59. package/dist/core/lease.js +81 -0
  60. package/dist/core/lease.js.map +1 -0
  61. package/dist/core/records.d.ts +49 -0
  62. package/dist/core/records.d.ts.map +1 -0
  63. package/dist/core/records.js +70 -0
  64. package/dist/core/records.js.map +1 -0
  65. package/dist/core/recovery.d.ts +43 -0
  66. package/dist/core/recovery.d.ts.map +1 -0
  67. package/dist/core/recovery.js +99 -0
  68. package/dist/core/recovery.js.map +1 -0
  69. package/dist/core/wal.d.ts +50 -0
  70. package/dist/core/wal.d.ts.map +1 -0
  71. package/dist/core/wal.js +114 -0
  72. package/dist/core/wal.js.map +1 -0
  73. package/dist/errors/index.d.ts +44 -66
  74. package/dist/errors/index.d.ts.map +1 -1
  75. package/dist/errors/index.js +43 -128
  76. package/dist/errors/index.js.map +1 -1
  77. package/dist/index.d.ts +14 -215
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +14 -724
  80. package/dist/index.js.map +1 -1
  81. package/dist/storage/StorageAdapter.d.ts +97 -0
  82. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  83. package/dist/storage/StorageAdapter.js +9 -0
  84. package/dist/storage/StorageAdapter.js.map +1 -0
  85. package/dist/storage/index.d.ts +9 -8
  86. package/dist/storage/index.d.ts.map +1 -1
  87. package/dist/storage/index.js +8 -151
  88. package/dist/storage/index.js.map +1 -1
  89. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +140 -0
  90. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +1 -0
  91. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +403 -0
  92. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +1 -0
  93. package/dist/storage/memory/MemoryStorageAdapter.d.ts +76 -0
  94. package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +1 -0
  95. package/dist/storage/memory/MemoryStorageAdapter.js +212 -0
  96. package/dist/storage/memory/MemoryStorageAdapter.js.map +1 -0
  97. package/dist/storage/opfs/OpfsStorageAdapter.d.ts +141 -0
  98. package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +1 -0
  99. package/dist/storage/opfs/OpfsStorageAdapter.js +400 -0
  100. package/dist/storage/opfs/OpfsStorageAdapter.js.map +1 -0
  101. package/package.json +48 -36
  102. package/readme.md +80 -94
  103. package/dist/api/LightDB.d.ts +0 -194
  104. package/dist/api/LightDB.d.ts.map +0 -1
  105. package/dist/api/LightDB.js +0 -299
  106. package/dist/api/LightDB.js.map +0 -1
  107. package/dist/api/Transaction.d.ts +0 -100
  108. package/dist/api/Transaction.d.ts.map +0 -1
  109. package/dist/api/Transaction.js +0 -263
  110. package/dist/api/Transaction.js.map +0 -1
  111. package/dist/collection/Collection.d.ts +0 -235
  112. package/dist/collection/Collection.d.ts.map +0 -1
  113. package/dist/collection/Collection.js +0 -671
  114. package/dist/collection/Collection.js.map +0 -1
  115. package/dist/collection/QueryBuilder.d.ts +0 -225
  116. package/dist/collection/QueryBuilder.d.ts.map +0 -1
  117. package/dist/collection/QueryBuilder.js +0 -475
  118. package/dist/collection/QueryBuilder.js.map +0 -1
  119. package/dist/collection/QueryParser.d.ts +0 -117
  120. package/dist/collection/QueryParser.d.ts.map +0 -1
  121. package/dist/collection/QueryParser.js +0 -438
  122. package/dist/collection/QueryParser.js.map +0 -1
  123. package/dist/collection/index.d.ts +0 -42
  124. package/dist/collection/index.d.ts.map +0 -1
  125. package/dist/collection/index.js +0 -41
  126. package/dist/collection/index.js.map +0 -1
  127. package/dist/collection/types.d.ts +0 -365
  128. package/dist/collection/types.d.ts.map +0 -1
  129. package/dist/collection/types.js +0 -7
  130. package/dist/collection/types.js.map +0 -1
  131. package/dist/constants/index.d.ts +0 -51
  132. package/dist/constants/index.d.ts.map +0 -1
  133. package/dist/constants/index.js +0 -68
  134. package/dist/constants/index.js.map +0 -1
  135. package/dist/indexes/BPlusTree.d.ts +0 -181
  136. package/dist/indexes/BPlusTree.d.ts.map +0 -1
  137. package/dist/indexes/BPlusTree.js +0 -528
  138. package/dist/indexes/BPlusTree.js.map +0 -1
  139. package/dist/indexes/IndexManager.d.ts +0 -236
  140. package/dist/indexes/IndexManager.d.ts.map +0 -1
  141. package/dist/indexes/IndexManager.js +0 -502
  142. package/dist/indexes/IndexManager.js.map +0 -1
  143. package/dist/indexes/PrimaryIndex.d.ts +0 -240
  144. package/dist/indexes/PrimaryIndex.d.ts.map +0 -1
  145. package/dist/indexes/PrimaryIndex.js +0 -354
  146. package/dist/indexes/PrimaryIndex.js.map +0 -1
  147. package/dist/indexes/SecondaryIndex.d.ts +0 -204
  148. package/dist/indexes/SecondaryIndex.d.ts.map +0 -1
  149. package/dist/indexes/SecondaryIndex.js +0 -480
  150. package/dist/indexes/SecondaryIndex.js.map +0 -1
  151. package/dist/indexes/errors.d.ts +0 -66
  152. package/dist/indexes/errors.d.ts.map +0 -1
  153. package/dist/indexes/errors.js +0 -117
  154. package/dist/indexes/errors.js.map +0 -1
  155. package/dist/indexes/index.d.ts +0 -52
  156. package/dist/indexes/index.d.ts.map +0 -1
  157. package/dist/indexes/index.js +0 -131
  158. package/dist/indexes/index.js.map +0 -1
  159. package/dist/indexes/types.d.ts +0 -246
  160. package/dist/indexes/types.d.ts.map +0 -1
  161. package/dist/indexes/types.js +0 -30
  162. package/dist/indexes/types.js.map +0 -1
  163. package/dist/performance/BatchWALWriter.d.ts +0 -185
  164. package/dist/performance/BatchWALWriter.d.ts.map +0 -1
  165. package/dist/performance/BatchWALWriter.js +0 -490
  166. package/dist/performance/BatchWALWriter.js.map +0 -1
  167. package/dist/performance/ColumnarStorage.d.ts +0 -138
  168. package/dist/performance/ColumnarStorage.d.ts.map +0 -1
  169. package/dist/performance/ColumnarStorage.js +0 -875
  170. package/dist/performance/ColumnarStorage.js.map +0 -1
  171. package/dist/performance/LazyQuery.d.ts +0 -307
  172. package/dist/performance/LazyQuery.d.ts.map +0 -1
  173. package/dist/performance/LazyQuery.js +0 -588
  174. package/dist/performance/LazyQuery.js.map +0 -1
  175. package/dist/performance/OptimizedBuffer.d.ts +0 -375
  176. package/dist/performance/OptimizedBuffer.d.ts.map +0 -1
  177. package/dist/performance/OptimizedBuffer.js +0 -730
  178. package/dist/performance/OptimizedBuffer.js.map +0 -1
  179. package/dist/performance/RWLock.d.ts +0 -260
  180. package/dist/performance/RWLock.d.ts.map +0 -1
  181. package/dist/performance/RWLock.js +0 -570
  182. package/dist/performance/RWLock.js.map +0 -1
  183. package/dist/performance/index.d.ts +0 -41
  184. package/dist/performance/index.d.ts.map +0 -1
  185. package/dist/performance/index.js +0 -162
  186. package/dist/performance/index.js.map +0 -1
  187. package/dist/performance/types.d.ts +0 -247
  188. package/dist/performance/types.d.ts.map +0 -1
  189. package/dist/performance/types.js +0 -26
  190. package/dist/performance/types.js.map +0 -1
  191. package/dist/storage/Checkpoint.d.ts +0 -128
  192. package/dist/storage/Checkpoint.d.ts.map +0 -1
  193. package/dist/storage/Checkpoint.js +0 -251
  194. package/dist/storage/Checkpoint.js.map +0 -1
  195. package/dist/storage/LightFile.d.ts +0 -227
  196. package/dist/storage/LightFile.d.ts.map +0 -1
  197. package/dist/storage/LightFile.js +0 -526
  198. package/dist/storage/LightFile.js.map +0 -1
  199. package/dist/storage/Recovery.d.ts +0 -172
  200. package/dist/storage/Recovery.d.ts.map +0 -1
  201. package/dist/storage/Recovery.js +0 -399
  202. package/dist/storage/Recovery.js.map +0 -1
  203. package/dist/storage/SHMFile.d.ts +0 -243
  204. package/dist/storage/SHMFile.d.ts.map +0 -1
  205. package/dist/storage/SHMFile.js +0 -436
  206. package/dist/storage/SHMFile.js.map +0 -1
  207. package/dist/storage/StorageEngine.d.ts +0 -146
  208. package/dist/storage/StorageEngine.d.ts.map +0 -1
  209. package/dist/storage/StorageEngine.js +0 -353
  210. package/dist/storage/StorageEngine.js.map +0 -1
  211. package/dist/storage/WALFile.d.ts +0 -248
  212. package/dist/storage/WALFile.d.ts.map +0 -1
  213. package/dist/storage/WALFile.js +0 -597
  214. package/dist/storage/WALFile.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -220
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -7
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/utils/binary.d.ts +0 -271
  220. package/dist/utils/binary.d.ts.map +0 -1
  221. package/dist/utils/binary.js +0 -454
  222. package/dist/utils/binary.js.map +0 -1
  223. package/dist/utils/file.d.ts +0 -166
  224. package/dist/utils/file.d.ts.map +0 -1
  225. package/dist/utils/file.js +0 -346
  226. package/dist/utils/file.js.map +0 -1
  227. package/dist/utils/index.d.ts +0 -6
  228. package/dist/utils/index.d.ts.map +0 -1
  229. package/dist/utils/index.js +0 -39
  230. package/dist/utils/index.js.map +0 -1
@@ -1,132 +1,47 @@
1
- "use strict";
2
1
  /**
3
- * LightDB 存储引擎错误定义
4
- * 提供详细的错误类型和错误消息
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ConfigurationError =
8
- exports.SerializationError =
9
- exports.PageError =
10
- exports.CheckpointError =
11
- exports.RecoveryError =
12
- exports.WalError =
13
- exports.ChecksumError =
14
- exports.FileFormatError =
15
- exports.FileOperationError =
16
- exports.StorageError =
17
- void 0;
18
- /**
19
- * 存储引擎错误基类
20
- */
21
- class StorageError extends Error {
22
- constructor(message, code, context) {
23
- super(message);
24
- this.name = "StorageError";
2
+ * 稳定错误模型
3
+ *
4
+ * 与 `@yydb/yydb` / `@yydb/yydb-client` 共用同一组错误码:宿主只按 `code` 分支,
5
+ * `message` 只用于显示。
6
+ */
7
+ /** 浏览器产品对外的稳定错误码 */
8
+ export const LightDbErrorCodes = {
9
+ /** I/O 失败 */
10
+ io: 'yydb.io',
11
+ /** 持久化数据损坏 */
12
+ corrupt: 'yydb.corrupt',
13
+ /** Schema 文档与已持久化内容冲突 */
14
+ schemaConflict: 'yydb.schema.conflict',
15
+ /** Schema 文档不合法 */
16
+ schemaInvalid: 'yydb.schema.invalid',
17
+ /** 宿主不支持该能力 */
18
+ unsupported: 'yydb.unsupported',
19
+ /** 会话或数据库已关闭 */
20
+ sessionClosed: 'yydb.session.closed',
21
+ /** 单写者租约不可用(例如缺少 Web Locks) */
22
+ leaseUnavailable: 'yydb.lease.unavailable',
23
+ /** 存储配额不足 */
24
+ quotaExceeded: 'yydb.quota.exceeded',
25
+ };
26
+ /** 相同参数重试即可成功的错误码 */
27
+ const RETRYABLE_CODES = new Set([LightDbErrorCodes.leaseUnavailable]);
28
+ /**
29
+ * 携带稳定错误码的数据库错误
30
+ */
31
+ export class LightDbError extends Error {
32
+ /** 稳定错误码 */
33
+ code;
34
+ /** 失败的操作 */
35
+ operation;
36
+ /** 是否可以用相同参数重试 */
37
+ retryable;
38
+ constructor(code, message, options = {}) {
39
+ super(message, { cause: options.cause });
40
+ this.name = 'LightDbError';
25
41
  this.code = code;
26
- if (context !== undefined) {
27
- this.context = context;
28
- }
29
- Object.setPrototypeOf(this, StorageError.prototype);
30
- }
31
- }
32
- exports.StorageError = StorageError;
33
- /**
34
- * 文件操作错误
35
- */
36
- class FileOperationError extends StorageError {
37
- constructor(message, filePath, operation) {
38
- super(message, "FILE_OPERATION_ERROR", { filePath, operation });
39
- this.name = "FileOperationError";
40
- Object.setPrototypeOf(this, FileOperationError.prototype);
41
- }
42
- }
43
- exports.FileOperationError = FileOperationError;
44
- /**
45
- * 文件格式错误
46
- */
47
- class FileFormatError extends StorageError {
48
- constructor(message, filePath, expected, actual) {
49
- super(message, "FILE_FORMAT_ERROR", { filePath, expected, actual });
50
- this.name = "FileFormatError";
51
- Object.setPrototypeOf(this, FileFormatError.prototype);
52
- }
53
- }
54
- exports.FileFormatError = FileFormatError;
55
- /**
56
- * 校验和错误
57
- */
58
- class ChecksumError extends StorageError {
59
- constructor(message, expected, actual, position) {
60
- super(message, "CHECKSUM_ERROR", { expected, actual, position });
61
- this.name = "ChecksumError";
62
- Object.setPrototypeOf(this, ChecksumError.prototype);
63
- }
64
- }
65
- exports.ChecksumError = ChecksumError;
66
- /**
67
- * WAL 错误
68
- */
69
- class WalError extends StorageError {
70
- constructor(message, lsn, offset) {
71
- super(message, "WAL_ERROR", { lsn: lsn?.toString(), offset });
72
- this.name = "WALError";
73
- Object.setPrototypeOf(this, WalError.prototype);
74
- }
75
- }
76
- exports.WalError = WalError;
77
- /**
78
- * 恢复错误
79
- */
80
- class RecoveryError extends StorageError {
81
- constructor(message, phase, details) {
82
- super(message, "RECOVERY_ERROR", { phase, details });
83
- this.name = "RecoveryError";
84
- Object.setPrototypeOf(this, RecoveryError.prototype);
85
- }
86
- }
87
- exports.RecoveryError = RecoveryError;
88
- /**
89
- * 检查点错误
90
- */
91
- class CheckpointError extends StorageError {
92
- constructor(message, lsn) {
93
- super(message, "CHECKPOINT_ERROR", { lsn: lsn?.toString() });
94
- this.name = "CheckpointError";
95
- Object.setPrototypeOf(this, CheckpointError.prototype);
96
- }
97
- }
98
- exports.CheckpointError = CheckpointError;
99
- /**
100
- * 页面错误
101
- */
102
- class PageError extends StorageError {
103
- constructor(message, pageId, details) {
104
- super(message, "PAGE_ERROR", { pageId, details });
105
- this.name = "PageError";
106
- Object.setPrototypeOf(this, PageError.prototype);
107
- }
108
- }
109
- exports.PageError = PageError;
110
- /**
111
- * 序列化错误
112
- */
113
- class SerializationError extends StorageError {
114
- constructor(message, data) {
115
- super(message, "SERIALIZATION_ERROR", { data });
116
- this.name = "SerializationError";
117
- Object.setPrototypeOf(this, SerializationError.prototype);
118
- }
119
- }
120
- exports.SerializationError = SerializationError;
121
- /**
122
- * 配置错误
123
- */
124
- class ConfigurationError extends StorageError {
125
- constructor(message, option, value) {
126
- super(message, "CONFIGURATION_ERROR", { option, value });
127
- this.name = "ConfigurationError";
128
- Object.setPrototypeOf(this, ConfigurationError.prototype);
42
+ this.operation = options.operation ?? 'unknown';
43
+ this.retryable = RETRYABLE_CODES.has(code);
44
+ Object.setPrototypeOf(this, LightDbError.prototype);
129
45
  }
130
46
  }
131
- exports.ConfigurationError = ConfigurationError;
132
- //# sourceMappingURL=index.js.map
47
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAoB;AACpB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,aAAa;IACb,EAAE,EAAE,SAAS;IACb,cAAc;IACd,OAAO,EAAE,cAAc;IACvB,yBAAyB;IACzB,cAAc,EAAE,sBAAsB;IACtC,mBAAmB;IACnB,aAAa,EAAE,qBAAqB;IACpC,eAAe;IACf,WAAW,EAAE,kBAAkB;IAC/B,gBAAgB;IAChB,aAAa,EAAE,qBAAqB;IACpC,+BAA+B;IAC/B,gBAAgB,EAAE,wBAAwB;IAC1C,aAAa;IACb,aAAa,EAAE,qBAAqB;CAC9B,CAAC;AAEX,qBAAqB;AACrB,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAY3F;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACnC,YAAY;IACI,IAAI,CAAS;IAE7B,YAAY;IACI,SAAS,CAAS;IAElC,kBAAkB;IACF,SAAS,CAAU;IAEnC,YAAY,IAAY,EAAE,OAAe,EAAE,UAA+B,EAAE;QACxE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACJ"}
package/dist/index.d.ts CHANGED
@@ -1,220 +1,19 @@
1
1
  /**
2
- * LightDB 存储引擎
2
+ * `@yydb/light-db`
3
3
  *
4
- * 这是一个高性能的 TypeScript 数据库存储层实现。
5
- * 提供完整的 WAL(预写日志)、检查点、崩溃恢复和索引管理功能。
4
+ * 浏览器专用的纯 TypeScript 数据库,与 `@yydb/yydb` 保持同构的用户 API。
5
+ * 公共类型只有 `Uint8Array` 与 `Promise`,不依赖 Node `Buffer`、文件系统或 WASM。
6
6
  *
7
7
  * @packageDocumentation
8
8
  */
9
- export {
10
- LIGHT_MAGIC,
11
- LIGHT_MAGIC_STRING,
12
- LIGHT_VERSION,
13
- DEFAULT_PAGE_SIZE,
14
- DEFAULT_WAL_THRESHOLD,
15
- HEADER_SIZE,
16
- WAL_RECORD_HEADER_SIZE,
17
- SHM_HEADER_SIZE,
18
- SHM_ENTRY_SIZE,
19
- SHM_DEFAULT_CAPACITY,
20
- PAGE_HEADER_SIZE,
21
- OperationType,
22
- FILE_EXTENSIONS,
23
- } from "./constants";
24
- export {
25
- LightHeader,
26
- Record,
27
- Page,
28
- WalRecord,
29
- ShmHeader,
30
- ShmEntry,
31
- StorageEngineOptions,
32
- FsyncStrategy,
33
- CheckpointResult,
34
- RecoveryResult,
35
- StorageStats,
36
- WriteResult,
37
- BatchWriteResult,
38
- HashIteratorResult,
39
- FileHandle,
40
- PageMap,
41
- RecordMap,
42
- WalRecordIterator,
43
- } from "./types";
44
- export {
45
- StorageError,
46
- FileOperationError,
47
- FileFormatError,
48
- ChecksumError,
49
- WalError,
50
- RecoveryError,
51
- CheckpointError,
52
- PageError,
53
- SerializationError,
54
- ConfigurationError,
55
- } from "./errors";
56
- export { BinaryUtils, BufferWriter, BufferReader, FileUtils, FileHandleWrapper } from "./utils";
57
- export { LightFileSerializer, LightFileManager, PageManager } from "./storage";
58
- export { WalRecordSerializer, WalWriter, WalReader, WalManager } from "./storage";
59
- export { ShmSerializer, ShmHashTable, ShmFileManager, WalIndexManager } from "./storage";
60
- export { CheckpointManager, AutoCheckpointScheduler, IncrementalCheckpointManager, CheckpointOptions } from "./storage";
61
- export { RecoveryManager, FastRecoveryManager, RecoveryValidator, RecoveryPhase, RecoveryContext } from "./storage";
62
- export { StorageEngine, createStorageEngine } from "./storage";
63
- import type { StorageEngineOptions } from "./types";
64
- import { StorageEngine as StorageEngineClass } from "./storage";
65
- /**
66
- * 打开存储引擎
67
- *
68
- * @param basePath - 数据库文件存储路径
69
- * @param dbName - 数据库名称
70
- * @param options - 配置选项
71
- * @returns 初始化完成的存储引擎实例
72
- *
73
- * @example
74
- * ```typescript
75
- * import { openStorageEngine } from '@yydb/light-db';
76
- *
77
- * const engine = await openStorageEngine('./data', 'mydb', {
78
- * pageSize: 4096,
79
- * walThreshold: 16 * 1024 * 1024,
80
- * autoCheckpoint: true
81
- * });
82
- *
83
- * // 插入数据
84
- * await engine.insert('key1', Buffer.from('value1'));
85
- *
86
- * // 读取数据
87
- * const value = await engine.get('key1');
88
- *
89
- * // 关闭引擎
90
- * await engine.close();
91
- * ```
92
- */
93
- export declare function openStorageEngine(basePath: string, dbName: string, options?: StorageEngineOptions): Promise<StorageEngineClass>;
94
- export {
95
- IndexKey,
96
- IndexValue,
97
- RangeCondition,
98
- EqualityCondition,
99
- QueryCondition,
100
- IndexType,
101
- IndexOptions,
102
- PrimaryIndexOptions,
103
- SecondaryIndexOptions,
104
- IndexStats,
105
- IndexQueryResult,
106
- BPlusTreeNodeType,
107
- BPlusTreeNode,
108
- BPlusTreeLeafNode,
109
- BPlusTreeInternalNode,
110
- IndexOperationResult,
111
- IndexBatchResult,
112
- IndexIteratorOptions,
113
- IndexEntry,
114
- IndexChangeRecord,
115
- IndexManagerOptions,
116
- Comparator,
117
- KeyExtractor,
118
- ValueExtractor,
119
- } from "./indexes";
120
- export {
121
- IndexError,
122
- DuplicateKeyError,
123
- KeyNotFoundError,
124
- IndexNotFoundError,
125
- IndexExistsError,
126
- IndexConfigError,
127
- IndexOperationError,
128
- IndexConsistencyError,
129
- RangeQueryError,
130
- } from "./indexes";
131
- export { BPlusTree } from "./indexes";
132
- export { PrimaryIndex, PrimaryIndexConfig } from "./indexes";
133
- export { SecondaryIndex, SecondaryIndexConfig } from "./indexes";
134
- export { IndexManager, CollectionIndexConfig } from "./indexes";
135
- export {
136
- PrimaryKeyType,
137
- Document,
138
- ComparisonOperators,
139
- ArrayOperators,
140
- ExistenceOperators,
141
- RegexOperators,
142
- FieldCondition,
143
- LogicalOperators,
144
- QueryFilter,
145
- UpdateOperators,
146
- UpdateOperation,
147
- SortDirection,
148
- SortCondition,
149
- QueryOptions,
150
- InsertOptions,
151
- UpdateOptions,
152
- DeleteOptions,
153
- InsertResult,
154
- InsertManyResult,
155
- UpdateResult,
156
- DeleteResult,
157
- FindResult,
158
- IndexConfig,
159
- CollectionOptions,
160
- CollectionStats,
161
- CollectionEventType,
162
- CollectionEventListener,
163
- CursorOptions,
164
- AggregationStage,
165
- } from "./collection";
166
- export { QueryParser, QueryParseResult } from "./collection";
167
- export { QueryBuilder, QueryExecutor } from "./collection";
168
- export { Collection, CollectionError } from "./collection";
169
- export {
170
- LightDBOptions,
171
- CollectionCreateOptions,
172
- TransactionContext,
173
- TransactionCollection,
174
- TransactionCallback,
175
- TransactionOptions,
176
- TransactionState,
177
- TransactionResult,
178
- DatabaseStats,
179
- DatabaseConfig,
180
- ILightDB,
181
- DefineCollectionSchema,
182
- CollectionSchema,
183
- } from "./api";
184
- export { TransactionError, Transaction, TransactionManager } from "./api";
185
- export { LightDB, defineCollectionSchema, openDatabase } from "./api";
186
- export {
187
- ColumnType,
188
- ColumnDefinition,
189
- ColumnarStorageOptions,
190
- ColumnarStorageStats,
191
- ColumnStats,
192
- BatchWriteOptions,
193
- BatchWriteStats,
194
- BatchFlushResult,
195
- FsyncStrategyType,
196
- RWLockOptions,
197
- RWLockStats,
198
- LazyQueryOptions,
199
- LazyQueryStats,
200
- AggregationType,
201
- AggregationResult,
202
- RangeCondition as PerformanceRangeCondition,
203
- BufferPoolOptions,
204
- BufferPoolStats,
205
- PerformanceOptions,
206
- PerformanceStats,
207
- } from "./performance";
208
- export { ColumnarStorage } from "./performance";
209
- export {
210
- BufferPool,
211
- getGlobalBufferPool,
212
- OptimizedBufferWriter,
213
- OptimizedBufferReader,
214
- FastSerializer,
215
- BufferConcatenator,
216
- } from "./performance";
217
- export { WalRecordEntry, BatchWalWriter, BatchWriteManager } from "./performance";
218
- export { ReadLockHandle, WriteLockHandle, RWLock, RWLockManager, ReentrantRWLock } from "./performance";
219
- export { LazyQueryIterator, LazyQueryBuilder, lazy, lazyIterator, GeneratorUtils } from "./performance";
220
- //# sourceMappingURL=index.d.ts.map
9
+ export { LightDbError, LightDbErrorCodes } from './errors';
10
+ export type { LightDbErrorOptions } from './errors';
11
+ export { BinaryUtils, ByteWriter, ByteReader, ChecksumMismatchError, crc32, checksumMatches, DEFAULT_PAGE_SIZE, SNAPSHOT_MAGIC, SNAPSHOT_VERSION, SNAPSHOT_HEADER_SIZE, PAGE_HEADER_SIZE, RecordTooLargeError, SnapshotFormatError, WalOperation, encodeSnapshot, decodeSnapshot, encodeWalRecord, decodeWalRecord, } from './codec';
12
+ export type { SnapshotHeader, StoredRecord, Page, WalRecord, WalDecodeResult } from './codec';
13
+ export { STORAGE_FILES, MemoryStorageAdapter, MemoryStorageBackend, OpfsStorageAdapter, OpfsStorageAdapterFactory, isOpfsAvailable, IndexedDbStorageAdapter, IndexedDbStorageAdapterFactory, isIndexedDbAvailable, } from './storage';
14
+ export type { StorageAdapter, StorageAdapterFactory, StorageAdapterKind, StorageFile, StorageHandle, StorageOpenMode } from './storage';
15
+ export { StorageEngine, DEFAULT_WAL_THRESHOLD, acquireWriterLease, listenDatabaseEvents } from './core';
16
+ export type { CheckpointResult, LeaseMode, RecoveryOutcome, StorageEngineOptions, StorageEngineStats, TransactionState, DatabaseEvent, DatabaseEventType, WriterLease, } from './core';
17
+ export { BrowserDatabase, openLightDatabase, Transaction, SCHEMA_KEY, RESERVED_KEY_PREFIX, documentVersion, parseSchemaDocument, encodeSchema, decodeSchema, } from './api';
18
+ export type { LightDatabase, LightDatabaseOptions, SchemaVersion } from './api';
19
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACf,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC"}