bireader 1.0.19 → 1.0.21

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
@@ -263,6 +263,7 @@ function write_webp(data){
263
263
  default:
264
264
  break;
265
265
  }
266
+ bw.trim() //remove any remaining bytes
266
267
  bw.goto(4)
267
268
  bw.uint32le(bw.size - 8) //write file size
268
269
  return bw.return()
@@ -420,12 +421,14 @@ Common functions for setup, movement, manipulation and math shared by both.
420
421
  <tr>
421
422
  <td>Name</td>
422
423
  <td>delete(startOffset, endOffset, consume)</td>
423
- <td align="center" rowspan="2">Start byte of data (default 0), end byte of data (default current byte position), move byte position to after data read (default false)</td>
424
- <td rowspan="2">Removes and returns data. <br><b>Note:</b> Errors on strict mode</td>
424
+ <td align="center">Start byte of data (default 0), end byte of data (default current byte position), move byte position to after data read (default false)</td>
425
+ <td >Removes and returns data. <br><b>Note:</b> Errors on strict mode</td>
425
426
  </tr>
426
427
  <tr>
427
- <td>Alias</td>
428
- <td>clip(startOffset, endOffset, consume)</td>
428
+ <td>Preset</td>
429
+ <td>clip()<br>trim()</td>
430
+ <td align="center">None</td>
431
+ <td >Removes data after the current byte position and returns data. <br><b>Note:</b> Errors on strict mode</td>
429
432
  </tr>
430
433
  <tr>
431
434
  <td>Name</td>
@@ -507,7 +510,7 @@ Common functions for setup, movement, manipulation and math shared by both.
507
510
  <tr>
508
511
  <td>Name</td>
509
512
  <td>xorThis(<b>xorKey</b>, length, consume)
510
- <td align="center"><b>Byte value, string, Uint8Array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for Uint8Array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
513
+ <td align="center"><b>Byte value, string, Uint8Array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
511
514
  <td>XOR data <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
512
515
  </tr>
513
516
  <tr>
@@ -519,31 +522,31 @@ Common functions for setup, movement, manipulation and math shared by both.
519
522
  <tr>
520
523
  <td>Name</td>
521
524
  <td>orThis(<b>orKey</b>, length, consume)
522
- <td align="center"><b>Byte value, string, Uint8Array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for Uint8Array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
525
+ <td align="center"><b>Byte value, string, Uint8Array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
523
526
  <td>OR data <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
524
527
  </tr>
525
528
  <tr>
526
529
  <td>Name</td>
527
530
  <td>and(<b>andKey</b>, startOffset, endOffset, consume)
528
- <td align="center"><b>Byte value, string, Uint8Array or Buffer</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
531
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
529
532
  <td >AND data <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
530
533
  </tr>
531
534
  <tr>
532
535
  <td>Name</td>
533
536
  <td>andThis(<b>andKey</b>, length, consume)
534
- <td align="center"><b>Byte value, string, Uint8Array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for Uint8Array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
537
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
535
538
  <td>AND data <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
536
539
  </tr>
537
540
  <tr>
538
541
  <td>Name</td>
539
- <td>add(<b>shiftValue</b>, startOffset, endOffset, consume)
540
- <td align="center"><b>Value</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
541
- <td >Add value to data (per byte)</td>
542
+ <td>add(<b>addKey</b>, startOffset, endOffset, consume)
543
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
544
+ <td >Add value to data (per byte). <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
542
545
  </tr>
543
546
  <tr>
544
547
  <td>Name</td>
545
- <td>addThis(<b>shiftValue</b>, length, consume)
546
- <td align="center"><b>Value</b>, length of bytes starting at current byte (default 1), byte position to end (default end of data), move byte position to after operation (default false)</td>
548
+ <td>addThis(<b>addKey</b>, length, consume)
549
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
547
550
  <td>Add value to data (per byte)</td>
548
551
  </tr>
549
552
  <tr>
@@ -560,26 +563,26 @@ Common functions for setup, movement, manipulation and math shared by both.
560
563
  </tr>
561
564
  <tr>
562
565
  <td>Name</td>
563
- <td>lShift(<b>shiftValue</b>, startOffset, endOffset, consume)
564
- <td align="center"><b>Value</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
565
- <td >Left shift data (per byte)</td>
566
+ <td>lShift(<b>shiftKey</b>, startOffset, endOffset, consume)
567
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
568
+ <td >Left shift data (per byte). <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
566
569
  </tr>
567
570
  <tr>
568
571
  <td>Name</td>
569
- <td>lShiftThis(<b>shiftValue</b>, length, consume)
570
- <td align="center"><b>Value</b>, length of bytes starting at current byte (default 1), byte position to end (default end of data), move byte position to after operation (default false)</td>
572
+ <td>lShiftThis(<b>shiftKey</b>, length, consume)
573
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
571
574
  <td>Left shift data (per byte)</td>
572
575
  </tr>
573
576
  <tr>
574
577
  <td>Name</td>
575
- <td>rShift(<b>shiftValue</b>, startOffset, endOffset, consume)
576
- <td align="center"><b>Value</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
577
- <td >Right shift data (per byte)</td>
578
+ <td>rShift(<b>shiftKey</b>, startOffset, endOffset, consume)
579
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, byte position to start (default current position), byte position to end (default end of data), move byte position to after operation (default false)</td>
580
+ <td >Right shift data (per byte). <b>Note:</b> Will loop if operation length is longer than supplied key.</td>
578
581
  </tr>
579
582
  <tr>
580
583
  <td>Name</td>
581
- <td>rShiftThis(<b>shiftValue</b>, length, consume)
582
- <td align="center"><b>Value</b>, length of bytes starting at current byte (default 1), byte position to end (default end of data), move byte position to after operation (default false)</td>
584
+ <td>rShiftThis(<b>shiftKey</b>, length, consume)
585
+ <td align="center"><b>Byte value, string, number array or Buffer</b>, length of bytes starting at current byte (repeats when longer, default 1 byte for byte value, string length or end of data for string, array length or end of data for array or Buffer), byte position to end (default end of data), move byte position to after operation (default false)</td>
583
586
  <td>Right shift data (per byte)</td>
584
587
  </tr>
585
588
  </tbody>
@@ -48,8 +48,13 @@ function skip(_this, bytes, bits) {
48
48
  const new_size = (((bytes || 0) + _this.offset) + Math.ceil((_this.bitoffset + (bits || 0)) / 8));
49
49
  _this.check_size(bytes || 0, bits || 0);
50
50
  if (new_size > _this.size) {
51
- _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
52
- throw new Error("\x1b[33m[Strict mode]\x1b[0m: Seek outside of size of data: " + _this.size);
51
+ if (_this.strict == false) {
52
+ _this.extendArray(new_size - _this.size);
53
+ }
54
+ else {
55
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
56
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: Seek of range of data: seek " + new_size + " of " + _this.size);
57
+ }
53
58
  }
54
59
  _this.bitoffset += (bits || 0) % 8;
55
60
  _this.offset += (bytes || 0);
@@ -57,12 +62,14 @@ function skip(_this, bytes, bits) {
57
62
  exports.skip = skip;
58
63
  function goto(_this, byte, bit) {
59
64
  const new_size = (byte + Math.ceil((bit || 0) / 8));
60
- if (new_size > _this.size && _this.strict == false) {
61
- _this.extendArray(new_size - _this.size);
62
- }
63
- else {
64
- _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
65
- throw new Error("\x1b[33m[Strict mode]\x1b[0m: Outside of range of data: goto " + new_size + " of " + _this.size);
65
+ if (new_size > _this.size) {
66
+ if (_this.strict == false) {
67
+ _this.extendArray(new_size - _this.size);
68
+ }
69
+ else {
70
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m hexdump:\n" + _this.hexdump() : "";
71
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: Goto utside of range of data: goto " + new_size + " of " + _this.size);
72
+ }
66
73
  }
67
74
  _this.offset = byte;
68
75
  _this.bitoffset = (bit || 0) % 8;
@@ -112,9 +119,11 @@ function remove(_this, startOffset, endOffset, consume, remove, fillValue) {
112
119
  if (consume == true) {
113
120
  if (remove != true) {
114
121
  _this.offset = new_offset;
122
+ _this.bitoffset = 0;
115
123
  }
116
124
  else {
117
125
  _this.offset = new_start;
126
+ _this.bitoffset = 0;
118
127
  }
119
128
  }
120
129
  return data_removed;
@@ -136,8 +145,13 @@ function addData(_this, data, consume, offset, repalce) {
136
145
  needed_size = offset || _this.offset + data.length;
137
146
  }
138
147
  if (needed_size > _this.size) {
139
- const dif = needed_size - _this.size;
140
- _this.extendArray(dif);
148
+ if (_this.strict == false) {
149
+ _this.extendArray(needed_size - _this.size);
150
+ }
151
+ else {
152
+ _this.errorDump ? "\x1b[31m[Error]\x1b[0m: hexdump:\n" + _this.hexdump() : "";
153
+ throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + needed_size + " of " + _this.size);
154
+ }
141
155
  _this.size = _this.data.length;
142
156
  }
143
157
  if (repalce) {
@@ -170,6 +184,7 @@ function addData(_this, data, consume, offset, repalce) {
170
184
  }
171
185
  if (consume) {
172
186
  _this.offset = needed_size;
187
+ _this.bitoffset = 0;
173
188
  }
174
189
  }
175
190
  exports.addData = addData;
@@ -356,7 +371,7 @@ function hexDump(_this, options) {
356
371
  console.log(rows.join("\n"));
357
372
  }
358
373
  exports.hexDump = hexDump;
359
- function AND(_this, xor_key, start, end, consume) {
374
+ function AND(_this, and_key, start, end, consume) {
360
375
  const input = _this.data;
361
376
  if ((end || 0) > _this.size) {
362
377
  if (_this.strict == false) {
@@ -367,27 +382,29 @@ function AND(_this, xor_key, start, end, consume) {
367
382
  throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + (end || 0) + " of " + _this.size);
368
383
  }
369
384
  }
370
- if (typeof xor_key == "number") {
385
+ if (typeof and_key == "number") {
371
386
  for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
372
- input[i] = input[i] & (xor_key & 0xff);
387
+ input[i] = input[i] & (and_key & 0xff);
373
388
  if (consume) {
374
389
  _this.offset = i;
390
+ _this.bitoffset = 0;
375
391
  }
376
392
  }
377
393
  }
378
394
  else {
379
- if (_this.isBufferOrUint8Array(xor_key)) {
395
+ if (_this.isBufferOrUint8Array(and_key)) {
380
396
  let number = -1;
381
397
  for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
382
- if (number != xor_key.length - 1) {
398
+ if (number != and_key.length - 1) {
383
399
  number = number + 1;
384
400
  }
385
401
  else {
386
402
  number = 0;
387
403
  }
388
- input[i] = input[i] & xor_key[number];
404
+ input[i] = input[i] & and_key[number];
389
405
  if (consume) {
390
406
  _this.offset = i;
407
+ _this.bitoffset = 0;
391
408
  }
392
409
  }
393
410
  }
@@ -397,7 +414,7 @@ function AND(_this, xor_key, start, end, consume) {
397
414
  }
398
415
  }
399
416
  exports.AND = AND;
400
- function OR(_this, xor_key, start, end, consume) {
417
+ function OR(_this, or_key, start, end, consume) {
401
418
  const input = _this.data;
402
419
  if ((end || 0) > _this.size) {
403
420
  if (_this.strict == false) {
@@ -408,27 +425,29 @@ function OR(_this, xor_key, start, end, consume) {
408
425
  throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + (end || 0) + " of " + _this.size);
409
426
  }
410
427
  }
411
- if (typeof xor_key == "number") {
428
+ if (typeof or_key == "number") {
412
429
  for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
413
- input[i] = input[i] | (xor_key & 0xff);
430
+ input[i] = input[i] | (or_key & 0xff);
414
431
  if (consume) {
415
432
  _this.offset = i;
433
+ _this.bitoffset = 0;
416
434
  }
417
435
  }
418
436
  }
419
437
  else {
420
- if (_this.isBufferOrUint8Array(xor_key)) {
438
+ if (_this.isBufferOrUint8Array(or_key)) {
421
439
  let number = -1;
422
440
  for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
423
- if (number != xor_key.length - 1) {
441
+ if (number != or_key.length - 1) {
424
442
  number = number + 1;
425
443
  }
426
444
  else {
427
445
  number = 0;
428
446
  }
429
- input[i] = input[i] | xor_key[number];
447
+ input[i] = input[i] | or_key[number];
430
448
  if (consume) {
431
449
  _this.offset = i;
450
+ _this.bitoffset = 0;
432
451
  }
433
452
  }
434
453
  }
@@ -454,6 +473,7 @@ function XOR(_this, xor_key, start, end, consume) {
454
473
  input[i] = input[i] ^ (xor_key & 0xff);
455
474
  if (consume) {
456
475
  _this.offset = i;
476
+ _this.bitoffset = 0;
457
477
  }
458
478
  }
459
479
  }
@@ -470,6 +490,7 @@ function XOR(_this, xor_key, start, end, consume) {
470
490
  input[i] = input[i] ^ xor_key[number];
471
491
  if (consume) {
472
492
  _this.offset = i;
493
+ _this.bitoffset = 0;
473
494
  }
474
495
  }
475
496
  }
@@ -493,11 +514,13 @@ function NOT(_this, start, end, consume) {
493
514
  _this.data[i] = ~_this.data[i];
494
515
  if (consume) {
495
516
  _this.offset = i;
517
+ _this.bitoffset = 0;
496
518
  }
497
519
  }
498
520
  }
499
521
  exports.NOT = NOT;
500
- function LSHIFT(_this, value, start, end, consume) {
522
+ function LSHIFT(_this, shift_key, start, end, consume) {
523
+ const input = _this.data;
501
524
  if ((end || 0) > _this.size) {
502
525
  if (_this.strict == false) {
503
526
  _this.extendArray((end || 0) - _this.size);
@@ -507,15 +530,40 @@ function LSHIFT(_this, value, start, end, consume) {
507
530
  throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + (end || 0) + " of " + _this.size);
508
531
  }
509
532
  }
510
- for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
511
- _this.data[i] = _this.data[i] << value;
512
- if (consume) {
513
- _this.offset = i;
533
+ if (typeof shift_key == "number") {
534
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
535
+ input[i] = input[i] << shift_key;
536
+ if (consume) {
537
+ _this.offset = i;
538
+ _this.bitoffset = 0;
539
+ }
540
+ }
541
+ }
542
+ else {
543
+ if (_this.isBufferOrUint8Array(shift_key)) {
544
+ let number = -1;
545
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
546
+ if (number != shift_key.length - 1) {
547
+ number = number + 1;
548
+ }
549
+ else {
550
+ number = 0;
551
+ }
552
+ input[i] = input[i] << shift_key[number];
553
+ if (consume) {
554
+ _this.offset = i;
555
+ _this.bitoffset = 0;
556
+ }
557
+ }
558
+ }
559
+ else {
560
+ throw new Error("XOR key must be a byte value, string, Uint8Array or Buffer");
514
561
  }
515
562
  }
516
563
  }
517
564
  exports.LSHIFT = LSHIFT;
518
- function RSHIFT(_this, value, start, end, consume) {
565
+ function RSHIFT(_this, shift_key, start, end, consume) {
566
+ const input = _this.data;
519
567
  if ((end || 0) > _this.size) {
520
568
  if (_this.strict == false) {
521
569
  _this.extendArray((end || 0) - _this.size);
@@ -525,15 +573,40 @@ function RSHIFT(_this, value, start, end, consume) {
525
573
  throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + (end || 0) + " of " + _this.size);
526
574
  }
527
575
  }
528
- for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
529
- _this.data[i] = _this.data[i] >> value;
530
- if (consume) {
531
- _this.offset = i;
576
+ if (typeof shift_key == "number") {
577
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
578
+ input[i] = input[i] >> shift_key;
579
+ if (consume) {
580
+ _this.offset = i;
581
+ _this.bitoffset = 0;
582
+ }
583
+ }
584
+ }
585
+ else {
586
+ if (_this.isBufferOrUint8Array(shift_key)) {
587
+ let number = -1;
588
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
589
+ if (number != shift_key.length - 1) {
590
+ number = number + 1;
591
+ }
592
+ else {
593
+ number = 0;
594
+ }
595
+ input[i] = input[i] >> shift_key[number];
596
+ if (consume) {
597
+ _this.offset = i;
598
+ _this.bitoffset = 0;
599
+ }
600
+ }
601
+ }
602
+ else {
603
+ throw new Error("XOR key must be a byte value, string, Uint8Array or Buffer");
532
604
  }
533
605
  }
534
606
  }
535
607
  exports.RSHIFT = RSHIFT;
536
- function ADD(_this, value, start, end, consume) {
608
+ function ADD(_this, add_key, start, end, consume) {
609
+ const input = _this.data;
537
610
  if ((end || 0) > _this.size) {
538
611
  if (_this.strict == false) {
539
612
  _this.extendArray((end || 0) - _this.size);
@@ -543,10 +616,34 @@ function ADD(_this, value, start, end, consume) {
543
616
  throw new Error("\x1b[33m[Strict mode]\x1b[0m: End offset outside of data: endOffset" + (end || 0) + " of " + _this.size);
544
617
  }
545
618
  }
546
- for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
547
- _this.data[i] += value;
548
- if (consume) {
549
- _this.offset = i;
619
+ if (typeof add_key == "number") {
620
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
621
+ input[i] = input[i] + add_key;
622
+ if (consume) {
623
+ _this.offset = i;
624
+ _this.bitoffset = 0;
625
+ }
626
+ }
627
+ }
628
+ else {
629
+ if (_this.isBufferOrUint8Array(add_key)) {
630
+ let number = -1;
631
+ for (let i = (start || 0); i < Math.min(end || _this.size, _this.size); i++) {
632
+ if (number != add_key.length - 1) {
633
+ number = number + 1;
634
+ }
635
+ else {
636
+ number = 0;
637
+ }
638
+ input[i] = input[i] + add_key[number];
639
+ if (consume) {
640
+ _this.offset = i;
641
+ _this.bitoffset = 0;
642
+ }
643
+ }
644
+ }
645
+ else {
646
+ throw new Error("XOR key must be a byte value, string, Uint8Array or Buffer");
550
647
  }
551
648
  }
552
649
  }
@@ -675,12 +772,14 @@ function wbyte(_this, value, unsigned) {
675
772
  }
676
773
  _this.data[_this.offset] = (unsigned == undefined || unsigned == false) ? value : value & 0xFF;
677
774
  _this.offset += 1;
775
+ _this.bitoffset = 0;
678
776
  }
679
777
  exports.wbyte = wbyte;
680
778
  function rbyte(_this, unsigned) {
681
779
  _this.check_size(1);
682
780
  var read = _this.data[_this.offset];
683
781
  _this.offset += 1;
782
+ _this.bitoffset = 0;
684
783
  if (unsigned == true) {
685
784
  return read & 0xFF;
686
785
  }
@@ -714,6 +813,7 @@ function wint16(_this, value, unsigned, endian) {
714
813
  _this.data[_this.offset + 1] = (unsigned == undefined || unsigned == false) ? value : value & 0xff;
715
814
  }
716
815
  _this.offset += 2;
816
+ _this.bitoffset = 0;
717
817
  }
718
818
  exports.wint16 = wint16;
719
819
  function rint16(_this, unsigned, endian) {
@@ -726,6 +826,7 @@ function rint16(_this, unsigned, endian) {
726
826
  read = (_this.data[_this.offset] << 8) | _this.data[_this.offset + 1];
727
827
  }
728
828
  _this.offset += 2;
829
+ _this.bitoffset = 0;
729
830
  if (unsigned == undefined || unsigned == false) {
730
831
  return read & 0x8000 ? -(0x10000 - read) : read;
731
832
  }
@@ -762,6 +863,8 @@ function rhalffloat(_this, endian) {
762
863
  // Normalized number
763
864
  floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, exponent - 15) * (1 + fraction / 0x0400);
764
865
  }
866
+ _this.offset += 2;
867
+ _this.bitoffset = 0;
765
868
  return floatValue;
766
869
  }
767
870
  exports.rhalffloat = rhalffloat;
@@ -806,6 +909,7 @@ function whalffloat(_this, value, endian) {
806
909
  _this.data[_this.offset + 1] = halfFloatBits & 0xFF;
807
910
  }
808
911
  _this.offset += 2;
912
+ _this.bitoffset = 0;
809
913
  }
810
914
  exports.whalffloat = whalffloat;
811
915
  function wint32(_this, value, unsigned, endian) {
@@ -837,6 +941,7 @@ function wint32(_this, value, unsigned, endian) {
837
941
  _this.data[_this.offset + 3] = (unsigned == undefined || unsigned == false) ? value : value & 0xFF;
838
942
  }
839
943
  _this.offset += 4;
944
+ _this.bitoffset = 0;
840
945
  }
841
946
  exports.wint32 = wint32;
842
947
  function rint32(_this, unsigned, endian) {
@@ -849,6 +954,7 @@ function rint32(_this, unsigned, endian) {
849
954
  read = (_this.data[_this.offset] << 24) | (_this.data[_this.offset + 1] << 16) | (_this.data[_this.offset + 2] << 8) | _this.data[_this.offset + 3];
850
955
  }
851
956
  _this.offset += 4;
957
+ _this.bitoffset = 0;
852
958
  if (unsigned == undefined || unsigned == false) {
853
959
  return read;
854
960
  }
@@ -879,6 +985,8 @@ function rfloat(_this, endian) {
879
985
  // Normalized number
880
986
  floatValue = Math.pow(-1, isNegative) * Math.pow(2, exponent - 127) * (1 + fraction / Math.pow(2, 23));
881
987
  }
988
+ _this.offset += 4;
989
+ _this.bitoffset = 0;
882
990
  return floatValue;
883
991
  }
884
992
  exports.rfloat = rfloat;
@@ -902,6 +1010,7 @@ function wfloat(_this, value, endian) {
902
1010
  shift += 8;
903
1011
  }
904
1012
  _this.offset += 4;
1013
+ _this.bitoffset = 0;
905
1014
  }
906
1015
  exports.wfloat = wfloat;
907
1016
  function rint64(_this, unsigned, endian) {
@@ -917,10 +1026,6 @@ function rint64(_this, unsigned, endian) {
917
1026
  if (value & (BigInt(1) << BigInt(63))) {
918
1027
  value -= BigInt(1) << BigInt(64);
919
1028
  }
920
- return value;
921
- }
922
- else {
923
- return value;
924
1029
  }
925
1030
  }
926
1031
  else {
@@ -932,12 +1037,11 @@ function rint64(_this, unsigned, endian) {
932
1037
  if (value & (BigInt(1) << BigInt(63))) {
933
1038
  value -= BigInt(1) << BigInt(64);
934
1039
  }
935
- return value;
936
- }
937
- else {
938
- return value;
939
1040
  }
940
1041
  }
1042
+ _this.offset += 8;
1043
+ _this.bitoffset = 0;
1044
+ return value;
941
1045
  }
942
1046
  exports.rint64 = rint64;
943
1047
  function wint64(_this, value, unsigned, endian) {
@@ -992,6 +1096,7 @@ function wint64(_this, value, unsigned, endian) {
992
1096
  }
993
1097
  }
994
1098
  _this.offset += 8;
1099
+ _this.bitoffset = 0;
995
1100
  }
996
1101
  exports.wint64 = wint64;
997
1102
  function wdfloat(_this, value, endian) {
@@ -1015,6 +1120,7 @@ function wdfloat(_this, value, endian) {
1015
1120
  }
1016
1121
  }
1017
1122
  _this.offset += 8;
1123
+ _this.bitoffset = 0;
1018
1124
  }
1019
1125
  exports.wdfloat = wdfloat;
1020
1126
  function rdfloat(_this, endian) {
@@ -1045,6 +1151,8 @@ function rdfloat(_this, endian) {
1045
1151
  // Normalized number
1046
1152
  floatValue = (sign == 0n ? 1 : -1) * Math.pow(2, exponent) * (1 + fraction);
1047
1153
  }
1154
+ _this.offset += 8;
1155
+ _this.bitoffset = 0;
1048
1156
  return floatValue;
1049
1157
  }
1050
1158
  exports.rdfloat = rdfloat;
@@ -1225,6 +1333,7 @@ function wstring(_this, string, options) {
1225
1333
  }
1226
1334
  }
1227
1335
  _this.offset += totalLength;
1336
+ _this.bitoffset = 0;
1228
1337
  }
1229
1338
  else if (stringType == 'pascal' || stringType == 'wide-pascal') {
1230
1339
  if (encoding == undefined) {
@@ -1290,6 +1399,7 @@ function wstring(_this, string, options) {
1290
1399
  }
1291
1400
  }
1292
1401
  _this.offset += totalLength;
1402
+ _this.bitoffset = 0;
1293
1403
  }
1294
1404
  else {
1295
1405
  throw new Error('Unsupported string type: ' + stringType);