validateOptions.js 745 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /* eslint-disable
  2. strict,
  3. no-param-reassign
  4. */
  5. 'use strict';
  6. const fs = require('fs');
  7. const path = require('path');
  8. const Ajv = require('ajv');
  9. const errors = require('ajv-errors');
  10. const keywords = require('ajv-keywords');
  11. const ValidationError = require('./ValidationError');
  12. const ajv = new Ajv({
  13. allErrors: true,
  14. jsonPointers: true,
  15. });
  16. errors(ajv);
  17. keywords(ajv, ['instanceof', 'typeof']);
  18. const validateOptions = (schema, options, name) => {
  19. if (typeof schema === 'string') {
  20. schema = fs.readFileSync(path.resolve(schema), 'utf8');
  21. schema = JSON.parse(schema);
  22. }
  23. if (!ajv.validate(schema, options)) {
  24. throw new ValidationError(ajv.errors, name);
  25. }
  26. return true;
  27. };
  28. module.exports = validateOptions;