Sha256: 7b36aa45b2518066ef9019ec725f83981c7dfbb93cd6574e464726167ed87300

Contents?: true

Size: 1.41 KB

Versions: 49

Compression:

Stored size: 1.41 KB

Contents

'use strict';

module.exports = function defFunc(ajv) {
  defFunc.definition = {
    type: 'object',
    compile: function(schema) {
      var validate = ajv.compile(schema);
      return ajv._opts.allErrors ? vAllErrors : vBreakOnError;

      function vBreakOnError(data) {
        for (var prop in data) {
          if (!validate(prop)) {
            vBreakOnError.errors = validate.errors;
            addPropertyNameError(vBreakOnError.errors, prop);
            return false;
          }
        }
        return true;
      }

      function vAllErrors(data) {
        var errors = [];
        for (var prop in data) {
          if (!validate(prop)) {
            errors = errors.concat(validate.errors);
            addPropertyNameError(errors, prop);
          }
        }
        if (errors.length) vAllErrors.errors = errors;
        return errors.length == 0;
      }

      function addPropertyNameError(errors, propName) {
        errors.push({
          keyword: 'propertyNames',
          params: { propertyName: propName },
          message: 'should have valid property name of "' + propName + '"'
        });
      }
    },
    metaSchema: {
      $ref: ajv._opts.v5
            ? 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#'
            : 'http://json-schema.org/draft-04/schema#'
    },
    errors: true
  };

  ajv.addKeyword('propertyNames', defFunc.definition);
  return ajv;
};

Version data entries

49 entries across 49 versions & 4 rubygems

Version Path
ilog-0.4.1 node_modules/ajv-keywords/keywords/propertyNames.js
ilog-0.4.0 node_modules/ajv-keywords/keywords/propertyNames.js
ilog-0.3.3 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-18.0.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.21.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.20.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.19.1 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.19.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.18.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.17.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.16.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.15.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.14.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.13.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.12.2 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.12.1 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.12.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.11.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.10.0 node_modules/ajv-keywords/keywords/propertyNames.js
govuk_publishing_components-17.9.0 node_modules/ajv-keywords/keywords/propertyNames.js