28 lines
889 B
TypeScript
28 lines
889 B
TypeScript
|
import { Buffer } from 'buffer';
|
||
|
import { BSONTypeError } from './error';
|
||
|
import { isAnyArrayBuffer } from './parser/utils';
|
||
|
|
||
|
/**
|
||
|
* Makes sure that, if a Uint8Array is passed in, it is wrapped in a Buffer.
|
||
|
*
|
||
|
* @param potentialBuffer - The potential buffer
|
||
|
* @returns Buffer the input if potentialBuffer is a buffer, or a buffer that
|
||
|
* wraps a passed in Uint8Array
|
||
|
* @throws BSONTypeError If anything other than a Buffer or Uint8Array is passed in
|
||
|
*/
|
||
|
export function ensureBuffer(potentialBuffer: Buffer | ArrayBufferView | ArrayBuffer): Buffer {
|
||
|
if (ArrayBuffer.isView(potentialBuffer)) {
|
||
|
return Buffer.from(
|
||
|
potentialBuffer.buffer,
|
||
|
potentialBuffer.byteOffset,
|
||
|
potentialBuffer.byteLength
|
||
|
);
|
||
|
}
|
||
|
|
||
|
if (isAnyArrayBuffer(potentialBuffer)) {
|
||
|
return Buffer.from(potentialBuffer);
|
||
|
}
|
||
|
|
||
|
throw new BSONTypeError('Must use either Buffer or TypedArray');
|
||
|
}
|