An open API service indexing awesome lists of open source software.

https://github.com/coursedesign/conev-core

Conev is a module that build environment variables from a source into config.
https://github.com/coursedesign/conev-core

conenv configuration environment npm npm-package

Last synced: 2 months ago
JSON representation

Conev is a module that build environment variables from a source into config.

Awesome Lists containing this project

README

          

# conev-core

Conev is a module that build environment variables from a `source` into `config`. Storing configuration in the environment separate from code is based on [The Twelve-Factor App](http://12factor.net/config) methodology.

![](https://img.shields.io/npm/dm/conev-core.png?style=flat-square)

## Install

```shell
# with npm
npm install conev-core

# or with Yarn
yarn add conev-core
```

## Config Builder

```typescript
class ConfigBuilder {
setEnv(...env: string[]): ConfigBuilder;
addEnv(...env: string[]): ConfigBuilder;
addSource(source: Source, priority?: number): ConfigBuilder;

build(): Config;
}
```

`ConfigBuilder` takes a configuration from the source and creates a new configuration according to the environment. `Env` and `Source` have priority. If priority is not defined, highest priority is added first.

## Config

```typescript
class Config {
constructor(sources: Source[], env: string[]);

setEnv(...env: string[]): Config;
addEnv(...env: string[]): Config;
addSource(source: Source, priority?: number): Config;

refresh(): Promise;
validate(): void;

get(key?: string): any | null;
set(key: string, value: any): void;
}
```

`config` is a container for configuration. `config` is provided by creating a new configuration from the configuration and environment obtained from ` source`.

## Source

```typescript
interface Source {
export(): Promise>;
}
```

`Source` defines the source from which to get the configuration. Map is returned as the result value of `export`. The key of this map is environment and the value is the configuration when environment.

## Expansion

It can be extended by defining a new `Source`.