0.0.6 • Published 9 months ago

pip-services4-config-node v0.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Config Components for Node.js / ES2017

This module is a part of the Pip.Services polyglot microservices toolkit.

The Config module contains configuration component definitions that can be used to build applications and services.

The module contains the following packages:

  • Auth - authentication credential stores
  • Config - configuration readers and managers, whose main task is to deliver configuration parameters to the application from wherever they are being stored
  • Connect - connection discovery and configuration services

Quick links:

Use

Install the NPM package as

npm install pip-services4-config-node --save

Example how to get connection parameters and credentials using resolvers. The resolvers support "discovery_key" and "store_key" configuration parameters to retrieve configuration from discovery services and credential stores respectively.

import { ConfigParams } from 'pip-services4-commons-node'; 
import { IConfigurable } from 'pip-services4-commons-node'; 
import { IReferences } from 'pip-services4-commons-node'; 
import { IReferenceable } from 'pip-services4-commons-node'; 
import { IOpenable } from 'pip-services4-commons-node'; 
import { ConnectionParams } from 'pip-services4-config-node'; 
import { ConnectionResolver } from 'pip-services4-config-node'; 
import { CredentialParams } from 'pip-services4-config-node'; 
import { CredentialResolver } from 'pip-services4-config-node'; 

export class MyComponent implements IConfigurable, IReferenceable, IOpenable {
  private _connectionResolver: ConnectionResolver = new ConnectionResolver();
  private _credentialResolver: CredentialResolver = new CredentialResolver();
  
  public configure(config: ConfigParams): void {
    this._connectionResolver.configure(config);
    this._credentialResolver.configure(config);
  }
  
  public setReferences(refs: IReferences): void {
    this._connectionResolver.setReferences(refs);
    this._credentialResolver.setReferences(refs);
  }
  
  ...
  
  public async open(context: IContext): Promise<void> {
    let connection = await this._connectionResolver.resolve(context);
    let credential = await this._credentialResolver.lookup(context);

    let host = connection.getHost();
    let port = connection.getPort();
    let user = credential.getUsername();
    let pass = credential.getPassword();
  }
}

// Using the component
let myComponent = new MyComponent();

myComponent.configure(ConfigParams.fromTuples(
  'connection.host', 'localhost',
  'connection.port', 1234,
  'credential.username', 'anonymous',
  'credential.password', 'pass123'
));

await myComponent.open(null);

Develop

For development you shall install the following prerequisites:

  • Node.js 14+
  • Visual Studio Code or another IDE of your choice
  • Docker
  • Typescript

Install dependencies:

npm install

Compile the code:

tsc

Run automated tests:

npm test

Generate API documentation:

./docgen.ps1

Before committing changes run dockerized build and test as:

./build.ps1
./test.ps1
./clear.ps1

Contacts

The library is created and maintained by Sergey Seroukhov and Danil Prisyazhniy.

The documentation is written by Mark Makarychev and Eugenio Andrieu.