Newly Potted Mandrakes

    node-amqp-encoder

    0.0.2 • Public • Published

    node-amqp-encoder

    Build Status Dependency Status

    Helper classes for specifying a simple mechanism to encode data into AMQP format, and a simple encoder.

    Motivation

    AMQP 1.0 defines several custom types (see spec), some of which are used by AMQP clients to communicate with servers (and vice-versa) and influence their processing - so i.e. not just for message transfer. One instance of these is Azure's EventHub, which uses the Attach frame's Filter-set to communicate where to pick up from last time, using a combination of symbols and described types. This package defines a common pattern for defining these types in a simple way, without introducing custom Javascript objects (so easily JSON-able), and provides a simple builder and processor.

    Details

    The rough outline of the syntax is:

    [ 'type', value ]
    

    Where the following types are available:

    • byte, short, int, long, ubyte, ushort, uint, ulong
    • float, double
    • boolean
    • string, symbol
    • null (note: no val needed here)
    • binary (note: value should be a Node.js Buffer)

    And a few composite types as well:

    • list, map - Encoded as: [ 'list', val1, val2, ... ]
    • described - Encoded as: [ 'described', descriptor, value ]
    • array - Encoded as: [ 'array', type, val1, val2, ... ]

    A few primitive types (strings, nulls, booleans) can be inferred, so you don't necessarily need to encode them. See examples below.

    Examples

    Simple Types

    [ 'uint', 123 ]
    [ 'boolean', x !== 3 ]
    [ 'symbol', 'My Symbol' ]
    

    Composite Types

    [ 'map', [ 'symbol', 'Key 1' ], [ 'ulong', 1 ], [ 'symbol', 'Key 2' ], [ 'boolean', false ] ]
    [ 'described', [ 'ulong', 0x12 ], [ 'list', [ 'uint', 1 ], ... ] ]
    [ 'array', 'symbol', 'en-US', 'es-US' ]
    

    Inferred Primitive Types

    [ 'list', 'My name', false, null, true, [ 'uint', 1 ] ]
    

    Install

    npm i node-amqp-encoder

    DownloadsWeekly Downloads

    164

    Version

    0.0.2

    License

    none

    Last publish

    Collaborators

    • amarzavery
    • princjef
    • pierreca
    • noodlefrenzy