ensure
Returns a new event definition whose events will first go through the validator before being passed to their target. Events that don't pass the validator won't reach their targets.
Import
import ensure from '@redux-beacon/ensure';Syntax
ensure(validator, eventDef)Parameters
validator:ValidatorThe function used to validate the event.
eventDef:EventDefinitionThe event you want to validate.
Validator
type Validator = (event: any[]) => boolean;Accepts an event or array of events as its sole argument.
Returns
trueif the event is valid.Returns
falseif the event is not valid.
Example
import joi from 'joi';
import ensure from '@redux-beacon/ensure'
const pageview = (action, prevState) => ({
hitType: 'pageview',
route: action.payload.location.pathname,
referrer: prevState.currentRoute,
});
// Returns true if the event matches the schema
const isValidPageView = event =>
!joi.validate(event, joi.object().keys({
hitType: joi.string().only('pageview').required(),
page: joi.string().disallow('/404'),
title: joi.string(),
location: joi.string(),
})).error;
const eventsMap = {
LOCATION_CHANGE: ensure(isValidPageView, pageview)
};Last updated