promise.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import * as schemas from 'har-schema';
  2. import Ajv from 'ajv';
  3. import HARError from './error';
  4. let ajv;
  5. export function validate(name, data = {}) {
  6. // validator config
  7. ajv = ajv || new Ajv({
  8. allErrors: true,
  9. schemas: schemas
  10. });
  11. let validate = ajv.getSchema(name + '.json');
  12. return new Promise((resolve, reject) => {
  13. let valid = validate(data);
  14. !valid ? reject(new HARError(validate.errors)) : resolve(data);
  15. });
  16. }
  17. export function afterRequest(data) {
  18. return validate('afterRequest', data);
  19. }
  20. export function beforeRequest(data) {
  21. return validate('beforeRequest', data);
  22. }
  23. export function browser(data) {
  24. return validate('browser', data);
  25. }
  26. export function cache(data) {
  27. return validate('cache', data);
  28. }
  29. export function content(data) {
  30. return validate('content', data);
  31. }
  32. export function cookie(data) {
  33. return validate('cookie', data);
  34. }
  35. export function creator(data) {
  36. return validate('creator', data);
  37. }
  38. export function entry(data) {
  39. return validate('entry', data);
  40. }
  41. export function har(data) {
  42. return validate('har', data);
  43. }
  44. export function header(data) {
  45. return validate('header', data);
  46. }
  47. export function log(data) {
  48. return validate('log', data);
  49. }
  50. export function page(data) {
  51. return validate('page', data);
  52. }
  53. export function pageTimings(data) {
  54. return validate('pageTimings', data);
  55. }
  56. export function postData(data) {
  57. return validate('postData', data);
  58. }
  59. export function query(data) {
  60. return validate('query', data);
  61. }
  62. export function request(data) {
  63. return validate('request', data);
  64. }
  65. export function response(data) {
  66. return validate('response', data);
  67. }
  68. export function timings(data) {
  69. return validate('timings', data);
  70. }