/config-expander

expands configuration templates

Primary LanguageJavaScriptBSD 2-Clause "Simplified" LicenseBSD-2-Clause

npm License Typed with TypeScript bundlejs downloads GitHub Issues Build Status Styled with prettier Commitizen friendly Known Vulnerabilities Coverage Status

config-expander

Expands expressions in config files

example

file.js

import { expand } from "config-expander";

// expanding hole expressions at the value position (result key is a number)
expand({ key: "${value + 1}" }, { constants: { value: 77 } }).then(r =>
  console.log(JSON.stringify(r))
);

// calculate port numbers
expand({ constants: { base: 10000 }, http: { port: "${base + 1}" } }).then(r =>
  console.log(JSON.stringify(r))
);

// load config from file
expand("${include('tests/fixtures/other.json')}").then(r =>
  console.log(JSON.stringify(r))
);

Output

{ "key" : 78 }
{ "constants": { "base": 10000 }, "http": { "port": 10001 }}
{ "key": "value from other" }

Examples

read config file (json)

const configuration await expand("${include('" + '/path/to/the/config.json' + "')}")

load key file

{
  "ca": "${document(os.home + '/ca.pem')}"
}

calculate port numbers

{
  "http-port": "${base + 0}",
  "https-port": "${base + 1}"
}

conditions

{
  "copy-cmd": "${os.platform == 'win32' ? 'copy' : 'cp'}"
}

API

Table of Contents

defaultConstants

Predefined constants

Type: Object

Properties

  • env Object environment variables from process.env
  • os Object os module
  • basedir string filesystem configuration start point

expand

Expands expressions in a configuration object

Parameters

  • config Object config source

  • options Object the options

    • options.constants Object additional constants
    • options.default Object default configuration
    • options.functions Object additional functions

Returns Promise<Object> resolves to the expanded configuration

Context

Type: Object

Properties

Value

Type: Object

Properties

Apply

Type: Function

Parameters

ConfigFunction

Type: Object

Properties

functions

knwon functions

include

Include definition form a file.

Parameters

  • file string file name to be included

Returns string content of the file

replace

Replace string.

Parameters

Returns string replaced content

toUpperCase

Convert string into upper case.

Parameters

Returns string uppercase result

toLowerCase

Convert string into lower case.

Parameters

Returns string lowercase result

split

Split source string on pattern boundaries.

Parameters

Returns Array<string> separated source

encrypt

Encrypt a plaintext value.

Parameters

Returns string encrypted value

decrypt

Decrypt a former encrypted string.

Parameters

Returns string plaintext

spawn

Call executable.

Parameters

Returns string stdout

merge

merge from b into a When a and b are arrays of values only the none duplaces are appendend to a

Parameters

  • a any
  • b any

Returns any merged b into a

install

With npm do:

npm install config-expander

license

BSD-2-Clause