open-index/open-npm huggingface dataset:
npm package: @runnel/metric-plugin
Description: A metric plugin for Runnel. It can be used in testing.
Latest version: 0.3.1

# @runnel/metric-plugin

## **DEPRECATED**

This library only supports [runneljs](https://www.npmjs.com/package/runneljs) version 0.3.

## Description

This library is designed for [Runnel](https://docs.runnel.run/). Please visit [our documentation](https://docs.runnel.run/) and learn more.

## Usage

```ts
const { register, unregister, subscribe } = createPlugin(deepEqual);
const eventBus = createEventBus({
  deepEqual,
  payloadValidator,
});
register();
...

// Example with React.useState
const [metrics, setMetrics] = useState();
subscribe(setMetrics);
```

## Output Examples

### Case 1

- `topic1` with schema `{ "type": "number" }`.
- No subscribers.
- One publishing event with payload `100`.

```json
{
  "topic1": {
    "onPublishCreated": 1,
    "onPublish": 100,
    "onSubscribeCreated": 0,
    "onSubscribe": null
  }
}
```

### Case 2

- `topic2` with schema `{ "type": "string" }`.
- One subscriber.
- No publishing events.

```json
{
  "topic2": {
    "onPublishCreated": 0,
    "onPublish": null,
    "onSubscribeCreated": 1,
    "onSubscribe": null
  }
}
```
npm package: @runnel/validator
Description: A default validator for Runnel
Latest version: 1.0.6

# @runnel/validator

## **DEPRECATED**

This library only supports [runneljs](https://www.npmjs.com/package/runneljs) version 0.3.

## Description

This library is designed for [Runnel](https://docs.runnel.run/). Please visit [our documentation](https://docs.runnel.run/) and learn more.

For a default pre-built validator, use [@runnel/validator](https://www.npmjs.com/package/@runnel/validator). It depends on [@cfworker/json-schema](https://github.com/cfworker/cfworker/blob/main/packages/json-schema/README.md) for validating payloads with JSON schema.
npm package: @runnergo/data2runnergo
Description: data2runnergo
Latest version: 1.1.19

## 描述

支持多个平台数据转换成 runnergo 数据格式，支持 MS 的场景和 Api，Jmeter。

## 安装

```
npm i @runnergo/data2runnergo
```

## 使用

### MeterSphere

```js
import { MS2RGScence, MS2RGApi } from 'data2runnergo';

// 场景数据转换
const ms2rgScence = new MS2RGScence();
const result = ms2rgScence.convert(json);

// API 数据转换
const ms2rgApi = new MS2RGApi();
const result = ms2rgApi.convert(json);
```

### Jmeter

```js
import { Jmeter2RGScene } from 'data2runnergo';

const jmeter2RGScence = new Jmeter2RGScene();
const result = jmeter2RGScence.convert(json);
```

### 返回内容

```js
const { data, type, status } = result;
```

+ data: 成功转换后返回来的数据，不成功则为空
+ type: 转换失败返回来的类型。1 为 数据为空，2 为传入的数据格式有问题
+ status: 数据转换的状态，成功 success，失败 error
npm package: @runnerpro/backend
Description: A collection of common backend functions
Author: Runner Pro
Latest version: 1.19.8

# modern-npm-package

An npm packages for common backend logic between client and dashboard app.

## Get Started

1. Run `npm install @runnerpro/backend`

## Functions

### query

Connection with the PostgresSQL database

- <b>Param</b>: string with PostgreSQL query
- <b>Param</b>: array of values
- <b>Return</b>: promise of array of values (each item is a row of the table)

### batchQuery

Connection with PostgreSQL database in batches. Use for faster query execution when we need to execute many queries.

- <b>Param</b>: Array of queries
  - query: string with PostgreSQL query
  - values: array of values
- <b>Param?</b>: length of promises wait together. Default 5
- <b>Return</b>: promise (without values)

### sendMail

Send mail with company logo and template

- <b>Param</b>: { subject, title, body, to, link?, attachments?, bcc? }

  - subject: title of the mail
  - body: text inside card
  - to: array of mails. In DEV and SBX the value is taken from .env GMAIL_EMAIL_USER
  - link: button to redirect to the app. { text: text inside button, url: path (after runnerpro.com) }
  - attachments: array of files to attach. { filename: name and extension of file, path: path of file, cid?: identifier to insert inside the body (`<img src="cid:__cid__" />`) }
  - bcc: array of mails to send via bcc

- <b>Return</b>: promise (without values)

### sendNotification

Send web or native notification to client: TODO

- <b>Param</b>: Array of queries { query: string with PostgreSQL query, values: array of values }
- <b>Param?</b>: length of promises wait together. Default 5
- <b>Return</b>: promise (without values)

### sleep

Wait X miliseconds to execute next line

- <b>Param</b>: number of miliseconds of the promise
- <b>Return</b>: promise (without values)

## Deploy new version

1. Create a folder with the name of functionality and index.ts inside. Write the function and export it.
2. In main index.ts (the one inside src), import and export it
3. Change the version number of the package ([using this convenction](https://docs.npmjs.com/about-semantic-versioning))
4. Run `npm login`
5. Run `npm run publish`
npm package: @runnerpro/common
Description: A collection of common backend and frontend functions
Author: Runner Pro
Latest version: 1.6.3

# modern-npm-package

An npm packages for common backend and frontend logic between client and dashboard app.

## Get Started

1. Run `npm install @runnerpro/backend`

## Functions

### parseTimeNumberToString

Return the number of seconds into pretty time format (hh:mm:ss or mm:ss)

- <b>Param</b>: number of seconds
- <b>Param</b>: value for time format (2 === mm:ss || 3 === hh:mm:ss)
- <b>Return</b>: pretty time format

### parseTimeStringToNumber

Return the pretty time format into number of seconds

- <b>Param</b>: pretty time format (hh:mm:ss or mm:ss)
- <b>Return</b>: seconds

### removeAccent

Return text without accent

- <b>Param</b>: string
- <b>Return</b>: string

### sortWorkouts

Return 1 if workout1 should be before workout2 and -1 if not (Calentamiento y Técnica carrera primero)

- <b>Param</b>: workout 1
- <b>Param</b>: workout 2
- <b>Return</b>: number (1, -1, 0)

### isCalentamientoByTitle

Return true if workout is by title Calentamiento or Técnica carrera

- <b>Param</b>: workout
- <b>Return</b>: boolean

### getPaymentPlanStripe

Return a stripe plan based on price ID

- <b>Param</b>: price ID
- <b>Return</b>: stripe plan { name: string, months: number, price: number, priceFirstMonth?: number }

### getNameClientOnly

Return the name of the client without the surname

- <b>Param</b>: full name of client
- <b>Return</b>: name of client

## Constants

### WORKOUT_TYPE

Specify the types of workouts (CORRER, FUERZA...)

### TIPO_APLICACION

Specify the types of aplication user can connect to (STRAVA, GARMIN...)

Wait X miliseconds to execute next line

- <b>Param</b>: number of miliseconds of the promise
- <b>Return</b>: promise (without values)

## Deploy new version

1. Create a folder with the name of functionality and index.ts inside. Write the function and export it.
2. In main index.ts (the one inside src), import and export it
3. Change the version number of the package ([using this convenction](https://docs.npmjs.com/about-semantic-versioning))
4. Run `npm login`
5. Run `npm run publish`

### Testing

1. Install developer dependencies using the following command in your terminal `npm i -D mocha @types/mocha chai @types/chai ts-node`
1. Create a new file `.mocharc.json` in the root directory with the following contents:
   ```json
   {
     "extension": ["ts"],
     "spec": "./**/*.spec.ts",
     "require": "ts-node/register"
   }
   ```
1. Create a `tests` folder
1. Create an `index.spec.ts` file in the `tests` folder
1. Write unit tests in the `index.spec.ts` file to test the code in `index.ts`
1. Add a `"test"` property in the `package.json` file and give it a value of `"mocha"`
1. Run `npm test` in your terminal from the root folder of the project
npm package: @runnerpro/frontend
Description: A collection of common frontend functions
Author: Runner Pro
Latest version: 1.0.4

# modern-npm-package

An npm packages for common frontend logic between client and dashboard app.

## Get Started

1. Run `npm install @runnerpro/frontend`

## Functions

### b64toBlob

Transform base64 file to blob data for sending file

- <b>Param</b>: file in base64
- <b>Return</b>: blob data file

### fileToB64

Transform File (from input type file) to base 64 for inserting value in src

- <b>Param</b>: file from input type file
- <b>Return</b>: promise with base 64 file

## Deploy new version

1. Create a folder with the name of functionality and index.ts inside. Write the function and export it.
2. In main index.ts (the one inside src), import and export it
3. Change the version number of the package ([using this convenction](https://docs.npmjs.com/about-semantic-versioning))
4. Run `npm login`
5. Run `npm run publish`

### Testing

1. Install developer dependencies using the following command in your terminal `npm i -D mocha @types/mocha chai @types/chai ts-node`
1. Create a new file `.mocharc.json` in the root directory with the following contents:
   ```json
   {
     "extension": ["ts"],
     "spec": "./**/*.spec.ts",
     "require": "ts-node/register"
   }
   ```
1. Create a `tests` folder
1. Create an `index.spec.ts` file in the `tests` folder
1. Write unit tests in the `index.spec.ts` file to test the code in `index.ts`
1. Add a `"test"` property in the `package.json` file and give it a value of `"mocha"`
1. Run `npm test` in your terminal from the root folder of the project
npm package: @runnersnail/cache-machine
Description: Node caches data across processes、Node进程间缓存数据
Author: runnerSnail
Latest version: 0.1.1

# cache-machine

帮助node进行缓存

npm -g neon

neon build 编译为ffi

##  执行测试

pm2 start test/index.js -i 4 --name node-cache

访问/set接口为某一进程设置缓存数据

访问/get接口为得到进程换粗的数据（多刷几次会发现不同的进程都可以得到数据）

执行查看结果
npm package: @runnerty/executor-check-online-service
Description: Runnerty module: Check Online Service Executor
Author: Runnerty Tech
Latest version: 3.2.0

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
<a href="#badge">
  <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Check Online Service executor for [Runnerty]:

### Installation:
Through NPM

```bash
npm i @runnerty/executor-check-online-service
```

You can also add modules to your project with [runnerty]

```bash
npx runnerty add @runnerty/executor-check-online-service
```

This command installs the module in your project, adds example configuration in your [config.json] and creates an example plan of use.

If you have installed [runnerty] globally you can include the module with this command:

```bash
runnerty add @runnerty/executor-check-online-service
```

### Configuration sample:
Add in [config.json]:
```json
{
  "id": "check_online_service_default",
  "type": "@runnerty-executor-check-online-service"
}
```

### Plan sample:
Add in [plan.json]:
```json
{
  "id":"check_online_service_default",
  "hostname": "http://www.google.com/en",
  "check_contains": "I'm Feeling Lucky"
}
```

### Plan advanced:
Add in [plan.json]:
```json
{
  "id":"check_online_service_default",
  "hostname": "http://www.google.com/en",
  "check_contains": "I'm Feeling Lucky",
  "method": "GET",
  "auth":{
    "user": "user",
    "pass": "password",
  }
}
```
```json
{
  "id":"check_online_service_default",
  "hostname": "http://www.myservice.com/api/health",
  "headers": { "User-Agent": "runnerty", "Content-Type": "application/json" }
}
```
```json
{
  "id":"check_online_service_default",
  "hostname": "http://www.myservice.com/api/health",
  "timeout": "5s"
}
```

[Runnerty]: https://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-check-online-service.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-check-online-service
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-check-online-service.svg
[david-badge]: https://david-dm.org/runnerty/executor-check-online-service.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-check-online-service
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
npm package: @runnerty/executor-confirmation
Description: Executor for Runnerty integrated with Telegram. It sends a message to your Telegram chat and waits for an answer to continue or stop the chain.
Author: Runnerty Tech
Latest version: 3.0.2

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Confirm executor for [Runnerty]:

Executor for Runnerty integrated with Telegram. It sends a message to your Telegram chat and waits for an answer to continue or stop the chain.

### Installation:

Through NPM

```bash
npm i @runnerty/executor-confirmation
```

You can also add modules to your project with [runnerty-cli]

```bash
npx runnerty-cli add @runnerty/executor-confirmation
```

This command installs the module in your project, adds example configuration in your `config.json` and creates an example plan of use.

If you have installed [runnerty-cli] globally you can include the module with this command:

```bash
rty add @runnerty/executor-confirmation
```

### Configuration sample:

Add in [config.json]:

```json
{
  "id": "confirmation_default",
  "type": "@runnerty-executor-confirmation",
  "token": "ABC123",
  "chatId": "ABC123"
}
```

### Plan sample:

Add in [plan.json]:

```json
{
  "id": "confirmation_default",
  "message": "Message",
  "confirm_button_message": "ok button message",
  "cancel_button_message": "cancel button message",
  "confirm_message": "confirmation message",
  "cancel_message": "cancel message"
}
```

If you set a timeout to your proccess, by default, this will end with cancel. There is an optional field to configure that. If "ok" is indicated in this option, the process will end with ok.

```json
{
  "action_on_timeout": "ok"
}
```

There is also an option to include authorized users. Telegram's user name or Id can be indicated in this field. If it is included, only these users are allowed to interactuate.

```json
{
  "authorized_users": ["user_name_1", "user_id_2"]
}
```

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-confirmation.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-confirmation
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-confirmation.svg
[david-badge]: https://david-dm.org/runnerty/executor-confirmation.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-confirmation
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
[runnerty-cli]: https://www.npmjs.com/package/runnerty-cli
npm package: @runnerty/executor-decompress
Description: Runnerty module: Decompress (tar, zip, rar, 7z, gz)
Author: Runnerty Tech
Latest version: 3.1.1

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Decompress executor for [Runnerty]:

Requires `tar`, `unzip`, `gunzip`, `7z` and `rar` CLI tools to be installed in the SO.

### Installation:

Through NPM

```bash
npm i @runnerty/executor-decompress
```

You can also add modules to your project with [runnerty-cli]

```bash
npx runnerty-cli add @runnerty/executor-decompress
```

This command installs the module in your project, adds example configuration in your `config.json` and creates an example plan of use.

If you have installed [runnerty-cli] globally you can include the module with this command:

```bash
rty add @runnerty/executor-decompress
```

### Configuration sample:

Add in [config.json]:

```json
{
  "id": "decompress_default",
  "type": "@runnerty-executor-decompress"
}
```

### Plan sample:

Add in [plan.json]:

```json
{
  "id": "decompress_default",
  "compress_file": "./input.zip",
  "decompress_dir": "./"
}
```

```json
{
  "id": "decompress_default",
  "compress_file": "./input.7z",
  "decompress_dir": "./"
}
```

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-decompress.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-decompress
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-decompress.svg
[david-badge]: https://david-dm.org/runnerty/executor-decompress.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-decompress
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
[runnerty-cli]: https://www.npmjs.com/package/runnerty-cli
npm package: @runnerty/executor-ec2
Description: Runnerty module: ec2 executor
Author: Coderty
Latest version: 0.0.1

# EC2 executor for [Runnerty]:

### Methods:
#### Create Snapshot
* Configuration sample:
```json
{
  "id":"ec2_default",
  "type":"@runnerty-executor-ec2",
  "apiVersion": "2016-11-15",
  "accessKeyId": "ABC123",
  "secretAccessKey": "ABC123",
  "region": "eu-west-1"
}
```

* Plan sample:
```json
{
  "id":"ec2_default",
    "command":"createSnapshot",
    "params": {
      "VolumeId": "vol-ABC123",
      "Description": "Daily-backup"
    }
}
```

It's possible to use this executor with any of the AWS EC2 methods supported by the official API. You can have a look at the documentation [here](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2.html)

[Runnerty]: http://www.runnerty.io
npm package: @runnerty/executor-ftp
Description: Runnerty module: FTP executor
Author: Runnerty Tech S.L.
Latest version: 3.0.0

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url] 
<a href="#badge">
  <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>


# FTP executor for [Runnerty]:

### Installation:
```bash
npm i @runnerty/executor-ftp
```

### Configuration sample:
```json
{
  "id": "ftp_default",
  "type": "@runnerty-executor-ftp",
  "host": "host.com",
  "port": "21",
  "username": "user",
  "password": "1234"
}
```

```json
{
  "id": "ftp_default",
  "type": "@runnerty-executor-ftp",
  "host": "host.com",
  "port": "21",
  "username": "user",
  "privateKeyPath": "/privateKeys/myPrivateKey.pem"
}
```

Notas:
- Puedes usar `username` o `user` en la configuración; internamente se normaliza a `username`.
- Si usas autenticación por clave, utiliza `privateKeyPath` (ruta a fichero PEM) o `privateKey` (contenido PEM). Si `privateKey` apunta a un fichero existente, se leerá automáticamente.

### Plan sample:
```json
{
  "id": "ftp_default",
  "command": "PUT",
  "sourcePath": "./sample.txt",
  "destinationPath": "/remote/sample_file.txt"
}
```

```json
{
  "id": "ftp_default",
  "command": "LIST",
  "sourcePath": "./remoteDir/"
}
```

### Connection:
Connection config you will see [here](https://github.com/mscdex/ssh2#user-content-client-methods)

### Commands
* get: download a file.
* put: upload a file.
* mkdir: create a new directory.
* rmdir: remove the directory or file.
* delete: delete file.
* rename: rename sourcePath to destinationPath.
* chmod: modify rights to destinationPath file.
* list: retrieves a directory listing.

### Output (Process values):
* `PROCESS_EXEC_DATA_OUTPUT`: Response output data.
* `EXTRA_DATA`: It is possible to work with the parsed values of the response.

`LIST` command return a JSON with this properties:
```bash
type: // file type(-, d, l)
name: // file name
size: // file size
modifyTime: // file timestamp of modified time
accessTime: // file timestamp of access time
rights: {
    user:
    group:
    other:
},
owner: // user ID
group: // group ID
```



[Runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-ftp.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-ftp
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-ftp.svg
[david-badge]: https://david-dm.org/runnerty/executor-ftp.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-ftp
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
npm package: @runnerty/executor-iconv
Description: Runnerty module: ICONV executor
Author: Coderty
Latest version: 1.0.1

# ICONV executor for [Runnerty]:

### Configuration sample:
```json
{
  "id": "iconv_default",
  "type": "@runnerty-executor-iconv"
}
```

### Plan sample:
```json
{
  "id": "iconv_default",
  "decode_encoding": "ISO-8859-1",
  "encode_encoding": "UTF-8",
  "file_input": "input.txt",
  "file_output": "output.txt"
}
```


[Runnerty]: http://www.runnerty.io
npm package: @runnerty/executor-iterable
Description: Runnerty module: Iterable executor
Author: Runnerty Tech
Latest version: 3.2.0

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Iterable executor for [Runnerty]:

### Installation:

Through NPM

```bash
npm i @runnerty/executor-iterable
```

You can also add modules to your project with [runnerty-cli]

```bash
npx runnerty-cli add @runnerty/executor-iterable
```

This command installs the module in your project, adds example configuration in your `config.json` and creates an example plan of use.

If you have installed [runnerty-cli] globally you can include the module with this command:

```bash
rty add @runnerty/executor-iterable
```

### Configuration:

Add in [config.json]:

```json
{
  "id": "iterable_default",
  "type": "@runnerty-executor-iterable"
}
```

### Plan sample:

Add in [plan.json]:

- Object

```json
{
  "id": "iterable_default",
  "objects": [
    { "key1": "val1", "key2": "val2" },
    { "key1": "val1_1", "key2": "val2_2" },
    { "key1": "val1_2", "key2": "val2_3" }
  ]
}
```

- String

```json
{
  "id": "iterable_default",
  "objects": "@GV(VAR_JSON_STRINGIFY)"
}
```

- JSON File

```json
{
  "id": "iterable_default",
  "jsonFile": "sample.json"
}
```

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-iterable.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-iterable
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-iterable.svg
[david-badge]: https://david-dm.org/runnerty/executor-iterable.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-iterable
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
[runnerty-cli]: https://www.npmjs.com/package/runnerty-cli
npm package: @runnerty/executor-pdf
Description: Runnerty module: PDF Genenerator executor
Author: Coderty
Latest version: 1.0.1

# PDF executor for [Runnerty]:

#### EJS Compatible

### Configuration sample:
```json
{
  "id":"pdf_default",
  "type":"@runnerty-executor-pdf"
}
```

### Plan sample:
#### https://github.com/marcbachmann/node-html-pdf#options
```json
{
  "id":"pdf_default",
  "html":"sample.html",
  "output":"sample.pdf",
  "papersize":{
    "format":"A4",
    "orientation":"portrait"
  }
```

### Plan advanced:
#### https://github.com/marcbachmann/node-html-pdf#options
```json
{
  "id":"pdf_default",
  "html":"/etc/runnerty/sample.html",
  "output":"/etc/runnerty/sample.pdf",
  "papersize":{
    "format":"A4",
    "orientation":"portrait"
  },
  "pageoptions":{
    "border": "1cm"
  },
  "typeoutput":"pdf",
  "quality": "80",
  "timeout": 30000,
  "args":{
    "created_date":":MMMM_EN, :DD :YYYY",
    "due_date":":MMMM_EN, :DD :YYYY",
    "invoice_id":":YYYY:MM0000:HH:mm:ss"
  },
  "header": {
    "height": "45px",
    "contents": "<div style=\"text-align: right;\">Runnerty sample - PDF Executor</div>"
  },
  "footer": {
    "height": "25mm",
    "contents": {
      "default": "<span style=\"color: #444;\">{{page}}</span>/<span>{{pages}}</span>",
      "first": "First page",
      "2": "Second page",
      "last": "Last Page"
    }
  },
  "httpHeaders": {
    "Authorization": "Bearer ABCDE-1324-1234-1234"
  }
}
```

[Runnerty]: http://www.runnerty.io
npm package: @runnerty/executor-redis
Description: Runnerty module: Redis executor
Author: Runnerty Tech
Latest version: 3.0.5

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
<a href="#badge">
  <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Redis executor for [Runnerty]:

### Installation:
Through NPM

```bash
npm i @runnerty/executor-redis
```

You can also add modules to your project with [runnerty]

```bash
npx runnerty add @runnerty/executor-redis
```

This command installs the module in your project, adds example configuration in your [config.json] and creates an example plan of use.

If you have installed [runnerty] globally you can include the module with this command:

```bash
runnerty add @runnerty/executor-redis
```

### Configuration sample:
```json
{
  "id": "redis_default",
  "type": "@runnerty-executor-redis",
  "password": "redis_password",
  "host": "redishost.com",
  "port": "6379",
  "db": 0,
  "options": {}
}
```
More info about options [here.](https://github.com/NodeRedis/node-redis/blob/master/README.md#options-object-properties)
### Plan sample:
```json
{
  "id":"redis_default",
  "command_file": "/etc/runnerty/redis_files/test.txt"
}
```

```json
{
  "id":"redis_default",
  "command": "KEYS *"
}
```

### Output (Process values):
* `PROCESS_EXEC_DATA_OUTPUT`: Redis output message. 
* `PROCESS_EXEC_ERR_OUTPUT`: Error output message.

[Runnerty]: https://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-redis.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-redis
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-redis.svg
[david-badge]: https://david-dm.org/runnerty/executor-redis.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-redis
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
npm package: @runnerty/executor-s3
Description: Runnerty module: s3 executor
Author: Runnerty Tech
Latest version: 3.0.4

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# S3 executor for [Runnerty]:

### Installation:

Through NPM

```bash
npm i @runnerty/executor-s3
```

You can also add modules to your project with [runnerty]

```bash
npx runnerty add @runnerty/executor-s3
```

This command installs the module in your project, adds example configuration in your [config.json] and creates an example plan of use.

If you have installed [runnerty] globally you can include the module with this command:

```bash
runnerty add @runnerty/executor-s3
```

### Configuration sample:

Add in [config.json]:

```json
{
  "id": "s3_default",
  "type": "@runnerty-executor-s3",
  "apiVersion": "2006-03-01",
  "accessKeyId": "ABC123",
  "secretAccessKey": "ABC123",
  "region": "eu-west-1",
  "bucket": "my.s3bucket.com"
}
```

### Plan samples:

Add in [plan.json]:

- Upload

```json
{
  "id": "s3_default",
  "method": "upload",
  "local_file": "/tmp/test.txt",
  "remote_file": "dir_one/dir_two/test_up.txt"
}
```

- Download

```json
{
  "id": "s3_default",
  "method": "download",
  "remote_file": "test.txt",
  "local_file": "/tmp/test_down.txt"
}
```

- Delete

```json
{
  "id": "s3_default",
  "method": "delete",
  "remote_path": "folder_test/foo.txt"
}
```

- Delete array of files

```json
{
  "id": "s3_default",
  "method": "delete",
  "remote_path": ["folder_test/sample.txt", "folder_test/sample.zip"]
}
```

- Delete glob pattern

```json
{
  "id": "s3_default",
  "method": "delete",
  "remote_path": "folder_test/*.txt"
}
```

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-s3.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-s3
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-s3.svg
[david-badge]: https://david-dm.org/runnerty/executor-s3.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-s3
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
[runnerty-cli]: https://www.npmjs.com/package/runnerty-cli
npm package: @runnerty/executor-scp
Description: Runnerty module: scp executor
Author: Runnerty Tech
Latest version: 3.0.4

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# SCP executor for [Runnerty]:

Requires sshpass tool to be installed in the SO.

By default, the executor use the port `22`, it is possible to indicate a different port with the property `"remotePort"`

It is possible to use `"remotePassword"` instead off `"identityFile"`

### Installation:

Through NPM

```bash
npm i @runnerty/executor-scp
```

You can also add modules to your project with [runnerty-cli]

```bash
npx runnerty-cli add @runnerty/executor-scp
```

This command installs the module in your project, adds example configuration in your `config.json` and creates an example plan of use.

If you have installed [runnerty-cli] globally you can include the module with this command:

```bash
rty add @runnerty/executor-scp
```

### Configuration sample:

Add in [config.json]:

```json
{
  "id": "scp_default",
  "type": "@runnerty-executor-scp"
}
```

### Plan sample:

Add in [plan.json]:

```json
{
  "id": "scp_default",
  "identityFile": "mykey.pem",
  "localFile": "originfile.txt",
  "remoteFilePath": "/var/remote.txt",
  "remoteHost": "my.host.com",
  "remoteUser": "user"
}
```

```json
{
  "id": "scp_default",
  "identityFile": "mykey.pem",
  "localFile": "originfile.txt",
  "remoteFilePath": "/var/remote.txt",
  "remoteHost": "my.host.com",
  "remoteUser": "user",
  "remorePassword": "password"
}
```

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-scp.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-scp
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-scp.svg
[david-badge]: https://david-dm.org/runnerty/executor-scp.svg
[david-badge-url]: https://david-dm.org/runnerty/executor-scp
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
[runnerty-cli]: https://www.npmjs.com/package/runnerty-cli
npm package: @runnerty/executor-script
Description: Runnerty module: script executor
Author: Coderty
Latest version: 1.0.0

# Script executor for [Runnerty]:

### Configuration sample:

```json
{
  "id": "script_default",
  "type": "@runnerty-executor-script"
}
```

### Plan sample:

```json
{
  "id": "script_default",
  "script": "return('hello');"
}
```

```json
{
  "id": "script_default",
  "script_file": "my_script.js",
  "args": { "my_const": "Y", "my_key": "@GV(MY_KEY)" }
}
```

```json
{
  "id": "script_default",
  "script": "let res=''; if(args.my_const === 'Y'){res=args.my_key} return(res);",
  "args": { "my_const": "Y", "my_key": "@GV(MY_KEY)" }
}
```

### if you create a function that returns string, integer or boolean it will be automatically saved in `PROCESS_EXEC_DATA_OUTPUT`.

### if you create a function that returns an object or array it will be automatically (JSON.stringify) saved in `PROCESS_EXEC_[KEY_NAME]`:

```js
return { KEY_ONE: "VAL_ONE", KEY_TWO: "VAL_TWO" };
```

```json
{
  "output_share": [
    { "key": "VALUE", "name": "ONE", "value": "@GV(PROCESS_EXEC_KEY_ONE)" },
    { "key": "VALUE", "name": "TWO", "value": "@GV(PROCESS_EXEC_KEY_TWO)" }
  ]
}
```

[runnerty]: http://www.runnerty.io
npm package: @runnerty/executor-twitter
Description: Runnerty module: twitter executor
Author: Coderty
Latest version: 2.0.0

# Twitter executor for [Runnerty]:

### Methods:
* Configuration sample:
```json
{
  "id": "twitter_default",
  "type": "@runnerty-executor-twitter",
  "consumerKey":"123abc",
  "consumerSecret":"123abc" ,
  "accessToken":"123abc",
  "accessTokenSecret":"123abc"
}
```

* Plan sample to update our twitter status:
```json
{
  "id":"twitter_default",
  "command":"update",
  "status": "Hello I'm #runnerty #twitter #bot"
}
```

* Plan sample to search a hashtag:
```json
{
  "id":"twitter_default",
  "command":"search",
  "query": "#runnerty"
}
```

* Plan sample to get an user's followers:
```json
{
  "id":"twitter_default",
  "command":"followers",
  "screen_name": "@runnerty"
}
```

* Plan sample to get an user's followers:
```json
{
  "id":"twitter_default",
  "command":"retweet",
  "tweet_id": "12345678"
}
```

* Plan sample to send a direct message:
```json
{
  "id":"twitter_default",
  "command":"direct",
  "screen_name": "runnerty_io",
  "textToSend": "Hello Runnerty"
}
```

[Runnerty]: http://www.runnerty.io
npm package: @runnerty/executor-wait
Description: Runnerty module: wait executor
Author: Runnerty Tech
Latest version: 3.1.0

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Wait executor for [Runnerty]:

Module for the creation of waiting processes.

### Installation:

```bash
npm i @runnerty/executor-wait
```

You can also add modules to your project with [runnerty]

```bash
npx runnerty add @runnerty/executor-wait
```

This command installs the module in your project, adds example configuration in your [config.json] and creates an example plan of use.

If you have installed [runnerty] globally you can include the module with this command:

```bash
runnerty add @runnerty/executor-wait
```

### Configuration:

Add in [config.json]:

```json
{
  "id": "wait_default",
  "type": "@runnerty-executor-wait",
  "time": "1 min"
}
```

### Plan:

Add in [plan.json]:

```json
{
  "id": "wait_default",
  "time": "30s"
}
```

```json
{
  "id": "wait_default",
  "time": "3s",
  "output": "Hello @GETDATE('YYYY-MM-DD')"
}
```

#### We can make it end up failing by indicating the error message:

```json
{
  "id": "wait_default",
  "time": "0s",
  "error": "Caused error for testing"
}
```

[runnerty]: https://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/executor-wait.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/executor-wait
[npm-image]: https://img.shields.io/npm/v/@runnerty/executor-wait.svg
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
npm package: @runnerty/interpreter-core
Description: Runnerty interpreter module
Author: Runnerty Tech
Latest version: 4.0.1

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Runnerty: Interpreter Module Core

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/interpreter-core.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/interpreter-core
[npm-image]: https://img.shields.io/npm/v/@runnerty/interpreter-core.svg
[david-badge]: https://david-dm.org/runnerty/interpreter-core.svg
[david-badge-url]: https://david-dm.org/runnerty/interpreter-core
npm package: @runnerty/module-core
Description: Runnerty module core classes
Author: Runnerty Tech
Latest version: 3.1.2

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]
<a href="#badge">
<img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>

# Runnerty: Module Core

This module exposes the classes that Runnerty modules should extend from.

### Trigger example:

```javascript
const Trigger = require('@runnerty/module-core').Trigger;

class intervalTrigger extends Trigger {
  constructor(chain, params) {
    super(chain, params);
  }

  start() {
    const checkCalendar = true;
    const inputValues = [];
    const customValues = {};
    setTimeout(() => {
      // Run Chain 🚀:
      try {
        this.startChain(checkCalendar, inputValues, customValues);
      } catch (err) {
        this.logger.error('startChain (intervalTrigger):', err);
      }
    }, this.params.interval);
  }
}

module.exports = intervalTrigger;
```

### Executor example:

```javascript
const Executor = require('@runnerty/module-core').Executor;

class greetingExecutor extends Executor {
  constructor(process) {
    super(process);
    this.options = {};
    this.endOptions = { end: 'end' };
  }

  async exec(options) {
    this.options = options;
    try {
      // Greeting 👋:
      this.endOptions.messageLog = this.options.greeting;
      this.end(this.endOptions);
    } catch (err) {
      this.endOptions.end = 'error';
      this.endOptions.err_output = err.message;
      this.end(this.endOptions);
    }
  }
}

module.exports = greetingExecutor;
```

### Notifier example:

```javascript
const Notifier = require('@runnerty/module-core').Notifier;

class consoleNotifier extends Notifier {
  constructor(notification) {
    super(notification);
  }
  // Notification sender 📤:
  send(notification) {
    notification.mode = notification.mode ? notification.mode.toString() : 'info';
    notification.message = notification.message ? notification.message.toString() : '';
    this.logger.log(notification.mode, notification.message);
    this.end();
  }
}

module.exports = consoleNotifier;
```

[runnerty]: http://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/module-core.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/module-core
[npm-image]: https://img.shields.io/npm/v/@runnerty/module-core.svg
[david-badge]: https://david-dm.org/runnerty/module-core.svg
[david-badge-url]: https://david-dm.org/runnerty/module-core
npm package: @runnerty/notificator-console
Description: Runnerty module: Console notificator
Author: Coderty
Latest version: 1.0.1
Deprecated: This plugin is no longer maintained. Please check @runnerty/notifier-console

# This plugin IS DEPRECATED. Please check [notifier-console](https://github.com/runnerty/notifier-console)


A simple console notificator for [Runnerty]

# Configuration

Add the notificator definition in your conf.json

```json
{
  "id": "console_default",
  "type": "@runnerty-notificator-console"
}
```


# Usage

Define the type of console message that you need (or prefer) in your process' events

## info mode
![info notification on console](http://i.imgur.com/IKHy3vC.png)

```json
{
  "id": "console_default",
  "message": "Things done right.",
  "mode": "info"
}
```


## warn mode
![warning notification on console](http://i.imgur.com/TdMmGQz.png)

```json
{
  "id": "console_default",
  "message": "We are out of candy!",
  "mode": "warn"
}
```


## error mode
![error notification on console](http://i.imgur.com/s2D0DxD.png)

```json
{
  "id": "console_default",
  "message": "Oh no.",
  "mode": "error"
}
```

[Runnerty]: https://www.npmjs.com/package/runnerty
npm package: @runnerty/notificator-mail
Description: Runnerty module: Mail notificator
Author: Coderty
Latest version: 1.0.0
Deprecated: deprecated

# Mail notificator for [Runnerty]:

### Configuration sample:
```json
{
  "id": "mail_default",
  "type": "@runnerty-notificator-mail",
  "disable": false,
  "from": "Runnerty <my@mail.com>",
  "transport": "smtps://my%40mail.com:mypass@smtp.mail.com/?pool=true",
  "templateDir": "/etc/runnerty/templates",
  "template": "alerts",
  "to": ["to@mail.com"],
  "ejsRender": true
}
```

### Plan sample:
```json
{
  "id":"mail_default",
  "subject":"RUNNERTY SAMPLE",
  "message":"Chain :CHAIN_NAME Running!"
}
```


[Runnerty]: http://www.runnerty.io
npm package: @runnerty/notificator-slack
Description: Runnerty module: Slack notificator
Author: Coderty
Latest version: 1.0.0

# Slack notificator for [Runnerty]:

### Configuration sample:
```json
  {
    "id": "slack_default",
    "type": "@runnerty-notificator-slack",
    "webhookurl":"https://hooks.slack.com/services/ABC123/ABC123/ABC123",
    "bot_name": "Runnerty-Sentinel",
    "channel": "my_runnerty_channel",
    "maxConcurrents": 1,
    "minInterval": 600
  }
```

### Plan sample:
```json
  {
    "id":"slack_default",
    "bot_emoji": ":metal:",
    "channel": "my_runnerty_channel",
    "message":"PROCESS *:PROCESS_ID* OF CHAIN :CHAIN_ID RUNNING!"
  }
```


[Runnerty]: http://www.runnerty.io
npm package: @runnerty/notificator-telegram
Description: Runnerty module: Telegram notificator
Author: Coderty
Latest version: 1.0.2
Deprecated: This plugin is no longer maintained. Please check @runnerty/notifier-telegram

# This plugin IS DEPRECATED. Please check [notifier-telegram](https://github.com/runnerty/notifier-telegram)

## Telegram notificator for [Runnerty]:

### Configuration sample:
```json
{
  "id": "telegram_default",
  "type": "@runnerty-notificator-telegram",
  "token": "ABC123",
  "chat_id": "ABC123"
}
```

### Plan sample:
```json
{
  "id": "telegram_default",
  "message": "Process :PROCESS_ID Running!"
}
```


[Runnerty]: http://www.runnerty.io
npm package: @runnerty/notifier-console
Description: Runnerty module: Console notifier
Author: Runnerty Tech
Latest version: 3.1.0

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Dependency Status][david-badge]][david-badge-url]
<a href="#badge">
  <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>


A simple console notifier for [Runnerty]

### Installation:
Through NPM

```bash
npm i @runnerty/notifier-console
```

You can also add modules to your project with [runnerty]

```bash
npx runnerty add @runnerty/notifier-console
```

This command installs the module in your project, adds example configuration in your [config.json] and creates an example plan of use.

If you have installed [runnerty] globally you can include the module with this command:

```bash
runnerty add @runnerty/notifier-console
```
### Configuration sample:
Add in [config.json]:

```json
{
  "notifiers": [
    {
      "id": "console_default",
      "type": "@runnerty-notifier-console"
    }
  ]
}
```

# Usage

Define the type of console message that you need (or prefer) in your process' events

## info mode
![info notification on console](http://i.imgur.com/IKHy3vC.png)

```json
{
  "notifications": {
    "on_end": [
      {
        "id": "console_default",
        "message": "Things done right.",
        "mode": "info"
      }
    ]
}
```


## warn mode
![warning notification on console](http://i.imgur.com/TdMmGQz.png)

```json
{
  "id": "console_default",
  "message": "We are out of candy!",
  "mode": "warn"
}
```


## error mode
![error notification on console](http://i.imgur.com/s2D0DxD.png)

```json
{
  "id": "console_default",
  "message": "Oh no.",
  "mode": "error"
}
```

[Runnerty]: https://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/notifier-console.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/notifier-console
[npm-image]: https://img.shields.io/npm/v/@runnerty/notifier-console.svg
[david-badge]: https://david-dm.org/runnerty/notifier-console.svg
[david-badge-url]: https://david-dm.org/runnerty/notifier-console
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/
npm package: @runnerty/notifier-db
Description: Runnerty module: db notifier
Author: Runnerty Tech
Latest version: 3.0.0

<p align="center">
  <a href="http://runnerty.io">
    <img height="257" src="https://runnerty.io/assets/header/logo-stroked.png">
  </a>
  <p align="center">Smart Processes Management</p>
</p>

[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url]
<a href="#badge">
  <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg">
</a>


A notified for the insertion of records in database [Runnerty]

### Installation:
Through NPM

```bash
npm i @runnerty/notifier-db
```

You can also add modules to your project with [runnerty]

```bash
npx runnerty add @runnerty/notifier-db
```

This command installs the module in your project, adds example configuration in your [config.json] and creates an example plan of use.

If you have installed [runnerty] globally you can include the module with this command:

```bash
runnerty add @runnerty/notifier-db
```

### Configuration sample:
Add in [config.json]:

```json
{
  "notifiers": [
    {
      "id": "notifier_db_default",
      "type": "@runnerty-notifier-db",
      "user": "postgres",
      "table": "rty.notifications",
      "password": "my_password",
      "database": "postgres",
      "host": "my_host",
      "port": "5432"
    }
  ]
}
```

# Usage

You only have to indicate the "id" of the notified and the message you want to be inserted in the "message" column of the table indicated in the configuration.

```json
{
  "notifications": {
    "on_end": [
      {
        "id": "notifier_db_default",
        "message": "Things done right."
      }
    ]
  }
}
```

In case you want to insert extra columns in addition to the "message" column you can indicate them in the "columns" property.

```json
{
  "notifiers": [
    {
      "id": "notifier_db_default",
      "type": "@runnerty-notifier-db",
      "user": "postgres",
      "table": "rty.notifications",
      "password": "my_password",
      "database": "postgres",
      "host": "my_host",
      "port": "5432",
      "columns": ["message", "mode", "key"]
    }
  ]
}
```

```json
{
  "notifications": {
    "on_end": [
      {
        "id": "notifier_db_default",
        "key": "@GV(CHAIN_ID)",
        "message": "Things done right.",
        "mode": "info"
      }
    ]
  }
}
```

[Runnerty]: https://www.runnerty.io
[downloads-image]: https://img.shields.io/npm/dm/@runnerty/notifier-db.svg
[npm-url]: https://www.npmjs.com/package/@runnerty/notifier-db
[npm-image]: https://img.shields.io/npm/v/@runnerty/notifier-db.svg
[david-badge]: https://david-dm.org/runnerty/notifier-db.svg
[david-badge-url]: https://david-dm.org/runnerty/notifier-db
[config.json]: http://docs.runnerty.io/config/
[plan.json]: http://docs.runnerty.io/plan/