@push.rocks/smartarchive 4.2.4 → 5.0.1
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_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/bzip2/bititerator.d.ts +6 -1
- package/dist_ts/bzip2/bititerator.js +30 -24
- package/dist_ts/bzip2/bzip2.d.ts +27 -12
- package/dist_ts/bzip2/bzip2.js +325 -263
- package/dist_ts/bzip2/index.d.ts +4 -1
- package/dist_ts/bzip2/index.js +36 -38
- package/dist_ts/classes.archiveanalyzer.d.ts +25 -5
- package/dist_ts/classes.archiveanalyzer.js +19 -8
- package/dist_ts/classes.bzip2tools.d.ts +1 -1
- package/dist_ts/classes.gziptools.d.ts +43 -6
- package/dist_ts/classes.gziptools.js +76 -24
- package/dist_ts/classes.smartarchive.d.ts +198 -16
- package/dist_ts/classes.smartarchive.js +652 -79
- package/dist_ts/classes.tartools.d.ts +31 -4
- package/dist_ts/classes.tartools.js +93 -32
- package/dist_ts/classes.ziptools.d.ts +47 -12
- package/dist_ts/classes.ziptools.js +128 -23
- package/dist_ts/errors.d.ts +44 -0
- package/dist_ts/errors.js +62 -0
- package/dist_ts/index.d.ts +4 -0
- package/dist_ts/index.js +9 -1
- package/dist_ts/interfaces.d.ts +119 -0
- package/dist_ts/interfaces.js +2 -0
- package/package.json +1 -1
- package/readme.hints.md +69 -23
- package/readme.md +360 -274
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/bzip2/bititerator.ts +43 -27
- package/ts/bzip2/bzip2.ts +289 -171
- package/ts/bzip2/index.ts +52 -50
- package/ts/classes.archiveanalyzer.ts +42 -28
- package/ts/classes.gziptools.ts +91 -33
- package/ts/classes.smartarchive.ts +765 -140
- package/ts/classes.tartools.ts +124 -52
- package/ts/classes.ziptools.ts +147 -34
- package/ts/errors.ts +70 -0
- package/ts/index.ts +11 -0
- package/ts/interfaces.ts +136 -0
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/bzip2/bititerator.ts
CHANGED
|
@@ -1,44 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import type { IBitReader } from '../interfaces.js';
|
|
2
|
+
|
|
3
|
+
const BITMASK = [0, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff] as const;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates a bit reader function for BZIP2 decompression.
|
|
7
|
+
* Takes a buffer iterator as input and returns a function that reads bits.
|
|
8
|
+
*/
|
|
9
|
+
export function bitIterator(nextBuffer: () => Buffer): IBitReader {
|
|
10
|
+
let bit = 0;
|
|
11
|
+
let byte = 0;
|
|
12
|
+
let bytes = nextBuffer();
|
|
13
|
+
let _bytesRead = 0;
|
|
14
|
+
|
|
15
|
+
const reader = function (n: number | null): number | void {
|
|
16
|
+
if (n === null && bit !== 0) {
|
|
11
17
|
// align to byte boundary
|
|
12
18
|
bit = 0;
|
|
13
19
|
byte++;
|
|
14
20
|
return;
|
|
15
21
|
}
|
|
16
|
-
|
|
17
|
-
|
|
22
|
+
|
|
23
|
+
let result = 0;
|
|
24
|
+
let remaining = n as number;
|
|
25
|
+
|
|
26
|
+
while (remaining > 0) {
|
|
18
27
|
if (byte >= bytes.length) {
|
|
19
28
|
byte = 0;
|
|
20
29
|
bytes = nextBuffer();
|
|
21
30
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
31
|
+
|
|
32
|
+
const left = 8 - bit;
|
|
33
|
+
|
|
34
|
+
if (bit === 0 && remaining > 0) {
|
|
35
|
+
_bytesRead++;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (remaining >= left) {
|
|
27
39
|
result <<= left;
|
|
28
40
|
result |= BITMASK[left] & bytes[byte++];
|
|
29
41
|
bit = 0;
|
|
30
|
-
|
|
42
|
+
remaining -= left;
|
|
31
43
|
} else {
|
|
32
|
-
result <<=
|
|
33
|
-
result |=
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
n = 0;
|
|
44
|
+
result <<= remaining;
|
|
45
|
+
result |= (bytes[byte] & (BITMASK[remaining] << (8 - remaining - bit))) >> (8 - remaining - bit);
|
|
46
|
+
bit += remaining;
|
|
47
|
+
remaining = 0;
|
|
37
48
|
}
|
|
38
49
|
}
|
|
50
|
+
|
|
39
51
|
return result;
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
52
|
+
} as IBitReader;
|
|
53
|
+
|
|
54
|
+
Object.defineProperty(reader, 'bytesRead', {
|
|
55
|
+
get: () => _bytesRead,
|
|
56
|
+
enumerable: true,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return reader;
|
|
44
60
|
}
|