diff --git a/types/bl/BufferList.d.ts b/types/bl/BufferList.d.ts new file mode 100644 index 00000000000000..7c6fc050596bee --- /dev/null +++ b/types/bl/BufferList.d.ts @@ -0,0 +1,38 @@ +/// + +declare class BufferList { + constructor(initialData?: Buffer | Buffer[] | BufferList | BufferList[] | string); + + length: number; + append(buffer: Buffer | Buffer[] | BufferList | BufferList[] | string): BufferList; + get(index: number): number; + slice(start?: number, end?: number): Buffer; + shallowSlice(start?: number, end?: number): BufferList; + copy(dest: Buffer, destStart?: number, srcStart?: number, srcEnd?: number): Buffer; + duplicate(): BufferList; + consume(bytes?: number): void; + toString(encoding?: string, start?: number, end?: number): string; + indexOf(value: string | number | Uint8Array | BufferList | Buffer, byteOffset?: number, encoding?: string): number; + readDoubleBE(offset?: number): number; + readDoubleLE(offset?: number): number; + readFloatBE(offset?: number): number; + readFloatLE(offset?: number): number; + readInt32BE(offset?: number): number; + readInt32LE(offset?: number): number; + readUInt32BE(offset?: number): number; + readUInt32LE(offset?: number): number; + readInt16BE(offset?: number): number; + readInt16LE(offset?: number): number; + readUInt16BE(offset?: number): number; + readUInt16LE(offset?: number): number; + readInt8(offset: number): number; + readUInt8(offset: number): number; + readIntBE(offset: number): number; + readIntLE(offset: number): number; + readUIntBE(offset: number): number; + readUIntLE(offset: number): number; + + static isBufferList(other: any): boolean; +} + +export = BufferList; diff --git a/types/bl/bl-tests.ts b/types/bl/bl-tests.ts index 648f7b711ab34b..800fe8666f206d 100644 --- a/types/bl/bl-tests.ts +++ b/types/bl/bl-tests.ts @@ -1,73 +1,110 @@ -import BufferList = require('bl'); +import BufferListStream = require("bl"); +import BufferList = require("bl/BufferList"); -var bl: BufferList; +var bls: BufferListStream; var buffer: Buffer; var offset: number; var num: number; var str: string; -bl = new BufferList(); -bl = new BufferList(bl); -bl = new BufferList([bl]); -bl = new BufferList(Buffer.from('asdf')); -bl = new BufferList([Buffer.from('asdf')]); -bl = new BufferList('hi'); +BufferListStream.isBufferList({}); + +// has Duplex methods +bls.pause(); +bls.resume(); + +var bl = new BufferList(); + +// is assignable +bl = bls.duplicate(); + +// is not assignable as it lacks the Duplex methods +var bls2: BufferListStream; +bls2 = bl; // $ExpectError + +// does not have Duplex methods +bl.pause(); // $ExpectError +bl.resume(); // $ExpectError bl.append(buffer); -num = bl.length; - -num = bl.get(num); - -buffer = bl.slice(num, num); -buffer = bl.slice(num); -buffer = bl.slice(); -bl.shallowSlice(0, 1).shallowSlice(); - -bl.copy(buffer, num, num, num); -bl.copy(buffer, num, num); -bl.copy(buffer, num); -bl.copy(buffer); - -bl = bl.duplicate(); - -bl.consume(); -bl.consume(num); - -str = bl.toString(str, num, num); -str = bl.toString(str, num); -str = bl.toString(str); -str = bl.toString(); -bl.indexOf('foo', 0, 'hex') === 1; -bl.indexOf(Buffer.from('foo')) === 1; -bl.indexOf(4) === 1; -bl.indexOf(bl) === 1; -bl.indexOf(new Uint8Array([1, 3, 4])) === 2; - -num = bl.readDoubleBE(offset); -num = bl.readDoubleBE(offset); -num = bl.readDoubleLE(offset); -num = bl.readDoubleLE(offset); -num = bl.readFloatBE(offset); -num = bl.readFloatBE(offset); -num = bl.readFloatLE(offset); -num = bl.readFloatLE(offset); -num = bl.readInt32BE(offset); -num = bl.readInt32BE(offset); -num = bl.readInt32LE(offset); -num = bl.readInt32LE(offset); -num = bl.readUInt32BE(offset); -num = bl.readUInt32BE(offset); -num = bl.readUInt32LE(offset); -num = bl.readUInt32LE(offset); -num = bl.readInt16BE(offset); -num = bl.readInt16BE(offset); -num = bl.readInt16LE(offset); -num = bl.readInt16LE(offset); -num = bl.readUInt16BE(offset); -num = bl.readUInt16BE(offset); -num = bl.readUInt16LE(offset); -num = bl.readUInt16LE(offset); -num = bl.readInt8(offset); -num = bl.readInt8(offset); -num = bl.readUInt8(offset); -num = bl.readUInt8(offset); +bl.append(bl); +bl.append(bls); + +bls = new BufferListStream(); +bls = new BufferListStream(bls); +bls = new BufferListStream([bls]); +bls = new BufferListStream(Buffer.from("asdf")); +bls = new BufferListStream([Buffer.from("asdf")]); +bls = new BufferListStream("hi"); + +bls.append(buffer); +bls.append(bl); +bls.append(bls); +num = bls.length; + +num = bls.get(num); + +buffer = bls.slice(num, num); +buffer = bls.slice(num); +buffer = bls.slice(); +bls.shallowSlice(0, 1).shallowSlice(); + +bls.copy(buffer, num, num, num); +bls.copy(buffer, num, num); +bls.copy(buffer, num); +bls.copy(buffer); + +bls = bls.duplicate(); + +bls.consume(); +bls.consume(num); + +str = bls.toString(str, num, num); +str = bls.toString(str, num); +str = bls.toString(str); +str = bls.toString(); +bls.indexOf("foo", 0, "hex") === 1; +bls.indexOf(Buffer.from("foo")) === 1; +bls.indexOf(4) === 1; +bls.indexOf(bls) === 1; +bls.indexOf(new Uint8Array([1, 3, 4])) === 2; +bls.indexOf(bl) === 0; +bl.indexOf(bls) === 0; + +num = bls.readDoubleBE(offset); +num = bls.readDoubleBE(offset); +num = bls.readDoubleLE(offset); +num = bls.readDoubleLE(offset); +num = bls.readFloatBE(offset); +num = bls.readFloatBE(offset); +num = bls.readFloatLE(offset); +num = bls.readFloatLE(offset); +num = bls.readInt32BE(offset); +num = bls.readInt32BE(offset); +num = bls.readInt32LE(offset); +num = bls.readInt32LE(offset); +num = bls.readUInt32BE(offset); +num = bls.readUInt32BE(offset); +num = bls.readUInt32LE(offset); +num = bls.readUInt32LE(offset); +num = bls.readInt16BE(offset); +num = bls.readInt16BE(offset); +num = bls.readInt16LE(offset); +num = bls.readInt16LE(offset); +num = bls.readUInt16BE(offset); +num = bls.readUInt16BE(offset); +num = bls.readUInt16LE(offset); +num = bls.readUInt16LE(offset); +num = bls.readInt8(offset); +num = bls.readInt8(offset); +num = bls.readUInt8(offset); +num = bls.readUInt8(offset); +num = bls.readIntBE(offset); +num = bls.readIntLE(offset); +num = bls.readUIntBE(offset); +num = bls.readUIntLE(offset); + +BufferListStream.isBufferList(bls); // $ExpectTrue +BufferListStream.isBufferList({}); // $ExpectFalse +BufferList.isBufferList(bl); // $ExpectTrue +BufferList.isBufferList({}); // $ExpectFalse diff --git a/types/bl/index.d.ts b/types/bl/index.d.ts index 6ae80ffff061bd..4e1bf116f6fd36 100644 --- a/types/bl/index.d.ts +++ b/types/bl/index.d.ts @@ -1,38 +1,23 @@ -// Type definitions for BufferList v4.1 +// Type definitions for BufferList v5.0 // Project: https://github.com/rvagg/bl // Definitions by: Bart van der Schoor // Francis Gulotta // Ben Allfree +// Alex Potsides // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// -declare class BufferList { - constructor(initialData?: Buffer | Buffer[] | BufferList | BufferList[] | string); +import BufferList = require("./BufferList"); +import { Duplex } from "readable-stream"; + +interface BufferListStream extends Duplex, BufferList {} - length: number; - append(buffer: Buffer | Buffer[] | BufferList | BufferList[] | string): BufferList; - get(index: number): number; - slice(start?: number, end?: number): Buffer; - shallowSlice(start?: number, end?: number): BufferList; - copy(dest: Buffer, destStart?: number, srcStart?: number, srcEnd?: number): Buffer; - duplicate(): BufferList; - consume(bytes?: number): void; - toString(encoding?: string, start?: number, end?: number): string; - indexOf(value: string | number | Uint8Array | BufferList | Buffer, byteOffset?: number, encoding?: string): number; - readDoubleBE(offset?: number): number; - readDoubleLE(offset?: number): number; - readFloatBE(offset?: number): number; - readFloatLE(offset?: number): number; - readInt32BE(offset?: number): number; - readInt32LE(offset?: number): number; - readUInt32BE(offset?: number): number; - readUInt32LE(offset?: number): number; - readInt16BE(offset?: number): number; - readInt16LE(offset?: number): number; - readUInt16BE(offset?: number): number; - readUInt16LE(offset?: number): number; - readInt8(offset: number): number; - readUInt8(offset: number): number; +declare class BufferListStream { + constructor(initialData?: Buffer | Buffer[] | BufferList | BufferList[] | string); + static isBufferList: (other: any) => boolean; + duplicate: () => BufferListStream; + shallowSlice(start?: number, end?: number): BufferListStream; } -export = BufferList; + +export = BufferListStream;