<commit_before># DataPoint

[![Build Status](https://travis-ci.org/ViacomInc/data-point.svg?branch=ci)](https://travis-ci.org/ViacomInc/data-point) [![Coverage Status](https://coveralls.io/repos/github/ViacomInc/data-point/badge.svg?branch=ci)](https://coveralls.io/github/ViacomInc/data-point?branch=ci)

> JavaScript Utility for collecting, processing and transforming data.

DataPoint helps you reason with and streamline your data processing layer. With it you can collect, process, and transform data from multiple sources, and deliver the output in a tailored format to your end consumer. 

**Prerequisites**

Node v4 LTS or higher

**Installing**

```bash
npm install --save data-point
```

## Table of Contents

- [Getting Started](#getting-started)
- [DataPoint.create](#api-data-point-create)
- [Transforms](#transforms)
  - [dataPoint.transform](#api-data-point-transform)
  - [TransformExpression](#transform-expression)
- [Reducers](#reducers)
  - [Accumulator](#accumulator)
  - [PathReducer](#path-reducer)
  - [FunctionReducer](#function-reducer)
  - [Higher Order Reducers](#higher-order-reducers)
  - [Chained Reducers](#chained-reducers)
  - [EntityReducer](#entity-reducer)
  - [Collection Mapping](#reducer-collection-mapping)
- [Entities](#entities)
  - [dataPoint.addEntities](#api-data-point-add-entities)
  - [Built-in entities](#built-in-entities)
    - [Transform](#transform-entity)
    - [Entry](#entry-entity)
    - [Request](#request-entity)
    - [Hash](#hash-entity)
    - [Collection](#collection-entity)
    - [Control](#control-entity)
    - [Schema](#schema-entity)
  - [Entity ComposeReducer](#entity-compose-reducer)
  - [Extending Entities](#extending-entities)
- [dataPoint.use](#api-data-point-use)
- [dataPoint.addValue](#api-data-point-add-value)
- [Custom Entity Types](#custom-entity-types)
- [Integrations](#integrations)
- [Contributing](#contributing)
- [License](#license)

## Getting Started

This section is meant to get you started with basic concepts of DataPoint's API, for detailed API Documentation you can jump into [DataPoint.create](#api-data-point-create) section and move from there.

### Hello World Example

Trivial example of transforming a given **input** with a [FunctionReducer](#function-reducer).

```js<commit_msg>docs($docs): Add video link to readme<commit_after># DataPoint

[![Build Status](https://travis-ci.org/ViacomInc/data-point.svg?branch=ci)](https://travis-ci.org/ViacomInc/data-point) [![Coverage Status](https://coveralls.io/repos/github/ViacomInc/data-point/badge.svg?branch=ci)](https://coveralls.io/github/ViacomInc/data-point?branch=ci)

> JavaScript Utility for collecting, processing and transforming data.

DataPoint helps you reason with and streamline your data processing layer. With it you can collect, process, and transform data from multiple sources, and deliver the output in a tailored format to your end consumer. 

**Prerequisites**

Node v4 LTS or higher

**Installing**

```bash
npm install --save data-point
```

## Table of Contents

- [Getting Started](#getting-started)
- [DataPoint.create](#api-data-point-create)
- [Transforms](#transforms)
  - [dataPoint.transform](#api-data-point-transform)
  - [TransformExpression](#transform-expression)
- [Reducers](#reducers)
  - [Accumulator](#accumulator)
  - [PathReducer](#path-reducer)
  - [FunctionReducer](#function-reducer)
  - [Higher Order Reducers](#higher-order-reducers)
  - [Chained Reducers](#chained-reducers)
  - [EntityReducer](#entity-reducer)
  - [Collection Mapping](#reducer-collection-mapping)
- [Entities](#entities)
  - [dataPoint.addEntities](#api-data-point-add-entities)
  - [Built-in entities](#built-in-entities)
    - [Transform](#transform-entity)
    - [Entry](#entry-entity)
    - [Request](#request-entity)
    - [Hash](#hash-entity)
    - [Collection](#collection-entity)
    - [Control](#control-entity)
    - [Schema](#schema-entity)
  - [Entity ComposeReducer](#entity-compose-reducer)
  - [Extending Entities](#extending-entities)
- [dataPoint.use](#api-data-point-use)
- [dataPoint.addValue](#api-data-point-add-value)
- [Custom Entity Types](#custom-entity-types)
- [Integrations](#integrations)
- [Contributing](#contributing)
- [License](#license)

## Getting Started

This section is meant to get you started with basic concepts of DataPoint's API, for detailed API Documentation you can jump into [DataPoint.create](#api-data-point-create) section and move from there.

Additionally there is a [Hello World](https://www.youtube.com/watch?v=3VxP-FIWgF0) youtube tutorial that explains the data-point basics.

### Hello World Example

Trivial example of transforming a given **input** with a [FunctionReducer](#function-reducer).

```js
{'fraction_non_alphanumeric': 0.1540574809805579, 'fraction_numerical': 0.0008453085376162299, 'mean_word_length': 5.067948717948718, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 9, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6009462', 'n_tokens_mistral': 1589, 'n_tokens_neox': 1462, 'n_words': 315}