@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 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 要写入的 32 位有符号整数
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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/cjs/encoding.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/cjs/enum.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/cjs/errors.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/cjs/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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 要写入的 32 位有符号整数
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.slice(start, end), {
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 要写入的 32 位有符号整数
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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/esm/binary.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/esm/encoding.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/esm/enum.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/esm/errors.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
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 要写入的 32 位有符号整数
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.5.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 要写入的 32 位有符号整数
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.slice(start, end), {
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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package @nuintun/buffer
3
3
  * @license MIT
4
- * @version 0.5.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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuintun/buffer",
3
- "version": "0.5.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.45.1",
44
+ "rollup": "^4.46.2",
45
45
  "typescript": "^5.8.3"
46
46
  },
47
47
  "scripts": {