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.
- Host: GitHub
- URL: https://github.com/uttori/uttori-plugin-analytics-json-file
- Owner: uttori
- License: mit
- Created: 2019-08-17T02:59:20.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T08:47:45.000Z (over 3 years ago)
- Last Synced: 2025-09-26T18:38:00.186Z (9 months ago)
- Topics: analytics, json-files, uttori
- Language: JavaScript
- Size: 1.56 MB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://www.npmjs.org/package/@uttori/plugin-analytics-json-file)
[](https://www.npmjs.org/package/@uttori/plugin-analytics-json-file)
[](https://travis-ci.com/uttori/uttori-plugin-analytics-json-file)
[](https://david-dm.org/uttori/uttori-plugin-analytics-json-file)
[](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)