UNPKG

analytics-react-native

Version:

A React Native client for [Segment](https://segment.com) — The hassle-free way to integrate analytics into any application.

72 lines (60 loc) 1.39 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = validate; var _typeOf = require('type-of'); var _typeOf2 = _interopRequireDefault(_typeOf); var _assert = require('./assert'); var _assert2 = _interopRequireDefault(_assert); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Validation rules. */ var rules = [{ name: 'anonymousId', types: ['string', 'number'] }, { name: 'category', types: 'string' }, { name: 'context', types: 'object' }, { name: 'event', types: 'string' }, { name: 'groupId', types: ['string', 'number'] }, { name: 'integrations', types: 'object' }, { name: 'name', types: 'string' }, { name: 'previousId', types: ['string', 'number'] }, { name: 'timestamp', types: 'date' }, { name: 'userId', types: ['string', 'number'] }]; /** * Validate an options `obj`. * * @param {Object} obj */ function validate(obj) { (0, _assert2.default)((0, _typeOf2.default)(obj) === 'object', 'You must pass a message object.'); rules.forEach(function (rule) { if (obj[rule.name]) { var types = [].concat(rule.types); (0, _assert2.default)(types.some(function (type) { return (0, _typeOf2.default)(obj[rule.name]) === type; }), '"' + rule.name + '" must be ' + types.join(' or ') + '.'); } }); }