@lexmata/micropdf 0.4.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.
Files changed (170) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +985 -0
  3. package/binding.gyp +73 -0
  4. package/dist/annot.d.ts +458 -0
  5. package/dist/annot.d.ts.map +1 -0
  6. package/dist/annot.js +697 -0
  7. package/dist/annot.js.map +1 -0
  8. package/dist/archive.d.ts +128 -0
  9. package/dist/archive.d.ts.map +1 -0
  10. package/dist/archive.js +268 -0
  11. package/dist/archive.js.map +1 -0
  12. package/dist/buffer.d.ts +572 -0
  13. package/dist/buffer.d.ts.map +1 -0
  14. package/dist/buffer.js +971 -0
  15. package/dist/buffer.js.map +1 -0
  16. package/dist/colorspace.d.ts +287 -0
  17. package/dist/colorspace.d.ts.map +1 -0
  18. package/dist/colorspace.js +542 -0
  19. package/dist/colorspace.js.map +1 -0
  20. package/dist/context.d.ts +184 -0
  21. package/dist/context.d.ts.map +1 -0
  22. package/dist/context.js +320 -0
  23. package/dist/context.js.map +1 -0
  24. package/dist/cookie.d.ts +164 -0
  25. package/dist/cookie.d.ts.map +1 -0
  26. package/dist/cookie.js +306 -0
  27. package/dist/cookie.js.map +1 -0
  28. package/dist/device.d.ts +169 -0
  29. package/dist/device.d.ts.map +1 -0
  30. package/dist/device.js +350 -0
  31. package/dist/device.js.map +1 -0
  32. package/dist/display-list.d.ts +202 -0
  33. package/dist/display-list.d.ts.map +1 -0
  34. package/dist/display-list.js +410 -0
  35. package/dist/display-list.js.map +1 -0
  36. package/dist/document.d.ts +637 -0
  37. package/dist/document.d.ts.map +1 -0
  38. package/dist/document.js +902 -0
  39. package/dist/document.js.map +1 -0
  40. package/dist/easy.d.ts +423 -0
  41. package/dist/easy.d.ts.map +1 -0
  42. package/dist/easy.js +644 -0
  43. package/dist/easy.js.map +1 -0
  44. package/dist/enhanced.d.ts +226 -0
  45. package/dist/enhanced.d.ts.map +1 -0
  46. package/dist/enhanced.js +368 -0
  47. package/dist/enhanced.js.map +1 -0
  48. package/dist/filter.d.ts +51 -0
  49. package/dist/filter.d.ts.map +1 -0
  50. package/dist/filter.js +381 -0
  51. package/dist/filter.js.map +1 -0
  52. package/dist/font.d.ts +222 -0
  53. package/dist/font.d.ts.map +1 -0
  54. package/dist/font.js +381 -0
  55. package/dist/font.js.map +1 -0
  56. package/dist/form.d.ts +214 -0
  57. package/dist/form.d.ts.map +1 -0
  58. package/dist/form.js +497 -0
  59. package/dist/form.js.map +1 -0
  60. package/dist/geometry.d.ts +469 -0
  61. package/dist/geometry.d.ts.map +1 -0
  62. package/dist/geometry.js +780 -0
  63. package/dist/geometry.js.map +1 -0
  64. package/dist/image.d.ts +172 -0
  65. package/dist/image.d.ts.map +1 -0
  66. package/dist/image.js +348 -0
  67. package/dist/image.js.map +1 -0
  68. package/dist/index.d.ts +171 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +339 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/link.d.ts +168 -0
  73. package/dist/link.d.ts.map +1 -0
  74. package/dist/link.js +343 -0
  75. package/dist/link.js.map +1 -0
  76. package/dist/micropdf.d.ts +40 -0
  77. package/dist/micropdf.d.ts.map +1 -0
  78. package/dist/micropdf.js +45 -0
  79. package/dist/micropdf.js.map +1 -0
  80. package/dist/nanopdf.d.ts +40 -0
  81. package/dist/nanopdf.d.ts.map +1 -0
  82. package/dist/nanopdf.js +45 -0
  83. package/dist/nanopdf.js.map +1 -0
  84. package/dist/native.d.ts +242 -0
  85. package/dist/native.d.ts.map +1 -0
  86. package/dist/native.js +509 -0
  87. package/dist/native.js.map +1 -0
  88. package/dist/output.d.ts +166 -0
  89. package/dist/output.d.ts.map +1 -0
  90. package/dist/output.js +365 -0
  91. package/dist/output.js.map +1 -0
  92. package/dist/path.d.ts +420 -0
  93. package/dist/path.d.ts.map +1 -0
  94. package/dist/path.js +687 -0
  95. package/dist/path.js.map +1 -0
  96. package/dist/pdf/object.d.ts +489 -0
  97. package/dist/pdf/object.d.ts.map +1 -0
  98. package/dist/pdf/object.js +1045 -0
  99. package/dist/pdf/object.js.map +1 -0
  100. package/dist/pixmap.d.ts +315 -0
  101. package/dist/pixmap.d.ts.map +1 -0
  102. package/dist/pixmap.js +590 -0
  103. package/dist/pixmap.js.map +1 -0
  104. package/dist/profiler.d.ts +159 -0
  105. package/dist/profiler.d.ts.map +1 -0
  106. package/dist/profiler.js +380 -0
  107. package/dist/profiler.js.map +1 -0
  108. package/dist/render-options.d.ts +227 -0
  109. package/dist/render-options.d.ts.map +1 -0
  110. package/dist/render-options.js +130 -0
  111. package/dist/render-options.js.map +1 -0
  112. package/dist/resource-tracking.d.ts +332 -0
  113. package/dist/resource-tracking.d.ts.map +1 -0
  114. package/dist/resource-tracking.js +653 -0
  115. package/dist/resource-tracking.js.map +1 -0
  116. package/dist/simple.d.ts +276 -0
  117. package/dist/simple.d.ts.map +1 -0
  118. package/dist/simple.js +343 -0
  119. package/dist/simple.js.map +1 -0
  120. package/dist/stext.d.ts +290 -0
  121. package/dist/stext.d.ts.map +1 -0
  122. package/dist/stext.js +312 -0
  123. package/dist/stext.js.map +1 -0
  124. package/dist/stream.d.ts +174 -0
  125. package/dist/stream.d.ts.map +1 -0
  126. package/dist/stream.js +476 -0
  127. package/dist/stream.js.map +1 -0
  128. package/dist/text.d.ts +337 -0
  129. package/dist/text.d.ts.map +1 -0
  130. package/dist/text.js +454 -0
  131. package/dist/text.js.map +1 -0
  132. package/dist/typed-arrays.d.ts +127 -0
  133. package/dist/typed-arrays.d.ts.map +1 -0
  134. package/dist/typed-arrays.js +410 -0
  135. package/dist/typed-arrays.js.map +1 -0
  136. package/dist/types.d.ts +358 -0
  137. package/dist/types.d.ts.map +1 -0
  138. package/dist/types.js +216 -0
  139. package/dist/types.js.map +1 -0
  140. package/native/annot.cc +557 -0
  141. package/native/buffer.cc +204 -0
  142. package/native/colorspace.cc +166 -0
  143. package/native/context.cc +84 -0
  144. package/native/cookie.cc +179 -0
  145. package/native/device.cc +179 -0
  146. package/native/display_list.cc +179 -0
  147. package/native/document.cc +268 -0
  148. package/native/enhanced.cc +70 -0
  149. package/native/font.cc +282 -0
  150. package/native/form.cc +523 -0
  151. package/native/geometry.cc +255 -0
  152. package/native/image.cc +216 -0
  153. package/native/include/micropdf/enhanced.h +38 -0
  154. package/native/include/micropdf/types.h +36 -0
  155. package/native/include/micropdf.h +106 -0
  156. package/native/include/mupdf-ffi.h +39 -0
  157. package/native/include/mupdf.h +11 -0
  158. package/native/include/mupdf_minimal.h +381 -0
  159. package/native/lib/linux-x64/libmicropdf.a +0 -0
  160. package/native/link.cc +234 -0
  161. package/native/micropdf.cc +71 -0
  162. package/native/output.cc +229 -0
  163. package/native/page.cc +572 -0
  164. package/native/path.cc +259 -0
  165. package/native/pixmap.cc +240 -0
  166. package/native/stext.cc +610 -0
  167. package/native/stream.cc +239 -0
  168. package/package.json +120 -0
  169. package/scripts/build-from-rust.js +97 -0
  170. package/scripts/install.js +184 -0
@@ -0,0 +1,572 @@
1
+ /**
2
+ * Buffer - Dynamic byte array wrapper for PDF data manipulation
3
+ *
4
+ * This module provides a flexible buffer implementation for working with binary PDF data.
5
+ * Buffers are used throughout the library for reading, writing, and manipulating
6
+ * PDF content, streams, and binary resources.
7
+ *
8
+ * This implementation mirrors the Rust `fitz::buffer::Buffer` for 100% API compatibility
9
+ * and wraps Node.js Buffer for efficient memory management.
10
+ *
11
+ * @module buffer
12
+ * @example
13
+ * ```typescript
14
+ * import { Buffer } from 'micropdf';
15
+ *
16
+ * // Create from string
17
+ * const buf = Buffer.fromString('Hello, PDF!');
18
+ *
19
+ * // Append data
20
+ * buf.append(Buffer.fromString(' More text.'));
21
+ *
22
+ * // Get as string
23
+ * console.log(buf.toString()); // "Hello, PDF! More text."
24
+ *
25
+ * // Get raw bytes
26
+ * const bytes = buf.toUint8Array();
27
+ *
28
+ * // Get size
29
+ * console.log(buf.length); // 24
30
+ * ```
31
+ */
32
+ import { type BufferLike, isBufferLike } from './types.js';
33
+ export { BufferLike, isBufferLike };
34
+ /**
35
+ * A dynamic byte buffer for PDF data manipulation.
36
+ *
37
+ * Buffer provides efficient storage and manipulation of binary data. It's used
38
+ * throughout the library for PDF streams, content, images, and other binary resources.
39
+ *
40
+ * **Key Features:**
41
+ * - Dynamic resizing as data is appended
42
+ * - Zero-copy conversion to/from Node.js Buffer
43
+ * - String encoding/decoding support
44
+ * - Slice and copy operations
45
+ * - Compatible with standard Node.js Buffer operations
46
+ *
47
+ * Mirrors the Rust `Buffer` implementation with `bytes` crate semantics.
48
+ *
49
+ * @class Buffer
50
+ * @example
51
+ * ```typescript
52
+ * // Create empty buffer
53
+ * const buf1 = Buffer.create();
54
+ *
55
+ * // Create from string
56
+ * const buf2 = Buffer.fromString('Hello');
57
+ *
58
+ * // Create from bytes
59
+ * const bytes = new Uint8Array([72, 101, 108, 108, 111]);
60
+ * const buf3 = Buffer.fromUint8Array(bytes);
61
+ *
62
+ * // Append data
63
+ * buf1.append(buf2);
64
+ * buf1.append(Buffer.fromString(' World!'));
65
+ *
66
+ * // Extract data
67
+ * console.log(buf1.toString()); // "Hello World!"
68
+ * console.log(buf1.length); // 12
69
+ *
70
+ * // Slice
71
+ * const hello = buf1.slice(0, 5);
72
+ * console.log(hello.toString()); // "Hello"
73
+ *
74
+ * // Clear
75
+ * buf1.clear();
76
+ * console.log(buf1.length); // 0
77
+ * ```
78
+ */
79
+ export declare class Buffer {
80
+ /**
81
+ * The underlying Node.js Buffer containing the data.
82
+ * @private
83
+ * @type {globalThis.Buffer}
84
+ */
85
+ private _data;
86
+ /**
87
+ * Creates a new Buffer instance.
88
+ *
89
+ * **Note**: Use static factory methods instead of calling this constructor directly.
90
+ *
91
+ * @private
92
+ * @param {globalThis.Buffer} data - The underlying Node.js Buffer
93
+ */
94
+ private constructor();
95
+ /**
96
+ * Creates a new empty buffer with optional initial capacity.
97
+ *
98
+ * The capacity parameter is a hint for initial memory allocation. The buffer
99
+ * will automatically grow as needed when data is appended.
100
+ *
101
+ * @static
102
+ * @param {number} [capacity=0] - Initial capacity in bytes (optional)
103
+ * @returns {Buffer} A new empty buffer
104
+ * @example
105
+ * ```typescript
106
+ * // Create empty buffer
107
+ * const buf1 = Buffer.create();
108
+ *
109
+ * // Create with initial capacity
110
+ * const buf2 = Buffer.create(1024); // Reserve 1KB
111
+ * ```
112
+ */
113
+ static create(capacity?: number): Buffer;
114
+ /**
115
+ * Creates a buffer from a Node.js Buffer (zero-copy).
116
+ *
117
+ * This operation wraps the existing Buffer without copying data, making it
118
+ * very efficient. Modifications to the original Buffer will be visible in
119
+ * the MicroPDF Buffer and vice versa.
120
+ *
121
+ * @static
122
+ * @param {globalThis.Buffer} data - The Node.js Buffer to wrap
123
+ * @returns {Buffer} A new Buffer wrapping the provided data
124
+ * @example
125
+ * ```typescript
126
+ * const nodeBuffer = Buffer.from('Hello');
127
+ * const pdfBuffer = Buffer.fromBuffer(nodeBuffer);
128
+ * console.log(pdfBuffer.toString()); // "Hello"
129
+ * ```
130
+ */
131
+ static fromBuffer(data: globalThis.Buffer): Buffer;
132
+ /**
133
+ * Creates a buffer from a Uint8Array.
134
+ *
135
+ * The data is copied into a new Node.js Buffer.
136
+ *
137
+ * @static
138
+ * @param {Uint8Array} data - The byte array to copy
139
+ * @returns {Buffer} A new Buffer containing the data
140
+ * @example
141
+ * ```typescript
142
+ * const bytes = new Uint8Array([72, 101, 108, 108, 111]);
143
+ * const buf = Buffer.fromUint8Array(bytes);
144
+ * console.log(buf.toString()); // "Hello"
145
+ * ```
146
+ */
147
+ static fromUint8Array(data: Uint8Array): Buffer;
148
+ /**
149
+ * Creates a buffer from an ArrayBuffer.
150
+ *
151
+ * Useful for working with binary data from various Web APIs and file operations.
152
+ *
153
+ * @static
154
+ * @param {ArrayBuffer} data - The ArrayBuffer to convert
155
+ * @returns {Buffer} A new Buffer containing the data
156
+ * @example
157
+ * ```typescript
158
+ * const arrayBuffer = new ArrayBuffer(5);
159
+ * const view = new Uint8Array(arrayBuffer);
160
+ * view.set([72, 101, 108, 108, 111]);
161
+ * const buf = Buffer.fromArrayBuffer(arrayBuffer);
162
+ * console.log(buf.toString()); // "Hello"
163
+ * ```
164
+ */
165
+ static fromArrayBuffer(data: ArrayBuffer): Buffer;
166
+ /**
167
+ * Creates a buffer from a string with specified encoding.
168
+ *
169
+ * Supports all standard Node.js buffer encodings including UTF-8, ASCII,
170
+ * Base64, Hex, and more.
171
+ *
172
+ * @static
173
+ * @param {string} str - The string to encode
174
+ * @param {BufferEncoding} [encoding='utf-8'] - The character encoding to use
175
+ * @returns {Buffer} A new Buffer containing the encoded string
176
+ * @example
177
+ * ```typescript
178
+ * // UTF-8 (default)
179
+ * const buf1 = Buffer.fromString('Hello');
180
+ *
181
+ * // ASCII
182
+ * const buf2 = Buffer.fromString('Hello', 'ascii');
183
+ *
184
+ * // Base64
185
+ * const buf3 = Buffer.fromString('SGVsbG8=', 'base64');
186
+ * console.log(buf3.toString()); // "Hello"
187
+ *
188
+ * // Hex
189
+ * const buf4 = Buffer.fromString('48656c6c6f', 'hex');
190
+ * console.log(buf4.toString()); // "Hello"
191
+ * ```
192
+ */
193
+ static fromString(str: string, encoding?: BufferEncoding): Buffer;
194
+ /**
195
+ * Create a buffer from base64-encoded data
196
+ */
197
+ static fromBase64(data: string): Buffer;
198
+ /**
199
+ * Create a buffer from hex-encoded data
200
+ */
201
+ static fromHex(data: string): Buffer;
202
+ /**
203
+ * Create a buffer from various input types
204
+ */
205
+ static from(data: BufferLike): Buffer;
206
+ /**
207
+ * Get the length of the buffer in bytes
208
+ */
209
+ get length(): number;
210
+ /**
211
+ * Check if the buffer is empty
212
+ */
213
+ get isEmpty(): boolean;
214
+ /**
215
+ * Get the buffer capacity
216
+ */
217
+ get capacity(): number;
218
+ /**
219
+ * Get the buffer data as a Node.js Buffer
220
+ */
221
+ toNodeBuffer(): globalThis.Buffer;
222
+ /**
223
+ * Get the buffer data as a Uint8Array (copy)
224
+ *
225
+ * Creates a new Uint8Array with a copy of the buffer data.
226
+ * Use `toUint8ArrayView()` for a zero-copy view if you don't need to modify it.
227
+ */
228
+ toUint8Array(): Uint8Array;
229
+ /**
230
+ * Get a zero-copy Uint8Array view of the buffer data
231
+ *
232
+ * WARNING: This returns a view, not a copy. Modifying the view will
233
+ * modify the original buffer. The view becomes invalid if the buffer
234
+ * is modified (append, resize, etc.) or freed.
235
+ *
236
+ * Use this for read-only operations where performance matters.
237
+ */
238
+ toUint8ArrayView(): Uint8Array;
239
+ /**
240
+ * Get the buffer data as an ArrayBuffer
241
+ */
242
+ toArrayBuffer(): ArrayBuffer;
243
+ /**
244
+ * Get the buffer data as a string
245
+ *
246
+ * For UTF-8 encoding with buffers larger than 1KB, uses TextDecoder
247
+ * which is more efficient than Node's toString() for large strings.
248
+ */
249
+ toString(encoding?: BufferEncoding): string;
250
+ /**
251
+ * Get the buffer data as base64-encoded string
252
+ */
253
+ toBase64(): string;
254
+ /**
255
+ * Get the buffer data as hex-encoded string
256
+ */
257
+ toHex(): string;
258
+ /**
259
+ * Get the buffer data as a number array
260
+ */
261
+ toArray(): number[];
262
+ /**
263
+ * Resize the buffer to the specified size
264
+ */
265
+ resize(newLength: number): this;
266
+ /**
267
+ * Clear all data from the buffer
268
+ */
269
+ clear(): this;
270
+ /**
271
+ * Append data to the buffer
272
+ */
273
+ append(data: BufferLike): this;
274
+ /**
275
+ * Append a single byte to the buffer
276
+ */
277
+ appendByte(byte: number): this;
278
+ /**
279
+ * Append a string to the buffer (UTF-8 encoded)
280
+ */
281
+ appendString(str: string, encoding?: BufferEncoding): this;
282
+ /**
283
+ * Append a 16-bit integer in little-endian format
284
+ */
285
+ appendInt16LE(value: number): this;
286
+ /**
287
+ * Append a 32-bit integer in little-endian format
288
+ */
289
+ appendInt32LE(value: number): this;
290
+ /**
291
+ * Append a 16-bit integer in big-endian format
292
+ */
293
+ appendInt16BE(value: number): this;
294
+ /**
295
+ * Append a 32-bit integer in big-endian format
296
+ */
297
+ appendInt32BE(value: number): this;
298
+ /**
299
+ * Append a 16-bit unsigned integer in little-endian format
300
+ */
301
+ appendUInt16LE(value: number): this;
302
+ /**
303
+ * Append a 32-bit unsigned integer in little-endian format
304
+ */
305
+ appendUInt32LE(value: number): this;
306
+ /**
307
+ * Append a 16-bit unsigned integer in big-endian format
308
+ */
309
+ appendUInt16BE(value: number): this;
310
+ /**
311
+ * Append a 32-bit unsigned integer in big-endian format
312
+ */
313
+ appendUInt32BE(value: number): this;
314
+ /**
315
+ * Append a float in little-endian format
316
+ */
317
+ appendFloatLE(value: number): this;
318
+ /**
319
+ * Append a float in big-endian format
320
+ */
321
+ appendFloatBE(value: number): this;
322
+ /**
323
+ * Append a double in little-endian format
324
+ */
325
+ appendDoubleLE(value: number): this;
326
+ /**
327
+ * Append a double in big-endian format
328
+ */
329
+ appendDoubleBE(value: number): this;
330
+ /**
331
+ * Get a slice of the buffer
332
+ */
333
+ slice(start: number, end?: number): Buffer;
334
+ /**
335
+ * Split the buffer at the given index
336
+ */
337
+ splitAt(mid: number): [Buffer, Buffer];
338
+ /**
339
+ * Get a byte at the specified index
340
+ */
341
+ at(index: number): number | undefined;
342
+ /**
343
+ * Set a byte at the specified index
344
+ */
345
+ set(index: number, value: number): this;
346
+ /**
347
+ * Read a 16-bit unsigned integer at offset (big-endian)
348
+ */
349
+ readUInt16BE(offset: number): number;
350
+ /**
351
+ * Read a 32-bit unsigned integer at offset (big-endian)
352
+ */
353
+ readUInt32BE(offset: number): number;
354
+ /**
355
+ * Read a 16-bit unsigned integer at offset (little-endian)
356
+ */
357
+ readUInt16LE(offset: number): number;
358
+ /**
359
+ * Read a 32-bit unsigned integer at offset (little-endian)
360
+ */
361
+ readUInt32LE(offset: number): number;
362
+ /**
363
+ * Read a 16-bit signed integer at offset (big-endian)
364
+ */
365
+ readInt16BE(offset: number): number;
366
+ /**
367
+ * Read a 32-bit signed integer at offset (big-endian)
368
+ */
369
+ readInt32BE(offset: number): number;
370
+ /**
371
+ * Read a 16-bit signed integer at offset (little-endian)
372
+ */
373
+ readInt16LE(offset: number): number;
374
+ /**
375
+ * Read a 32-bit signed integer at offset (little-endian)
376
+ */
377
+ readInt32LE(offset: number): number;
378
+ /**
379
+ * Read a float at offset (big-endian)
380
+ */
381
+ readFloatBE(offset: number): number;
382
+ /**
383
+ * Read a float at offset (little-endian)
384
+ */
385
+ readFloatLE(offset: number): number;
386
+ /**
387
+ * Read a double at offset (big-endian)
388
+ */
389
+ readDoubleBE(offset: number): number;
390
+ /**
391
+ * Read a double at offset (little-endian)
392
+ */
393
+ readDoubleLE(offset: number): number;
394
+ /**
395
+ * Compute MD5 digest of buffer contents
396
+ */
397
+ md5Digest(): Uint8Array;
398
+ /**
399
+ * Compute SHA-256 digest of buffer contents
400
+ */
401
+ sha256Digest(): Uint8Array;
402
+ /**
403
+ * Check equality with another buffer
404
+ */
405
+ equals(other: Buffer | BufferLike): boolean;
406
+ /**
407
+ * Compare with another buffer
408
+ * Returns -1, 0, or 1
409
+ */
410
+ compare(other: Buffer | BufferLike): number;
411
+ /**
412
+ * Find index of a byte or pattern
413
+ */
414
+ indexOf(value: number | BufferLike, start?: number): number;
415
+ /**
416
+ * Check if buffer includes a byte or pattern
417
+ */
418
+ includes(value: number | BufferLike, start?: number): boolean;
419
+ /**
420
+ * Iterate over bytes
421
+ */
422
+ [Symbol.iterator](): Iterator<number>;
423
+ /**
424
+ * Get entries iterator
425
+ */
426
+ entries(): IterableIterator<[number, number]>;
427
+ /**
428
+ * Get keys iterator
429
+ */
430
+ keys(): IterableIterator<number>;
431
+ /**
432
+ * Get values iterator
433
+ */
434
+ values(): IterableIterator<number>;
435
+ /**
436
+ * Create a copy of the buffer
437
+ */
438
+ clone(): Buffer;
439
+ }
440
+ /**
441
+ * A reader for consuming buffer contents
442
+ */
443
+ export declare class BufferReader {
444
+ private readonly data;
445
+ private position;
446
+ constructor(buffer: Buffer | BufferLike);
447
+ /**
448
+ * Get the current read position
449
+ */
450
+ get pos(): number;
451
+ /**
452
+ * Get the number of bytes remaining
453
+ */
454
+ get remaining(): number;
455
+ /**
456
+ * Check if we've reached the end
457
+ */
458
+ get isEof(): boolean;
459
+ /**
460
+ * Peek at the next byte without consuming it
461
+ */
462
+ peek(): number | null;
463
+ /**
464
+ * Read a single byte
465
+ */
466
+ readByte(): number | null;
467
+ /**
468
+ * Read bytes into a buffer
469
+ */
470
+ read(length: number): Uint8Array;
471
+ /**
472
+ * Read exactly n bytes, or throw if not enough data
473
+ */
474
+ readExact(length: number): Uint8Array;
475
+ /**
476
+ * Read a 16-bit unsigned integer (big-endian)
477
+ */
478
+ readUInt16BE(): number;
479
+ /**
480
+ * Read a 32-bit unsigned integer (big-endian)
481
+ */
482
+ readUInt32BE(): number;
483
+ /**
484
+ * Read a 16-bit unsigned integer (little-endian)
485
+ */
486
+ readUInt16LE(): number;
487
+ /**
488
+ * Read a 32-bit unsigned integer (little-endian)
489
+ */
490
+ readUInt32LE(): number;
491
+ /**
492
+ * Read a 24-bit unsigned integer (big-endian)
493
+ */
494
+ readUInt24BE(): number;
495
+ /**
496
+ * Seek to a position
497
+ */
498
+ seek(pos: number): this;
499
+ /**
500
+ * Skip n bytes
501
+ */
502
+ skip(n: number): this;
503
+ /**
504
+ * Read a line (up to and including newline)
505
+ */
506
+ readLine(): Uint8Array | null;
507
+ /**
508
+ * Read a line as string
509
+ */
510
+ readLineString(encoding?: BufferEncoding): string | null;
511
+ }
512
+ /**
513
+ * A writer that accumulates data into a buffer
514
+ */
515
+ export declare class BufferWriter {
516
+ private data;
517
+ private position;
518
+ constructor(capacity?: number);
519
+ /**
520
+ * Get the current length
521
+ */
522
+ get length(): number;
523
+ /**
524
+ * Check if empty
525
+ */
526
+ get isEmpty(): boolean;
527
+ /**
528
+ * Ensure capacity
529
+ */
530
+ private ensureCapacity;
531
+ /**
532
+ * Write bytes
533
+ */
534
+ write(data: BufferLike): this;
535
+ /**
536
+ * Write a single byte
537
+ */
538
+ writeByte(value: number): this;
539
+ /**
540
+ * Write a 16-bit unsigned integer (big-endian)
541
+ */
542
+ writeUInt16BE(value: number): this;
543
+ /**
544
+ * Write a 32-bit unsigned integer (big-endian)
545
+ */
546
+ writeUInt32BE(value: number): this;
547
+ /**
548
+ * Write a 16-bit unsigned integer (little-endian)
549
+ */
550
+ writeUInt16LE(value: number): this;
551
+ /**
552
+ * Write a 32-bit unsigned integer (little-endian)
553
+ */
554
+ writeUInt32LE(value: number): this;
555
+ /**
556
+ * Write a string
557
+ */
558
+ writeString(str: string, encoding?: BufferEncoding): this;
559
+ /**
560
+ * Get the accumulated data as a slice
561
+ */
562
+ toSlice(): Uint8Array;
563
+ /**
564
+ * Convert to Buffer
565
+ */
566
+ toBuffer(): Buffer;
567
+ /**
568
+ * Clear the writer
569
+ */
570
+ clear(): this;
571
+ }
572
+ //# sourceMappingURL=buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}