1.1.1 • Published 3 years ago

@umbrellio/cofman v1.1.1

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

Cofman

Coverage Status Build Status

Node.js configuration engine

const { Cofman, FileSource, EnvSourc, ObjectSource } = require("@umbrellio/cofman")

const instance = new Cofman()

instance.use(new FileSource({ path: "/path/to/file.yml" }))
instance.use(new FileSource({ path: "/path/to/file.json" }))
instance.use(new ObjectSource({ custom: "value" }))
instance.use(new EnvSource({ prefix: "APP" }))

const config = instance.parse()

config.get("database.url")

Install

$ yarn add @umbrellio/cofman

Usage

const instance = new Cofman()

Methods

  • .use(source) – setup a config source (see sources docs)
  • .parse() – parse sources and return Config object

Config object

Methods

  • .get(key: string, default: any) – returns a value by corresponding key or default value

    key can be nested by using . . For example – database.password

  • .asObject() – returns config as a plain object

Sources

Cofman supports multiple sources for getting values in different ways.

EnvSource

Get values from env variables. All keys becomes camelCase.

new EnvSource(options)

Options

  • prefix: string (optional, default: "") – prefix for filtering env vars eg. if prefix: "APP" cofman will only get vars starts with APP_ (APP_DATABASE_URL, APP_NAME, etc.)
  • tryParse: boolean (optional, default: true) – try to parse value as a json
  • nestingDelitemer: string (optional, default: __) – delimeter for getting nesting values eg. SOME__NESTING_VALUE=1 becomes some: { nestingValue: 1 }

FileSource

Reads config from json and yaml files.

new FileSource(options)

Options

  • path: string (required) – path to config file
  • parser: Parser (optional, determinites by file extension) – parser to use for this file content
  • failMissing: boolean (optional, default: false) – fail when file missing or not

You can use custom file parsers using following interface:

interface Parser {
  extensions: string[] // supported file extensions

  parse(content: string): Object // takes file content and returns parsed object
}

ObjectSource

Just your custom object

new ObjectSource(object)

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/cofman.

License

Released under MIT License.

Authors

Created by Aleksei Bespalov.