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.
@@ -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 {};