lzma1 0.1.2 → 0.2.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 +9 -3
- package/lib/chunker.d.ts +46 -0
- package/lib/chunker.js +68 -0
- package/lib/decoder.d.ts +80 -0
- package/lib/decoder.js +469 -0
- package/lib/encoder.d.ts +266 -0
- package/lib/encoder.js +822 -0
- package/lib/index.d.ts +4 -3
- package/lib/index.js +16 -9
- package/lib/len-coder.d.ts +70 -0
- package/lib/len-coder.js +171 -0
- package/lib/lit-coder.d.ts +63 -0
- package/lib/lit-coder.js +162 -0
- package/lib/lz-in-window.d.ts +43 -0
- package/lib/lz-in-window.js +132 -0
- package/lib/lz-window.d.ts +35 -0
- package/lib/lz-window.js +89 -0
- package/lib/lzma.d.ts +97 -56
- package/lib/lzma.js +244 -1485
- package/lib/match-finder-config.d.ts +34 -0
- package/lib/match-finder-config.js +63 -0
- package/lib/range-bit-tree-coder.d.ts +34 -0
- package/lib/range-bit-tree-coder.js +95 -0
- package/lib/range-decoder.d.ts +34 -0
- package/lib/range-decoder.js +98 -0
- package/lib/range-encoder.d.ts +46 -0
- package/lib/range-encoder.js +129 -0
- package/lib/streams.d.ts +32 -0
- package/lib/streams.js +1 -0
- package/lib/utils.d.ts +127 -0
- package/lib/utils.js +300 -0
- package/package.json +3 -3
package/lib/encoder.d.ts
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { LenEncoder, type RangeEncoder as LenRangeEncoder } from "./len-coder.js";
|
|
2
|
+
import { LitCoder } from "./lit-coder.js";
|
|
3
|
+
import type { BaseStream } from "./streams.js";
|
|
4
|
+
import type { LiteralDecoderEncoder2 } from "./utils.js";
|
|
5
|
+
import { type BitTree } from "./utils.js";
|
|
6
|
+
export interface MatchFinder {
|
|
7
|
+
_posLimit: number;
|
|
8
|
+
_bufferBase: number[];
|
|
9
|
+
_pos: number;
|
|
10
|
+
_streamPos: number;
|
|
11
|
+
_streamEndWasReached: number;
|
|
12
|
+
_bufferOffset: number;
|
|
13
|
+
_blockSize: number;
|
|
14
|
+
_keepSizeBefore: number;
|
|
15
|
+
_keepSizeAfter: number;
|
|
16
|
+
_pointerToLastSafePosition: number;
|
|
17
|
+
_stream: BaseStream | null;
|
|
18
|
+
HASH_ARRAY: boolean;
|
|
19
|
+
kNumHashDirectBytes: number;
|
|
20
|
+
kMinMatchCheck: number;
|
|
21
|
+
kFixHashSize: number;
|
|
22
|
+
_hashMask: number;
|
|
23
|
+
_hashSizeSum: number;
|
|
24
|
+
_hash: number[];
|
|
25
|
+
_cyclicBufferSize: number;
|
|
26
|
+
_cyclicBufferPos: number;
|
|
27
|
+
_son: number[];
|
|
28
|
+
_matchMaxLen: number;
|
|
29
|
+
_cutValue: number;
|
|
30
|
+
}
|
|
31
|
+
export interface Optimum {
|
|
32
|
+
state?: number;
|
|
33
|
+
price?: number;
|
|
34
|
+
posPrev?: number;
|
|
35
|
+
backPrev?: number;
|
|
36
|
+
prev1IsChar?: number;
|
|
37
|
+
prev2?: number;
|
|
38
|
+
posPrev2?: number;
|
|
39
|
+
backPrev2?: number;
|
|
40
|
+
backs0?: number;
|
|
41
|
+
backs1?: number;
|
|
42
|
+
backs2?: number;
|
|
43
|
+
backs3?: number;
|
|
44
|
+
}
|
|
45
|
+
interface RangeEncoder {
|
|
46
|
+
stream: {
|
|
47
|
+
buf: number[];
|
|
48
|
+
count: number;
|
|
49
|
+
} | null;
|
|
50
|
+
rrange: number;
|
|
51
|
+
cache: number;
|
|
52
|
+
low: [number, number];
|
|
53
|
+
cacheSize: number;
|
|
54
|
+
position: [number, number];
|
|
55
|
+
encodeBit(probs: number[], index: number, bit: number): void;
|
|
56
|
+
encodeBitTree(tree: BitTree, symbol: number): void;
|
|
57
|
+
encodeDirectBits(value: number, bits: number): void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* LZMA Encoder class that handles compression operations
|
|
61
|
+
*/
|
|
62
|
+
export declare class Encoder implements LenRangeEncoder {
|
|
63
|
+
private encoderState;
|
|
64
|
+
private positionEncoder;
|
|
65
|
+
_state: number;
|
|
66
|
+
_previousByte: number;
|
|
67
|
+
_distTableSize: number;
|
|
68
|
+
_longestMatchWasFound: number;
|
|
69
|
+
_optimumEndIndex: number;
|
|
70
|
+
_optimumCurrentIndex: number;
|
|
71
|
+
_additionalOffset: number;
|
|
72
|
+
_dictionarySize: number;
|
|
73
|
+
_matchFinder: MatchFinder | null;
|
|
74
|
+
_dictionarySizePrev: number;
|
|
75
|
+
_numFastBytes: number;
|
|
76
|
+
_numLiteralContextBits: number;
|
|
77
|
+
_numLiteralPosStateBits: number;
|
|
78
|
+
_posStateBits: number;
|
|
79
|
+
_posStateMask: number;
|
|
80
|
+
_needReleaseMFStream: number;
|
|
81
|
+
_inStream: BaseStream | null;
|
|
82
|
+
_finished: number;
|
|
83
|
+
nowPos64: [number, number];
|
|
84
|
+
_repDistances: number[];
|
|
85
|
+
_optimum: Optimum[];
|
|
86
|
+
_rangeEncoder: RangeEncoder;
|
|
87
|
+
_isMatch: number[];
|
|
88
|
+
_isRep: number[];
|
|
89
|
+
_isRepG0: number[];
|
|
90
|
+
_isRepG1: number[];
|
|
91
|
+
_isRepG2: number[];
|
|
92
|
+
_isRep0Long: number[];
|
|
93
|
+
_posSlotEncoder: BitTree[];
|
|
94
|
+
_posEncoders: number[];
|
|
95
|
+
_posAlignEncoder: BitTree | null;
|
|
96
|
+
_lenEncoder: LenEncoder | null;
|
|
97
|
+
_repMatchLenEncoder: LenEncoder | null;
|
|
98
|
+
_literalEncoder: LitCoder | null;
|
|
99
|
+
_matchDistances: number[];
|
|
100
|
+
_posSlotPrices: number[];
|
|
101
|
+
_distancesPrices: number[];
|
|
102
|
+
_alignPrices: number[];
|
|
103
|
+
_matchPriceCount: number;
|
|
104
|
+
_alignPriceCount: number;
|
|
105
|
+
reps: number[];
|
|
106
|
+
repLens: number[];
|
|
107
|
+
processedInSize: [number, number][];
|
|
108
|
+
processedOutSize: [number, number][];
|
|
109
|
+
finished: number[];
|
|
110
|
+
properties: number[];
|
|
111
|
+
tempPrices: number[];
|
|
112
|
+
_longestMatchLength: number;
|
|
113
|
+
_matchFinderType: number;
|
|
114
|
+
_numDistancePairs: number;
|
|
115
|
+
_numFastBytesPrev: number;
|
|
116
|
+
backRes: number;
|
|
117
|
+
constructor();
|
|
118
|
+
/**
|
|
119
|
+
* Initialize basic encoder state
|
|
120
|
+
*/
|
|
121
|
+
baseInit(): void;
|
|
122
|
+
/**
|
|
123
|
+
* Get optimum array
|
|
124
|
+
*/
|
|
125
|
+
getOptimum(): Optimum[];
|
|
126
|
+
/**
|
|
127
|
+
* Get back result
|
|
128
|
+
*/
|
|
129
|
+
getBackRes(): number;
|
|
130
|
+
setBackRes(backRes: number): void;
|
|
131
|
+
init(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Initialize encoder range coder
|
|
134
|
+
*/
|
|
135
|
+
initEncoderState(): void;
|
|
136
|
+
/**
|
|
137
|
+
* Initialize literal encoder
|
|
138
|
+
*/
|
|
139
|
+
initLiteralEncoder(): void;
|
|
140
|
+
/**
|
|
141
|
+
* Create optimum structures
|
|
142
|
+
*/
|
|
143
|
+
createOptimumStructures(): void;
|
|
144
|
+
/**
|
|
145
|
+
* Create length price table encoder
|
|
146
|
+
*/
|
|
147
|
+
createLenPriceTableEncoder(): LenEncoder;
|
|
148
|
+
/**
|
|
149
|
+
* Create literal encoder encoder2
|
|
150
|
+
*/
|
|
151
|
+
createLiteralEncoderEncoder2(): LiteralDecoderEncoder2;
|
|
152
|
+
/**
|
|
153
|
+
* Create literal encoder
|
|
154
|
+
*/
|
|
155
|
+
createLiteralEncoder(): void;
|
|
156
|
+
/**
|
|
157
|
+
* Initialize completely with proper encoder state
|
|
158
|
+
*/
|
|
159
|
+
initialize(): void;
|
|
160
|
+
/**
|
|
161
|
+
* Configure encoder settings
|
|
162
|
+
*/
|
|
163
|
+
configure(mode: {
|
|
164
|
+
searchDepth: number;
|
|
165
|
+
filterStrength: number;
|
|
166
|
+
modeIndex: number;
|
|
167
|
+
}): void;
|
|
168
|
+
/**
|
|
169
|
+
* Set dictionary size
|
|
170
|
+
*/
|
|
171
|
+
setDictionarySize(dictionarySize: number): void;
|
|
172
|
+
/**
|
|
173
|
+
* Encode a bit using range coder
|
|
174
|
+
*/
|
|
175
|
+
encodeBit(probs: number[], index: number, symbol: number): void;
|
|
176
|
+
/**
|
|
177
|
+
* Encode bit tree
|
|
178
|
+
*/
|
|
179
|
+
encodeBitTree(encoder: BitTree, symbol: number): void;
|
|
180
|
+
/**
|
|
181
|
+
* Encode literal
|
|
182
|
+
*/
|
|
183
|
+
encodeLiteral(encoder: LiteralDecoderEncoder2, symbol: number): void;
|
|
184
|
+
/**
|
|
185
|
+
* Encode matched literal
|
|
186
|
+
*/
|
|
187
|
+
encodeMatched(encoder: LiteralDecoderEncoder2, matchByte: number, symbol: number): void;
|
|
188
|
+
/**
|
|
189
|
+
* Encode length using direct method calls
|
|
190
|
+
*/
|
|
191
|
+
encodeLength(encoder: LenEncoder, symbol: number, posState: number): void;
|
|
192
|
+
/**
|
|
193
|
+
* Encode direct bits
|
|
194
|
+
*/
|
|
195
|
+
encodeDirectBits(valueToEncode: number, numTotalBits: number): void;
|
|
196
|
+
/**
|
|
197
|
+
* Reverse encode
|
|
198
|
+
*/
|
|
199
|
+
reverseEncode(symbol: number): void;
|
|
200
|
+
/**
|
|
201
|
+
* Reverse encode range
|
|
202
|
+
*/
|
|
203
|
+
reverseEncodeRange(startIndex: number, numBitLevels: number, symbol: number): void;
|
|
204
|
+
/**
|
|
205
|
+
* Write end marker
|
|
206
|
+
*/
|
|
207
|
+
writeEndMarker(positionState: number): void;
|
|
208
|
+
/**
|
|
209
|
+
* Encode length with price table update
|
|
210
|
+
*/
|
|
211
|
+
encodeLengthWithPriceUpdate(encoder: LenEncoder, symbol: number, posState: number): void;
|
|
212
|
+
private and64;
|
|
213
|
+
private shru64;
|
|
214
|
+
private shl64;
|
|
215
|
+
private pwrAsDouble;
|
|
216
|
+
/**
|
|
217
|
+
* Shift low helper (proper implementation) - public method for external access
|
|
218
|
+
*/
|
|
219
|
+
shiftLow(): void;
|
|
220
|
+
/**
|
|
221
|
+
* Write byte to stream
|
|
222
|
+
*/
|
|
223
|
+
private writeToStream;
|
|
224
|
+
initRangeEncoder(): void;
|
|
225
|
+
/**
|
|
226
|
+
* Fill alignment prices for position alignment encoder
|
|
227
|
+
*/
|
|
228
|
+
fillAlignPrices(): void;
|
|
229
|
+
/**
|
|
230
|
+
* Fill distance prices for position encoders
|
|
231
|
+
*/
|
|
232
|
+
fillDistancesPrices(): void;
|
|
233
|
+
/**
|
|
234
|
+
* Get position slot for a distance value
|
|
235
|
+
*/
|
|
236
|
+
getPosSlot(pos: number): number;
|
|
237
|
+
/**
|
|
238
|
+
* Get reverse price for bit tree encoder
|
|
239
|
+
*/
|
|
240
|
+
reverseGetPrice(encoder: BitTree, symbol: number): number;
|
|
241
|
+
/**
|
|
242
|
+
* Get reverse price for array of models
|
|
243
|
+
*/
|
|
244
|
+
reverseGetPriceArray(Models: number[], startIndex: number, NumBitLevels: number, symbol: number): number;
|
|
245
|
+
/**
|
|
246
|
+
* Get price for probability model (optimized)
|
|
247
|
+
*/
|
|
248
|
+
getPrice(Prob: number, symbol: number): number;
|
|
249
|
+
/**
|
|
250
|
+
* Get price for bit tree encoder (optimized)
|
|
251
|
+
*/
|
|
252
|
+
rangeCoder_Encoder_GetPrice_1(encoder: BitTree, symbol: number): number;
|
|
253
|
+
/**
|
|
254
|
+
* Create encoder optimization structures (optimized)
|
|
255
|
+
*/
|
|
256
|
+
createEncoderStructures(): void;
|
|
257
|
+
/**
|
|
258
|
+
* Create match finder and encoder structures (replaces #Create_2)
|
|
259
|
+
*/
|
|
260
|
+
createMatchFinderAndStructures(): void;
|
|
261
|
+
/**
|
|
262
|
+
* Get literal encoder subcoder (utility method)
|
|
263
|
+
*/
|
|
264
|
+
getSubCoderUtility(pos: number, prevByte: number): LiteralDecoderEncoder2;
|
|
265
|
+
}
|
|
266
|
+
export {};
|