open-index/open-npm huggingface dataset:
npm package: @paulavery/config
Description: Load configuration from the environment
Author: Florian Albertz
Latest version: 1.0.1

# An environment config loader
This module allows you to easily load your apps configuration from environment variables.
You specify a default config object, and the module parses environment variables based on that objects structure and data types.

**Setup:**
```js
import config from '@paulavery/config';

let settings = config('appName', {
	serverUrl: 'http://github.com/',
	mysql: {
		db: 'app-name',
		host: 'localhost',
		port: 3306,
		user: 'root'
	}
});
```

**Variables:**
```
APPNAME_SERVERURL='http://dev.github.com/'
APPNAME_MYSQL_DB=app-name-dev
APPNAME_MYSQL_PORT=2207
```

**Result:**
```js
{
	serverUrl: 'http://dev.github.com/',
	mysql: {
		db: 'app-name-dev',
		host: 'localhost',
		port: 2207,
		user: 'root'
	}
}
```

Supported datatypes are `string`, `number`, `boolean` and obviously `object`.

To make specifying local configs easy, it also uses the [dotenv](https://www.npmjs.com/package/dotenv) package to load a '.env' file with environment variables.
npm package: @paulavery/docs
Description: A minimal documentation generator.
Author: Florian Albertz
Latest version: 2.1.4

# @paulavery/docs - A minimal documentation generator
This module provides very simple rendering of markdown documentation into static webpages.

[Documentation/Example](https://paulavery.github.io/docs/).

## Quickstart
Place your documentation in a `docs/src` folder in your project root.
Now run `docs` and have your documentation generated into `docs/out`.
npm package: @paulavery/docs-theme-cayman
Description: Modified version of cayman theme for @paulavery/docs
Author: Florian Albertz
Latest version: 1.2.1

# Cayman Theme for @paulavery/docs
This repository contains the default theme for the [@paulavery/docs](http://npmjs.com/package/@paulavery/docs) documentation generator.

It is based on the [Cayman](https://github.com/jasonlong/cayman-theme) theme by Jason Long which was modified to allow nested documentation pages.

An example of this theme can be found [here](https://paulavery.github.io/docs/).
npm package: @paulavery/events
Description: EventEmitter with Promise support
Author: Florian Albertz
Latest version: 2.0.2

# @paulavery/events - EventEmitter with Promise support
Yes, this is yet another EventEmitter.
It can deal with scopes as well as promises, but it is mostly used by me as a testbed for my buildsystem and for my private projects.

Full documentation can be found at [here](https://paulavery.github.io/events).
And here is a short example:

```js
import EventEmitter from '@paulavery/events';

let emitter = new EventEmitter();
let scope = emitter.child('scope');

emitter.on('scope:event', message => console.log('1. ' + message));
emitter.on('scope:*', (path, message) => console.log('2. ' + message));
scope.on('event', message => console.log('3. ' + message));

emitter.emit('scope:event', 'MESSAGE!').then(() => console.log('Done'));
```
npm package: @paulavery/logger
Description: A simple logger
Author: Florian Albertz
Latest version: 1.0.2

# A simple logger
This library provides a simple logger to use in your application.
It supports namespaces, custom reporters and outputs data as JSON (with the option to prettify output in development).

It is build atop of the [@paulavery/events](https://paulavery.github.io/events) library.
Full documentation can be found [here](https://paulavery.github.io/logger).

## Example
```js
import Logger from '@paulavery/logger';

let logger = new Logger({ debug: true });

/* A message and some data */
logger.trace('Trace info!', { some: 'data' });

let childLogger = logger.child('scope', { some: 'more', scope: 'data' });

/* Logging without data */
childLogger.info('Some information');

/* Logging without message */
childLogger.warn({ more: 'here' });

/* Overriding scope */
childLogger.error('Shit happened!', { some: 'stuff' });
```

**JSON output (`debug = false`)**
```json
{"time":1465295505440,"scope":[],"level":"trace","message":"Trace info!","data":{"some":"data"},"levelNumeric":0}
{"time":1465295505444,"scope":["scope"],"level":"info","message":"Some information","levelNumeric":100}
{"time":1465295505445,"scope":["scope"],"level":"warn","data":{"some":"more","scope":"data","more":"here"},"levelNumeric":200}
{"time":1465295505445,"scope":["scope"],"level":"error","message":"Shit happened!","data":{"some":"stuff","scope":"data"},"levelNumeric":300}
```

**Debug output**
![Debug Output](docs/src/img/scrot.png)
npm package: @paulavery/task-runner
Description: Run shell-scripts via a web-interface
Author: Florian Albertz
Latest version: 1.0.3

# Task Runner
A very simple webapp which should act as a cron replacement with a web-interface.
You may define tasks in a `tasks.json` file:

```json
[{
	"name": "A Task",
	"script": "/usr/bin/cat",
	"args": [ "/etc/fstab" ]
}, {
	"name": "Another Task",
	"script": "/usr/bin/date"
}]
```

You can then run any of these tasks through a web UI:
![Screenshot](./scrot.png)

## Setup
To get started, simply install this package (`npm install -g @paulavery/task-runner`) and then start the application via `task-runner`.

You may set the following environment variables to configure the application:

* `TR_PORT`: The port to run the application on. Defaults to 3000
* `TR_TASKFILE`: The file from which to read the task definitions. Defaults to `tasks.json` in the current working directory.
* `TR_DATABASE`: The sqlite database file to save information about previous task invocations to. Defaults to `tasks.db` in the current working directory.

## TODO
* Definable Intervals / Automatic running of tasks