1var Ajv = require('ajv') 2var HARError = require('./error') 3var schemas = require('har-schema') 4 5var ajv 6 7function createAjvInstance () { 8 var ajv = new Ajv({ 9 allErrors: true 10 }) 11 ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json')) 12 ajv.addSchema(schemas) 13 14 return ajv 15} 16 17function validate (name, data, next) { 18 data = data || {} 19 20 // validator config 21 ajv = ajv || createAjvInstance() 22 23 var validate = ajv.getSchema(name + '.json') 24 25 var valid = validate(data) 26 27 // callback? 28 if (typeof next === 'function') { 29 return next(!valid ? new HARError(validate.errors) : null, valid) 30 } 31 32 return valid 33} 34 35exports.afterRequest = function (data, next) { 36 return validate('afterRequest', data, next) 37} 38 39exports.beforeRequest = function (data, next) { 40 return validate('beforeRequest', data, next) 41} 42 43exports.browser = function (data, next) { 44 return validate('browser', data, next) 45} 46 47exports.cache = function (data, next) { 48 return validate('cache', data, next) 49} 50 51exports.content = function (data, next) { 52 return validate('content', data, next) 53} 54 55exports.cookie = function (data, next) { 56 return validate('cookie', data, next) 57} 58 59exports.creator = function (data, next) { 60 return validate('creator', data, next) 61} 62 63exports.entry = function (data, next) { 64 return validate('entry', data, next) 65} 66 67exports.har = function (data, next) { 68 return validate('har', data, next) 69} 70 71exports.header = function (data, next) { 72 return validate('header', data, next) 73} 74 75exports.log = function (data, next) { 76 return validate('log', data, next) 77} 78 79exports.page = function (data, next) { 80 return validate('page', data, next) 81} 82 83exports.pageTimings = function (data, next) { 84 return validate('pageTimings', data, next) 85} 86 87exports.postData = function (data, next) { 88 return validate('postData', data, next) 89} 90 91exports.query = function (data, next) { 92 return validate('query', data, next) 93} 94 95exports.request = function (data, next) { 96 return validate('request', data, next) 97} 98 99exports.response = function (data, next) { 100 return validate('response', data, next) 101} 102 103exports.timings = function (data, next) { 104 return validate('timings', data, next) 105} 106