Permalink
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (45 sloc) 1.31 KB

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

  • The function used to validate the event.

Validator

type Validator = (event: any[]) => boolean;
  • Accepts an event or array of events as its sole argument.
  • Returns true if the event is valid.
  • Returns false if 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)
};