client_side_validations 17.0.0 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4bcd7d9d20f8b13d6cc5537d879d8f3f76835501d977a585898ce69ad6a6392
4
- data.tar.gz: cb32cc92ff6d52122a7c2990e7c50cf93c4d48fb3a52bfdb51ed5e3cf1c760c2
3
+ metadata.gz: b4d7bd59af2deafbb9031ad8f8e9d8e4c697b98fc80667d86ef236e0fa6a3757
4
+ data.tar.gz: 1d2f1f70cd509d862bec0a348410e40693c679989beac9c65b6741fd21110644
5
5
  SHA512:
6
- metadata.gz: ea2cc5dfe1a81c6b25b7e962ea0d639e44f3e76bf392c5ce1df6db68b4658062236ec6814eb7c3d8cf9335a1f9209e4160b0acdd824b8826d1db7a9ecdde7f50
7
- data.tar.gz: 7ecf8d894db6009a43ffb0d7084cf95e1ddd67b824b170efbf3610b2cd00aca208631159bb9510f68cafd4ca028fdf4ccb36f4c9fcb83cde446f07e21edc35b1
6
+ metadata.gz: efe3f62e8f2e51785e5ba1efa55680b363f19b65729514a8005b2262f786ac34821c8238524cd49854b4145bdc0f346eeb79e69c667ce975352a1c21a626e8e3
7
+ data.tar.gz: da3145b2a0dcde3672e5be485fc165530380772d8b39dcb908f726d964b0025b906bad386300394d698af61adc147802d1af3a6df4c1cd0a5c5bd0f9b9824baf
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 17.1.0 / 2020-10-10
4
+
5
+ * [FEATURE] Allow Ruby 3.0.0
6
+ * [ENHANCEMENT] Test against latest Ruby 2.7.2
7
+ * [ENHANCEMENT] Update QUnit to 2.11.3
8
+ * [ENHANCEMENT] Update development dependencies
9
+
3
10
  ## 17.0.0 / 2020-05-16
4
11
 
5
12
  * [FEATURE] Drop Ruby 2.3 support
data/README.md CHANGED
@@ -543,7 +543,7 @@ on how to properly submit issues and pull requests.
543
543
 
544
544
  ## Legal ##
545
545
 
546
- [DockYard](https://dockyard.com/), LLC © 2012-2019
546
+ [DockYard](https://dockyard.com/), LLC © 2012-2020
547
547
 
548
548
  [@dockyard](https://twitter.com/dockyard)
549
549
 
@@ -98,10 +98,10 @@ module ClientSideValidations
98
98
  def add_validator(validator_hash, validation_hash, name, attr)
99
99
  if validation_hash.key?(attr)
100
100
  validator_hash[name] = validation_hash[attr]
101
- elsif attr.to_s.ends_with?('_id')
101
+ elsif attr.to_s.end_with?('_id')
102
102
  association_name = attr.to_s.gsub(/_id\Z/, '').to_sym
103
103
  add_validator_with_association validator_hash, validation_hash, name, association_name
104
- elsif attr.to_s.ends_with?('_ids')
104
+ elsif attr.to_s.end_with?('_ids')
105
105
  association_name = attr.to_s.gsub(/_ids\Z/, '').pluralize.to_sym
106
106
  add_validator_with_association validator_hash, validation_hash, name, association_name
107
107
  end
@@ -36,9 +36,11 @@ module ClientSideValidations
36
36
  module Validations
37
37
  include ClientSideValidations::ActiveModel::Conditionals
38
38
 
39
+ ATTRIBUTES_DENYLIST = [nil, :block].freeze
40
+
39
41
  def client_side_validation_hash(force = nil)
40
42
  _validators.inject({}) do |attr_hash, attr|
41
- next attr_hash if [nil, :block].include?(attr[0])
43
+ next attr_hash if ATTRIBUTES_DENYLIST.include?(attr[0])
42
44
 
43
45
  validator_hash = validator_hash_for(attr, force)
44
46
 
@@ -91,7 +93,7 @@ module ClientSideValidations
91
93
  end
92
94
 
93
95
  def will_save_change?(options)
94
- options.is_a?(Symbol) && (options.to_s.ends_with?('changed?') || options.to_s.starts_with?('will_save_change_to'))
96
+ options.is_a?(Symbol) && (options.to_s.end_with?('changed?') || options.to_s.start_with?('will_save_change_to'))
95
97
  end
96
98
 
97
99
  def check_conditionals(attr, validator, force)
@@ -7,6 +7,7 @@ module ClientSideValidations
7
7
 
8
8
  def self.included(base)
9
9
  @@option_map.merge!(base::CHECKS.keys.inject({}) { |acc, elem| acc.merge!(elem => elem) })
10
+ super
10
11
  end
11
12
 
12
13
  def client_side_hash(model, attribute, force = nil)
@@ -3,9 +3,7 @@
3
3
  module ClientSideValidations
4
4
  module Config
5
5
  class << self
6
- attr_accessor :disabled_validators
7
- attr_accessor :number_format_with_locale
8
- attr_accessor :root_path
6
+ attr_accessor :disabled_validators, :number_format_with_locale, :root_path
9
7
  end
10
8
 
11
9
  self.disabled_validators = []
@@ -4,7 +4,7 @@
4
4
 
5
5
  module ClientSideValidations
6
6
  module Files
7
- Initializer = File.expand_path(File.dirname(__FILE__) + '/../generators/templates/client_side_validations/initializer.rb')
8
- Javascript = File.expand_path(File.dirname(__FILE__) + '/../../vendor/assets/javascripts/rails.validations.js')
7
+ Initializer = File.expand_path('../generators/templates/client_side_validations/initializer.rb', __dir__)
8
+ Javascript = File.expand_path('../../vendor/assets/javascripts/rails.validations.js', __dir__)
9
9
  end
10
10
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClientSideValidations
4
- VERSION = '17.0.0'
4
+ VERSION = '17.1.0'
5
5
  end
@@ -4,7 +4,7 @@ module ClientSideValidations
4
4
  module Generators
5
5
  class CopyAssetsGenerator < Rails::Generators::Base
6
6
  def copy_javascript_asset
7
- return unless self.class == CopyAssetsGenerator || copy_assets?
7
+ return unless instance_of?(CopyAssetsGenerator) || copy_assets?
8
8
 
9
9
  assets.each do |asset|
10
10
  source_paths << asset[:path]
@@ -7,10 +7,12 @@
7
7
  (function (global, factory) {
8
8
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
9
9
  typeof define === 'function' && define.amd ? define(['jquery'], factory) :
10
- (global = global || self, global.ClientSideValidations = factory(global.$));
10
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ClientSideValidations = factory(global.$));
11
11
  }(this, (function ($) { 'use strict';
12
12
 
13
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
14
16
 
15
17
  function _typeof(obj) {
16
18
  "@babel/helpers - typeof";
@@ -78,25 +80,25 @@
78
80
  input: function input(form) {
79
81
  return {
80
82
  'focusout.ClientSideValidations': function focusoutClientSideValidations() {
81
- $(this).isValid(form.ClientSideValidations.settings.validators);
83
+ $__default['default'](this).isValid(form.ClientSideValidations.settings.validators);
82
84
  },
83
85
  'change.ClientSideValidations': function changeClientSideValidations() {
84
- $(this).data('changed', true);
86
+ $__default['default'](this).data('changed', true);
85
87
  },
86
88
  'element:validate:after.ClientSideValidations': function elementValidateAfterClientSideValidations(eventData) {
87
- ClientSideValidations.callbacks.element.after($(this), eventData);
89
+ ClientSideValidations.callbacks.element.after($__default['default'](this), eventData);
88
90
  },
89
91
  'element:validate:before.ClientSideValidations': function elementValidateBeforeClientSideValidations(eventData) {
90
- ClientSideValidations.callbacks.element.before($(this), eventData);
92
+ ClientSideValidations.callbacks.element.before($__default['default'](this), eventData);
91
93
  },
92
94
  'element:validate:fail.ClientSideValidations': function elementValidateFailClientSideValidations(eventData, message) {
93
- var $element = $(this);
95
+ var $element = $__default['default'](this);
94
96
  ClientSideValidations.callbacks.element.fail($element, message, function () {
95
97
  return form.ClientSideValidations.addError($element, message);
96
98
  }, eventData);
97
99
  },
98
100
  'element:validate:pass.ClientSideValidations': function elementValidatePassClientSideValidations(eventData) {
99
- var $element = $(this);
101
+ var $element = $__default['default'](this);
100
102
  ClientSideValidations.callbacks.element.pass($element, function () {
101
103
  return form.ClientSideValidations.removeError($element);
102
104
  }, eventData);
@@ -116,7 +118,7 @@
116
118
  },
117
119
  enablers: {
118
120
  form: function form(_form2) {
119
- var $form = $(_form2);
121
+ var $form = $__default['default'](_form2);
120
122
  _form2.ClientSideValidations = {
121
123
  settings: $form.data('clientSideValidations'),
122
124
  addError: function addError(element, message) {
@@ -138,23 +140,23 @@
138
140
  });
139
141
  },
140
142
  input: function input(_input) {
141
- var $input = $(_input);
143
+ var $input = $__default['default'](_input);
142
144
  var form = _input.form;
143
- var $form = $(form);
145
+ var $form = $__default['default'](form);
144
146
  var eventsToBind = ClientSideValidations.eventsToBind.input(form);
145
147
 
146
148
  for (var eventName in eventsToBind) {
147
149
  var eventFunction = eventsToBind[eventName];
148
150
  $input.filter(':not(:radio):not([id$=_confirmation])').each(function () {
149
- return $(this).attr('data-validate', true);
151
+ return $__default['default'](this).attr('data-validate', true);
150
152
  }).on(eventName, eventFunction);
151
153
  }
152
154
 
153
155
  $input.filter(':checkbox').on('change.ClientSideValidations', function () {
154
- $(this).isValid(form.ClientSideValidations.settings.validators);
156
+ $__default['default'](this).isValid(form.ClientSideValidations.settings.validators);
155
157
  });
156
158
  $input.filter('[id$=_confirmation]').each(function () {
157
- var $element = $(this);
159
+ var $element = $__default['default'](this);
158
160
  var $elementToConfirm = $form.find('#' + this.id.match(/(.+)_confirmation/)[1] + ':input');
159
161
 
160
162
  if ($elementToConfirm.length) {
@@ -162,7 +164,7 @@
162
164
 
163
165
  for (var _eventName in _eventsToBind) {
164
166
  var _eventFunction = _eventsToBind[_eventName];
165
- $('#' + $element.attr('id')).on(_eventName, _eventFunction);
167
+ $__default['default']('#' + $element.attr('id')).on(_eventName, _eventFunction);
166
168
  }
167
169
  }
168
170
  });
@@ -171,11 +173,11 @@
171
173
  formBuilders: {
172
174
  'ActionView::Helpers::FormBuilder': {
173
175
  add: function add(element, settings, message) {
174
- var form = $(element[0].form);
176
+ var form = $__default['default'](element[0].form);
175
177
 
176
178
  if (element.data('valid') !== false && form.find("label.message[for='" + element.attr('id') + "']")[0] == null) {
177
- var inputErrorField = $(settings.input_tag);
178
- var labelErrorField = $(settings.label_tag);
179
+ var inputErrorField = $__default['default'](settings.input_tag);
180
+ var labelErrorField = $__default['default'](settings.label_tag);
179
181
  var label = form.find("label[for='" + element.attr('id') + "']:not(.message)");
180
182
 
181
183
  if (element.attr('autofocus')) {
@@ -193,11 +195,11 @@
193
195
  form.find("label.message[for='" + element.attr('id') + "']").text(message);
194
196
  },
195
197
  remove: function remove(element, settings) {
196
- var form = $(element[0].form);
197
- var inputErrorFieldClass = $(settings.input_tag).attr('class');
198
+ var form = $__default['default'](element[0].form);
199
+ var inputErrorFieldClass = $__default['default'](settings.input_tag).attr('class');
198
200
  var inputErrorField = element.closest('.' + inputErrorFieldClass.replace(/ /g, '.'));
199
201
  var label = form.find("label[for='" + element.attr('id') + "']:not(.message)");
200
- var labelErrorFieldClass = $(settings.label_tag).attr('class');
202
+ var labelErrorFieldClass = $__default['default'](settings.label_tag).attr('class');
201
203
  var labelErrorField = label.closest('.' + labelErrorFieldClass.replace(/ /g, '.'));
202
204
 
203
205
  if (inputErrorField[0]) {
@@ -222,13 +224,13 @@
222
224
  },
223
225
  validators: {
224
226
  all: function all() {
225
- return $.extend({}, ClientSideValidations.validators.local, ClientSideValidations.validators.remote);
227
+ return $__default['default'].extend({}, ClientSideValidations.validators.local, ClientSideValidations.validators.remote);
226
228
  },
227
229
  local: {},
228
230
  remote: {}
229
231
  },
230
232
  disable: function disable(target) {
231
- var $target = $(target);
233
+ var $target = $__default['default'](target);
232
234
  $target.off('.ClientSideValidations');
233
235
 
234
236
  if ($target.is('form')) {
@@ -236,12 +238,12 @@
236
238
  } else {
237
239
  $target.removeData(['changed', 'valid']);
238
240
  $target.filter(':input').each(function () {
239
- $(this).removeAttr('data-validate');
241
+ $__default['default'](this).removeAttr('data-validate');
240
242
  });
241
243
  }
242
244
  },
243
245
  reset: function reset(form) {
244
- var $form = $(form);
246
+ var $form = $__default['default'](form);
245
247
  ClientSideValidations.disable(form);
246
248
 
247
249
  for (var key in form.ClientSideValidations.settings.validators) {
@@ -253,12 +255,12 @@
253
255
  start: function start() {
254
256
  if (window.Turbolinks != null && window.Turbolinks.supported) {
255
257
  var initializeOnEvent = window.Turbolinks.EVENTS != null ? 'page:change' : 'turbolinks:load';
256
- $(document).on(initializeOnEvent, function () {
257
- return $(ClientSideValidations.selectors.forms).validate();
258
+ $__default['default'](document).on(initializeOnEvent, function () {
259
+ return $__default['default'](ClientSideValidations.selectors.forms).validate();
258
260
  });
259
261
  } else {
260
- $(function () {
261
- return $(ClientSideValidations.selectors.forms).validate();
262
+ $__default['default'](function () {
263
+ return $__default['default'](ClientSideValidations.selectors.forms).validate();
262
264
  });
263
265
  }
264
266
  }
@@ -375,7 +377,7 @@
375
377
 
376
378
  if (validationElement.length === 1) {
377
379
  var numberFormat = $form[0].ClientSideValidations.settings.number_format;
378
- var otherFormattedValue = $.trim(validationElement.val()).replace(new RegExp('\\' + numberFormat.separator, 'g'), '.');
380
+ var otherFormattedValue = $__default['default'].trim(validationElement.val()).replace(new RegExp('\\' + numberFormat.separator, 'g'), '.');
379
381
 
380
382
  if (!isNaN(parseFloat(otherFormattedValue))) {
381
383
  return otherFormattedValue;
@@ -426,9 +428,9 @@
426
428
  return;
427
429
  }
428
430
 
429
- var $form = $(element[0].form);
431
+ var $form = $__default['default'](element[0].form);
430
432
  var numberFormat = $form[0].ClientSideValidations.settings.number_format;
431
- var formattedValue = $.trim(value).replace(new RegExp('\\' + numberFormat.separator, 'g'), '.');
433
+ var formattedValue = $__default['default'].trim(value).replace(new RegExp('\\' + numberFormat.separator, 'g'), '.');
432
434
  return runValidations(formattedValue, $form, options);
433
435
  };
434
436
 
@@ -502,7 +504,7 @@
502
504
 
503
505
  var confirmationLocalValidator = function confirmationLocalValidator(element, options) {
504
506
  var value = element.val();
505
- var confirmationValue = $('#' + element.attr('id') + '_confirmation').val();
507
+ var confirmationValue = $__default['default']('#' + element.attr('id') + '_confirmation').val();
506
508
 
507
509
  if (!options.case_sensitive) {
508
510
  value = value.toLowerCase();
@@ -521,12 +523,12 @@
521
523
  }
522
524
 
523
525
  if (otherValue === value) {
524
- $(currentElement).data('notLocallyUnique', true);
526
+ $__default['default'](currentElement).data('notLocallyUnique', true);
525
527
  return false;
526
528
  }
527
529
 
528
- if ($(currentElement).data('notLocallyUnique')) {
529
- $(currentElement).removeData('notLocallyUnique').data('changed', true);
530
+ if ($__default['default'](currentElement).data('notLocallyUnique')) {
531
+ $__default['default'](currentElement).removeData('notLocallyUnique').data('changed', true);
530
532
  }
531
533
 
532
534
  return true;
@@ -544,7 +546,7 @@
544
546
  var value = element.val();
545
547
  var valid = true;
546
548
  form.find(':input[name^="' + matches[1] + '"][name$="' + matches[2] + '"]').not(element).each(function () {
547
- var otherValue = $(this).val();
549
+ var otherValue = $__default['default'](this).val();
548
550
 
549
551
  if (!isLocallyUnique(this, value, otherValue, options.case_sensitive)) {
550
552
  valid = false;
@@ -569,12 +571,12 @@
569
571
  uniqueness: uniquenessLocalValidator
570
572
  };
571
573
 
572
- $.fn.disableClientSideValidations = function () {
574
+ $__default['default'].fn.disableClientSideValidations = function () {
573
575
  ClientSideValidations.disable(this);
574
576
  return this;
575
577
  };
576
578
 
577
- $.fn.enableClientSideValidations = function () {
579
+ $__default['default'].fn.enableClientSideValidations = function () {
578
580
  var _this = this;
579
581
 
580
582
  var selectors = {
@@ -597,22 +599,22 @@
597
599
  return this;
598
600
  };
599
601
 
600
- $.fn.resetClientSideValidations = function () {
602
+ $__default['default'].fn.resetClientSideValidations = function () {
601
603
  this.filter(ClientSideValidations.selectors.forms).each(function () {
602
604
  return ClientSideValidations.reset(this);
603
605
  });
604
606
  return this;
605
607
  };
606
608
 
607
- $.fn.validate = function () {
609
+ $__default['default'].fn.validate = function () {
608
610
  this.filter(ClientSideValidations.selectors.forms).each(function () {
609
- return $(this).enableClientSideValidations();
611
+ return $__default['default'](this).enableClientSideValidations();
610
612
  });
611
613
  return this;
612
614
  };
613
615
 
614
- $.fn.isValid = function (validators) {
615
- var obj = $(this[0]);
616
+ $__default['default'].fn.isValid = function (validators) {
617
+ var obj = $__default['default'](this[0]);
616
618
 
617
619
  if (obj.is('form')) {
618
620
  return validateForm(obj, validators);
@@ -654,7 +656,7 @@
654
656
  var valid = true;
655
657
  form.trigger('form:validate:before.ClientSideValidations');
656
658
  form.find(ClientSideValidations.selectors.validate_inputs).each(function () {
657
- if (!$(this).isValid(validators)) {
659
+ if (!$__default['default'](this).isValid(validators)) {
658
660
  valid = false;
659
661
  }
660
662
 
@@ -718,7 +720,7 @@
718
720
  if (element.attr('name').search(/\[([^\]]*?)\]$/) >= 0) {
719
721
  var destroyInputName = element.attr('name').replace(/\[([^\]]*?)\]$/, '[_destroy]');
720
722
 
721
- if ($("input[name='" + destroyInputName + "']").val() === '1') {
723
+ if ($__default['default']("input[name='" + destroyInputName + "']").val() === '1') {
722
724
  return true;
723
725
  }
724
726
  }
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: client_side_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 17.0.0
4
+ version: 17.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geremia Taglialatela
8
8
  - Brian Cardarella
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-05-16 00:00:00.000000000 Z
12
+ date: 2020-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -51,14 +51,14 @@ dependencies:
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.2'
54
+ version: '2.3'
55
55
  type: :development
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.2'
61
+ version: '2.3'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: byebug
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -79,14 +79,14 @@ dependencies:
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.16.0
82
+ version: 0.18.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.16.0
89
+ version: 0.18.0
90
90
  - !ruby/object:Gem::Dependency
91
91
  name: m
92
92
  requirement: !ruby/object:Gem::Requirement
@@ -149,56 +149,62 @@ dependencies:
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.83.0
152
+ version: 0.93.0
153
153
  type: :development
154
154
  prerelease: false
155
155
  version_requirements: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.83.0
159
+ version: 0.93.0
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: rubocop-performance
162
162
  requirement: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '1.5'
166
+ version: '1.8'
167
167
  type: :development
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '1.5'
173
+ version: '1.8'
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: rubocop-rails
176
176
  requirement: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '2.5'
180
+ version: '2.8'
181
181
  type: :development
182
182
  prerelease: false
183
183
  version_requirements: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '2.5'
187
+ version: '2.8'
188
188
  - !ruby/object:Gem::Dependency
189
189
  name: simplecov
190
190
  requirement: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - "~>"
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: 0.18.5
195
+ - - "<"
196
+ - !ruby/object:Gem::Version
197
+ version: '0.20'
195
198
  type: :development
196
199
  prerelease: false
197
200
  version_requirements: !ruby/object:Gem::Requirement
198
201
  requirements:
199
- - - "~>"
202
+ - - ">="
200
203
  - !ruby/object:Gem::Version
201
204
  version: 0.18.5
205
+ - - "<"
206
+ - !ruby/object:Gem::Version
207
+ version: '0.20'
202
208
  - !ruby/object:Gem::Dependency
203
209
  name: sqlite3
204
210
  requirement: !ruby/object:Gem::Requirement
@@ -233,14 +239,14 @@ dependencies:
233
239
  requirements:
234
240
  - - "~>"
235
241
  - !ruby/object:Gem::Version
236
- version: '2.0'
242
+ version: '2.1'
237
243
  type: :development
238
244
  prerelease: false
239
245
  version_requirements: !ruby/object:Gem::Requirement
240
246
  requirements:
241
247
  - - "~>"
242
248
  - !ruby/object:Gem::Version
243
- version: '2.0'
249
+ version: '2.1'
244
250
  - !ruby/object:Gem::Dependency
245
251
  name: thin
246
252
  requirement: !ruby/object:Gem::Requirement
@@ -304,13 +310,13 @@ metadata:
304
310
  bug_tracker_uri: https://github.com/DavyJonesLocker/client_side_validations/issues
305
311
  changelog_uri: https://github.com/DavyJonesLocker/client_side_validations/blob/master/CHANGELOG.md
306
312
  source_code_uri: https://github.com/DavyJonesLocker/client_side_validations
307
- post_install_message:
313
+ post_install_message:
308
314
  rdoc_options: []
309
315
  require_paths:
310
316
  - lib
311
317
  required_ruby_version: !ruby/object:Gem::Requirement
312
318
  requirements:
313
- - - "~>"
319
+ - - ">="
314
320
  - !ruby/object:Gem::Version
315
321
  version: '2.4'
316
322
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -319,8 +325,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
319
325
  - !ruby/object:Gem::Version
320
326
  version: '0'
321
327
  requirements: []
322
- rubygems_version: 3.1.2
323
- signing_key:
328
+ rubygems_version: 3.2.0.rc.1
329
+ signing_key:
324
330
  specification_version: 4
325
331
  summary: Client Side Validations
326
332
  test_files: []