Sha256: bd872e5194b101c46ed5d3c9cf9792e920ed1a1e3df94a534a37a70484324001

Contents?: true

Size: 985 Bytes

Versions: 131

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 exclusive === true
              ? {exclusiveMinimum: min, exclusiveMaximum: max}
              : {minimum: min, maximum: max};
    },
    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

131 entries across 77 versions & 13 rubygems

Version Path
rapid_stack-0.2.0 templates/frontend/node_modules/webpack/node_modules/ajv-keywords/keywords/range.js
rapid_stack-0.1.1 templates/FrontEnd/node_modules/webpack/node_modules/ajv-keywords/keywords/range.js
rapid_stack-0.1.0 templates/FrontEnd/node_modules/webpack/node_modules/ajv-keywords/keywords/range.js
optimacms-0.1.61 spec/dummy/node_modules/ajv-keywords/keywords/range.js
disco_app-0.18.0 test/dummy/node_modules/ajv-keywords/keywords/range.js
disco_app-0.18.2 test/dummy/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/@rails/webpacker/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/style-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/css-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/compression-webpack-plugin/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/file-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/sass-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.16.1 test/dummy/node_modules/babel-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.15.2 test/dummy/node_modules/@rails/webpacker/node_modules/ajv-keywords/keywords/range.js
disco_app-0.15.2 test/dummy/node_modules/ajv-keywords/keywords/range.js
disco_app-0.15.2 test/dummy/node_modules/css-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.15.2 test/dummy/node_modules/file-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.15.2 test/dummy/node_modules/style-loader/node_modules/ajv-keywords/keywords/range.js
disco_app-0.15.2 test/dummy/node_modules/babel-loader/node_modules/ajv-keywords/keywords/range.js