0.8.5 • Published 2 years ago

@nestcloud2/config v0.8.5

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

NestCloud - Config

Description

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

Installation

$ npm i --save @nestcloud2/config

Quick Start

Import Module

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestcloud2/config';
import { BOOT, CONSUL, ETCD, KUBERNETES } from '@nestcloud2/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 '@nestcloud2/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 '@nestcloud2/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

License

NestCloud is MIT licensed.

0.9.1

2 years ago

0.9.1-rc.0

2 years ago

0.8.5

2 years ago

0.9.0

2 years ago

0.8.4

2 years ago

0.8.3

2 years ago

0.8.0

2 years ago

0.7.21

2 years ago

0.7.20

2 years ago