Socket
Socket
Sign inDemoInstall

@hapiness/consul

Package Overview
Dependencies
74
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @hapiness/consul

Hapiness module for consul


Version published
Weekly downloads
11
increased by37.5%
Maintainers
1
Created
Weekly downloads
 

Readme

Source
Hapiness
build coveralls dependencies devDependencies

Consul Module

Consul module for the Hapiness framework.

To get started with consul, you can begin with having a look at the consul official documentation

Table of contents

Using your module inside Hapiness application

yarn or npm it in your package.json

$ npm install --save @hapiness/core @hapiness/consul rxjs

or

$ yarn add @hapiness/core @hapiness/consul rxjs
"dependencies": {
    "@hapiness/consul": "^1.0.0",
    "@hapiness/core": "^1.5.1",
    "rxjs": "^5.5.7",
    //...
}
//...

Using Consul inside your hapiness application

Import the module

You need to include ConsulModule in the imports section of your module definition.


@HapinessModule(
    {
        version: '1.0.0',
        declarations: [/* your declarations */],
        providers: [/* your providers */],
        exports: [/* your exports */],
        imports: [ConsulModule /* other modules */]
    }
)
export class MyModule { /* ... */ }

Bootstrap the extension

You need to inject the extension in bootstrap using setConfig to instantiate the module.

The config properties allowed for the extensions are defined like this:


export interface HapinessConsulClientOptions {
    scheme?: string;
    host?: string;
    port?: string;
    defaults?: {
        consistent?: boolean;
        dc?: string;
        stale?: boolean;
        token?: string;
        wait?: string;
        wan?: boolean;
        ctx?: NodeJS.EventEmitter;
        timeout?: number;
    };
    ca?: string;
    baseUrl?: string;
}

Then just do like this:

Hapiness
    .bootstrap(
        MyModule,
        [
            ConsulExt.setConfig({
                /* Put your config here */
            })
        ])
    .catch(err => done(err));

Use the exposed service

This library is in fact a wrapper of the famous consul node library but wrap all its functions to returns rxjs Observable

You can see the doc by clicking here

We provide a wrapper called ConsulService exposing a clientgetter that will allow you to access the consul client.


class FooProvider {

    constructor(private _consul: ConsulService) {}

    bar(): Observable<string> {
        // Getting a key from the KV client of consul
    	return this._consul.client.kv.get('hello');
    }


    acquireLock(): void {
        // Create a consul lock
        const lock = this._consul.client.lock({ key: 'test' });

        // Listen to lock events
        lock.on('acquire', () => {
            console.log('lock acquired'));
            lock.release();
        });
        lock.on('release', () => console.log('lock released'));
        lock.on('error', () => console.log('lock error:', err));
        lock.on('end', (err) => console.log('lock released or there was a permanent failure'));

        // Acquire the lock
        lock.acquire();
    }

}

Back to top

Contributing

To set up your development environment:

  1. clone the repo to your workspace,
  2. in the shell cd to the main folder,
  3. hit npm or yarn install,
  4. run npm or yarn run test.
    • It will lint the code and execute all tests.
    • The test coverage report can be viewed from ./coverage/lcov-report/index.html.

Back to top

Maintainers

tadaweb
Julien FauvilleAntoine GomezSébastien RitzNicolas Jessel

Back to top

License

Copyright (c) 2018 Hapiness Licensed under the MIT license.

Back to top

Keywords

FAQs

Last updated on 09 Apr 2019

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc