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
JavaScript
;
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 ') + '.');
}
});
}