New Prague, Minnesota

    @grimen/connection-uri

    0.1.1 • Public • Published

    js-connection-uri NPM version Build Status Coverage Status

    A robust connection URI parser/stringifier - for JavaScript/Node.

    Introduction

    This connection URI library was implemented in lack of robust JavaScript/Node.js alternatives. This one supports absolute/relative multi-host connection URIs with smart fallbacks.

    Install

    Install using npm:

    $ npm install @grimen/connection-uri

    Install using yarn:

    $ yarn add @grimen/connection-uri

    Use

    Very basic example:

    const connectionURI = require('@grimen/connection-uri')
    
    basicConnectionURI = 'localhost:3000/namespace/foo/'
    basicConnectionOptions = connectionURI.unpack(basicConnectionURI)
    
    console.log(`\n\`connectionURI.unpack("${basicConnectionURI}")\`\n\nRESULT:`, basicConnectionOptions, '\n')
    //
    // {
    //     'protocol': 'http',
    //     'auth': None,
    //
    //     'endpoint': 'localhost:3000',
    //     'endpoints': ['localhost:3000'],
    //
    //     'host': 'localhost',
    //     'hosts': ['localhost'],
    //
    //     'port': 3000,
    //     'ports': [3000],
    //
    //     'path': '/namespace/foo/',
    //     'query': {},
    //
    //     'credentials': {
    //         'username': None,
    //         'password': None,
    //     },
    //     'key': 'namespace/foo',
    //     'namespace': 'namespace/foo',
    //
    //     'url': 'http://localhost:3000/namespace/foo/',
    //     'urls': [
    //         'http://localhost:3000/namespace/foo/'
    //     ],
    // }
    //
    
    basicConnectionURI = connectionURI.pack(basicConnectionOptions)
    
    console.log(`\n\`connectionURI.pack(${JSON.stringify(basicConnectionOptions)})\`\n\nRESULT:`, JSON.stringify(basicConnectionURI), '\n')
    //
    // 'http://localhost:3000/namespace/foo/'
    //
    
    complexMultihostURI = 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz'
    complexMultihostOptions = connectionURI.unpack(complexMultihostURI)
    
    console.log(`\n\`connectionURI.unpack("${complexMultihostURI}")\`\n\nRESULT:`, complexMultihostOptions, '\n')
    //
    // {
    //     'protocol': 'foo',
    //     'auth': 'm+4.gTe~5e^(:m+4.gTe~5e^(',
    //
    //     'host': 'ds143144-a0.mlab.com',
    //     'port': 43144,
    //
    //     'endpoint': 'ds143144-a0.mlab.com:43144',
    //     'endpoints': ['ds143144-a0.mlab.com:43144', 'ds143144-a1.mlab.com:43145'],
    //
    //     'host': 'ds143144-a0.mlab.com',
    //     'hosts': ['ds143144-a0.mlab.com', 'ds143144-a1.mlab.com'],
    //
    //     'port': 43144,
    //     'ports': [43144, 43145],
    //
    //     'path': '/bar-baz',
    //     'query': {},
    //
    //     'credentials': {
    //         'username': 'm+4.gTe~5e^(',
    //         'password': 'm+4.gTe~5e^(',
    //     },
    //     'key': 'bar-baz',
    //     'namespace': 'bar-baz',
    //
    //     'url': 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz',
    //     'urls': [
    //         'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144/bar-baz',
    //         'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a1.mlab.com:43145/bar-baz'
    //     ],
    // }
    //
    
    complexMultihostURI = connectionURI.pack(complexMultihostOptions)
    
    console.log(`\n\`connectionURI.pack(${JSON.stringify(complexMultihostOptions)})\`\n\nRESULT:`, JSON.stringify(complexMultihostURI), '\n')
    //
    // 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz'
    //
    
    // NOTE: see tests for more advanced examples, e.g. the library handles absolute and relative URIs, etc.

    Test

    Clone down source code:

    $ make install

    Run colorful tests using jest:

    $ make test

    Related

    About

    This project was mainly initiated - in lack of solid existing alternatives - to be used at our work at Markable.ai to have common code conventions between various programming environments where Node.js (for I/O heavy operations) is heavily used.

    License

    Released under the MIT license.

    Install

    npm i @grimen/connection-uri

    DownloadsWeekly Downloads

    11

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    120 kB

    Total Files

    17

    Last publish

    Collaborators

    • grimen