@regle/rules 0.10.4 → 1.0.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.
- package/dist/regle-rules.cjs +51 -16
- package/dist/regle-rules.d.cts +26 -10
- package/dist/regle-rules.d.ts +26 -10
- package/dist/regle-rules.min.cjs +1 -1
- package/dist/regle-rules.min.mjs +1 -1
- package/dist/regle-rules.mjs +51 -16
- package/package.json +8 -8
package/dist/regle-rules.cjs
CHANGED
|
@@ -139,7 +139,7 @@ function applyIf(_condition, rule) {
|
|
|
139
139
|
|
|
140
140
|
// ../shared/utils/isEmpty.ts
|
|
141
141
|
function isEmpty(value, considerEmptyArrayInvalid = true) {
|
|
142
|
-
if (value ===
|
|
142
|
+
if (value === void 0 || value === null) {
|
|
143
143
|
return true;
|
|
144
144
|
}
|
|
145
145
|
if (value instanceof Date) {
|
|
@@ -468,10 +468,15 @@ var required = core.createRule({
|
|
|
468
468
|
});
|
|
469
469
|
var maxLength = core.createRule({
|
|
470
470
|
type: "maxLength",
|
|
471
|
-
validator: (value, count) => {
|
|
471
|
+
validator: (value, count, options) => {
|
|
472
|
+
const { allowEqual = true } = options ?? {};
|
|
472
473
|
if (isFilled(value, false) && isFilled(count)) {
|
|
473
474
|
if (isNumber(count)) {
|
|
474
|
-
|
|
475
|
+
if (allowEqual) {
|
|
476
|
+
return getSize(value) <= count;
|
|
477
|
+
} else {
|
|
478
|
+
return getSize(value) < count;
|
|
479
|
+
}
|
|
475
480
|
}
|
|
476
481
|
console.warn(`[maxLength] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
477
482
|
return false;
|
|
@@ -522,13 +527,18 @@ var alphaNum = core.createRule({
|
|
|
522
527
|
});
|
|
523
528
|
var between = core.createRule({
|
|
524
529
|
type: "between",
|
|
525
|
-
validator: (value, min, max) => {
|
|
530
|
+
validator: (value, min, max, options) => {
|
|
531
|
+
const { allowEqual = true } = options ?? {};
|
|
526
532
|
if (isFilled(value) && isFilled(min) && isFilled(max)) {
|
|
527
533
|
const tValue = toNumber(value);
|
|
528
534
|
const tMin = toNumber(min);
|
|
529
535
|
const tMax = toNumber(max);
|
|
530
536
|
if (isNumber(tValue) && isNumber(tMin) && isNumber(tMax)) {
|
|
531
|
-
|
|
537
|
+
if (allowEqual) {
|
|
538
|
+
return tValue >= tMin && tValue <= tMax;
|
|
539
|
+
} else {
|
|
540
|
+
return tValue > tMin && tValue < tMax;
|
|
541
|
+
}
|
|
532
542
|
}
|
|
533
543
|
console.warn(`[between] Value or parameters aren't numbers, got value: ${value}, min: ${min}, max: ${max}`);
|
|
534
544
|
return false;
|
|
@@ -574,26 +584,41 @@ var integer = core.createRule({
|
|
|
574
584
|
});
|
|
575
585
|
var maxValue = core.createRule({
|
|
576
586
|
type: "maxValue",
|
|
577
|
-
validator: (value, count) => {
|
|
587
|
+
validator: (value, count, options) => {
|
|
588
|
+
const { allowEqual = true } = options ?? {};
|
|
578
589
|
if (isFilled(value) && isFilled(count)) {
|
|
579
590
|
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
580
|
-
|
|
591
|
+
if (allowEqual) {
|
|
592
|
+
return toNumber(value) <= count;
|
|
593
|
+
} else {
|
|
594
|
+
return toNumber(value) < count;
|
|
595
|
+
}
|
|
581
596
|
}
|
|
582
597
|
console.warn(`[maxValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
583
598
|
return true;
|
|
584
599
|
}
|
|
585
600
|
return true;
|
|
586
601
|
},
|
|
587
|
-
message: ({ $params: [count] }) => {
|
|
588
|
-
|
|
602
|
+
message: ({ $params: [count, options] }) => {
|
|
603
|
+
const { allowEqual = true } = options ?? {};
|
|
604
|
+
if (allowEqual) {
|
|
605
|
+
return `Value must be less than or equal to ${count}`;
|
|
606
|
+
} else {
|
|
607
|
+
return `Value must be less than ${count}`;
|
|
608
|
+
}
|
|
589
609
|
}
|
|
590
610
|
});
|
|
591
611
|
var minLength = core.createRule({
|
|
592
612
|
type: "minLength",
|
|
593
|
-
validator: (value, count) => {
|
|
613
|
+
validator: (value, count, options) => {
|
|
614
|
+
const { allowEqual = true } = options ?? {};
|
|
594
615
|
if (isFilled(value, false) && isFilled(count)) {
|
|
595
616
|
if (isNumber(count)) {
|
|
596
|
-
|
|
617
|
+
if (allowEqual) {
|
|
618
|
+
return getSize(value) >= count;
|
|
619
|
+
} else {
|
|
620
|
+
return getSize(value) > count;
|
|
621
|
+
}
|
|
597
622
|
}
|
|
598
623
|
console.warn(`[minLength] Parameter isn't a number, got parameter: ${count}`);
|
|
599
624
|
return false;
|
|
@@ -609,18 +634,28 @@ var minLength = core.createRule({
|
|
|
609
634
|
});
|
|
610
635
|
var minValue = core.createRule({
|
|
611
636
|
type: "minValue",
|
|
612
|
-
validator: (value, count) => {
|
|
637
|
+
validator: (value, count, options) => {
|
|
638
|
+
const { allowEqual = true } = options ?? {};
|
|
613
639
|
if (isFilled(value) && isFilled(count)) {
|
|
614
640
|
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
615
|
-
|
|
641
|
+
if (allowEqual) {
|
|
642
|
+
return toNumber(value) >= count;
|
|
643
|
+
} else {
|
|
644
|
+
return toNumber(value) > count;
|
|
645
|
+
}
|
|
616
646
|
}
|
|
617
647
|
console.warn(`[minValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
618
648
|
return true;
|
|
619
649
|
}
|
|
620
650
|
return true;
|
|
621
651
|
},
|
|
622
|
-
message: ({ $params: [count] }) => {
|
|
623
|
-
|
|
652
|
+
message: ({ $params: [count, options] }) => {
|
|
653
|
+
const { allowEqual = true } = options ?? {};
|
|
654
|
+
if (allowEqual) {
|
|
655
|
+
return `Value must be greater than or equal to ${count}`;
|
|
656
|
+
} else {
|
|
657
|
+
return `Value must be greater than ${count}`;
|
|
658
|
+
}
|
|
624
659
|
}
|
|
625
660
|
});
|
|
626
661
|
var exactValue = core.createRule({
|
|
@@ -705,7 +740,7 @@ var url = core.createRule({
|
|
|
705
740
|
|
|
706
741
|
// src/utils/getLocale.util.ts
|
|
707
742
|
function getUserLocale() {
|
|
708
|
-
if (navigator.languages !=
|
|
743
|
+
if (navigator.languages != void 0) return navigator.languages[0];
|
|
709
744
|
return navigator.language;
|
|
710
745
|
}
|
|
711
746
|
function formatLocaleDate(date) {
|
package/dist/regle-rules.d.cts
CHANGED
|
@@ -214,12 +214,8 @@ type MetadataBase = {
|
|
|
214
214
|
type ExtractMetaDataFromRules<T extends any[]> = T extends [infer F, ...infer R] ? F extends RegleRuleDefinition<any, any, any, infer M extends MetadataBase> ? [M, ...ExtractMetaDataFromRules<R>] : F extends InlineRuleDeclaration<any, any[], infer M extends MetadataBase | Promise<MetadataBase>> ? [M, ...ExtractMetaDataFromRules<R>] : [...ExtractMetaDataFromRules<R>] : [];
|
|
215
215
|
type ExtractMetadata<T extends [...any[]]> = T extends [infer F, ...infer R] ? F & ExtractMetadata<R> : {};
|
|
216
216
|
type GuessMetadataFromRules<T extends any[], TMeta = ExtractMetadata<ExtractMetaDataFromRules<T>>> = TMeta extends EmptyObject ? boolean : TMeta;
|
|
217
|
-
type CreateFn<T extends any[]> = (...args: T) => any;
|
|
218
217
|
type FilterTuple<T extends any[]> = T extends [infer F, ...infer R] ? [F] extends [[]] ? [...FilterTuple<R>] : [F, ...FilterTuple<R>] : [];
|
|
219
|
-
type
|
|
220
|
-
[K in keyof Args]: Args[K] extends Array<infer U> ? U : never;
|
|
221
|
-
}) => any : never>;
|
|
222
|
-
type UnwrapTuples<T extends any[]> = FilterTuple<UnwrapTuplesRaw<T>>;
|
|
218
|
+
type UnwrapTuples<T extends any[]> = FilterTuple<T> extends [infer U extends any[]] ? U : FilterTuple<T>;
|
|
223
219
|
|
|
224
220
|
/**
|
|
225
221
|
* The and operator combines multiple rules and validates successfully only if all provided rules are valid.
|
|
@@ -241,13 +237,22 @@ declare function not<TValue, TParams extends any[] = [], TReturn extends RegleRu
|
|
|
241
237
|
*/
|
|
242
238
|
declare const required: RegleRuleDefinition<unknown, [], false, boolean, unknown>;
|
|
243
239
|
|
|
240
|
+
interface CommonComparationOptions {
|
|
241
|
+
/**
|
|
242
|
+
* Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
|
|
243
|
+
* @default true
|
|
244
|
+
*/
|
|
245
|
+
allowEqual?: boolean;
|
|
246
|
+
}
|
|
247
|
+
|
|
244
248
|
/**
|
|
245
249
|
* Requires the input value to have a maximum specified length, inclusive. Works with arrays, objects and strings.
|
|
246
250
|
*
|
|
247
251
|
* @param max - the maximum length
|
|
248
252
|
*/
|
|
249
253
|
declare const maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
250
|
-
count: number
|
|
254
|
+
count: number,
|
|
255
|
+
options?: CommonComparationOptions
|
|
251
256
|
], false, boolean>;
|
|
252
257
|
|
|
253
258
|
/**
|
|
@@ -273,7 +278,11 @@ declare const alphaNum: RegleRuleDefinition<string | number, [], false, boolean,
|
|
|
273
278
|
* @param min - the minimum limit
|
|
274
279
|
* @param max - the maximum limit
|
|
275
280
|
*/
|
|
276
|
-
declare const between: RegleRuleWithParamsDefinition<number, [
|
|
281
|
+
declare const between: RegleRuleWithParamsDefinition<number, [
|
|
282
|
+
min: number,
|
|
283
|
+
max: number,
|
|
284
|
+
options?: CommonComparationOptions
|
|
285
|
+
], false, boolean>;
|
|
277
286
|
|
|
278
287
|
/**
|
|
279
288
|
* Allows positive and negative decimal numbers.
|
|
@@ -295,7 +304,10 @@ declare const integer: RegleRuleDefinition<string | number, [], false, boolean,
|
|
|
295
304
|
*
|
|
296
305
|
* @param max - the maximum value
|
|
297
306
|
*/
|
|
298
|
-
declare const maxValue: RegleRuleWithParamsDefinition<number, [
|
|
307
|
+
declare const maxValue: RegleRuleWithParamsDefinition<number, [
|
|
308
|
+
count: number,
|
|
309
|
+
options?: CommonComparationOptions
|
|
310
|
+
], false, boolean>;
|
|
299
311
|
|
|
300
312
|
/**
|
|
301
313
|
* Requires the input value to have a minimum specified length, inclusive. Works with arrays, objects and strings.
|
|
@@ -303,7 +315,8 @@ declare const maxValue: RegleRuleWithParamsDefinition<number, [count: number], f
|
|
|
303
315
|
* @param min - the minimum value
|
|
304
316
|
*/
|
|
305
317
|
declare const minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
306
|
-
count: number
|
|
318
|
+
count: number,
|
|
319
|
+
options?: CommonComparationOptions
|
|
307
320
|
], false, boolean>;
|
|
308
321
|
|
|
309
322
|
/**
|
|
@@ -311,7 +324,10 @@ declare const minLength: RegleRuleWithParamsDefinition<string | any[] | Record<P
|
|
|
311
324
|
*
|
|
312
325
|
* @param count - the minimum count
|
|
313
326
|
*/
|
|
314
|
-
declare const minValue: RegleRuleWithParamsDefinition<number, [
|
|
327
|
+
declare const minValue: RegleRuleWithParamsDefinition<number, [
|
|
328
|
+
count: number,
|
|
329
|
+
options?: CommonComparationOptions
|
|
330
|
+
], false, boolean>;
|
|
315
331
|
|
|
316
332
|
declare const exactValue: RegleRuleWithParamsDefinition<number, [count: number], false, boolean>;
|
|
317
333
|
|
package/dist/regle-rules.d.ts
CHANGED
|
@@ -214,12 +214,8 @@ type MetadataBase = {
|
|
|
214
214
|
type ExtractMetaDataFromRules<T extends any[]> = T extends [infer F, ...infer R] ? F extends RegleRuleDefinition<any, any, any, infer M extends MetadataBase> ? [M, ...ExtractMetaDataFromRules<R>] : F extends InlineRuleDeclaration<any, any[], infer M extends MetadataBase | Promise<MetadataBase>> ? [M, ...ExtractMetaDataFromRules<R>] : [...ExtractMetaDataFromRules<R>] : [];
|
|
215
215
|
type ExtractMetadata<T extends [...any[]]> = T extends [infer F, ...infer R] ? F & ExtractMetadata<R> : {};
|
|
216
216
|
type GuessMetadataFromRules<T extends any[], TMeta = ExtractMetadata<ExtractMetaDataFromRules<T>>> = TMeta extends EmptyObject ? boolean : TMeta;
|
|
217
|
-
type CreateFn<T extends any[]> = (...args: T) => any;
|
|
218
217
|
type FilterTuple<T extends any[]> = T extends [infer F, ...infer R] ? [F] extends [[]] ? [...FilterTuple<R>] : [F, ...FilterTuple<R>] : [];
|
|
219
|
-
type
|
|
220
|
-
[K in keyof Args]: Args[K] extends Array<infer U> ? U : never;
|
|
221
|
-
}) => any : never>;
|
|
222
|
-
type UnwrapTuples<T extends any[]> = FilterTuple<UnwrapTuplesRaw<T>>;
|
|
218
|
+
type UnwrapTuples<T extends any[]> = FilterTuple<T> extends [infer U extends any[]] ? U : FilterTuple<T>;
|
|
223
219
|
|
|
224
220
|
/**
|
|
225
221
|
* The and operator combines multiple rules and validates successfully only if all provided rules are valid.
|
|
@@ -241,13 +237,22 @@ declare function not<TValue, TParams extends any[] = [], TReturn extends RegleRu
|
|
|
241
237
|
*/
|
|
242
238
|
declare const required: RegleRuleDefinition<unknown, [], false, boolean, unknown>;
|
|
243
239
|
|
|
240
|
+
interface CommonComparationOptions {
|
|
241
|
+
/**
|
|
242
|
+
* Change the behaviour of the rule to check only if the value is equal in addition to be strictly superior or inferior
|
|
243
|
+
* @default true
|
|
244
|
+
*/
|
|
245
|
+
allowEqual?: boolean;
|
|
246
|
+
}
|
|
247
|
+
|
|
244
248
|
/**
|
|
245
249
|
* Requires the input value to have a maximum specified length, inclusive. Works with arrays, objects and strings.
|
|
246
250
|
*
|
|
247
251
|
* @param max - the maximum length
|
|
248
252
|
*/
|
|
249
253
|
declare const maxLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
250
|
-
count: number
|
|
254
|
+
count: number,
|
|
255
|
+
options?: CommonComparationOptions
|
|
251
256
|
], false, boolean>;
|
|
252
257
|
|
|
253
258
|
/**
|
|
@@ -273,7 +278,11 @@ declare const alphaNum: RegleRuleDefinition<string | number, [], false, boolean,
|
|
|
273
278
|
* @param min - the minimum limit
|
|
274
279
|
* @param max - the maximum limit
|
|
275
280
|
*/
|
|
276
|
-
declare const between: RegleRuleWithParamsDefinition<number, [
|
|
281
|
+
declare const between: RegleRuleWithParamsDefinition<number, [
|
|
282
|
+
min: number,
|
|
283
|
+
max: number,
|
|
284
|
+
options?: CommonComparationOptions
|
|
285
|
+
], false, boolean>;
|
|
277
286
|
|
|
278
287
|
/**
|
|
279
288
|
* Allows positive and negative decimal numbers.
|
|
@@ -295,7 +304,10 @@ declare const integer: RegleRuleDefinition<string | number, [], false, boolean,
|
|
|
295
304
|
*
|
|
296
305
|
* @param max - the maximum value
|
|
297
306
|
*/
|
|
298
|
-
declare const maxValue: RegleRuleWithParamsDefinition<number, [
|
|
307
|
+
declare const maxValue: RegleRuleWithParamsDefinition<number, [
|
|
308
|
+
count: number,
|
|
309
|
+
options?: CommonComparationOptions
|
|
310
|
+
], false, boolean>;
|
|
299
311
|
|
|
300
312
|
/**
|
|
301
313
|
* Requires the input value to have a minimum specified length, inclusive. Works with arrays, objects and strings.
|
|
@@ -303,7 +315,8 @@ declare const maxValue: RegleRuleWithParamsDefinition<number, [count: number], f
|
|
|
303
315
|
* @param min - the minimum value
|
|
304
316
|
*/
|
|
305
317
|
declare const minLength: RegleRuleWithParamsDefinition<string | any[] | Record<PropertyKey, any>, [
|
|
306
|
-
count: number
|
|
318
|
+
count: number,
|
|
319
|
+
options?: CommonComparationOptions
|
|
307
320
|
], false, boolean>;
|
|
308
321
|
|
|
309
322
|
/**
|
|
@@ -311,7 +324,10 @@ declare const minLength: RegleRuleWithParamsDefinition<string | any[] | Record<P
|
|
|
311
324
|
*
|
|
312
325
|
* @param count - the minimum count
|
|
313
326
|
*/
|
|
314
|
-
declare const minValue: RegleRuleWithParamsDefinition<number, [
|
|
327
|
+
declare const minValue: RegleRuleWithParamsDefinition<number, [
|
|
328
|
+
count: number,
|
|
329
|
+
options?: CommonComparationOptions
|
|
330
|
+
], false, boolean>;
|
|
315
331
|
|
|
316
332
|
declare const exactValue: RegleRuleWithParamsDefinition<number, [count: number], false, boolean>;
|
|
317
333
|
|
package/dist/regle-rules.min.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var core=require('@regle/core'),vue=require('vue');function P(e,t){let i,n,s,f;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:f}=e;let m=core.createRule({type:i,validator:n,active:s,message:t}),R=[...f??[]];if(m._params=R,m._message_patched=true,typeof m=="function"){let r=m(...R);return r._message_patched=true,r}else return m}function _(e,t){let i,n,s,f,m;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:f,_message:m}=e;let R=core.createRule({type:i,validator:n,active:s,message:m,tooltip:t}),r=[...f??[]];if(R._params=r,R._tooltip_patched=true,typeof R=="function"){let l=R(...r);return R._tooltip_patched=true,l}else return R}function I(e,t){let i=async(s,...f)=>e(s,...f),n=core.createRule({type:core.InternalRuleType.Async,validator:i,message:""});return n._params=n._params?.concat(t),n(...t??[])}function w(e,t){let i,n,s=[],f="";typeof e=="function"?(i=core.InternalRuleType.Inline,n=(R,...r)=>e(R,...r),s=[t]):({_type:i,validator:n,_message:f}=e,s=s=e._params?.concat(t));let m=core.createRule({type:core.InternalRuleType.Inline,validator:n,message:f});return m._params=m._params?.concat(s),m(...t)}function L(e,t){let i,n,s=[],f="";typeof t=="function"?(i=core.InternalRuleType.Inline,n=t,s=[e]):({_type:i,validator:n,_message:f}=t,s=t._params?.concat([e]));function m(o,...p){let[b]=core.unwrapRuleParameters([e]);return b?n(o,...p):true}function R(o){let[p]=core.unwrapRuleParameters([e]);return p}let r=core.createRule({type:i,validator:m,active:R,message:f}),l=[...s??[]];return r._params=l,typeof r=="function"?r(...l):r}function u(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function x(e){if(u(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let i=new Date(e);if(i.toString()==="Invalid Date")return !1;t=i;}return !!t}catch{return false}}function T(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 a(e,t=true){return !u(typeof e=="string"?e.trim():e,t)}function y(e){return e==null||typeof e!="number"?false:!isNaN(e)}function c(e,...t){if(u(e))return true;let i=typeof e=="number"?e.toString():e;return t.every(n=>(n.lastIndex=0,n.test(i)))}function D(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 g(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 l=r._params;return l?.length?l:[]}}).flat().filter(r=>!!r);function n(r,l,...o){let p=[],b=0;for(let d of r)if(typeof d=="function")p.push(d(l)),b++;else {let h=d._params?.length??0;p.push(d.validator(l,...o.slice(b,h))),h&&(b+=h);}return p}function s(r){return r?.some(o=>typeof o!="boolean")?{$valid:r.every(o=>typeof o=="boolean"?!!o:o.$valid),...r.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:r.every(o=>!!o)}let f;e.length?f=t?async(r,...l)=>{let o=await Promise.all(n(e,r,...l));return s(o)}:(r,...l)=>{let o=n(e,r,...l);return s(o)}:f=r=>false;let m=core.createRule({type:"and",validator:f,message:"The value does not match all of the provided validators"}),R=[...i??[]];return m._params=R,typeof m=="function"?m(...R):m}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 n(r,l,...o){let p=[],b=0;for(let d of r)if(typeof d=="function")p.push(d(l)),b++;else {let h=d._params?.length??0;p.push(d.validator(l,...o.slice(b,h))),h&&(b+=h);}return p}function s(r){return r.some(o=>typeof o!="boolean")?{$valid:r.some(o=>typeof o=="boolean"?!!o:o.$valid),...r.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:r.some(o=>!!o)}let m=core.createRule({type:"or",validator:t?async(r,...l)=>{let o=await Promise.all(n(e,r,...l));return s(o)}:(r,...l)=>{let o=n(e,r,...l);return s(o)},message:"The value does not match any of the provided validators"}),R=[...i??[]];return m._params=R,typeof m=="function"?m(...R):m}function B(e,t){let i,n,s,f,m;typeof e=="function"?(n=e,m=e.constructor.name==="AsyncFunction"):({_type:i,validator:n,_params:f}=e,m=e._async),m?s=async(l,...o)=>a(l)?!await n(l,...o):true:s=(l,...o)=>a(l)?!n(l,...o):true;let R=core.createRule({type:"not",validator:s,message:t??"Error"}),r=[...f??[]];return R._params=r,typeof R=="function"?R(...r):R}var Bt=core.createRule({type:"required",validator:e=>a(e),message:"This field is required"});var Qt=core.createRule({type:"maxLength",validator:(e,t)=>a(e,false)&&a(t)?y(t)?D(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),false):true,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var er=core.createRule({type:"required",validator(e,t){return t?a(e):true},message:"This field is required",active({$params:[e]}){return e}});var X=/^[a-zA-Z]*$/,nr=core.createRule({type:"alpha",validator(e){return u(e)?true:c(e,X)},message:"The value is not alphabetical"});var j=/^[a-zA-Z0-9]*$/,lr=core.createRule({type:"alpha",validator(e){return u(e)?true:c(e,j)},message:"The value must be alpha-numeric"});var Rr=core.createRule({type:"between",validator:(e,t,i)=>{if(a(e)&&a(t)&&a(i)){let n=g(e),s=g(t),f=g(i);return y(n)&&y(s)&&y(f)?n>=s&&n<=f:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${i}`),false)}return true},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var re=/^[-]?\d*(\.\d+)?$/,gr=core.createRule({type:"decimal",validator(e){return u(e)?true:c(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,br=core.createRule({type:"email",validator(e){return u(e)?true:c(e,ne)},message:"Value must be an valid email address"});var oe=/(^[0-9]*$)|(^-[0-9]+$)/,Pr=core.createRule({type:"integer",validator(e){return u(e)?true:c(e,oe)},message:"Value must be an integer"});var Ar=core.createRule({type:"maxValue",validator:(e,t)=>a(e)&&a(t)?y(t)&&!isNaN(g(e))?g(e)<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The maximum value allowed is ${e}`});var _r=core.createRule({type:"minLength",validator:(e,t)=>a(e,false)&&a(t)?y(t)?D(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true,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 kr=core.createRule({type:"minValue",validator:(e,t)=>a(e)&&a(t)?y(t)&&!isNaN(g(e))?g(e)>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The minimum value allowed is ${e}`});var Sr=core.createRule({type:"exactValue",validator:(e,t)=>a(e)&&a(t)?y(t)&&!isNaN(g(e))?g(e)===t:(console.warn(`[exactValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The value must be equal to ${e}`});var qr=core.createRule({type:"exactLength",validator:(e,t)=>a(e,false)&&a(t)?y(t)?D(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var pe=/^\d*(\.\d+)?$/,Jr=core.createRule({type:"numeric",validator(e){return u(e)?true:c(e,pe)},message:"This field must be numeric"});var Yr=core.createRule({type:"required",validator(e,t){return t?true:a(e)},message:"This field is required",active({$params:[e]}){return !e}});var ra=core.createRule({type:"sameAs",validator(e,t,i="other"){return u(e)?true:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var de=/^(?:(?:(?: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,oa=core.createRule({type:"url",validator(e){return u(e)?true:c(e,de)},message:"The value is not a valid URL address"});function Te(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function M(e){return e?new Intl.DateTimeFormat(Te(),{dateStyle:"short"}).format(new Date(e)):"?"}var Ra=core.createRule({type:"dateAfter",validator:(e,t)=>a(e)&&a(t)?x(e)&&x(t)?T(e).getTime()>T(t).getTime()?true:{$valid:false,error:"date-not-after"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 da=core.createRule({type:"dateBefore",validator:(e,t)=>a(e)&&a(t)?x(e)&&x(t)?T(e).getTime()<T(t).getTime()?true:{$valid:false,error:"date-not-before"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 ha=core.createRule({type:"dateBetween",validator:(e,t,i)=>x(e)&&x(t)&&x(i)?T(e).getTime()>T(t).getTime()&&T(e).getTime()<T(i).getTime():true,message:({$params:[e,t]})=>`The date must be between ${M(e)} and ${M(t)}`});function Me(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return false;let t=+e|0;return t>=0&&t<=255}var $a=core.createRule({type:"ipAddress",validator(e){if(u(e))return true;if(typeof e!="string")return false;let t=e.split(".");return t.length===4&&t.every(Me)},message:"The value is not a valid IP address"});var Wa=core.createRule({type:"macAddress",validator(e,t=":"){if(u(e))return true;if(typeof e!="string")return false;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(we)},message:"The value is not a valid MAC Address"}),we=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var Ea=core.createRule({type:"checked",validator:e=>a(e)?e===true:true,message:"This field must be checked"});var Ca=core.createRule({type:"contains",validator(e,t){return a(e)&&a(t)?e.includes(t):true},message({$params:[e]}){return `Field must contain ${e}`}});var Ua=core.createRule({type:"startsWith",validator(e,t){return a(e)&&a(t)?e.startsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Ba=core.createRule({type:"endsWith",validator(e,t){return a(e)&&a(t)?e.endsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Qa=core.createRule({type:"regex",validator(e,t){if(a(e)){let i=Array.isArray(t)?t:[t];return c(e,...i)}return true},message:"This field does not match the required pattern"});function en(e){let t=vue.computed(()=>vue.toValue(e));return P(w((n,s)=>a(n)&&a(s,false)?s.includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${n.join(", ")}.`)}function Ie(e){let t=Object.keys(e).filter(n=>typeof e[e[n]]!="number"),i={};for(let n of t)i[n]=e[n];return Object.values(i)}function nn(e){let t=vue.computed(()=>vue.toValue(e));return P(w((n,s)=>a(n)&&!u(s)?Ie(s).includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${Object.values(n).join(", ")}.`)}exports.alpha=nr;exports.alphaNum=lr;exports.and=U;exports.applyIf=L;exports.between=Rr;exports.checked=Ea;exports.contains=Ca;exports.dateAfter=Ra;exports.dateBefore=da;exports.dateBetween=ha;exports.decimal=gr;exports.email=br;exports.endsWith=Ba;exports.exactLength=qr;exports.exactValue=Sr;exports.getSize=D;exports.integer=Pr;exports.ipAddress=$a;exports.isDate=x;exports.isEmpty=u;exports.isFilled=a;exports.isNumber=y;exports.macAddress=Wa;exports.matchRegex=c;exports.maxLength=Qt;exports.maxValue=Ar;exports.minLength=_r;exports.minValue=kr;exports.nativeEnum=nn;exports.not=B;exports.numeric=Jr;exports.oneOf=en;exports.or=q;exports.regex=Qa;exports.required=Bt;exports.requiredIf=er;exports.requiredUnless=Yr;exports.sameAs=ra;exports.startsWith=Ua;exports.toDate=T;exports.toNumber=g;exports.url=oa;exports.withAsync=I;exports.withMessage=P;exports.withParams=w;exports.withTooltip=_;
|
|
1
|
+
'use strict';var core=require('@regle/core'),vue=require('vue');function P(e,t){let r,n,s,f;typeof e=="function"&&!("_validator"in e)?(r=core.InternalRuleType.Inline,n=e):{_type:r,validator:n,_active:s,_params:f}=e;let l=core.createRule({type:r,validator:n,active:s,message:t}),p=[...f??[]];if(l._params=p,l._message_patched=true,typeof l=="function"){let a=l(...p);return a._message_patched=true,a}else return l}function C(e,t){let r,n,s,f,l;typeof e=="function"&&!("_validator"in e)?(r=core.InternalRuleType.Inline,n=e):{_type:r,validator:n,_active:s,_params:f,_message:l}=e;let p=core.createRule({type:r,validator:n,active:s,message:l,tooltip:t}),a=[...f??[]];if(p._params=a,p._tooltip_patched=true,typeof p=="function"){let u=p(...a);return p._tooltip_patched=true,u}else return p}function E(e,t){let r=async(s,...f)=>e(s,...f),n=core.createRule({type:core.InternalRuleType.Async,validator:r,message:""});return n._params=n._params?.concat(t),n(...t??[])}function w(e,t){let r,n,s=[],f="";typeof e=="function"?(r=core.InternalRuleType.Inline,n=(p,...a)=>e(p,...a),s=[t]):({_type:r,validator:n,_message:f}=e,s=s=e._params?.concat(t));let l=core.createRule({type:core.InternalRuleType.Inline,validator:n,message:f});return l._params=l._params?.concat(s),l(...t)}function z(e,t){let r,n,s=[],f="";typeof t=="function"?(r=core.InternalRuleType.Inline,n=t,s=[e]):({_type:r,validator:n,_message:f}=t,s=t._params?.concat([e]));function l(o,...R){let[b]=core.unwrapRuleParameters([e]);return b?n(o,...R):true}function p(o){let[R]=core.unwrapRuleParameters([e]);return R}let a=core.createRule({type:r,validator:l,active:p,message:f}),u=[...s??[]];return a._params=u,typeof a=="function"?a(...u):a}function m(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function x(e){if(m(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function T(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 i(e,t=true){return !m(typeof e=="string"?e.trim():e,t)}function y(e){return e==null||typeof e!="number"?false:!isNaN(e)}function c(e,...t){if(m(e))return true;let r=typeof e=="number"?e.toString():e;return t.every(n=>(n.lastIndex=0,n.test(r)))}function D(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 g(e){return typeof e=="number"?e:e!=null?typeof e=="string"?e.trim()!==e?NaN:+e:NaN:NaN}function q(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),r=e.map(a=>{if(typeof a=="function")return null;{let u=a._params;return u?.length?u:[]}}).flat().filter(a=>!!a);function n(a,u,...o){let R=[],b=0;for(let d of a)if(typeof d=="function")R.push(d(u)),b++;else {let h=d._params?.length??0;R.push(d.validator(u,...o.slice(b,h))),h&&(b+=h);}return R}function s(a){return a?.some(o=>typeof o!="boolean")?{$valid:a.every(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,R)=>{if(typeof R=="boolean")return o;let{$valid:b,...d}=R;return {...o,...d}},{})}:a.every(o=>!!o)}let f;e.length?f=t?async(a,...u)=>{let o=await Promise.all(n(e,a,...u));return s(o)}:(a,...u)=>{let o=n(e,a,...u);return s(o)}:f=a=>false;let l=core.createRule({type:"and",validator:f,message:"The value does not match all of the provided validators"}),p=[...r??[]];return l._params=p,typeof l=="function"?l(...p):l}function G(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),r=e.map(a=>typeof a=="function"?null:a._params).flat().filter(a=>!!a);function n(a,u,...o){let R=[],b=0;for(let d of a)if(typeof d=="function")R.push(d(u)),b++;else {let h=d._params?.length??0;R.push(d.validator(u,...o.slice(b,h))),h&&(b+=h);}return R}function s(a){return a.some(o=>typeof o!="boolean")?{$valid:a.some(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,R)=>{if(typeof R=="boolean")return o;let{$valid:b,...d}=R;return {...o,...d}},{})}:a.some(o=>!!o)}let l=core.createRule({type:"or",validator:t?async(a,...u)=>{let o=await Promise.all(n(e,a,...u));return s(o)}:(a,...u)=>{let o=n(e,a,...u);return s(o)},message:"The value does not match any of the provided validators"}),p=[...r??[]];return l._params=p,typeof l=="function"?l(...p):l}function B(e,t){let r,n,s,f,l;typeof e=="function"?(n=e,l=e.constructor.name==="AsyncFunction"):({_type:r,validator:n,_params:f}=e,l=e._async),l?s=async(u,...o)=>i(u)?!await n(u,...o):true:s=(u,...o)=>i(u)?!n(u,...o):true;let p=core.createRule({type:"not",validator:s,message:t??"Error"}),a=[...f??[]];return p._params=a,typeof p=="function"?p(...a):p}var Bt=core.createRule({type:"required",validator:e=>i(e),message:"This field is required"});var Qt=core.createRule({type:"maxLength",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e,false)&&i(t)?y(t)?n?D(e)<=t:D(e)<t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),false):true},message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var er=core.createRule({type:"required",validator(e,t){return t?i(e):true},message:"This field is required",active({$params:[e]}){return e}});var X=/^[a-zA-Z]*$/,ar=core.createRule({type:"alpha",validator(e){return m(e)?true:c(e,X)},message:"The value is not alphabetical"});var j=/^[a-zA-Z0-9]*$/,lr=core.createRule({type:"alpha",validator(e){return m(e)?true:c(e,j)},message:"The value must be alpha-numeric"});var pr=core.createRule({type:"between",validator:(e,t,r,n)=>{let{allowEqual:s=true}=n??{};if(i(e)&&i(t)&&i(r)){let f=g(e),l=g(t),p=g(r);return y(f)&&y(l)&&y(p)?s?f>=l&&f<=p:f>l&&f<p:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${r}`),false)}return true},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var re=/^[-]?\d*(\.\d+)?$/,gr=core.createRule({type:"decimal",validator(e){return m(e)?true:c(e,re)},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,br=core.createRule({type:"email",validator(e){return m(e)?true:c(e,ae)},message:"Value must be an valid email address"});var oe=/(^[0-9]*$)|(^-[0-9]+$)/,Pr=core.createRule({type:"integer",validator(e){return m(e)?true:c(e,oe)},message:"Value must be an integer"});var Ar=core.createRule({type:"maxValue",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e)&&i(t)?y(t)&&!isNaN(g(e))?n?g(e)<=t:g(e)<t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true},message:({$params:[e,t]})=>{let{allowEqual:r=true}=t??{};return r?`Value must be less than or equal to ${e}`:`Value must be less than ${e}`}});var Cr=core.createRule({type:"minLength",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e,false)&&i(t)?y(t)?n?D(e)>=t:D(e)>t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true},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 Ir=core.createRule({type:"minValue",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e)&&i(t)?y(t)&&!isNaN(g(e))?n?g(e)>=t:g(e)>t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true},message:({$params:[e,t]})=>{let{allowEqual:r=true}=t??{};return r?`Value must be greater than or equal to ${e}`:`Value must be greater than ${e}`}});var Lr=core.createRule({type:"exactValue",validator:(e,t)=>i(e)&&i(t)?y(t)&&!isNaN(g(e))?g(e)===t:(console.warn(`[exactValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The value must be equal to ${e}`});var Gr=core.createRule({type:"exactLength",validator:(e,t)=>i(e,false)&&i(t)?y(t)?D(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var Re=/^\d*(\.\d+)?$/,Jr=core.createRule({type:"numeric",validator(e){return m(e)?true:c(e,Re)},message:"This field must be numeric"});var Yr=core.createRule({type:"required",validator(e,t){return t?true:i(e)},message:"This field is required",active({$params:[e]}){return !e}});var rn=core.createRule({type:"sameAs",validator(e,t,r="other"){return m(e)?true:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var de=/^(?:(?:(?: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,sn=core.createRule({type:"url",validator(e){return m(e)?true:c(e,de)},message:"The value is not a valid URL address"});function Te(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function M(e){return e?new Intl.DateTimeFormat(Te(),{dateStyle:"short"}).format(new Date(e)):"?"}var Rn=core.createRule({type:"dateAfter",validator:(e,t)=>i(e)&&i(t)?x(e)&&x(t)?T(e).getTime()>T(t).getTime()?true:{$valid:false,error:"date-not-after"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 Tn=core.createRule({type:"dateBefore",validator:(e,t)=>i(e)&&i(t)?x(e)&&x(t)?T(e).getTime()<T(t).getTime()?true:{$valid:false,error:"date-not-before"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 Mn=core.createRule({type:"dateBetween",validator:(e,t,r)=>x(e)&&x(t)&&x(r)?T(e).getTime()>T(t).getTime()&&T(e).getTime()<T(r).getTime():true,message:({$params:[e,t]})=>`The date must be between ${M(e)} and ${M(t)}`});function Me(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return false;let t=+e|0;return t>=0&&t<=255}var Vn=core.createRule({type:"ipAddress",validator(e){if(m(e))return true;if(typeof e!="string")return false;let t=e.split(".");return t.length===4&&t.every(Me)},message:"The value is not a valid IP address"});var Fn=core.createRule({type:"macAddress",validator(e,t=":"){if(m(e))return true;if(typeof e!="string")return false;let r=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return r!==null&&(r.length===6||r.length===8)&&r.every(we)},message:"The value is not a valid MAC Address"}),we=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var En=core.createRule({type:"checked",validator:e=>i(e)?e===true:true,message:"This field must be checked"});var zn=core.createRule({type:"contains",validator(e,t){return i(e)&&i(t)?e.includes(t):true},message({$params:[e]}){return `Field must contain ${e}`}});var Un=core.createRule({type:"startsWith",validator(e,t){return i(e)&&i(t)?e.startsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Zn=core.createRule({type:"endsWith",validator(e,t){return i(e)&&i(t)?e.endsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Xn=core.createRule({type:"regex",validator(e,t){if(i(e)){let r=Array.isArray(t)?t:[t];return c(e,...r)}return true},message:"This field does not match the required pattern"});function ta(e){let t=vue.computed(()=>vue.toValue(e));return P(w((n,s)=>i(n)&&i(s,false)?s.includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${n.join(", ")}.`)}function Ee(e){let t=Object.keys(e).filter(n=>typeof e[e[n]]!="number"),r={};for(let n of t)r[n]=e[n];return Object.values(r)}function ia(e){let t=vue.computed(()=>vue.toValue(e));return P(w((n,s)=>i(n)&&!m(s)?Ee(s).includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${Object.values(n).join(", ")}.`)}exports.alpha=ar;exports.alphaNum=lr;exports.and=q;exports.applyIf=z;exports.between=pr;exports.checked=En;exports.contains=zn;exports.dateAfter=Rn;exports.dateBefore=Tn;exports.dateBetween=Mn;exports.decimal=gr;exports.email=br;exports.endsWith=Zn;exports.exactLength=Gr;exports.exactValue=Lr;exports.getSize=D;exports.integer=Pr;exports.ipAddress=Vn;exports.isDate=x;exports.isEmpty=m;exports.isFilled=i;exports.isNumber=y;exports.macAddress=Fn;exports.matchRegex=c;exports.maxLength=Qt;exports.maxValue=Ar;exports.minLength=Cr;exports.minValue=Ir;exports.nativeEnum=ia;exports.not=B;exports.numeric=Jr;exports.oneOf=ta;exports.or=G;exports.regex=Xn;exports.required=Bt;exports.requiredIf=er;exports.requiredUnless=Yr;exports.sameAs=rn;exports.startsWith=Un;exports.toDate=T;exports.toNumber=g;exports.url=sn;exports.withAsync=E;exports.withMessage=P;exports.withParams=w;exports.withTooltip=C;
|
package/dist/regle-rules.min.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {createRule,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref,computed,toValue}from'vue';function P(e,t){let i,n,s,f;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:f}=e;let m=createRule({type:i,validator:n,active:s,message:t}),R=[...f??[]];if(m._params=R,m._message_patched=true,typeof m=="function"){let r=m(...R);return r._message_patched=true,r}else return m}function _(e,t){let i,n,s,f,m;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:f,_message:m}=e;let R=createRule({type:i,validator:n,active:s,message:m,tooltip:t}),r=[...f??[]];if(R._params=r,R._tooltip_patched=true,typeof R=="function"){let l=R(...r);return R._tooltip_patched=true,l}else return R}function I(e,t){let i=async(s,...f)=>e(s,...f),n=createRule({type:InternalRuleType.Async,validator:i,message:""});return n._params=n._params?.concat(t),n(...t??[])}function w(e,t){let i,n,s=[],f="";typeof e=="function"?(i=InternalRuleType.Inline,n=(R,...r)=>e(R,...r),s=[t]):({_type:i,validator:n,_message:f}=e,s=s=e._params?.concat(t));let m=createRule({type:InternalRuleType.Inline,validator:n,message:f});return m._params=m._params?.concat(s),m(...t)}function L(e,t){let i,n,s=[],f="";typeof t=="function"?(i=InternalRuleType.Inline,n=t,s=[e]):({_type:i,validator:n,_message:f}=t,s=t._params?.concat([e]));function m(o,...p){let[b]=unwrapRuleParameters([e]);return b?n(o,...p):true}function R(o){let[p]=unwrapRuleParameters([e]);return p}let r=createRule({type:i,validator:m,active:R,message:f}),l=[...s??[]];return r._params=l,typeof r=="function"?r(...l):r}function u(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function x(e){if(u(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let i=new Date(e);if(i.toString()==="Invalid Date")return !1;t=i;}return !!t}catch{return false}}function T(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 a(e,t=true){return !u(typeof e=="string"?e.trim():e,t)}function y(e){return e==null||typeof e!="number"?false:!isNaN(e)}function c(e,...t){if(u(e))return true;let i=typeof e=="number"?e.toString():e;return t.every(n=>(n.lastIndex=0,n.test(i)))}function D(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 g(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 l=r._params;return l?.length?l:[]}}).flat().filter(r=>!!r);function n(r,l,...o){let p=[],b=0;for(let d of r)if(typeof d=="function")p.push(d(l)),b++;else {let h=d._params?.length??0;p.push(d.validator(l,...o.slice(b,h))),h&&(b+=h);}return p}function s(r){return r?.some(o=>typeof o!="boolean")?{$valid:r.every(o=>typeof o=="boolean"?!!o:o.$valid),...r.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:r.every(o=>!!o)}let f;e.length?f=t?async(r,...l)=>{let o=await Promise.all(n(e,r,...l));return s(o)}:(r,...l)=>{let o=n(e,r,...l);return s(o)}:f=r=>false;let m=createRule({type:"and",validator:f,message:"The value does not match all of the provided validators"}),R=[...i??[]];return m._params=R,typeof m=="function"?m(...R):m}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 n(r,l,...o){let p=[],b=0;for(let d of r)if(typeof d=="function")p.push(d(l)),b++;else {let h=d._params?.length??0;p.push(d.validator(l,...o.slice(b,h))),h&&(b+=h);}return p}function s(r){return r.some(o=>typeof o!="boolean")?{$valid:r.some(o=>typeof o=="boolean"?!!o:o.$valid),...r.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:r.some(o=>!!o)}let m=createRule({type:"or",validator:t?async(r,...l)=>{let o=await Promise.all(n(e,r,...l));return s(o)}:(r,...l)=>{let o=n(e,r,...l);return s(o)},message:"The value does not match any of the provided validators"}),R=[...i??[]];return m._params=R,typeof m=="function"?m(...R):m}function B(e,t){let i,n,s,f,m;typeof e=="function"?(n=e,m=e.constructor.name==="AsyncFunction"):({_type:i,validator:n,_params:f}=e,m=e._async),m?s=async(l,...o)=>a(l)?!await n(l,...o):true:s=(l,...o)=>a(l)?!n(l,...o):true;let R=createRule({type:"not",validator:s,message:t??"Error"}),r=[...f??[]];return R._params=r,typeof R=="function"?R(...r):R}var Bt=createRule({type:"required",validator:e=>a(e),message:"This field is required"});var Qt=createRule({type:"maxLength",validator:(e,t)=>a(e,false)&&a(t)?y(t)?D(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),false):true,message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var er=createRule({type:"required",validator(e,t){return t?a(e):true},message:"This field is required",active({$params:[e]}){return e}});var X=/^[a-zA-Z]*$/,nr=createRule({type:"alpha",validator(e){return u(e)?true:c(e,X)},message:"The value is not alphabetical"});var j=/^[a-zA-Z0-9]*$/,lr=createRule({type:"alpha",validator(e){return u(e)?true:c(e,j)},message:"The value must be alpha-numeric"});var Rr=createRule({type:"between",validator:(e,t,i)=>{if(a(e)&&a(t)&&a(i)){let n=g(e),s=g(t),f=g(i);return y(n)&&y(s)&&y(f)?n>=s&&n<=f:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${i}`),false)}return true},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var re=/^[-]?\d*(\.\d+)?$/,gr=createRule({type:"decimal",validator(e){return u(e)?true:c(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,br=createRule({type:"email",validator(e){return u(e)?true:c(e,ne)},message:"Value must be an valid email address"});var oe=/(^[0-9]*$)|(^-[0-9]+$)/,Pr=createRule({type:"integer",validator(e){return u(e)?true:c(e,oe)},message:"Value must be an integer"});var Ar=createRule({type:"maxValue",validator:(e,t)=>a(e)&&a(t)?y(t)&&!isNaN(g(e))?g(e)<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The maximum value allowed is ${e}`});var _r=createRule({type:"minLength",validator:(e,t)=>a(e,false)&&a(t)?y(t)?D(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true,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 kr=createRule({type:"minValue",validator:(e,t)=>a(e)&&a(t)?y(t)&&!isNaN(g(e))?g(e)>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The minimum value allowed is ${e}`});var Sr=createRule({type:"exactValue",validator:(e,t)=>a(e)&&a(t)?y(t)&&!isNaN(g(e))?g(e)===t:(console.warn(`[exactValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The value must be equal to ${e}`});var qr=createRule({type:"exactLength",validator:(e,t)=>a(e,false)&&a(t)?y(t)?D(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var pe=/^\d*(\.\d+)?$/,Jr=createRule({type:"numeric",validator(e){return u(e)?true:c(e,pe)},message:"This field must be numeric"});var Yr=createRule({type:"required",validator(e,t){return t?true:a(e)},message:"This field is required",active({$params:[e]}){return !e}});var ra=createRule({type:"sameAs",validator(e,t,i="other"){return u(e)?true:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var de=/^(?:(?:(?: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,oa=createRule({type:"url",validator(e){return u(e)?true:c(e,de)},message:"The value is not a valid URL address"});function Te(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function M(e){return e?new Intl.DateTimeFormat(Te(),{dateStyle:"short"}).format(new Date(e)):"?"}var Ra=createRule({type:"dateAfter",validator:(e,t)=>a(e)&&a(t)?x(e)&&x(t)?T(e).getTime()>T(t).getTime()?true:{$valid:false,error:"date-not-after"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 da=createRule({type:"dateBefore",validator:(e,t)=>a(e)&&a(t)?x(e)&&x(t)?T(e).getTime()<T(t).getTime()?true:{$valid:false,error:"date-not-before"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 ha=createRule({type:"dateBetween",validator:(e,t,i)=>x(e)&&x(t)&&x(i)?T(e).getTime()>T(t).getTime()&&T(e).getTime()<T(i).getTime():true,message:({$params:[e,t]})=>`The date must be between ${M(e)} and ${M(t)}`});function Me(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return false;let t=+e|0;return t>=0&&t<=255}var $a=createRule({type:"ipAddress",validator(e){if(u(e))return true;if(typeof e!="string")return false;let t=e.split(".");return t.length===4&&t.every(Me)},message:"The value is not a valid IP address"});var Wa=createRule({type:"macAddress",validator(e,t=":"){if(u(e))return true;if(typeof e!="string")return false;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(we)},message:"The value is not a valid MAC Address"}),we=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var Ea=createRule({type:"checked",validator:e=>a(e)?e===true:true,message:"This field must be checked"});var Ca=createRule({type:"contains",validator(e,t){return a(e)&&a(t)?e.includes(t):true},message({$params:[e]}){return `Field must contain ${e}`}});var Ua=createRule({type:"startsWith",validator(e,t){return a(e)&&a(t)?e.startsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Ba=createRule({type:"endsWith",validator(e,t){return a(e)&&a(t)?e.endsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Qa=createRule({type:"regex",validator(e,t){if(a(e)){let i=Array.isArray(t)?t:[t];return c(e,...i)}return true},message:"This field does not match the required pattern"});function en(e){let t=computed(()=>toValue(e));return P(w((n,s)=>a(n)&&a(s,false)?s.includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${n.join(", ")}.`)}function Ie(e){let t=Object.keys(e).filter(n=>typeof e[e[n]]!="number"),i={};for(let n of t)i[n]=e[n];return Object.values(i)}function nn(e){let t=computed(()=>toValue(e));return P(w((n,s)=>a(n)&&!u(s)?Ie(s).includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${Object.values(n).join(", ")}.`)}export{nr as alpha,lr as alphaNum,U as and,L as applyIf,Rr as between,Ea as checked,Ca as contains,Ra as dateAfter,da as dateBefore,ha as dateBetween,gr as decimal,br as email,Ba as endsWith,qr as exactLength,Sr as exactValue,D as getSize,Pr as integer,$a as ipAddress,x as isDate,u as isEmpty,a as isFilled,y as isNumber,Wa as macAddress,c as matchRegex,Qt as maxLength,Ar as maxValue,_r as minLength,kr as minValue,nn as nativeEnum,B as not,Jr as numeric,en as oneOf,q as or,Qa as regex,Bt as required,er as requiredIf,Yr as requiredUnless,ra as sameAs,Ua as startsWith,T as toDate,g as toNumber,oa as url,I as withAsync,P as withMessage,w as withParams,_ as withTooltip};
|
|
1
|
+
import {createRule,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref,computed,toValue}from'vue';function P(e,t){let r,n,s,f;typeof e=="function"&&!("_validator"in e)?(r=InternalRuleType.Inline,n=e):{_type:r,validator:n,_active:s,_params:f}=e;let l=createRule({type:r,validator:n,active:s,message:t}),p=[...f??[]];if(l._params=p,l._message_patched=true,typeof l=="function"){let a=l(...p);return a._message_patched=true,a}else return l}function C(e,t){let r,n,s,f,l;typeof e=="function"&&!("_validator"in e)?(r=InternalRuleType.Inline,n=e):{_type:r,validator:n,_active:s,_params:f,_message:l}=e;let p=createRule({type:r,validator:n,active:s,message:l,tooltip:t}),a=[...f??[]];if(p._params=a,p._tooltip_patched=true,typeof p=="function"){let u=p(...a);return p._tooltip_patched=true,u}else return p}function E(e,t){let r=async(s,...f)=>e(s,...f),n=createRule({type:InternalRuleType.Async,validator:r,message:""});return n._params=n._params?.concat(t),n(...t??[])}function w(e,t){let r,n,s=[],f="";typeof e=="function"?(r=InternalRuleType.Inline,n=(p,...a)=>e(p,...a),s=[t]):({_type:r,validator:n,_message:f}=e,s=s=e._params?.concat(t));let l=createRule({type:InternalRuleType.Inline,validator:n,message:f});return l._params=l._params?.concat(s),l(...t)}function z(e,t){let r,n,s=[],f="";typeof t=="function"?(r=InternalRuleType.Inline,n=t,s=[e]):({_type:r,validator:n,_message:f}=t,s=t._params?.concat([e]));function l(o,...R){let[b]=unwrapRuleParameters([e]);return b?n(o,...R):true}function p(o){let[R]=unwrapRuleParameters([e]);return R}let a=createRule({type:r,validator:l,active:p,message:f}),u=[...s??[]];return a._params=u,typeof a=="function"?a(...u):a}function m(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):e.constructor.name=="File"||e.constructor.name=="FileList"?e.size<=0:Array.isArray(e)?t?e.length===0:false:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function x(e){if(m(e))return false;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="string"){let r=new Date(e);if(r.toString()==="Invalid Date")return !1;t=r;}return !!t}catch{return false}}function T(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 i(e,t=true){return !m(typeof e=="string"?e.trim():e,t)}function y(e){return e==null||typeof e!="number"?false:!isNaN(e)}function c(e,...t){if(m(e))return true;let r=typeof e=="number"?e.toString():e;return t.every(n=>(n.lastIndex=0,n.test(r)))}function D(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 g(e){return typeof e=="number"?e:e!=null?typeof e=="string"?e.trim()!==e?NaN:+e:NaN:NaN}function q(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),r=e.map(a=>{if(typeof a=="function")return null;{let u=a._params;return u?.length?u:[]}}).flat().filter(a=>!!a);function n(a,u,...o){let R=[],b=0;for(let d of a)if(typeof d=="function")R.push(d(u)),b++;else {let h=d._params?.length??0;R.push(d.validator(u,...o.slice(b,h))),h&&(b+=h);}return R}function s(a){return a?.some(o=>typeof o!="boolean")?{$valid:a.every(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,R)=>{if(typeof R=="boolean")return o;let{$valid:b,...d}=R;return {...o,...d}},{})}:a.every(o=>!!o)}let f;e.length?f=t?async(a,...u)=>{let o=await Promise.all(n(e,a,...u));return s(o)}:(a,...u)=>{let o=n(e,a,...u);return s(o)}:f=a=>false;let l=createRule({type:"and",validator:f,message:"The value does not match all of the provided validators"}),p=[...r??[]];return l._params=p,typeof l=="function"?l(...p):l}function G(...e){let t=e.some(a=>typeof a=="function"?a.constructor.name==="AsyncFunction":a._async),r=e.map(a=>typeof a=="function"?null:a._params).flat().filter(a=>!!a);function n(a,u,...o){let R=[],b=0;for(let d of a)if(typeof d=="function")R.push(d(u)),b++;else {let h=d._params?.length??0;R.push(d.validator(u,...o.slice(b,h))),h&&(b+=h);}return R}function s(a){return a.some(o=>typeof o!="boolean")?{$valid:a.some(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,R)=>{if(typeof R=="boolean")return o;let{$valid:b,...d}=R;return {...o,...d}},{})}:a.some(o=>!!o)}let l=createRule({type:"or",validator:t?async(a,...u)=>{let o=await Promise.all(n(e,a,...u));return s(o)}:(a,...u)=>{let o=n(e,a,...u);return s(o)},message:"The value does not match any of the provided validators"}),p=[...r??[]];return l._params=p,typeof l=="function"?l(...p):l}function B(e,t){let r,n,s,f,l;typeof e=="function"?(n=e,l=e.constructor.name==="AsyncFunction"):({_type:r,validator:n,_params:f}=e,l=e._async),l?s=async(u,...o)=>i(u)?!await n(u,...o):true:s=(u,...o)=>i(u)?!n(u,...o):true;let p=createRule({type:"not",validator:s,message:t??"Error"}),a=[...f??[]];return p._params=a,typeof p=="function"?p(...a):p}var Bt=createRule({type:"required",validator:e=>i(e),message:"This field is required"});var Qt=createRule({type:"maxLength",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e,false)&&i(t)?y(t)?n?D(e)<=t:D(e)<t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),false):true},message:({$value:e,$params:[t]})=>Array.isArray(e)?`This list should have maximum ${t} items`:`The maximum length allowed is ${t}`});var er=createRule({type:"required",validator(e,t){return t?i(e):true},message:"This field is required",active({$params:[e]}){return e}});var X=/^[a-zA-Z]*$/,ar=createRule({type:"alpha",validator(e){return m(e)?true:c(e,X)},message:"The value is not alphabetical"});var j=/^[a-zA-Z0-9]*$/,lr=createRule({type:"alpha",validator(e){return m(e)?true:c(e,j)},message:"The value must be alpha-numeric"});var pr=createRule({type:"between",validator:(e,t,r,n)=>{let{allowEqual:s=true}=n??{};if(i(e)&&i(t)&&i(r)){let f=g(e),l=g(t),p=g(r);return y(f)&&y(l)&&y(p)?s?f>=l&&f<=p:f>l&&f<p:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${r}`),false)}return true},message:({$params:[e,t]})=>`The value must be between ${e} and ${t}`});var re=/^[-]?\d*(\.\d+)?$/,gr=createRule({type:"decimal",validator(e){return m(e)?true:c(e,re)},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,br=createRule({type:"email",validator(e){return m(e)?true:c(e,ae)},message:"Value must be an valid email address"});var oe=/(^[0-9]*$)|(^-[0-9]+$)/,Pr=createRule({type:"integer",validator(e){return m(e)?true:c(e,oe)},message:"Value must be an integer"});var Ar=createRule({type:"maxValue",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e)&&i(t)?y(t)&&!isNaN(g(e))?n?g(e)<=t:g(e)<t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true},message:({$params:[e,t]})=>{let{allowEqual:r=true}=t??{};return r?`Value must be less than or equal to ${e}`:`Value must be less than ${e}`}});var Cr=createRule({type:"minLength",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e,false)&&i(t)?y(t)?n?D(e)>=t:D(e)>t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true},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 Ir=createRule({type:"minValue",validator:(e,t,r)=>{let{allowEqual:n=true}=r??{};return i(e)&&i(t)?y(t)&&!isNaN(g(e))?n?g(e)>=t:g(e)>t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true},message:({$params:[e,t]})=>{let{allowEqual:r=true}=t??{};return r?`Value must be greater than or equal to ${e}`:`Value must be greater than ${e}`}});var Lr=createRule({type:"exactValue",validator:(e,t)=>i(e)&&i(t)?y(t)&&!isNaN(g(e))?g(e)===t:(console.warn(`[exactValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),true):true,message:({$params:[e]})=>`The value must be equal to ${e}`});var Gr=createRule({type:"exactLength",validator:(e,t)=>i(e,false)&&i(t)?y(t)?D(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),false):true,message:({$params:[e]})=>`This field should be exactly ${e} characters long`});var Re=/^\d*(\.\d+)?$/,Jr=createRule({type:"numeric",validator(e){return m(e)?true:c(e,Re)},message:"This field must be numeric"});var Yr=createRule({type:"required",validator(e,t){return t?true:i(e)},message:"This field is required",active({$params:[e]}){return !e}});var rn=createRule({type:"sameAs",validator(e,t,r="other"){return m(e)?true:e===t},message({$params:[e,t]}){return `Value must be equal to the ${t} value`}});var de=/^(?:(?:(?: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,sn=createRule({type:"url",validator(e){return m(e)?true:c(e,de)},message:"The value is not a valid URL address"});function Te(){return navigator.languages!=null?navigator.languages[0]:navigator.language}function M(e){return e?new Intl.DateTimeFormat(Te(),{dateStyle:"short"}).format(new Date(e)):"?"}var Rn=createRule({type:"dateAfter",validator:(e,t)=>i(e)&&i(t)?x(e)&&x(t)?T(e).getTime()>T(t).getTime()?true:{$valid:false,error:"date-not-after"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 Tn=createRule({type:"dateBefore",validator:(e,t)=>i(e)&&i(t)?x(e)&&x(t)?T(e).getTime()<T(t).getTime()?true:{$valid:false,error:"date-not-before"}:{$valid:false,error:"value-or-paramater-not-a-date"}:true,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 Mn=createRule({type:"dateBetween",validator:(e,t,r)=>x(e)&&x(t)&&x(r)?T(e).getTime()>T(t).getTime()&&T(e).getTime()<T(r).getTime():true,message:({$params:[e,t]})=>`The date must be between ${M(e)} and ${M(t)}`});function Me(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return false;let t=+e|0;return t>=0&&t<=255}var Vn=createRule({type:"ipAddress",validator(e){if(m(e))return true;if(typeof e!="string")return false;let t=e.split(".");return t.length===4&&t.every(Me)},message:"The value is not a valid IP address"});var Fn=createRule({type:"macAddress",validator(e,t=":"){if(m(e))return true;if(typeof e!="string")return false;let r=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return r!==null&&(r.length===6||r.length===8)&&r.every(we)},message:"The value is not a valid MAC Address"}),we=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var En=createRule({type:"checked",validator:e=>i(e)?e===true:true,message:"This field must be checked"});var zn=createRule({type:"contains",validator(e,t){return i(e)&&i(t)?e.includes(t):true},message({$params:[e]}){return `Field must contain ${e}`}});var Un=createRule({type:"startsWith",validator(e,t){return i(e)&&i(t)?e.startsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Zn=createRule({type:"endsWith",validator(e,t){return i(e)&&i(t)?e.endsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Xn=createRule({type:"regex",validator(e,t){if(i(e)){let r=Array.isArray(t)?t:[t];return c(e,...r)}return true},message:"This field does not match the required pattern"});function ta(e){let t=computed(()=>toValue(e));return P(w((n,s)=>i(n)&&i(s,false)?s.includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${n.join(", ")}.`)}function Ee(e){let t=Object.keys(e).filter(n=>typeof e[e[n]]!="number"),r={};for(let n of t)r[n]=e[n];return Object.values(r)}function ia(e){let t=computed(()=>toValue(e));return P(w((n,s)=>i(n)&&!m(s)?Ee(s).includes(n):true,[t]),({$params:[n]})=>`Value should be one of those options: ${Object.values(n).join(", ")}.`)}export{ar as alpha,lr as alphaNum,q as and,z as applyIf,pr as between,En as checked,zn as contains,Rn as dateAfter,Tn as dateBefore,Mn as dateBetween,gr as decimal,br as email,Zn as endsWith,Gr as exactLength,Lr as exactValue,D as getSize,Pr as integer,Vn as ipAddress,x as isDate,m as isEmpty,i as isFilled,y as isNumber,Fn as macAddress,c as matchRegex,Qt as maxLength,Ar as maxValue,Cr as minLength,Ir as minValue,ia as nativeEnum,B as not,Jr as numeric,ta as oneOf,G as or,Xn as regex,Bt as required,er as requiredIf,Yr as requiredUnless,rn as sameAs,Un as startsWith,T as toDate,g as toNumber,sn as url,E as withAsync,P as withMessage,w as withParams,C as withTooltip};
|
package/dist/regle-rules.mjs
CHANGED
|
@@ -137,7 +137,7 @@ function applyIf(_condition, rule) {
|
|
|
137
137
|
|
|
138
138
|
// ../shared/utils/isEmpty.ts
|
|
139
139
|
function isEmpty(value, considerEmptyArrayInvalid = true) {
|
|
140
|
-
if (value ===
|
|
140
|
+
if (value === void 0 || value === null) {
|
|
141
141
|
return true;
|
|
142
142
|
}
|
|
143
143
|
if (value instanceof Date) {
|
|
@@ -466,10 +466,15 @@ var required = createRule({
|
|
|
466
466
|
});
|
|
467
467
|
var maxLength = createRule({
|
|
468
468
|
type: "maxLength",
|
|
469
|
-
validator: (value, count) => {
|
|
469
|
+
validator: (value, count, options) => {
|
|
470
|
+
const { allowEqual = true } = options ?? {};
|
|
470
471
|
if (isFilled(value, false) && isFilled(count)) {
|
|
471
472
|
if (isNumber(count)) {
|
|
472
|
-
|
|
473
|
+
if (allowEqual) {
|
|
474
|
+
return getSize(value) <= count;
|
|
475
|
+
} else {
|
|
476
|
+
return getSize(value) < count;
|
|
477
|
+
}
|
|
473
478
|
}
|
|
474
479
|
console.warn(`[maxLength] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
475
480
|
return false;
|
|
@@ -520,13 +525,18 @@ var alphaNum = createRule({
|
|
|
520
525
|
});
|
|
521
526
|
var between = createRule({
|
|
522
527
|
type: "between",
|
|
523
|
-
validator: (value, min, max) => {
|
|
528
|
+
validator: (value, min, max, options) => {
|
|
529
|
+
const { allowEqual = true } = options ?? {};
|
|
524
530
|
if (isFilled(value) && isFilled(min) && isFilled(max)) {
|
|
525
531
|
const tValue = toNumber(value);
|
|
526
532
|
const tMin = toNumber(min);
|
|
527
533
|
const tMax = toNumber(max);
|
|
528
534
|
if (isNumber(tValue) && isNumber(tMin) && isNumber(tMax)) {
|
|
529
|
-
|
|
535
|
+
if (allowEqual) {
|
|
536
|
+
return tValue >= tMin && tValue <= tMax;
|
|
537
|
+
} else {
|
|
538
|
+
return tValue > tMin && tValue < tMax;
|
|
539
|
+
}
|
|
530
540
|
}
|
|
531
541
|
console.warn(`[between] Value or parameters aren't numbers, got value: ${value}, min: ${min}, max: ${max}`);
|
|
532
542
|
return false;
|
|
@@ -572,26 +582,41 @@ var integer = createRule({
|
|
|
572
582
|
});
|
|
573
583
|
var maxValue = createRule({
|
|
574
584
|
type: "maxValue",
|
|
575
|
-
validator: (value, count) => {
|
|
585
|
+
validator: (value, count, options) => {
|
|
586
|
+
const { allowEqual = true } = options ?? {};
|
|
576
587
|
if (isFilled(value) && isFilled(count)) {
|
|
577
588
|
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
578
|
-
|
|
589
|
+
if (allowEqual) {
|
|
590
|
+
return toNumber(value) <= count;
|
|
591
|
+
} else {
|
|
592
|
+
return toNumber(value) < count;
|
|
593
|
+
}
|
|
579
594
|
}
|
|
580
595
|
console.warn(`[maxValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
581
596
|
return true;
|
|
582
597
|
}
|
|
583
598
|
return true;
|
|
584
599
|
},
|
|
585
|
-
message: ({ $params: [count] }) => {
|
|
586
|
-
|
|
600
|
+
message: ({ $params: [count, options] }) => {
|
|
601
|
+
const { allowEqual = true } = options ?? {};
|
|
602
|
+
if (allowEqual) {
|
|
603
|
+
return `Value must be less than or equal to ${count}`;
|
|
604
|
+
} else {
|
|
605
|
+
return `Value must be less than ${count}`;
|
|
606
|
+
}
|
|
587
607
|
}
|
|
588
608
|
});
|
|
589
609
|
var minLength = createRule({
|
|
590
610
|
type: "minLength",
|
|
591
|
-
validator: (value, count) => {
|
|
611
|
+
validator: (value, count, options) => {
|
|
612
|
+
const { allowEqual = true } = options ?? {};
|
|
592
613
|
if (isFilled(value, false) && isFilled(count)) {
|
|
593
614
|
if (isNumber(count)) {
|
|
594
|
-
|
|
615
|
+
if (allowEqual) {
|
|
616
|
+
return getSize(value) >= count;
|
|
617
|
+
} else {
|
|
618
|
+
return getSize(value) > count;
|
|
619
|
+
}
|
|
595
620
|
}
|
|
596
621
|
console.warn(`[minLength] Parameter isn't a number, got parameter: ${count}`);
|
|
597
622
|
return false;
|
|
@@ -607,18 +632,28 @@ var minLength = createRule({
|
|
|
607
632
|
});
|
|
608
633
|
var minValue = createRule({
|
|
609
634
|
type: "minValue",
|
|
610
|
-
validator: (value, count) => {
|
|
635
|
+
validator: (value, count, options) => {
|
|
636
|
+
const { allowEqual = true } = options ?? {};
|
|
611
637
|
if (isFilled(value) && isFilled(count)) {
|
|
612
638
|
if (isNumber(count) && !isNaN(toNumber(value))) {
|
|
613
|
-
|
|
639
|
+
if (allowEqual) {
|
|
640
|
+
return toNumber(value) >= count;
|
|
641
|
+
} else {
|
|
642
|
+
return toNumber(value) > count;
|
|
643
|
+
}
|
|
614
644
|
}
|
|
615
645
|
console.warn(`[minValue] Value or parameter isn't a number, got value: ${value}, parameter: ${count}`);
|
|
616
646
|
return true;
|
|
617
647
|
}
|
|
618
648
|
return true;
|
|
619
649
|
},
|
|
620
|
-
message: ({ $params: [count] }) => {
|
|
621
|
-
|
|
650
|
+
message: ({ $params: [count, options] }) => {
|
|
651
|
+
const { allowEqual = true } = options ?? {};
|
|
652
|
+
if (allowEqual) {
|
|
653
|
+
return `Value must be greater than or equal to ${count}`;
|
|
654
|
+
} else {
|
|
655
|
+
return `Value must be greater than ${count}`;
|
|
656
|
+
}
|
|
622
657
|
}
|
|
623
658
|
});
|
|
624
659
|
var exactValue = createRule({
|
|
@@ -703,7 +738,7 @@ var url = createRule({
|
|
|
703
738
|
|
|
704
739
|
// src/utils/getLocale.util.ts
|
|
705
740
|
function getUserLocale() {
|
|
706
|
-
if (navigator.languages !=
|
|
741
|
+
if (navigator.languages != void 0) return navigator.languages[0];
|
|
707
742
|
return navigator.language;
|
|
708
743
|
}
|
|
709
744
|
function formatLocaleDate(date) {
|
package/package.json
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@regle/rules",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Collection of rules and helpers for Regle",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@regle/core": "0.
|
|
6
|
+
"@regle/core": "1.0.0"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
10
|
-
"@typescript-eslint/parser": "8.
|
|
9
|
+
"@typescript-eslint/eslint-plugin": "8.26.1",
|
|
10
|
+
"@typescript-eslint/parser": "8.26.1",
|
|
11
11
|
"@vue/reactivity": "3.5.13",
|
|
12
12
|
"@vue/test-utils": "2.4.6",
|
|
13
|
-
"bumpp": "
|
|
14
|
-
"changelogithub": "13.
|
|
13
|
+
"bumpp": "10.1.0",
|
|
14
|
+
"changelogithub": "13.13.0",
|
|
15
15
|
"cross-env": "7.0.3",
|
|
16
16
|
"eslint": "9.15.0",
|
|
17
17
|
"eslint-config-prettier": "9.1.0",
|
|
18
18
|
"eslint-plugin-vue": "9.31.0",
|
|
19
19
|
"prettier": "3.3.3",
|
|
20
20
|
"tsup": "8.3.5",
|
|
21
|
-
"type-fest": "4.
|
|
21
|
+
"type-fest": "4.37.0",
|
|
22
22
|
"typescript": "5.6.3",
|
|
23
|
-
"vitest": "
|
|
23
|
+
"vitest": "3.0.9",
|
|
24
24
|
"vue": "3.5.13",
|
|
25
25
|
"vue-eslint-parser": "9.4.3",
|
|
26
26
|
"vue-tsc": "2.1.10"
|