Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hapinessjs/consul-module
Consul client integration for Hapiness framework
https://github.com/hapinessjs/consul-module
Last synced: 7 days ago
JSON representation
Consul client integration for Hapiness framework
- Host: GitHub
- URL: https://github.com/hapinessjs/consul-module
- Owner: hapinessjs
- License: mit
- Created: 2018-04-05T09:28:55.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-04-09T12:47:38.000Z (over 5 years ago)
- Last Synced: 2024-12-08T09:08:41.911Z (30 days ago)
- Language: TypeScript
- Size: 45.9 KB
- Stars: 0
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# 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](https://www.consul.io/)
## Table of contents
* [Using your module inside Hapiness application](#using-your-module-inside-hapiness-application)
* [`yarn` or `npm` it in your `package.json`](#yarn-or-npm-it-in-your-package.json)
* [Using `Consul` inside your hapiness application](#using-consul-inside-your-hapiness-application)
* [Import the module](#import-the-module)
* [Bootstrap the extension](#bootstrap-the-extension)
* [Use the exposed service](#use-the-exposed-service)
* [Contributing](#contributing)
* [Maintainers](#maintainers)
* [License](#license)## Using your module inside Hapiness application
### `yarn` or `npm` it in your `package.json`
```bash
$ npm install --save @hapiness/core @hapiness/consul rxjsor
$ yarn add @hapiness/core @hapiness/consul rxjs
``````javascript
"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.
```typescript
@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:
```typescript
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:
```typescript
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](https://www.npmjs.com/package/consul)
We provide a wrapper called ```ConsulService``` exposing a ```client```getter that will allow you to access the consul client.
```typescript
class FooProvider {
constructor(private _consul: ConsulService) {}
bar(): Observable {
// 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](#table-of-contents)
## 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](#table-of-contents)
## Maintainers
Julien Fauville
Antoine Gomez
Sébastien Ritz
Nicolas Jessel
[Back to top](#table-of-contents)
## License
Copyright (c) 2018 **Hapiness** Licensed under the [MIT license](https://github.com/hapinessjs/consul-module/blob/master/LICENSE.md).
[Back to top](#table-of-contents)