# context-config

> context-config-node ===================

Latest version **0.3.10** (published 2014-08-21) · 0 weekly downloads

## Install

```sh
npm install context-config
pnpm add context-config
yarn add context-config
bun add context-config
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.3.10 |
| Published | 2014-08-21 |
| First published | 2013-05-20 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.8.0 |
| Dependencies | 3 |
| Known vulnerabilities | 0 (+2 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | cubejs |
| Maintainers | inexplicable, ebay_cubejs, dimichgh |

## Links

- npm: https://www.npmjs.com/package/context-config
- Repository: git@github.com:cubejs/context-config-node
- Homepage: https://github.com/cubejs/context-config-node
- Issues: https://github.com/cubejs/context-config-node/issues
- npm.io page: https://npm.io/package/context-config

## Dependencies (3)

- [q](https://npm.io/package/q.md) ~0.9.0
- [config](https://npm.io/package/config.md) ~0.4.21
- [underscore](https://npm.io/package/underscore.md) ~1.6

## Recent versions

- 0.3.10 (latest) — 2014-08-21
- 0.5.0-SNAPSHOT.1387320944870 (v0_5_0-SNAPSHOT) — 2013-12-17
- 0.4.0-SNAPSHOT — 2014-08-21
- 0.3.9 — 2014-02-12
- 0.5.0-20131022062055 — 2013-10-22
- 0.3.7 — 2013-10-05
- 0.3.6 — 2013-10-04
- 0.3.5 — 2013-10-01
- 0.3.4 — 2013-09-13
- 0.3.3 — 2013-09-10
- 0.3.2 — 2013-09-09
- 0.3.0-20130801073235 — 2013-08-01
- 0.3.0-20130730172126 — 2013-07-31
- 0.3.0-20130730221625 — 2013-07-30
- 0.3.0-20130729141040 — 2013-07-29
- … 7 more at https://npm.io/package/context-config/versions

## README

context-config-node
===================

* **ConfigurationBuilder** allows reading/writing configs using local or remote storage. Single API is used in both cases which makes it easier to work with the class. This is the only class users should be using directly to utilize all functionality provided by the module. ConfigurationBuilder uses the following classes underneath:
  * **ContextConfiguration** is an advanced configuration lookup utility. The main feature is to look for best match of the same keywords, given a list of additional contexts. Compared with config.get(key), it provides config.get(key, contexts, default).
	* **ForwardConfiguration** is a proxy which stores an array of ContextConfigurations and forwards `get(key)` requests to elements of that array. It allows notifying users about changes in configs using 'change' event on EventEmitter.
	* **NodeConfig** is used to work with configs stored in local file system. It is a wrapper of [node-config](https://github.com/lorenwest/node-config) library


## API
| Function | Description |
|---|---|
|**ConfigurationBuilder**|
|`require('context-config').ConfigurationBuilder`|importing the constructor|
|`new ConfigurationBuilder(emitter)`|constructor accepts an EventEmitter and will emit 'config-read' event when new config is read|
|`build(context, ref)`| `ref` object lists properties of the app whose configs we want to load (can contain properties domain, target, project, config, and version). Returns a promise.



## Usage
### ConfigurationBuilder
create a new instance of ConfigurationBuilder
```
var ConfigurationBuilder = require('context-config').ConfigurationBuilder;
var builder = new ConfigurationBuilder(emitter);
```
call build method to load the config which in turn returns a promise.
```
builder.build(context, ref)
.then(function(config){
	// use the config
	console.log(config.get('key'));
})
.fail(function(error){
	// handle the error
	console.log(error.stack);
})
.done();
```
### ContextConfiguration
create a new instance of ContextConfiguration
```
var ContextConfiguration = require('context-config').ContextConfiguration;
var config = new ContextConfiguration([],[]);
```
append new values to the config
```
// without context
config.append({
	"key":"k1",
	"value":"v1"
});
// with context
config.append({
    "key":"k1",
    "context": {"site":"en-US"},
    "value":"v2"
});
```
get values using a key
```
// without a context
config.get("k1");	// should return "v1"
// with a context
config.get("k1", [{"site":"en-US"}]);	// should return "v2"
```

---
_Source: https://npm.io/package/context-config · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
