Socket
Book a DemoInstallSign in
Socket

@nestcfork/config

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nestcfork/config

NestCloud is a Node.js micro-service solution, writing by Typescript language and Nest.js.

beta
latest
Source
npmnpm
Version
0.7.5
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

NestCloud - Config

NPM Version Package License NPM Downloads Travis Linux Coverage

Description

A NestCloud component for getting and watching configurations from consul kv or kubernetes configmaps.

Installation

$ npm i --save @nestcfork/config

Quick Start

Import Module

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestcfork/config';
import { BOOT, CONSUL, ETCD, KUBERNETES } from '@nestcfork/common';

@Module({
    imports: [
        // Consul
        ConfigModule.forRootAsync({ inject: [BOOT, CONSUL] }),
        // Etcd
        ConfigModule.forRootAsync({ inject: [BOOT, ETCD] }),
        // Kubernetes
        ConfigModule.forRootAsync({ inject: [BOOT, KUBERNETES] }),
    ],
})
export class AppModule {
}

Configurations

config.key is available for consul backend and etcd backend. config.key, config.namespace, config.path are only available for kubernetes configMap.

config:
  name: nestcloud-conf
  namespace: default
  path: config.yaml

Configurations In Consul KV Or Etcd

user:
  info:
    name: 'test'

Configurations In Kubernetes ConfigMap

apiVersion: v1
data:
  config.yaml: |-
    user:
      info:
        name: 'test'

kind: ConfigMap
metadata:
  name: nestcloud-conf
  namespace: default

Inject Config Client

import { Injectable,OnModuleInit } from '@nestjs/common';
import { InjectConfig, Config } from '@nestcfork/config';

@Injectable()
export class ConfigService implements OnModuleInit {
  constructor(
      @InjectConfig() private readonly config: Config
  ) {}

  onModuleInit() {
      const userInfo = this.config.get('user.info', {name: 'judi'});
      console.log(userInfo);
  }
}

Inject value

import { Injectable } from '@nestjs/common';
import { ConfigValue } from '@nestcfork/config';

@Injectable()
export class ConfigService {
  @ConfigValue('user.info', {name: 'judi'})
  private readonly userInfo;
}

API

class ConfigModule

static forRootAsync(options): DynamicModule

Register config module.

fieldtypedescription
options.injectstring[]BOOT, CONSUL, KUBERNETES
options.namestringkey of the consul kv or name of the kubernetes configMap
options.namespacestringthe kubernetes namespace
options.pathstringthe path of the kubernetes configMap

class Config

get(path?: string, defaults?: any): any

Get configuration from consul kv.

fieldtypedescription
pathstringthe path of the configuration
defaultsanydefault value if the specific configuration is not exist

getKey(): string

Get the current key.

watch(path: string, callback: (configs: any) => void): void

Watch the configurations.

fieldtypedescription
callback(configs) => voidcallback function

async set(path: string, value: any): void

Update configuration.

fieldtypedescription
pathstringthe path of the configuration
valueanythe configuration

Decorators

ConfigValue(path?: string, defaultValue?: any): PropertyDecorator

Inject configuration to attribute. It will change realtime when the value changed in consul kv.

Stay in touch

  • Author - NestCloud

License

NestCloud is MIT licensed.

FAQs

Package last updated on 21 Apr 2020

Did you know?

Socket

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