diff --git a/packages/analytics-plugin-event-validation/CHANGELOG.md b/packages/analytics-plugin-event-validation/CHANGELOG.md index 8d9de208..020253cc 100644 --- a/packages/analytics-plugin-event-validation/CHANGELOG.md +++ b/packages/analytics-plugin-event-validation/CHANGELOG.md @@ -3,25 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. -## [0.1.2](https://github.com/DavidWells/analytics/compare/analytics-plugin-event-validation@0.1.1...analytics-plugin-event-validation@0.1.2) (2020-12-23) - -**Note:** Version bump only for package analytics-plugin-event-validation - +## [0.2.0](https://github.com/DavidWells/analytics/compare/analytics-plugin-event-validation@0.1.2...analytics-plugin-event-validation@0.2.0) (2022-08-30) +Added optional actions parameter for validating action names. +## [0.1.2](https://github.com/DavidWells/analytics/compare/analytics-plugin-event-validation@0.1.1...analytics-plugin-event-validation@0.1.2) (2020-12-23) +**Note:** Version bump only for package analytics-plugin-event-validation ## [0.1.1](https://github.com/DavidWells/analytics/compare/analytics-plugin-event-validation@0.1.0...analytics-plugin-event-validation@0.1.1) (2019-08-26) **Note:** Version bump only for package analytics-plugin-event-validation - - - - # 0.1.0 (2019-08-26) - ### Features * **event-validation:** add event validation plugin ([6896561](https://github.com/DavidWells/analytics/commit/6896561)) diff --git a/packages/analytics-plugin-event-validation/README.md b/packages/analytics-plugin-event-validation/README.md index fdcffa8b..d11ed76d 100644 --- a/packages/analytics-plugin-event-validation/README.md +++ b/packages/analytics-plugin-event-validation/README.md @@ -66,6 +66,12 @@ const analytics = Analytics({ 'sites', // example app:sites_cdConfigured 'user', // example app:user_signup 'widget' // example app:widget_created + ], + // Allowed actions (optional) + actions: [ + 'cdConfigured', // example app:sites_cdConfigured + 'signup', // example app:user_signup + 'created' // example app:widget_created ] }), customerIOPlugin({ diff --git a/packages/analytics-plugin-event-validation/package.json b/packages/analytics-plugin-event-validation/package.json index 7759d442..2bcba36f 100644 --- a/packages/analytics-plugin-event-validation/package.json +++ b/packages/analytics-plugin-event-validation/package.json @@ -1,6 +1,6 @@ { "name": "analytics-plugin-event-validation", - "version": "0.1.2", + "version": "0.2.0", "description": "Event validation plugin for analytics", "keywords": [ "analytics", diff --git a/packages/analytics-plugin-event-validation/src/index.js b/packages/analytics-plugin-event-validation/src/index.js index 7b8f86a4..e3db7432 100644 --- a/packages/analytics-plugin-event-validation/src/index.js +++ b/packages/analytics-plugin-event-validation/src/index.js @@ -8,8 +8,9 @@ const defaultConfig = { * @link https://getanalytics.io/plugins/event-validation/ * @param {object} pluginConfig - Plugin settings * @param {string} pluginConfig.context - Name of app event is in. Example 'api', 'app', 'site', 'cli' - * @param {boolean} pluginConfig.objects - Objects events can effect - * @param {boolean} [pluginConfig.throwOnInvalid] - Objects events can effect + * @param {string[]} pluginConfig.objects - Objects events can affect + * @param {string[]} [pluginConfig.actions] - Name of event action (clicked, viewed, created, etc) + * @param {boolean} [pluginConfig.throwOnInvalid] - Throw error if validation fails * @return {object} Analytics plugin * @example * @@ -40,6 +41,7 @@ export default function eventValidationPlugin(pluginConfig = {}) { function isValidEventName(event, config) { const validProject = [config.context] || [] const validObjects = config.objects || [] + const validActions = config.actions || [] const invalid = formatError(event) const underscoreCount = contains(event, '_') if (underscoreCount !== 1) { @@ -67,6 +69,12 @@ function isValidEventName(event, config) { if (validObjects.indexOf(object) === -1) { return invalid(`Invalid object "${object}". Must be 1 of ${JSON.stringify(validObjects)}`) } + /* Validate action */ + if (validActions.length) { + if (validActions.indexOf(action) === -1) { + return invalid(`Invalid action "${action}". Must be 1 of ${JSON.stringify(validActions)}`) + } + } return true } diff --git a/site/main/source/plugins/event-validation.md b/site/main/source/plugins/event-validation.md index 79d86315..05af3344 100644 --- a/site/main/source/plugins/event-validation.md +++ b/site/main/source/plugins/event-validation.md @@ -72,6 +72,12 @@ const analytics = Analytics({ 'sites', // example app:sites_cdConfigured 'user', // example app:user_signup 'widget' // example app:widget_created + ], + // Allowed actions (optional) + actions: [ + 'cdConfigured', // example app:sites_cdConfigured + 'signup', // example app:user_signup + 'created', // example app:widget_created ] }), customerIOPlugin({