@nuintun/buffer 0.5.0 → 0.7.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/README.md +6 -7
- package/cjs/binary.cjs +1 -1
- package/cjs/encoding.cjs +1 -1
- package/cjs/enum.cjs +1 -1
- package/cjs/errors.cjs +1 -1
- package/cjs/index.cjs +25 -27
- package/cjs/index.d.cts +6 -7
- package/cjs/utils.cjs +1 -1
- package/esm/binary.js +1 -1
- package/esm/encoding.js +1 -1
- package/esm/enum.js +1 -1
- package/esm/errors.js +1 -1
- package/esm/index.d.ts +6 -7
- package/esm/index.js +25 -27
- package/esm/utils.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -53,6 +53,11 @@ export interface Options {
|
|
|
53
53
|
* @description 文本解码函数
|
|
54
54
|
*/
|
|
55
55
|
decode?: TextDecode;
|
|
56
|
+
/**
|
|
57
|
+
* @property {boolean} [littleEndian]
|
|
58
|
+
* @description 指定默认字节序,默认小端字节序
|
|
59
|
+
*/
|
|
60
|
+
littleEndian?: boolean;
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
/**
|
|
@@ -79,12 +84,6 @@ export declare class Buffer {
|
|
|
79
84
|
* @param {number} [pageSize] 缓冲区分页大小,扩容时将按分页大小增加
|
|
80
85
|
*/
|
|
81
86
|
constructor(bytes: TypedArray, options?: Options);
|
|
82
|
-
/**
|
|
83
|
-
* @constructor
|
|
84
|
-
* @param {ArrayBuffer} buffer 缓冲区初始缓冲数据
|
|
85
|
-
* @param {number} [pageSize] 缓冲区分页大小,扩容时将按分页大小增加
|
|
86
|
-
*/
|
|
87
|
-
constructor(buffer: ArrayBuffer, options?: Options);
|
|
88
87
|
/**
|
|
89
88
|
* @public
|
|
90
89
|
* @property {number} offset
|
|
@@ -179,7 +178,7 @@ export declare class Buffer {
|
|
|
179
178
|
/**
|
|
180
179
|
* @method writeInt64
|
|
181
180
|
* @description 在缓冲区中写入一个 64 位有符号整数
|
|
182
|
-
* @param {bigint} value 要写入的
|
|
181
|
+
* @param {bigint} value 要写入的 64 位有符号整数
|
|
183
182
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
184
183
|
*/
|
|
185
184
|
writeInt64(value: bigint, littleEndian?: boolean): void;
|
package/cjs/binary.cjs
CHANGED
package/cjs/encoding.cjs
CHANGED
package/cjs/enum.cjs
CHANGED
package/cjs/errors.cjs
CHANGED
package/cjs/index.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @nuintun/buffer
|
|
3
3
|
* @license MIT
|
|
4
|
-
* @version 0.
|
|
4
|
+
* @version 0.7.0
|
|
5
5
|
* @author nuintun <nuintun@qq.com>
|
|
6
6
|
* @description A buffer tool for javascript.
|
|
7
7
|
* @see https://github.com/nuintun/Buffer#readme
|
|
@@ -53,6 +53,8 @@ class Buffer {
|
|
|
53
53
|
#encode;
|
|
54
54
|
// 文本解码方法
|
|
55
55
|
#decode;
|
|
56
|
+
// 字节序
|
|
57
|
+
#littleEndian;
|
|
56
58
|
constructor(input = 0, options = {}) {
|
|
57
59
|
let length;
|
|
58
60
|
let bytes;
|
|
@@ -61,13 +63,7 @@ class Buffer {
|
|
|
61
63
|
length = input.byteLength;
|
|
62
64
|
bytes = utils.makeUint8Array(length, pageSize);
|
|
63
65
|
if (length > 0) {
|
|
64
|
-
bytes.set(new Uint8Array(input.buffer));
|
|
65
|
-
}
|
|
66
|
-
} else if (input instanceof ArrayBuffer) {
|
|
67
|
-
length = input.byteLength;
|
|
68
|
-
bytes = utils.makeUint8Array(length, pageSize);
|
|
69
|
-
if (length > 0) {
|
|
70
|
-
bytes.set(new Uint8Array(input));
|
|
66
|
+
bytes.set(new Uint8Array(input.buffer, input.byteOffset, length));
|
|
71
67
|
}
|
|
72
68
|
} else {
|
|
73
69
|
length = input;
|
|
@@ -79,6 +75,7 @@ class Buffer {
|
|
|
79
75
|
this.#encode = options.encode ?? encoding.encode;
|
|
80
76
|
this.#decode = options.decode ?? encoding.decode;
|
|
81
77
|
this.#dataView = new DataView(bytes.buffer);
|
|
78
|
+
this.#littleEndian = options.littleEndian ?? true;
|
|
82
79
|
}
|
|
83
80
|
/**
|
|
84
81
|
* @private
|
|
@@ -236,7 +233,7 @@ class Buffer {
|
|
|
236
233
|
* @param {number} value 要写入的 16 位有符号整数
|
|
237
234
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
238
235
|
*/
|
|
239
|
-
writeInt16(value, littleEndian) {
|
|
236
|
+
writeInt16(value, littleEndian = this.#littleEndian) {
|
|
240
237
|
const offset = this.#getOffset(2 /* SizeOf.INT16 */);
|
|
241
238
|
this.#alloc(offset);
|
|
242
239
|
this.#dataView.setInt16(this.#offset, value, littleEndian);
|
|
@@ -248,7 +245,7 @@ class Buffer {
|
|
|
248
245
|
* @param {number} value 要写入的 16 位无符号整数
|
|
249
246
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
250
247
|
*/
|
|
251
|
-
writeUint16(value, littleEndian) {
|
|
248
|
+
writeUint16(value, littleEndian = this.#littleEndian) {
|
|
252
249
|
const offset = this.#getOffset(2 /* SizeOf.UINT16 */);
|
|
253
250
|
this.#alloc(offset);
|
|
254
251
|
this.#dataView.setUint16(this.#offset, value, littleEndian);
|
|
@@ -260,7 +257,7 @@ class Buffer {
|
|
|
260
257
|
* @param {number} value 要写入的 32 位有符号整数
|
|
261
258
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
262
259
|
*/
|
|
263
|
-
writeInt32(value, littleEndian) {
|
|
260
|
+
writeInt32(value, littleEndian = this.#littleEndian) {
|
|
264
261
|
const offset = this.#getOffset(4 /* SizeOf.INT32 */);
|
|
265
262
|
this.#alloc(offset);
|
|
266
263
|
this.#dataView.setInt32(this.#offset, value, littleEndian);
|
|
@@ -272,7 +269,7 @@ class Buffer {
|
|
|
272
269
|
* @param {number} value 要写入的 32 位无符号整数
|
|
273
270
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
274
271
|
*/
|
|
275
|
-
writeUint32(value, littleEndian) {
|
|
272
|
+
writeUint32(value, littleEndian = this.#littleEndian) {
|
|
276
273
|
const offset = this.#getOffset(4 /* SizeOf.UINT32 */);
|
|
277
274
|
this.#alloc(offset);
|
|
278
275
|
this.#dataView.setUint32(this.#offset, value, littleEndian);
|
|
@@ -281,10 +278,10 @@ class Buffer {
|
|
|
281
278
|
/**
|
|
282
279
|
* @method writeInt64
|
|
283
280
|
* @description 在缓冲区中写入一个 64 位有符号整数
|
|
284
|
-
* @param {bigint} value 要写入的
|
|
281
|
+
* @param {bigint} value 要写入的 64 位有符号整数
|
|
285
282
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
286
283
|
*/
|
|
287
|
-
writeInt64(value, littleEndian) {
|
|
284
|
+
writeInt64(value, littleEndian = this.#littleEndian) {
|
|
288
285
|
const offset = this.#getOffset(8 /* SizeOf.INT64 */);
|
|
289
286
|
this.#alloc(offset);
|
|
290
287
|
this.#dataView.setBigInt64(this.#offset, value, littleEndian);
|
|
@@ -296,7 +293,7 @@ class Buffer {
|
|
|
296
293
|
* @param {bigint} value 要写入的 64 位无符号整数
|
|
297
294
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
298
295
|
*/
|
|
299
|
-
writeUint64(value, littleEndian) {
|
|
296
|
+
writeUint64(value, littleEndian = this.#littleEndian) {
|
|
300
297
|
const offset = this.#getOffset(8 /* SizeOf.UINT64 */);
|
|
301
298
|
this.#alloc(offset);
|
|
302
299
|
this.#dataView.setBigUint64(this.#offset, value, littleEndian);
|
|
@@ -308,7 +305,7 @@ class Buffer {
|
|
|
308
305
|
* @param {number} value 单精度 32 位浮点数
|
|
309
306
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
310
307
|
*/
|
|
311
|
-
writeFloat32(value, littleEndian) {
|
|
308
|
+
writeFloat32(value, littleEndian = this.#littleEndian) {
|
|
312
309
|
const offset = this.#getOffset(4 /* SizeOf.FLOAT32 */);
|
|
313
310
|
this.#alloc(offset);
|
|
314
311
|
this.#dataView.setFloat32(this.#offset, value, littleEndian);
|
|
@@ -320,7 +317,7 @@ class Buffer {
|
|
|
320
317
|
* @param {number} value 双精度 64 位浮点数
|
|
321
318
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
322
319
|
*/
|
|
323
|
-
writeFloat64(value, littleEndian) {
|
|
320
|
+
writeFloat64(value, littleEndian = this.#littleEndian) {
|
|
324
321
|
const offset = this.#getOffset(8 /* SizeOf.FLOAT64 */);
|
|
325
322
|
this.#alloc(offset);
|
|
326
323
|
this.#dataView.setFloat64(this.#offset, value, littleEndian);
|
|
@@ -379,7 +376,7 @@ class Buffer {
|
|
|
379
376
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
380
377
|
* @returns {number} 介于 -32768 和 32767 之间的 16 位有符号整数
|
|
381
378
|
*/
|
|
382
|
-
readInt16(littleEndian) {
|
|
379
|
+
readInt16(littleEndian = this.#littleEndian) {
|
|
383
380
|
const offset = this.#getOffset(2 /* SizeOf.INT16 */);
|
|
384
381
|
this.#assertRead(offset);
|
|
385
382
|
const value = this.#dataView.getInt16(this.#offset, littleEndian);
|
|
@@ -392,7 +389,7 @@ class Buffer {
|
|
|
392
389
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
393
390
|
* @returns {number} 介于 0 和 65535 之间的 16 位无符号整数
|
|
394
391
|
*/
|
|
395
|
-
readUint16(littleEndian) {
|
|
392
|
+
readUint16(littleEndian = this.#littleEndian) {
|
|
396
393
|
const offset = this.#getOffset(2 /* SizeOf.UINT16 */);
|
|
397
394
|
this.#assertRead(offset);
|
|
398
395
|
const value = this.#dataView.getUint16(this.#offset, littleEndian);
|
|
@@ -405,7 +402,7 @@ class Buffer {
|
|
|
405
402
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
406
403
|
* @returns {number} 介于 -2147483648 和 2147483647 之间的 32 位有符号整数
|
|
407
404
|
*/
|
|
408
|
-
readInt32(littleEndian) {
|
|
405
|
+
readInt32(littleEndian = this.#littleEndian) {
|
|
409
406
|
const offset = this.#getOffset(4 /* SizeOf.INT32 */);
|
|
410
407
|
this.#assertRead(offset);
|
|
411
408
|
const value = this.#dataView.getInt32(this.#offset, littleEndian);
|
|
@@ -418,7 +415,7 @@ class Buffer {
|
|
|
418
415
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
419
416
|
* @returns {number} 介于 0 和 4294967295 之间的 32 位无符号整数
|
|
420
417
|
*/
|
|
421
|
-
readUint32(littleEndian) {
|
|
418
|
+
readUint32(littleEndian = this.#littleEndian) {
|
|
422
419
|
const offset = this.#getOffset(4 /* SizeOf.UINT32 */);
|
|
423
420
|
this.#assertRead(offset);
|
|
424
421
|
const value = this.#dataView.getUint32(this.#offset, littleEndian);
|
|
@@ -431,7 +428,7 @@ class Buffer {
|
|
|
431
428
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
432
429
|
* @returns {bigint} 介于 -9223372036854775808 和 9223372036854775807 之间的 64 位有符号整数
|
|
433
430
|
*/
|
|
434
|
-
readInt64(littleEndian) {
|
|
431
|
+
readInt64(littleEndian = this.#littleEndian) {
|
|
435
432
|
const offset = this.#getOffset(8 /* SizeOf.INT64 */);
|
|
436
433
|
this.#assertRead(offset);
|
|
437
434
|
const value = this.#dataView.getBigInt64(this.#offset, littleEndian);
|
|
@@ -444,7 +441,7 @@ class Buffer {
|
|
|
444
441
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
445
442
|
* @returns {bigint} 介于 0 和 18446744073709551615 之间的 64 位无符号整数
|
|
446
443
|
*/
|
|
447
|
-
readUint64(littleEndian) {
|
|
444
|
+
readUint64(littleEndian = this.#littleEndian) {
|
|
448
445
|
const offset = this.#getOffset(8 /* SizeOf.UINT64 */);
|
|
449
446
|
this.#assertRead(offset);
|
|
450
447
|
const value = this.#dataView.getBigUint64(this.#offset, littleEndian);
|
|
@@ -457,7 +454,7 @@ class Buffer {
|
|
|
457
454
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
458
455
|
* @returns {number} 单精度 32 位浮点数
|
|
459
456
|
*/
|
|
460
|
-
readFloat32(littleEndian) {
|
|
457
|
+
readFloat32(littleEndian = this.#littleEndian) {
|
|
461
458
|
const offset = this.#getOffset(4 /* SizeOf.FLOAT32 */);
|
|
462
459
|
this.#assertRead(offset);
|
|
463
460
|
const value = this.#dataView.getFloat32(this.#offset, littleEndian);
|
|
@@ -470,7 +467,7 @@ class Buffer {
|
|
|
470
467
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
471
468
|
* @returns {number} 双精度 64 位浮点数
|
|
472
469
|
*/
|
|
473
|
-
readFloat64(littleEndian) {
|
|
470
|
+
readFloat64(littleEndian = this.#littleEndian) {
|
|
474
471
|
const offset = this.#getOffset(8 /* SizeOf.FLOAT64 */);
|
|
475
472
|
this.#assertRead(offset);
|
|
476
473
|
const value = this.#dataView.getFloat64(this.#offset, littleEndian);
|
|
@@ -499,10 +496,11 @@ class Buffer {
|
|
|
499
496
|
* @returns {Buffer}
|
|
500
497
|
*/
|
|
501
498
|
slice(start, end) {
|
|
502
|
-
return new Buffer(this.bytes.
|
|
499
|
+
return new Buffer(this.bytes.subarray(start, end), {
|
|
503
500
|
encode: this.#encode,
|
|
504
501
|
decode: this.#decode,
|
|
505
|
-
pageSize: this.#pageSize
|
|
502
|
+
pageSize: this.#pageSize,
|
|
503
|
+
littleEndian: this.#littleEndian
|
|
506
504
|
});
|
|
507
505
|
}
|
|
508
506
|
/**
|
package/cjs/index.d.cts
CHANGED
|
@@ -22,6 +22,11 @@ export interface Options {
|
|
|
22
22
|
* @description 文本解码函数
|
|
23
23
|
*/
|
|
24
24
|
decode?: TextDecode;
|
|
25
|
+
/**
|
|
26
|
+
* @property {boolean} [littleEndian]
|
|
27
|
+
* @description 指定默认字节序,默认小端字节序
|
|
28
|
+
*/
|
|
29
|
+
littleEndian?: boolean;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* @function endianness
|
|
@@ -47,12 +52,6 @@ export declare class Buffer {
|
|
|
47
52
|
* @param {number} [pageSize] 缓冲区分页大小,扩容时将按分页大小增加
|
|
48
53
|
*/
|
|
49
54
|
constructor(bytes: TypedArray, options?: Options);
|
|
50
|
-
/**
|
|
51
|
-
* @constructor
|
|
52
|
-
* @param {ArrayBuffer} buffer 缓冲区初始缓冲数据
|
|
53
|
-
* @param {number} [pageSize] 缓冲区分页大小,扩容时将按分页大小增加
|
|
54
|
-
*/
|
|
55
|
-
constructor(buffer: ArrayBuffer, options?: Options);
|
|
56
55
|
/**
|
|
57
56
|
* @public
|
|
58
57
|
* @property {number} offset
|
|
@@ -147,7 +146,7 @@ export declare class Buffer {
|
|
|
147
146
|
/**
|
|
148
147
|
* @method writeInt64
|
|
149
148
|
* @description 在缓冲区中写入一个 64 位有符号整数
|
|
150
|
-
* @param {bigint} value 要写入的
|
|
149
|
+
* @param {bigint} value 要写入的 64 位有符号整数
|
|
151
150
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
152
151
|
*/
|
|
153
152
|
writeInt64(value: bigint, littleEndian?: boolean): void;
|
package/cjs/utils.cjs
CHANGED
package/esm/binary.js
CHANGED
package/esm/encoding.js
CHANGED
package/esm/enum.js
CHANGED
package/esm/errors.js
CHANGED
package/esm/index.d.ts
CHANGED
|
@@ -22,6 +22,11 @@ export interface Options {
|
|
|
22
22
|
* @description 文本解码函数
|
|
23
23
|
*/
|
|
24
24
|
decode?: TextDecode;
|
|
25
|
+
/**
|
|
26
|
+
* @property {boolean} [littleEndian]
|
|
27
|
+
* @description 指定默认字节序,默认小端字节序
|
|
28
|
+
*/
|
|
29
|
+
littleEndian?: boolean;
|
|
25
30
|
}
|
|
26
31
|
/**
|
|
27
32
|
* @function endianness
|
|
@@ -47,12 +52,6 @@ export declare class Buffer {
|
|
|
47
52
|
* @param {number} [pageSize] 缓冲区分页大小,扩容时将按分页大小增加
|
|
48
53
|
*/
|
|
49
54
|
constructor(bytes: TypedArray, options?: Options);
|
|
50
|
-
/**
|
|
51
|
-
* @constructor
|
|
52
|
-
* @param {ArrayBuffer} buffer 缓冲区初始缓冲数据
|
|
53
|
-
* @param {number} [pageSize] 缓冲区分页大小,扩容时将按分页大小增加
|
|
54
|
-
*/
|
|
55
|
-
constructor(buffer: ArrayBuffer, options?: Options);
|
|
56
55
|
/**
|
|
57
56
|
* @public
|
|
58
57
|
* @property {number} offset
|
|
@@ -147,7 +146,7 @@ export declare class Buffer {
|
|
|
147
146
|
/**
|
|
148
147
|
* @method writeInt64
|
|
149
148
|
* @description 在缓冲区中写入一个 64 位有符号整数
|
|
150
|
-
* @param {bigint} value 要写入的
|
|
149
|
+
* @param {bigint} value 要写入的 64 位有符号整数
|
|
151
150
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
152
151
|
*/
|
|
153
152
|
writeInt64(value: bigint, littleEndian?: boolean): void;
|
package/esm/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @package @nuintun/buffer
|
|
3
3
|
* @license MIT
|
|
4
|
-
* @version 0.
|
|
4
|
+
* @version 0.7.0
|
|
5
5
|
* @author nuintun <nuintun@qq.com>
|
|
6
6
|
* @description A buffer tool for javascript.
|
|
7
7
|
* @see https://github.com/nuintun/Buffer#readme
|
|
@@ -51,6 +51,8 @@ class Buffer {
|
|
|
51
51
|
#encode;
|
|
52
52
|
// 文本解码方法
|
|
53
53
|
#decode;
|
|
54
|
+
// 字节序
|
|
55
|
+
#littleEndian;
|
|
54
56
|
constructor(input = 0, options = {}) {
|
|
55
57
|
let length;
|
|
56
58
|
let bytes;
|
|
@@ -59,13 +61,7 @@ class Buffer {
|
|
|
59
61
|
length = input.byteLength;
|
|
60
62
|
bytes = makeUint8Array(length, pageSize);
|
|
61
63
|
if (length > 0) {
|
|
62
|
-
bytes.set(new Uint8Array(input.buffer));
|
|
63
|
-
}
|
|
64
|
-
} else if (input instanceof ArrayBuffer) {
|
|
65
|
-
length = input.byteLength;
|
|
66
|
-
bytes = makeUint8Array(length, pageSize);
|
|
67
|
-
if (length > 0) {
|
|
68
|
-
bytes.set(new Uint8Array(input));
|
|
64
|
+
bytes.set(new Uint8Array(input.buffer, input.byteOffset, length));
|
|
69
65
|
}
|
|
70
66
|
} else {
|
|
71
67
|
length = input;
|
|
@@ -77,6 +73,7 @@ class Buffer {
|
|
|
77
73
|
this.#encode = options.encode ?? encode;
|
|
78
74
|
this.#decode = options.decode ?? decode;
|
|
79
75
|
this.#dataView = new DataView(bytes.buffer);
|
|
76
|
+
this.#littleEndian = options.littleEndian ?? true;
|
|
80
77
|
}
|
|
81
78
|
/**
|
|
82
79
|
* @private
|
|
@@ -234,7 +231,7 @@ class Buffer {
|
|
|
234
231
|
* @param {number} value 要写入的 16 位有符号整数
|
|
235
232
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
236
233
|
*/
|
|
237
|
-
writeInt16(value, littleEndian) {
|
|
234
|
+
writeInt16(value, littleEndian = this.#littleEndian) {
|
|
238
235
|
const offset = this.#getOffset(2 /* SizeOf.INT16 */);
|
|
239
236
|
this.#alloc(offset);
|
|
240
237
|
this.#dataView.setInt16(this.#offset, value, littleEndian);
|
|
@@ -246,7 +243,7 @@ class Buffer {
|
|
|
246
243
|
* @param {number} value 要写入的 16 位无符号整数
|
|
247
244
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
248
245
|
*/
|
|
249
|
-
writeUint16(value, littleEndian) {
|
|
246
|
+
writeUint16(value, littleEndian = this.#littleEndian) {
|
|
250
247
|
const offset = this.#getOffset(2 /* SizeOf.UINT16 */);
|
|
251
248
|
this.#alloc(offset);
|
|
252
249
|
this.#dataView.setUint16(this.#offset, value, littleEndian);
|
|
@@ -258,7 +255,7 @@ class Buffer {
|
|
|
258
255
|
* @param {number} value 要写入的 32 位有符号整数
|
|
259
256
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
260
257
|
*/
|
|
261
|
-
writeInt32(value, littleEndian) {
|
|
258
|
+
writeInt32(value, littleEndian = this.#littleEndian) {
|
|
262
259
|
const offset = this.#getOffset(4 /* SizeOf.INT32 */);
|
|
263
260
|
this.#alloc(offset);
|
|
264
261
|
this.#dataView.setInt32(this.#offset, value, littleEndian);
|
|
@@ -270,7 +267,7 @@ class Buffer {
|
|
|
270
267
|
* @param {number} value 要写入的 32 位无符号整数
|
|
271
268
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
272
269
|
*/
|
|
273
|
-
writeUint32(value, littleEndian) {
|
|
270
|
+
writeUint32(value, littleEndian = this.#littleEndian) {
|
|
274
271
|
const offset = this.#getOffset(4 /* SizeOf.UINT32 */);
|
|
275
272
|
this.#alloc(offset);
|
|
276
273
|
this.#dataView.setUint32(this.#offset, value, littleEndian);
|
|
@@ -279,10 +276,10 @@ class Buffer {
|
|
|
279
276
|
/**
|
|
280
277
|
* @method writeInt64
|
|
281
278
|
* @description 在缓冲区中写入一个 64 位有符号整数
|
|
282
|
-
* @param {bigint} value 要写入的
|
|
279
|
+
* @param {bigint} value 要写入的 64 位有符号整数
|
|
283
280
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
284
281
|
*/
|
|
285
|
-
writeInt64(value, littleEndian) {
|
|
282
|
+
writeInt64(value, littleEndian = this.#littleEndian) {
|
|
286
283
|
const offset = this.#getOffset(8 /* SizeOf.INT64 */);
|
|
287
284
|
this.#alloc(offset);
|
|
288
285
|
this.#dataView.setBigInt64(this.#offset, value, littleEndian);
|
|
@@ -294,7 +291,7 @@ class Buffer {
|
|
|
294
291
|
* @param {bigint} value 要写入的 64 位无符号整数
|
|
295
292
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
296
293
|
*/
|
|
297
|
-
writeUint64(value, littleEndian) {
|
|
294
|
+
writeUint64(value, littleEndian = this.#littleEndian) {
|
|
298
295
|
const offset = this.#getOffset(8 /* SizeOf.UINT64 */);
|
|
299
296
|
this.#alloc(offset);
|
|
300
297
|
this.#dataView.setBigUint64(this.#offset, value, littleEndian);
|
|
@@ -306,7 +303,7 @@ class Buffer {
|
|
|
306
303
|
* @param {number} value 单精度 32 位浮点数
|
|
307
304
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
308
305
|
*/
|
|
309
|
-
writeFloat32(value, littleEndian) {
|
|
306
|
+
writeFloat32(value, littleEndian = this.#littleEndian) {
|
|
310
307
|
const offset = this.#getOffset(4 /* SizeOf.FLOAT32 */);
|
|
311
308
|
this.#alloc(offset);
|
|
312
309
|
this.#dataView.setFloat32(this.#offset, value, littleEndian);
|
|
@@ -318,7 +315,7 @@ class Buffer {
|
|
|
318
315
|
* @param {number} value 双精度 64 位浮点数
|
|
319
316
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
320
317
|
*/
|
|
321
|
-
writeFloat64(value, littleEndian) {
|
|
318
|
+
writeFloat64(value, littleEndian = this.#littleEndian) {
|
|
322
319
|
const offset = this.#getOffset(8 /* SizeOf.FLOAT64 */);
|
|
323
320
|
this.#alloc(offset);
|
|
324
321
|
this.#dataView.setFloat64(this.#offset, value, littleEndian);
|
|
@@ -377,7 +374,7 @@ class Buffer {
|
|
|
377
374
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
378
375
|
* @returns {number} 介于 -32768 和 32767 之间的 16 位有符号整数
|
|
379
376
|
*/
|
|
380
|
-
readInt16(littleEndian) {
|
|
377
|
+
readInt16(littleEndian = this.#littleEndian) {
|
|
381
378
|
const offset = this.#getOffset(2 /* SizeOf.INT16 */);
|
|
382
379
|
this.#assertRead(offset);
|
|
383
380
|
const value = this.#dataView.getInt16(this.#offset, littleEndian);
|
|
@@ -390,7 +387,7 @@ class Buffer {
|
|
|
390
387
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
391
388
|
* @returns {number} 介于 0 和 65535 之间的 16 位无符号整数
|
|
392
389
|
*/
|
|
393
|
-
readUint16(littleEndian) {
|
|
390
|
+
readUint16(littleEndian = this.#littleEndian) {
|
|
394
391
|
const offset = this.#getOffset(2 /* SizeOf.UINT16 */);
|
|
395
392
|
this.#assertRead(offset);
|
|
396
393
|
const value = this.#dataView.getUint16(this.#offset, littleEndian);
|
|
@@ -403,7 +400,7 @@ class Buffer {
|
|
|
403
400
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
404
401
|
* @returns {number} 介于 -2147483648 和 2147483647 之间的 32 位有符号整数
|
|
405
402
|
*/
|
|
406
|
-
readInt32(littleEndian) {
|
|
403
|
+
readInt32(littleEndian = this.#littleEndian) {
|
|
407
404
|
const offset = this.#getOffset(4 /* SizeOf.INT32 */);
|
|
408
405
|
this.#assertRead(offset);
|
|
409
406
|
const value = this.#dataView.getInt32(this.#offset, littleEndian);
|
|
@@ -416,7 +413,7 @@ class Buffer {
|
|
|
416
413
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
417
414
|
* @returns {number} 介于 0 和 4294967295 之间的 32 位无符号整数
|
|
418
415
|
*/
|
|
419
|
-
readUint32(littleEndian) {
|
|
416
|
+
readUint32(littleEndian = this.#littleEndian) {
|
|
420
417
|
const offset = this.#getOffset(4 /* SizeOf.UINT32 */);
|
|
421
418
|
this.#assertRead(offset);
|
|
422
419
|
const value = this.#dataView.getUint32(this.#offset, littleEndian);
|
|
@@ -429,7 +426,7 @@ class Buffer {
|
|
|
429
426
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
430
427
|
* @returns {bigint} 介于 -9223372036854775808 和 9223372036854775807 之间的 64 位有符号整数
|
|
431
428
|
*/
|
|
432
|
-
readInt64(littleEndian) {
|
|
429
|
+
readInt64(littleEndian = this.#littleEndian) {
|
|
433
430
|
const offset = this.#getOffset(8 /* SizeOf.INT64 */);
|
|
434
431
|
this.#assertRead(offset);
|
|
435
432
|
const value = this.#dataView.getBigInt64(this.#offset, littleEndian);
|
|
@@ -442,7 +439,7 @@ class Buffer {
|
|
|
442
439
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
443
440
|
* @returns {bigint} 介于 0 和 18446744073709551615 之间的 64 位无符号整数
|
|
444
441
|
*/
|
|
445
|
-
readUint64(littleEndian) {
|
|
442
|
+
readUint64(littleEndian = this.#littleEndian) {
|
|
446
443
|
const offset = this.#getOffset(8 /* SizeOf.UINT64 */);
|
|
447
444
|
this.#assertRead(offset);
|
|
448
445
|
const value = this.#dataView.getBigUint64(this.#offset, littleEndian);
|
|
@@ -455,7 +452,7 @@ class Buffer {
|
|
|
455
452
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
456
453
|
* @returns {number} 单精度 32 位浮点数
|
|
457
454
|
*/
|
|
458
|
-
readFloat32(littleEndian) {
|
|
455
|
+
readFloat32(littleEndian = this.#littleEndian) {
|
|
459
456
|
const offset = this.#getOffset(4 /* SizeOf.FLOAT32 */);
|
|
460
457
|
this.#assertRead(offset);
|
|
461
458
|
const value = this.#dataView.getFloat32(this.#offset, littleEndian);
|
|
@@ -468,7 +465,7 @@ class Buffer {
|
|
|
468
465
|
* @param {boolean} [littleEndian] 是否为小端字节序
|
|
469
466
|
* @returns {number} 双精度 64 位浮点数
|
|
470
467
|
*/
|
|
471
|
-
readFloat64(littleEndian) {
|
|
468
|
+
readFloat64(littleEndian = this.#littleEndian) {
|
|
472
469
|
const offset = this.#getOffset(8 /* SizeOf.FLOAT64 */);
|
|
473
470
|
this.#assertRead(offset);
|
|
474
471
|
const value = this.#dataView.getFloat64(this.#offset, littleEndian);
|
|
@@ -497,10 +494,11 @@ class Buffer {
|
|
|
497
494
|
* @returns {Buffer}
|
|
498
495
|
*/
|
|
499
496
|
slice(start, end) {
|
|
500
|
-
return new Buffer(this.bytes.
|
|
497
|
+
return new Buffer(this.bytes.subarray(start, end), {
|
|
501
498
|
encode: this.#encode,
|
|
502
499
|
decode: this.#decode,
|
|
503
|
-
pageSize: this.#pageSize
|
|
500
|
+
pageSize: this.#pageSize,
|
|
501
|
+
littleEndian: this.#littleEndian
|
|
504
502
|
});
|
|
505
503
|
}
|
|
506
504
|
/**
|
package/esm/utils.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuintun/buffer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "A buffer tool for javascript.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"magic-string": "^0.30.17",
|
|
42
42
|
"prettier": "^3.6.2",
|
|
43
43
|
"rimraf": "^6.0.1",
|
|
44
|
-
"rollup": "^4.
|
|
44
|
+
"rollup": "^4.46.2",
|
|
45
45
|
"typescript": "^5.8.3"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|