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 +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +1 -1
- data/lib/client_side_validations/action_view/form_helper.rb +2 -2
- data/lib/client_side_validations/active_model.rb +4 -2
- data/lib/client_side_validations/active_model/numericality.rb +1 -0
- data/lib/client_side_validations/config.rb +1 -3
- data/lib/client_side_validations/files.rb +2 -2
- data/lib/client_side_validations/version.rb +1 -1
- data/lib/generators/client_side_validations/copy_assets_generator.rb +1 -1
- data/vendor/assets/javascripts/rails.validations.js +48 -46
- metadata +27 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4d7bd59af2deafbb9031ad8f8e9d8e4c697b98fc80667d86ef236e0fa6a3757
|
4
|
+
data.tar.gz: 1d2f1f70cd509d862bec0a348410e40693c679989beac9c65b6741fd21110644
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efe3f62e8f2e51785e5ba1efa55680b363f19b65729514a8005b2262f786ac34821c8238524cd49854b4145bdc0f346eeb79e69c667ce975352a1c21a626e8e3
|
7
|
+
data.tar.gz: da3145b2a0dcde3672e5be485fc165530380772d8b39dcb908f726d964b0025b906bad386300394d698af61adc147802d1af3a6df4c1cd0a5c5bd0f9b9824baf
|
data/CHANGELOG.md
CHANGED
@@ -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
@@ -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.
|
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.
|
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
|
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.
|
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)
|
@@ -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(
|
8
|
-
Javascript = File.expand_path(
|
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
|
@@ -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
|
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
|
-
|
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
|
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 =
|
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 =
|
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
|
-
|
574
|
+
$__default['default'].fn.disableClientSideValidations = function () {
|
573
575
|
ClientSideValidations.disable(this);
|
574
576
|
return this;
|
575
577
|
};
|
576
578
|
|
577
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
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: []
|