@regle/rules 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { RegleRuleMetadataDefinition, InlineRuleDeclaration, RegleRuleDefinitionWithMetadataProcessor, RegleRuleMetadataConsumer, RegleRuleDefinition, RegleRuleWithParamsDefinition, UnwrapRegleUniversalParams, ParamDecl, FormRuleDeclaration, Maybe } from '@regle/core';
2
2
  import { Ref, MaybeRef } from 'vue';
3
3
 
4
- declare function withMessage<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: InlineRuleDeclaration<TValue, TReturn>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TReturn extends Promise<infer M> ? M : TReturn>, string | string[]>): RegleRuleDefinition<TValue, [], TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
5
- declare function withMessage<TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition, TReturn extends TMetadata | Promise<TMetadata>, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: RegleRuleWithParamsDefinition<TValue, TParams, TAsync>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TValue, TParams, TAsync>;
6
- declare function withMessage<TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition, TReturn extends TMetadata | Promise<TMetadata>, TAsync extends boolean = boolean>(rule: RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
4
+ declare function withMessage<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: InlineRuleDeclaration<TValue, TParams, TReturn>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TReturn extends Promise<infer M> ? M : TReturn>, string | string[]>): RegleRuleDefinition<TValue, [], TAsync, TReturn extends Promise<infer M> ? M : TReturn>;
5
+ declare function withMessage<TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition, TReturn extends TMetadata | Promise<TMetadata>, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: RegleRuleWithParamsDefinition<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetadata>, string | string[]>): RegleRuleWithParamsDefinition<TValue, TParams, TAsync>;
6
+ declare function withMessage<TValue extends any, TParams extends any[], TMetadata extends RegleRuleMetadataDefinition, TReturn extends TMetadata | Promise<TMetadata>, TAsync extends boolean>(rule: RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>, newMessage: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
7
7
 
8
- declare function withAsync<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn>(rule: InlineRuleDeclaration<TValue, TReturn>, depsArray?: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
8
+ declare function withAsync<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition>, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn>(rule: InlineRuleDeclaration<TValue, NoInfer<TParams>, TReturn>, depsArray?: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
9
9
 
10
- declare function withParams<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn>(rule: InlineRuleDeclaration<TValue, TReturn>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
10
+ declare function withParams<TValue, TParams extends (Ref<unknown> | (() => unknown))[] = [], TReturn extends RegleRuleMetadataDefinition = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn>(rule: InlineRuleDeclaration<TValue, NoInfer<TParams>, TReturn>, depsArray: [...TParams]): RegleRuleDefinition<TValue, UnwrapRegleUniversalParams<TParams>, true, TMetadata>;
11
11
 
12
- declare function applyIf<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(_condition: ParamDecl<boolean>, rule: InlineRuleDeclaration<TValue, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>): RegleRuleDefinition<TValue, [], TAsync, TMetadata>;
12
+ declare function applyIf<TValue extends any, TParams extends any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(_condition: ParamDecl<boolean>, rule: InlineRuleDeclaration<TValue, TParams, TReturn> | RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>): RegleRuleDefinition<TValue, [], TAsync, TMetadata>;
13
13
 
14
14
  declare function isEmpty(value: unknown): value is null | undefined;
15
15
 
@@ -84,7 +84,7 @@ type MetadataBase = {
84
84
  $valid: boolean;
85
85
  [x: string]: any;
86
86
  };
87
- 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, infer M extends MetadataBase | Promise<MetadataBase>> ? [M, ...ExtractMetaDataFromRules<R>] : [...ExtractMetaDataFromRules<R>] : [];
87
+ 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>] : [];
88
88
  type ExtractMetadata<T extends [...any[]]> = T extends [infer F, ...infer R] ? F & ExtractMetadata<R> : {};
89
89
  type GuessMetadataFromRules<T extends any[], TMeta = ExtractMetadata<ExtractMetaDataFromRules<T>>> = TMeta extends EmptyObject ? boolean : TMeta;
90
90
  type CreateFn<T extends any[]> = (...args: T) => any;
@@ -98,7 +98,7 @@ declare function and<TRules extends FormRuleDeclaration<any, any>[]>(...rules: [
98
98
 
99
99
  declare function or<TRules extends FormRuleDeclaration<any, any>[]>(...rules: [...TRules]): RegleRuleDefinition<ExtractValueFromRules<TRules>[number], UnwrapTuples<ExtractParamsFromRules<TRules>>, GuessAsyncFromRules<TRules>, GuessMetadataFromRules<TRules>>;
100
100
 
101
- declare function not<TValue, TParams extends any[] = any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> | InlineRuleDeclaration<TValue, TReturn>, message?: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
101
+ declare function not<TValue, TParams extends any[] = any[], TReturn extends RegleRuleMetadataDefinition | Promise<RegleRuleMetadataDefinition> = RegleRuleMetadataDefinition, TMetadata extends RegleRuleMetadataDefinition = TReturn extends Promise<infer M> ? M : TReturn, TAsync extends boolean = TReturn extends Promise<any> ? true : false>(rule: RegleRuleDefinition<TValue, TParams, TAsync, TMetadata> | InlineRuleDeclaration<TValue, TParams, TReturn>, message?: RegleRuleDefinitionWithMetadataProcessor<TValue, RegleRuleMetadataConsumer<TParams, TMetadata>, string | string[]>): RegleRuleDefinition<TValue, TParams, TAsync, TMetadata>;
102
102
 
103
103
  declare const required: RegleRuleDefinition<unknown, [], false, boolean, unknown>;
104
104
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import {createRule,defineType,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref}from'vue';function $(e,t){let a,o,s,u;typeof e=="function"&&!("_validator"in e)?(a=InternalRuleType.Inline,o=e):{_type:a,validator:o,_active:s,_params:u}=e;let f=createRule({type:a,validator:o,active:s,message:t});return f._params=u,f._patched=!0,f}function v(e,t){let a=async s=>e(s),o=createRule({type:defineType(InternalRuleType.Async),validator:a,message:""});return o._params=t,o}function H(e,t){let a=async s=>e(s),o=createRule({type:defineType(InternalRuleType.Inline),validator:a,message:""});return o._params=t,o}function k(e,t){let a,o,s,u="";typeof t=="function"?(a=InternalRuleType.Inline,o=t):({_type:a,validator:o,_params:s,_message:u}=t,s?.push(e));function f(i,...m){let[p]=unwrapRuleParameters([e]);return p?o(i,...m):!0}function n(i,m){let[p]=unwrapRuleParameters([e]);return p}let l=createRule({type:a,validator:f,active:n,message:u});return l._params=s,l}function d(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function c(e){return !d(e)}function T(e){return e==null||typeof e!="number"?!1:!isNaN(e)}function x(e,...t){if(d(e))return !0;let a=typeof e=="number"?e.toString():e;return t.every(o=>(o.lastIndex=0,o.test(a)))}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 b(e){if(d(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let a=new Date(e);if(a.toString()==="Invalid Date")return !1;t=a;}return !!t}catch{return !1}}function h(e){let t=Object.prototype.toString.call(e);return 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 P(e){return typeof e=="number"?e:e.trim()!==e?null:+e}var r={isEmpty:d,isFilled:c,size:D,regex:x,isNumber:T,isDate:b,toDate:h,toNumber:P};function L(...e){let t=e.some(n=>typeof n=="function"?n.constructor.name==="AsyncFunction":n._async),a=e.map(n=>{if(typeof n=="function")return null;{let l=n._params;return l?.length?l:[null]}}).flat().filter(n=>!!n);function o(n,l,...i){let m=[],p=0;for(let R of n)if(typeof R=="function")m.push(R(l)),p++;else {let y=R._params?.length??0;m.push(R.validator(l,...i.slice(p,y))),y&&(p+=y);}return m}function s(n){return n.some(i=>typeof i!="boolean")?{$valid:n.every(i=>typeof i=="boolean"?!!i:i.$valid),...n.reduce((i,m)=>{if(typeof m=="boolean")return i;let{$valid:p,...R}=m;return {...i,...R}},{})}:n.every(i=>!!i)}let u;e.length?u=t?async(n,...l)=>{let i=await Promise.all(o(e,n,...l));return s(i)}:(n,...l)=>{let i=o(e,n,...l);return s(i)}:u=n=>!1;let f=createRule({type:defineType("and"),validator:u,message:"The value does not match all of the provided validators"});return f._params=a,f}function j(...e){let t=e.some(n=>typeof n=="function"?n.constructor.name==="AsyncFunction":n._async),a=e.map(n=>typeof n=="function"?null:n._params).flat().filter(n=>!!n);function o(n,l,...i){let m=[],p=0;for(let R of n)if(typeof R=="function")m.push(R(l)),p++;else {let y=R._params?.length??0;m.push(R.validator(l,...i.slice(p,y))),y&&(p+=y);}return m}function s(n){return n.some(i=>typeof i!="boolean")?{$valid:n.some(i=>typeof i=="boolean"?!!i:i.$valid),...n.reduce((i,m)=>{if(typeof m=="boolean")return i;let{$valid:p,...R}=m;return {...i,...R}},{})}:n.some(i=>!!i)}let u=t?async(n,...l)=>{let i=await Promise.all(o(e,n,...l));return s(i)}:(n,...l)=>{let i=o(e,n,...l);return s(i)},f=createRule({type:defineType("or"),validator:u,message:"The value does not match any of the provided validators"});return f._params=a,f}function B(e,t){let a,o,s,u,f;typeof e=="function"?(o=e,f=e.constructor.name==="AsyncFunction"):({_type:a,validator:o,_params:u}=e,f=e._async),f?s=async(l,...i)=>r.isFilled(l)?!await o(l,...i):!0:s=(l,...i)=>r.isFilled(l)?!o(l,...i):!0;let n=createRule({type:defineType("not"),validator:s,message:t??"Error"});return n._params=u,n}var qt=createRule({type:defineType("required"),validator:e=>r.isFilled(typeof e=="string"?e.trim():e),message:"This field is required"});var Kt=createRule({type:defineType("maxLength"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`The maximum length allowed is ${t}`});var Jt=createRule({type:defineType("required"),validator(e,t){return t?r.isFilled(typeof e=="string"?e.trim():e):!0},message:"This field is required",active(e,{$params:[t]}){return t}});var re=/^[a-zA-Z]*$/,er=createRule({type:defineType("alpha"),validator(e){return r.isEmpty(e)?!0:r.regex(e,re)},message:"The value is not alphabetical"});var ie=/^[a-zA-Z0-9]*$/,ar=createRule({type:defineType("alpha"),validator(e){return r.isEmpty(e)?!0:r.regex(e,ie)},message:"The value must be alpha-numeric"});var sr=createRule({type:defineType("between"),validator:(e,t,a)=>{if(r.isFilled(e)&&r.isFilled(t)&&r.isFilled(a)){let o=r.toNumber(e),s=r.toNumber(t),u=r.toNumber(a);return r.isNumber(o)&&r.isNumber(s)&&r.isNumber(u)?o>=s&&o<=u:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${a}`),!1)}return !0},message:(e,{$params:[t,a]})=>`The value must be between ${t} and ${a}`});var me=/^[-]?\d*(\.\d+)?$/,pr=createRule({type:defineType("decimal"),validator(e){return r.isEmpty(e)?!0:r.regex(e,me)},message:"Value must be decimal"});var Re=/^(?:[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,gr=createRule({type:defineType("email"),validator(e){return r.isEmpty(e)?!0:r.regex(e,Re)},message:"Value must be an valid email address"});var ge=/(^[0-9]*$)|(^-[0-9]+$)/,Dr=createRule({type:defineType("integer"),validator(e){return r.isEmpty(e)?!0:r.regex(e,ge)},message:"Value must be an integer"});var Mr=createRule({type:defineType("maxValue"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&r.isNumber(e)?e<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`The maximum value allowed is ${t}`});var Vr=createRule({type:defineType("minLength"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`This field should be at least ${t} characters long`});var _r=createRule({type:defineType("minValue"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&r.isNumber(e)?e>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`The minimum value allowed is ${t}`});var Er=createRule({type:defineType("exactLength"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`This field should be exactly ${t} characters long`});var Ae=/^\d*(\.\d+)?$/,Cr=createRule({type:defineType("numeric"),validator(e){return r.isEmpty(e)?!0:r.regex(e,Ae)},message:"This field must be numeric"});var jr=createRule({type:defineType("required"),validator(e,t){return t?!0:r.isFilled(typeof e=="string"?e.trim():e)},message:"This field is required",active(e,{$params:[t]}){return !t}});var Or=createRule({type:defineType("sameAs"),validator(e,t){return r.isEmpty(e)?!0:e===t},message(e,{$params:[t]}){return `Value must be equal to "${t}"`}});var He=/^(?:(?:(?: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,Xr=createRule({type:defineType("url"),validator(e){return r.isEmpty(e)?!0:r.regex(e,He)},message:"The value is not a valid URL address"});var rn=createRule({type:defineType("dateAfter"),validator:(e,t)=>r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()>r.toDate(t).getTime():!0,message:(e,{$params:[t]})=>`The date must be after ${t}`});var ln=createRule({type:defineType("dateBefore"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()<r.toDate(t).getTime()?!0:{$valid:!1,error:"date-not-before"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:(e,{$params:[t],error:a})=>a==="value-or-paramater-not-a-date"?"The inputs must be Dates":`The date must be before ${t}`});var fn=createRule({type:defineType("dateBetween"),validator:(e,t,a)=>r.isDate(e)&&r.isDate(t)&&r.isDate(a)?r.toDate(e).getTime()>r.toDate(t).getTime()&&r.toDate(e).getTime()<r.toDate(a).getTime():!0,message:(e,{$params:[t,a]})=>`The date must be between ${t} and ${a}`});function Se(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return !1;let t=+e|0;return t>=0&&t<=255}var yn=createRule({type:defineType("ipAddress"),validator(e){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let t=e.split(".");return t.length===4&&t.every(Se)},message:"The value is not a valid IP address"});var xn=createRule({type:defineType("macAddress"),validator(e,t=":"){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let a=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return a!==null&&(a.length===6||a.length===8)&&a.every(Ke)},message:"The value is not a valid MAC Address"}),Ke=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var hn=createRule({type:defineType("checked"),validator:e=>e===!0,message:"This field must be checked"});export{er as alpha,ar as alphaNum,L as and,k as applyIf,sr as between,hn as checked,rn as dateAfter,ln as dateBefore,fn as dateBetween,pr as decimal,gr as email,Er as exactLength,Dr as integer,yn as ipAddress,xn as macAddress,Kt as maxLength,Mr as maxValue,Vr as minLength,_r as minValue,B as not,Cr as numeric,j as or,qt as required,Jt as requiredIf,jr as requiredUnless,r as ruleHelpers,Or as sameAs,Xr as url,v as withAsync,$ as withMessage,H as withParams};
1
+ import {createRule,defineType,InternalRuleType,unwrapRuleParameters}from'@regle/core';import {unref}from'vue';function $(e,t){let a,o,s,u;typeof e=="function"&&!("_validator"in e)?(a=InternalRuleType.Inline,o=e):{_type:a,validator:o,_active:s,_params:u}=e;let f=createRule({type:a,validator:o,active:s,message:t});return f._params=u,f._patched=!0,f}function F(e,t){let a=async(s,...u)=>e(s,...u),o=createRule({type:defineType(InternalRuleType.Async),validator:a,message:""});return o._params=t,o}function I(e,t){let a=(s,...u)=>e(s,...u),o=createRule({type:defineType(InternalRuleType.Inline),validator:a,message:""});return o._params=t,o}function k(e,t){let a,o,s,u="";typeof t=="function"?(a=InternalRuleType.Inline,o=t):({_type:a,validator:o,_params:s,_message:u}=t,s?.push(e));function f(i,...m){let[p]=unwrapRuleParameters([e]);return p?o(i,...m):!0}function n(i,m){let[p]=unwrapRuleParameters([e]);return p}let l=createRule({type:a,validator:f,active:n,message:u});return l._params=s,l}function d(e){return e==null?!0:e===!1?!1:e instanceof Date?isNaN(e.getTime()):Array.isArray(e)?e.length===0:typeof e=="object"&&e!=null?Object.keys(e).length===0:!String(e).length}function c(e){return !d(typeof e=="string"?e.trim():e)}function T(e){return e==null||typeof e!="number"?!1:!isNaN(e)}function x(e,...t){if(d(e))return !0;let a=typeof e=="number"?e.toString():e;return t.every(o=>(o.lastIndex=0,o.test(a)))}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 b(e){if(d(e))return !1;try{let t=null;if(e instanceof Date)t=e;else if(typeof e=="number"&&!isNaN(e))t=new Date(e);else if(typeof e=="string"){let a=new Date(e);if(a.toString()==="Invalid Date")return !1;t=a;}return !!t}catch{return !1}}function h(e){let t=Object.prototype.toString.call(e);return 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 P(e){return typeof e=="number"?e:e.trim()!==e?null:+e}var r={isEmpty:d,isFilled:c,size:D,regex:x,isNumber:T,isDate:b,toDate:h,toNumber:P};function L(...e){let t=e.some(n=>typeof n=="function"?n.constructor.name==="AsyncFunction":n._async),a=e.map(n=>{if(typeof n=="function")return null;{let l=n._params;return l?.length?l:[null]}}).flat().filter(n=>!!n);function o(n,l,...i){let m=[],p=0;for(let R of n)if(typeof R=="function")m.push(R(l)),p++;else {let y=R._params?.length??0;m.push(R.validator(l,...i.slice(p,y))),y&&(p+=y);}return m}function s(n){return n.some(i=>typeof i!="boolean")?{$valid:n.every(i=>typeof i=="boolean"?!!i:i.$valid),...n.reduce((i,m)=>{if(typeof m=="boolean")return i;let{$valid:p,...R}=m;return {...i,...R}},{})}:n.every(i=>!!i)}let u;e.length?u=t?async(n,...l)=>{let i=await Promise.all(o(e,n,...l));return s(i)}:(n,...l)=>{let i=o(e,n,...l);return s(i)}:u=n=>!1;let f=createRule({type:defineType("and"),validator:u,message:"The value does not match all of the provided validators"});return f._params=a,f}function j(...e){let t=e.some(n=>typeof n=="function"?n.constructor.name==="AsyncFunction":n._async),a=e.map(n=>typeof n=="function"?null:n._params).flat().filter(n=>!!n);function o(n,l,...i){let m=[],p=0;for(let R of n)if(typeof R=="function")m.push(R(l)),p++;else {let y=R._params?.length??0;m.push(R.validator(l,...i.slice(p,y))),y&&(p+=y);}return m}function s(n){return n.some(i=>typeof i!="boolean")?{$valid:n.some(i=>typeof i=="boolean"?!!i:i.$valid),...n.reduce((i,m)=>{if(typeof m=="boolean")return i;let{$valid:p,...R}=m;return {...i,...R}},{})}:n.some(i=>!!i)}let u=t?async(n,...l)=>{let i=await Promise.all(o(e,n,...l));return s(i)}:(n,...l)=>{let i=o(e,n,...l);return s(i)},f=createRule({type:defineType("or"),validator:u,message:"The value does not match any of the provided validators"});return f._params=a,f}function B(e,t){let a,o,s,u,f;typeof e=="function"?(o=e,f=e.constructor.name==="AsyncFunction"):({_type:a,validator:o,_params:u}=e,f=e._async),f?s=async(l,...i)=>r.isFilled(l)?!await o(l,...i):!0:s=(l,...i)=>r.isFilled(l)?!o(l,...i):!0;let n=createRule({type:defineType("not"),validator:s,message:t??"Error"});return n._params=u,n}var qt=createRule({type:defineType("required"),validator:e=>r.isFilled(e),message:"This field is required"});var Kt=createRule({type:defineType("maxLength"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)<=t:(console.warn(`[maxLength] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`The maximum length allowed is ${t}`});var Jt=createRule({type:defineType("required"),validator(e,t){return t?r.isFilled(e):!0},message:"This field is required",active(e,{$params:[t]}){return t}});var re=/^[a-zA-Z]*$/,er=createRule({type:defineType("alpha"),validator(e){return r.isEmpty(e)?!0:r.regex(e,re)},message:"The value is not alphabetical"});var ie=/^[a-zA-Z0-9]*$/,ar=createRule({type:defineType("alpha"),validator(e){return r.isEmpty(e)?!0:r.regex(e,ie)},message:"The value must be alpha-numeric"});var sr=createRule({type:defineType("between"),validator:(e,t,a)=>{if(r.isFilled(e)&&r.isFilled(t)&&r.isFilled(a)){let o=r.toNumber(e),s=r.toNumber(t),u=r.toNumber(a);return r.isNumber(o)&&r.isNumber(s)&&r.isNumber(u)?o>=s&&o<=u:(console.warn(`[between] Value or parameters aren't numbers, got value: ${e}, min: ${t}, max: ${a}`),!1)}return !0},message:(e,{$params:[t,a]})=>`The value must be between ${t} and ${a}`});var me=/^[-]?\d*(\.\d+)?$/,pr=createRule({type:defineType("decimal"),validator(e){return r.isEmpty(e)?!0:r.regex(e,me)},message:"Value must be decimal"});var Re=/^(?:[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,gr=createRule({type:defineType("email"),validator(e){return r.isEmpty(e)?!0:r.regex(e,Re)},message:"Value must be an valid email address"});var ge=/(^[0-9]*$)|(^-[0-9]+$)/,Dr=createRule({type:defineType("integer"),validator(e){return r.isEmpty(e)?!0:r.regex(e,ge)},message:"Value must be an integer"});var Mr=createRule({type:defineType("maxValue"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&r.isNumber(e)?e<=t:(console.warn(`[maxValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`The maximum value allowed is ${t}`});var Vr=createRule({type:defineType("minLength"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)>=t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`This field should be at least ${t} characters long`});var _r=createRule({type:defineType("minValue"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)&&r.isNumber(e)?e>=t:(console.warn(`[minValue] Value or parameter isn't a number, got value: ${e}, parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`The minimum value allowed is ${t}`});var Er=createRule({type:defineType("exactLength"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isNumber(t)?r.size(e)===t:(console.warn(`[minLength] Parameter isn't a number, got parameter: ${t}`),!1):!0,message:(e,{$params:[t]})=>`This field should be exactly ${t} characters long`});var Ae=/^\d*(\.\d+)?$/,Cr=createRule({type:defineType("numeric"),validator(e){return r.isEmpty(e)?!0:r.regex(e,Ae)},message:"This field must be numeric"});var jr=createRule({type:defineType("required"),validator(e,t){return t?!0:r.isFilled(e)},message:"This field is required",active(e,{$params:[t]}){return !t}});var Or=createRule({type:defineType("sameAs"),validator(e,t){return r.isEmpty(e)?!0:e===t},message(e,{$params:[t]}){return `Value must be equal to "${t}"`}});var Ie=/^(?:(?:(?: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,Xr=createRule({type:defineType("url"),validator(e){return r.isEmpty(e)?!0:r.regex(e,Ie)},message:"The value is not a valid URL address"});var rn=createRule({type:defineType("dateAfter"),validator:(e,t)=>r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()>r.toDate(t).getTime():!0,message:(e,{$params:[t]})=>`The date must be after ${t}`});var ln=createRule({type:defineType("dateBefore"),validator:(e,t)=>r.isFilled(e)&&r.isFilled(t)?r.isDate(e)&&r.isDate(t)?r.toDate(e).getTime()<r.toDate(t).getTime()?!0:{$valid:!1,error:"date-not-before"}:{$valid:!1,error:"value-or-paramater-not-a-date"}:!0,message:(e,{$params:[t],error:a})=>a==="value-or-paramater-not-a-date"?"The inputs must be Dates":`The date must be before ${t}`});var fn=createRule({type:defineType("dateBetween"),validator:(e,t,a)=>r.isDate(e)&&r.isDate(t)&&r.isDate(a)?r.toDate(e).getTime()>r.toDate(t).getTime()&&r.toDate(e).getTime()<r.toDate(a).getTime():!0,message:(e,{$params:[t,a]})=>`The date must be between ${t} and ${a}`});function Se(e){if(e.length>3||e.length===0||e[0]==="0"&&e!=="0"||!e.match(/^\d+$/))return !1;let t=+e|0;return t>=0&&t<=255}var yn=createRule({type:defineType("ipAddress"),validator(e){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let t=e.split(".");return t.length===4&&t.every(Se)},message:"The value is not a valid IP address"});var xn=createRule({type:defineType("macAddress"),validator(e,t=":"){if(r.isEmpty(e))return !0;if(typeof e!="string")return !1;let a=typeof t=="string"&&t!==""?e.split(t):e.length===12||e.length===16?e.match(/.{2}/g):null;return a!==null&&(a.length===6||a.length===8)&&a.every(Ke)},message:"The value is not a valid MAC Address"}),Ke=e=>e.toLowerCase().match(/^[0-9a-f]{2}$/);var hn=createRule({type:defineType("checked"),validator:e=>e===!0,message:"This field must be checked"});export{er as alpha,ar as alphaNum,L as and,k as applyIf,sr as between,hn as checked,rn as dateAfter,ln as dateBefore,fn as dateBetween,pr as decimal,gr as email,Er as exactLength,Dr as integer,yn as ipAddress,xn as macAddress,Kt as maxLength,Mr as maxValue,Vr as minLength,_r as minValue,B as not,Cr as numeric,j as or,qt as required,Jt as requiredIf,jr as requiredUnless,r as ruleHelpers,Or as sameAs,Xr as url,F as withAsync,$ as withMessage,I as withParams};
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@regle/rules",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Collection of rules and helpers for Regle",
5
5
  "dependencies": {
6
- "@regle/core": "0.1.0"
6
+ "@regle/core": "0.1.1"
7
7
  },
8
8
  "devDependencies": {
9
9
  "@types/prettier": "3.0.0",