@qundus/qform
Version:
The only form library you'll ever need :)
1 lines • 5.47 kB
JavaScript
import{__export as e,__spreadValues as n}from"../chunk-3465SI5N.mjs";var t={};e(t,{schemaToFields:()=>u});var l=["undefined","null","void","any","unknown","never","nan"],r={isZodType(e){var n;return"undefined"!=typeof File&&e instanceof File||"object"==typeof e&&null!==e&&"_def"in e&&"string"==typeof(null==(n=e._def)?void 0:n.typeName)},isZodTypeNameNull(e){const n=e.endsWith("?")?e.slice(0,e.length-1):e;return l.includes(n)}};var o={processOptions(e){var t,l;const r=n({},e);return r.verbose=null!=(t=r.verbose)&&t,r.unknownsAsText=null!=(l=r.unknownsAsText)&&l,r},getZodTypeName:function e(n,t){var l,r,o;if("object"!=typeof n||null===n)return"unknown";const u=n._def;if(!u||"string"!=typeof u.typeName)return"undefined"!=typeof File&&n instanceof File?"file":"unknown";if("ZodNullable"===u.typeName||"ZodOptional"===u.typeName)return e(u.innerType)+("ZodNullable"===u.typeName?"?":"");if("ZodEffects"===u.typeName){const e=null==(l=null==n?void 0:n.safeParse)?void 0:l.call(n,null);if(e.success)return"null";const t=null==(r=e.error)?void 0:r.message.toLowerCase();return t.includes("file")?"file":t.includes("string")?"string":t.includes("boolean")?"boolean":t.includes("date")?"date":"effect"}switch(u.typeName){case"ZodString":return"string";case"ZodNumber":return"number";case"ZodBoolean":return"boolean";case"ZodBigInt":return"bigint";case"ZodDate":return"date";case"ZodSymbol":return"symbol";case"ZodFile":return"file";case"ZodBlob":return"blob";case"ZodUndefined":return"undefined";case"ZodNull":return"null";case"ZodVoid":return"void";case"ZodAny":return"any";case"ZodUnknown":return"unknown";case"ZodNever":return"never";case"ZodNaN":return"nan";case"ZodLiteral":return`literal:${JSON.stringify(u.value)}`;case"ZodEnum":return"enum";case"ZodNativeEnum":return"nativeEnum"}return"ZodArray"===u.typeName?`array<${e(u.type)}>`:"ZodObject"===u.typeName?"object":"ZodRecord"===u.typeName?`record<${e(u.valueType)}>`:"ZodUnion"===u.typeName?u.options.map(e).join(" | "):"ZodIntersection"===u.typeName?`${e(u.left)} & ${e(u.right)}`:"ZodTuple"===u.typeName?`[${u.items.map(n=>e(n)).join(", ")}]`:(null==(o=u.typeName)?void 0:o.replace(/^Zod/,"").toLowerCase())||"unknown"},getEnumValues:function e(t){var l;if(null==t)return null;const r=t._def,o=r.typeName;if("ZodNullable"===o||"ZodOptional"===o)return e(null!=(l=r.type)?l:r.innerType);if("ZodArray"===o)return e(t._def.type);if(null!=r.left){const t=e(r.left),l=e(r.right);return n(n({},t),l)}if(null!=r.options){let e={};for(const t of r.options){const l=t.Values;e=n(n({},e),l)}return e}return null!=r.values?Array.isArray(r.values)?Object.values(r.values).reduce((e,n)=>("string"==typeof n&&(e[n]=n),e),{}):r.values:{}}};function u(e,n){const t=o.getZodTypeName(e,"MAIN");if(!t.startsWith("object"))throw new Error("qForm: please use a valid zod object not a "+t);return s(e,o.processOptions(n))}function s(e,t,l=""){var u,a,i,c,d,p,f,y,m,v,b,Z,N,g,h;let j={};for(const[w,A]of Object.entries(e.shape)){const e=(l.length>0?`${l}.`:"")+w,O=A,T=o.getZodTypeName(O,e);if(T.startsWith("object")){const l=s(O,t,e);j=n(n({},j),l);continue}const k=null!=(a=null==(u=t.override)?void 0:u[e])?a:{},V={type:"string",isArray:T.startsWith("array")};switch(T.includes("string")?(k.type=null!=(i=k.type)?i:"text",V.type="string"):T.includes("number")?(k.type=null!=(c=k.type)?c:"number",V.type="number"):T.includes("boolean")?(k.type=null!=(d=k.type)?d:"checkbox",V.type="boolean"):T.includes("enum")?(k.type=null!=(p=k.type)?p:"select",V.type="enum"):T.includes("nativeEnum")?(k.type=null!=(f=k.type)?f:"select",V.type="nativeEnum"):T.includes("file")?(k.type=null!=(y=k.type)?y:"file",V.type="file"):T.includes("date")&&(k.type=null!=(m=k.type)?m:"date",V.type="date"),V.type){case"nativeEnum":case"enum":{k.multiple=null!=(b=null!=(v=k.multiple)?v:V.isArray)&&b;const e=o.getEnumValues(O),n=[];for(const t in e){const l=e[t];n.push({label:t,value:l})}k.options=()=>n}break;case"file":{k.multiple=null!=(N=null!=(Z=k.multiple)?Z:V.isArray)&&N;const e=({value:e,field:n})=>null==e?null:e instanceof FileList?n.multiple?Array.from(e):e[0]:e;null==k.processValue?k.processValue=e:"function"==typeof k.processValue?k.processValue=[e,k.processValue]:k.processValue=[e,...k.processValue]}break;default:{let n=!1;if(null==k.type&&(null==t?void 0:t.unknownsAsText)&&(r.isZodTypeNameNull(T)?k.type="text":n=!0),V.isArray&&((null==t?void 0:t.verbose)&&console.error("qForm: removed ",e," with type ",T,", because requires explicit intervention!"),n=!0),n)continue}}k.required=null!=(g=k.required)?g:!O.isOptional(),k.valueNullable=null!=(h=k.valueNullable)?h:O.isNullable();const E=e=>{const n=O.safeParse(e);if(n.success)return null;const t=[];for(const e of n.error.errors)t.push(e.message);return t.length<=0?null:t};null==k.validate?k.validate=E:"function"==typeof k.validate?k.validate=[k.validate,E]:k.validate.push(E),j[e]=k}return j}var a={};function i(e){const n={},t=(e,l=[])=>{if(function(e){return!("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e)||e instanceof Date||Array.isArray(e))}(e))for(const n in e)Object.hasOwn(e,n)&&t(e[n],[...l,n]);else l.length>0&&(n[l.join(".")]=e)};return t(e),n}function c(e){const n={};for(const[t,l]of Object.entries(e)){const e=t.split(".");let r=n;for(let n=0;n<e.length;n++){const t=e[n];n===e.length-1?r[t]=l:(r[t]=r[t]||{},r=r[t])}}return n}e(a,{flatten:()=>i,unflatten:()=>c});export{a as cObj,t as cZod};//# sourceMappingURL=index.mjs.map