use-models
Advanced tools
+1
-1
@@ -1,2 +0,2 @@ | ||
| var V=Object.defineProperty,G=Object.prototype.hasOwnProperty,A=t=>V(t,"__esModule",{value:!0}),J=(t,r)=>{A(t);for(var a in r)V(t,a,{get:r[a],enumerable:!0})},K=(t,r)=>{if(A(t),typeof r=="object"||typeof r=="function")for(let a in r)!G.call(t,a)&&a!=="default"&&V(t,a,{get:()=>r[a],enumerable:!0});return t},N=t=>t&&t.__esModule?t:K(V({},"default",{value:t,enumerable:!0}),t);const Q={not_empty(t){return t.length===0?"can't be empty":void 0},email(t){const r=document.createElement("input");r.type="email",r.value=t;let a=r.checkValidity();const n=t.split("@");if(!a||n[1].indexOf(".")<=0)return"Invalid Email Address"},az_space(t){if(!/^[A-Za-z .]+$/.test(t))return"Only letters and spaces are allowed."},website(t){if(!/(^|\s)((https?:\/\/)[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(t))return"Please enter a valid url."},person(t){if(!/^(-?([A-Z].\s)?([A-Z][a-z]+)\s?)+([A-Z]'([A-Z][a-z]+))?$/g.test(t))return"Enter a valid name."}};var b=Q;J(exports,{default:()=>C,extendValidators:()=>W,model:()=>X});const E=N(require("react"));function W(t,r){b[t]=r}function X(t,...r){return{value:t,validate:r}}const u=(t,r)=>t[r]!==void 0,Y=t=>Object.assign({},...function r(a,n=""){return[].concat(...Object.keys(a).map(o=>typeof a[o]=="object"&&!Array.isArray(a[o])?r(a[o],n?`${n}.${o}`:o):{[n?`${n}.${o}`:o]:a[o]}))}(t)),P=t=>{const r=Y(t);return r};function x(t,r){const a=typeof t=="function"?t:u(b,t)?b[t]:function(){console.warn("built in validator with name `%s` not found. this is a no-op",t)},n=a(r);return n instanceof Promise?n:n?Promise.reject(n instanceof Error?n:new Error(n)):Promise.resolve()}function O(t){return t.split(".")}function S(t,r){for(let a in t)typeof t[a]=="object"?S(t[a],r):t[a]=r;return t}function R(t,r,a){for(let n in t)if(typeof t[n]=="object"&&t[n]!==null){let o=!0;u(t[n],"value")&&(r[n]=t[n].value,o=!1),u(t[n],"validate")&&(a[n]=t[n].validate,o=!1),o&&(u(r,n)||(r[n]=Array.isArray(t[n])?[]:{}),u(a,n)||(a[n]=Array.isArray(t[n])?[]:{}),R(t[n],r[n],a[n]))}else console.log("setting k",n,t[n]),r[n]=t[n]}function m(t){let r,a,n;if(typeof t!="object"||t===null)return t;r=Array.isArray(t)?[]:{};for(n in t)a=t[n],r[n]=m(a);return r}function B(t){const r={},a={};R(t,r,a),console.log(r);const n=S(m(r),!1);console.log(r);const o=P(a);return{defaultState:r,errorState:n,validationPaths:o}}function j(t){return typeof t=="string"?t:typeof t=="object"&&u(t,"message")&&typeof t.message=="string"?t.message:t.toString()}function C(t={}){const{defaultState:r,errorState:a,validationPaths:n}=B(t),o={},[y,p]=E.useState(r),[d,h]=E.useState(a),F=async()=>{const e=[];for(let i in n)for(let l=0;l<n[i].length;l++)try{await x(n[i][l],f(i))}catch(c){e.push({field:i,error:c})}let s=S({...r},!1);return e.length&&e.forEach(i=>{s=g(i.field,j(i.error),s)}),h(s),e},T=async(e,s)=>{if(u(n,e)){for(let i=0;i<n[e].length;i++)try{await x(n[e][i],s)}catch(l){return h(g(e,j(l),d))}h(g(e,!1,d))}};let w=()=>{};function f(e){const s=O(e);let i=y;for(let l=0;l<s.length;l++)i=i[s[l]];return i}function g(e,s,i=y){const l={...i},c=O(e);if(c.length){var v=l;for(let k=0;k<c.length-1;k++)v=u(v,c[k])?v[c[k]]:{};v[c[c.length-1]]=s}return l}function L(e,s="text"){return{onChange:i=>{var l=i;u(i,"value")&&(l=i.value),u(i,"target")&&(l=i.target.value);const c=f(e);p(g(e,l)),o[e]&&o[e](l,c),T(e,l)},value:f(e),name:e,type:s}}function M(e,s=!0,i=!1){return{onChange:l=>{const c=l.target.checked?s:i,v=f(e);p(g(e,c)),o[e]&&o[e](c,v),T(e,c)},checked:f(e)===s,type:"checkbox",name:e,value:s}}function $(e,s=null){return{onChange:i=>{if(i.target.checked){const l=s,c=f(e);p(g(e,s)),o[e]&&o[e](l,c),T(e,l)}},checked:f(e)===s,type:"radio",name:e,value:s}}function H(e){return async s=>{s.preventDefault();const i=await F();i.length?w(d,y):e(y),s.stopPropagation()}}function Z(e){return w=e,()=>{e(d,y)}}function z(){return y}function I(){return d}function _(e,s){return o[e]=s,function(){delete o[e]}}function D(e,s,i=!0,l=!0){const c=f(e);p(g(e,s)),l&&o[e]&&o[e](s,c),i&&T(e,s)}function U(e){return f(e)}const q=E.useCallback((e,s=!1)=>{p({...y,...e}),s&&h({...d,...s})},[]);return{input:L,checkbox:M,radio:$,submit:H,error:Z,errors:d,state:y,watch:_,hydrate:q,set:D,get:U,getState:z,getErrors:I,setState:p,setErrors:h}} | ||
| var V=Object.defineProperty,G=Object.prototype.hasOwnProperty,A=t=>V(t,"__esModule",{value:!0}),J=(t,r)=>{A(t);for(var a in r)V(t,a,{get:r[a],enumerable:!0})},K=(t,r)=>{if(A(t),typeof r=="object"||typeof r=="function")for(let a in r)!G.call(t,a)&&a!=="default"&&V(t,a,{get:()=>r[a],enumerable:!0});return t},N=t=>t&&t.__esModule?t:K(V({},"default",{value:t,enumerable:!0}),t);const Q={not_empty(t){return t.length===0?"can't be empty":void 0},email(t){const r=document.createElement("input");r.type="email",r.value=t;let a=r.checkValidity();const n=t.split("@");if(!a||n[1].indexOf(".")<=0)return"Invalid Email Address"},az_space(t){if(!/^[A-Za-z .]+$/.test(t))return"Only letters and spaces are allowed."},website(t){if(!/(^|\s)((https?:\/\/)[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(t))return"Please enter a valid url."},person(t){if(!/^(-?([A-Z].\s)?([A-Z][a-z]+)\s?)+([A-Z]'([A-Z][a-z]+))?$/g.test(t))return"Enter a valid name."}};var b=Q;J(exports,{default:()=>C,extendValidators:()=>W,model:()=>X});const E=N(require("react"));function W(t,r){b[t]=r}function X(t,...r){return{value:t,validate:r}}const u=(t,r)=>t[r]!==void 0,Y=t=>Object.assign({},...function r(a,n=""){return[].concat(...Object.keys(a).map(o=>typeof a[o]=="object"&&!Array.isArray(a[o])?r(a[o],n?`${n}.${o}`:o):{[n?`${n}.${o}`:o]:a[o]}))}(t)),P=t=>{const r=Y(t);return r};function x(t,r){const a=typeof t=="function"?t:u(b,t)?b[t]:function(){console.warn("built in validator with name `%s` not found. this is a no-op",t)},n=a(r);return n instanceof Promise?n:n?Promise.reject(n instanceof Error?n:new Error(n)):Promise.resolve()}function O(t){return t.split(".")}function S(t,r){for(let a in t)typeof t[a]=="object"?S(t[a],r):t[a]=r;return t}function R(t,r,a){for(let n in t)if(typeof t[n]=="object"&&t[n]!==null){let o=!0;u(t[n],"value")&&(r[n]=t[n].value,o=!1),u(t[n],"validate")&&(a[n]=t[n].validate,o=!1),o&&(u(r,n)||(r[n]=Array.isArray(t[n])?[]:{}),u(a,n)||(a[n]=Array.isArray(t[n])?[]:{}),R(t[n],r[n],a[n]))}else t[n],r[n]=t[n]}function m(t){let r,a,n;if(typeof t!="object"||t===null)return t;r=Array.isArray(t)?[]:{};for(n in t)a=t[n],r[n]=m(a);return r}function B(t){const r={},a={};R(t,r,a);const n=S(m(r),!1),o=P(a);return{defaultState:r,errorState:n,validationPaths:o}}function j(t){return typeof t=="string"?t:typeof t=="object"&&u(t,"message")&&typeof t.message=="string"?t.message:t.toString()}function C(t={}){const{defaultState:r,errorState:a,validationPaths:n}=B(t),o={},[y,p]=E.useState(r),[d,h]=E.useState(a),F=async()=>{const e=[];for(let i in n)for(let l=0;l<n[i].length;l++)try{await x(n[i][l],f(i))}catch(c){e.push({field:i,error:c})}let s=S({...r},!1);return e.length&&e.forEach(i=>{s=g(i.field,j(i.error),s)}),h(s),e},T=async(e,s)=>{if(u(n,e)){for(let i=0;i<n[e].length;i++)try{await x(n[e][i],s)}catch(l){return h(g(e,j(l),d))}h(g(e,!1,d))}};let w=()=>{};function f(e){const s=O(e);let i=y;for(let l=0;l<s.length;l++)i=i[s[l]];return i}function g(e,s,i=y){const l={...i},c=O(e);if(c.length){var v=l;for(let k=0;k<c.length-1;k++)v=u(v,c[k])?v[c[k]]:{};v[c[c.length-1]]=s}return l}function L(e,s="text"){return{onChange:i=>{var l=i;u(i,"value")&&(l=i.value),u(i,"target")&&(l=i.target.value);const c=f(e);p(g(e,l)),o[e]&&o[e](l,c),T(e,l)},value:f(e),name:e,type:s}}function M(e,s=!0,i=!1){return{onChange:l=>{const c=l.target.checked?s:i,v=f(e);p(g(e,c)),o[e]&&o[e](c,v),T(e,c)},checked:f(e)===s,type:"checkbox",name:e,value:s}}function $(e,s=null){return{onChange:i=>{if(i.target.checked){const l=s,c=f(e);p(g(e,s)),o[e]&&o[e](l,c),T(e,l)}},checked:f(e)===s,type:"radio",name:e,value:s}}function H(e){return async s=>{s.preventDefault();const i=await F();i.length?w(d,y):e(y),s.stopPropagation()}}function Z(e){return w=e,()=>{e(d,y)}}function z(){return y}function I(){return d}function _(e,s){return o[e]=s,function(){delete o[e]}}function D(e,s,i=!0,l=!0){const c=f(e);p(g(e,s)),l&&o[e]&&o[e](s,c),i&&T(e,s)}function U(e){return f(e)}const q=E.useCallback((e,s=!1)=>{p({...y,...e}),s&&h({...d,...s})},[]);return{input:L,checkbox:M,radio:$,submit:H,error:Z,errors:d,state:y,watch:_,hydrate:q,set:D,get:U,getState:z,getErrors:I,setState:p,setErrors:h}} | ||
| //# sourceMappingURL=index.js.map |
@@ -5,4 +5,4 @@ { | ||
| "sourcesContent": ["// the built in validators\nconst validators = {\n not_empty(value: string): void | string {\n return value.length === 0 ? 'can\\'t be empty' : void 0;\n },\n email(value: string): void | string {\n const input = document.createElement('input');\n input.type = 'email';\n input.value = value;\n let result = input.checkValidity();\n const parts = value.split('@');\n if (!result || parts[1].indexOf('.') <= 0) {\n return 'Invalid Email Address';\n }\n },\n az_space(value: string): void | string {\n if (! /^[A-Za-z .]+$/.test(value)) {\n return 'Only letters and spaces are allowed.';\n }\n },\n website(value: string): void | string {\n if (! /(^|\\s)((https?:\\/\\/)[\\w-]+(\\.[\\w-]+)+\\.?(:\\d+)?(\\/\\S*)?)/gi.test(value)) {\n return 'Please enter a valid url.';\n }\n },\n person(value: string): void | string {\n if (! /^(-?([A-Z].\\s)?([A-Z][a-z]+)\\s?)+([A-Z]'([A-Z][a-z]+))?$/g.test(value)) {\n return 'Enter a valid name.'\n }\n }\n};\n\nexport default validators;", "import { useState, useCallback } from 'react';\nimport validators from './lib/validators';\n\nexport type ValidatorFunctionReturnTypes = void | null | false | undefined | string | Error | ErrorLikeObject;\nexport type ValidatorFunction = (val: any) => ValidatorFunctionReturnTypes | Promise<ValidatorFunctionReturnTypes>;\n\nfunction extendValidators(name: string, fn: ValidatorFunction) {\n validators[name] = fn;\n};\n\nexport type ModelOption = {\n value: any;\n validate: Array<ValidatorFunction | string>;\n}\n\nfunction model(value: any, ...validate: Array<ValidatorFunction | string>) {\n return { value, validate } as ModelOption;\n}\n\nexport { extendValidators, model };\n\nconst has = (o: any, k: string) => o[k] !== undefined;\n\nconst flatten = (object: any) => {\n return Object.assign({}, ...function _flatten(objectBit: any, path: string = ''): any[] { //spread the result into our return object\n return ([] as any[]).concat( //concat everything into one level\n ...Object.keys(objectBit).map( //iterate over object\n key => typeof objectBit[key] === 'object' && !Array.isArray(objectBit[key]) ? //check if there is a nested object\n _flatten(objectBit[key], !path ? key : `${path}.${key}`) : //call itself if there is\n ({ [!path ? key : `${path}.${key}`]: objectBit[key] }) //append object with it\u2019s path as key\n )\n ) as any[];\n }(object));\n};\n\nconst getValidationPaths = (options: ParseOptions) => {\n const paths = flatten(options);\n // for (let k in paths) {\n // if (!Array.isArray(paths[k])) {\n // paths[k] = [paths[k]];\n // }\n // }\n\n return paths;\n}\n\nfunction execValidator(fn: ValidatorFunction | string, val: any) {\n const executor = typeof fn === 'function' ? fn : has(validators, fn) ? validators[fn] : function noop() { console.warn('built in validator with name `%s` not found. this is a no-op', fn) };//default-> no op\n const res = executor(val);\n if (!(res instanceof Promise)) {\n if (res) {\n return Promise.reject(!(res instanceof Error) ? new Error(res) : res);\n }\n return Promise.resolve();\n }\n return res;\n}\n\nfunction parsePath(path: string) {\n return path.split('.');\n}\n\n//recursive assign value to all properties of object\nfunction oSet(o: any, v: any) {\n for (let k in o) {\n if (typeof o[k] === 'object') {\n oSet(o[k], v);\n } else {\n o[k] = v;\n }\n }\n return o;\n}\n\nfunction assignValues(optPointer: any, statePointer: any, errorPointer: any) {\n for (let k in optPointer) {\n if (typeof optPointer[k] === 'object' && optPointer[k] !== null) {\n let shouldRecurse = true;\n if (has(optPointer[k], 'value')) {\n statePointer[k] = optPointer[k].value;\n shouldRecurse = false;\n }\n if (has(optPointer[k], 'validate')) {\n errorPointer[k] = optPointer[k].validate;\n shouldRecurse = false;\n }\n if (shouldRecurse) {\n if (!has(statePointer, k)) {\n statePointer[k] = Array.isArray(optPointer[k]) ? [] : {};\n }\n if (!has(errorPointer, k)) {\n errorPointer[k] = Array.isArray(optPointer[k]) ? [] : {};\n }\n assignValues(optPointer[k], statePointer[k], errorPointer[k]);\n }\n } else {\n console.log('setting k',k, optPointer[k]);\n statePointer[k] = optPointer[k];\n }\n }\n}\n\nfunction deepClone(inObject:any) {\n let outObject, value, key;\n\n if (typeof inObject !== \"object\" || inObject === null) {\n return inObject; // Return the value if inObject is not an object\n }\n\n // Create an array or object to hold the values\n outObject = Array.isArray(inObject) ? [] : {};\n\n for (key in inObject) {\n value = inObject[key];\n\n // Recursively (deep) copy for nested objects, including arrays\n outObject[key] = deepClone(value);\n }\n\n return outObject;\n}\n\nexport type ParseOptions = {\n [key: string]: any;\n};\n\ntype ErrorState<T> = { [P in keyof T]: boolean | string; };\n\nfunction parseOptions<T = any>(opts: ParseOptions) {\n\n const state = {};\n const errors = {};\n assignValues(opts, state, errors);//this recursive function will populate defaultState and errorOptions for us.\n console.log(state);\n const errorState: ErrorState<T> = oSet(deepClone(state), false);\n console.log(state);\n const validationPaths = getValidationPaths(errors);\n\n return { defaultState: state as T, errorState, validationPaths };\n}\n\nexport type ErrorLikeObject = {\n message: string;\n};\n\nfunction stringifyErr(err: string | ErrorLikeObject | unknown) {\n if (typeof err === 'string') {\n return err;\n } else {\n // Error, or Error like object(eg, custom error classes)\n if (typeof err === 'object' && has(err, 'message') && typeof (err as ErrorLikeObject).message === 'string') {\n return (err as ErrorLikeObject).message;\n }\n }\n return (err as any).toString();//last resort\n}\n\nexport type Options = {\n [k: string]: ModelOption | Options | any;\n};\n\nexport default function useModels<T = any>(options: Options = {}) {\n\n const { defaultState, errorState, validationPaths } = parseOptions<T>(options);\n const watchPaths = {};\n const [state, setState] = useState<T>(defaultState);\n const [errors, setErrors] = useState<ErrorState<T>>(errorState);\n\n const validate = async () => {\n const errs = [];\n for (let k in validationPaths) {\n for (let i = 0; i < validationPaths[k].length; i++) {\n try {\n await execValidator(validationPaths[k][i], getValue(k));\n }\n catch (e) {\n errs.push({ field: k, error: e });\n }\n }\n }\n\n let errState = oSet({ ...defaultState }, false);\n if (errs.length) {\n errs.forEach(err => {\n errState = getUpdate<ErrorState<T>>(err.field, stringifyErr(err.error), errState);\n });\n }\n setErrors(errState);\n return errs;\n\n }\n\n const validatePath = async (path: string, value: any) => {\n if (has(validationPaths, path)) {\n for (let i = 0; i < validationPaths[path].length; i++) {\n try {\n await execValidator(validationPaths[path][i], value);\n }\n catch (e) {\n return setErrors(getUpdate<ErrorState<T>>(path, stringifyErr(e), errors));\n }\n }\n setErrors(getUpdate(path, false, errors));\n }\n };\n\n let errorHandler: any = () => { };\n\n function getValue(name: string) {\n const path = parsePath(name);\n let value = state;\n for (let i = 0; i < path.length; i++) {\n value = value[path[i]];\n }\n return (value as unknown) as string;\n }\n\n function getUpdate<T2 = T>(name: string, value: any, __state: any = state) {\n const _state: T2 = { ...__state };\n const path = parsePath(name);\n if (path.length) {\n var obj = _state;\n for (let i = 0; i < path.length - 1; i++) {\n obj = has(obj, path[i]) ? obj[path[i]] : {};\n }\n obj[path[path.length - 1]] = value;\n }\n return _state;\n }\n\n function input(name: string, type: string = \"text\") {\n return {\n onChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | any> | React.SyntheticEvent<EventTarget> | Event | any) => {\n\n var value = e;//components like react-select-me pass primitive values\n if (has(e, 'value')) {\n value = (e as any).value;\n }\n\n if (has(e, 'target')) {\n value = (e as any).target.value;//normal inputs dont\n }\n\n const oldValue = getValue(name);\n setState(getUpdate(name, value));\n if (watchPaths[name]) {\n watchPaths[name](value, oldValue);\n }\n validatePath(name, value);\n },\n value: getValue(name),\n name,\n type\n };\n };\n\n function checkbox(name: string, truevalue: any = true, falsevalue: any = false) {\n\n return {\n onChange: (e: React.ChangeEvent<HTMLInputElement> | React.SyntheticEvent<EventTarget> | Event | any) => {\n const newValue = (e as any).target.checked ? truevalue : falsevalue;\n const oldValue = getValue(name);\n setState(getUpdate(name, newValue));\n if (watchPaths[name]) {\n watchPaths[name](newValue, oldValue);\n }\n validatePath(name, newValue);\n },\n checked: getValue(name) === truevalue,\n type: 'checkbox',\n name,\n value: truevalue\n };\n };\n\n function radio(name: string, value: any = null) {\n\n return {\n onChange: (e: React.ChangeEvent<HTMLInputElement> | React.SyntheticEvent<EventTarget> | Event | any) => {\n if ((e as any).target.checked) {\n const newValue = value;\n const oldValue = getValue(name);\n setState(getUpdate(name, value))\n if (watchPaths[name]) {\n watchPaths[name](newValue, oldValue);\n }\n validatePath(name, newValue);\n }\n },\n checked: getValue(name) === value,\n type: 'radio',\n name,\n value\n };\n };\n\n function submit(cb: (state: any) => any | void) {\n return async (e: React.FormEvent<EventTarget> | React.SyntheticEvent<EventTarget> | Event | any) => {\n e.preventDefault();\n const errs = await validate();\n\n if (errs.length) {\n errorHandler(errors, state);\n } else {\n cb(state);//send the full state to the submit function\n }\n e.stopPropagation();\n };\n\n };\n\n function error(cb: (errors: any, state: any) => any | void) {\n\n errorHandler = cb;\n return () => {\n\n cb(errors, state);\n };\n }\n\n function getState() {\n\n return state;\n }\n\n function getErrors() {\n\n return errors;\n }\n\n function watch(path: string, fn: (newVal: any, oldVal: any) => any) {\n watchPaths[path] = fn;\n return function unwatch() {\n delete watchPaths[path];\n }\n }\n\n function set(name: string, value: any, runValidators = true, runWatchers = true) {\n const oldValue = getValue(name);\n setState(getUpdate(name, value));\n if (runWatchers && watchPaths[name]) {\n watchPaths[name](value, oldValue);\n }\n if (runValidators\n) {\n validatePath(name, value);\n }\n }\n\n function get(name: string) {\n return getValue(name);\n }\n\n const hydrate = useCallback((_state: any, _errors: any = false) => {\n\n setState({ ...state, ..._state });\n if (_errors) {\n setErrors({ ...errors, ..._errors });\n }\n\n }, []);\n\n return { input, checkbox, radio, submit, error, errors, state, watch, hydrate, set, get, getState, getErrors, setState, setErrors };\n\n};"], | ||
| "mappings": "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", | ||
| "mappings": "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", | ||
| "names": [] | ||
| } |
@@ -1,2 +0,2 @@ | ||
| const U={not_empty(t){return t.length===0?"can't be empty":void 0},email(t){const r=document.createElement("input");r.type="email",r.value=t;let i=r.checkValidity();const n=t.split("@");if(!i||n[1].indexOf(".")<=0)return"Invalid Email Address"},az_space(t){if(!/^[A-Za-z .]+$/.test(t))return"Only letters and spaces are allowed."},website(t){if(!/(^|\s)((https?:\/\/)[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(t))return"Please enter a valid url."},person(t){if(!/^(-?([A-Z].\s)?([A-Z][a-z]+)\s?)+([A-Z]'([A-Z][a-z]+))?$/g.test(t))return"Enter a valid name."}};var k=U;import{useState as S,useCallback as q}from"react";function G(t,r){k[t]=r}function J(t,...r){return{value:t,validate:r}}const u=(t,r)=>t[r]!==void 0,K=t=>Object.assign({},...function r(i,n=""){return[].concat(...Object.keys(i).map(o=>typeof i[o]=="object"&&!Array.isArray(i[o])?r(i[o],n?`${n}.${o}`:o):{[n?`${n}.${o}`:o]:i[o]}))}(t)),N=t=>{const r=K(t);return r};function w(t,r){const i=typeof t=="function"?t:u(k,t)?k[t]:function(){console.warn("built in validator with name `%s` not found. this is a no-op",t)},n=i(r);return n instanceof Promise?n:n?Promise.reject(n instanceof Error?n:new Error(n)):Promise.resolve()}function A(t){return t.split(".")}function V(t,r){for(let i in t)typeof t[i]=="object"?V(t[i],r):t[i]=r;return t}function x(t,r,i){for(let n in t)if(typeof t[n]=="object"&&t[n]!==null){let o=!0;u(t[n],"value")&&(r[n]=t[n].value,o=!1),u(t[n],"validate")&&(i[n]=t[n].validate,o=!1),o&&(u(r,n)||(r[n]=Array.isArray(t[n])?[]:{}),u(i,n)||(i[n]=Array.isArray(t[n])?[]:{}),x(t[n],r[n],i[n]))}else console.log("setting k",n,t[n]),r[n]=t[n]}function O(t){let r,i,n;if(typeof t!="object"||t===null)return t;r=Array.isArray(t)?[]:{};for(n in t)i=t[n],r[n]=O(i);return r}function Q(t){const r={},i={};x(t,r,i),console.log(r);const n=V(O(r),!1);console.log(r);const o=N(i);return{defaultState:r,errorState:n,validationPaths:o}}function R(t){return typeof t=="string"?t:typeof t=="object"&&u(t,"message")&&typeof t.message=="string"?t.message:t.toString()}function m(t={}){const{defaultState:r,errorState:i,validationPaths:n}=Q(t),o={},[y,p]=S(r),[d,h]=S(i),j=async()=>{const e=[];for(let s in n)for(let l=0;l<n[s].length;l++)try{await w(n[s][l],f(s))}catch(c){e.push({field:s,error:c})}let a=V({...r},!1);return e.length&&e.forEach(s=>{a=g(s.field,R(s.error),a)}),h(a),e},E=async(e,a)=>{if(u(n,e)){for(let s=0;s<n[e].length;s++)try{await w(n[e][s],a)}catch(l){return h(g(e,R(l),d))}h(g(e,!1,d))}};let b=()=>{};function f(e){const a=A(e);let s=y;for(let l=0;l<a.length;l++)s=s[a[l]];return s}function g(e,a,s=y){const l={...s},c=A(e);if(c.length){var v=l;for(let T=0;T<c.length-1;T++)v=u(v,c[T])?v[c[T]]:{};v[c[c.length-1]]=a}return l}function C(e,a="text"){return{onChange:s=>{var l=s;u(s,"value")&&(l=s.value),u(s,"target")&&(l=s.target.value);const c=f(e);p(g(e,l)),o[e]&&o[e](l,c),E(e,l)},value:f(e),name:e,type:a}}function F(e,a=!0,s=!1){return{onChange:l=>{const c=l.target.checked?a:s,v=f(e);p(g(e,c)),o[e]&&o[e](c,v),E(e,c)},checked:f(e)===a,type:"checkbox",name:e,value:a}}function L(e,a=null){return{onChange:s=>{if(s.target.checked){const l=a,c=f(e);p(g(e,a)),o[e]&&o[e](l,c),E(e,l)}},checked:f(e)===a,type:"radio",name:e,value:a}}function M(e){return async a=>{a.preventDefault();const s=await j();s.length?b(d,y):e(y),a.stopPropagation()}}function $(e){return b=e,()=>{e(d,y)}}function H(){return y}function Z(){return d}function z(e,a){return o[e]=a,function(){delete o[e]}}function I(e,a,s=!0,l=!0){const c=f(e);p(g(e,a)),l&&o[e]&&o[e](a,c),s&&E(e,a)}function _(e){return f(e)}const D=q((e,a=!1)=>{p({...y,...e}),a&&h({...d,...a})},[]);return{input:C,checkbox:F,radio:L,submit:M,error:$,errors:d,state:y,watch:z,hydrate:D,set:I,get:_,getState:H,getErrors:Z,setState:p,setErrors:h}}export{m as default,G as extendValidators,J as model}; | ||
| const U={not_empty(t){return t.length===0?"can't be empty":void 0},email(t){const r=document.createElement("input");r.type="email",r.value=t;let i=r.checkValidity();const n=t.split("@");if(!i||n[1].indexOf(".")<=0)return"Invalid Email Address"},az_space(t){if(!/^[A-Za-z .]+$/.test(t))return"Only letters and spaces are allowed."},website(t){if(!/(^|\s)((https?:\/\/)[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(t))return"Please enter a valid url."},person(t){if(!/^(-?([A-Z].\s)?([A-Z][a-z]+)\s?)+([A-Z]'([A-Z][a-z]+))?$/g.test(t))return"Enter a valid name."}};var k=U;import{useState as S,useCallback as q}from"react";function G(t,r){k[t]=r}function J(t,...r){return{value:t,validate:r}}const u=(t,r)=>t[r]!==void 0,K=t=>Object.assign({},...function r(i,n=""){return[].concat(...Object.keys(i).map(o=>typeof i[o]=="object"&&!Array.isArray(i[o])?r(i[o],n?`${n}.${o}`:o):{[n?`${n}.${o}`:o]:i[o]}))}(t)),N=t=>{const r=K(t);return r};function w(t,r){const i=typeof t=="function"?t:u(k,t)?k[t]:function(){console.warn("built in validator with name `%s` not found. this is a no-op",t)},n=i(r);return n instanceof Promise?n:n?Promise.reject(n instanceof Error?n:new Error(n)):Promise.resolve()}function A(t){return t.split(".")}function V(t,r){for(let i in t)typeof t[i]=="object"?V(t[i],r):t[i]=r;return t}function x(t,r,i){for(let n in t)if(typeof t[n]=="object"&&t[n]!==null){let o=!0;u(t[n],"value")&&(r[n]=t[n].value,o=!1),u(t[n],"validate")&&(i[n]=t[n].validate,o=!1),o&&(u(r,n)||(r[n]=Array.isArray(t[n])?[]:{}),u(i,n)||(i[n]=Array.isArray(t[n])?[]:{}),x(t[n],r[n],i[n]))}else t[n],r[n]=t[n]}function O(t){let r,i,n;if(typeof t!="object"||t===null)return t;r=Array.isArray(t)?[]:{};for(n in t)i=t[n],r[n]=O(i);return r}function Q(t){const r={},i={};x(t,r,i);const n=V(O(r),!1),o=N(i);return{defaultState:r,errorState:n,validationPaths:o}}function R(t){return typeof t=="string"?t:typeof t=="object"&&u(t,"message")&&typeof t.message=="string"?t.message:t.toString()}function m(t={}){const{defaultState:r,errorState:i,validationPaths:n}=Q(t),o={},[y,p]=S(r),[d,h]=S(i),j=async()=>{const e=[];for(let s in n)for(let l=0;l<n[s].length;l++)try{await w(n[s][l],f(s))}catch(c){e.push({field:s,error:c})}let a=V({...r},!1);return e.length&&e.forEach(s=>{a=g(s.field,R(s.error),a)}),h(a),e},E=async(e,a)=>{if(u(n,e)){for(let s=0;s<n[e].length;s++)try{await w(n[e][s],a)}catch(l){return h(g(e,R(l),d))}h(g(e,!1,d))}};let b=()=>{};function f(e){const a=A(e);let s=y;for(let l=0;l<a.length;l++)s=s[a[l]];return s}function g(e,a,s=y){const l={...s},c=A(e);if(c.length){var v=l;for(let T=0;T<c.length-1;T++)v=u(v,c[T])?v[c[T]]:{};v[c[c.length-1]]=a}return l}function C(e,a="text"){return{onChange:s=>{var l=s;u(s,"value")&&(l=s.value),u(s,"target")&&(l=s.target.value);const c=f(e);p(g(e,l)),o[e]&&o[e](l,c),E(e,l)},value:f(e),name:e,type:a}}function F(e,a=!0,s=!1){return{onChange:l=>{const c=l.target.checked?a:s,v=f(e);p(g(e,c)),o[e]&&o[e](c,v),E(e,c)},checked:f(e)===a,type:"checkbox",name:e,value:a}}function L(e,a=null){return{onChange:s=>{if(s.target.checked){const l=a,c=f(e);p(g(e,a)),o[e]&&o[e](l,c),E(e,l)}},checked:f(e)===a,type:"radio",name:e,value:a}}function M(e){return async a=>{a.preventDefault();const s=await j();s.length?b(d,y):e(y),a.stopPropagation()}}function $(e){return b=e,()=>{e(d,y)}}function H(){return y}function Z(){return d}function z(e,a){return o[e]=a,function(){delete o[e]}}function I(e,a,s=!0,l=!0){const c=f(e);p(g(e,a)),l&&o[e]&&o[e](a,c),s&&E(e,a)}function _(e){return f(e)}const D=q((e,a=!1)=>{p({...y,...e}),a&&h({...d,...a})},[]);return{input:C,checkbox:F,radio:L,submit:M,error:$,errors:d,state:y,watch:z,hydrate:D,set:I,get:_,getState:H,getErrors:Z,setState:p,setErrors:h}}export{m as default,G as extendValidators,J as model}; | ||
| //# sourceMappingURL=index.modern.js.map |
@@ -5,4 +5,4 @@ { | ||
| "sourcesContent": ["// the built in validators\nconst validators = {\n not_empty(value: string): void | string {\n return value.length === 0 ? 'can\\'t be empty' : void 0;\n },\n email(value: string): void | string {\n const input = document.createElement('input');\n input.type = 'email';\n input.value = value;\n let result = input.checkValidity();\n const parts = value.split('@');\n if (!result || parts[1].indexOf('.') <= 0) {\n return 'Invalid Email Address';\n }\n },\n az_space(value: string): void | string {\n if (! /^[A-Za-z .]+$/.test(value)) {\n return 'Only letters and spaces are allowed.';\n }\n },\n website(value: string): void | string {\n if (! /(^|\\s)((https?:\\/\\/)[\\w-]+(\\.[\\w-]+)+\\.?(:\\d+)?(\\/\\S*)?)/gi.test(value)) {\n return 'Please enter a valid url.';\n }\n },\n person(value: string): void | string {\n if (! /^(-?([A-Z].\\s)?([A-Z][a-z]+)\\s?)+([A-Z]'([A-Z][a-z]+))?$/g.test(value)) {\n return 'Enter a valid name.'\n }\n }\n};\n\nexport default validators;", "import { useState, useCallback } from 'react';\nimport validators from './lib/validators';\n\nexport type ValidatorFunctionReturnTypes = void | null | false | undefined | string | Error | ErrorLikeObject;\nexport type ValidatorFunction = (val: any) => ValidatorFunctionReturnTypes | Promise<ValidatorFunctionReturnTypes>;\n\nfunction extendValidators(name: string, fn: ValidatorFunction) {\n validators[name] = fn;\n};\n\nexport type ModelOption = {\n value: any;\n validate: Array<ValidatorFunction | string>;\n}\n\nfunction model(value: any, ...validate: Array<ValidatorFunction | string>) {\n return { value, validate } as ModelOption;\n}\n\nexport { extendValidators, model };\n\nconst has = (o: any, k: string) => o[k] !== undefined;\n\nconst flatten = (object: any) => {\n return Object.assign({}, ...function _flatten(objectBit: any, path: string = ''): any[] { //spread the result into our return object\n return ([] as any[]).concat( //concat everything into one level\n ...Object.keys(objectBit).map( //iterate over object\n key => typeof objectBit[key] === 'object' && !Array.isArray(objectBit[key]) ? //check if there is a nested object\n _flatten(objectBit[key], !path ? key : `${path}.${key}`) : //call itself if there is\n ({ [!path ? key : `${path}.${key}`]: objectBit[key] }) //append object with it\u2019s path as key\n )\n ) as any[];\n }(object));\n};\n\nconst getValidationPaths = (options: ParseOptions) => {\n const paths = flatten(options);\n // for (let k in paths) {\n // if (!Array.isArray(paths[k])) {\n // paths[k] = [paths[k]];\n // }\n // }\n\n return paths;\n}\n\nfunction execValidator(fn: ValidatorFunction | string, val: any) {\n const executor = typeof fn === 'function' ? fn : has(validators, fn) ? validators[fn] : function noop() { console.warn('built in validator with name `%s` not found. this is a no-op', fn) };//default-> no op\n const res = executor(val);\n if (!(res instanceof Promise)) {\n if (res) {\n return Promise.reject(!(res instanceof Error) ? new Error(res) : res);\n }\n return Promise.resolve();\n }\n return res;\n}\n\nfunction parsePath(path: string) {\n return path.split('.');\n}\n\n//recursive assign value to all properties of object\nfunction oSet(o: any, v: any) {\n for (let k in o) {\n if (typeof o[k] === 'object') {\n oSet(o[k], v);\n } else {\n o[k] = v;\n }\n }\n return o;\n}\n\nfunction assignValues(optPointer: any, statePointer: any, errorPointer: any) {\n for (let k in optPointer) {\n if (typeof optPointer[k] === 'object' && optPointer[k] !== null) {\n let shouldRecurse = true;\n if (has(optPointer[k], 'value')) {\n statePointer[k] = optPointer[k].value;\n shouldRecurse = false;\n }\n if (has(optPointer[k], 'validate')) {\n errorPointer[k] = optPointer[k].validate;\n shouldRecurse = false;\n }\n if (shouldRecurse) {\n if (!has(statePointer, k)) {\n statePointer[k] = Array.isArray(optPointer[k]) ? [] : {};\n }\n if (!has(errorPointer, k)) {\n errorPointer[k] = Array.isArray(optPointer[k]) ? [] : {};\n }\n assignValues(optPointer[k], statePointer[k], errorPointer[k]);\n }\n } else {\n console.log('setting k',k, optPointer[k]);\n statePointer[k] = optPointer[k];\n }\n }\n}\n\nfunction deepClone(inObject:any) {\n let outObject, value, key;\n\n if (typeof inObject !== \"object\" || inObject === null) {\n return inObject; // Return the value if inObject is not an object\n }\n\n // Create an array or object to hold the values\n outObject = Array.isArray(inObject) ? [] : {};\n\n for (key in inObject) {\n value = inObject[key];\n\n // Recursively (deep) copy for nested objects, including arrays\n outObject[key] = deepClone(value);\n }\n\n return outObject;\n}\n\nexport type ParseOptions = {\n [key: string]: any;\n};\n\ntype ErrorState<T> = { [P in keyof T]: boolean | string; };\n\nfunction parseOptions<T = any>(opts: ParseOptions) {\n\n const state = {};\n const errors = {};\n assignValues(opts, state, errors);//this recursive function will populate defaultState and errorOptions for us.\n console.log(state);\n const errorState: ErrorState<T> = oSet(deepClone(state), false);\n console.log(state);\n const validationPaths = getValidationPaths(errors);\n\n return { defaultState: state as T, errorState, validationPaths };\n}\n\nexport type ErrorLikeObject = {\n message: string;\n};\n\nfunction stringifyErr(err: string | ErrorLikeObject | unknown) {\n if (typeof err === 'string') {\n return err;\n } else {\n // Error, or Error like object(eg, custom error classes)\n if (typeof err === 'object' && has(err, 'message') && typeof (err as ErrorLikeObject).message === 'string') {\n return (err as ErrorLikeObject).message;\n }\n }\n return (err as any).toString();//last resort\n}\n\nexport type Options = {\n [k: string]: ModelOption | Options | any;\n};\n\nexport default function useModels<T = any>(options: Options = {}) {\n\n const { defaultState, errorState, validationPaths } = parseOptions<T>(options);\n const watchPaths = {};\n const [state, setState] = useState<T>(defaultState);\n const [errors, setErrors] = useState<ErrorState<T>>(errorState);\n\n const validate = async () => {\n const errs = [];\n for (let k in validationPaths) {\n for (let i = 0; i < validationPaths[k].length; i++) {\n try {\n await execValidator(validationPaths[k][i], getValue(k));\n }\n catch (e) {\n errs.push({ field: k, error: e });\n }\n }\n }\n\n let errState = oSet({ ...defaultState }, false);\n if (errs.length) {\n errs.forEach(err => {\n errState = getUpdate<ErrorState<T>>(err.field, stringifyErr(err.error), errState);\n });\n }\n setErrors(errState);\n return errs;\n\n }\n\n const validatePath = async (path: string, value: any) => {\n if (has(validationPaths, path)) {\n for (let i = 0; i < validationPaths[path].length; i++) {\n try {\n await execValidator(validationPaths[path][i], value);\n }\n catch (e) {\n return setErrors(getUpdate<ErrorState<T>>(path, stringifyErr(e), errors));\n }\n }\n setErrors(getUpdate(path, false, errors));\n }\n };\n\n let errorHandler: any = () => { };\n\n function getValue(name: string) {\n const path = parsePath(name);\n let value = state;\n for (let i = 0; i < path.length; i++) {\n value = value[path[i]];\n }\n return (value as unknown) as string;\n }\n\n function getUpdate<T2 = T>(name: string, value: any, __state: any = state) {\n const _state: T2 = { ...__state };\n const path = parsePath(name);\n if (path.length) {\n var obj = _state;\n for (let i = 0; i < path.length - 1; i++) {\n obj = has(obj, path[i]) ? obj[path[i]] : {};\n }\n obj[path[path.length - 1]] = value;\n }\n return _state;\n }\n\n function input(name: string, type: string = \"text\") {\n return {\n onChange: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | any> | React.SyntheticEvent<EventTarget> | Event | any) => {\n\n var value = e;//components like react-select-me pass primitive values\n if (has(e, 'value')) {\n value = (e as any).value;\n }\n\n if (has(e, 'target')) {\n value = (e as any).target.value;//normal inputs dont\n }\n\n const oldValue = getValue(name);\n setState(getUpdate(name, value));\n if (watchPaths[name]) {\n watchPaths[name](value, oldValue);\n }\n validatePath(name, value);\n },\n value: getValue(name),\n name,\n type\n };\n };\n\n function checkbox(name: string, truevalue: any = true, falsevalue: any = false) {\n\n return {\n onChange: (e: React.ChangeEvent<HTMLInputElement> | React.SyntheticEvent<EventTarget> | Event | any) => {\n const newValue = (e as any).target.checked ? truevalue : falsevalue;\n const oldValue = getValue(name);\n setState(getUpdate(name, newValue));\n if (watchPaths[name]) {\n watchPaths[name](newValue, oldValue);\n }\n validatePath(name, newValue);\n },\n checked: getValue(name) === truevalue,\n type: 'checkbox',\n name,\n value: truevalue\n };\n };\n\n function radio(name: string, value: any = null) {\n\n return {\n onChange: (e: React.ChangeEvent<HTMLInputElement> | React.SyntheticEvent<EventTarget> | Event | any) => {\n if ((e as any).target.checked) {\n const newValue = value;\n const oldValue = getValue(name);\n setState(getUpdate(name, value))\n if (watchPaths[name]) {\n watchPaths[name](newValue, oldValue);\n }\n validatePath(name, newValue);\n }\n },\n checked: getValue(name) === value,\n type: 'radio',\n name,\n value\n };\n };\n\n function submit(cb: (state: any) => any | void) {\n return async (e: React.FormEvent<EventTarget> | React.SyntheticEvent<EventTarget> | Event | any) => {\n e.preventDefault();\n const errs = await validate();\n\n if (errs.length) {\n errorHandler(errors, state);\n } else {\n cb(state);//send the full state to the submit function\n }\n e.stopPropagation();\n };\n\n };\n\n function error(cb: (errors: any, state: any) => any | void) {\n\n errorHandler = cb;\n return () => {\n\n cb(errors, state);\n };\n }\n\n function getState() {\n\n return state;\n }\n\n function getErrors() {\n\n return errors;\n }\n\n function watch(path: string, fn: (newVal: any, oldVal: any) => any) {\n watchPaths[path] = fn;\n return function unwatch() {\n delete watchPaths[path];\n }\n }\n\n function set(name: string, value: any, runValidators = true, runWatchers = true) {\n const oldValue = getValue(name);\n setState(getUpdate(name, value));\n if (runWatchers && watchPaths[name]) {\n watchPaths[name](value, oldValue);\n }\n if (runValidators\n) {\n validatePath(name, value);\n }\n }\n\n function get(name: string) {\n return getValue(name);\n }\n\n const hydrate = useCallback((_state: any, _errors: any = false) => {\n\n setState({ ...state, ..._state });\n if (_errors) {\n setErrors({ ...errors, ..._errors });\n }\n\n }, []);\n\n return { input, checkbox, radio, submit, error, errors, state, watch, hydrate, set, get, getState, getErrors, setState, setErrors };\n\n};"], | ||
| "mappings": "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", | ||
| "mappings": "AACA,KAAM,GAAa,CACjB,UAAU,GACR,MAAO,GAAM,SAAW,EAAI,iBAAoB,QAElD,MAAM,GACJ,KAAM,GAAQ,SAAS,cAAc,SACrC,EAAM,KAAO,QACb,EAAM,MAAQ,EACd,GAAI,GAAS,EAAM,gBACnB,KAAM,GAAQ,EAAM,MAAM,KAC1B,GAAI,CAAC,GAAU,EAAM,GAAG,QAAQ,MAAQ,EACtC,MAAO,yBAGX,SAAS,GACP,GAAI,CAAE,gBAAgB,KAAK,GACzB,MAAO,wCAGX,QAAQ,GACN,GAAI,CAAE,6DAA6D,KAAK,GACtE,MAAO,6BAGX,OAAO,GACL,GAAI,CAAE,4DAA4D,KAAK,GACrE,MAAO,wBAKb,GAAO,GAAQ,EChCf,kDAMA,WAA0B,EAAc,GACtC,EAAW,GAAQ,EAQrB,WAAe,KAAe,GAC5B,MAAO,CAAE,QAAO,YAKlB,KAAM,GAAM,CAAC,EAAQ,IAAc,EAAE,KAAO,OAEtC,EAAU,AAAC,GACR,OAAO,OAAO,GAAI,GAAG,WAAkB,EAAgB,EAAe,IAC3E,MAAQ,GAAa,OACnB,GAAG,OAAO,KAAK,GAAW,IACxB,GAAO,MAAO,GAAU,IAAS,UAAY,CAAC,MAAM,QAAQ,EAAU,IACpE,EAAS,EAAU,GAAM,AAAC,EAAa,GAAG,KAAQ,IAAjB,GAChC,EAAG,AAAC,EAAa,GAAG,KAAQ,IAAjB,GAAyB,EAAU,OAGrD,IAGE,EAAqB,AAAC,IAC1B,KAAM,GAAQ,EAAQ,GAOtB,MAAO,IAGT,WAAuB,EAAgC,GACrD,KAAM,GAAW,MAAO,IAAO,WAAa,EAAK,EAAI,EAAY,GAAM,EAAW,GAAM,WAAkB,QAAQ,KAAK,+DAAgE,IACjL,EAAM,EAAS,GACrB,MAAM,aAAe,SAMd,EALD,EACK,QAAQ,OAAO,AAAE,YAAe,OAA0B,EAAjB,GAAI,OAAM,IAErD,QAAQ,UAKnB,WAAmB,GACjB,MAAO,GAAK,MAAM,KAIpB,WAAc,EAAQ,GACpB,OAAS,KAAK,GACZ,AAAI,MAAO,GAAE,IAAO,SAClB,EAAK,EAAE,GAAI,GAEX,EAAE,GAAK,EAGX,MAAO,GAGT,WAAsB,EAAiB,EAAmB,GACxD,OAAS,KAAK,GACZ,GAAI,MAAO,GAAW,IAAO,UAAY,EAAW,KAAO,MACzD,GAAI,GAAgB,GACpB,AAAI,EAAI,EAAW,GAAI,UACrB,GAAa,GAAK,EAAW,GAAG,MAChC,EAAgB,IAElB,AAAI,EAAI,EAAW,GAAI,aACrB,GAAa,GAAK,EAAW,GAAG,SAChC,EAAgB,IAElB,AAAI,GACF,CAAK,EAAI,EAAc,IACrB,GAAa,GAAK,MAAM,QAAQ,EAAW,IAAM,GAAK,IAExD,AAAK,EAAI,EAAc,IACrB,GAAa,GAAK,MAAM,QAAQ,EAAW,IAAM,GAAK,IAExD,EAAa,EAAW,GAAI,EAAa,GAAI,EAAa,SAG5D,AAA2B,GAAW,GACtC,EAAa,GAAK,EAAW,GAKnC,WAAmB,GACjB,GAAI,GAAW,EAAO,EAEtB,GAAI,MAAO,IAAa,UAAY,IAAa,KAC/C,MAAO,GAIT,EAAY,MAAM,QAAQ,GAAY,GAAK,GAE3C,IAAK,IAAO,GACV,EAAQ,EAAS,GAGjB,EAAU,GAAO,EAAU,GAG7B,MAAO,GAST,WAA+B,GAE7B,KAAM,GAAQ,GACR,EAAS,GACf,EAAa,EAAM,EAAO,GAE1B,KAAM,GAA4B,EAAK,EAAU,GAAQ,IAEnD,EAAkB,EAAmB,GAE3C,MAAO,CAAE,aAAc,EAAY,aAAY,mBAOjD,WAAsB,GACpB,MAAI,OAAO,IAAQ,SACV,EAGH,MAAO,IAAQ,UAAY,EAAI,EAAK,YAAc,MAAQ,GAAwB,SAAY,SACxF,EAAwB,QAG5B,EAAY,WAOP,WAA4B,EAAmB,IAE5D,KAAM,CAAE,eAAc,aAAY,mBAAoB,EAAgB,GAChE,EAAa,GACb,CAAC,EAAO,GAAY,EAAY,GAChC,CAAC,EAAQ,GAAa,EAAwB,GAE9C,EAAW,UACf,KAAM,GAAO,GACb,OAAS,KAAK,GACZ,OAAS,GAAI,EAAG,EAAI,EAAgB,GAAG,OAAQ,IAC7C,IACE,KAAM,GAAc,EAAgB,GAAG,GAAI,EAAS,UAE/C,GACL,EAAK,KAAK,CAAE,MAAO,EAAG,MAAO,IAKnC,GAAI,GAAW,EAAK,IAAK,GAAgB,IACzC,MAAI,GAAK,QACP,EAAK,QAAQ,IACX,EAAW,EAAyB,EAAI,MAAO,EAAa,EAAI,OAAQ,KAG5E,EAAU,GACH,GAIH,EAAe,MAAO,EAAc,KACxC,GAAI,EAAI,EAAiB,IACvB,OAAS,GAAI,EAAG,EAAI,EAAgB,GAAM,OAAQ,IAChD,IACE,KAAM,GAAc,EAAgB,GAAM,GAAI,SAEzC,GACL,MAAO,GAAU,EAAyB,EAAM,EAAa,GAAI,IAGrE,EAAU,EAAU,EAAM,GAAO,MAIrC,GAAI,GAAoB,OAExB,WAAkB,GAChB,KAAM,GAAO,EAAU,GACvB,GAAI,GAAQ,EACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAQ,EAAM,EAAK,IAErB,MAAQ,GAGV,WAA2B,EAAc,EAAY,EAAe,GAClE,KAAM,GAAa,IAAK,GAClB,EAAO,EAAU,GACvB,GAAI,EAAK,QACP,GAAI,GAAM,EACV,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,IACnC,EAAM,EAAI,EAAK,EAAK,IAAM,EAAI,EAAK,IAAM,GAE3C,EAAI,EAAK,EAAK,OAAS,IAAM,EAE/B,MAAO,GAGT,WAAe,EAAc,EAAe,QAC1C,MAAO,CACL,SAAU,AAAC,IAET,GAAI,GAAQ,EACZ,AAAI,EAAI,EAAG,UACT,GAAS,EAAU,OAGrB,AAAI,EAAI,EAAG,WACT,GAAS,EAAU,OAAO,OAG5B,KAAM,GAAW,EAAS,GAC1B,EAAS,EAAU,EAAM,IACzB,AAAI,EAAW,IACb,EAAW,GAAM,EAAO,GAE1B,EAAa,EAAM,IAErB,MAAO,EAAS,GAChB,OACA,QAIJ,WAAkB,EAAc,EAAiB,GAAM,EAAkB,IAEvE,MAAO,CACL,SAAU,AAAC,IACT,KAAM,GAAY,EAAU,OAAO,QAAU,EAAY,EACnD,EAAW,EAAS,GAC1B,EAAS,EAAU,EAAM,IACzB,AAAI,EAAW,IACb,EAAW,GAAM,EAAU,GAE7B,EAAa,EAAM,IAErB,QAAS,EAAS,KAAU,EAC5B,KAAM,WACN,OACA,MAAO,GAIX,WAAe,EAAc,EAAa,MAExC,MAAO,CACL,SAAU,AAAC,IACT,GAAK,EAAU,OAAO,SACpB,KAAM,GAAW,EACX,EAAW,EAAS,GAC1B,EAAS,EAAU,EAAM,IACzB,AAAI,EAAW,IACb,EAAW,GAAM,EAAU,GAE7B,EAAa,EAAM,KAGvB,QAAS,EAAS,KAAU,EAC5B,KAAM,QACN,OACA,SAIJ,WAAgB,GACd,MAAO,MAAO,KACZ,EAAE,iBACF,KAAM,GAAO,KAAM,KAEnB,AAAI,EAAK,OACP,EAAa,EAAQ,GAErB,EAAG,GAEL,EAAE,mBAKN,WAAe,GAEb,SAAe,EACR,KAEL,EAAG,EAAQ,IAIf,aAEE,MAAO,GAGT,aAEE,MAAO,GAGT,WAAe,EAAc,GAC3B,SAAW,GAAQ,EACZ,WACL,MAAO,GAAW,IAItB,WAAa,EAAc,EAAY,EAAgB,GAAM,EAAc,IACzE,KAAM,GAAW,EAAS,GAC1B,EAAS,EAAU,EAAM,IACzB,AAAI,GAAe,EAAW,IAC5B,EAAW,GAAM,EAAO,GAE1B,AAAI,GAEF,EAAa,EAAM,GAIvB,WAAa,GACX,MAAO,GAAS,GAGlB,KAAM,GAAU,EAAY,CAAC,EAAa,EAAe,MAEvD,EAAS,IAAK,KAAU,IACxB,AAAI,GACF,EAAU,IAAK,KAAW,KAG3B,IAEH,MAAO,CAAE,QAAO,WAAU,QAAO,SAAQ,QAAO,SAAQ,QAAO,QAAO,UAAS,MAAK,MAAK,WAAU,YAAW,WAAU", | ||
| "names": [] | ||
| } |
+2
-2
| { | ||
| "name": "use-models", | ||
| "homepage": "https://r3wt.github.io/use-models", | ||
| "version": "1.3.1", | ||
| "version": "1.3.2", | ||
| "private": false, | ||
@@ -27,3 +27,3 @@ "publishConfig": { | ||
| "test:coverage": "npm test -- --coverage --watchAll=false --silent", | ||
| "coveralls":"cat ./coverage/lcov.info | coveralls", | ||
| "coveralls": "cat ./coverage/lcov.info | coveralls", | ||
| "test:watch": "npm test -- --watchAll=true", | ||
@@ -30,0 +30,0 @@ "test:debug": "cross-env react-scripts test --testEnvironment=./src/setupJestEnv.js --setupFilesAfterEnv=./src/setupTests.ts", |
64147
-0.35%