@form-instant/react-resolver-zod 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/index.js.map +6 -6
- package/dist/src/components/FormInstantElement.d.ts +7 -0
- package/dist/src/components/FormInstantProvider.d.ts +19 -0
- package/dist/{hooks → src/hooks}/useSchema.d.ts +1 -1
- package/dist/{types.d.ts → src/types.d.ts} +2 -3
- package/dist/{utils → src/utils}/schemaParser.d.ts +2 -1
- package/dist/{utils → src/utils}/zodExtensions.d.ts +1 -1
- package/package.json +36 -62
- package/LICENSE +0 -21
- package/dist/components/FormInstantElement.d.ts +0 -4
- package/dist/components/FormInstantProvider.d.ts +0 -10
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{z as
|
|
1
|
+
import{z as _}from"zod";function S(A,B){return A._fieldConfig=B,Object.defineProperty(A,"fieldConfig",{value(K){return this._fieldConfig=K,this},writable:!0,configurable:!0}),A}function P(){let A=Object.getPrototypeOf(_.string());Object.defineProperty(A,"fieldConfig",{value(B){return this._fieldConfig=B,this},writable:!0,configurable:!0});try{let B=Object.getPrototypeOf(_.string());if(B&&B!==A)Object.defineProperty(B,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let K=Object.getPrototypeOf(_.email());if(K&&K!==A)Object.defineProperty(K,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let X=Object.getPrototypeOf(_.string().url());if(X&&X!==A)Object.defineProperty(X,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let Q=Object.getPrototypeOf(_.string().min(1));if(Q&&Q!==A)Object.defineProperty(Q,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let q=Object.getPrototypeOf(_.string().max(100));if(q&&q!==A)Object.defineProperty(q,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let W=Object.getPrototypeOf(_.object({}));if(W&&W!==A)Object.defineProperty(W,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let Y=Object.getPrototypeOf(_.array(_.string()));if(Y&&Y!==A)Object.defineProperty(Y,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let U=Object.getPrototypeOf(_.optional(_.string()));if(U&&U!==A)Object.defineProperty(U,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let O=Object.getPrototypeOf(_.nullable(_.string()));if(O&&O!==A)Object.defineProperty(O,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let R=Object.getPrototypeOf(_.string().default(""));if(R&&R!==A)Object.defineProperty(R,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let w=Object.getPrototypeOf(_.boolean());if(w&&w!==A)Object.defineProperty(w,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let G=Object.getPrototypeOf(_.number());if(G&&G!==A)Object.defineProperty(G,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let H=Object.getPrototypeOf(_.string().refine(()=>!0));if(H&&H!==A)Object.defineProperty(H,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0});let E=Object.getPrototypeOf(_.string().min(1));if(E&&E!==A)Object.defineProperty(E,"fieldConfig",{value(J){return this._fieldConfig=J,this},writable:!0,configurable:!0})}catch(B){console.warn("Some Zod prototypes could not be extended:",B)}return _}P();import{createContext as y,useContext as h}from"react";import{z as L}from"zod";function T(A){return A._zod?.def?.type||"unknown"}function u(A){let B=A?._fieldConfig;if(!B)return;return B}function k(A){let B={},K=[],X={};function Q(Y){if(Y instanceof L.ZodObject)return Y.shape;if(Y instanceof L.ZodDiscriminatedUnion){let U=Y.options;if(U.length>0)return Q(U[0])}return{}}function q(Y,U,O="",R=X){let w=u(U),G=O?`${O}.${Y}`:Y,H=w?.fieldType||T(U),E=U instanceof L.ZodOptional,J=U instanceof L.ZodDefault,z=!E&&!J,M=void 0;if(J)try{let $=U.safeParse(void 0);if($.success)M=$.data}catch{}else try{let $=U.safeParse(void 0);if($.success)M=$.data}catch{}let g=(()=>{if(U instanceof L.ZodEnum)return U.options.map(($)=>[String($),String($)]);if(U.constructor.name==="ZodNativeEnum")return U.options.map((D)=>[String(D),String(D)]);return[]})(),C={name:{current:Y,history:G},fieldType:H,required:z,default:M,fieldConfig:w,options:g};if(B[G]=C,K.push(G),R[Y]=C,U instanceof L.ZodObject){let $=U.shape,D={};R[Y]=D;for(let Z in $){if(!(Z in $))continue;q(Z,$[Z],G,D)}B[G].schema=R[Y]}if(U instanceof L.ZodArray){let $=U.element;if($ instanceof L.ZodObject){let D={};R[Y]=D;let Z=$.shape;for(let j in Z){if(!(j in Z))continue;q(j,Z[j],`${G}[0]`,D)}B[G].schema=[D]}}}let W=Q(A);return Object.keys(W).forEach((Y)=>{q(Y,W[Y])}),{fields:B}}function i(A){return T(A)}function o(A){let B=A instanceof L.ZodOptional,K=A instanceof L.ZodDefault;return!B&&!K}function a(A){try{let B=A.safeParse(void 0);return B.success?B.data:void 0}catch{return}}import{jsx as d}from"react/jsx-runtime";var F=y(null),f=({children:A,schema:B})=>{let{fields:K}=k(B);return d(F.Provider,{value:{schema:B,fields:K},children:A})},v=({key:A})=>{let{fields:B}=h(F);if(!B)throw Error("useFields must be used within FormInstantProvider");return B[A]};import{useMemo as x}from"react";import{z as s}from"zod";var V=(A,B={})=>{try{let K=(()=>{if(A instanceof s.ZodObject)return A.shape;return{}})(),X={};for(let Q of Object.keys(K)){let q=K[Q],W=q.safeParse(void 0);if(W.success){X[Q]=W.data;continue}if(Object.keys(B).includes(Q)){X[Q]=B[Q];continue}let Y={ZodEmail(){X[Q]=""},ZodString(){X[Q]=""},ZodNumber(){X[Q]=0},ZodBoolean(){X[Q]=!1},ZodDate(){X[Q]=null},ZodArray(){X[Q]=[]},ZodObject(){X[Q]=V(q,B)}},U=q.constructor.name,O=Y[U];if(O){O();continue}X[Q]=""}return X}catch(K){if(console.log("\uD83D\uDD34 initialValues error",K),K instanceof Error)console.log(K.cause),console.log(K.message);return{}}},p=(A,B)=>{let K=x(()=>{let Q=A(B);if(Q._fieldConfig)return Q.fieldConfig({dp:B,...Q._fieldConfig});return Q},[A,B]),X=x(()=>V(K,B),[K,B]);return{schema:K,initialValues:X}};import{useId as m}from"react";import{ElementMapping as N}from"@form-instant/react-input-mapping";import{jsx as I,Fragment as b}from"react/jsx-runtime";var c=({name:A})=>{let B=v({key:A}),K=m();if(!["object"].includes(B.fieldType))return I(N,{formProps:B});return I(b,{children:Object.values(B.schema||{}).map((X)=>{return I(b,{children:I(N,{formProps:X})},`${K}-${X.name?.history||""}`)})})};export{p as useSchema,v as useFields,k as parseSchema,o as isFieldRequired,V as getInitialValues,i as getFieldType,a as getDefaultValue,S as addFieldConfig,f as FormInstantProvider,c as FormInstantElement};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=A28D246F371BD2E864756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/utils/zodExtensions.ts", "../src/components/FormInstantProvider.tsx", "../src/utils/schemaParser.ts", "../src/hooks/useSchema.ts", "../src/components/FormInstantElement.tsx"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { z } from 'zod';\nimport { FieldConfig } from '../types';\n\n// Extend ZodType interface to include fieldConfig method\ndeclare module 'zod' {\n interface ZodType {\n fieldConfig: <Ob extends Record<string, any>>(config: FieldConfig<Ob, keyof Ob>) => this;\n _fieldConfig?: FieldConfig<any, any>;\n }\n}\n\n// Create a wrapper function that adds fieldConfig to any Zod schema\nfunction addFieldConfig<T extends z.ZodTypeAny>(schema: T, config: FieldConfig<any, any>): T {\n (schema as any)._fieldConfig = config;\n\n // Add fieldConfig method to the schema instance\n Object.defineProperty(schema, 'fieldConfig', {\n value(newConfig: FieldConfig<any, any>) {\n (this as any)._fieldConfig = newConfig;\n return this;\n },\n writable: true,\n configurable: true,\n });\n\n return schema;\n}\n\n// Function to extend Zod globally with fieldConfig method\nexport function extendZodWithFieldConfig() {\n // In Zod v4, we need to extend the base ZodType prototype\n // Get the prototype of a basic Zod schema\n const zodTypePrototype = Object.getPrototypeOf(z.string());\n\n // Add fieldConfig method to all Zod schemas\n Object.defineProperty(zodTypePrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n\n // For Zod v4, we need to be more careful about extending prototypes\n // Let's try to extend the most common ones\n try {\n // Extend string schema prototype\n const stringPrototype = Object.getPrototypeOf(z.string());\n if (stringPrototype && stringPrototype !== zodTypePrototype) {\n Object.defineProperty(stringPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend email schema prototype (z.string().email())\n const emailPrototype = Object.getPrototypeOf(z.email());\n if (emailPrototype && emailPrototype !== zodTypePrototype) {\n Object.defineProperty(emailPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend url schema prototype (z.string().url())\n const urlPrototype = Object.getPrototypeOf(z.string().url());\n if (urlPrototype && urlPrototype !== zodTypePrototype) {\n Object.defineProperty(urlPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend min schema prototype (z.string().min())\n const minPrototype = Object.getPrototypeOf(z.string().min(1));\n if (minPrototype && minPrototype !== zodTypePrototype) {\n Object.defineProperty(minPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend max schema prototype (z.string().max())\n const maxPrototype = Object.getPrototypeOf(z.string().max(100));\n if (maxPrototype && maxPrototype !== zodTypePrototype) {\n Object.defineProperty(maxPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend object schema prototype\n const objectPrototype = Object.getPrototypeOf(z.object({}));\n if (objectPrototype && objectPrototype !== zodTypePrototype) {\n Object.defineProperty(objectPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend array schema prototype\n const arrayPrototype = Object.getPrototypeOf(z.array(z.string()));\n if (arrayPrototype && arrayPrototype !== zodTypePrototype) {\n Object.defineProperty(arrayPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend optional schema prototype\n const optionalPrototype = Object.getPrototypeOf(z.optional(z.string()));\n if (optionalPrototype && optionalPrototype !== zodTypePrototype) {\n Object.defineProperty(optionalPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend nullable schema prototype\n const nullablePrototype = Object.getPrototypeOf(z.nullable(z.string()));\n if (nullablePrototype && nullablePrototype !== zodTypePrototype) {\n Object.defineProperty(nullablePrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend default schema prototype\n const defaultPrototype = Object.getPrototypeOf(z.string().default(''));\n if (defaultPrototype && defaultPrototype !== zodTypePrototype) {\n Object.defineProperty(defaultPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend boolean schema prototype\n const booleanPrototype = Object.getPrototypeOf(z.boolean());\n if (booleanPrototype && booleanPrototype !== zodTypePrototype) {\n Object.defineProperty(booleanPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend number schema prototype\n const numberPrototype = Object.getPrototypeOf(z.number());\n if (numberPrototype && numberPrototype !== zodTypePrototype) {\n Object.defineProperty(numberPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend refinement schema prototype (for validations like email, url, etc.)\n const refinementPrototype = Object.getPrototypeOf(z.string().refine(() => true));\n if (refinementPrototype && refinementPrototype !== zodTypePrototype) {\n Object.defineProperty(refinementPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend validation schema prototype (for validations like min, max, etc.)\n const validationPrototype = Object.getPrototypeOf(z.string().min(1));\n if (validationPrototype && validationPrototype !== zodTypePrototype) {\n Object.defineProperty(validationPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n } catch (error) {\n console.warn('Some Zod prototypes could not be extended:', error);\n }\n\n return z;\n}\n\n// Execute the extension immediately when this module is imported\nextendZodWithFieldConfig();\n\n// Helper function to get field configuration from a schema\nexport function getFieldConfig<T = FieldConfig<any, any>>(schema: z.ZodTypeAny): T | undefined {\n return (schema as any)._fieldConfig;\n}\n\n// Helper function to set field configuration on an existing schema\nexport function setFieldConfig<T = FieldConfig<any, any>>(\n schema: z.ZodTypeAny,\n config: T,\n): z.ZodTypeAny {\n (schema as any)._fieldConfig = config;\n return schema;\n}\n\n// Export the wrapper function for manual use\nexport { addFieldConfig };\n",
|
|
6
|
-
"
|
|
7
|
-
"import { z } from 'zod';\nimport { FieldConfig,
|
|
5
|
+
"import { z } from 'zod';\nimport type { FieldConfig } from '../types';\n\n// Extend ZodType interface to include fieldConfig method\ndeclare module 'zod' {\n interface ZodType {\n fieldConfig: <Ob extends Record<string, any>>(config: FieldConfig<Ob, keyof Ob>) => this;\n _fieldConfig?: FieldConfig<any, any>;\n }\n}\n\n// Create a wrapper function that adds fieldConfig to any Zod schema\nfunction addFieldConfig<T extends z.ZodTypeAny>(schema: T, config: FieldConfig<any, any>): T {\n (schema as any)._fieldConfig = config;\n\n // Add fieldConfig method to the schema instance\n Object.defineProperty(schema, 'fieldConfig', {\n value(newConfig: FieldConfig<any, any>) {\n (this as any)._fieldConfig = newConfig;\n return this;\n },\n writable: true,\n configurable: true,\n });\n\n return schema;\n}\n\n// Function to extend Zod globally with fieldConfig method\nexport function extendZodWithFieldConfig() {\n // In Zod v4, we need to extend the base ZodType prototype\n // Get the prototype of a basic Zod schema\n const zodTypePrototype = Object.getPrototypeOf(z.string());\n\n // Add fieldConfig method to all Zod schemas\n Object.defineProperty(zodTypePrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n\n // For Zod v4, we need to be more careful about extending prototypes\n // Let's try to extend the most common ones\n try {\n // Extend string schema prototype\n const stringPrototype = Object.getPrototypeOf(z.string());\n if (stringPrototype && stringPrototype !== zodTypePrototype) {\n Object.defineProperty(stringPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend email schema prototype (z.string().email())\n const emailPrototype = Object.getPrototypeOf(z.email());\n if (emailPrototype && emailPrototype !== zodTypePrototype) {\n Object.defineProperty(emailPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend url schema prototype (z.string().url())\n const urlPrototype = Object.getPrototypeOf(z.string().url());\n if (urlPrototype && urlPrototype !== zodTypePrototype) {\n Object.defineProperty(urlPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend min schema prototype (z.string().min())\n const minPrototype = Object.getPrototypeOf(z.string().min(1));\n if (minPrototype && minPrototype !== zodTypePrototype) {\n Object.defineProperty(minPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend max schema prototype (z.string().max())\n const maxPrototype = Object.getPrototypeOf(z.string().max(100));\n if (maxPrototype && maxPrototype !== zodTypePrototype) {\n Object.defineProperty(maxPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend object schema prototype\n const objectPrototype = Object.getPrototypeOf(z.object({}));\n if (objectPrototype && objectPrototype !== zodTypePrototype) {\n Object.defineProperty(objectPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend array schema prototype\n const arrayPrototype = Object.getPrototypeOf(z.array(z.string()));\n if (arrayPrototype && arrayPrototype !== zodTypePrototype) {\n Object.defineProperty(arrayPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend optional schema prototype\n const optionalPrototype = Object.getPrototypeOf(z.optional(z.string()));\n if (optionalPrototype && optionalPrototype !== zodTypePrototype) {\n Object.defineProperty(optionalPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend nullable schema prototype\n const nullablePrototype = Object.getPrototypeOf(z.nullable(z.string()));\n if (nullablePrototype && nullablePrototype !== zodTypePrototype) {\n Object.defineProperty(nullablePrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend default schema prototype\n const defaultPrototype = Object.getPrototypeOf(z.string().default(''));\n if (defaultPrototype && defaultPrototype !== zodTypePrototype) {\n Object.defineProperty(defaultPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend boolean schema prototype\n const booleanPrototype = Object.getPrototypeOf(z.boolean());\n if (booleanPrototype && booleanPrototype !== zodTypePrototype) {\n Object.defineProperty(booleanPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend number schema prototype\n const numberPrototype = Object.getPrototypeOf(z.number());\n if (numberPrototype && numberPrototype !== zodTypePrototype) {\n Object.defineProperty(numberPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend refinement schema prototype (for validations like email, url, etc.)\n const refinementPrototype = Object.getPrototypeOf(z.string().refine(() => true));\n if (refinementPrototype && refinementPrototype !== zodTypePrototype) {\n Object.defineProperty(refinementPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n\n // Extend validation schema prototype (for validations like min, max, etc.)\n const validationPrototype = Object.getPrototypeOf(z.string().min(1));\n if (validationPrototype && validationPrototype !== zodTypePrototype) {\n Object.defineProperty(validationPrototype, 'fieldConfig', {\n value(config: FieldConfig<any, any>) {\n (this as any)._fieldConfig = config;\n return this;\n },\n writable: true,\n configurable: true,\n });\n }\n } catch (error) {\n console.warn('Some Zod prototypes could not be extended:', error);\n }\n\n return z;\n}\n\n// Execute the extension immediately when this module is imported\nextendZodWithFieldConfig();\n\n// Helper function to get field configuration from a schema\nexport function getFieldConfig<T = FieldConfig<any, any>>(schema: z.ZodTypeAny): T | undefined {\n return (schema as any)._fieldConfig;\n}\n\n// Helper function to set field configuration on an existing schema\nexport function setFieldConfig<T = FieldConfig<any, any>>(\n schema: z.ZodTypeAny,\n config: T,\n): z.ZodTypeAny {\n (schema as any)._fieldConfig = config;\n return schema;\n}\n\n// Export the wrapper function for manual use\nexport { addFieldConfig };\n",
|
|
6
|
+
"import { createContext, useContext } from 'react';\nimport type { zodResolverProps } from '../types';\nimport { parseSchema } from '../utils/schemaParser';\nimport type { NestedKeys } from './FormInstantElement';\nimport type { FieldMetadata } from '@form-instant/react-input-mapping';\n\ninterface ZodResolverContextType {\n\tfields: Record<string, FieldMetadata>;\n\tschema: zodResolverProps;\n}\n\nexport const ZodResolverContext = createContext<ZodResolverContextType | null>(null);\n\nexport const FormInstantProvider: FCC<{\n\tschema: zodResolverProps;\n}> = ({ children, schema }) => {\n\tconst { fields } = parseSchema(schema);\n\n\treturn (\n\t\t<ZodResolverContext.Provider value={{ schema, fields }}>\n\t\t\t{children}\n\t\t</ZodResolverContext.Provider>\n\t);\n};\n\ninterface useFieldsProps<Sc extends Record<string, any>> {\n\tkey: NestedKeys<Sc>;\n}\n\n/**\n * Hook to get a specific field by name from the schema\n */\nexport const useFields = <Sc extends Record<string, any>>({ key }: useFieldsProps<Sc>) => {\n\tconst { fields } = useContext(ZodResolverContext)!;\n\n\tif (!fields) {\n\t\tthrow new Error('useFields must be used within FormInstantProvider');\n\t}\n\n\treturn fields[key as string]!;\n};\n",
|
|
7
|
+
"import { z } from 'zod';\nimport type { FieldConfig, SchemaPath } from '../types';\nimport type { FieldMetadata } from '@form-instant/react-input-mapping';\n\n// Schema type detection using the internal type property\nfunction getSchemaType(schema: z.ZodTypeAny): string {\n return schema._zod?.def?.type || 'unknown';\n}\n\n/**\n * Extracts fieldConfig from a Zod schema\n */\nfunction extractFieldConfig(schema: z.ZodTypeAny) {\n const fieldConfig = (schema as any)?._fieldConfig as FieldConfig<Record<string, object>>;\n if (!fieldConfig) return undefined;\n\n return fieldConfig;\n}\n\n/**\n * Parses a Zod schema and extracts metadata for mapping\n */\nexport function parseSchema(schema: z.ZodTypeAny): { fields: Record<string, FieldMetadata> } {\n const fields: Record<string, FieldMetadata> = {};\n const paths: SchemaPath[] = [];\n const structure: Record<string, any> = {};\n\n function extractShape(schema: z.ZodTypeAny): Record<string, any> {\n // Handle ZodObject\n if (schema instanceof z.ZodObject) {\n return schema.shape;\n }\n\n // Handle ZodDiscriminatedUnion\n if (schema instanceof z.ZodDiscriminatedUnion) {\n // For discriminated unions, we'll use the first option as default\n const options = schema.options;\n if (options.length > 0) {\n return extractShape(options[0] as z.ZodTypeAny);\n }\n }\n\n return {};\n }\n\n function processField(\n fieldName: string,\n fieldSchema: z.ZodTypeAny,\n parentPath: string = '',\n parentStructure: Record<string, any> = structure,\n ) {\n // Extract fieldConfig from the schema\n const fieldConfig = extractFieldConfig(fieldSchema);\n const currentPath = parentPath ? `${parentPath}.${fieldName}` : fieldName;\n const fieldType = fieldConfig?.fieldType || getSchemaType(fieldSchema);\n\n // Check if field is required\n const isOptional = fieldSchema instanceof z.ZodOptional;\n const hasDefault = fieldSchema instanceof z.ZodDefault;\n const isRequired = !isOptional && !hasDefault;\n\n // Get default value\n let defaultValue: any = undefined;\n if (hasDefault) {\n // For ZodDefault, try to get the default value\n try {\n const result = fieldSchema.safeParse(undefined);\n if (result.success) {\n defaultValue = result.data;\n }\n } catch {\n // Could not get default value\n }\n } else {\n try {\n const result = fieldSchema.safeParse(undefined);\n if (result.success) {\n defaultValue = result.data;\n }\n } catch {\n // Field is required, no default value\n }\n }\n\n // Extract options for enums\n const options: [string, string][] = (() => {\n if (fieldSchema instanceof z.ZodEnum) {\n return fieldSchema.options.map((value) => [String(value), String(value)]);\n }\n\n if (fieldSchema.constructor.name === 'ZodNativeEnum') {\n const enumValues = (fieldSchema as z.ZodEnum).options;\n return enumValues.map((value) => [String(value), String(value)]);\n }\n return [];\n })();\n\n // Create field metadata\n const fieldMetadata: FieldMetadata = {\n name: {\n current: fieldName,\n history: currentPath,\n },\n fieldType: fieldType as any,\n required: isRequired,\n default: defaultValue,\n fieldConfig,\n options,\n };\n\n // Store field metadata by path\n fields[currentPath] = fieldMetadata;\n paths.push(currentPath);\n parentStructure[fieldName] = fieldMetadata;\n\n // Handle nested objects\n if (fieldSchema instanceof z.ZodObject) {\n const nestedShape = fieldSchema.shape;\n const nestedStructure: Record<string, any> = {};\n parentStructure[fieldName] = nestedStructure;\n\n for (const elementFieldName in nestedShape) {\n if (!(elementFieldName in nestedShape)) continue;\n\n processField(\n elementFieldName,\n nestedShape[elementFieldName],\n currentPath,\n nestedStructure,\n );\n }\n\n fields[currentPath]!.schema = parentStructure[fieldName];\n }\n\n // Handle arrays\n if (fieldSchema instanceof z.ZodArray) {\n const elementSchema = fieldSchema.element;\n if (elementSchema instanceof z.ZodObject) {\n const arrayStructure: Record<string, any> = {};\n parentStructure[fieldName] = arrayStructure;\n\n const elementShape = elementSchema.shape;\n\n for (const elementFieldName in elementShape) {\n if (!(elementFieldName in elementShape)) continue;\n\n processField(\n elementFieldName,\n elementShape[elementFieldName],\n `${currentPath}[0]`,\n arrayStructure,\n );\n }\n\n\n fields[currentPath]!.schema = [arrayStructure] as any;\n }\n }\n }\n\n const shape = extractShape(schema);\n Object.keys(shape).forEach((fieldName) => {\n processField(fieldName, shape[fieldName]);\n });\n\n return {\n fields,\n };\n}\n\n/**\n * Gets the field type from a Zod schema\n */\nexport function getFieldType(schema: z.ZodTypeAny): string {\n return getSchemaType(schema);\n}\n\n/**\n * Checks if a field is required\n */\nexport function isFieldRequired(schema: z.ZodTypeAny): boolean {\n const isOptional = schema instanceof z.ZodOptional;\n const hasDefault = schema instanceof z.ZodDefault;\n return !isOptional && !hasDefault;\n}\n\n/**\n * Gets the default value for a field\n */\nexport function getDefaultValue(schema: z.ZodTypeAny): any {\n try {\n const result = schema.safeParse(undefined);\n return result.success ? result.data : undefined;\n } catch {\n return undefined;\n }\n}\n",
|
|
8
8
|
"import { useMemo } from 'react';\nimport { z } from 'zod';\n\n// Types for useSchema hook\ntype Data = z.ZodObject<any, any> | z.ZodTypeAny | z.ZodDiscriminatedUnion<any, any>;\ntype DP = Record<string, any>;\n\n/**\n * Generates initial values from schema and dependencies\n */\nexport const getInitialValues = <T extends Data>(schema: T, dp: DP = {}): z.infer<T> => {\n try {\n const shape = (() => {\n if (schema instanceof z.ZodObject) return (schema as z.ZodObject<any>).shape;\n return {};\n })();\n\n const initialValues: Record<string, any> = {};\n\n for (const key of Object.keys(shape)) {\n const fieldSchema = shape[key];\n const result = fieldSchema.safeParse(undefined);\n\n // Si tiene valor por defecto\n if (result.success) {\n initialValues[key] = result.data;\n continue;\n }\n\n if (Object.keys(dp).includes(key)) {\n initialValues[key] = dp[key];\n continue;\n }\n\n // Inferir tipo para campos requeridos sin default\n const fieldConfig = {\n ZodEmail() {\n initialValues[key] = '';\n },\n ZodString() {\n initialValues[key] = '';\n },\n ZodNumber() {\n initialValues[key] = 0;\n },\n ZodBoolean() {\n initialValues[key] = false;\n },\n ZodDate() {\n initialValues[key] = null;\n },\n ZodArray() {\n initialValues[key] = [];\n },\n ZodObject() {\n initialValues[key] = getInitialValues(fieldSchema, dp);\n },\n };\n\n const fieldType = fieldSchema.constructor.name;\n const fieldHandler = fieldConfig[fieldType as keyof typeof fieldConfig];\n\n if (fieldHandler) {\n fieldHandler();\n continue;\n }\n\n initialValues[key] = '';\n }\n\n return initialValues as z.infer<T>;\n } catch (error) {\n console.log('🔴 initialValues error', error);\n\n if (error instanceof Error) {\n console.log(error.cause);\n console.log(error.message);\n }\n\n return {} as z.infer<T>;\n }\n};\n\n/**\n * Hook that provides reactive schema and initial values\n */\nexport const useSchema = <T extends Data>(cbP: (dp: DP, preData?: Data) => T, dp: DP) => {\n const schema = useMemo(() => {\n const baseSchema = cbP(dp);\n // Check if fieldConfig exists (for backward compatibility)\n if ((baseSchema as any)._fieldConfig) {\n return (baseSchema as any).fieldConfig({\n dp,\n ...(baseSchema as any)._fieldConfig,\n }) as T;\n }\n return baseSchema as T;\n }, [cbP, dp]);\n\n const initialValues = useMemo(() => getInitialValues<T>(schema, dp), [schema, dp]);\n\n return { schema, initialValues } as const;\n};\n",
|
|
9
|
-
"
|
|
9
|
+
"import { Fragment, useId } from 'react';\nimport { ElementMapping } from '@form-instant/react-input-mapping';\nimport { useFields } from './FormInstantProvider';\n\nexport type NestedKeys<T> = {\n\t[K in keyof T]: T[K] extends Record<string, any>\n\t\t? K | `${K & string}.${keyof T[K] & string}`\n\t\t: K;\n}[keyof T];\n\nexport interface ElementProps<S extends Record<string, any>> {\n\tname: NestedKeys<S>;\n}\n\nexport const FormInstantElement = <S extends Record<string, any>>({ name }: ElementProps<S>) => {\n\tconst field = useFields({ key: name });\n\n\tconst id = useId();\n\n\tif (!['object'].includes(field.fieldType)) return <ElementMapping formProps={field as any} />;\n\n\treturn (\n\t\t<>\n\t\t\t{Object.values(field.schema || {}).map((props: any) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${id}-${props.name?.history || ''}`}>\n\t\t\t\t\t\t<ElementMapping formProps={props} />\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n};\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "A28D246F371BD2E864756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type NestedKeys<T> = {
|
|
2
|
+
[K in keyof T]: T[K] extends Record<string, any> ? K | `${K & string}.${keyof T[K] & string}` : K;
|
|
3
|
+
}[keyof T];
|
|
4
|
+
export interface ElementProps<S extends Record<string, any>> {
|
|
5
|
+
name: NestedKeys<S>;
|
|
6
|
+
}
|
|
7
|
+
export declare const FormInstantElement: <S extends Record<string, any>>({ name }: ElementProps<S>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { zodResolverProps } from '../types';
|
|
2
|
+
import type { NestedKeys } from './FormInstantElement';
|
|
3
|
+
import type { FieldMetadata } from '@form-instant/react-input-mapping';
|
|
4
|
+
interface ZodResolverContextType {
|
|
5
|
+
fields: Record<string, FieldMetadata>;
|
|
6
|
+
schema: zodResolverProps;
|
|
7
|
+
}
|
|
8
|
+
export declare const ZodResolverContext: import("react").Context<ZodResolverContextType | null>;
|
|
9
|
+
export declare const FormInstantProvider: FCC<{
|
|
10
|
+
schema: zodResolverProps;
|
|
11
|
+
}>;
|
|
12
|
+
interface useFieldsProps<Sc extends Record<string, any>> {
|
|
13
|
+
key: NestedKeys<Sc>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Hook to get a specific field by name from the schema
|
|
17
|
+
*/
|
|
18
|
+
export declare const useFields: <Sc extends Record<string, any>>({ key }: useFieldsProps<Sc>) => FieldMetadata;
|
|
19
|
+
export {};
|
|
@@ -4,7 +4,7 @@ type DP = Record<string, any>;
|
|
|
4
4
|
/**
|
|
5
5
|
* Generates initial values from schema and dependencies
|
|
6
6
|
*/
|
|
7
|
-
export declare const getInitialValues: <T extends Data>(schema: T, dp?: DP) => z.
|
|
7
|
+
export declare const getInitialValues: <T extends Data>(schema: T, dp?: DP) => z.infer<T>;
|
|
8
8
|
/**
|
|
9
9
|
* Hook that provides reactive schema and initial values
|
|
10
10
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ReactNode } from 'react';
|
|
1
|
+
import type { FieldMetadata } from '@form-instant/react-input-mapping';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
3
|
export type ZodSchema = any;
|
|
4
4
|
export type ComponentMapping = Record<string, React.ComponentType<any>>;
|
|
5
5
|
export type SchemaPath = string;
|
|
@@ -7,7 +7,6 @@ export type PathSegment = string;
|
|
|
7
7
|
export type FieldConfig<Ob, K extends keyof Ob = keyof Ob> = {
|
|
8
8
|
fieldType: K;
|
|
9
9
|
} & Ob[K];
|
|
10
|
-
export type FieldMetadata = ParsedField<any, string>;
|
|
11
10
|
export interface SchemaMetadata {
|
|
12
11
|
fields: Record<string, FieldMetadata>;
|
|
13
12
|
paths: SchemaPath[];
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { FieldMetadata } from '@form-instant/react-input-mapping';
|
|
2
3
|
/**
|
|
3
4
|
* Parses a Zod schema and extracts metadata for mapping
|
|
4
5
|
*/
|
|
5
6
|
export declare function parseSchema(schema: z.ZodTypeAny): {
|
|
6
|
-
fields: Record<string,
|
|
7
|
+
fields: Record<string, FieldMetadata>;
|
|
7
8
|
};
|
|
8
9
|
/**
|
|
9
10
|
* Gets the field type from a Zod schema
|
package/package.json
CHANGED
|
@@ -1,85 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
+
"license": "MIT",
|
|
3
|
+
"version": "2.2.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
2
7
|
"name": "@form-instant/react-resolver-zod",
|
|
3
|
-
"version": "2.0.0",
|
|
4
8
|
"author": {
|
|
5
9
|
"name": "leomerida15",
|
|
6
10
|
"email": "dimasmerida15@gmail.com",
|
|
7
11
|
"url": "https://github.com/leomerida15"
|
|
8
12
|
},
|
|
13
|
+
"homepage": "https://leomerida15.github.io/form-instant-react-mapping",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"@form-instant",
|
|
16
|
+
"react",
|
|
17
|
+
"mapping",
|
|
18
|
+
"zod"
|
|
19
|
+
],
|
|
20
|
+
"exports": {
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"default": "./dist/index.js"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
9
26
|
"repository": {
|
|
10
27
|
"type": "git",
|
|
11
28
|
"url": "git+https://github.com/leomerida15/form-instant-react-resolver-zod.git"
|
|
12
29
|
},
|
|
13
|
-
"main": "dist/index.js",
|
|
14
|
-
"module": "dist/index.js",
|
|
15
|
-
"types": "dist/index.d.ts",
|
|
16
30
|
"scripts": {
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"build
|
|
20
|
-
"build:types": "
|
|
21
|
-
"
|
|
22
|
-
"lint": "eslint src
|
|
23
|
-
"lint:fix": "eslint src --
|
|
24
|
-
"
|
|
25
|
-
"test": "bun test"
|
|
26
|
-
"test:coverage": "bun test --coverage",
|
|
27
|
-
"test:watch": "bun test --watch",
|
|
28
|
-
"up": "npm publish --access public",
|
|
29
|
-
"up:rc": "npm publish --access public --tag rc",
|
|
30
|
-
"format": "prettier --write .",
|
|
31
|
-
"prepare": "bun run build"
|
|
31
|
+
"start": "bun run bunpack.watch.ts",
|
|
32
|
+
"dev": "bun run bunpack.watch.ts",
|
|
33
|
+
"build": "bun run bunpack.build.ts",
|
|
34
|
+
"build:types": "bun x tsc --project tsconfig.build.json",
|
|
35
|
+
"type:check": "bun x tsc --noEmit",
|
|
36
|
+
"lint": "eslint src",
|
|
37
|
+
"lint:fix": "eslint src --fix",
|
|
38
|
+
"watch": "bun run bunpack.watch.ts --build",
|
|
39
|
+
"test": "bun test"
|
|
32
40
|
},
|
|
41
|
+
"dependencies": {},
|
|
33
42
|
"devDependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"
|
|
36
|
-
"@tsconfig/recommended": "^1.0.10",
|
|
37
|
-
"@tsconfig/vite-react": "^3.4.0",
|
|
38
|
-
"@types/bun": "^1.2.20",
|
|
39
|
-
"@types/react": "^19.1.9",
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^8.39.0",
|
|
41
|
-
"@typescript-eslint/parser": "^8.39.0",
|
|
42
|
-
"eslint": "^9.33.0",
|
|
43
|
-
"eslint-plugin-prettier": "^5.5.4",
|
|
44
|
-
"husky": "^9.1.7",
|
|
45
|
-
"minimatch": "^10.0.3",
|
|
46
|
-
"nodemon": "^3.1.10",
|
|
47
|
-
"prettier": "^3.6.2",
|
|
48
|
-
"size-limit": "^11.2.0",
|
|
49
|
-
"tslib": "^2.8.1",
|
|
50
|
-
"typescript": "~5.0.4",
|
|
51
|
-
"typescript-eslint": "^8.39.0",
|
|
52
|
-
"zod": "^4.0.17"
|
|
43
|
+
"@types/react": "^19.2.10",
|
|
44
|
+
"zod": "^4.3.6"
|
|
53
45
|
},
|
|
54
46
|
"peerDependencies": {
|
|
55
|
-
"
|
|
56
|
-
"react": "^19",
|
|
57
|
-
"react-
|
|
47
|
+
"react": "^19.2.4",
|
|
48
|
+
"react-dom": "^19.2.4",
|
|
49
|
+
"@form-instant/react-input-mapping": "workspace:*",
|
|
50
|
+
"typescript": "^5.9.3"
|
|
58
51
|
},
|
|
59
52
|
"engines": {
|
|
60
53
|
"node": ">=18",
|
|
61
|
-
"bun": ">=1.
|
|
54
|
+
"bun": ">=1.3.0"
|
|
62
55
|
},
|
|
63
56
|
"files": [
|
|
64
57
|
"dist"
|
|
65
|
-
],
|
|
66
|
-
"homepage": "https://leomerida15.github.io/form-instant-react-mapping",
|
|
67
|
-
"husky": {
|
|
68
|
-
"hooks": {
|
|
69
|
-
"pre-commit": "bun run lint"
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"keywords": [
|
|
73
|
-
"@form-instant",
|
|
74
|
-
"react",
|
|
75
|
-
"mapping",
|
|
76
|
-
"zod"
|
|
77
|
-
],
|
|
78
|
-
"license": "MIT",
|
|
79
|
-
"size-limit": [
|
|
80
|
-
{
|
|
81
|
-
"path": "dist/index.js",
|
|
82
|
-
"limit": "5 KB"
|
|
83
|
-
}
|
|
84
58
|
]
|
|
85
|
-
}
|
|
59
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 leomerida15
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { zodResolverProps } from '../types';
|
|
3
|
-
export declare const ZodResolverContext: import("react").Context<any>;
|
|
4
|
-
export declare const FormInstantProvider: FCC<{
|
|
5
|
-
schema: zodResolverProps;
|
|
6
|
-
}>;
|
|
7
|
-
/**
|
|
8
|
-
* Hook to get a specific field by name from the schema
|
|
9
|
-
*/
|
|
10
|
-
export declare const useFields: <Sc extends Record<string, any>>(key: keyof Sc) => any;
|
|
File without changes
|