2.3.3 • Published 3 years ago

class-config v2.3.3

Weekly downloads
71
License
ISC
Repository
github
Last release
3 years ago

class-config

A module to read and validate the environment in which it's invoked. It uses class-validator and class-transformer

Example

import { IsFQDN, IsIP, IsNotEmpty, IsNumber, IsString } from 'class-validator';
import { Expose, Type } from 'class-transformer';
import { loadSync } from './dist';

// assuming there are the following values in process.env
process.env.USER = 'ADMIN';
process.env.APP_PORT = '1234';
process.env.APP_HOST = '0.0.0.0';
process.env.APP_FQDN = 'host.domain.com'

class Config {
    @IsString() //  Checks the value is a string
    @IsNotEmpty() // Not empty
    @Expose({ name: 'USER' }) // Reading it from process.env.USER property
    public user: string;

    @IsNumber() // Checks that the value is a number, or a string represented number
    @Type(() => Number)
    @Expose({ name: 'APP_PORT' }) // Reading it from process.env.APP_PORT property
    public appPort: number;

    @IsIP() // Checks that the value is an IP
    @Expose({ name: 'APP_HOST' }) // Reading it from process.env.APP_HOST
    public appHost: string;

    @IsFQDN()
    @Expose({ name: 'APP_FQDN' })
    public appFQDN: string = 'host.domain.com'; // Setting a default value
}

const config = loadSync(Config); // there is also load, which is the asynchronous version of loadSync.
console.log(config instanceof Config) //true
console.log(config.user) // 'ADMIN'
console.log(config.appPort) // 1234
console.log(config.appHost) // '0.0.0.0'
console.log(config.appFQDN) // 'localhost'

You can use any decorators from class-validator and class-transformer to enhance your config class.

2.3.3

3 years ago

2.3.2

3 years ago

2.3.1

3 years ago

2.3.0

3 years ago

2.2.0

3 years ago

2.1.4

3 years ago

2.1.3

3 years ago

2.1.2

3 years ago

2.1.1

3 years ago

2.1.0

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago