# Buffer for Array

Buffer for Array (B4A) provides a set of functions for bridging the gap between the Node.js `Buffer` class and the `Uint8Array` class. A browser compatibility layer is also included, making it possible to use B4A in both Node.js and browsers without having to worry about whether you're dealing with buffers or typed arrays.

## Installation

```sh
npm i b4a
```

### React Native

When imported from React Native `b4a` will make use of `react-native-b4a` for optimised buffer operations when available. All you need to do is install it:

```sh
npm i react-native-b4a
```

## API

#### `b4a.isBuffer(value)`

See https://nodejs.org/api/buffer.html#static-method-bufferisbufferobj

This will also return `true` when passed a `Uint8Array`.

#### `b4a.isEncoding(encoding)`

See https://nodejs.org/api/buffer.html#static-method-bufferisencodingencoding

#### `b4a.alloc(size[, fill[, encoding]])`

See https://nodejs.org/api/buffer.html#static-method-bufferallocsize-fill-encoding

#### `b4a.allocUnsafe(size)`

See https://nodejs.org/api/buffer.html#static-method-bufferallocunsafesize

#### `b4a.allocUnsafeSlow(size)`

See https://nodejs.org/api/buffer.html#static-method-bufferallocunsafeslowsize

#### `b4a.byteLength(string)`

See https://nodejs.org/api/buffer.html#static-method-bufferbytelengthstring-encoding

#### `b4a.compare(buf1, buf2)`

See https://nodejs.org/api/buffer.html#static-method-buffercomparebuf1-buf2

#### `b4a.concat(buffers[, totalLength])`

See https://nodejs.org/api/buffer.html#static-method-bufferconcatlist-totallength

#### `b4a.copy(source, target[, targetStart[, sourceStart[, sourceEnd]]])`

See https://nodejs.org/api/buffer.html#bufcopytarget-targetstart-sourcestart-sourceend

#### `b4a.equals(buf1, buf2)`

See https://nodejs.org/api/buffer.html#bufequalsotherbuffer

#### `b4a.fill(buffer, value[, offset[, end]][, encoding])`

See https://nodejs.org/api/buffer.html#buffillvalue-offset-end-encoding

#### `b4a.from(array)`

See https://nodejs.org/api/buffer.html#static-method-bufferfromarray

#### `b4a.from(arrayBuffer[, byteOffset[, length]])`

See https://nodejs.org/api/buffer.html#static-method-bufferfromarraybuffer-byteoffset-length

#### `b4a.from(buffer)`

See https://nodejs.org/api/buffer.html#static-method-bufferfrombuffer

#### `b4a.from(string[, encoding])`

See https://nodejs.org/api/buffer.html#static-method-bufferfromstring-encoding

#### `b4a.includes(buffer, value[, byteOffset][, encoding])`

See https://nodejs.org/api/buffer.html#bufincludesvalue-byteoffset-encoding

#### `b4a.indexOf(buffer, value[, byteOffset][, encoding])`

See https://nodejs.org/api/buffer.html#bufindexofvalue-byteoffset-encoding

#### `b4a.lastIndexOf(buffer, value[, byteOffset][, encoding])`

See https://nodejs.org/api/buffer.html#buflastindexofvalue-byteoffset-encoding

#### `b4a.swap16(buffer)`

See https://nodejs.org/api/buffer.html#bufswap16

#### `b4a.swap32(buffer)`

See https://nodejs.org/api/buffer.html#bufswap32

#### `b4a.swap64(buffer)`

See https://nodejs.org/api/buffer.html#bufswap64

#### `b4a.toBuffer(buffer)`

Convert a buffer to its canonical representation. In Node.js, the canonical representation is a `Buffer`. In the browser, the canonical representation is a `Uint8Array`.

#### `b4a.toString(buffer, [encoding[, start[, end]]])`

See https://nodejs.org/api/buffer.html#buftostringencoding-start-end

#### `b4a.write(buffer, string[, offset[, length]][, encoding])`

See https://nodejs.org/api/buffer.html#bufwritestring-offset-length-encoding

#### `b4a.writeDoubleLE(buffer, value[, offset])`

See https://nodejs.org/api/buffer.html#bufwritedoublelevalue-offset

#### `b4a.writeFloatLE(buffer, value[, offset])`

See https://nodejs.org/api/buffer.html#bufwritefloatlevalue-offset

#### `b4a.writeUInt32LE(buffer, value[, offset])`

https://nodejs.org/api/buffer.html#bufwriteuint32levalue-offset

#### `b4a.writeInt32LE(buffer, value[, offset])`

See https://nodejs.org/api/buffer.html#bufwriteint32levalue-offset

#### `b4a.readDoubleLE(buffer[, offset])`

See https://nodejs.org/api/buffer.html#bufreaddoubleleoffset

#### `b4a.readFloatLE(buffer[, offset])`

See https://nodejs.org/api/buffer.html#bufreadfloatleoffset

#### `b4a.readUInt32LE(buffer[, offset])`

See https://nodejs.org/api/buffer.html#bufreaduint32leoffset

#### `b4a.readInt32LE(buffer[, offset])`

See https://nodejs.org/api/buffer.html#bufreadint32leoffset

## License

Apache 2.0
