co.validation 2.4.2 → 2.5.2

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.
@@ -3,6 +3,20 @@
3
3
  var _ = require("..");
4
4
 
5
5
  describe('createValidation', () => {
6
+ it('supports any', () => {
7
+ expect((0, _.createValidation)({
8
+ type: 'any'
9
+ })('')).toEqual({
10
+ data: '',
11
+ errors: undefined
12
+ });
13
+ expect((0, _.createValidation)({
14
+ type: 'any'
15
+ })(5)).toEqual({
16
+ data: 5,
17
+ errors: undefined
18
+ });
19
+ });
6
20
  it('supports required', () => {
7
21
  expect((0, _.createValidation)({
8
22
  type: 'required'
@@ -368,15 +382,25 @@ describe('createValidation', () => {
368
382
  });
369
383
  it('supports number', () => {
370
384
  expect((0, _.createValidation)({
371
- type: 'number',
372
- getMessage: () => 'Number'
385
+ type: 'number'
373
386
  })('1234')).toEqual({
374
387
  data: 1234,
375
388
  errors: undefined
376
389
  });
377
390
  expect((0, _.createValidation)({
378
- type: 'number',
379
- getMessage: () => 'Number'
391
+ type: 'number'
392
+ })('1234,5')).toEqual({
393
+ data: 1234.5,
394
+ errors: undefined
395
+ });
396
+ expect((0, _.createValidation)({
397
+ type: 'number'
398
+ })('1234.5')).toEqual({
399
+ data: 1234.5,
400
+ errors: undefined
401
+ });
402
+ expect((0, _.createValidation)({
403
+ type: 'number'
380
404
  })(123)).toEqual({
381
405
  data: 123,
382
406
  errors: undefined
@@ -17,6 +17,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
17
 
18
18
  const createValidation = rule => {
19
19
  switch (rule.type) {
20
+ case 'any':
21
+ return (0, _validators.any)(rule);
22
+
20
23
  case 'required':
21
24
  return (0, _validators.required)(rule);
22
25
 
package/lib/validators.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.regex = exports.equalsToField = exports.boolean = exports.string = exports.alphanumeric = exports.email = exports.maxValue = exports.minValue = exports.number = exports.minLength = exports.maxLength = exports.equals = exports.requiredArrayWithItem = exports.required = exports.custom = void 0;
6
+ exports.regex = exports.equalsToField = exports.boolean = exports.string = exports.alphanumeric = exports.email = exports.maxValue = exports.minValue = exports.number = exports.minLength = exports.maxLength = exports.equals = exports.requiredArrayWithItem = exports.any = exports.required = exports.custom = void 0;
7
7
 
8
8
  var _messageProcessor = _interopRequireDefault(require("./messageProcessor"));
9
9
 
@@ -36,6 +36,12 @@ const required = ({
36
36
 
37
37
  exports.required = required;
38
38
 
39
+ const any = ({}) => value => ({
40
+ data: value
41
+ });
42
+
43
+ exports.any = any;
44
+
39
45
  const requiredArrayWithItem = ({
40
46
  getMessage
41
47
  }) => value => {
@@ -94,12 +100,20 @@ const minLength = ({
94
100
 
95
101
  exports.minLength = minLength;
96
102
 
103
+ const normalizeNumber = value => {
104
+ if (typeof value === 'number') {
105
+ return value;
106
+ }
107
+
108
+ return Number(value?.replace(',', '.'));
109
+ };
110
+
97
111
  const number = ({
98
112
  getMessage
99
- }) => value => value && isNaN(Number(value)) ? {
113
+ }) => value => value && isNaN(normalizeNumber(value)) ? {
100
114
  errors: (0, _messageProcessor.default)(getMessage, '##number')
101
115
  } : {
102
- data: value === null || value === undefined ? value : Number(value)
116
+ data: value === null || value === undefined ? value : normalizeNumber(value)
103
117
  };
104
118
 
105
119
  exports.number = number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "co.validation",
3
- "version": "2.4.2",
3
+ "version": "2.5.2",
4
4
  "description": "JSON based fluent validation for browser, node.js, redux-form and anything javascript compatible.",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {