xz-compat 0.1.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/LICENSE +42 -0
- package/README.md +248 -0
- package/dist/cjs/compat.d.cts +1 -0
- package/dist/cjs/compat.d.ts +1 -0
- package/dist/cjs/compat.js +23 -0
- package/dist/cjs/compat.js.map +1 -0
- package/dist/cjs/filters/bcj/Bcj.d.cts +16 -0
- package/dist/cjs/filters/bcj/Bcj.d.ts +16 -0
- package/dist/cjs/filters/bcj/Bcj.js +192 -0
- package/dist/cjs/filters/bcj/Bcj.js.map +1 -0
- package/dist/cjs/filters/bcj/BcjArm.d.cts +16 -0
- package/dist/cjs/filters/bcj/BcjArm.d.ts +16 -0
- package/dist/cjs/filters/bcj/BcjArm.js +122 -0
- package/dist/cjs/filters/bcj/BcjArm.js.map +1 -0
- package/dist/cjs/filters/bcj/BcjArm64.d.cts +21 -0
- package/dist/cjs/filters/bcj/BcjArm64.d.ts +21 -0
- package/dist/cjs/filters/bcj/BcjArm64.js +65 -0
- package/dist/cjs/filters/bcj/BcjArm64.js.map +1 -0
- package/dist/cjs/filters/bcj/BcjArmt.d.cts +19 -0
- package/dist/cjs/filters/bcj/BcjArmt.d.ts +19 -0
- package/dist/cjs/filters/bcj/BcjArmt.js +76 -0
- package/dist/cjs/filters/bcj/BcjArmt.js.map +1 -0
- package/dist/cjs/filters/bcj/BcjIa64.d.cts +15 -0
- package/dist/cjs/filters/bcj/BcjIa64.d.ts +15 -0
- package/dist/cjs/filters/bcj/BcjIa64.js +141 -0
- package/dist/cjs/filters/bcj/BcjIa64.js.map +1 -0
- package/dist/cjs/filters/bcj/BcjPpc.d.cts +20 -0
- package/dist/cjs/filters/bcj/BcjPpc.d.ts +20 -0
- package/dist/cjs/filters/bcj/BcjPpc.js +64 -0
- package/dist/cjs/filters/bcj/BcjPpc.js.map +1 -0
- package/dist/cjs/filters/bcj/BcjSparc.d.cts +19 -0
- package/dist/cjs/filters/bcj/BcjSparc.d.ts +19 -0
- package/dist/cjs/filters/bcj/BcjSparc.js +69 -0
- package/dist/cjs/filters/bcj/BcjSparc.js.map +1 -0
- package/dist/cjs/filters/delta/Delta.d.cts +16 -0
- package/dist/cjs/filters/delta/Delta.d.ts +16 -0
- package/dist/cjs/filters/delta/Delta.js +74 -0
- package/dist/cjs/filters/delta/Delta.js.map +1 -0
- package/dist/cjs/filters/index.d.cts +8 -0
- package/dist/cjs/filters/index.d.ts +8 -0
- package/dist/cjs/filters/index.js +27 -0
- package/dist/cjs/filters/index.js.map +1 -0
- package/dist/cjs/index.d.cts +4 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +58 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lzma/Lzma2ChunkParser.d.cts +73 -0
- package/dist/cjs/lzma/Lzma2ChunkParser.d.ts +73 -0
- package/dist/cjs/lzma/Lzma2ChunkParser.js +148 -0
- package/dist/cjs/lzma/Lzma2ChunkParser.js.map +1 -0
- package/dist/cjs/lzma/index.d.cts +31 -0
- package/dist/cjs/lzma/index.d.ts +31 -0
- package/dist/cjs/lzma/index.js +83 -0
- package/dist/cjs/lzma/index.js.map +1 -0
- package/dist/cjs/lzma/stream/transforms.d.cts +46 -0
- package/dist/cjs/lzma/stream/transforms.d.ts +46 -0
- package/dist/cjs/lzma/stream/transforms.js +193 -0
- package/dist/cjs/lzma/stream/transforms.js.map +1 -0
- package/dist/cjs/lzma/sync/Lzma2Decoder.d.cts +63 -0
- package/dist/cjs/lzma/sync/Lzma2Decoder.d.ts +63 -0
- package/dist/cjs/lzma/sync/Lzma2Decoder.js +231 -0
- package/dist/cjs/lzma/sync/Lzma2Decoder.js.map +1 -0
- package/dist/cjs/lzma/sync/LzmaDecoder.d.cts +97 -0
- package/dist/cjs/lzma/sync/LzmaDecoder.d.ts +97 -0
- package/dist/cjs/lzma/sync/LzmaDecoder.js +582 -0
- package/dist/cjs/lzma/sync/LzmaDecoder.js.map +1 -0
- package/dist/cjs/lzma/sync/RangeDecoder.d.cts +69 -0
- package/dist/cjs/lzma/sync/RangeDecoder.d.ts +69 -0
- package/dist/cjs/lzma/sync/RangeDecoder.js +162 -0
- package/dist/cjs/lzma/sync/RangeDecoder.js.map +1 -0
- package/dist/cjs/lzma/types.d.cts +117 -0
- package/dist/cjs/lzma/types.d.ts +117 -0
- package/dist/cjs/lzma/types.js +264 -0
- package/dist/cjs/lzma/types.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/utils/createBufferingDecoder.d.cts +10 -0
- package/dist/cjs/utils/createBufferingDecoder.d.ts +10 -0
- package/dist/cjs/utils/createBufferingDecoder.js +41 -0
- package/dist/cjs/utils/createBufferingDecoder.js.map +1 -0
- package/dist/cjs/xz/Decoder.d.cts +21 -0
- package/dist/cjs/xz/Decoder.d.ts +21 -0
- package/dist/cjs/xz/Decoder.js +325 -0
- package/dist/cjs/xz/Decoder.js.map +1 -0
- package/dist/esm/compat.d.ts +1 -0
- package/dist/esm/compat.js +7 -0
- package/dist/esm/compat.js.map +1 -0
- package/dist/esm/filters/bcj/Bcj.d.ts +16 -0
- package/dist/esm/filters/bcj/Bcj.js +184 -0
- package/dist/esm/filters/bcj/Bcj.js.map +1 -0
- package/dist/esm/filters/bcj/BcjArm.d.ts +16 -0
- package/dist/esm/filters/bcj/BcjArm.js +114 -0
- package/dist/esm/filters/bcj/BcjArm.js.map +1 -0
- package/dist/esm/filters/bcj/BcjArm64.d.ts +21 -0
- package/dist/esm/filters/bcj/BcjArm64.js +57 -0
- package/dist/esm/filters/bcj/BcjArm64.js.map +1 -0
- package/dist/esm/filters/bcj/BcjArmt.d.ts +19 -0
- package/dist/esm/filters/bcj/BcjArmt.js +66 -0
- package/dist/esm/filters/bcj/BcjArmt.js.map +1 -0
- package/dist/esm/filters/bcj/BcjIa64.d.ts +15 -0
- package/dist/esm/filters/bcj/BcjIa64.js +127 -0
- package/dist/esm/filters/bcj/BcjIa64.js.map +1 -0
- package/dist/esm/filters/bcj/BcjPpc.d.ts +20 -0
- package/dist/esm/filters/bcj/BcjPpc.js +55 -0
- package/dist/esm/filters/bcj/BcjPpc.js.map +1 -0
- package/dist/esm/filters/bcj/BcjSparc.d.ts +19 -0
- package/dist/esm/filters/bcj/BcjSparc.js +59 -0
- package/dist/esm/filters/bcj/BcjSparc.js.map +1 -0
- package/dist/esm/filters/delta/Delta.d.ts +16 -0
- package/dist/esm/filters/delta/Delta.js +66 -0
- package/dist/esm/filters/delta/Delta.js.map +1 -0
- package/dist/esm/filters/index.d.ts +8 -0
- package/dist/esm/filters/index.js +9 -0
- package/dist/esm/filters/index.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lzma/Lzma2ChunkParser.d.ts +73 -0
- package/dist/esm/lzma/Lzma2ChunkParser.js +137 -0
- package/dist/esm/lzma/Lzma2ChunkParser.js.map +1 -0
- package/dist/esm/lzma/index.d.ts +31 -0
- package/dist/esm/lzma/index.js +44 -0
- package/dist/esm/lzma/index.js.map +1 -0
- package/dist/esm/lzma/stream/transforms.d.ts +46 -0
- package/dist/esm/lzma/stream/transforms.js +190 -0
- package/dist/esm/lzma/stream/transforms.js.map +1 -0
- package/dist/esm/lzma/sync/Lzma2Decoder.d.ts +63 -0
- package/dist/esm/lzma/sync/Lzma2Decoder.js +211 -0
- package/dist/esm/lzma/sync/Lzma2Decoder.js.map +1 -0
- package/dist/esm/lzma/sync/LzmaDecoder.d.ts +97 -0
- package/dist/esm/lzma/sync/LzmaDecoder.js +545 -0
- package/dist/esm/lzma/sync/LzmaDecoder.js.map +1 -0
- package/dist/esm/lzma/sync/RangeDecoder.d.ts +69 -0
- package/dist/esm/lzma/sync/RangeDecoder.js +132 -0
- package/dist/esm/lzma/sync/RangeDecoder.js.map +1 -0
- package/dist/esm/lzma/types.d.ts +117 -0
- package/dist/esm/lzma/types.js +154 -0
- package/dist/esm/lzma/types.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/utils/createBufferingDecoder.d.ts +10 -0
- package/dist/esm/utils/createBufferingDecoder.js +30 -0
- package/dist/esm/utils/createBufferingDecoder.js.map +1 -0
- package/dist/esm/xz/Decoder.d.ts +21 -0
- package/dist/esm/xz/Decoder.js +313 -0
- package/dist/esm/xz/Decoder.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous Range Decoder for LZMA
|
|
3
|
+
*
|
|
4
|
+
* Decodes arithmetic-coded bits from a buffer.
|
|
5
|
+
* All operations are synchronous - for streaming use the async version.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Range decoder for synchronous buffer-based LZMA decoding
|
|
9
|
+
*/
|
|
10
|
+
export declare class RangeDecoder {
|
|
11
|
+
private input;
|
|
12
|
+
private pos;
|
|
13
|
+
private code;
|
|
14
|
+
private range;
|
|
15
|
+
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Set input buffer and initialize decoder state
|
|
18
|
+
*/
|
|
19
|
+
setInput(input: Buffer, offset?: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize range decoder (reads first 5 bytes)
|
|
22
|
+
*/
|
|
23
|
+
private init;
|
|
24
|
+
/**
|
|
25
|
+
* Get current position in input buffer
|
|
26
|
+
*/
|
|
27
|
+
getPosition(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Normalize range if needed (read more bytes)
|
|
30
|
+
*/
|
|
31
|
+
private normalize;
|
|
32
|
+
/**
|
|
33
|
+
* Decode a single bit using probability model
|
|
34
|
+
* @param probs - Probability array
|
|
35
|
+
* @param index - Index into probability array
|
|
36
|
+
* @returns Decoded bit (0 or 1)
|
|
37
|
+
*/
|
|
38
|
+
decodeBit(probs: Uint16Array, index: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Decode direct bits (not probability-based)
|
|
41
|
+
* @param numTotalBits - Number of bits to decode
|
|
42
|
+
* @returns Decoded value
|
|
43
|
+
*/
|
|
44
|
+
decodeDirectBits(numTotalBits: number): number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Bit tree decoder for multi-bit symbols
|
|
48
|
+
*/
|
|
49
|
+
export declare class BitTreeDecoder {
|
|
50
|
+
private numBitLevels;
|
|
51
|
+
private models;
|
|
52
|
+
constructor(numBitLevels: number);
|
|
53
|
+
/**
|
|
54
|
+
* Initialize probability models
|
|
55
|
+
*/
|
|
56
|
+
init(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Decode a symbol (forward bit order)
|
|
59
|
+
*/
|
|
60
|
+
decode(rangeDecoder: RangeDecoder): number;
|
|
61
|
+
/**
|
|
62
|
+
* Decode a symbol (reverse bit order)
|
|
63
|
+
*/
|
|
64
|
+
reverseDecode(rangeDecoder: RangeDecoder): number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Static reverse decode from external probability array
|
|
68
|
+
*/
|
|
69
|
+
export declare function reverseDecodeFromArray(models: Uint16Array, startIndex: number, rangeDecoder: RangeDecoder, numBitLevels: number): number;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous Range Decoder for LZMA
|
|
3
|
+
*
|
|
4
|
+
* Decodes arithmetic-coded bits from a buffer.
|
|
5
|
+
* All operations are synchronous - for streaming use the async version.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Range decoder for synchronous buffer-based LZMA decoding
|
|
9
|
+
*/
|
|
10
|
+
export declare class RangeDecoder {
|
|
11
|
+
private input;
|
|
12
|
+
private pos;
|
|
13
|
+
private code;
|
|
14
|
+
private range;
|
|
15
|
+
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Set input buffer and initialize decoder state
|
|
18
|
+
*/
|
|
19
|
+
setInput(input: Buffer, offset?: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Initialize range decoder (reads first 5 bytes)
|
|
22
|
+
*/
|
|
23
|
+
private init;
|
|
24
|
+
/**
|
|
25
|
+
* Get current position in input buffer
|
|
26
|
+
*/
|
|
27
|
+
getPosition(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Normalize range if needed (read more bytes)
|
|
30
|
+
*/
|
|
31
|
+
private normalize;
|
|
32
|
+
/**
|
|
33
|
+
* Decode a single bit using probability model
|
|
34
|
+
* @param probs - Probability array
|
|
35
|
+
* @param index - Index into probability array
|
|
36
|
+
* @returns Decoded bit (0 or 1)
|
|
37
|
+
*/
|
|
38
|
+
decodeBit(probs: Uint16Array, index: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Decode direct bits (not probability-based)
|
|
41
|
+
* @param numTotalBits - Number of bits to decode
|
|
42
|
+
* @returns Decoded value
|
|
43
|
+
*/
|
|
44
|
+
decodeDirectBits(numTotalBits: number): number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Bit tree decoder for multi-bit symbols
|
|
48
|
+
*/
|
|
49
|
+
export declare class BitTreeDecoder {
|
|
50
|
+
private numBitLevels;
|
|
51
|
+
private models;
|
|
52
|
+
constructor(numBitLevels: number);
|
|
53
|
+
/**
|
|
54
|
+
* Initialize probability models
|
|
55
|
+
*/
|
|
56
|
+
init(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Decode a symbol (forward bit order)
|
|
59
|
+
*/
|
|
60
|
+
decode(rangeDecoder: RangeDecoder): number;
|
|
61
|
+
/**
|
|
62
|
+
* Decode a symbol (reverse bit order)
|
|
63
|
+
*/
|
|
64
|
+
reverseDecode(rangeDecoder: RangeDecoder): number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Static reverse decode from external probability array
|
|
68
|
+
*/
|
|
69
|
+
export declare function reverseDecodeFromArray(models: Uint16Array, startIndex: number, rangeDecoder: RangeDecoder, numBitLevels: number): number;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous Range Decoder for LZMA
|
|
3
|
+
*
|
|
4
|
+
* Decodes arithmetic-coded bits from a buffer.
|
|
5
|
+
* All operations are synchronous - for streaming use the async version.
|
|
6
|
+
*/ "use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
function _export(target, all) {
|
|
11
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
_export(exports, {
|
|
17
|
+
get BitTreeDecoder () {
|
|
18
|
+
return BitTreeDecoder;
|
|
19
|
+
},
|
|
20
|
+
get RangeDecoder () {
|
|
21
|
+
return RangeDecoder;
|
|
22
|
+
},
|
|
23
|
+
get reverseDecodeFromArray () {
|
|
24
|
+
return reverseDecodeFromArray;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
var _extractbaseiterator = require("extract-base-iterator");
|
|
28
|
+
function _class_call_check(instance, Constructor) {
|
|
29
|
+
if (!(instance instanceof Constructor)) {
|
|
30
|
+
throw new TypeError("Cannot call a class as a function");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
var RangeDecoder = /*#__PURE__*/ function() {
|
|
34
|
+
"use strict";
|
|
35
|
+
function RangeDecoder() {
|
|
36
|
+
_class_call_check(this, RangeDecoder);
|
|
37
|
+
this.input = (0, _extractbaseiterator.allocBuffer)(0); // Replaced by setInput() before use
|
|
38
|
+
this.pos = 0;
|
|
39
|
+
this.code = 0;
|
|
40
|
+
this.range = 0;
|
|
41
|
+
}
|
|
42
|
+
var _proto = RangeDecoder.prototype;
|
|
43
|
+
/**
|
|
44
|
+
* Set input buffer and initialize decoder state
|
|
45
|
+
*/ _proto.setInput = function setInput(input) {
|
|
46
|
+
var offset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
|
|
47
|
+
this.input = input;
|
|
48
|
+
this.pos = offset;
|
|
49
|
+
this.init();
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Initialize range decoder (reads first 5 bytes)
|
|
53
|
+
*/ _proto.init = function init() {
|
|
54
|
+
this.code = 0;
|
|
55
|
+
this.range = -1; // 0xFFFFFFFF as signed int
|
|
56
|
+
// First byte is ignored (should be 0)
|
|
57
|
+
this.pos++;
|
|
58
|
+
// Read 4 bytes into code
|
|
59
|
+
for(var i = 0; i < 4; i++){
|
|
60
|
+
this.code = this.code << 8 | this.input[this.pos++];
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Get current position in input buffer
|
|
65
|
+
*/ _proto.getPosition = function getPosition() {
|
|
66
|
+
return this.pos;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Normalize range if needed (read more bytes)
|
|
70
|
+
*/ _proto.normalize = function normalize() {
|
|
71
|
+
if ((this.range & 0xff000000) === 0) {
|
|
72
|
+
this.code = this.code << 8 | this.input[this.pos++];
|
|
73
|
+
this.range <<= 8;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Decode a single bit using probability model
|
|
78
|
+
* @param probs - Probability array
|
|
79
|
+
* @param index - Index into probability array
|
|
80
|
+
* @returns Decoded bit (0 or 1)
|
|
81
|
+
*/ _proto.decodeBit = function decodeBit(probs, index) {
|
|
82
|
+
var prob = probs[index];
|
|
83
|
+
var newBound = (this.range >>> 11) * prob;
|
|
84
|
+
if ((this.code ^ 0x80000000) < (newBound ^ 0x80000000)) {
|
|
85
|
+
this.range = newBound;
|
|
86
|
+
probs[index] += 2048 - prob >>> 5;
|
|
87
|
+
this.normalize();
|
|
88
|
+
return 0;
|
|
89
|
+
}
|
|
90
|
+
this.range -= newBound;
|
|
91
|
+
this.code -= newBound;
|
|
92
|
+
probs[index] -= prob >>> 5;
|
|
93
|
+
this.normalize();
|
|
94
|
+
return 1;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Decode direct bits (not probability-based)
|
|
98
|
+
* @param numTotalBits - Number of bits to decode
|
|
99
|
+
* @returns Decoded value
|
|
100
|
+
*/ _proto.decodeDirectBits = function decodeDirectBits(numTotalBits) {
|
|
101
|
+
var result = 0;
|
|
102
|
+
for(var i = numTotalBits; i > 0; i--){
|
|
103
|
+
this.range >>>= 1;
|
|
104
|
+
var t = this.code - this.range >>> 31;
|
|
105
|
+
this.code -= this.range & t - 1;
|
|
106
|
+
result = result << 1 | 1 - t;
|
|
107
|
+
this.normalize();
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
};
|
|
111
|
+
return RangeDecoder;
|
|
112
|
+
}();
|
|
113
|
+
var BitTreeDecoder = /*#__PURE__*/ function() {
|
|
114
|
+
"use strict";
|
|
115
|
+
function BitTreeDecoder(numBitLevels) {
|
|
116
|
+
_class_call_check(this, BitTreeDecoder);
|
|
117
|
+
this.numBitLevels = numBitLevels;
|
|
118
|
+
this.models = new Uint16Array(1 << numBitLevels);
|
|
119
|
+
this.init();
|
|
120
|
+
}
|
|
121
|
+
var _proto = BitTreeDecoder.prototype;
|
|
122
|
+
/**
|
|
123
|
+
* Initialize probability models
|
|
124
|
+
*/ _proto.init = function init() {
|
|
125
|
+
for(var i = 0; i < this.models.length; i++){
|
|
126
|
+
this.models[i] = 1024; // kProbInitValue
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Decode a symbol (forward bit order)
|
|
131
|
+
*/ _proto.decode = function decode(rangeDecoder) {
|
|
132
|
+
var m = 1;
|
|
133
|
+
for(var i = this.numBitLevels; i > 0; i--){
|
|
134
|
+
m = m << 1 | rangeDecoder.decodeBit(this.models, m);
|
|
135
|
+
}
|
|
136
|
+
return m - (1 << this.numBitLevels);
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Decode a symbol (reverse bit order)
|
|
140
|
+
*/ _proto.reverseDecode = function reverseDecode(rangeDecoder) {
|
|
141
|
+
var m = 1;
|
|
142
|
+
var symbol = 0;
|
|
143
|
+
for(var i = 0; i < this.numBitLevels; i++){
|
|
144
|
+
var bit = rangeDecoder.decodeBit(this.models, m);
|
|
145
|
+
m = m << 1 | bit;
|
|
146
|
+
symbol |= bit << i;
|
|
147
|
+
}
|
|
148
|
+
return symbol;
|
|
149
|
+
};
|
|
150
|
+
return BitTreeDecoder;
|
|
151
|
+
}();
|
|
152
|
+
function reverseDecodeFromArray(models, startIndex, rangeDecoder, numBitLevels) {
|
|
153
|
+
var m = 1;
|
|
154
|
+
var symbol = 0;
|
|
155
|
+
for(var i = 0; i < numBitLevels; i++){
|
|
156
|
+
var bit = rangeDecoder.decodeBit(models, startIndex + m);
|
|
157
|
+
m = m << 1 | bit;
|
|
158
|
+
symbol |= bit << i;
|
|
159
|
+
}
|
|
160
|
+
return symbol;
|
|
161
|
+
}
|
|
162
|
+
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/xz-compat/src/lzma/sync/RangeDecoder.ts"],"sourcesContent":["/**\n * Synchronous Range Decoder for LZMA\n *\n * Decodes arithmetic-coded bits from a buffer.\n * All operations are synchronous - for streaming use the async version.\n */\n\nimport { allocBuffer } from 'extract-base-iterator';\n\n/**\n * Range decoder for synchronous buffer-based LZMA decoding\n */\nexport class RangeDecoder {\n private input: Buffer;\n private pos: number;\n private code: number;\n private range: number;\n\n constructor() {\n this.input = allocBuffer(0); // Replaced by setInput() before use\n this.pos = 0;\n this.code = 0;\n this.range = 0;\n }\n\n /**\n * Set input buffer and initialize decoder state\n */\n setInput(input: Buffer, offset = 0): void {\n this.input = input;\n this.pos = offset;\n this.init();\n }\n\n /**\n * Initialize range decoder (reads first 5 bytes)\n */\n private init(): void {\n this.code = 0;\n this.range = -1; // 0xFFFFFFFF as signed int\n\n // First byte is ignored (should be 0)\n this.pos++;\n\n // Read 4 bytes into code\n for (let i = 0; i < 4; i++) {\n this.code = (this.code << 8) | this.input[this.pos++];\n }\n }\n\n /**\n * Get current position in input buffer\n */\n getPosition(): number {\n return this.pos;\n }\n\n /**\n * Normalize range if needed (read more bytes)\n */\n private normalize(): void {\n if ((this.range & 0xff000000) === 0) {\n this.code = (this.code << 8) | this.input[this.pos++];\n this.range <<= 8;\n }\n }\n\n /**\n * Decode a single bit using probability model\n * @param probs - Probability array\n * @param index - Index into probability array\n * @returns Decoded bit (0 or 1)\n */\n decodeBit(probs: Uint16Array, index: number): number {\n const prob = probs[index];\n const newBound = (this.range >>> 11) * prob;\n\n if ((this.code ^ 0x80000000) < (newBound ^ 0x80000000)) {\n this.range = newBound;\n probs[index] += (2048 - prob) >>> 5;\n this.normalize();\n return 0;\n }\n this.range -= newBound;\n this.code -= newBound;\n probs[index] -= prob >>> 5;\n this.normalize();\n return 1;\n }\n\n /**\n * Decode direct bits (not probability-based)\n * @param numTotalBits - Number of bits to decode\n * @returns Decoded value\n */\n decodeDirectBits(numTotalBits: number): number {\n let result = 0;\n for (let i = numTotalBits; i > 0; i--) {\n this.range >>>= 1;\n const t = (this.code - this.range) >>> 31;\n this.code -= this.range & (t - 1);\n result = (result << 1) | (1 - t);\n this.normalize();\n }\n return result;\n }\n}\n\n/**\n * Bit tree decoder for multi-bit symbols\n */\nexport class BitTreeDecoder {\n private numBitLevels: number;\n private models: Uint16Array;\n\n constructor(numBitLevels: number) {\n this.numBitLevels = numBitLevels;\n this.models = new Uint16Array(1 << numBitLevels);\n this.init();\n }\n\n /**\n * Initialize probability models\n */\n init(): void {\n for (let i = 0; i < this.models.length; i++) {\n this.models[i] = 1024; // kProbInitValue\n }\n }\n\n /**\n * Decode a symbol (forward bit order)\n */\n decode(rangeDecoder: RangeDecoder): number {\n let m = 1;\n for (let i = this.numBitLevels; i > 0; i--) {\n m = (m << 1) | rangeDecoder.decodeBit(this.models, m);\n }\n return m - (1 << this.numBitLevels);\n }\n\n /**\n * Decode a symbol (reverse bit order)\n */\n reverseDecode(rangeDecoder: RangeDecoder): number {\n let m = 1;\n let symbol = 0;\n for (let i = 0; i < this.numBitLevels; i++) {\n const bit = rangeDecoder.decodeBit(this.models, m);\n m = (m << 1) | bit;\n symbol |= bit << i;\n }\n return symbol;\n }\n}\n\n/**\n * Static reverse decode from external probability array\n */\nexport function reverseDecodeFromArray(models: Uint16Array, startIndex: number, rangeDecoder: RangeDecoder, numBitLevels: number): number {\n let m = 1;\n let symbol = 0;\n for (let i = 0; i < numBitLevels; i++) {\n const bit = rangeDecoder.decodeBit(models, startIndex + m);\n m = (m << 1) | bit;\n symbol |= bit << i;\n }\n return symbol;\n}\n"],"names":["BitTreeDecoder","RangeDecoder","reverseDecodeFromArray","input","allocBuffer","pos","code","range","setInput","offset","init","i","getPosition","normalize","decodeBit","probs","index","prob","newBound","decodeDirectBits","numTotalBits","result","t","numBitLevels","models","Uint16Array","length","decode","rangeDecoder","m","reverseDecode","symbol","bit","startIndex"],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LZMA Types and Constants
|
|
3
|
+
*
|
|
4
|
+
* Shared types, constants, and state transition functions for LZMA decoding.
|
|
5
|
+
* Based on the LZMA SDK specification.
|
|
6
|
+
*/
|
|
7
|
+
export declare const kNumRepDistances = 4;
|
|
8
|
+
export declare const kNumStates = 12;
|
|
9
|
+
export declare const kNumPosSlotBits = 6;
|
|
10
|
+
export declare const kDicLogSizeMin = 0;
|
|
11
|
+
export declare const kNumLenToPosStatesBits = 2;
|
|
12
|
+
export declare const kNumLenToPosStates: number;
|
|
13
|
+
export declare const kMatchMinLen = 2;
|
|
14
|
+
export declare const kNumLowLenBits = 3;
|
|
15
|
+
export declare const kNumMidLenBits = 3;
|
|
16
|
+
export declare const kNumHighLenBits = 8;
|
|
17
|
+
export declare const kNumLowLenSymbols: number;
|
|
18
|
+
export declare const kNumMidLenSymbols: number;
|
|
19
|
+
export declare const kNumLenSymbols: number;
|
|
20
|
+
export declare const kMatchMaxLen: number;
|
|
21
|
+
export declare const kNumAlignBits = 4;
|
|
22
|
+
export declare const kAlignTableSize: number;
|
|
23
|
+
export declare const kAlignMask: number;
|
|
24
|
+
export declare const kStartPosModelIndex = 4;
|
|
25
|
+
export declare const kEndPosModelIndex = 14;
|
|
26
|
+
export declare const kNumPosModels: number;
|
|
27
|
+
export declare const kNumFullDistances: number;
|
|
28
|
+
export declare const kNumLitPosStatesBitsEncodingMax = 4;
|
|
29
|
+
export declare const kNumLitContextBitsMax = 8;
|
|
30
|
+
export declare const kNumPosStatesBitsMax = 4;
|
|
31
|
+
export declare const kNumPosStatesMax: number;
|
|
32
|
+
export declare const kNumPosStatesBitsEncodingMax = 4;
|
|
33
|
+
export declare const kNumPosStatesEncodingMax: number;
|
|
34
|
+
export declare const kNumBitModelTotalBits = 11;
|
|
35
|
+
export declare const kBitModelTotal: number;
|
|
36
|
+
export declare const kNumMoveBits = 5;
|
|
37
|
+
export declare const kProbInitValue: number;
|
|
38
|
+
/**
|
|
39
|
+
* State transition: after literal byte
|
|
40
|
+
*/
|
|
41
|
+
export declare function stateUpdateChar(state: number): number;
|
|
42
|
+
/**
|
|
43
|
+
* State transition: after match
|
|
44
|
+
*/
|
|
45
|
+
export declare function stateUpdateMatch(state: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* State transition: after rep (repeated match)
|
|
48
|
+
*/
|
|
49
|
+
export declare function stateUpdateRep(state: number): number;
|
|
50
|
+
/**
|
|
51
|
+
* State transition: after short rep
|
|
52
|
+
*/
|
|
53
|
+
export declare function stateUpdateShortRep(state: number): number;
|
|
54
|
+
/**
|
|
55
|
+
* Check if state indicates previous symbol was a character (literal)
|
|
56
|
+
*/
|
|
57
|
+
export declare function stateIsCharState(state: number): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get length-to-position state index
|
|
60
|
+
*/
|
|
61
|
+
export declare function getLenToPosState(len: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* Initialize probability array with default values
|
|
64
|
+
* @param probs - Array to initialize (or null to create new)
|
|
65
|
+
* @param count - Number of probabilities
|
|
66
|
+
* @returns Initialized probability array
|
|
67
|
+
*/
|
|
68
|
+
export declare function initBitModels(probs: Uint16Array | null, count?: number): Uint16Array;
|
|
69
|
+
/**
|
|
70
|
+
* LZMA properties parsed from the 5-byte header
|
|
71
|
+
*/
|
|
72
|
+
export interface LzmaProperties {
|
|
73
|
+
/** Literal context bits (0-8) */
|
|
74
|
+
lc: number;
|
|
75
|
+
/** Literal pos bits (0-4) */
|
|
76
|
+
lp: number;
|
|
77
|
+
/** Pos bits (0-4) */
|
|
78
|
+
pb: number;
|
|
79
|
+
/** Dictionary size in bytes */
|
|
80
|
+
dictionarySize: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Parse LZMA properties from a 5-byte buffer
|
|
84
|
+
*/
|
|
85
|
+
export declare function parseProperties(properties: Buffer | Uint8Array): LzmaProperties;
|
|
86
|
+
/**
|
|
87
|
+
* LZMA2 control byte meanings
|
|
88
|
+
*/
|
|
89
|
+
export declare const LZMA2_CONTROL: {
|
|
90
|
+
readonly END: 0;
|
|
91
|
+
readonly UNCOMPRESSED_RESET_DIC: 1;
|
|
92
|
+
readonly UNCOMPRESSED: 2;
|
|
93
|
+
readonly LZMA_RESET_STATE_NEW_PROP: 224;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Check if LZMA2 control byte indicates reset state (new properties)
|
|
97
|
+
*/
|
|
98
|
+
export declare function lzma2NeedsNewProps(control: number): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Check if LZMA2 control byte indicates reset probabilities
|
|
101
|
+
*/
|
|
102
|
+
export declare function lzma2NeedsResetProbs(control: number): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Check if LZMA2 control byte indicates uncompressed chunk
|
|
105
|
+
*/
|
|
106
|
+
export declare function lzma2IsUncompressed(control: number): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Parse LZMA2 dictionary size from property byte
|
|
109
|
+
*/
|
|
110
|
+
export declare function parseLzma2DictionarySize(prop: number): number;
|
|
111
|
+
/**
|
|
112
|
+
* Output sink interface for fast streaming decode
|
|
113
|
+
* Can be a Buffer (with write method) or a stream with write() method
|
|
114
|
+
*/
|
|
115
|
+
export interface OutputSink {
|
|
116
|
+
write(buffer: Buffer): void;
|
|
117
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LZMA Types and Constants
|
|
3
|
+
*
|
|
4
|
+
* Shared types, constants, and state transition functions for LZMA decoding.
|
|
5
|
+
* Based on the LZMA SDK specification.
|
|
6
|
+
*/
|
|
7
|
+
export declare const kNumRepDistances = 4;
|
|
8
|
+
export declare const kNumStates = 12;
|
|
9
|
+
export declare const kNumPosSlotBits = 6;
|
|
10
|
+
export declare const kDicLogSizeMin = 0;
|
|
11
|
+
export declare const kNumLenToPosStatesBits = 2;
|
|
12
|
+
export declare const kNumLenToPosStates: number;
|
|
13
|
+
export declare const kMatchMinLen = 2;
|
|
14
|
+
export declare const kNumLowLenBits = 3;
|
|
15
|
+
export declare const kNumMidLenBits = 3;
|
|
16
|
+
export declare const kNumHighLenBits = 8;
|
|
17
|
+
export declare const kNumLowLenSymbols: number;
|
|
18
|
+
export declare const kNumMidLenSymbols: number;
|
|
19
|
+
export declare const kNumLenSymbols: number;
|
|
20
|
+
export declare const kMatchMaxLen: number;
|
|
21
|
+
export declare const kNumAlignBits = 4;
|
|
22
|
+
export declare const kAlignTableSize: number;
|
|
23
|
+
export declare const kAlignMask: number;
|
|
24
|
+
export declare const kStartPosModelIndex = 4;
|
|
25
|
+
export declare const kEndPosModelIndex = 14;
|
|
26
|
+
export declare const kNumPosModels: number;
|
|
27
|
+
export declare const kNumFullDistances: number;
|
|
28
|
+
export declare const kNumLitPosStatesBitsEncodingMax = 4;
|
|
29
|
+
export declare const kNumLitContextBitsMax = 8;
|
|
30
|
+
export declare const kNumPosStatesBitsMax = 4;
|
|
31
|
+
export declare const kNumPosStatesMax: number;
|
|
32
|
+
export declare const kNumPosStatesBitsEncodingMax = 4;
|
|
33
|
+
export declare const kNumPosStatesEncodingMax: number;
|
|
34
|
+
export declare const kNumBitModelTotalBits = 11;
|
|
35
|
+
export declare const kBitModelTotal: number;
|
|
36
|
+
export declare const kNumMoveBits = 5;
|
|
37
|
+
export declare const kProbInitValue: number;
|
|
38
|
+
/**
|
|
39
|
+
* State transition: after literal byte
|
|
40
|
+
*/
|
|
41
|
+
export declare function stateUpdateChar(state: number): number;
|
|
42
|
+
/**
|
|
43
|
+
* State transition: after match
|
|
44
|
+
*/
|
|
45
|
+
export declare function stateUpdateMatch(state: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* State transition: after rep (repeated match)
|
|
48
|
+
*/
|
|
49
|
+
export declare function stateUpdateRep(state: number): number;
|
|
50
|
+
/**
|
|
51
|
+
* State transition: after short rep
|
|
52
|
+
*/
|
|
53
|
+
export declare function stateUpdateShortRep(state: number): number;
|
|
54
|
+
/**
|
|
55
|
+
* Check if state indicates previous symbol was a character (literal)
|
|
56
|
+
*/
|
|
57
|
+
export declare function stateIsCharState(state: number): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get length-to-position state index
|
|
60
|
+
*/
|
|
61
|
+
export declare function getLenToPosState(len: number): number;
|
|
62
|
+
/**
|
|
63
|
+
* Initialize probability array with default values
|
|
64
|
+
* @param probs - Array to initialize (or null to create new)
|
|
65
|
+
* @param count - Number of probabilities
|
|
66
|
+
* @returns Initialized probability array
|
|
67
|
+
*/
|
|
68
|
+
export declare function initBitModels(probs: Uint16Array | null, count?: number): Uint16Array;
|
|
69
|
+
/**
|
|
70
|
+
* LZMA properties parsed from the 5-byte header
|
|
71
|
+
*/
|
|
72
|
+
export interface LzmaProperties {
|
|
73
|
+
/** Literal context bits (0-8) */
|
|
74
|
+
lc: number;
|
|
75
|
+
/** Literal pos bits (0-4) */
|
|
76
|
+
lp: number;
|
|
77
|
+
/** Pos bits (0-4) */
|
|
78
|
+
pb: number;
|
|
79
|
+
/** Dictionary size in bytes */
|
|
80
|
+
dictionarySize: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Parse LZMA properties from a 5-byte buffer
|
|
84
|
+
*/
|
|
85
|
+
export declare function parseProperties(properties: Buffer | Uint8Array): LzmaProperties;
|
|
86
|
+
/**
|
|
87
|
+
* LZMA2 control byte meanings
|
|
88
|
+
*/
|
|
89
|
+
export declare const LZMA2_CONTROL: {
|
|
90
|
+
readonly END: 0;
|
|
91
|
+
readonly UNCOMPRESSED_RESET_DIC: 1;
|
|
92
|
+
readonly UNCOMPRESSED: 2;
|
|
93
|
+
readonly LZMA_RESET_STATE_NEW_PROP: 224;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* Check if LZMA2 control byte indicates reset state (new properties)
|
|
97
|
+
*/
|
|
98
|
+
export declare function lzma2NeedsNewProps(control: number): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Check if LZMA2 control byte indicates reset probabilities
|
|
101
|
+
*/
|
|
102
|
+
export declare function lzma2NeedsResetProbs(control: number): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Check if LZMA2 control byte indicates uncompressed chunk
|
|
105
|
+
*/
|
|
106
|
+
export declare function lzma2IsUncompressed(control: number): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Parse LZMA2 dictionary size from property byte
|
|
109
|
+
*/
|
|
110
|
+
export declare function parseLzma2DictionarySize(prop: number): number;
|
|
111
|
+
/**
|
|
112
|
+
* Output sink interface for fast streaming decode
|
|
113
|
+
* Can be a Buffer (with write method) or a stream with write() method
|
|
114
|
+
*/
|
|
115
|
+
export interface OutputSink {
|
|
116
|
+
write(buffer: Buffer): void;
|
|
117
|
+
}
|