@yydb/light-db 0.0.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.
- package/dist/api/LightDB.d.ts +194 -0
- package/dist/api/LightDB.d.ts.map +1 -0
- package/dist/api/LightDB.js +299 -0
- package/dist/api/LightDB.js.map +1 -0
- package/dist/api/Transaction.d.ts +100 -0
- package/dist/api/Transaction.d.ts.map +1 -0
- package/dist/api/Transaction.js +263 -0
- package/dist/api/Transaction.js.map +1 -0
- package/dist/api/index.d.ts +24 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +54 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types.d.ts +154 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +7 -0
- package/dist/api/types.js.map +1 -0
- package/dist/collection/Collection.d.ts +235 -0
- package/dist/collection/Collection.d.ts.map +1 -0
- package/dist/collection/Collection.js +671 -0
- package/dist/collection/Collection.js.map +1 -0
- package/dist/collection/QueryBuilder.d.ts +225 -0
- package/dist/collection/QueryBuilder.d.ts.map +1 -0
- package/dist/collection/QueryBuilder.js +475 -0
- package/dist/collection/QueryBuilder.js.map +1 -0
- package/dist/collection/QueryParser.d.ts +117 -0
- package/dist/collection/QueryParser.d.ts.map +1 -0
- package/dist/collection/QueryParser.js +438 -0
- package/dist/collection/QueryParser.js.map +1 -0
- package/dist/collection/index.d.ts +42 -0
- package/dist/collection/index.d.ts.map +1 -0
- package/dist/collection/index.js +41 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/types.d.ts +365 -0
- package/dist/collection/types.d.ts.map +1 -0
- package/dist/collection/types.js +7 -0
- package/dist/collection/types.js.map +1 -0
- package/dist/constants/index.d.ts +51 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +68 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/errors/index.d.ts +69 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +132 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +220 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +729 -0
- package/dist/index.js.map +1 -0
- package/dist/indexes/BPlusTree.d.ts +181 -0
- package/dist/indexes/BPlusTree.d.ts.map +1 -0
- package/dist/indexes/BPlusTree.js +528 -0
- package/dist/indexes/BPlusTree.js.map +1 -0
- package/dist/indexes/IndexManager.d.ts +236 -0
- package/dist/indexes/IndexManager.d.ts.map +1 -0
- package/dist/indexes/IndexManager.js +502 -0
- package/dist/indexes/IndexManager.js.map +1 -0
- package/dist/indexes/PrimaryIndex.d.ts +240 -0
- package/dist/indexes/PrimaryIndex.d.ts.map +1 -0
- package/dist/indexes/PrimaryIndex.js +354 -0
- package/dist/indexes/PrimaryIndex.js.map +1 -0
- package/dist/indexes/SecondaryIndex.d.ts +204 -0
- package/dist/indexes/SecondaryIndex.d.ts.map +1 -0
- package/dist/indexes/SecondaryIndex.js +480 -0
- package/dist/indexes/SecondaryIndex.js.map +1 -0
- package/dist/indexes/errors.d.ts +66 -0
- package/dist/indexes/errors.d.ts.map +1 -0
- package/dist/indexes/errors.js +117 -0
- package/dist/indexes/errors.js.map +1 -0
- package/dist/indexes/index.d.ts +52 -0
- package/dist/indexes/index.d.ts.map +1 -0
- package/dist/indexes/index.js +131 -0
- package/dist/indexes/index.js.map +1 -0
- package/dist/indexes/types.d.ts +246 -0
- package/dist/indexes/types.d.ts.map +1 -0
- package/dist/indexes/types.js +30 -0
- package/dist/indexes/types.js.map +1 -0
- package/dist/performance/BatchWALWriter.d.ts +185 -0
- package/dist/performance/BatchWALWriter.d.ts.map +1 -0
- package/dist/performance/BatchWALWriter.js +490 -0
- package/dist/performance/BatchWALWriter.js.map +1 -0
- package/dist/performance/ColumnarStorage.d.ts +138 -0
- package/dist/performance/ColumnarStorage.d.ts.map +1 -0
- package/dist/performance/ColumnarStorage.js +875 -0
- package/dist/performance/ColumnarStorage.js.map +1 -0
- package/dist/performance/LazyQuery.d.ts +307 -0
- package/dist/performance/LazyQuery.d.ts.map +1 -0
- package/dist/performance/LazyQuery.js +588 -0
- package/dist/performance/LazyQuery.js.map +1 -0
- package/dist/performance/OptimizedBuffer.d.ts +375 -0
- package/dist/performance/OptimizedBuffer.d.ts.map +1 -0
- package/dist/performance/OptimizedBuffer.js +730 -0
- package/dist/performance/OptimizedBuffer.js.map +1 -0
- package/dist/performance/RWLock.d.ts +260 -0
- package/dist/performance/RWLock.d.ts.map +1 -0
- package/dist/performance/RWLock.js +570 -0
- package/dist/performance/RWLock.js.map +1 -0
- package/dist/performance/index.d.ts +41 -0
- package/dist/performance/index.d.ts.map +1 -0
- package/dist/performance/index.js +162 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/performance/types.d.ts +247 -0
- package/dist/performance/types.d.ts.map +1 -0
- package/dist/performance/types.js +26 -0
- package/dist/performance/types.js.map +1 -0
- package/dist/storage/Checkpoint.d.ts +128 -0
- package/dist/storage/Checkpoint.d.ts.map +1 -0
- package/dist/storage/Checkpoint.js +251 -0
- package/dist/storage/Checkpoint.js.map +1 -0
- package/dist/storage/LightFile.d.ts +227 -0
- package/dist/storage/LightFile.d.ts.map +1 -0
- package/dist/storage/LightFile.js +526 -0
- package/dist/storage/LightFile.js.map +1 -0
- package/dist/storage/Recovery.d.ts +172 -0
- package/dist/storage/Recovery.d.ts.map +1 -0
- package/dist/storage/Recovery.js +399 -0
- package/dist/storage/Recovery.js.map +1 -0
- package/dist/storage/SHMFile.d.ts +243 -0
- package/dist/storage/SHMFile.d.ts.map +1 -0
- package/dist/storage/SHMFile.js +436 -0
- package/dist/storage/SHMFile.js.map +1 -0
- package/dist/storage/StorageEngine.d.ts +146 -0
- package/dist/storage/StorageEngine.d.ts.map +1 -0
- package/dist/storage/StorageEngine.js +353 -0
- package/dist/storage/StorageEngine.js.map +1 -0
- package/dist/storage/WALFile.d.ts +248 -0
- package/dist/storage/WALFile.d.ts.map +1 -0
- package/dist/storage/WALFile.js +597 -0
- package/dist/storage/WALFile.js.map +1 -0
- package/dist/storage/index.d.ts +10 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +153 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/types/index.d.ts +220 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/binary.d.ts +271 -0
- package/dist/utils/binary.d.ts.map +1 -0
- package/dist/utils/binary.js +454 -0
- package/dist/utils/binary.js.map +1 -0
- package/dist/utils/file.d.ts +166 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +346 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +39 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +37 -0
- package/readme.md +124 -0
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 二进制序列化工具类
|
|
4
|
+
* 提供 Buffer 读写、校验和计算等核心功能
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BufferReader = exports.BufferWriter = exports.BinaryUtils = void 0;
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
/**
|
|
10
|
+
* CRC32 查找表
|
|
11
|
+
* 用于快速计算校验和
|
|
12
|
+
*/
|
|
13
|
+
const CRC32_TABLE = new Uint32Array(256);
|
|
14
|
+
/** 初始化 CRC32 查找表 */
|
|
15
|
+
function initCRC32Table() {
|
|
16
|
+
for (let i = 0; i < 256; i++) {
|
|
17
|
+
let crc = i;
|
|
18
|
+
for (let j = 0; j < 8; j++) {
|
|
19
|
+
crc = crc & 1 ? 0xedb88320 ^ (crc >>> 1) : crc >>> 1;
|
|
20
|
+
}
|
|
21
|
+
CRC32_TABLE[i] = crc;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
initCRC32Table();
|
|
25
|
+
/**
|
|
26
|
+
* 二进制工具类
|
|
27
|
+
* 提供静态方法用于 Buffer 操作和校验和计算
|
|
28
|
+
*/
|
|
29
|
+
class BinaryUtils {
|
|
30
|
+
/**
|
|
31
|
+
* 计算 Buffer 的 CRC32 校验和
|
|
32
|
+
* @param data 要计算校验和的数据
|
|
33
|
+
* @param offset 起始偏移量,默认 0
|
|
34
|
+
* @param length 数据长度,默认到末尾
|
|
35
|
+
* @returns CRC32 校验和(无符号 32 位整数)
|
|
36
|
+
*/
|
|
37
|
+
static calculateChecksum(data, offset = 0, length) {
|
|
38
|
+
const len = length ?? data.length - offset;
|
|
39
|
+
let crc = 0xffffffff;
|
|
40
|
+
for (let i = offset; i < offset + len; i++) {
|
|
41
|
+
const tableIndex = (crc ^ data[i]) & 0xff;
|
|
42
|
+
const tableValue = CRC32_TABLE[tableIndex];
|
|
43
|
+
crc = tableValue ^ (crc >>> 8);
|
|
44
|
+
}
|
|
45
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 验证校验和
|
|
49
|
+
* @param data 数据内容
|
|
50
|
+
* @param expectedChecksum 期望的校验和
|
|
51
|
+
* @param offset 数据起始偏移量
|
|
52
|
+
* @param length 数据长度
|
|
53
|
+
* @throws ChecksumError 如果校验和不匹配
|
|
54
|
+
*/
|
|
55
|
+
static verifyChecksum(data, expectedChecksum, offset = 0, length) {
|
|
56
|
+
const actual = BinaryUtils.calculateChecksum(data, offset, length);
|
|
57
|
+
if (actual !== expectedChecksum) {
|
|
58
|
+
throw new errors_1.ChecksumError(
|
|
59
|
+
`Checksum verification failed: expected ${expectedChecksum}, got ${actual}`,
|
|
60
|
+
expectedChecksum,
|
|
61
|
+
actual,
|
|
62
|
+
offset,
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 读取无符号 8 位整数
|
|
68
|
+
* @param buffer 数据缓冲区
|
|
69
|
+
* @param offset 偏移量
|
|
70
|
+
*/
|
|
71
|
+
static readUInt8(buffer, offset) {
|
|
72
|
+
return buffer.readUInt8(offset);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 写入无符号 8 位整数
|
|
76
|
+
* @param buffer 数据缓冲区
|
|
77
|
+
* @param value 值
|
|
78
|
+
* @param offset 偏移量
|
|
79
|
+
*/
|
|
80
|
+
static writeUInt8(buffer, value, offset) {
|
|
81
|
+
buffer.writeUInt8(value, offset);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 读取无符号 16 位整数(Little-Endian)
|
|
85
|
+
* @param buffer 数据缓冲区
|
|
86
|
+
* @param offset 偏移量
|
|
87
|
+
*/
|
|
88
|
+
static readUInt16LE(buffer, offset) {
|
|
89
|
+
return buffer.readUInt16LE(offset);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* 写入无符号 16 位整数(Little-Endian)
|
|
93
|
+
* @param buffer 数据缓冲区
|
|
94
|
+
* @param value 值
|
|
95
|
+
* @param offset 偏移量
|
|
96
|
+
*/
|
|
97
|
+
static writeUInt16LE(buffer, value, offset) {
|
|
98
|
+
buffer.writeUInt16LE(value, offset);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 读取无符号 32 位整数(Little-Endian)
|
|
102
|
+
* @param buffer 数据缓冲区
|
|
103
|
+
* @param offset 偏移量
|
|
104
|
+
*/
|
|
105
|
+
static readUInt32LE(buffer, offset) {
|
|
106
|
+
return buffer.readUInt32LE(offset);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 写入无符号 32 位整数(Little-Endian)
|
|
110
|
+
* @param buffer 数据缓冲区
|
|
111
|
+
* @param value 值
|
|
112
|
+
* @param offset 偏移量
|
|
113
|
+
*/
|
|
114
|
+
static writeUInt32LE(buffer, value, offset) {
|
|
115
|
+
buffer.writeUInt32LE(value, offset);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 读取有符号 32 位整数(Little-Endian)
|
|
119
|
+
* @param buffer 数据缓冲区
|
|
120
|
+
* @param offset 偏移量
|
|
121
|
+
*/
|
|
122
|
+
static readInt32LE(buffer, offset) {
|
|
123
|
+
return buffer.readInt32LE(offset);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 写入有符号 32 位整数(Little-Endian)
|
|
127
|
+
* @param buffer 数据缓冲区
|
|
128
|
+
* @param value 值
|
|
129
|
+
* @param offset 偏移量
|
|
130
|
+
*/
|
|
131
|
+
static writeInt32LE(buffer, value, offset) {
|
|
132
|
+
buffer.writeInt32LE(value, offset);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 读取无符号 64 位整数(Little-Endian)
|
|
136
|
+
* 返回 BigInt 类型
|
|
137
|
+
* @param buffer 数据缓冲区
|
|
138
|
+
* @param offset 偏移量
|
|
139
|
+
*/
|
|
140
|
+
static readBigUInt64LE(buffer, offset) {
|
|
141
|
+
return buffer.readBigUInt64LE(offset);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 写入无符号 64 位整数(Little-Endian)
|
|
145
|
+
* @param buffer 数据缓冲区
|
|
146
|
+
* @param value 值
|
|
147
|
+
* @param offset 偏移量
|
|
148
|
+
*/
|
|
149
|
+
static writeBigUInt64LE(buffer, value, offset) {
|
|
150
|
+
buffer.writeBigUInt64LE(value, offset);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 读取字符串(UTF-8 编码)
|
|
154
|
+
* @param buffer 数据缓冲区
|
|
155
|
+
* @param offset 起始偏移量
|
|
156
|
+
* @param length 字符串字节长度
|
|
157
|
+
*/
|
|
158
|
+
static readString(buffer, offset, length) {
|
|
159
|
+
return buffer.toString("utf8", offset, offset + length);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 写入字符串(UTF-8 编码)
|
|
163
|
+
* @param buffer 数据缓冲区
|
|
164
|
+
* @param value 字符串值
|
|
165
|
+
* @param offset 起始偏移量
|
|
166
|
+
* @returns 实际写入的字节数
|
|
167
|
+
*/
|
|
168
|
+
static writeString(buffer, value, offset) {
|
|
169
|
+
return buffer.write(value, offset, "utf8");
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* 计算字符串的字节长度(UTF-8 编码)
|
|
173
|
+
* @param value 字符串值
|
|
174
|
+
*/
|
|
175
|
+
static stringByteLength(value) {
|
|
176
|
+
return Buffer.byteLength(value, "utf8");
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* 分配指定大小的 Buffer(未初始化)
|
|
180
|
+
* 比 Buffer.alloc 更快,但内容未定义
|
|
181
|
+
* @param size Buffer 大小
|
|
182
|
+
*/
|
|
183
|
+
static allocUnsafe(size) {
|
|
184
|
+
return Buffer.allocUnsafe(size);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* 分配指定大小的 Buffer(初始化为零)
|
|
188
|
+
* @param size Buffer 大小
|
|
189
|
+
*/
|
|
190
|
+
static alloc(size) {
|
|
191
|
+
return Buffer.alloc(size);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* 连接多个 Buffer
|
|
195
|
+
* @param buffers Buffer 数组
|
|
196
|
+
*/
|
|
197
|
+
static concat(buffers) {
|
|
198
|
+
return Buffer.concat(buffers);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* 复制 Buffer 的一部分
|
|
202
|
+
* @param source 源 Buffer
|
|
203
|
+
* @param start 起始位置
|
|
204
|
+
* @param end 结束位置
|
|
205
|
+
*/
|
|
206
|
+
static slice(source, start, end) {
|
|
207
|
+
return source.subarray(start, end);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* 比较两个 Buffer 是否相等
|
|
211
|
+
* @param a 第一个 Buffer
|
|
212
|
+
* @param b 第二个 Buffer
|
|
213
|
+
*/
|
|
214
|
+
static equals(a, b) {
|
|
215
|
+
if (a.length !== b.length) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
return a.equals(b);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
exports.BinaryUtils = BinaryUtils;
|
|
222
|
+
/**
|
|
223
|
+
* Buffer 写入器
|
|
224
|
+
* 提供便捷的顺序写入功能
|
|
225
|
+
*/
|
|
226
|
+
class BufferWriter {
|
|
227
|
+
/**
|
|
228
|
+
* 创建 Buffer 写入器
|
|
229
|
+
* @param size 初始 Buffer 大小
|
|
230
|
+
*/
|
|
231
|
+
constructor(size) {
|
|
232
|
+
this.buffer = Buffer.allocUnsafe(size);
|
|
233
|
+
this.offset = 0;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* 获取当前写入位置
|
|
237
|
+
*/
|
|
238
|
+
get position() {
|
|
239
|
+
return this.offset;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* 获取已写入的数据
|
|
243
|
+
*/
|
|
244
|
+
get data() {
|
|
245
|
+
return this.buffer.subarray(0, this.offset);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* 确保有足够的空间
|
|
249
|
+
* @param additional 需要的额外空间
|
|
250
|
+
*/
|
|
251
|
+
ensureCapacity(additional) {
|
|
252
|
+
const required = this.offset + additional;
|
|
253
|
+
if (required > this.buffer.length) {
|
|
254
|
+
const newBuffer = Buffer.allocUnsafe(Math.max(required, this.buffer.length * 2));
|
|
255
|
+
this.buffer.copy(newBuffer, 0, 0, this.offset);
|
|
256
|
+
this.buffer = newBuffer;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* 写入无符号 8 位整数
|
|
261
|
+
*/
|
|
262
|
+
writeUInt8(value) {
|
|
263
|
+
this.ensureCapacity(1);
|
|
264
|
+
this.buffer.writeUInt8(value, this.offset);
|
|
265
|
+
this.offset += 1;
|
|
266
|
+
return this;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* 写入无符号 16 位整数(Little-Endian)
|
|
270
|
+
*/
|
|
271
|
+
writeUInt16LE(value) {
|
|
272
|
+
this.ensureCapacity(2);
|
|
273
|
+
this.buffer.writeUInt16LE(value, this.offset);
|
|
274
|
+
this.offset += 2;
|
|
275
|
+
return this;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* 写入无符号 32 位整数(Little-Endian)
|
|
279
|
+
*/
|
|
280
|
+
writeUInt32LE(value) {
|
|
281
|
+
this.ensureCapacity(4);
|
|
282
|
+
this.buffer.writeUInt32LE(value, this.offset);
|
|
283
|
+
this.offset += 4;
|
|
284
|
+
return this;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* 写入无符号 64 位整数(Little-Endian)
|
|
288
|
+
*/
|
|
289
|
+
writeBigUInt64LE(value) {
|
|
290
|
+
this.ensureCapacity(8);
|
|
291
|
+
this.buffer.writeBigUInt64LE(value, this.offset);
|
|
292
|
+
this.offset += 8;
|
|
293
|
+
return this;
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* 写入字符串(带长度前缀)
|
|
297
|
+
*/
|
|
298
|
+
writeString(value) {
|
|
299
|
+
const byteLength = BinaryUtils.stringByteLength(value);
|
|
300
|
+
this.writeUInt32LE(byteLength);
|
|
301
|
+
this.ensureCapacity(byteLength);
|
|
302
|
+
BinaryUtils.writeString(this.buffer, value, this.offset);
|
|
303
|
+
this.offset += byteLength;
|
|
304
|
+
return this;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* 写入字符串(不带长度前缀)
|
|
308
|
+
*/
|
|
309
|
+
writeStringRaw(value) {
|
|
310
|
+
const byteLength = BinaryUtils.stringByteLength(value);
|
|
311
|
+
this.ensureCapacity(byteLength);
|
|
312
|
+
BinaryUtils.writeString(this.buffer, value, this.offset);
|
|
313
|
+
this.offset += byteLength;
|
|
314
|
+
return this;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* 写入 Buffer
|
|
318
|
+
*/
|
|
319
|
+
writeBuffer(value) {
|
|
320
|
+
this.ensureCapacity(value.length);
|
|
321
|
+
value.copy(this.buffer, this.offset);
|
|
322
|
+
this.offset += value.length;
|
|
323
|
+
return this;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* 写入带长度前缀的 Buffer
|
|
327
|
+
*/
|
|
328
|
+
writeBufferWithLength(value) {
|
|
329
|
+
this.writeUInt32LE(value.length);
|
|
330
|
+
this.writeBuffer(value);
|
|
331
|
+
return this;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* 写入校验和(计算从起始位置到当前位置的数据)
|
|
335
|
+
*/
|
|
336
|
+
writeChecksum(startOffset = 0) {
|
|
337
|
+
const checksum = BinaryUtils.calculateChecksum(this.buffer, startOffset, this.offset - startOffset);
|
|
338
|
+
this.writeUInt32LE(checksum);
|
|
339
|
+
return this;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
exports.BufferWriter = BufferWriter;
|
|
343
|
+
/**
|
|
344
|
+
* Buffer 读取器
|
|
345
|
+
* 提供便捷的顺序读取功能
|
|
346
|
+
*/
|
|
347
|
+
class BufferReader {
|
|
348
|
+
/**
|
|
349
|
+
* 创建 Buffer 读取器
|
|
350
|
+
* @param buffer 要读取的 Buffer
|
|
351
|
+
* @param startOffset 起始偏移量,默认 0
|
|
352
|
+
*/
|
|
353
|
+
constructor(buffer, startOffset = 0) {
|
|
354
|
+
this.buffer = buffer;
|
|
355
|
+
this.offset = startOffset;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* 获取当前读取位置
|
|
359
|
+
*/
|
|
360
|
+
get position() {
|
|
361
|
+
return this.offset;
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* 设置读取位置
|
|
365
|
+
*/
|
|
366
|
+
set position(value) {
|
|
367
|
+
this.offset = value;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* 获取剩余可读字节数
|
|
371
|
+
*/
|
|
372
|
+
get remaining() {
|
|
373
|
+
return this.buffer.length - this.offset;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* 检查是否有足够的可读数据
|
|
377
|
+
*/
|
|
378
|
+
hasRemaining(required) {
|
|
379
|
+
return this.remaining >= required;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* 读取无符号 8 位整数
|
|
383
|
+
*/
|
|
384
|
+
readUInt8() {
|
|
385
|
+
const value = this.buffer.readUInt8(this.offset);
|
|
386
|
+
this.offset += 1;
|
|
387
|
+
return value;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* 读取无符号 16 位整数(Little-Endian)
|
|
391
|
+
*/
|
|
392
|
+
readUInt16LE() {
|
|
393
|
+
const value = this.buffer.readUInt16LE(this.offset);
|
|
394
|
+
this.offset += 2;
|
|
395
|
+
return value;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* 读取无符号 32 位整数(Little-Endian)
|
|
399
|
+
*/
|
|
400
|
+
readUInt32LE() {
|
|
401
|
+
const value = this.buffer.readUInt32LE(this.offset);
|
|
402
|
+
this.offset += 4;
|
|
403
|
+
return value;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* 读取无符号 64 位整数(Little-Endian)
|
|
407
|
+
*/
|
|
408
|
+
readBigUInt64LE() {
|
|
409
|
+
const value = this.buffer.readBigUInt64LE(this.offset);
|
|
410
|
+
this.offset += 8;
|
|
411
|
+
return value;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* 读取字符串(带长度前缀)
|
|
415
|
+
*/
|
|
416
|
+
readString() {
|
|
417
|
+
const length = this.readUInt32LE();
|
|
418
|
+
const value = BinaryUtils.readString(this.buffer, this.offset, length);
|
|
419
|
+
this.offset += length;
|
|
420
|
+
return value;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* 读取指定长度的 Buffer
|
|
424
|
+
*/
|
|
425
|
+
readBuffer(length) {
|
|
426
|
+
const value = this.buffer.subarray(this.offset, this.offset + length);
|
|
427
|
+
this.offset += length;
|
|
428
|
+
return value;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* 读取带长度前缀的 Buffer
|
|
432
|
+
*/
|
|
433
|
+
readBufferWithLength() {
|
|
434
|
+
const length = this.readUInt32LE();
|
|
435
|
+
return this.readBuffer(length);
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* 读取并验证校验和
|
|
439
|
+
*/
|
|
440
|
+
readAndVerifyChecksum(startOffset) {
|
|
441
|
+
const checksum = this.readUInt32LE();
|
|
442
|
+
BinaryUtils.verifyChecksum(this.buffer, checksum, startOffset, this.offset - startOffset - 4);
|
|
443
|
+
return checksum;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* 跳过指定字节数
|
|
447
|
+
*/
|
|
448
|
+
skip(bytes) {
|
|
449
|
+
this.offset += bytes;
|
|
450
|
+
return this;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
exports.BufferReader = BufferReader;
|
|
454
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/utils/binary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 文件操作工具类
|
|
3
|
+
* 提供文件系统操作的封装
|
|
4
|
+
*/
|
|
5
|
+
import { promises as fs } from "fs";
|
|
6
|
+
/**
|
|
7
|
+
* 文件操作工具类
|
|
8
|
+
* 提供静态方法用于文件系统操作
|
|
9
|
+
*/
|
|
10
|
+
export declare class FileUtils {
|
|
11
|
+
/**
|
|
12
|
+
* 检查文件是否存在
|
|
13
|
+
* @param filePath 文件路径
|
|
14
|
+
*/
|
|
15
|
+
static exists(filePath: string): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* 确保目录存在,不存在则创建
|
|
18
|
+
* @param dirPath 目录路径
|
|
19
|
+
*/
|
|
20
|
+
static ensureDir(dirPath: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* 读取文件内容
|
|
23
|
+
* @param filePath 文件路径
|
|
24
|
+
*/
|
|
25
|
+
static readFile(filePath: string): Promise<Buffer>;
|
|
26
|
+
/**
|
|
27
|
+
* 写入文件内容
|
|
28
|
+
* @param filePath 文件路径
|
|
29
|
+
* @param data 文件内容
|
|
30
|
+
*/
|
|
31
|
+
static writeFile(filePath: string, data: Buffer): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* 追加写入文件
|
|
34
|
+
* @param filePath 文件路径
|
|
35
|
+
* @param data 要追加的数据
|
|
36
|
+
*/
|
|
37
|
+
static appendFile(filePath: string, data: Buffer): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* 删除文件
|
|
40
|
+
* @param filePath 文件路径
|
|
41
|
+
*/
|
|
42
|
+
static deleteFile(filePath: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* 原子性重命名文件
|
|
45
|
+
* @param oldPath 原文件路径
|
|
46
|
+
* @param newPath 新文件路径
|
|
47
|
+
*/
|
|
48
|
+
static rename(oldPath: string, newPath: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* 获取文件大小
|
|
51
|
+
* @param filePath 文件路径
|
|
52
|
+
*/
|
|
53
|
+
static getFileSize(filePath: string): Promise<number>;
|
|
54
|
+
/**
|
|
55
|
+
* 同步文件到磁盘
|
|
56
|
+
* @param filePath 文件路径
|
|
57
|
+
*/
|
|
58
|
+
static syncFile(filePath: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* 打开文件句柄
|
|
61
|
+
* @param filePath 文件路径
|
|
62
|
+
* @param flags 打开标志
|
|
63
|
+
*/
|
|
64
|
+
static openFile(filePath: string, flags: string): Promise<fs.FileHandle>;
|
|
65
|
+
/**
|
|
66
|
+
* 从指定位置读取文件
|
|
67
|
+
* @param handle 文件句柄
|
|
68
|
+
* @param buffer 目标缓冲区
|
|
69
|
+
* @param offset 缓冲区偏移
|
|
70
|
+
* @param length 读取长度
|
|
71
|
+
* @param position 文件位置
|
|
72
|
+
*/
|
|
73
|
+
static readFromPosition(handle: fs.FileHandle, buffer: Buffer, offset: number, length: number, position: number): Promise<number>;
|
|
74
|
+
/**
|
|
75
|
+
* 在指定位置写入文件
|
|
76
|
+
* @param handle 文件句柄
|
|
77
|
+
* @param buffer 源缓冲区
|
|
78
|
+
* @param offset 缓冲区偏移
|
|
79
|
+
* @param length 写入长度
|
|
80
|
+
* @param position 文件位置
|
|
81
|
+
*/
|
|
82
|
+
static writeToPosition(handle: fs.FileHandle, buffer: Buffer, offset: number, length: number, position: number): Promise<number>;
|
|
83
|
+
/**
|
|
84
|
+
* 截断文件到指定大小
|
|
85
|
+
* @param filePath 文件路径
|
|
86
|
+
* @param size 目标大小
|
|
87
|
+
*/
|
|
88
|
+
static truncateFile(filePath: string, size: number): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* 构建完整文件路径
|
|
91
|
+
* @param basePath 基础路径
|
|
92
|
+
* @param name 文件名(不含扩展名)
|
|
93
|
+
* @param extension 文件扩展名
|
|
94
|
+
*/
|
|
95
|
+
static buildFilePath(basePath: string, name: string, extension: string): string;
|
|
96
|
+
/**
|
|
97
|
+
* 解析文件名(不含扩展名)
|
|
98
|
+
* @param filePath 文件路径
|
|
99
|
+
*/
|
|
100
|
+
static getFileName(filePath: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* 获取目录路径
|
|
103
|
+
* @param filePath 文件路径
|
|
104
|
+
*/
|
|
105
|
+
static getDirPath(filePath: string): string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 文件句柄包装类
|
|
109
|
+
* 提供更高级的文件操作接口
|
|
110
|
+
*/
|
|
111
|
+
export declare class FileHandleWrapper {
|
|
112
|
+
private handle;
|
|
113
|
+
private readonly filePath;
|
|
114
|
+
private readonly flags;
|
|
115
|
+
/**
|
|
116
|
+
* 创建文件句柄包装
|
|
117
|
+
* @param filePath 文件路径
|
|
118
|
+
* @param flags 打开标志
|
|
119
|
+
*/
|
|
120
|
+
constructor(filePath: string, flags: string);
|
|
121
|
+
/**
|
|
122
|
+
* 打开文件
|
|
123
|
+
*/
|
|
124
|
+
open(): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* 关闭文件
|
|
127
|
+
*/
|
|
128
|
+
close(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* 确保文件已打开
|
|
131
|
+
*/
|
|
132
|
+
private ensureOpen;
|
|
133
|
+
/**
|
|
134
|
+
* 读取数据
|
|
135
|
+
* @param buffer 目标缓冲区
|
|
136
|
+
* @param offset 缓冲区偏移
|
|
137
|
+
* @param length 读取长度
|
|
138
|
+
* @param position 文件位置
|
|
139
|
+
*/
|
|
140
|
+
read(buffer: Buffer, offset: number, length: number, position: number): Promise<number>;
|
|
141
|
+
/**
|
|
142
|
+
* 写入数据
|
|
143
|
+
* @param buffer 源缓冲区
|
|
144
|
+
* @param offset 缓冲区偏移
|
|
145
|
+
* @param length 写入长度
|
|
146
|
+
* @param position 文件位置
|
|
147
|
+
*/
|
|
148
|
+
write(buffer: Buffer, offset: number, length: number, position: number): Promise<number>;
|
|
149
|
+
/**
|
|
150
|
+
* 同步到磁盘
|
|
151
|
+
*/
|
|
152
|
+
sync(): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* 获取文件大小
|
|
155
|
+
*/
|
|
156
|
+
size(): Promise<number>;
|
|
157
|
+
/**
|
|
158
|
+
* 获取文件路径
|
|
159
|
+
*/
|
|
160
|
+
get path(): string;
|
|
161
|
+
/**
|
|
162
|
+
* 检查是否已打开
|
|
163
|
+
*/
|
|
164
|
+
get isOpen(): boolean;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"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"}
|