An open API service indexing awesome lists of open source software.

https://github.com/uttori/uttori-plugin-analytics-json-file

Analytics provider for Uttori that uses JSON files.
https://github.com/uttori/uttori-plugin-analytics-json-file

analytics json-files uttori

Last synced: 5 months ago
JSON representation

Analytics provider for Uttori that uses JSON files.

Awesome Lists containing this project

README

          

[![view on npm](https://img.shields.io/npm/v/@uttori/plugin-analytics-json-file.svg)](https://www.npmjs.org/package/@uttori/plugin-analytics-json-file)
[![npm module downloads](https://img.shields.io/npm/dt/@uttori/plugin-analytics-json-file.svg)](https://www.npmjs.org/package/@uttori/plugin-analytics-json-file)
[![Build Status](https://travis-ci.com/uttori/uttori-plugin-analytics-json-file.svg?branch=master)](https://travis-ci.com/uttori/uttori-plugin-analytics-json-file)
[![Dependency Status](https://david-dm.org/uttori/uttori-plugin-analytics-json-file.svg)](https://david-dm.org/uttori/uttori-plugin-analytics-json-file)
[![Coverage Status](https://coveralls.io/repos/uttori/uttori-plugin-analytics-json-file/badge.svg?branch=master)](https://coveralls.io/r/uttori/uttori-plugin-analytics-json-file?branch=master)

# Uttori Analytics Provider - JSON File

Uttori analytics provider using JSON files on disk.

## Install

```bash
npm install --save @uttori/plugin-analytics-json-file
```

## Config

```js
{
// Registration Events
events: {
getCount: ['document-view-count'],
getPopularDocuments: ['popular-documents'],
updateDocument: ['document-save', 'document-delete'],
validateConfig: ['validate-config'],
},

// Directory files will be uploaded to.
directory: '',

// Name of the JSON file.
name: 'visits',

// File extension to use for the JSON file.
extension: 'json',
}
```

* * *

## API Reference

## AnalyticsPlugin
Page view analytics for Uttori documents using JSON files stored on the local file system.

**Kind**: global class
**Properties**

| Name | Type | Description |
| --- | --- | --- |
| config | object | The configuration object. |

* [AnalyticsPlugin](#AnalyticsPlugin)
* [.configKey](#AnalyticsPlugin.configKey) ⇒ string
* [.defaultConfig()](#AnalyticsPlugin.defaultConfig) ⇒ object
* [.validateConfig(config, _context)](#AnalyticsPlugin.validateConfig)
* [.register(context)](#AnalyticsPlugin.register)
* [.updateDocument(analytics)](#AnalyticsPlugin.updateDocument) ⇒ object
* [.getCount(analytics)](#AnalyticsPlugin.getCount) ⇒ object
* [.getPopularDocuments(analytics)](#AnalyticsPlugin.getPopularDocuments) ⇒ object

### AnalyticsPlugin.configKey ⇒ string
The configuration key for plugin to look for in the provided configuration.

**Kind**: static property of [AnalyticsPlugin](#AnalyticsPlugin)
**Returns**: string - The configuration key.
**Example** *(AnalyticsPlugin.configKey)*
```js
const config = { ...AnalyticsPlugin.defaultConfig(), ...context.config[AnalyticsPlugin.configKey] };
```

### AnalyticsPlugin.defaultConfig() ⇒ object
The default configuration.

**Kind**: static method of [AnalyticsPlugin](#AnalyticsPlugin)
**Returns**: object - The configuration.
**Example** *(AnalyticsPlugin.defaultConfig())*
```js
const config = { ...AnalyticsPlugin.defaultConfig(), ...context.config[AnalyticsPlugin.configKey] };
```

### AnalyticsPlugin.validateConfig(config, _context)
Validates the provided configuration for required entries.

**Kind**: static method of [AnalyticsPlugin](#AnalyticsPlugin)

| Param | Type | Description |
| --- | --- | --- |
| config | object | A configuration object. |
| config.configKey | object | A configuration object specifically for this plugin. |
| config.configKey.urls | Array.<object> | A collection of Uttori documents. |
| config.configKey.url_filters | Array.<RegExp> | A collection of Regular Expression URL filters. |
| config.configKey.base_url | string | The base URL (ie https://domain.tld) for all documents. |
| config.configKey.directory | string | The path to the location you want the sitemap file to be writtent to. |
| _context | object | A Uttori-like context (unused). |

**Example** *(AnalyticsPlugin.validateConfig(config, _context))*
```js
AnalyticsPlugin.validateConfig({ ... });
```

### AnalyticsPlugin.register(context)
Register the plugin with a provided set of events on a provided Hook system.

**Kind**: static method of [AnalyticsPlugin](#AnalyticsPlugin)

| Param | Type | Description |
| --- | --- | --- |
| context | object | A Uttori-like context. |
| context.hooks | object | An event system / hook system to use. |
| context.hooks.on | function | An event registration function. |
| context.config | object | A provided configuration to use. |
| context.config.events | object | An object whose keys correspong to methods, and contents are events to listen for. |

**Example** *(AnalyticsPlugin.register(context))*
```js
const context = {
hooks: {
on: (event, callback) => { ... },
},
config: {
[AnalyticsPlugin.configKey]: {
...,
events: {
updateDocument: ['document-save', 'document-delete'],
validateConfig: ['validate-config'],
},
},
},
};
AnalyticsPlugin.register(context);
```

### AnalyticsPlugin.updateDocument(analytics) ⇒ object
Wrapper function for calling update.

**Kind**: static method of [AnalyticsPlugin](#AnalyticsPlugin)
**Returns**: object - The provided document.

| Param | Type | Description |
| --- | --- | --- |
| analytics | object | An AnalyticsProvider instance. |

**Example** *(AnalyticsPlugin.updateDocument(analytics))*
```js
const context = {
config: {
[AnalyticsPlugin.configKey]: {
...,
},
},
};
AnalyticsPlugin.updateDocument(document, null);
```

### AnalyticsPlugin.getCount(analytics) ⇒ object
Wrapper function for calling update.

**Kind**: static method of [AnalyticsPlugin](#AnalyticsPlugin)
**Returns**: object - The provided document.

| Param | Type | Description |
| --- | --- | --- |
| analytics | object | An AnalyticsProvider instance. |

**Example** *(AnalyticsPlugin.getCount(analytics, slug))*
```js
const context = {
config: {
[AnalyticsPlugin.configKey]: {
...,
},
},
};
AnalyticsPlugin.getCount(analytics, slug);
```

### AnalyticsPlugin.getPopularDocuments(analytics) ⇒ object
Wrapper function for calling update.

**Kind**: static method of [AnalyticsPlugin](#AnalyticsPlugin)
**Returns**: object - The provided document.

| Param | Type | Description |
| --- | --- | --- |
| analytics | object | An AnalyticsProvider instance. |

**Example** *(AnalyticsPlugin.updateDocument(analytics))*
```js
const context = {
config: {
[AnalyticsPlugin.configKey]: {
...,
},
},
};
AnalyticsPlugin.getPopularDocuments(analytics);
```

* * *

## Tests

To run the test suite, first install the dependencies, then run `npm test`:

```bash
npm install
npm test
DEBUG=Uttori* npm test
```

## Contributors

* [Matthew Callis](https://github.com/MatthewCallis)

## License

* [MIT](LICENSE)