export type BufferListAcceptedTypes = | |
| Buffer | |
| BufferList | |
| Uint8Array | |
| BufferListAcceptedTypes[] | |
| string | |
| number; | |
export interface BufferListConstructor { | |
new (initData?: BufferListAcceptedTypes): BufferList; | |
(initData?: BufferListAcceptedTypes): BufferList; | |
/** | |
* Determines if the passed object is a BufferList. It will return true | |
* if the passed object is an instance of BufferList or BufferListStream | |
* and false otherwise. | |
* | |
* N.B. this won't return true for BufferList or BufferListStream instances | |
* created by versions of this library before this static method was added. | |
* | |
* @param other | |
*/ | |
isBufferList(other: unknown): boolean; | |
} | |
interface BufferList { | |
prototype: Object | |
/** | |
* Get the length of the list in bytes. This is the sum of the lengths | |
* of all of the buffers contained in the list, minus any initial offset | |
* for a semi-consumed buffer at the beginning. Should accurately | |
* represent the total number of bytes that can be read from the list. | |
*/ | |
length: number; | |
/** | |
* Adds an additional buffer or BufferList to the internal list. | |
* this is returned so it can be chained. | |
* | |
* @param buffer | |
*/ | |
append(buffer: BufferListAcceptedTypes): this; | |
/** | |
* Will return the byte at the specified index. | |
* @param index | |
*/ | |
get(index: number): number; | |
/** | |
* Returns a new Buffer object containing the bytes within the | |
* range specified. Both start and end are optional and will | |
* default to the beginning and end of the list respectively. | |
* | |
* If the requested range spans a single internal buffer then a | |
* slice of that buffer will be returned which shares the original | |
* memory range of that Buffer. If the range spans multiple buffers | |
* then copy operations will likely occur to give you a uniform Buffer. | |
* | |
* @param start | |
* @param end | |
*/ | |
slice(start?: number, end?: number): Buffer; | |
/** | |
* Returns a new BufferList object containing the bytes within the | |
* range specified. Both start and end are optional and will default | |
* to the beginning and end of the list respectively. | |
* | |
* No copies will be performed. All buffers in the result share | |
* memory with the original list. | |
* | |
* @param start | |
* @param end | |
*/ | |
shallowSlice(start?: number, end?: number): this; | |
/** | |
* Copies the content of the list in the `dest` buffer, starting from | |
* `destStart` and containing the bytes within the range specified | |
* with `srcStart` to `srcEnd`. | |
* | |
* `destStart`, `start` and `end` are optional and will default to the | |
* beginning of the dest buffer, and the beginning and end of the | |
* list respectively. | |
* | |
* @param dest | |
* @param destStart | |
* @param srcStart | |
* @param srcEnd | |
*/ | |
copy( | |
dest: Buffer, | |
destStart?: number, | |
srcStart?: number, | |
srcEnd?: number | |
): Buffer; | |
/** | |
* Performs a shallow-copy of the list. The internal Buffers remains the | |
* same, so if you change the underlying Buffers, the change will be | |
* reflected in both the original and the duplicate. | |
* | |
* This method is needed if you want to call consume() or pipe() and | |
* still keep the original list. | |
* | |
* @example | |
* | |
* ```js | |
* var bl = new BufferListStream(); | |
* bl.append('hello'); | |
* bl.append(' world'); | |
* bl.append('\n'); | |
* bl.duplicate().pipe(process.stdout, { end: false }); | |
* | |
* console.log(bl.toString()) | |
* ``` | |
*/ | |
duplicate(): this; | |
/** | |
* Will shift bytes off the start of the list. The number of bytes | |
* consumed don't need to line up with the sizes of the internal | |
* Buffers—initial offsets will be calculated accordingly in order | |
* to give you a consistent view of the data. | |
* | |
* @param bytes | |
*/ | |
consume(bytes?: number): void; | |
/** | |
* Will return a string representation of the buffer. The optional | |
* `start` and `end` arguments are passed on to `slice()`, while | |
* the encoding is passed on to `toString()` of the resulting Buffer. | |
* | |
* See the [`Buffer#toString()`](http://nodejs.org/docs/latest/api/buffer.html#buffer_buf_tostring_encoding_start_end) | |
* documentation for more information. | |
* | |
* @param encoding | |
* @param start | |
* @param end | |
*/ | |
toString(encoding?: string, start?: number, end?: number): string; | |
/** | |
* Will return the byte at the specified index. indexOf() method | |
* returns the first index at which a given element can be found | |
* in the BufferList, or -1 if it is not present. | |
* | |
* @param value | |
* @param byteOffset | |
* @param encoding | |
*/ | |
indexOf( | |
value: string | number | Uint8Array | BufferList | Buffer, | |
byteOffset?: number, | |
encoding?: string | |
): number; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readDoubleBE: Buffer['readDoubleBE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readDoubleLE: Buffer['readDoubleLE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readFloatBE: Buffer['readFloatBE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readFloatLE: Buffer['readFloatLE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readInt32BE: Buffer['readInt32BE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readInt32LE: Buffer['readInt32LE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUInt32BE: Buffer['readUInt32BE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUInt32LE: Buffer['readUInt32LE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are implemented and will operate across internal Buffer boundaries transparently. | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readInt16BE: Buffer['readInt16BE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readInt16LE: Buffer['readInt16LE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUInt16BE: Buffer['readUInt16BE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUInt16LE: Buffer['readUInt16LE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readInt8: Buffer['readInt8']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUInt8: Buffer['readUInt8']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readIntBE: Buffer['readIntBE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readIntLE: Buffer['readIntLE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUIntBE: Buffer['readUIntBE']; | |
/** | |
* All of the standard byte-reading methods of the Buffer interface are | |
* implemented and will operate across internal Buffer boundaries transparently. | |
* | |
* See the [Buffer](http://nodejs.org/docs/latest/api/buffer.html) | |
* documentation for how these work. | |
* | |
* @param offset | |
*/ | |
readUIntLE: Buffer['readUIntLE']; | |
} | |
/** | |
* No arguments are required for the constructor, but you can initialise | |
* the list by passing in a single Buffer object or an array of Buffer | |
* objects. | |
* | |
* `new` is not strictly required, if you don't instantiate a new object, | |
* it will be done automatically for you so you can create a new instance | |
* simply with: | |
* | |
* ```js | |
* const { BufferList } = require('bl') | |
* const bl = BufferList() | |
* | |
* // equivalent to: | |
* | |
* const { BufferList } = require('bl') | |
* const bl = new BufferList() | |
* ``` | |
*/ | |
declare const BufferList: BufferListConstructor; | |