@regle/rules 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,15 +75,26 @@ function withAsync(rule, depsArray) {
75
75
  return newRule(...depsArray ?? []);
76
76
  }
77
77
  function withParams(rule, depsArray) {
78
- const validator = (value, ...params) => {
79
- return rule(value, ...params);
80
- };
78
+ let _type;
79
+ let validator;
80
+ let _params = [];
81
+ let _message = "";
82
+ if (typeof rule === "function") {
83
+ _type = core.InternalRuleType.Inline;
84
+ validator = (value, ...params) => {
85
+ return rule(value, ...params);
86
+ };
87
+ _params = [depsArray];
88
+ } else {
89
+ ({ _type, validator, _message } = rule);
90
+ _params = _params = rule._params?.concat(depsArray);
91
+ }
81
92
  const newRule = core.createRule({
82
93
  type: core.InternalRuleType.Inline,
83
94
  validator,
84
- message: ""
95
+ message: _message
85
96
  });
86
- newRule._params = newRule._params?.concat(depsArray);
97
+ newRule._params = newRule._params?.concat(_params);
87
98
  return newRule(...depsArray);
88
99
  }
89
100
  function applyIf(_condition, rule) {
@@ -133,14 +144,14 @@ function isEmpty(value, considerEmptyArrayInvalid = true) {
133
144
  }
134
145
  if (value instanceof Date) {
135
146
  return isNaN(value.getTime());
136
- }
137
- if (Array.isArray(value)) {
147
+ } else if (value.constructor.name == "File" || value.constructor.name == "FileList") {
148
+ return value.size > 0;
149
+ } else if (Array.isArray(value)) {
138
150
  if (considerEmptyArrayInvalid) {
139
151
  return value.length === 0;
140
152
  }
141
153
  return false;
142
- }
143
- if (typeof value === "object" && value != null) {
154
+ } else if (typeof value === "object" && value != null) {
144
155
  return Object.keys(value).length === 0;
145
156
  }
146
157
  return !String(value).length;
@@ -69,7 +69,7 @@ declare function withAsync<TValue, TParams extends (Ref<unknown> | (() => unknow
69
69
  * ```
70
70
  * Docs: {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withparams}
71
71
  */
72
- declare function withParams<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: InlineRuleDeclaration<TValue, TParams, TReturn>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
72
+ declare function withParams<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, any[], TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
73
73
 
74
74
  /**
75
75
  * The applyIf operator is similar to requiredIf, but it can be used with any rule. It simplifies conditional rule declarations.
@@ -69,7 +69,7 @@ declare function withAsync<TValue, TParams extends (Ref<unknown> | (() => unknow
69
69
  * ```
70
70
  * Docs: {@link https://reglejs.dev/core-concepts/rules/rule-wrappers#withparams}
71
71
  */
72
- declare function withParams<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: InlineRuleDeclaration<TValue, TParams, TReturn>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
72
+ declare function withParams<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, any[], TAsync, TMetadata>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, TAsync, TMetadata>;
73
73
 
74
74
  /**
75
75
  * The applyIf operator is similar to requiredIf, but it can be used with any rule. It simplifies conditional rule declarations.
@@ -1 +1 @@
1
- 'use strict';var core=require('@regle/core'),vue=require('vue');function P(e,t){let i,n,s,m;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:m}=e;let f=core.createRule({type:i,validator:n,active:s,message:t}),R=[...m??[]];if(f._params=R,f._message_patched=true,typeof f=="function"){let a=f(...R);return a._message_patched=true,a}else return f}function F(e,t){let i,n,s,m,f;typeof e=="function"&&!("_validator"in e)?(i=core.InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:m,_message:f}=e;let R=core.createRule({type:i,validator:n,active:s,message:f,tooltip:t}),a=[...m??[]];if(R._params=a,R._tooltip_patched=true,typeof R=="function"){let l=R(...a);return R._tooltip_patched=true,l}else return R}function E(e,t){let i=async(s,...m)=>e(s,...m),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=(s,...m)=>e(s,...m),n=core.createRule({type:core.InternalRuleType.Inline,validator:i,message:""});return n._params=n._params?.concat(t),n(...t)}function L(e,t){let i,n,s=[],m="";typeof t=="function"?(i=core.InternalRuleType.Inline,n=t,s=[e]):({_type:i,validator:n,_message:m}=t,s=t._params?.concat([e]));function f(o,...p){let[b]=core.unwrapRuleParameters([e]);return b?n(o,...p):true}function R(o){let[p]=core.unwrapRuleParameters([e]);return p}let a=core.createRule({type:i,validator:f,active:R,message:m}),l=[...s??[]];return a._params=l,typeof a=="function"?a(...l):a}function u(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):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 r(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(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:[]}}).flat().filter(a=>!!a);function n(a,l,...o){let p=[],b=0;for(let d of a)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(a){return a?.some(o=>typeof o!="boolean")?{$valid:a.every(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:a.every(o=>!!o)}let m;e.length?m=t?async(a,...l)=>{let o=await Promise.all(n(e,a,...l));return s(o)}:(a,...l)=>{let o=n(e,a,...l);return s(o)}:m=a=>false;let f=core.createRule({type:"and",validator:m,message:"The value does not match all of the provided validators"}),R=[...i??[]];return f._params=R,typeof f=="function"?f(...R):f}function q(...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 n(a,l,...o){let p=[],b=0;for(let d of a)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(a){return a.some(o=>typeof o!="boolean")?{$valid:a.some(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:a.some(o=>!!o)}let f=core.createRule({type:"or",validator:t?async(a,...l)=>{let o=await Promise.all(n(e,a,...l));return s(o)}:(a,...l)=>{let o=n(e,a,...l);return s(o)},message:"The value does not match any of the provided validators"}),R=[...i??[]];return f._params=R,typeof f=="function"?f(...R):f}function B(e,t){let i,n,s,m,f;typeof e=="function"?(n=e,f=e.constructor.name==="AsyncFunction"):({_type:i,validator:n,_params:m}=e,f=e._async),f?s=async(l,...o)=>r(l)?!await n(l,...o):true:s=(l,...o)=>r(l)?!n(l,...o):true;let R=core.createRule({type:"not",validator:s,message:t??"Error"}),a=[...m??[]];return R._params=a,typeof R=="function"?R(...a):R}var Bt=core.createRule({type:"required",validator:e=>r(e),message:"This field is required"});var Qt=core.createRule({type:"maxLength",validator:(e,t)=>r(e,false)&&r(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?r(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(r(e)&&r(t)&&r(i)){let n=g(e),s=g(t),m=g(i);return y(n)&&y(s)&&y(m)?n>=s&&n<=m:(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 vr=core.createRule({type:"maxValue",validator:(e,t)=>r(e)&&r(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 Nr=core.createRule({type:"minLength",validator:(e,t)=>r(e,false)&&r(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)=>r(e)&&r(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 Cr=core.createRule({type:"exactValue",validator:(e,t)=>r(e)&&r(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)=>r(e,false)&&r(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:r(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)=>r(e)&&r(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)=>r(e)&&r(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=>r(e)?e===true:true,message:"This field must be checked"});var za=core.createRule({type:"contains",validator(e,t){return r(e)&&r(t)?e.includes(t):true},message({$params:[e]}){return `Field must contain ${e}`}});var Ua=core.createRule({type:"startsWith",validator(e,t){return r(e)&&r(t)?e.startsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Ba=core.createRule({type:"endsWith",validator(e,t){return r(e)&&r(t)?e.endsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Qa=core.createRule({type:"regex",validator(e,...t){return r(e)?c(e,...t):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)=>r(n)&&r(s)?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)=>r(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=za;exports.dateAfter=Ra;exports.dateBefore=da;exports.dateBetween=ha;exports.decimal=gr;exports.email=br;exports.endsWith=Ba;exports.exactLength=qr;exports.exactValue=Cr;exports.getSize=D;exports.integer=Pr;exports.ipAddress=$a;exports.isDate=x;exports.isEmpty=u;exports.isFilled=r;exports.isNumber=y;exports.macAddress=Wa;exports.matchRegex=c;exports.maxLength=Qt;exports.maxValue=vr;exports.minLength=Nr;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=E;exports.withMessage=P;exports.withParams=w;exports.withTooltip=F;
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 E(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 vr=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 Ia=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){return a(e)?c(e,...t):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)?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"),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)?Ee(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=Ia;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=vr;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=E;exports.withMessage=P;exports.withParams=w;exports.withTooltip=_;
@@ -1 +1 @@
1
- import {createRule,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref,computed,toValue}from'vue';function P(e,t){let i,n,s,m;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:m}=e;let f=createRule({type:i,validator:n,active:s,message:t}),R=[...m??[]];if(f._params=R,f._message_patched=true,typeof f=="function"){let a=f(...R);return a._message_patched=true,a}else return f}function F(e,t){let i,n,s,m,f;typeof e=="function"&&!("_validator"in e)?(i=InternalRuleType.Inline,n=e):{_type:i,validator:n,_active:s,_params:m,_message:f}=e;let R=createRule({type:i,validator:n,active:s,message:f,tooltip:t}),a=[...m??[]];if(R._params=a,R._tooltip_patched=true,typeof R=="function"){let l=R(...a);return R._tooltip_patched=true,l}else return R}function E(e,t){let i=async(s,...m)=>e(s,...m),n=createRule({type:InternalRuleType.Async,validator:i,message:""});return n._params=n._params?.concat(t),n(...t??[])}function w(e,t){let i=(s,...m)=>e(s,...m),n=createRule({type:InternalRuleType.Inline,validator:i,message:""});return n._params=n._params?.concat(t),n(...t)}function L(e,t){let i,n,s=[],m="";typeof t=="function"?(i=InternalRuleType.Inline,n=t,s=[e]):({_type:i,validator:n,_message:m}=t,s=t._params?.concat([e]));function f(o,...p){let[b]=unwrapRuleParameters([e]);return b?n(o,...p):true}function R(o){let[p]=unwrapRuleParameters([e]);return p}let a=createRule({type:i,validator:f,active:R,message:m}),l=[...s??[]];return a._params=l,typeof a=="function"?a(...l):a}function u(e,t=true){return e==null?true:e instanceof Date?isNaN(e.getTime()):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 r(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(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:[]}}).flat().filter(a=>!!a);function n(a,l,...o){let p=[],b=0;for(let d of a)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(a){return a?.some(o=>typeof o!="boolean")?{$valid:a.every(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:a.every(o=>!!o)}let m;e.length?m=t?async(a,...l)=>{let o=await Promise.all(n(e,a,...l));return s(o)}:(a,...l)=>{let o=n(e,a,...l);return s(o)}:m=a=>false;let f=createRule({type:"and",validator:m,message:"The value does not match all of the provided validators"}),R=[...i??[]];return f._params=R,typeof f=="function"?f(...R):f}function q(...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 n(a,l,...o){let p=[],b=0;for(let d of a)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(a){return a.some(o=>typeof o!="boolean")?{$valid:a.some(o=>typeof o=="boolean"?!!o:o.$valid),...a.reduce((o,p)=>{if(typeof p=="boolean")return o;let{$valid:b,...d}=p;return {...o,...d}},{})}:a.some(o=>!!o)}let f=createRule({type:"or",validator:t?async(a,...l)=>{let o=await Promise.all(n(e,a,...l));return s(o)}:(a,...l)=>{let o=n(e,a,...l);return s(o)},message:"The value does not match any of the provided validators"}),R=[...i??[]];return f._params=R,typeof f=="function"?f(...R):f}function B(e,t){let i,n,s,m,f;typeof e=="function"?(n=e,f=e.constructor.name==="AsyncFunction"):({_type:i,validator:n,_params:m}=e,f=e._async),f?s=async(l,...o)=>r(l)?!await n(l,...o):true:s=(l,...o)=>r(l)?!n(l,...o):true;let R=createRule({type:"not",validator:s,message:t??"Error"}),a=[...m??[]];return R._params=a,typeof R=="function"?R(...a):R}var Bt=createRule({type:"required",validator:e=>r(e),message:"This field is required"});var Qt=createRule({type:"maxLength",validator:(e,t)=>r(e,false)&&r(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?r(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(r(e)&&r(t)&&r(i)){let n=g(e),s=g(t),m=g(i);return y(n)&&y(s)&&y(m)?n>=s&&n<=m:(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 vr=createRule({type:"maxValue",validator:(e,t)=>r(e)&&r(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 Nr=createRule({type:"minLength",validator:(e,t)=>r(e,false)&&r(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)=>r(e)&&r(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 Cr=createRule({type:"exactValue",validator:(e,t)=>r(e)&&r(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)=>r(e,false)&&r(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:r(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)=>r(e)&&r(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)=>r(e)&&r(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=>r(e)?e===true:true,message:"This field must be checked"});var za=createRule({type:"contains",validator(e,t){return r(e)&&r(t)?e.includes(t):true},message({$params:[e]}){return `Field must contain ${e}`}});var Ua=createRule({type:"startsWith",validator(e,t){return r(e)&&r(t)?e.startsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Ba=createRule({type:"endsWith",validator(e,t){return r(e)&&r(t)?e.endsWith(t):true},message({$params:[e]}){return `Field must end with ${e}`}});var Qa=createRule({type:"regex",validator(e,...t){return r(e)?c(e,...t):true},message:"This field does not match the required pattern"});function en(e){let t=computed(()=>toValue(e));return P(w((n,s)=>r(n)&&r(s)?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)=>r(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,za as contains,Ra as dateAfter,da as dateBefore,ha as dateBetween,gr as decimal,br as email,Ba as endsWith,qr as exactLength,Cr as exactValue,D as getSize,Pr as integer,$a as ipAddress,x as isDate,u as isEmpty,r as isFilled,y as isNumber,Wa as macAddress,c as matchRegex,Qt as maxLength,vr as maxValue,Nr 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,E as withAsync,P as withMessage,w as withParams,F as withTooltip};
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 E(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 vr=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 Ia=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){return a(e)?c(e,...t):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)?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"),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)?Ee(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,Ia 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,vr 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,E as withAsync,P as withMessage,w as withParams,_ as withTooltip};
@@ -73,15 +73,26 @@ function withAsync(rule, depsArray) {
73
73
  return newRule(...depsArray ?? []);
74
74
  }
75
75
  function withParams(rule, depsArray) {
76
- const validator = (value, ...params) => {
77
- return rule(value, ...params);
78
- };
76
+ let _type;
77
+ let validator;
78
+ let _params = [];
79
+ let _message = "";
80
+ if (typeof rule === "function") {
81
+ _type = InternalRuleType.Inline;
82
+ validator = (value, ...params) => {
83
+ return rule(value, ...params);
84
+ };
85
+ _params = [depsArray];
86
+ } else {
87
+ ({ _type, validator, _message } = rule);
88
+ _params = _params = rule._params?.concat(depsArray);
89
+ }
79
90
  const newRule = createRule({
80
91
  type: InternalRuleType.Inline,
81
92
  validator,
82
- message: ""
93
+ message: _message
83
94
  });
84
- newRule._params = newRule._params?.concat(depsArray);
95
+ newRule._params = newRule._params?.concat(_params);
85
96
  return newRule(...depsArray);
86
97
  }
87
98
  function applyIf(_condition, rule) {
@@ -131,14 +142,14 @@ function isEmpty(value, considerEmptyArrayInvalid = true) {
131
142
  }
132
143
  if (value instanceof Date) {
133
144
  return isNaN(value.getTime());
134
- }
135
- if (Array.isArray(value)) {
145
+ } else if (value.constructor.name == "File" || value.constructor.name == "FileList") {
146
+ return value.size > 0;
147
+ } else if (Array.isArray(value)) {
136
148
  if (considerEmptyArrayInvalid) {
137
149
  return value.length === 0;
138
150
  }
139
151
  return false;
140
- }
141
- if (typeof value === "object" && value != null) {
152
+ } else if (typeof value === "object" && value != null) {
142
153
  return Object.keys(value).length === 0;
143
154
  }
144
155
  return !String(value).length;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@regle/rules",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "Collection of rules and helpers for Regle",
5
5
  "dependencies": {
6
- "@regle/core": "0.8.0"
6
+ "@regle/core": "0.8.2"
7
7
  },
8
8
  "devDependencies": {
9
9
  "@typescript-eslint/eslint-plugin": "8.21.0",