Node.js Buffer should be useable as a Uint8Array and is missing a constructor (#8919)

* make NodeBuffer extend Uint8Array

* add missing Buffer(ArrayBuffer) constructor

* add TODOs for missing Buffer methods
This commit is contained in:
trevj 2016-04-12 10:20:33 -04:00 committed by Masahiro Wakame
parent 94ce78cb01
commit 484e00f72f
2 changed files with 21 additions and 3 deletions

View File

@ -138,6 +138,7 @@ function bufferTests() {
var base64Buffer = new Buffer('','base64');
var octets: Uint8Array = null;
var octetBuffer = new Buffer(octets);
var sharedBuffer = new Buffer(octets.buffer);
var copiedBuffer = new Buffer(utf8Buffer);
console.log(Buffer.isBuffer(octetBuffer));
console.log(Buffer.isEncoding('utf8'));
@ -181,6 +182,12 @@ function bufferTests() {
let sb = new ImportedSlowBuffer(43);
b.writeUInt8(0, 6);
}
// Buffer has Uint8Array's buffer field (an ArrayBuffer).
{
let buffer = new Buffer('123');
let octets = new Uint8Array(buffer.buffer);
}
}

17
node/node.d.ts vendored
View File

@ -108,6 +108,14 @@ declare var Buffer: {
* @param array The octets to store.
*/
new (array: Uint8Array): Buffer;
/**
* Produces a Buffer backed by the same allocated memory as
* the given {ArrayBuffer}.
*
*
* @param arrayBuffer The ArrayBuffer with which to share memory.
*/
new (arrayBuffer: ArrayBuffer): Buffer;
/**
* Allocates a new buffer containing the given {array} of octets.
*
@ -382,12 +390,10 @@ declare namespace NodeJS {
/**
* @deprecated
*/
interface NodeBuffer {
[index: number]: number;
interface NodeBuffer extends Uint8Array {
write(string: string, offset?: number, length?: number, encoding?: string): number;
toString(encoding?: string, start?: number, end?: number): string;
toJSON(): any;
length: number;
equals(otherBuffer: Buffer): boolean;
compare(otherBuffer: Buffer): number;
copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
@ -429,7 +435,12 @@ interface NodeBuffer {
writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
fill(value: any, offset?: number, end?: number): Buffer;
// TODO: encoding param
indexOf(value: string | number | Buffer, byteOffset?: number): number;
// TODO: entries
// TODO: includes
// TODO: keys
// TODO: values
}
/************************************************