# buffercursor

> A simple way to traverse a Buffer like a cursor, updating position along the way

Latest version **0.0.12** (published 2014-04-21) · 0 weekly downloads

## Install

```sh
npm install buffercursor
pnpm add buffercursor
yarn add buffercursor
bun add buffercursor
```

## Health

**Score 28/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 0.0.12 |
| Published | 2014-04-21 |
| First published | 2012-07-01 |
| Weekly downloads | 0 |
| TypeScript types | separate (@types/buffercursor) |
| Module format | CommonJS |
| Node | >= 0.5.0 |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 20 |
| Author | Timothy J Fontaine |
| Maintainers | tjfontaine |
| Keywords | buffer, cursor, stream |

## Links

- npm: https://www.npmjs.com/package/buffercursor
- Repository: http://github.com/tjfontaine/node-buffercursor
- Issues: http://github.com/tjfontaine/node-buffercursor/issues
- npm.io page: https://npm.io/package/buffercursor

## Dependencies (1)

- [verror](https://npm.io/package/verror.md) ^1.4.0

## Alternatives

- [flatbuffers](https://npm.io/package/flatbuffers.md) — 6.0M weekly downloads
- [jwt-simple](https://npm.io/package/jwt-simple.md) — 259.5K weekly downloads
- [@exodus/patch-broken-hermes-typed-arrays](https://npm.io/package/@exodus/patch-broken-hermes-typed-arrays.md) — 28.5K weekly downloads
- [@native-to-anchor/buffer-layout](https://npm.io/package/@native-to-anchor/buffer-layout.md) — 12.2K weekly downloads
- [binary-parser-encoder](https://npm.io/package/binary-parser-encoder.md) — 5.3K weekly downloads

## Recent versions

- 0.0.12 (latest) — 2014-04-21
- 0.0.11 — 2014-04-20
- 0.0.10 — 2014-04-20
- 0.0.9 — 2014-02-19
- 0.0.8 — 2013-05-31
- 0.0.7 — 2013-05-20
- 0.0.6 — 2013-03-23
- 0.0.5 — 2012-12-24
- 0.0.4 — 2012-08-26
- 0.0.3 — 2012-07-02
- 0.0.2 — 2012-07-02
- 0.0.1 — 2012-07-01

## README

BufferCursor
============

This is a simple module that allows you to traverse a Buffer iteratively. You
can read and write different types and the cursor's position will update with
the proper size, which you can see through `.tell()` you can also
`.seek()`

```javascript
var bc = new BufferCursor(buffer);
bc.readUInt16BE();
bc.readUInt8();
bc.readUInt32BE();
console.log(bc.tell());
```

Will output `7`

Methods
-------

For the most part `BufferCursor` and `Buffer` share the same methods, there's
just a slight alteration in method signature, none of the methods take an
offset.

So `.readUInt16LE(10)` in `Buffer` is equivalent to `bs.seek(10); bs.readUInt16LE();`

All `read[U]Int` and `write[U]Int` methods are reproduced, as are `toString`,
`write`, `fill`, and `slice`. All of these methods will move the cursor through
the stream and do not take an offset parameter, where an `end` parameter would
normaly be used, here you supply a `length`.

The following are additional methods:

 * `seek(value)` -- Seek to an arbitrary position in the stream
 * `tell()` -- Return the current location in the stream
 * `eof()` -- Return true if at the end of the stream
 * `toByteArray([method])` -- This is a special helper method which will return
the *entire* stream (i.e. from the start) as an array of numbers.
  - By default it will use `readUInt8` but you can pass in any
`read[U]Int[8,16,32][LE,BE]` to change what the array is made of

Properties
----------

 * `.buffer` -- Access to the raw buffer
 * `.length` -- The size of the buffer

---
_Source: https://npm.io/package/buffercursor · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
