Sha256: 937451f195716963a8cb21aa8438ecde9c4a3ed2eabfff281ef79a16ac27a259

Contents?: true

Size: 985 Bytes

Versions: 49

Compression:

Stored size: 985 Bytes

Contents

'use strict';

module.exports = function defFunc(ajv) {
  defFunc.definition = {
    type: 'number',
    macro: function (schema, parentSchema) {
      var min = schema[0]
        , max = schema[1]
        , exclusive = parentSchema.exclusiveRange;

      validateRangeSchema(min, max, exclusive);

      return {
        minimum: min,
        exclusiveMinimum: exclusive,
        maximum: max,
        exclusiveMaximum: exclusive
      };
    },
    metaSchema: {
      type: 'array',
      minItems: 2,
      maxItems: 2,
      items: { type: 'number' }
    }
  };

  ajv.addKeyword('range', defFunc.definition);
  ajv.addKeyword('exclusiveRange');
  return ajv;

  function validateRangeSchema(min, max, exclusive) {
    if (exclusive !== undefined && typeof exclusive != 'boolean')
      throw new Error('Invalid schema for exclusiveRange keyword, should be boolean');

    if (min > max || (exclusive && min == max))
      throw new Error('There are no numbers in range');
  }
};

Version data entries

49 entries across 49 versions & 4 rubygems

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