A grammar and stream-friendly parser for the RESP protocol.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.vscode
scripts
src
test
.babelrc
.eslintrc.json
.gitignore
.npmignore
.travis.yml
LICENSE
README.md
RELEASE-NOTES.md
index.js
package-lock.json
package.json
wallaby.js

README.md

appology / resp-parser Build Status

A grammar and stream-friendly parser for the RESP protocol.

Crafted with ♡ by Appology

Made possible by the super awesome nearley parser toolkit.

Bootstrapped with nearley-template.

Before you install...

Please keep in mind that this project is not yet battle tested.

Issues?

You can submit new issues using GitHub Issues

Install:

npm i resp-parser --save

What does it do?

Parses RESP into an Abstract Syntax Tree (AST) for further processing.

This example code:

var RespParser = require('resp-parser')

var parser = new RespParser()
// optional: call feed more than once if needed
parser.feed('*2\r\n*2\r\n:1\r\n$7\r\ntesting\r\n$7\r\ntesting\r\n')

console.log(JSON.stringify(parser.results))

Results in the following output:

{
    "type": "Array",
    "length": 2,
    "value": [{
        "type": "Array",
        "length": 2,
        "value": [{
            "type": "Integer",
            "value": 1
        }, {
            "type": "BulkString",
            "length": 7,
            "value": "testing"
        }]
    }, {
        "type": "BulkString",
        "length": 7,
        "value": "testing"
    }]
}

Included:

  • Support for the following types:
    • Integers
    • Simple Strings
    • Bulk Strings
    • Null Bulk Strings
    • Arrays (including nested arrays)
    • Null Arrays
    • Errors
    • Pipelines
  • Unit Tests

Coming soon:

  • Tools for dealing with ASTs from this parser

Check out the release notes.

RESP Protocol documentation can be found at: https://redis.io/topics/protocol