@regle/rules 0.4.9 â 0.5.1
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.
- package/README.md +21 -1
- package/dist/regle-rules.cjs +67 -72
- package/dist/regle-rules.d.cts +5 -20
- package/dist/regle-rules.d.ts +5 -20
- package/dist/regle-rules.min.cjs +1 -1
- package/dist/regle-rules.min.mjs +1 -1
- package/dist/regle-rules.mjs +59 -71
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -11,4 +11,24 @@ It's heavily inspired by Vuelidate.
|
|
|
11
11
|
|
|
12
12
|
# ð Documentation
|
|
13
13
|
|
|
14
|
-
[](https://regle.vercel.app/)
|
|
14
|
+
[](https://regle.vercel.app/)
|
|
15
|
+
|
|
16
|
+
## ð Documentation
|
|
17
|
+
|
|
18
|
+
[](https://regle.vercel.app/)
|
|
19
|
+
|
|
20
|
+
## ðŪ Play with it
|
|
21
|
+
|
|
22
|
+
| Simple demo | Advanced Demo |
|
|
23
|
+
| ------------- | ------------- |
|
|
24
|
+
| [](https://stackblitz.com/~/github.com/victorgarciaesgi/regle-examples/tree/main/examples/simple-example?file=examples/simple-example/src/App.vue&configPath=examples/simple-example) | [](https://stackblitz.com/~/github.com/victorgarciaesgi/regle-examples/tree/main/examples/advanced-example?file=examples/advanced-example/src/App.vue&configPath=examples/advanced-example) |
|
|
25
|
+
|
|
26
|
+
## ð§° Features
|
|
27
|
+
- â
Typescript first
|
|
28
|
+
- ðĪ 100% type inference
|
|
29
|
+
- ð Model based validation
|
|
30
|
+
- ðŠ Extensible
|
|
31
|
+
- ðĶļââïļ [Zod](https://zod.dev/) support
|
|
32
|
+
- ðĪ [Valibot](https://valibot.dev/) support
|
|
33
|
+
- ðŠķ Light(~7kb gzip) and 0 dependencies
|
|
34
|
+
- ð Collection validation
|
package/dist/regle-rules.cjs
CHANGED
|
@@ -161,8 +161,8 @@ function isNumber(value) {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
// src/helpers/ruleHelpers/
|
|
165
|
-
function
|
|
164
|
+
// src/helpers/ruleHelpers/matchRegex.ts
|
|
165
|
+
function matchRegex(_value, ...expr) {
|
|
166
166
|
if (isEmpty(_value)) {
|
|
167
167
|
return true;
|
|
168
168
|
}
|
|
@@ -172,7 +172,7 @@ function regex(_value, ...expr) {
|
|
|
172
172
|
return reg.test(value);
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
|
-
function
|
|
175
|
+
function getSize(value) {
|
|
176
176
|
const _value = vue.unref(value);
|
|
177
177
|
if (Array.isArray(_value)) return _value.length;
|
|
178
178
|
if (typeof _value === "object") {
|
|
@@ -243,18 +243,6 @@ function toNumber(argument) {
|
|
|
243
243
|
}
|
|
244
244
|
return NaN;
|
|
245
245
|
}
|
|
246
|
-
|
|
247
|
-
// src/helpers/ruleHelpers/index.ts
|
|
248
|
-
var ruleHelpers = {
|
|
249
|
-
isEmpty,
|
|
250
|
-
isFilled,
|
|
251
|
-
size,
|
|
252
|
-
regex,
|
|
253
|
-
isNumber,
|
|
254
|
-
isDate,
|
|
255
|
-
toDate,
|
|
256
|
-
toNumber
|
|
257
|
-
};
|
|
258
246
|
function and(...rules) {
|
|
259
247
|
const isAnyRuleAsync = rules.some((rule) => {
|
|
260
248
|
if (typeof rule === "function") {
|
|
@@ -420,7 +408,7 @@ function not(rule, message) {
|
|
|
420
408
|
}
|
|
421
409
|
if (_async) {
|
|
422
410
|
newValidator = async (value, ...params) => {
|
|
423
|
-
if (
|
|
411
|
+
if (isFilled(value)) {
|
|
424
412
|
const result = await validator(value, ...params);
|
|
425
413
|
return !result;
|
|
426
414
|
}
|
|
@@ -428,7 +416,7 @@ function not(rule, message) {
|
|
|
428
416
|
};
|
|
429
417
|
} else {
|
|
430
418
|
newValidator = (value, ...params) => {
|
|
431
|
-
if (
|
|
419
|
+
if (isFilled(value)) {
|
|
432
420
|
return !validator(value, ...params);
|
|
433
421
|
}
|
|
434
422
|
return true;
|
|
@@ -445,16 +433,16 @@ function not(rule, message) {
|
|
|
445
433
|
var required = core.createRule({
|
|
446
434
|
type: "required",
|
|
447
435
|
validator: (value) => {
|
|
448
|
-
return
|
|
436
|
+
return isFilled(value);
|
|
449
437
|
},
|
|
450
438
|
message: "This field is required"
|
|
451
439
|
});
|
|
452
440
|
var maxLength = core.createRule({
|
|
453
441
|
type: "maxLength",
|
|
454
442
|
validator: (value, count) => {
|
|
455
|
-
if (
|
|
456
|
-
if (
|
|
457
|
-
return
|
|
443
|
+
if (isFilled(value) && isFilled(count)) {
|
|
444
|
+
if (isNumber(count)) {
|
|
445
|
+
return getSize(value) <= count;
|
|
458
446
|
}
|
|
459
447
|
console.warn(`[maxLength] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
460
448
|
return false;
|
|
@@ -472,7 +460,7 @@ var requiredIf = core.createRule({
|
|
|
472
460
|
type: "required",
|
|
473
461
|
validator(value, condition) {
|
|
474
462
|
if (condition) {
|
|
475
|
-
return
|
|
463
|
+
return isFilled(value);
|
|
476
464
|
}
|
|
477
465
|
return true;
|
|
478
466
|
},
|
|
@@ -485,10 +473,10 @@ var alphaRegex = /^[a-zA-Z]*$/;
|
|
|
485
473
|
var alpha = core.createRule({
|
|
486
474
|
type: "alpha",
|
|
487
475
|
validator(value) {
|
|
488
|
-
if (
|
|
476
|
+
if (isEmpty(value)) {
|
|
489
477
|
return true;
|
|
490
478
|
}
|
|
491
|
-
return
|
|
479
|
+
return matchRegex(value, alphaRegex);
|
|
492
480
|
},
|
|
493
481
|
message: "The value is not alphabetical"
|
|
494
482
|
});
|
|
@@ -496,21 +484,21 @@ var alphaNumRegex = /^[a-zA-Z0-9]*$/;
|
|
|
496
484
|
var alphaNum = core.createRule({
|
|
497
485
|
type: "alpha",
|
|
498
486
|
validator(value) {
|
|
499
|
-
if (
|
|
487
|
+
if (isEmpty(value)) {
|
|
500
488
|
return true;
|
|
501
489
|
}
|
|
502
|
-
return
|
|
490
|
+
return matchRegex(value, alphaNumRegex);
|
|
503
491
|
},
|
|
504
492
|
message: "The value must be alpha-numeric"
|
|
505
493
|
});
|
|
506
494
|
var between = core.createRule({
|
|
507
495
|
type: "between",
|
|
508
496
|
validator: (value, min, max) => {
|
|
509
|
-
if (
|
|
510
|
-
const tValue =
|
|
511
|
-
const tMin =
|
|
512
|
-
const tMax =
|
|
513
|
-
if (
|
|
497
|
+
if (isFilled(value) && isFilled(min) && isFilled(max)) {
|
|
498
|
+
const tValue = toNumber(value);
|
|
499
|
+
const tMin = toNumber(min);
|
|
500
|
+
const tMax = toNumber(max);
|
|
501
|
+
if (isNumber(tValue) && isNumber(tMin) && isNumber(tMax)) {
|
|
514
502
|
return tValue >= tMin && tValue <= tMax;
|
|
515
503
|
}
|
|
516
504
|
console.warn(`[between] Value or parameters aren't numbers, got value: ${value}, min: ${min}, max: ${max}`);
|
|
@@ -526,10 +514,10 @@ var decimalRegex = /^[-]?\d*(\.\d+)?$/;
|
|
|
526
514
|
var decimal = core.createRule({
|
|
527
515
|
type: "decimal",
|
|
528
516
|
validator(value) {
|
|
529
|
-
if (
|
|
517
|
+
if (isEmpty(value)) {
|
|
530
518
|
return true;
|
|
531
519
|
}
|
|
532
|
-
return
|
|
520
|
+
return matchRegex(value, decimalRegex);
|
|
533
521
|
},
|
|
534
522
|
message: "Value must be decimal"
|
|
535
523
|
});
|
|
@@ -537,10 +525,10 @@ var emailRegex = /^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~
|
|
|
537
525
|
var email = core.createRule({
|
|
538
526
|
type: "email",
|
|
539
527
|
validator(value) {
|
|
540
|
-
if (
|
|
528
|
+
if (isEmpty(value)) {
|
|
541
529
|
return true;
|
|
542
530
|
}
|
|
543
|
-
return
|
|
531
|
+
return matchRegex(value, emailRegex);
|
|
544
532
|
},
|
|
545
533
|
message: "Value must be an valid email address"
|
|
546
534
|
});
|
|
@@ -548,18 +536,18 @@ var integerRegex = /(^[0-9]*$)|(^-[0-9]+$)/;
|
|
|
548
536
|
var integer = core.createRule({
|
|
549
537
|
type: "integer",
|
|
550
538
|
validator(value) {
|
|
551
|
-
if (
|
|
539
|
+
if (isEmpty(value)) {
|
|
552
540
|
return true;
|
|
553
541
|
}
|
|
554
|
-
return
|
|
542
|
+
return matchRegex(value, integerRegex);
|
|
555
543
|
},
|
|
556
544
|
message: "Value must be an integer"
|
|
557
545
|
});
|
|
558
546
|
var maxValue = core.createRule({
|
|
559
547
|
type: "maxValue",
|
|
560
548
|
validator: (value, count) => {
|
|
561
|
-
if (
|
|
562
|
-
if (
|
|
549
|
+
if (isFilled(value) && isFilled(count)) {
|
|
550
|
+
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
563
551
|
return toNumber(value) <= count;
|
|
564
552
|
}
|
|
565
553
|
console.warn(`[maxValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
@@ -574,9 +562,9 @@ var maxValue = core.createRule({
|
|
|
574
562
|
var minLength = core.createRule({
|
|
575
563
|
type: "minLength",
|
|
576
564
|
validator: (value, count) => {
|
|
577
|
-
if (
|
|
578
|
-
if (
|
|
579
|
-
return
|
|
565
|
+
if (isFilled(value) && isFilled(count)) {
|
|
566
|
+
if (isNumber(count)) {
|
|
567
|
+
return getSize(value) >= count;
|
|
580
568
|
}
|
|
581
569
|
console.warn(`[minLength] Parameter isn't a number, got parameter: ${count}`);
|
|
582
570
|
return false;
|
|
@@ -593,8 +581,8 @@ var minLength = core.createRule({
|
|
|
593
581
|
var minValue = core.createRule({
|
|
594
582
|
type: "minValue",
|
|
595
583
|
validator: (value, count) => {
|
|
596
|
-
if (
|
|
597
|
-
if (
|
|
584
|
+
if (isFilled(value) && isFilled(count)) {
|
|
585
|
+
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
598
586
|
return toNumber(value) >= count;
|
|
599
587
|
}
|
|
600
588
|
console.warn(`[minValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
@@ -609,9 +597,9 @@ var minValue = core.createRule({
|
|
|
609
597
|
var exactLength = core.createRule({
|
|
610
598
|
type: "exactLength",
|
|
611
599
|
validator: (value, count) => {
|
|
612
|
-
if (
|
|
613
|
-
if (
|
|
614
|
-
return
|
|
600
|
+
if (isFilled(value) && isFilled(count)) {
|
|
601
|
+
if (isNumber(count)) {
|
|
602
|
+
return getSize(value) === count;
|
|
615
603
|
}
|
|
616
604
|
console.warn(`[minLength] Parameter isn't a number, got parameter: ${count}`);
|
|
617
605
|
return false;
|
|
@@ -626,10 +614,10 @@ var numericRegex = /^\d*(\.\d+)?$/;
|
|
|
626
614
|
var numeric = core.createRule({
|
|
627
615
|
type: "numeric",
|
|
628
616
|
validator(value) {
|
|
629
|
-
if (
|
|
617
|
+
if (isEmpty(value)) {
|
|
630
618
|
return true;
|
|
631
619
|
}
|
|
632
|
-
return
|
|
620
|
+
return matchRegex(value, numericRegex);
|
|
633
621
|
},
|
|
634
622
|
message: "This field must be numeric"
|
|
635
623
|
});
|
|
@@ -637,7 +625,7 @@ var requiredUnless = core.createRule({
|
|
|
637
625
|
type: "required",
|
|
638
626
|
validator(value, condition) {
|
|
639
627
|
if (!condition) {
|
|
640
|
-
return
|
|
628
|
+
return isFilled(value);
|
|
641
629
|
}
|
|
642
630
|
return true;
|
|
643
631
|
},
|
|
@@ -649,7 +637,7 @@ var requiredUnless = core.createRule({
|
|
|
649
637
|
var sameAs = core.createRule({
|
|
650
638
|
type: "sameAs",
|
|
651
639
|
validator(value, target, otherName = "other") {
|
|
652
|
-
if (
|
|
640
|
+
if (isEmpty(value)) {
|
|
653
641
|
return true;
|
|
654
642
|
}
|
|
655
643
|
return value === target;
|
|
@@ -662,10 +650,10 @@ var urlRegex = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(
|
|
|
662
650
|
var url = core.createRule({
|
|
663
651
|
type: "url",
|
|
664
652
|
validator(value) {
|
|
665
|
-
if (
|
|
653
|
+
if (isEmpty(value)) {
|
|
666
654
|
return true;
|
|
667
655
|
}
|
|
668
|
-
return
|
|
656
|
+
return matchRegex(value, urlRegex);
|
|
669
657
|
},
|
|
670
658
|
message: "The value is not a valid URL address"
|
|
671
659
|
});
|
|
@@ -686,9 +674,9 @@ function formatLocaleDate(date) {
|
|
|
686
674
|
var dateAfter = core.createRule({
|
|
687
675
|
type: "dateAfter",
|
|
688
676
|
validator: (value, after) => {
|
|
689
|
-
if (
|
|
690
|
-
if (
|
|
691
|
-
const result =
|
|
677
|
+
if (isFilled(value) && isFilled(after)) {
|
|
678
|
+
if (isDate(value) && isDate(after)) {
|
|
679
|
+
const result = toDate(value).getTime() > toDate(after).getTime();
|
|
692
680
|
if (result) {
|
|
693
681
|
return true;
|
|
694
682
|
}
|
|
@@ -708,9 +696,9 @@ var dateAfter = core.createRule({
|
|
|
708
696
|
var dateBefore = core.createRule({
|
|
709
697
|
type: "dateBefore",
|
|
710
698
|
validator: (value, before) => {
|
|
711
|
-
if (
|
|
712
|
-
if (
|
|
713
|
-
const result =
|
|
699
|
+
if (isFilled(value) && isFilled(before)) {
|
|
700
|
+
if (isDate(value) && isDate(before)) {
|
|
701
|
+
const result = toDate(value).getTime() < toDate(before).getTime();
|
|
714
702
|
if (result) {
|
|
715
703
|
return true;
|
|
716
704
|
}
|
|
@@ -730,8 +718,8 @@ var dateBefore = core.createRule({
|
|
|
730
718
|
var dateBetween = core.createRule({
|
|
731
719
|
type: "dateBetween",
|
|
732
720
|
validator: (value, before, after) => {
|
|
733
|
-
if (
|
|
734
|
-
return
|
|
721
|
+
if (isDate(value) && isDate(before) && isDate(after)) {
|
|
722
|
+
return toDate(value).getTime() > toDate(before).getTime() && toDate(value).getTime() < toDate(after).getTime();
|
|
735
723
|
}
|
|
736
724
|
return true;
|
|
737
725
|
},
|
|
@@ -755,7 +743,7 @@ function nibbleValid(nibble) {
|
|
|
755
743
|
var ipAddress = core.createRule({
|
|
756
744
|
type: "ipAddress",
|
|
757
745
|
validator(value) {
|
|
758
|
-
if (
|
|
746
|
+
if (isEmpty(value)) {
|
|
759
747
|
return true;
|
|
760
748
|
}
|
|
761
749
|
if (typeof value !== "string") {
|
|
@@ -769,7 +757,7 @@ var ipAddress = core.createRule({
|
|
|
769
757
|
var macAddress = core.createRule({
|
|
770
758
|
type: "macAddress",
|
|
771
759
|
validator(value, separator = ":") {
|
|
772
|
-
if (
|
|
760
|
+
if (isEmpty(value)) {
|
|
773
761
|
return true;
|
|
774
762
|
}
|
|
775
763
|
if (typeof value !== "string") {
|
|
@@ -784,7 +772,7 @@ var hexValid = (hex) => hex.toLowerCase().match(/^[0-9a-f]{2}$/);
|
|
|
784
772
|
var checked = core.createRule({
|
|
785
773
|
type: "checked",
|
|
786
774
|
validator: (value) => {
|
|
787
|
-
if (
|
|
775
|
+
if (isFilled(value)) {
|
|
788
776
|
return value === true;
|
|
789
777
|
}
|
|
790
778
|
return true;
|
|
@@ -794,7 +782,7 @@ var checked = core.createRule({
|
|
|
794
782
|
var contains = core.createRule({
|
|
795
783
|
type: "contains",
|
|
796
784
|
validator(value, part) {
|
|
797
|
-
if (
|
|
785
|
+
if (isFilled(value) && isFilled(part)) {
|
|
798
786
|
return value.includes(part);
|
|
799
787
|
}
|
|
800
788
|
return true;
|
|
@@ -806,7 +794,7 @@ var contains = core.createRule({
|
|
|
806
794
|
var startsWith = core.createRule({
|
|
807
795
|
type: "startsWith",
|
|
808
796
|
validator(value, part) {
|
|
809
|
-
if (
|
|
797
|
+
if (isFilled(value) && isFilled(part)) {
|
|
810
798
|
return value.startsWith(part);
|
|
811
799
|
}
|
|
812
800
|
return true;
|
|
@@ -818,7 +806,7 @@ var startsWith = core.createRule({
|
|
|
818
806
|
var endsWith = core.createRule({
|
|
819
807
|
type: "endsWith",
|
|
820
808
|
validator(value, part) {
|
|
821
|
-
if (
|
|
809
|
+
if (isFilled(value) && isFilled(part)) {
|
|
822
810
|
return value.endsWith(part);
|
|
823
811
|
}
|
|
824
812
|
return true;
|
|
@@ -827,11 +815,11 @@ var endsWith = core.createRule({
|
|
|
827
815
|
return `Field must end with ${part}`;
|
|
828
816
|
}
|
|
829
817
|
});
|
|
830
|
-
var
|
|
818
|
+
var regex = core.createRule({
|
|
831
819
|
type: "regex",
|
|
832
820
|
validator(value, ...regexp) {
|
|
833
|
-
if (
|
|
834
|
-
return
|
|
821
|
+
if (isFilled(value)) {
|
|
822
|
+
return matchRegex(value, ...regexp);
|
|
835
823
|
}
|
|
836
824
|
return true;
|
|
837
825
|
},
|
|
@@ -852,9 +840,15 @@ exports.decimal = decimal;
|
|
|
852
840
|
exports.email = email;
|
|
853
841
|
exports.endsWith = endsWith;
|
|
854
842
|
exports.exactLength = exactLength;
|
|
843
|
+
exports.getSize = getSize;
|
|
855
844
|
exports.integer = integer;
|
|
856
845
|
exports.ipAddress = ipAddress;
|
|
846
|
+
exports.isDate = isDate;
|
|
847
|
+
exports.isEmpty = isEmpty;
|
|
848
|
+
exports.isFilled = isFilled;
|
|
849
|
+
exports.isNumber = isNumber;
|
|
857
850
|
exports.macAddress = macAddress;
|
|
851
|
+
exports.matchRegex = matchRegex;
|
|
858
852
|
exports.maxLength = maxLength;
|
|
859
853
|
exports.maxValue = maxValue;
|
|
860
854
|
exports.minLength = minLength;
|
|
@@ -862,13 +856,14 @@ exports.minValue = minValue;
|
|
|
862
856
|
exports.not = not;
|
|
863
857
|
exports.numeric = numeric;
|
|
864
858
|
exports.or = or;
|
|
865
|
-
exports.regex =
|
|
859
|
+
exports.regex = regex;
|
|
866
860
|
exports.required = required;
|
|
867
861
|
exports.requiredIf = requiredIf;
|
|
868
862
|
exports.requiredUnless = requiredUnless;
|
|
869
|
-
exports.ruleHelpers = ruleHelpers;
|
|
870
863
|
exports.sameAs = sameAs;
|
|
871
864
|
exports.startsWith = startsWith;
|
|
865
|
+
exports.toDate = toDate;
|
|
866
|
+
exports.toNumber = toNumber;
|
|
872
867
|
exports.url = url;
|
|
873
868
|
exports.withAsync = withAsync;
|
|
874
869
|
exports.withMessage = withMessage;
|
package/dist/regle-rules.d.cts
CHANGED
|
@@ -19,9 +19,9 @@ declare function isFilled<T extends unknown>(value: T): value is NonNullable<T>;
|
|
|
19
19
|
|
|
20
20
|
declare function isNumber(value: unknown): value is number;
|
|
21
21
|
|
|
22
|
-
declare function
|
|
22
|
+
declare function matchRegex(_value: string | number | null | undefined, ...expr: RegExp[]): boolean;
|
|
23
23
|
|
|
24
|
-
declare function
|
|
24
|
+
declare function getSize(value: MaybeRef<string | any[] | Record<string, any> | number>): number;
|
|
25
25
|
|
|
26
26
|
declare function isDate(value: unknown): value is Date;
|
|
27
27
|
|
|
@@ -71,17 +71,6 @@ type EmptyObject$1 = {[emptyObjectSymbol$1]?: never};
|
|
|
71
71
|
|
|
72
72
|
declare function isEmpty(value: unknown): value is null | undefined | [] | EmptyObject$1;
|
|
73
73
|
|
|
74
|
-
declare const ruleHelpers: {
|
|
75
|
-
isEmpty: typeof isEmpty;
|
|
76
|
-
isFilled: typeof isFilled;
|
|
77
|
-
size: typeof size;
|
|
78
|
-
regex: typeof regex$1;
|
|
79
|
-
isNumber: typeof isNumber;
|
|
80
|
-
isDate: typeof isDate;
|
|
81
|
-
toDate: typeof toDate;
|
|
82
|
-
toNumber: typeof toNumber;
|
|
83
|
-
};
|
|
84
|
-
|
|
85
74
|
declare global {
|
|
86
75
|
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
|
|
87
76
|
interface SymbolConstructor {
|
|
@@ -211,9 +200,7 @@ declare const dateBetween: RegleRuleWithParamsDefinition<string | Date, [
|
|
|
211
200
|
|
|
212
201
|
declare const ipAddress: RegleRuleDefinition<string, [], false, boolean, string>;
|
|
213
202
|
|
|
214
|
-
declare const macAddress: RegleRuleWithParamsDefinition<string, [
|
|
215
|
-
separator?: string | undefined
|
|
216
|
-
], false, boolean>;
|
|
203
|
+
declare const macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean>;
|
|
217
204
|
|
|
218
205
|
declare const checked: RegleRuleDefinition<boolean, [], false, boolean, boolean>;
|
|
219
206
|
|
|
@@ -223,8 +210,6 @@ declare const startsWith: RegleRuleWithParamsDefinition<string, [part: Maybe<str
|
|
|
223
210
|
|
|
224
211
|
declare const endsWith: RegleRuleWithParamsDefinition<string, [part: Maybe<string>], false, boolean>;
|
|
225
212
|
|
|
226
|
-
declare const regex: RegleRuleWithParamsDefinition<string | number, [
|
|
227
|
-
...regexp: RegExp[]
|
|
228
|
-
], false, boolean>;
|
|
213
|
+
declare const regex: RegleRuleWithParamsDefinition<string | number, [...regexp: RegExp[]], false, boolean>;
|
|
229
214
|
|
|
230
|
-
export { alpha, alphaNum, and, applyIf, between, checked, contains, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, integer, ipAddress, macAddress, maxLength, maxValue, minLength, minValue, not, numeric, or, regex, required, requiredIf, requiredUnless,
|
|
215
|
+
export { alpha, alphaNum, and, applyIf, between, checked, contains, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, getSize, integer, ipAddress, isDate, isEmpty, isFilled, isNumber, macAddress, matchRegex, maxLength, maxValue, minLength, minValue, not, numeric, or, regex, required, requiredIf, requiredUnless, sameAs, startsWith, toDate, toNumber, url, withAsync, withMessage, withParams, withTooltip };
|
package/dist/regle-rules.d.ts
CHANGED
|
@@ -19,9 +19,9 @@ declare function isFilled<T extends unknown>(value: T): value is NonNullable<T>;
|
|
|
19
19
|
|
|
20
20
|
declare function isNumber(value: unknown): value is number;
|
|
21
21
|
|
|
22
|
-
declare function
|
|
22
|
+
declare function matchRegex(_value: string | number | null | undefined, ...expr: RegExp[]): boolean;
|
|
23
23
|
|
|
24
|
-
declare function
|
|
24
|
+
declare function getSize(value: MaybeRef<string | any[] | Record<string, any> | number>): number;
|
|
25
25
|
|
|
26
26
|
declare function isDate(value: unknown): value is Date;
|
|
27
27
|
|
|
@@ -71,17 +71,6 @@ type EmptyObject$1 = {[emptyObjectSymbol$1]?: never};
|
|
|
71
71
|
|
|
72
72
|
declare function isEmpty(value: unknown): value is null | undefined | [] | EmptyObject$1;
|
|
73
73
|
|
|
74
|
-
declare const ruleHelpers: {
|
|
75
|
-
isEmpty: typeof isEmpty;
|
|
76
|
-
isFilled: typeof isFilled;
|
|
77
|
-
size: typeof size;
|
|
78
|
-
regex: typeof regex$1;
|
|
79
|
-
isNumber: typeof isNumber;
|
|
80
|
-
isDate: typeof isDate;
|
|
81
|
-
toDate: typeof toDate;
|
|
82
|
-
toNumber: typeof toNumber;
|
|
83
|
-
};
|
|
84
|
-
|
|
85
74
|
declare global {
|
|
86
75
|
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions -- It has to be an `interface` so that it can be merged.
|
|
87
76
|
interface SymbolConstructor {
|
|
@@ -211,9 +200,7 @@ declare const dateBetween: RegleRuleWithParamsDefinition<string | Date, [
|
|
|
211
200
|
|
|
212
201
|
declare const ipAddress: RegleRuleDefinition<string, [], false, boolean, string>;
|
|
213
202
|
|
|
214
|
-
declare const macAddress: RegleRuleWithParamsDefinition<string, [
|
|
215
|
-
separator?: string | undefined
|
|
216
|
-
], false, boolean>;
|
|
203
|
+
declare const macAddress: RegleRuleWithParamsDefinition<string, [separator?: string | undefined], false, boolean>;
|
|
217
204
|
|
|
218
205
|
declare const checked: RegleRuleDefinition<boolean, [], false, boolean, boolean>;
|
|
219
206
|
|
|
@@ -223,8 +210,6 @@ declare const startsWith: RegleRuleWithParamsDefinition<string, [part: Maybe<str
|
|
|
223
210
|
|
|
224
211
|
declare const endsWith: RegleRuleWithParamsDefinition<string, [part: Maybe<string>], false, boolean>;
|
|
225
212
|
|
|
226
|
-
declare const regex: RegleRuleWithParamsDefinition<string | number, [
|
|
227
|
-
...regexp: RegExp[]
|
|
228
|
-
], false, boolean>;
|
|
213
|
+
declare const regex: RegleRuleWithParamsDefinition<string | number, [...regexp: RegExp[]], false, boolean>;
|
|
229
214
|
|
|
230
|
-
export { alpha, alphaNum, and, applyIf, between, checked, contains, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, integer, ipAddress, macAddress, maxLength, maxValue, minLength, minValue, not, numeric, or, regex, required, requiredIf, requiredUnless,
|
|
215
|
+
export { alpha, alphaNum, and, applyIf, between, checked, contains, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, getSize, integer, ipAddress, isDate, isEmpty, isFilled, isNumber, macAddress, matchRegex, maxLength, maxValue, minLength, minValue, not, numeric, or, regex, required, requiredIf, requiredUnless, sameAs, startsWith, toDate, toNumber, url, withAsync, withMessage, withParams, withTooltip };
|
package/dist/regle-rules.min.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var core=require('@regle/core'),vue=require('vue');function V(e,t){let i,o,s,u;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:s,_params:u}=e;let m=core.createRule({type:i,validator:o,active:s,message:t}),a=[...u??[]];if(m._params=a,m._message_patched=!0,typeof m=="function"){let l=m(...a);return l._message_patched=!0,l}else return m}function A(e,t){let i,o,s,u,m;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:s,_params:u,_message:m}=e;let a=core.createRule({type:i,validator:o,active:s,message:m,tooltip:t}),l=[...u??[]];if(a._params=l,a._tooltip_patched=!0,typeof a=="function"){let n=a(...l);return a._tooltip_patched=!0,n}else return a}function _(e,t){let i=async(s,...u)=>e(s,...u),o=core.createRule({type:core.InternalRuleType.Async,validator:i,message:""});return o._params=o._params?.concat(t),o(...t??[])}function E(e,t){let i=(s,...u)=>e(s,...u),o=core.createRule({type:core.InternalRuleType.Inline,validator:i,message:""});return o._params=o._params?.concat(t),o(...t)}function C(e,t){let i,o,s=[],u="";typeof t=="function"?(i=core.InternalRuleType.Inline,o=t,s=[e]):({_type:i,validator:o,_message:u}=t,s=t._params?.concat([e]));function m(f,...p){let[R]=core.unwrapRuleParameters([e]);return R?o(f,...p):!0}function a(f){let[p]=core.unwrapRuleParameters([e]);return p}let l=core.createRule({type:i,validator:m,active:a,message:u}),n=[...s??[]];if(l._params=n,typeof l=="function"){let f=l(...n);return f._message_patched=!0,f}else return l}function d(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function x(e){return !d(typeof e=="string"?e.trim():e)}function b(e){return e==null||typeof e!="number"?!1:!isNaN(e)}function D(e,...t){if(d(e))return !0;let i=typeof e=="number"?e.toString():e;return t.every(o=>(o.lastIndex=0,o.test(i)))}function M(e){let t=vue.unref(e);return Array.isArray(t)?t.length:typeof t=="object"?Object.keys(t).length:typeof t=="number"?isNaN(t)?0:t:String(t).length}function h(e){if(d(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let i=new Date(e);if(i.toString()==="Invalid Date")return !1;t=i;}return !!t}catch{return !1}}function P(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function y(e){return typeof e=="number"?e:e!=null?typeof e=="string"?e.trim()!==e?NaN:+e:NaN:NaN}var r={isEmpty:d,isFilled:x,size:M,regex:D,isNumber:b,isDate:h,toDate:P,toNumber:y};function j(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),i=e.map(a=>{if(typeof a=="function")return null;{let l=a._params;return l?.length?l:[null]}}).flat().filter(a=>!!a);function o(a,l,...n){let f=[],p=0;for(let R of a)if(typeof R=="function")f.push(R(l)),p++;else {let g=R._params?.length??0;f.push(R.validator(l,...n.slice(p,g))),g&&(p+=g);}return f}function s(a){return a?.some(n=>typeof n!="boolean")?{$valid:a.every(n=>typeof n=="boolean"?!!n:n.$valid),...a.reduce((n,f)=>{if(typeof f=="boolean")return n;let{$valid:p,...R}=f;return {...n,...R}},{})}:a.every(n=>!!n)}let u;e.length?u=t?async(a,...l)=>{let n=await Promise.all(o(e,a,...l));return s(n)}:(a,...l)=>{let n=o(e,a,...l);return s(n)}:u=a=>!1;let m=core.createRule({type:"and",validator:u,message:"The value does not match all of the provided validators"});return m._params=i,m}function S(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),i=e.map(a=>typeof a=="function"?null:a._params).flat().filter(a=>!!a);function o(a,l,...n){let f=[],p=0;for(let R of a)if(typeof R=="function")f.push(R(l)),p++;else {let g=R._params?.length??0;f.push(R.validator(l,...n.slice(p,g))),g&&(p+=g);}return f}function s(a){return a.some(n=>typeof n!="boolean")?{$valid:a.some(n=>typeof n=="boolean"?!!n:n.$valid),...a.reduce((n,f)=>{if(typeof f=="boolean")return n;let{$valid:p,...R}=f;return {...n,...R}},{})}:a.some(n=>!!n)}let m=core.createRule({type:"or",validator:t?async(a,...l)=>{let n=await Promise.all(o(e,a,...l));return s(n)}:(a,...l)=>{let n=o(e,a,...l);return s(n)},message:"The value does not match any of the provided validators"});return m._params=i,m}function K(e,t){let i,o,s,u,m;typeof e=="function"?(o=e,m=e.constructor.name==="AsyncFunction"):({_type:i,validator:o,_params:u}=e,m=e._async),m?s=async(l,...n)=>r.isFilled(l)?!await o(l,...n):!0:s=(l,...n)=>r.isFilled(l)?!o(l,...n):!0;let a=core.createRule({type:"not",validator:s,message:t??"Error"});return a._params=u,a}var Ft=core.createRule({type:"required",validator:e=>r.isFilled(e),message:"This field is required"});var Ht=core.createRule({type:"maxLength",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var Ct=core.createRule({type:"required",validator(e,t){return t?r.isFilled(e):!0},message:"This field is required",active({$params:[e]}){return e}});var Q=/^[a-zA-Z]*$/,qt=core.createRule({type:"alpha",validator(e){return r.isEmpty(e)?!0:r.regex(e,Q)},message:"The value is not alphabetical"});var Y=/^[a-zA-Z0-9]*$/,Ot=core.createRule({type:"alpha",validator(e){return r.isEmpty(e)?!0:r.regex(e,Y)},message:"The value must be alpha-numeric"});var Qt=core.createRule({type:"between",validator:(e,t,i)=>{if(r.isFilled(e)&&r.isFilled(t)&&r.isFilled(i)){let o=r.toNumber(e),s=r.toNumber(t),u=r.toNumber(i);return r.isNumber(o)&&r.isNumber(s)&&r.isNumber(u)?o>=s&&o<=u:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${i}`),!1)}return !0},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var re=/^[-]?\d*(\.\d+)?$/,tr=core.createRule({type:"decimal",validator(e){return r.isEmpty(e)?!0:r.regex(e,re)},message:"Value must be decimal"});var ne=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i,ir=core.createRule({type:"email",validator(e){return r.isEmpty(e)?!0:r.regex(e,ne)},message:"Value must be an valid email address"});var oe=/(^[0-9]*$)|(^-[0-9]+$)/,ur=core.createRule({type:"integer",validator(e){return r.isEmpty(e)?!0:r.regex(e,oe)},message:"Value must be an integer"});var dr=core.createRule({type:"maxValue",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&!isNaN(y(e))?y(e)<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The maximum value allowed is ${e}`});var Tr=core.createRule({type:"minLength",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have at least ${t} items`:`This field should be at least ${t} characters long`});var hr=core.createRule({type:"minValue",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&!isNaN(y(e))?y(e)>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The minimum value allowed is ${e}`});var Vr=core.createRule({type:"exactLength",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var Re=/^\d*(\.\d+)?$/,Fr=core.createRule({type:"numeric",validator(e){return r.isEmpty(e)?!0:r.regex(e,Re)},message:"This field must be numeric"});var Hr=core.createRule({type:"required",validator(e,t){return t?!0:r.isFilled(e)},message:"This field is required",active({$params:[e]}){return !e}});var Cr=core.createRule({type:"sameAs",validator(e,t,i="other"){return r.isEmpty(e)?!0:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var ge=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,qr=core.createRule({type:"url",validator(e){return r.isEmpty(e)?!0:r.regex(e,ge)},message:"The value is not a valid URL address"});function ce(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function c(e){return e?new Intl.DateTimeFormat(ce(),{dateStyle:"short"}).format(new Date(e)):"?"}var Zr=core.createRule({type:"dateAfter",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()>r.toDate(t).getTime()?!0:{$valid:!1,error:"date-not-after"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The inputs must be Dates":`The date must be after ${c(e)}`});var ea=core.createRule({type:"dateBefore",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()<r.toDate(t).getTime()?!0:{$valid:!1,error:"date-not-before"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The fields must be Dates":`The date must be before ${c(e)}`});var ia=core.createRule({type:"dateBetween",validator:(e,t,i)=>r.isDate(e)&&r.isDate(t)&&r.isDate(i)?r.toDate(e).getTime()>r.toDate(t).getTime()&&r.toDate(e).getTime()<r.toDate(i).getTime():!0,message:({$params:[e,t]})=>`The date must be between ${c(e)} and ${c(t)}`});function Me(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return !1;let t=+e|0;return t>=0&&t<=255}var ua=core.createRule({type:"ipAddress",validator(e){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let t=e.split(".");return t.length===4&&t.every(Me)},message:"The value is not a valid IP address"});var pa=core.createRule({type:"macAddress",validator(e,t=":"){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let i=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return i!==null&&(i.length===6||i.length===8)&&i.every(Pe)},message:"The value is not a valid MAC Address"}),Pe=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var ca=core.createRule({type:"checked",validator:e=>r.isFilled(e)?e===!0:!0,message:"This field must be checked"});var Da=core.createRule({type:"contains",validator(e,t){return r.isFilled(e)&&r.isFilled(t)?e.includes(t):!0},message({$params:[e]}){return `Field must contain ${e}`}});var wa=core.createRule({type:"startsWith",validator(e,t){return r.isFilled(e)&&r.isFilled(t)?e.startsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var va=core.createRule({type:"endsWith",validator(e,t){return r.isFilled(e)&&r.isFilled(t)?e.endsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var _a=core.createRule({type:"regex",validator(e,...t){return r.isFilled(e)?r.regex(e,...t):!0},message:"This field does not match the required pattern"});exports.alpha=qt;exports.alphaNum=Ot;exports.and=j;exports.applyIf=C;exports.between=Qt;exports.checked=ca;exports.contains=Da;exports.dateAfter=Zr;exports.dateBefore=ea;exports.dateBetween=ia;exports.decimal=tr;exports.email=ir;exports.endsWith=va;exports.exactLength=Vr;exports.integer=ur;exports.ipAddress=ua;exports.macAddress=pa;exports.maxLength=Ht;exports.maxValue=dr;exports.minLength=Tr;exports.minValue=hr;exports.not=K;exports.numeric=Fr;exports.or=S;exports.regex=_a;exports.required=Ft;exports.requiredIf=Ct;exports.requiredUnless=Hr;exports.ruleHelpers=r;exports.sameAs=Cr;exports.startsWith=wa;exports.url=qr;exports.withAsync=_;exports.withMessage=V;exports.withParams=E;exports.withTooltip=A;
|
|
1
|
+
'use strict';var core=require('@regle/core'),vue=require('vue');function $(e,t){let i,o,u,m;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:u,_params:m}=e;let f=core.createRule({type:i,validator:o,active:u,message:t}),r=[...m??[]];if(f._params=r,f._message_patched=!0,typeof f=="function"){let s=f(...r);return s._message_patched=!0,s}else return f}function v(e,t){let i,o,u,m,f;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:u,_params:m,_message:f}=e;let r=core.createRule({type:i,validator:o,active:u,message:f,tooltip:t}),s=[...m??[]];if(r._params=s,r._tooltip_patched=!0,typeof r=="function"){let n=r(...s);return r._tooltip_patched=!0,n}else return r}function N(e,t){let i=async(u,...m)=>e(u,...m),o=core.createRule({type:core.InternalRuleType.Async,validator:i,message:""});return o._params=o._params?.concat(t),o(...t??[])}function E(e,t){let i=(u,...m)=>e(u,...m),o=core.createRule({type:core.InternalRuleType.Inline,validator:i,message:""});return o._params=o._params?.concat(t),o(...t)}function C(e,t){let i,o,u=[],m="";typeof t=="function"?(i=core.InternalRuleType.Inline,o=t,u=[e]):({_type:i,validator:o,_message:m}=t,u=t._params?.concat([e]));function f(R,...d){let[y]=core.unwrapRuleParameters([e]);return y?o(R,...d):!0}function r(R){let[d]=core.unwrapRuleParameters([e]);return d}let s=core.createRule({type:i,validator:f,active:r,message:m}),n=[...u??[]];if(s._params=n,typeof s=="function"){let R=s(...n);return R._message_patched=!0,R}else return s}function l(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function a(e){return !l(typeof e=="string"?e.trim():e)}function g(e){return e==null||typeof e!="number"?!1:!isNaN(e)}function p(e,...t){if(l(e))return !0;let i=typeof e=="number"?e.toString():e;return t.every(o=>(o.lastIndex=0,o.test(i)))}function b(e){let t=vue.unref(e);return Array.isArray(t)?t.length:typeof t=="object"?Object.keys(t).length:typeof t=="number"?isNaN(t)?0:t:String(t).length}function T(e){if(l(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let i=new Date(e);if(i.toString()==="Invalid Date")return !1;t=i;}return !!t}catch{return !1}}function c(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function x(e){return typeof e=="number"?e:e!=null?typeof e=="string"?e.trim()!==e?NaN:+e:NaN:NaN}function U(...e){let t=e.some(r=>typeof r=="function"?r.constructor.name==="AsyncFunction":r._async),i=e.map(r=>{if(typeof r=="function")return null;{let s=r._params;return s?.length?s:[null]}}).flat().filter(r=>!!r);function o(r,s,...n){let R=[],d=0;for(let y of r)if(typeof y=="function")R.push(y(s)),d++;else {let D=y._params?.length??0;R.push(y.validator(s,...n.slice(d,D))),D&&(d+=D);}return R}function u(r){return r?.some(n=>typeof n!="boolean")?{$valid:r.every(n=>typeof n=="boolean"?!!n:n.$valid),...r.reduce((n,R)=>{if(typeof R=="boolean")return n;let{$valid:d,...y}=R;return {...n,...y}},{})}:r.every(n=>!!n)}let m;e.length?m=t?async(r,...s)=>{let n=await Promise.all(o(e,r,...s));return u(n)}:(r,...s)=>{let n=o(e,r,...s);return u(n)}:m=r=>!1;let f=core.createRule({type:"and",validator:m,message:"The value does not match all of the provided validators"});return f._params=i,f}function q(...e){let t=e.some(r=>typeof r=="function"?r.constructor.name==="AsyncFunction":r._async),i=e.map(r=>typeof r=="function"?null:r._params).flat().filter(r=>!!r);function o(r,s,...n){let R=[],d=0;for(let y of r)if(typeof y=="function")R.push(y(s)),d++;else {let D=y._params?.length??0;R.push(y.validator(s,...n.slice(d,D))),D&&(d+=D);}return R}function u(r){return r.some(n=>typeof n!="boolean")?{$valid:r.some(n=>typeof n=="boolean"?!!n:n.$valid),...r.reduce((n,R)=>{if(typeof R=="boolean")return n;let{$valid:d,...y}=R;return {...n,...y}},{})}:r.some(n=>!!n)}let f=core.createRule({type:"or",validator:t?async(r,...s)=>{let n=await Promise.all(o(e,r,...s));return u(n)}:(r,...s)=>{let n=o(e,r,...s);return u(n)},message:"The value does not match any of the provided validators"});return f._params=i,f}function K(e,t){let i,o,u,m,f;typeof e=="function"?(o=e,f=e.constructor.name==="AsyncFunction"):({_type:i,validator:o,_params:m}=e,f=e._async),f?u=async(s,...n)=>a(s)?!await o(s,...n):!0:u=(s,...n)=>a(s)?!o(s,...n):!0;let r=core.createRule({type:"not",validator:u,message:t??"Error"});return r._params=m,r}var _t=core.createRule({type:"required",validator:e=>a(e),message:"This field is required"});var zt=core.createRule({type:"maxLength",validator:(e,t)=>a(e)&&a(t)?g(t)?b(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var Ut=core.createRule({type:"required",validator(e,t){return t?a(e):!0},message:"This field is required",active({$params:[e]}){return e}});var J=/^[a-zA-Z]*$/,Kt=core.createRule({type:"alpha",validator(e){return l(e)?!0:p(e,J)},message:"The value is not alphabetical"});var X=/^[a-zA-Z0-9]*$/,Ht=core.createRule({type:"alpha",validator(e){return l(e)?!0:p(e,X)},message:"The value must be alpha-numeric"});var Yt=core.createRule({type:"between",validator:(e,t,i)=>{if(a(e)&&a(t)&&a(i)){let o=x(e),u=x(t),m=x(i);return g(o)&&g(u)&&g(m)?o>=u&&o<=m:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${i}`),!1)}return !0},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var te=/^[-]?\d*(\.\d+)?$/,ar=core.createRule({type:"decimal",validator(e){return l(e)?!0:p(e,te)},message:"Value must be decimal"});var ae=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i,sr=core.createRule({type:"email",validator(e){return l(e)?!0:p(e,ae)},message:"Value must be an valid email address"});var ie=/(^[0-9]*$)|(^-[0-9]+$)/,fr=core.createRule({type:"integer",validator(e){return l(e)?!0:p(e,ie)},message:"Value must be an integer"});var yr=core.createRule({type:"maxValue",validator:(e,t)=>a(e)&&a(t)?g(t)&&!isNaN(x(e))?x(e)<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The maximum value allowed is ${e}`});var xr=core.createRule({type:"minLength",validator:(e,t)=>a(e)&&a(t)?g(t)?b(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have at least ${t} items`:`This field should be at least ${t} characters long`});var hr=core.createRule({type:"minValue",validator:(e,t)=>a(e)&&a(t)?g(t)&&!isNaN(x(e))?x(e)>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The minimum value allowed is ${e}`});var Vr=core.createRule({type:"exactLength",validator:(e,t)=>a(e)&&a(t)?g(t)?b(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var fe=/^\d*(\.\d+)?$/,Fr=core.createRule({type:"numeric",validator(e){return l(e)?!0:p(e,fe)},message:"This field must be numeric"});var Er=core.createRule({type:"required",validator(e,t){return t?!0:a(e)},message:"This field is required",active({$params:[e]}){return !e}});var Sr=core.createRule({type:"sameAs",validator(e,t,i="other"){return l(e)?!0:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var ye=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,qr=core.createRule({type:"url",validator(e){return l(e)?!0:p(e,ye)},message:"The value is not a valid URL address"});function de(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function M(e){return e?new Intl.DateTimeFormat(de(),{dateStyle:"short"}).format(new Date(e)):"?"}var Hr=core.createRule({type:"dateAfter",validator:(e,t)=>a(e)&&a(t)?T(e)&&T(t)?c(e).getTime()>c(t).getTime()?!0:{$valid:!1,error:"date-not-after"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The inputs must be Dates":`The date must be after ${M(e)}`});var ea=core.createRule({type:"dateBefore",validator:(e,t)=>a(e)&&a(t)?T(e)&&T(t)?c(e).getTime()<c(t).getTime()?!0:{$valid:!1,error:"date-not-before"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The fields must be Dates":`The date must be before ${M(e)}`});var ia=core.createRule({type:"dateBetween",validator:(e,t,i)=>T(e)&&T(t)&&T(i)?c(e).getTime()>c(t).getTime()&&c(e).getTime()<c(i).getTime():!0,message:({$params:[e,t]})=>`The date must be between ${M(e)} and ${M(t)}`});function De(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return !1;let t=+e|0;return t>=0&&t<=255}var ua=core.createRule({type:"ipAddress",validator(e){if(l(e))return !0;if(typeof e!="string")return !1;let t=e.split(".");return t.length===4&&t.every(De)},message:"The value is not a valid IP address"});var pa=core.createRule({type:"macAddress",validator(e,t=":"){if(l(e))return !0;if(typeof e!="string")return !1;let i=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return i!==null&&(i.length===6||i.length===8)&&i.every(he)},message:"The value is not a valid MAC Address"}),he=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var ca=core.createRule({type:"checked",validator:e=>a(e)?e===!0:!0,message:"This field must be checked"});var Da=core.createRule({type:"contains",validator(e,t){return a(e)&&a(t)?e.includes(t):!0},message({$params:[e]}){return `Field must contain ${e}`}});var wa=core.createRule({type:"startsWith",validator(e,t){return a(e)&&a(t)?e.startsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var va=core.createRule({type:"endsWith",validator(e,t){return a(e)&&a(t)?e.endsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var _a=core.createRule({type:"regex",validator(e,...t){return a(e)?p(e,...t):!0},message:"This field does not match the required pattern"});exports.alpha=Kt;exports.alphaNum=Ht;exports.and=U;exports.applyIf=C;exports.between=Yt;exports.checked=ca;exports.contains=Da;exports.dateAfter=Hr;exports.dateBefore=ea;exports.dateBetween=ia;exports.decimal=ar;exports.email=sr;exports.endsWith=va;exports.exactLength=Vr;exports.getSize=b;exports.integer=fr;exports.ipAddress=ua;exports.isDate=T;exports.isEmpty=l;exports.isFilled=a;exports.isNumber=g;exports.macAddress=pa;exports.matchRegex=p;exports.maxLength=zt;exports.maxValue=yr;exports.minLength=xr;exports.minValue=hr;exports.not=K;exports.numeric=Fr;exports.or=q;exports.regex=_a;exports.required=_t;exports.requiredIf=Ut;exports.requiredUnless=Er;exports.sameAs=Sr;exports.startsWith=wa;exports.toDate=c;exports.toNumber=x;exports.url=qr;exports.withAsync=N;exports.withMessage=$;exports.withParams=E;exports.withTooltip=v;
|
package/dist/regle-rules.min.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {createRule,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref}from'vue';function V(e,t){let i,o,s,u;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:s,_params:u}=e;let m=createRule({type:i,validator:o,active:s,message:t}),a=[...u??[]];if(m._params=a,m._message_patched=!0,typeof m=="function"){let l=m(...a);return l._message_patched=!0,l}else return m}function A(e,t){let i,o,s,u,m;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:s,_params:u,_message:m}=e;let a=createRule({type:i,validator:o,active:s,message:m,tooltip:t}),l=[...u??[]];if(a._params=l,a._tooltip_patched=!0,typeof a=="function"){let n=a(...l);return a._tooltip_patched=!0,n}else return a}function _(e,t){let i=async(s,...u)=>e(s,...u),o=createRule({type:InternalRuleType.Async,validator:i,message:""});return o._params=o._params?.concat(t),o(...t??[])}function E(e,t){let i=(s,...u)=>e(s,...u),o=createRule({type:InternalRuleType.Inline,validator:i,message:""});return o._params=o._params?.concat(t),o(...t)}function C(e,t){let i,o,s=[],u="";typeof t=="function"?(i=InternalRuleType.Inline,o=t,s=[e]):({_type:i,validator:o,_message:u}=t,s=t._params?.concat([e]));function m(f,...p){let[R]=unwrapRuleParameters([e]);return R?o(f,...p):!0}function a(f){let[p]=unwrapRuleParameters([e]);return p}let l=createRule({type:i,validator:m,active:a,message:u}),n=[...s??[]];if(l._params=n,typeof l=="function"){let f=l(...n);return f._message_patched=!0,f}else return l}function d(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function x(e){return !d(typeof e=="string"?e.trim():e)}function b(e){return e==null||typeof e!="number"?!1:!isNaN(e)}function D(e,...t){if(d(e))return !0;let i=typeof e=="number"?e.toString():e;return t.every(o=>(o.lastIndex=0,o.test(i)))}function M(e){let t=unref(e);return Array.isArray(t)?t.length:typeof t=="object"?Object.keys(t).length:typeof t=="number"?isNaN(t)?0:t:String(t).length}function h(e){if(d(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let i=new Date(e);if(i.toString()==="Invalid Date")return !1;t=i;}return !!t}catch{return !1}}function P(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function y(e){return typeof e=="number"?e:e!=null?typeof e=="string"?e.trim()!==e?NaN:+e:NaN:NaN}var r={isEmpty:d,isFilled:x,size:M,regex:D,isNumber:b,isDate:h,toDate:P,toNumber:y};function j(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),i=e.map(a=>{if(typeof a=="function")return null;{let l=a._params;return l?.length?l:[null]}}).flat().filter(a=>!!a);function o(a,l,...n){let f=[],p=0;for(let R of a)if(typeof R=="function")f.push(R(l)),p++;else {let g=R._params?.length??0;f.push(R.validator(l,...n.slice(p,g))),g&&(p+=g);}return f}function s(a){return a?.some(n=>typeof n!="boolean")?{$valid:a.every(n=>typeof n=="boolean"?!!n:n.$valid),...a.reduce((n,f)=>{if(typeof f=="boolean")return n;let{$valid:p,...R}=f;return {...n,...R}},{})}:a.every(n=>!!n)}let u;e.length?u=t?async(a,...l)=>{let n=await Promise.all(o(e,a,...l));return s(n)}:(a,...l)=>{let n=o(e,a,...l);return s(n)}:u=a=>!1;let m=createRule({type:"and",validator:u,message:"The value does not match all of the provided validators"});return m._params=i,m}function S(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),i=e.map(a=>typeof a=="function"?null:a._params).flat().filter(a=>!!a);function o(a,l,...n){let f=[],p=0;for(let R of a)if(typeof R=="function")f.push(R(l)),p++;else {let g=R._params?.length??0;f.push(R.validator(l,...n.slice(p,g))),g&&(p+=g);}return f}function s(a){return a.some(n=>typeof n!="boolean")?{$valid:a.some(n=>typeof n=="boolean"?!!n:n.$valid),...a.reduce((n,f)=>{if(typeof f=="boolean")return n;let{$valid:p,...R}=f;return {...n,...R}},{})}:a.some(n=>!!n)}let m=createRule({type:"or",validator:t?async(a,...l)=>{let n=await Promise.all(o(e,a,...l));return s(n)}:(a,...l)=>{let n=o(e,a,...l);return s(n)},message:"The value does not match any of the provided validators"});return m._params=i,m}function K(e,t){let i,o,s,u,m;typeof e=="function"?(o=e,m=e.constructor.name==="AsyncFunction"):({_type:i,validator:o,_params:u}=e,m=e._async),m?s=async(l,...n)=>r.isFilled(l)?!await o(l,...n):!0:s=(l,...n)=>r.isFilled(l)?!o(l,...n):!0;let a=createRule({type:"not",validator:s,message:t??"Error"});return a._params=u,a}var Ft=createRule({type:"required",validator:e=>r.isFilled(e),message:"This field is required"});var Ht=createRule({type:"maxLength",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var Ct=createRule({type:"required",validator(e,t){return t?r.isFilled(e):!0},message:"This field is required",active({$params:[e]}){return e}});var Q=/^[a-zA-Z]*$/,qt=createRule({type:"alpha",validator(e){return r.isEmpty(e)?!0:r.regex(e,Q)},message:"The value is not alphabetical"});var Y=/^[a-zA-Z0-9]*$/,Ot=createRule({type:"alpha",validator(e){return r.isEmpty(e)?!0:r.regex(e,Y)},message:"The value must be alpha-numeric"});var Qt=createRule({type:"between",validator:(e,t,i)=>{if(r.isFilled(e)&&r.isFilled(t)&&r.isFilled(i)){let o=r.toNumber(e),s=r.toNumber(t),u=r.toNumber(i);return r.isNumber(o)&&r.isNumber(s)&&r.isNumber(u)?o>=s&&o<=u:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${i}`),!1)}return !0},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var re=/^[-]?\d*(\.\d+)?$/,tr=createRule({type:"decimal",validator(e){return r.isEmpty(e)?!0:r.regex(e,re)},message:"Value must be decimal"});var ne=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i,ir=createRule({type:"email",validator(e){return r.isEmpty(e)?!0:r.regex(e,ne)},message:"Value must be an valid email address"});var oe=/(^[0-9]*$)|(^-[0-9]+$)/,ur=createRule({type:"integer",validator(e){return r.isEmpty(e)?!0:r.regex(e,oe)},message:"Value must be an integer"});var dr=createRule({type:"maxValue",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&!isNaN(y(e))?y(e)<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The maximum value allowed is ${e}`});var Tr=createRule({type:"minLength",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have at least ${t} items`:`This field should be at least ${t} characters long`});var hr=createRule({type:"minValue",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&!isNaN(y(e))?y(e)>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The minimum value allowed is ${e}`});var Vr=createRule({type:"exactLength",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var Re=/^\d*(\.\d+)?$/,Fr=createRule({type:"numeric",validator(e){return r.isEmpty(e)?!0:r.regex(e,Re)},message:"This field must be numeric"});var Hr=createRule({type:"required",validator(e,t){return t?!0:r.isFilled(e)},message:"This field is required",active({$params:[e]}){return !e}});var Cr=createRule({type:"sameAs",validator(e,t,i="other"){return r.isEmpty(e)?!0:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var ge=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,qr=createRule({type:"url",validator(e){return r.isEmpty(e)?!0:r.regex(e,ge)},message:"The value is not a valid URL address"});function ce(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function c(e){return e?new Intl.DateTimeFormat(ce(),{dateStyle:"short"}).format(new Date(e)):"?"}var Zr=createRule({type:"dateAfter",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()>r.toDate(t).getTime()?!0:{$valid:!1,error:"date-not-after"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The inputs must be Dates":`The date must be after ${c(e)}`});var ea=createRule({type:"dateBefore",validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()<r.toDate(t).getTime()?!0:{$valid:!1,error:"date-not-before"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The fields must be Dates":`The date must be before ${c(e)}`});var ia=createRule({type:"dateBetween",validator:(e,t,i)=>r.isDate(e)&&r.isDate(t)&&r.isDate(i)?r.toDate(e).getTime()>r.toDate(t).getTime()&&r.toDate(e).getTime()<r.toDate(i).getTime():!0,message:({$params:[e,t]})=>`The date must be between ${c(e)} and ${c(t)}`});function Me(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return !1;let t=+e|0;return t>=0&&t<=255}var ua=createRule({type:"ipAddress",validator(e){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let t=e.split(".");return t.length===4&&t.every(Me)},message:"The value is not a valid IP address"});var pa=createRule({type:"macAddress",validator(e,t=":"){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let i=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return i!==null&&(i.length===6||i.length===8)&&i.every(Pe)},message:"The value is not a valid MAC Address"}),Pe=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var ca=createRule({type:"checked",validator:e=>r.isFilled(e)?e===!0:!0,message:"This field must be checked"});var Da=createRule({type:"contains",validator(e,t){return r.isFilled(e)&&r.isFilled(t)?e.includes(t):!0},message({$params:[e]}){return `Field must contain ${e}`}});var wa=createRule({type:"startsWith",validator(e,t){return r.isFilled(e)&&r.isFilled(t)?e.startsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var va=createRule({type:"endsWith",validator(e,t){return r.isFilled(e)&&r.isFilled(t)?e.endsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var _a=createRule({type:"regex",validator(e,...t){return r.isFilled(e)?r.regex(e,...t):!0},message:"This field does not match the required pattern"});export{qt as alpha,Ot as alphaNum,j as and,C as applyIf,Qt as between,ca as checked,Da as contains,Zr as dateAfter,ea as dateBefore,ia as dateBetween,tr as decimal,ir as email,va as endsWith,Vr as exactLength,ur as integer,ua as ipAddress,pa as macAddress,Ht as maxLength,dr as maxValue,Tr as minLength,hr as minValue,K as not,Fr as numeric,S as or,_a as regex,Ft as required,Ct as requiredIf,Hr as requiredUnless,r as ruleHelpers,Cr as sameAs,wa as startsWith,qr as url,_ as withAsync,V as withMessage,E as withParams,A as withTooltip};
|
|
1
|
+
import {createRule,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref}from'vue';function $(e,t){let i,o,u,m;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:u,_params:m}=e;let f=createRule({type:i,validator:o,active:u,message:t}),r=[...m??[]];if(f._params=r,f._message_patched=!0,typeof f=="function"){let s=f(...r);return s._message_patched=!0,s}else return f}function v(e,t){let i,o,u,m,f;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,o=e):{_type:i,validator:o,_active:u,_params:m,_message:f}=e;let r=createRule({type:i,validator:o,active:u,message:f,tooltip:t}),s=[...m??[]];if(r._params=s,r._tooltip_patched=!0,typeof r=="function"){let n=r(...s);return r._tooltip_patched=!0,n}else return r}function N(e,t){let i=async(u,...m)=>e(u,...m),o=createRule({type:InternalRuleType.Async,validator:i,message:""});return o._params=o._params?.concat(t),o(...t??[])}function E(e,t){let i=(u,...m)=>e(u,...m),o=createRule({type:InternalRuleType.Inline,validator:i,message:""});return o._params=o._params?.concat(t),o(...t)}function C(e,t){let i,o,u=[],m="";typeof t=="function"?(i=InternalRuleType.Inline,o=t,u=[e]):({_type:i,validator:o,_message:m}=t,u=t._params?.concat([e]));function f(R,...d){let[y]=unwrapRuleParameters([e]);return y?o(R,...d):!0}function r(R){let[d]=unwrapRuleParameters([e]);return d}let s=createRule({type:i,validator:f,active:r,message:m}),n=[...u??[]];if(s._params=n,typeof s=="function"){let R=s(...n);return R._message_patched=!0,R}else return s}function l(e){return e==null?!0:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?!1:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function a(e){return !l(typeof e=="string"?e.trim():e)}function g(e){return e==null||typeof e!="number"?!1:!isNaN(e)}function p(e,...t){if(l(e))return !0;let i=typeof e=="number"?e.toString():e;return t.every(o=>(o.lastIndex=0,o.test(i)))}function b(e){let t=unref(e);return Array.isArray(t)?t.length:typeof t=="object"?Object.keys(t).length:typeof t=="number"?isNaN(t)?0:t:String(t).length}function T(e){if(l(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let i=new Date(e);if(i.toString()==="Invalid Date")return !1;t=i;}return !!t}catch{return !1}}function c(e){let t=Object.prototype.toString.call(e);return e==null?new Date(NaN):e instanceof Date||typeof e=="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):typeof e=="string"||t==="[object String]"?new Date(e):new Date(NaN)}function x(e){return typeof e=="number"?e:e!=null?typeof e=="string"?e.trim()!==e?NaN:+e:NaN:NaN}function U(...e){let t=e.some(r=>typeof r=="function"?r.constructor.name==="AsyncFunction":r._async),i=e.map(r=>{if(typeof r=="function")return null;{let s=r._params;return s?.length?s:[null]}}).flat().filter(r=>!!r);function o(r,s,...n){let R=[],d=0;for(let y of r)if(typeof y=="function")R.push(y(s)),d++;else {let D=y._params?.length??0;R.push(y.validator(s,...n.slice(d,D))),D&&(d+=D);}return R}function u(r){return r?.some(n=>typeof n!="boolean")?{$valid:r.every(n=>typeof n=="boolean"?!!n:n.$valid),...r.reduce((n,R)=>{if(typeof R=="boolean")return n;let{$valid:d,...y}=R;return {...n,...y}},{})}:r.every(n=>!!n)}let m;e.length?m=t?async(r,...s)=>{let n=await Promise.all(o(e,r,...s));return u(n)}:(r,...s)=>{let n=o(e,r,...s);return u(n)}:m=r=>!1;let f=createRule({type:"and",validator:m,message:"The value does not match all of the provided validators"});return f._params=i,f}function q(...e){let t=e.some(r=>typeof r=="function"?r.constructor.name==="AsyncFunction":r._async),i=e.map(r=>typeof r=="function"?null:r._params).flat().filter(r=>!!r);function o(r,s,...n){let R=[],d=0;for(let y of r)if(typeof y=="function")R.push(y(s)),d++;else {let D=y._params?.length??0;R.push(y.validator(s,...n.slice(d,D))),D&&(d+=D);}return R}function u(r){return r.some(n=>typeof n!="boolean")?{$valid:r.some(n=>typeof n=="boolean"?!!n:n.$valid),...r.reduce((n,R)=>{if(typeof R=="boolean")return n;let{$valid:d,...y}=R;return {...n,...y}},{})}:r.some(n=>!!n)}let f=createRule({type:"or",validator:t?async(r,...s)=>{let n=await Promise.all(o(e,r,...s));return u(n)}:(r,...s)=>{let n=o(e,r,...s);return u(n)},message:"The value does not match any of the provided validators"});return f._params=i,f}function K(e,t){let i,o,u,m,f;typeof e=="function"?(o=e,f=e.constructor.name==="AsyncFunction"):({_type:i,validator:o,_params:m}=e,f=e._async),f?u=async(s,...n)=>a(s)?!await o(s,...n):!0:u=(s,...n)=>a(s)?!o(s,...n):!0;let r=createRule({type:"not",validator:u,message:t??"Error"});return r._params=m,r}var _t=createRule({type:"required",validator:e=>a(e),message:"This field is required"});var zt=createRule({type:"maxLength",validator:(e,t)=>a(e)&&a(t)?g(t)?b(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var Ut=createRule({type:"required",validator(e,t){return t?a(e):!0},message:"This field is required",active({$params:[e]}){return e}});var J=/^[a-zA-Z]*$/,Kt=createRule({type:"alpha",validator(e){return l(e)?!0:p(e,J)},message:"The value is not alphabetical"});var X=/^[a-zA-Z0-9]*$/,Ht=createRule({type:"alpha",validator(e){return l(e)?!0:p(e,X)},message:"The value must be alpha-numeric"});var Yt=createRule({type:"between",validator:(e,t,i)=>{if(a(e)&&a(t)&&a(i)){let o=x(e),u=x(t),m=x(i);return g(o)&&g(u)&&g(m)?o>=u&&o<=m:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${i}`),!1)}return !0},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var te=/^[-]?\d*(\.\d+)?$/,ar=createRule({type:"decimal",validator(e){return l(e)?!0:p(e,te)},message:"Value must be decimal"});var ae=/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i,sr=createRule({type:"email",validator(e){return l(e)?!0:p(e,ae)},message:"Value must be an valid email address"});var ie=/(^[0-9]*$)|(^-[0-9]+$)/,fr=createRule({type:"integer",validator(e){return l(e)?!0:p(e,ie)},message:"Value must be an integer"});var yr=createRule({type:"maxValue",validator:(e,t)=>a(e)&&a(t)?g(t)&&!isNaN(x(e))?x(e)<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The maximum value allowed is ${e}`});var xr=createRule({type:"minLength",validator:(e,t)=>a(e)&&a(t)?g(t)?b(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have at least ${t} items`:`This field should be at least ${t} characters long`});var hr=createRule({type:"minValue",validator:(e,t)=>a(e)&&a(t)?g(t)&&!isNaN(x(e))?x(e)>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!0):!0,message:({$params:[e]})=>`The minimum value allowed is ${e}`});var Vr=createRule({type:"exactLength",validator:(e,t)=>a(e)&&a(t)?g(t)?b(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var fe=/^\d*(\.\d+)?$/,Fr=createRule({type:"numeric",validator(e){return l(e)?!0:p(e,fe)},message:"This field must be numeric"});var Er=createRule({type:"required",validator(e,t){return t?!0:a(e)},message:"This field is required",active({$params:[e]}){return !e}});var Sr=createRule({type:"sameAs",validator(e,t,i="other"){return l(e)?!0:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var ye=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,qr=createRule({type:"url",validator(e){return l(e)?!0:p(e,ye)},message:"The value is not a valid URL address"});function de(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function M(e){return e?new Intl.DateTimeFormat(de(),{dateStyle:"short"}).format(new Date(e)):"?"}var Hr=createRule({type:"dateAfter",validator:(e,t)=>a(e)&&a(t)?T(e)&&T(t)?c(e).getTime()>c(t).getTime()?!0:{$valid:!1,error:"date-not-after"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The inputs must be Dates":`The date must be after ${M(e)}`});var ea=createRule({type:"dateBefore",validator:(e,t)=>a(e)&&a(t)?T(e)&&T(t)?c(e).getTime()<c(t).getTime()?!0:{$valid:!1,error:"date-not-before"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:({$params:[e],error:t})=>t==="value-or-paramater-not-a-date"?"The fields must be Dates":`The date must be before ${M(e)}`});var ia=createRule({type:"dateBetween",validator:(e,t,i)=>T(e)&&T(t)&&T(i)?c(e).getTime()>c(t).getTime()&&c(e).getTime()<c(i).getTime():!0,message:({$params:[e,t]})=>`The date must be between ${M(e)} and ${M(t)}`});function De(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return !1;let t=+e|0;return t>=0&&t<=255}var ua=createRule({type:"ipAddress",validator(e){if(l(e))return !0;if(typeof e!="string")return !1;let t=e.split(".");return t.length===4&&t.every(De)},message:"The value is not a valid IP address"});var pa=createRule({type:"macAddress",validator(e,t=":"){if(l(e))return !0;if(typeof e!="string")return !1;let i=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return i!==null&&(i.length===6||i.length===8)&&i.every(he)},message:"The value is not a valid MAC Address"}),he=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var ca=createRule({type:"checked",validator:e=>a(e)?e===!0:!0,message:"This field must be checked"});var Da=createRule({type:"contains",validator(e,t){return a(e)&&a(t)?e.includes(t):!0},message({$params:[e]}){return `Field must contain ${e}`}});var wa=createRule({type:"startsWith",validator(e,t){return a(e)&&a(t)?e.startsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var va=createRule({type:"endsWith",validator(e,t){return a(e)&&a(t)?e.endsWith(t):!0},message({$params:[e]}){return `Field must end with ${e}`}});var _a=createRule({type:"regex",validator(e,...t){return a(e)?p(e,...t):!0},message:"This field does not match the required pattern"});export{Kt as alpha,Ht as alphaNum,U as and,C as applyIf,Yt as between,ca as checked,Da as contains,Hr as dateAfter,ea as dateBefore,ia as dateBetween,ar as decimal,sr as email,va as endsWith,Vr as exactLength,b as getSize,fr as integer,ua as ipAddress,T as isDate,l as isEmpty,a as isFilled,g as isNumber,pa as macAddress,p as matchRegex,zt as maxLength,yr as maxValue,xr as minLength,hr as minValue,K as not,Fr as numeric,q as or,_a as regex,_t as required,Ut as requiredIf,Er as requiredUnless,Sr as sameAs,wa as startsWith,c as toDate,x as toNumber,qr as url,N as withAsync,$ as withMessage,E as withParams,v as withTooltip};
|
package/dist/regle-rules.mjs
CHANGED
|
@@ -159,8 +159,8 @@ function isNumber(value) {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
// src/helpers/ruleHelpers/
|
|
163
|
-
function
|
|
162
|
+
// src/helpers/ruleHelpers/matchRegex.ts
|
|
163
|
+
function matchRegex(_value, ...expr) {
|
|
164
164
|
if (isEmpty(_value)) {
|
|
165
165
|
return true;
|
|
166
166
|
}
|
|
@@ -170,7 +170,7 @@ function regex(_value, ...expr) {
|
|
|
170
170
|
return reg.test(value);
|
|
171
171
|
});
|
|
172
172
|
}
|
|
173
|
-
function
|
|
173
|
+
function getSize(value) {
|
|
174
174
|
const _value = unref(value);
|
|
175
175
|
if (Array.isArray(_value)) return _value.length;
|
|
176
176
|
if (typeof _value === "object") {
|
|
@@ -241,18 +241,6 @@ function toNumber(argument) {
|
|
|
241
241
|
}
|
|
242
242
|
return NaN;
|
|
243
243
|
}
|
|
244
|
-
|
|
245
|
-
// src/helpers/ruleHelpers/index.ts
|
|
246
|
-
var ruleHelpers = {
|
|
247
|
-
isEmpty,
|
|
248
|
-
isFilled,
|
|
249
|
-
size,
|
|
250
|
-
regex,
|
|
251
|
-
isNumber,
|
|
252
|
-
isDate,
|
|
253
|
-
toDate,
|
|
254
|
-
toNumber
|
|
255
|
-
};
|
|
256
244
|
function and(...rules) {
|
|
257
245
|
const isAnyRuleAsync = rules.some((rule) => {
|
|
258
246
|
if (typeof rule === "function") {
|
|
@@ -418,7 +406,7 @@ function not(rule, message) {
|
|
|
418
406
|
}
|
|
419
407
|
if (_async) {
|
|
420
408
|
newValidator = async (value, ...params) => {
|
|
421
|
-
if (
|
|
409
|
+
if (isFilled(value)) {
|
|
422
410
|
const result = await validator(value, ...params);
|
|
423
411
|
return !result;
|
|
424
412
|
}
|
|
@@ -426,7 +414,7 @@ function not(rule, message) {
|
|
|
426
414
|
};
|
|
427
415
|
} else {
|
|
428
416
|
newValidator = (value, ...params) => {
|
|
429
|
-
if (
|
|
417
|
+
if (isFilled(value)) {
|
|
430
418
|
return !validator(value, ...params);
|
|
431
419
|
}
|
|
432
420
|
return true;
|
|
@@ -443,16 +431,16 @@ function not(rule, message) {
|
|
|
443
431
|
var required = createRule({
|
|
444
432
|
type: "required",
|
|
445
433
|
validator: (value) => {
|
|
446
|
-
return
|
|
434
|
+
return isFilled(value);
|
|
447
435
|
},
|
|
448
436
|
message: "This field is required"
|
|
449
437
|
});
|
|
450
438
|
var maxLength = createRule({
|
|
451
439
|
type: "maxLength",
|
|
452
440
|
validator: (value, count) => {
|
|
453
|
-
if (
|
|
454
|
-
if (
|
|
455
|
-
return
|
|
441
|
+
if (isFilled(value) && isFilled(count)) {
|
|
442
|
+
if (isNumber(count)) {
|
|
443
|
+
return getSize(value) <= count;
|
|
456
444
|
}
|
|
457
445
|
console.warn(`[maxLength] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
458
446
|
return false;
|
|
@@ -470,7 +458,7 @@ var requiredIf = createRule({
|
|
|
470
458
|
type: "required",
|
|
471
459
|
validator(value, condition) {
|
|
472
460
|
if (condition) {
|
|
473
|
-
return
|
|
461
|
+
return isFilled(value);
|
|
474
462
|
}
|
|
475
463
|
return true;
|
|
476
464
|
},
|
|
@@ -483,10 +471,10 @@ var alphaRegex = /^[a-zA-Z]*$/;
|
|
|
483
471
|
var alpha = createRule({
|
|
484
472
|
type: "alpha",
|
|
485
473
|
validator(value) {
|
|
486
|
-
if (
|
|
474
|
+
if (isEmpty(value)) {
|
|
487
475
|
return true;
|
|
488
476
|
}
|
|
489
|
-
return
|
|
477
|
+
return matchRegex(value, alphaRegex);
|
|
490
478
|
},
|
|
491
479
|
message: "The value is not alphabetical"
|
|
492
480
|
});
|
|
@@ -494,21 +482,21 @@ var alphaNumRegex = /^[a-zA-Z0-9]*$/;
|
|
|
494
482
|
var alphaNum = createRule({
|
|
495
483
|
type: "alpha",
|
|
496
484
|
validator(value) {
|
|
497
|
-
if (
|
|
485
|
+
if (isEmpty(value)) {
|
|
498
486
|
return true;
|
|
499
487
|
}
|
|
500
|
-
return
|
|
488
|
+
return matchRegex(value, alphaNumRegex);
|
|
501
489
|
},
|
|
502
490
|
message: "The value must be alpha-numeric"
|
|
503
491
|
});
|
|
504
492
|
var between = createRule({
|
|
505
493
|
type: "between",
|
|
506
494
|
validator: (value, min, max) => {
|
|
507
|
-
if (
|
|
508
|
-
const tValue =
|
|
509
|
-
const tMin =
|
|
510
|
-
const tMax =
|
|
511
|
-
if (
|
|
495
|
+
if (isFilled(value) && isFilled(min) && isFilled(max)) {
|
|
496
|
+
const tValue = toNumber(value);
|
|
497
|
+
const tMin = toNumber(min);
|
|
498
|
+
const tMax = toNumber(max);
|
|
499
|
+
if (isNumber(tValue) && isNumber(tMin) && isNumber(tMax)) {
|
|
512
500
|
return tValue >= tMin && tValue <= tMax;
|
|
513
501
|
}
|
|
514
502
|
console.warn(`[between] Value or parameters aren't numbers, got value: ${value}, min: ${min}, max: ${max}`);
|
|
@@ -524,10 +512,10 @@ var decimalRegex = /^[-]?\d*(\.\d+)?$/;
|
|
|
524
512
|
var decimal = createRule({
|
|
525
513
|
type: "decimal",
|
|
526
514
|
validator(value) {
|
|
527
|
-
if (
|
|
515
|
+
if (isEmpty(value)) {
|
|
528
516
|
return true;
|
|
529
517
|
}
|
|
530
|
-
return
|
|
518
|
+
return matchRegex(value, decimalRegex);
|
|
531
519
|
},
|
|
532
520
|
message: "Value must be decimal"
|
|
533
521
|
});
|
|
@@ -535,10 +523,10 @@ var emailRegex = /^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~
|
|
|
535
523
|
var email = createRule({
|
|
536
524
|
type: "email",
|
|
537
525
|
validator(value) {
|
|
538
|
-
if (
|
|
526
|
+
if (isEmpty(value)) {
|
|
539
527
|
return true;
|
|
540
528
|
}
|
|
541
|
-
return
|
|
529
|
+
return matchRegex(value, emailRegex);
|
|
542
530
|
},
|
|
543
531
|
message: "Value must be an valid email address"
|
|
544
532
|
});
|
|
@@ -546,18 +534,18 @@ var integerRegex = /(^[0-9]*$)|(^-[0-9]+$)/;
|
|
|
546
534
|
var integer = createRule({
|
|
547
535
|
type: "integer",
|
|
548
536
|
validator(value) {
|
|
549
|
-
if (
|
|
537
|
+
if (isEmpty(value)) {
|
|
550
538
|
return true;
|
|
551
539
|
}
|
|
552
|
-
return
|
|
540
|
+
return matchRegex(value, integerRegex);
|
|
553
541
|
},
|
|
554
542
|
message: "Value must be an integer"
|
|
555
543
|
});
|
|
556
544
|
var maxValue = createRule({
|
|
557
545
|
type: "maxValue",
|
|
558
546
|
validator: (value, count) => {
|
|
559
|
-
if (
|
|
560
|
-
if (
|
|
547
|
+
if (isFilled(value) && isFilled(count)) {
|
|
548
|
+
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
561
549
|
return toNumber(value) <= count;
|
|
562
550
|
}
|
|
563
551
|
console.warn(`[maxValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
@@ -572,9 +560,9 @@ var maxValue = createRule({
|
|
|
572
560
|
var minLength = createRule({
|
|
573
561
|
type: "minLength",
|
|
574
562
|
validator: (value, count) => {
|
|
575
|
-
if (
|
|
576
|
-
if (
|
|
577
|
-
return
|
|
563
|
+
if (isFilled(value) && isFilled(count)) {
|
|
564
|
+
if (isNumber(count)) {
|
|
565
|
+
return getSize(value) >= count;
|
|
578
566
|
}
|
|
579
567
|
console.warn(`[minLength] Parameter isn't a number, got parameter: ${count}`);
|
|
580
568
|
return false;
|
|
@@ -591,8 +579,8 @@ var minLength = createRule({
|
|
|
591
579
|
var minValue = createRule({
|
|
592
580
|
type: "minValue",
|
|
593
581
|
validator: (value, count) => {
|
|
594
|
-
if (
|
|
595
|
-
if (
|
|
582
|
+
if (isFilled(value) && isFilled(count)) {
|
|
583
|
+
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
596
584
|
return toNumber(value) >= count;
|
|
597
585
|
}
|
|
598
586
|
console.warn(`[minValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
@@ -607,9 +595,9 @@ var minValue = createRule({
|
|
|
607
595
|
var exactLength = createRule({
|
|
608
596
|
type: "exactLength",
|
|
609
597
|
validator: (value, count) => {
|
|
610
|
-
if (
|
|
611
|
-
if (
|
|
612
|
-
return
|
|
598
|
+
if (isFilled(value) && isFilled(count)) {
|
|
599
|
+
if (isNumber(count)) {
|
|
600
|
+
return getSize(value) === count;
|
|
613
601
|
}
|
|
614
602
|
console.warn(`[minLength] Parameter isn't a number, got parameter: ${count}`);
|
|
615
603
|
return false;
|
|
@@ -624,10 +612,10 @@ var numericRegex = /^\d*(\.\d+)?$/;
|
|
|
624
612
|
var numeric = createRule({
|
|
625
613
|
type: "numeric",
|
|
626
614
|
validator(value) {
|
|
627
|
-
if (
|
|
615
|
+
if (isEmpty(value)) {
|
|
628
616
|
return true;
|
|
629
617
|
}
|
|
630
|
-
return
|
|
618
|
+
return matchRegex(value, numericRegex);
|
|
631
619
|
},
|
|
632
620
|
message: "This field must be numeric"
|
|
633
621
|
});
|
|
@@ -635,7 +623,7 @@ var requiredUnless = createRule({
|
|
|
635
623
|
type: "required",
|
|
636
624
|
validator(value, condition) {
|
|
637
625
|
if (!condition) {
|
|
638
|
-
return
|
|
626
|
+
return isFilled(value);
|
|
639
627
|
}
|
|
640
628
|
return true;
|
|
641
629
|
},
|
|
@@ -647,7 +635,7 @@ var requiredUnless = createRule({
|
|
|
647
635
|
var sameAs = createRule({
|
|
648
636
|
type: "sameAs",
|
|
649
637
|
validator(value, target, otherName = "other") {
|
|
650
|
-
if (
|
|
638
|
+
if (isEmpty(value)) {
|
|
651
639
|
return true;
|
|
652
640
|
}
|
|
653
641
|
return value === target;
|
|
@@ -660,10 +648,10 @@ var urlRegex = /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(
|
|
|
660
648
|
var url = createRule({
|
|
661
649
|
type: "url",
|
|
662
650
|
validator(value) {
|
|
663
|
-
if (
|
|
651
|
+
if (isEmpty(value)) {
|
|
664
652
|
return true;
|
|
665
653
|
}
|
|
666
|
-
return
|
|
654
|
+
return matchRegex(value, urlRegex);
|
|
667
655
|
},
|
|
668
656
|
message: "The value is not a valid URL address"
|
|
669
657
|
});
|
|
@@ -684,9 +672,9 @@ function formatLocaleDate(date) {
|
|
|
684
672
|
var dateAfter = createRule({
|
|
685
673
|
type: "dateAfter",
|
|
686
674
|
validator: (value, after) => {
|
|
687
|
-
if (
|
|
688
|
-
if (
|
|
689
|
-
const result =
|
|
675
|
+
if (isFilled(value) && isFilled(after)) {
|
|
676
|
+
if (isDate(value) && isDate(after)) {
|
|
677
|
+
const result = toDate(value).getTime() > toDate(after).getTime();
|
|
690
678
|
if (result) {
|
|
691
679
|
return true;
|
|
692
680
|
}
|
|
@@ -706,9 +694,9 @@ var dateAfter = createRule({
|
|
|
706
694
|
var dateBefore = createRule({
|
|
707
695
|
type: "dateBefore",
|
|
708
696
|
validator: (value, before) => {
|
|
709
|
-
if (
|
|
710
|
-
if (
|
|
711
|
-
const result =
|
|
697
|
+
if (isFilled(value) && isFilled(before)) {
|
|
698
|
+
if (isDate(value) && isDate(before)) {
|
|
699
|
+
const result = toDate(value).getTime() < toDate(before).getTime();
|
|
712
700
|
if (result) {
|
|
713
701
|
return true;
|
|
714
702
|
}
|
|
@@ -728,8 +716,8 @@ var dateBefore = createRule({
|
|
|
728
716
|
var dateBetween = createRule({
|
|
729
717
|
type: "dateBetween",
|
|
730
718
|
validator: (value, before, after) => {
|
|
731
|
-
if (
|
|
732
|
-
return
|
|
719
|
+
if (isDate(value) && isDate(before) && isDate(after)) {
|
|
720
|
+
return toDate(value).getTime() > toDate(before).getTime() && toDate(value).getTime() < toDate(after).getTime();
|
|
733
721
|
}
|
|
734
722
|
return true;
|
|
735
723
|
},
|
|
@@ -753,7 +741,7 @@ function nibbleValid(nibble) {
|
|
|
753
741
|
var ipAddress = createRule({
|
|
754
742
|
type: "ipAddress",
|
|
755
743
|
validator(value) {
|
|
756
|
-
if (
|
|
744
|
+
if (isEmpty(value)) {
|
|
757
745
|
return true;
|
|
758
746
|
}
|
|
759
747
|
if (typeof value !== "string") {
|
|
@@ -767,7 +755,7 @@ var ipAddress = createRule({
|
|
|
767
755
|
var macAddress = createRule({
|
|
768
756
|
type: "macAddress",
|
|
769
757
|
validator(value, separator = ":") {
|
|
770
|
-
if (
|
|
758
|
+
if (isEmpty(value)) {
|
|
771
759
|
return true;
|
|
772
760
|
}
|
|
773
761
|
if (typeof value !== "string") {
|
|
@@ -782,7 +770,7 @@ var hexValid = (hex) => hex.toLowerCase().match(/^[0-9a-f]{2}$/);
|
|
|
782
770
|
var checked = createRule({
|
|
783
771
|
type: "checked",
|
|
784
772
|
validator: (value) => {
|
|
785
|
-
if (
|
|
773
|
+
if (isFilled(value)) {
|
|
786
774
|
return value === true;
|
|
787
775
|
}
|
|
788
776
|
return true;
|
|
@@ -792,7 +780,7 @@ var checked = createRule({
|
|
|
792
780
|
var contains = createRule({
|
|
793
781
|
type: "contains",
|
|
794
782
|
validator(value, part) {
|
|
795
|
-
if (
|
|
783
|
+
if (isFilled(value) && isFilled(part)) {
|
|
796
784
|
return value.includes(part);
|
|
797
785
|
}
|
|
798
786
|
return true;
|
|
@@ -804,7 +792,7 @@ var contains = createRule({
|
|
|
804
792
|
var startsWith = createRule({
|
|
805
793
|
type: "startsWith",
|
|
806
794
|
validator(value, part) {
|
|
807
|
-
if (
|
|
795
|
+
if (isFilled(value) && isFilled(part)) {
|
|
808
796
|
return value.startsWith(part);
|
|
809
797
|
}
|
|
810
798
|
return true;
|
|
@@ -816,7 +804,7 @@ var startsWith = createRule({
|
|
|
816
804
|
var endsWith = createRule({
|
|
817
805
|
type: "endsWith",
|
|
818
806
|
validator(value, part) {
|
|
819
|
-
if (
|
|
807
|
+
if (isFilled(value) && isFilled(part)) {
|
|
820
808
|
return value.endsWith(part);
|
|
821
809
|
}
|
|
822
810
|
return true;
|
|
@@ -825,15 +813,15 @@ var endsWith = createRule({
|
|
|
825
813
|
return `Field must end with ${part}`;
|
|
826
814
|
}
|
|
827
815
|
});
|
|
828
|
-
var
|
|
816
|
+
var regex = createRule({
|
|
829
817
|
type: "regex",
|
|
830
818
|
validator(value, ...regexp) {
|
|
831
|
-
if (
|
|
832
|
-
return
|
|
819
|
+
if (isFilled(value)) {
|
|
820
|
+
return matchRegex(value, ...regexp);
|
|
833
821
|
}
|
|
834
822
|
return true;
|
|
835
823
|
},
|
|
836
824
|
message: "This field does not match the required pattern"
|
|
837
825
|
});
|
|
838
826
|
|
|
839
|
-
export { alpha, alphaNum, and, applyIf, between, checked, contains, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, integer, ipAddress, macAddress, maxLength, maxValue, minLength, minValue, not, numeric, or,
|
|
827
|
+
export { alpha, alphaNum, and, applyIf, between, checked, contains, dateAfter, dateBefore, dateBetween, decimal, email, endsWith, exactLength, getSize, integer, ipAddress, isDate, isEmpty, isFilled, isNumber, macAddress, matchRegex, maxLength, maxValue, minLength, minValue, not, numeric, or, regex, required, requiredIf, requiredUnless, sameAs, startsWith, toDate, toNumber, url, withAsync, withMessage, withParams, withTooltip };
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/rules",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Collection of rules and helpers for Regle",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@regle/core": "0.
|
|
6
|
+
"@regle/core": "0.5.1"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
|
-
"@typescript-eslint/eslint-plugin": "8.18.
|
|
10
|
-
"@typescript-eslint/parser": "8.18.
|
|
9
|
+
"@typescript-eslint/eslint-plugin": "8.18.1",
|
|
10
|
+
"@typescript-eslint/parser": "8.18.1",
|
|
11
11
|
"@vue/reactivity": "3.5.13",
|
|
12
12
|
"@vue/test-utils": "2.4.6",
|
|
13
|
-
"bumpp": "9.9.
|
|
13
|
+
"bumpp": "9.9.2",
|
|
14
14
|
"changelogithub": "0.13.11",
|
|
15
15
|
"cross-env": "7.0.3",
|
|
16
16
|
"eslint": "9.15.0",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"eslint-plugin-vue": "9.31.0",
|
|
19
19
|
"prettier": "3.3.3",
|
|
20
20
|
"tsup": "8.3.5",
|
|
21
|
-
"type-fest": "4.30.
|
|
21
|
+
"type-fest": "4.30.2",
|
|
22
22
|
"typescript": "5.6.3",
|
|
23
23
|
"vitest": "2.1.8",
|
|
24
24
|
"vue": "3.5.13",
|