@jcoreio/zod-forms 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/FieldPath.js CHANGED
@@ -131,11 +131,8 @@ function subschema(schema, key) {
131
131
  case 'ZodEffects':
132
132
  {
133
133
  var _ref6 = schema,
134
- _ref6$_def = _ref6._def,
135
- type = _ref6$_def.effect.type,
136
- innerSchema = _ref6$_def.schema;
137
- if (type === 'refinement') return subschema(innerSchema, key);
138
- break;
134
+ innerSchema = _ref6._def.schema;
135
+ return subschema(innerSchema, key);
139
136
  }
140
137
  case 'ZodOptional':
141
138
  return subschema(schema.unwrap(), key);
@@ -148,7 +145,7 @@ function subschema(schema, key) {
148
145
  case 'ZodBranded':
149
146
  return subschema(schema._def.type, key);
150
147
  case 'ZodPipeline':
151
- return subschema(schema._def.out, key);
148
+ return subschema(schema._def["in"], key);
152
149
  }
153
150
  return undefined;
154
151
  }
package/FieldPath.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPath.js","names":["_zod","_interopRequireDefault","require","_pathstring","_parsePathstring","FieldPath","exports","_ref","schema","path","_classCallCheck2","_defineProperty2","pathstring","_createClass2","key","value","get","parsePathstring","Array","isArray","Error","concat","reduce","field","subfield","_this$subfields","cached","subfields","subschema","_toConsumableArray2","Map","set","root","_def","typeName","z","ZodFirstPartyTypeKind","ZodAny","element","_ref2","shape","_ref2$_def","unknownKeys","catchall","options","map","opt","filter","length","union","undefined","discUnion","discriminatedUnion","discriminator","_ref3","items","rest","_ref4","keySchema","valueSchema","safeParse","success","_ref5","_ref6","_ref6$_def","type","effect","innerSchema","unwrap","removeDefault","removeCatch","out"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') return catchall\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.discriminatedUnion(discUnion.discriminator, options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: {\n effect: { type },\n schema: innerSchema,\n },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n if (type === 'refinement') return subschema(innerSchema, key)\n break\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline':\n return subschema(\n (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.out,\n key\n )\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FieldPath.js","names":["_zod","_interopRequireDefault","require","_pathstring","_parsePathstring","FieldPath","exports","_ref","schema","path","_classCallCheck2","_defineProperty2","pathstring","_createClass2","key","value","get","parsePathstring","Array","isArray","Error","concat","reduce","field","subfield","_this$subfields","cached","subfields","subschema","_toConsumableArray2","Map","set","root","_def","typeName","z","ZodFirstPartyTypeKind","ZodAny","element","_ref2","shape","_ref2$_def","unknownKeys","catchall","options","map","opt","filter","length","union","undefined","discUnion","discriminatedUnion","discriminator","_ref3","items","rest","_ref4","keySchema","valueSchema","safeParse","success","_ref5","_ref6","innerSchema","unwrap","removeDefault","removeCatch","type"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') return catchall\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.discriminatedUnion(discUnion.discriminator, options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n return subschema(innerSchema, key)\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline':\n return subschema(\n (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.in,\n key\n )\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
package/FieldPath.mjs CHANGED
@@ -111,14 +111,10 @@ function subschema(schema, key) {
111
111
  {
112
112
  const {
113
113
  _def: {
114
- effect: {
115
- type
116
- },
117
114
  schema: innerSchema
118
115
  }
119
116
  } = schema;
120
- if (type === 'refinement') return subschema(innerSchema, key);
121
- break;
117
+ return subschema(innerSchema, key);
122
118
  }
123
119
  case 'ZodOptional':
124
120
  return subschema(schema.unwrap(), key);
@@ -131,7 +127,7 @@ function subschema(schema, key) {
131
127
  case 'ZodBranded':
132
128
  return subschema(schema._def.type, key);
133
129
  case 'ZodPipeline':
134
- return subschema(schema._def.out, key);
130
+ return subschema(schema._def.in, key);
135
131
  }
136
132
  return undefined;
137
133
  }
package/FieldPath.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"FieldPath.mjs","names":["z","pathstring","parsePathstring","FieldPath","path","schema","subfields","constructor","root","get","Array","isArray","Error","reduce","field","key","subfield","_this$subfields","cached","subschema","Map","set","_def","typeName","ZodFirstPartyTypeKind","ZodAny","element","shape","unknownKeys","catchall","options","map","opt","filter","length","union","undefined","discUnion","discriminatedUnion","discriminator","items","rest","keySchema","valueSchema","safeParse","success","effect","type","innerSchema","unwrap","removeDefault","removeCatch","out"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') return catchall\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.discriminatedUnion(discUnion.discriminator, options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: {\n effect: { type },\n schema: innerSchema,\n },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n if (type === 'refinement') return subschema(innerSchema, key)\n break\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline':\n return subschema(\n (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.out,\n key\n )\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FieldPath.mjs","names":["z","pathstring","parsePathstring","FieldPath","path","schema","subfields","constructor","root","get","Array","isArray","Error","reduce","field","key","subfield","_this$subfields","cached","subschema","Map","set","_def","typeName","ZodFirstPartyTypeKind","ZodAny","element","shape","unknownKeys","catchall","options","map","opt","filter","length","union","undefined","discUnion","discriminatedUnion","discriminator","items","rest","keySchema","valueSchema","safeParse","success","innerSchema","unwrap","removeDefault","removeCatch","type","in"],"sources":["src/FieldPath.ts"],"sourcesContent":["import z from 'zod'\nimport { pathstring } from './util/pathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\n\nexport type FieldPathForValue<Value, RawValue = any> = FieldPath<\n z.ZodType<Value, any, RawValue>\n>\nexport type FieldPathForRawValue<RawValue> = FieldPath<\n z.ZodType<any, any, RawValue>\n>\n\nexport class FieldPath<T extends z.ZodTypeAny = z.ZodTypeAny> {\n readonly path: BasePath\n readonly pathstring: string\n readonly schema: T\n\n private subfields: Map<SubpathKey<T>, FieldPath> | undefined\n\n private constructor({ schema, path }: { schema: T; path: BasePath }) {\n this.path = path\n this.schema = schema\n this.pathstring = pathstring(path)\n }\n\n static root<T extends z.ZodTypeAny>(schema: T) {\n return new FieldPath({ schema, path: [] })\n }\n\n get<Path extends PathInSchema<T>>(\n path: Path\n ): SchemaAt<T, Path> extends never ? never : FieldPath<SchemaAt<T, Path>>\n get<Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>\n get(path: any): FieldPath {\n if (typeof path === 'string') path = parsePathstring(path)\n if (!Array.isArray(path)) throw new Error(`invalid path: ${path}`)\n return path.reduce((field, key) => field.subfield(key), this)\n }\n\n subfield<K extends SubpathKey<T>>(key: K): FieldPath<SchemaAt<T, [K]>> {\n const cached = this.subfields?.get(key)\n if (cached) return cached as any\n const schema = subschema(this.schema, key)\n if (!schema) throw new Error(`invalid subschema key: ${key}`)\n const subfield = new FieldPath({\n path: [...this.path, key] as any,\n schema: schema as any,\n })\n if (this.subfields == null) this.subfields = new Map()\n this.subfields.set(key, subfield)\n return subfield\n }\n}\n\nexport type BasePath = (string | number)[]\n\nexport type SubpathKey<T extends z.ZodTypeAny> = 0 extends 1 & T\n ? any\n : 0 extends 1 & z.input<T>\n ? any\n : T extends z.ZodObject<infer Shape, infer UnknownKeys>\n ? UnknownKeys extends 'passthrough'\n ? string\n : keyof Shape\n : T extends z.ZodRecord<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodMap<infer Key, any>\n ? z.input<Key>\n : T extends z.ZodArray<any>\n ? number\n : T extends z.ZodTuple<any, any>\n ? number\n : T extends z.ZodLazy<infer U>\n ? SubpathKey<U>\n : T extends z.ZodUnion<infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodDiscriminatedUnion<any, infer Options>\n ? SubpathKey<Options[number]>\n : T extends z.ZodOptional<infer U>\n ? SubpathKey<U>\n : T extends z.ZodNullable<infer U>\n ? SubpathKey<U>\n : T extends z.ZodDefault<infer U>\n ? SubpathKey<U>\n : T extends z.ZodCatch<infer U>\n ? SubpathKey<U>\n : T extends z.ZodEffects<infer U, any>\n ? SubpathKey<U>\n : T extends z.ZodBranded<infer U, any>\n ? SubpathKey<U>\n : never\n\nexport type AllPaths<T extends z.ZodTypeAny> = SubpathKey<T> extends never\n ? []\n : [] | ValuesOf<SubpathKeyMap<T>>\n\ntype ValuesOf<O> = O[keyof O]\n\nexport type SubpathKeyMap<T extends z.ZodTypeAny> = {\n [K in SubpathKey<T>]: [K, ...AllPaths<SchemaAt<T, [K]>>]\n}\n\nfunction subschema(\n schema: z.ZodTypeAny,\n key: string\n): z.ZodTypeAny | undefined {\n switch (schema._def.typeName) {\n case z.ZodFirstPartyTypeKind.ZodAny:\n case 'ZodArray':\n if (typeof key === 'number') return (schema as z.ZodArray<any>).element\n break\n case 'ZodObject': {\n const {\n shape,\n _def: { unknownKeys, catchall },\n } = schema as z.AnyZodObject\n if (key in shape) return shape[key]\n if (unknownKeys === 'passthrough') return catchall\n break\n }\n case 'ZodUnion': {\n const options = (\n schema as z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>\n ).options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.union(options as any)\n : options.length === 1\n ? options[0]\n : undefined\n }\n case 'ZodDiscriminatedUnion': {\n const discUnion = schema as z.ZodDiscriminatedUnion<\n any,\n [z.AnyZodObject, ...z.AnyZodObject[]]\n >\n const options = discUnion.options\n .map((opt) => subschema(opt, key))\n .filter((opt): opt is z.ZodTypeAny => opt != null)\n return options.length > 1\n ? z.discriminatedUnion(discUnion.discriminator, options as any)\n : options.length === 1\n ? options[0]\n : undefined\n break\n }\n case 'ZodIntersection':\n break\n case 'ZodTuple': {\n const {\n items,\n _def: { rest },\n } = schema as z.ZodTuple<any, any>\n if (typeof key === 'number' && key > 0 && key < items.length) {\n return items[key]\n }\n if (rest) return rest\n break\n }\n case 'ZodRecord': {\n const { keySchema, valueSchema } = schema as z.ZodRecord<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodMap': {\n const { keySchema, valueSchema } = schema as z.ZodMap<\n z.ZodTypeAny,\n z.ZodTypeAny\n >\n if (keySchema.safeParse(key).success) return valueSchema\n break\n }\n case 'ZodLazy':\n return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)\n case 'ZodEffects': {\n const {\n _def: { schema: innerSchema },\n } = schema as z.ZodEffects<z.ZodTypeAny, any>\n return subschema(innerSchema, key)\n }\n case 'ZodOptional':\n return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)\n case 'ZodNullable':\n return subschema((schema as z.ZodNullable<z.ZodTypeAny>).unwrap(), key)\n case 'ZodDefault':\n return subschema(\n (schema as z.ZodDefault<z.ZodTypeAny>).removeDefault(),\n key\n )\n case 'ZodCatch':\n return subschema((schema as z.ZodCatch<z.ZodTypeAny>).removeCatch(), key)\n case 'ZodBranded':\n return subschema(\n (schema as z.ZodBranded<z.ZodTypeAny, any>)._def.type,\n key\n )\n case 'ZodPipeline':\n return subschema(\n (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.in,\n key\n )\n }\n return undefined\n}\n"],"mappings":"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","ignoreList":[]}
package/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  A more seamless way to build React forms from Zod schemas
4
4
 
5
- (not published yet)
6
-
7
5
  [![CircleCI](https://circleci.com/gh/jcoreio/zod-forms.svg?style=svg)](https://circleci.com/gh/jcoreio/zod-forms)
8
6
  [![Coverage Status](https://codecov.io/gh/jcoreio/zod-forms/branch/master/graph/badge.svg)](https://codecov.io/gh/jcoreio/zod-forms)
9
7
  [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
@@ -12,7 +10,7 @@ A more seamless way to build React forms from Zod schemas
12
10
 
13
11
  # Features
14
12
 
15
- - 100% typesafe paths, input and output types for deeply nested fields
13
+ - 100% typesafe - Fully typechecked paths, input and output types for deeply nested fields
16
14
  - Supports `z.string().optional()`, `z.string().nullable()`, `z.number()` etc in inputs out of the box
17
15
  - Interprets blank inputs as `undefined` or `null` by default, depending on what the field schema
18
16
  accepts
@@ -28,6 +26,7 @@ A more seamless way to build React forms from Zod schemas
28
26
 
29
27
  - Designed specifically for Zod and React only
30
28
  - Not currently focused on high performance/large form state like `final-form` or `react-hooks-form`
29
+ - No async validate outside of submit right now
31
30
 
32
31
  # Quickstart
33
32
 
@@ -62,14 +62,54 @@ export declare function createSelectFormStatus(): ((state: FormState<any>) => {
62
62
  resultsCount: () => number;
63
63
  resetResultsCount: () => void;
64
64
  } & {
65
- resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any) => boolean;
66
- memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any) => boolean) & {
65
+ resultFunc: (resultFuncArgs_0: boolean, resultFuncArgs_1: boolean) => boolean;
66
+ memoizedResultFunc: ((resultFuncArgs_0: boolean, resultFuncArgs_1: boolean) => boolean) & {
67
67
  clearCache: () => void;
68
68
  resultsCount: () => number;
69
69
  resetResultsCount: () => void;
70
70
  };
71
71
  lastResult: () => boolean;
72
- dependencies: [(state: FormState<any>) => any, (state: FormState<any>) => any];
72
+ dependencies: [((state: FormState<any>) => boolean) & {
73
+ clearCache: () => void;
74
+ resultsCount: () => number;
75
+ resetResultsCount: () => void;
76
+ } & {
77
+ resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any) => boolean;
78
+ memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any) => boolean) & {
79
+ clearCache: () => void;
80
+ resultsCount: () => number;
81
+ resetResultsCount: () => void;
82
+ };
83
+ lastResult: () => boolean;
84
+ dependencies: [(state: FormState<any>) => any, (state: FormState<any>) => any];
85
+ recomputations: () => number;
86
+ resetRecomputations: () => void;
87
+ dependencyRecomputations: () => number;
88
+ resetDependencyRecomputations: () => void;
89
+ } & {
90
+ argsMemoize: typeof import("reselect").weakMapMemoize;
91
+ memoize: typeof import("reselect").weakMapMemoize;
92
+ }, ((state: FormState<any>) => boolean) & {
93
+ clearCache: () => void;
94
+ resultsCount: () => number;
95
+ resetResultsCount: () => void;
96
+ } & {
97
+ resultFunc: (resultFuncArgs_0: any, resultFuncArgs_1: any) => boolean;
98
+ memoizedResultFunc: ((resultFuncArgs_0: any, resultFuncArgs_1: any) => boolean) & {
99
+ clearCache: () => void;
100
+ resultsCount: () => number;
101
+ resetResultsCount: () => void;
102
+ };
103
+ lastResult: () => boolean;
104
+ dependencies: [(state: FormState<any>) => unknown, (state: FormState<any>) => unknown];
105
+ recomputations: () => number;
106
+ resetRecomputations: () => void;
107
+ dependencyRecomputations: () => number;
108
+ resetDependencyRecomputations: () => void;
109
+ } & {
110
+ argsMemoize: typeof import("reselect").weakMapMemoize;
111
+ memoize: typeof import("reselect").weakMapMemoize;
112
+ }];
73
113
  recomputations: () => number;
74
114
  resetRecomputations: () => void;
75
115
  dependencyRecomputations: () => number;
@@ -1 +1 @@
1
- {"version":3,"file":"createSelectFormStatus.d.ts","sourceRoot":"","sources":["src/createSelectFormStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAErD,wBAAgB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA4BnB,SAAS,CAAC,GAAG,CAAC,sBAGd,SAAS,CAAC,GAAG,CAAC,sBAPJ,SAAS,CAAC,GAAG,CAAC,sBADnB,SAAS,CAAC,GAAG,CAAC,sBAGb,SAAS,CAAC,GAAG,CAAC,gCADb,SAAS,CAAC,GAAG,CAAC,sBAHf,SAAS,CAAC,GAAG,CAAC,oCAnBe,SAAS,CAAC,GAAG,CAAC,kBA0B/C,SAAS,CAAC,GAAG,CAAC;;;;;;;;;;;;+BAdrB,SAAS,CAAC,GAAG,CAAC,kBACd,SAAS,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;EAiB3B"}
1
+ {"version":3,"file":"createSelectFormStatus.d.ts","sourceRoot":"","sources":["src/createSelectFormStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAErD,wBAAgB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAwCnB,SAAS,CAAC,GAAG,CAAC,sBAGd,SAAS,CAAC,GAAG,CAAC,sBAPJ,SAAS,CAAC,GAAG,CAAC,sBADnB,SAAS,CAAC,GAAG,CAAC,sBAGb,SAAS,CAAC,GAAG,CAAC,gCADb,SAAS,CAAC,GAAG,CAAC,sBAHf,SAAS,CAAC,GAAG,CAAC,oCA/Be,SAAS,CAAC,GAAG,CAAC,kBAsC/C,SAAS,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;mCAxBjB,SAAS,CAAC,GAAG,CAAC,kBACd,SAAS,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;mCAMd,SAAS,CAAC,GAAG,CAAC,sBACd,SAAS,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;EAoB/B"}
@@ -17,11 +17,17 @@ function createSelectFormStatus() {
17
17
  }
18
18
  return lastValidationError = validationError;
19
19
  }
20
- var selectPristine = (0, _reselect.createSelector)([function (state) {
20
+ var selectPristine = (0, _reselect.createSelector)([(0, _reselect.createSelector)([function (state) {
21
21
  return state.values;
22
22
  }, function (state) {
23
23
  return state.initialValues;
24
- }], _fastDeepEqual["default"]);
24
+ }], _fastDeepEqual["default"]), (0, _reselect.createSelector)([function (state) {
25
+ return state.rawValues;
26
+ }, function (state) {
27
+ return state.rawInitialValues;
28
+ }], _fastDeepEqual["default"])], function (pristine, rawPristine) {
29
+ return pristine && rawPristine;
30
+ });
25
31
  return (0, _reselect.createStructuredSelector)({
26
32
  initialized: function initialized(state) {
27
33
  return state.initialized;
@@ -1 +1 @@
1
- {"version":3,"file":"createSelectFormStatus.js","names":["_reselect","require","_fastDeepEqual","_interopRequireDefault","createSelectFormStatus","lastValidationError","undefined","selectValidationError","_ref","_lastValidationError","validationError","isEqual","issues","selectPristine","createSelector","state","values","initialValues","createStructuredSelector","initialized","submitting","submitSucceeded","submitFailed","submitError","valid","invalid","pristine","dirty"],"sources":["src/createSelectFormStatus.ts"],"sourcesContent":["import { createSelector, createStructuredSelector } from 'reselect'\nimport { FormState } from './FormState'\nimport isEqual from 'fast-deep-equal'\n\nexport type SelectFormStatus = ReturnType<typeof createSelectFormStatus>\nexport type FormStatus = ReturnType<SelectFormStatus>\n\nexport function createSelectFormStatus() {\n let lastValidationError: FormState<any>['validationError'] = undefined\n\n function selectValidationError({ validationError }: FormState<any>) {\n if (\n validationError === lastValidationError ||\n isEqual(validationError?.issues, lastValidationError?.issues)\n ) {\n return lastValidationError\n }\n return (lastValidationError = validationError)\n }\n\n const selectPristine = createSelector(\n [\n (state: FormState<any>) => state.values,\n (state: FormState<any>) => state.initialValues,\n ],\n isEqual\n )\n\n return createStructuredSelector({\n initialized: (state: FormState<any>) => state.initialized,\n submitting: (state: FormState<any>) => state.submitting,\n submitSucceeded: (state: FormState<any>) => state.submitSucceeded,\n submitFailed: (state: FormState<any>) => state.submitFailed,\n submitError: (state: FormState<any>) => state.submitError,\n validationError: selectValidationError,\n valid: (state: FormState<any>) => selectValidationError(state) == null,\n invalid: (state: FormState<any>) => selectValidationError(state) != null,\n pristine: selectPristine,\n dirty: (state: FormState<any>) => !selectPristine(state),\n })\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AAKO,SAASG,sBAAsBA,CAAA,EAAG;EACvC,IAAIC,mBAAsD,GAAGC,SAAS;EAEtE,SAASC,qBAAqBA,CAAAC,IAAA,EAAsC;IAAA,IAAAC,oBAAA;IAAA,IAAnCC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IAC9C,IACEA,eAAe,KAAKL,mBAAmB,IACvC,IAAAM,yBAAO,EAACD,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEE,MAAM,GAAAH,oBAAA,GAAEJ,mBAAmB,cAAAI,oBAAA,uBAAnBA,oBAAA,CAAqBG,MAAM,CAAC,EAC7D;MACA,OAAOP,mBAAmB;IAC5B;IACA,OAAQA,mBAAmB,GAAGK,eAAe;EAC/C;EAEA,IAAMG,cAAc,GAAG,IAAAC,wBAAc,EACnC,CACE,UAACC,KAAqB;IAAA,OAAKA,KAAK,CAACC,MAAM;EAAA,GACvC,UAACD,KAAqB;IAAA,OAAKA,KAAK,CAACE,aAAa;EAAA,EAC/C,EACDN,yBACF,CAAC;EAED,OAAO,IAAAO,kCAAwB,EAAC;IAC9BC,WAAW,EAAE,SAAAA,YAACJ,KAAqB;MAAA,OAAKA,KAAK,CAACI,WAAW;IAAA;IACzDC,UAAU,EAAE,SAAAA,WAACL,KAAqB;MAAA,OAAKA,KAAK,CAACK,UAAU;IAAA;IACvDC,eAAe,EAAE,SAAAA,gBAACN,KAAqB;MAAA,OAAKA,KAAK,CAACM,eAAe;IAAA;IACjEC,YAAY,EAAE,SAAAA,aAACP,KAAqB;MAAA,OAAKA,KAAK,CAACO,YAAY;IAAA;IAC3DC,WAAW,EAAE,SAAAA,YAACR,KAAqB;MAAA,OAAKA,KAAK,CAACQ,WAAW;IAAA;IACzDb,eAAe,EAAEH,qBAAqB;IACtCiB,KAAK,EAAE,SAAAA,MAACT,KAAqB;MAAA,OAAKR,qBAAqB,CAACQ,KAAK,CAAC,IAAI,IAAI;IAAA;IACtEU,OAAO,EAAE,SAAAA,QAACV,KAAqB;MAAA,OAAKR,qBAAqB,CAACQ,KAAK,CAAC,IAAI,IAAI;IAAA;IACxEW,QAAQ,EAAEb,cAAc;IACxBc,KAAK,EAAE,SAAAA,MAACZ,KAAqB;MAAA,OAAK,CAACF,cAAc,CAACE,KAAK,CAAC;IAAA;EAC1D,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"createSelectFormStatus.js","names":["_reselect","require","_fastDeepEqual","_interopRequireDefault","createSelectFormStatus","lastValidationError","undefined","selectValidationError","_ref","_lastValidationError","validationError","isEqual","issues","selectPristine","createSelector","state","values","initialValues","rawValues","rawInitialValues","pristine","rawPristine","createStructuredSelector","initialized","submitting","submitSucceeded","submitFailed","submitError","valid","invalid","dirty"],"sources":["src/createSelectFormStatus.ts"],"sourcesContent":["import { createSelector, createStructuredSelector } from 'reselect'\nimport { FormState } from './FormState'\nimport isEqual from 'fast-deep-equal'\n\nexport type SelectFormStatus = ReturnType<typeof createSelectFormStatus>\nexport type FormStatus = ReturnType<SelectFormStatus>\n\nexport function createSelectFormStatus() {\n let lastValidationError: FormState<any>['validationError'] = undefined\n\n function selectValidationError({ validationError }: FormState<any>) {\n if (\n validationError === lastValidationError ||\n isEqual(validationError?.issues, lastValidationError?.issues)\n ) {\n return lastValidationError\n }\n return (lastValidationError = validationError)\n }\n\n const selectPristine = createSelector(\n [\n createSelector(\n [\n (state: FormState<any>) => state.values,\n (state: FormState<any>) => state.initialValues,\n ],\n isEqual\n ),\n createSelector(\n [\n (state: FormState<any>) => state.rawValues,\n (state: FormState<any>) => state.rawInitialValues,\n ],\n isEqual\n ),\n ],\n (pristine, rawPristine) => pristine && rawPristine\n )\n\n return createStructuredSelector({\n initialized: (state: FormState<any>) => state.initialized,\n submitting: (state: FormState<any>) => state.submitting,\n submitSucceeded: (state: FormState<any>) => state.submitSucceeded,\n submitFailed: (state: FormState<any>) => state.submitFailed,\n submitError: (state: FormState<any>) => state.submitError,\n validationError: selectValidationError,\n valid: (state: FormState<any>) => selectValidationError(state) == null,\n invalid: (state: FormState<any>) => selectValidationError(state) != null,\n pristine: selectPristine,\n dirty: (state: FormState<any>) => !selectPristine(state),\n })\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AAKO,SAASG,sBAAsBA,CAAA,EAAG;EACvC,IAAIC,mBAAsD,GAAGC,SAAS;EAEtE,SAASC,qBAAqBA,CAAAC,IAAA,EAAsC;IAAA,IAAAC,oBAAA;IAAA,IAAnCC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IAC9C,IACEA,eAAe,KAAKL,mBAAmB,IACvC,IAAAM,yBAAO,EAACD,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEE,MAAM,GAAAH,oBAAA,GAAEJ,mBAAmB,cAAAI,oBAAA,uBAAnBA,oBAAA,CAAqBG,MAAM,CAAC,EAC7D;MACA,OAAOP,mBAAmB;IAC5B;IACA,OAAQA,mBAAmB,GAAGK,eAAe;EAC/C;EAEA,IAAMG,cAAc,GAAG,IAAAC,wBAAc,EACnC,CACE,IAAAA,wBAAc,EACZ,CACE,UAACC,KAAqB;IAAA,OAAKA,KAAK,CAACC,MAAM;EAAA,GACvC,UAACD,KAAqB;IAAA,OAAKA,KAAK,CAACE,aAAa;EAAA,EAC/C,EACDN,yBACF,CAAC,EACD,IAAAG,wBAAc,EACZ,CACE,UAACC,KAAqB;IAAA,OAAKA,KAAK,CAACG,SAAS;EAAA,GAC1C,UAACH,KAAqB;IAAA,OAAKA,KAAK,CAACI,gBAAgB;EAAA,EAClD,EACDR,yBACF,CAAC,CACF,EACD,UAACS,QAAQ,EAAEC,WAAW;IAAA,OAAKD,QAAQ,IAAIC,WAAW;EAAA,CACpD,CAAC;EAED,OAAO,IAAAC,kCAAwB,EAAC;IAC9BC,WAAW,EAAE,SAAAA,YAACR,KAAqB;MAAA,OAAKA,KAAK,CAACQ,WAAW;IAAA;IACzDC,UAAU,EAAE,SAAAA,WAACT,KAAqB;MAAA,OAAKA,KAAK,CAACS,UAAU;IAAA;IACvDC,eAAe,EAAE,SAAAA,gBAACV,KAAqB;MAAA,OAAKA,KAAK,CAACU,eAAe;IAAA;IACjEC,YAAY,EAAE,SAAAA,aAACX,KAAqB;MAAA,OAAKA,KAAK,CAACW,YAAY;IAAA;IAC3DC,WAAW,EAAE,SAAAA,YAACZ,KAAqB;MAAA,OAAKA,KAAK,CAACY,WAAW;IAAA;IACzDjB,eAAe,EAAEH,qBAAqB;IACtCqB,KAAK,EAAE,SAAAA,MAACb,KAAqB;MAAA,OAAKR,qBAAqB,CAACQ,KAAK,CAAC,IAAI,IAAI;IAAA;IACtEc,OAAO,EAAE,SAAAA,QAACd,KAAqB;MAAA,OAAKR,qBAAqB,CAACQ,KAAK,CAAC,IAAI,IAAI;IAAA;IACxEK,QAAQ,EAAEP,cAAc;IACxBiB,KAAK,EAAE,SAAAA,MAACf,KAAqB;MAAA,OAAK,CAACF,cAAc,CAACE,KAAK,CAAC;IAAA;EAC1D,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -11,7 +11,7 @@ export function createSelectFormStatus() {
11
11
  }
12
12
  return lastValidationError = validationError;
13
13
  }
14
- const selectPristine = createSelector([state => state.values, state => state.initialValues], isEqual);
14
+ const selectPristine = createSelector([createSelector([state => state.values, state => state.initialValues], isEqual), createSelector([state => state.rawValues, state => state.rawInitialValues], isEqual)], (pristine, rawPristine) => pristine && rawPristine);
15
15
  return createStructuredSelector({
16
16
  initialized: state => state.initialized,
17
17
  submitting: state => state.submitting,
@@ -1 +1 @@
1
- {"version":3,"file":"createSelectFormStatus.mjs","names":["createSelector","createStructuredSelector","isEqual","createSelectFormStatus","lastValidationError","undefined","selectValidationError","validationError","_lastValidationError","issues","selectPristine","state","values","initialValues","initialized","submitting","submitSucceeded","submitFailed","submitError","valid","invalid","pristine","dirty"],"sources":["src/createSelectFormStatus.ts"],"sourcesContent":["import { createSelector, createStructuredSelector } from 'reselect'\nimport { FormState } from './FormState'\nimport isEqual from 'fast-deep-equal'\n\nexport type SelectFormStatus = ReturnType<typeof createSelectFormStatus>\nexport type FormStatus = ReturnType<SelectFormStatus>\n\nexport function createSelectFormStatus() {\n let lastValidationError: FormState<any>['validationError'] = undefined\n\n function selectValidationError({ validationError }: FormState<any>) {\n if (\n validationError === lastValidationError ||\n isEqual(validationError?.issues, lastValidationError?.issues)\n ) {\n return lastValidationError\n }\n return (lastValidationError = validationError)\n }\n\n const selectPristine = createSelector(\n [\n (state: FormState<any>) => state.values,\n (state: FormState<any>) => state.initialValues,\n ],\n isEqual\n )\n\n return createStructuredSelector({\n initialized: (state: FormState<any>) => state.initialized,\n submitting: (state: FormState<any>) => state.submitting,\n submitSucceeded: (state: FormState<any>) => state.submitSucceeded,\n submitFailed: (state: FormState<any>) => state.submitFailed,\n submitError: (state: FormState<any>) => state.submitError,\n validationError: selectValidationError,\n valid: (state: FormState<any>) => selectValidationError(state) == null,\n invalid: (state: FormState<any>) => selectValidationError(state) != null,\n pristine: selectPristine,\n dirty: (state: FormState<any>) => !selectPristine(state),\n })\n}\n"],"mappings":"AAAA,SAASA,cAAc,EAAEC,wBAAwB,QAAQ,UAAU;AAEnE,OAAOC,OAAO,MAAM,iBAAiB;AAKrC,OAAO,SAASC,sBAAsBA,CAAA,EAAG;EACvC,IAAIC,mBAAsD,GAAGC,SAAS;EAEtE,SAASC,qBAAqBA,CAAC;IAAEC;EAAgC,CAAC,EAAE;IAAA,IAAAC,oBAAA;IAClE,IACED,eAAe,KAAKH,mBAAmB,IACvCF,OAAO,CAACK,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEE,MAAM,GAAAD,oBAAA,GAAEJ,mBAAmB,cAAAI,oBAAA,uBAAnBA,oBAAA,CAAqBC,MAAM,CAAC,EAC7D;MACA,OAAOL,mBAAmB;IAC5B;IACA,OAAQA,mBAAmB,GAAGG,eAAe;EAC/C;EAEA,MAAMG,cAAc,GAAGV,cAAc,CACnC,CACGW,KAAqB,IAAKA,KAAK,CAACC,MAAM,EACtCD,KAAqB,IAAKA,KAAK,CAACE,aAAa,CAC/C,EACDX,OACF,CAAC;EAED,OAAOD,wBAAwB,CAAC;IAC9Ba,WAAW,EAAGH,KAAqB,IAAKA,KAAK,CAACG,WAAW;IACzDC,UAAU,EAAGJ,KAAqB,IAAKA,KAAK,CAACI,UAAU;IACvDC,eAAe,EAAGL,KAAqB,IAAKA,KAAK,CAACK,eAAe;IACjEC,YAAY,EAAGN,KAAqB,IAAKA,KAAK,CAACM,YAAY;IAC3DC,WAAW,EAAGP,KAAqB,IAAKA,KAAK,CAACO,WAAW;IACzDX,eAAe,EAAED,qBAAqB;IACtCa,KAAK,EAAGR,KAAqB,IAAKL,qBAAqB,CAACK,KAAK,CAAC,IAAI,IAAI;IACtES,OAAO,EAAGT,KAAqB,IAAKL,qBAAqB,CAACK,KAAK,CAAC,IAAI,IAAI;IACxEU,QAAQ,EAAEX,cAAc;IACxBY,KAAK,EAAGX,KAAqB,IAAK,CAACD,cAAc,CAACC,KAAK;EACzD,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"createSelectFormStatus.mjs","names":["createSelector","createStructuredSelector","isEqual","createSelectFormStatus","lastValidationError","undefined","selectValidationError","validationError","_lastValidationError","issues","selectPristine","state","values","initialValues","rawValues","rawInitialValues","pristine","rawPristine","initialized","submitting","submitSucceeded","submitFailed","submitError","valid","invalid","dirty"],"sources":["src/createSelectFormStatus.ts"],"sourcesContent":["import { createSelector, createStructuredSelector } from 'reselect'\nimport { FormState } from './FormState'\nimport isEqual from 'fast-deep-equal'\n\nexport type SelectFormStatus = ReturnType<typeof createSelectFormStatus>\nexport type FormStatus = ReturnType<SelectFormStatus>\n\nexport function createSelectFormStatus() {\n let lastValidationError: FormState<any>['validationError'] = undefined\n\n function selectValidationError({ validationError }: FormState<any>) {\n if (\n validationError === lastValidationError ||\n isEqual(validationError?.issues, lastValidationError?.issues)\n ) {\n return lastValidationError\n }\n return (lastValidationError = validationError)\n }\n\n const selectPristine = createSelector(\n [\n createSelector(\n [\n (state: FormState<any>) => state.values,\n (state: FormState<any>) => state.initialValues,\n ],\n isEqual\n ),\n createSelector(\n [\n (state: FormState<any>) => state.rawValues,\n (state: FormState<any>) => state.rawInitialValues,\n ],\n isEqual\n ),\n ],\n (pristine, rawPristine) => pristine && rawPristine\n )\n\n return createStructuredSelector({\n initialized: (state: FormState<any>) => state.initialized,\n submitting: (state: FormState<any>) => state.submitting,\n submitSucceeded: (state: FormState<any>) => state.submitSucceeded,\n submitFailed: (state: FormState<any>) => state.submitFailed,\n submitError: (state: FormState<any>) => state.submitError,\n validationError: selectValidationError,\n valid: (state: FormState<any>) => selectValidationError(state) == null,\n invalid: (state: FormState<any>) => selectValidationError(state) != null,\n pristine: selectPristine,\n dirty: (state: FormState<any>) => !selectPristine(state),\n })\n}\n"],"mappings":"AAAA,SAASA,cAAc,EAAEC,wBAAwB,QAAQ,UAAU;AAEnE,OAAOC,OAAO,MAAM,iBAAiB;AAKrC,OAAO,SAASC,sBAAsBA,CAAA,EAAG;EACvC,IAAIC,mBAAsD,GAAGC,SAAS;EAEtE,SAASC,qBAAqBA,CAAC;IAAEC;EAAgC,CAAC,EAAE;IAAA,IAAAC,oBAAA;IAClE,IACED,eAAe,KAAKH,mBAAmB,IACvCF,OAAO,CAACK,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEE,MAAM,GAAAD,oBAAA,GAAEJ,mBAAmB,cAAAI,oBAAA,uBAAnBA,oBAAA,CAAqBC,MAAM,CAAC,EAC7D;MACA,OAAOL,mBAAmB;IAC5B;IACA,OAAQA,mBAAmB,GAAGG,eAAe;EAC/C;EAEA,MAAMG,cAAc,GAAGV,cAAc,CACnC,CACEA,cAAc,CACZ,CACGW,KAAqB,IAAKA,KAAK,CAACC,MAAM,EACtCD,KAAqB,IAAKA,KAAK,CAACE,aAAa,CAC/C,EACDX,OACF,CAAC,EACDF,cAAc,CACZ,CACGW,KAAqB,IAAKA,KAAK,CAACG,SAAS,EACzCH,KAAqB,IAAKA,KAAK,CAACI,gBAAgB,CAClD,EACDb,OACF,CAAC,CACF,EACD,CAACc,QAAQ,EAAEC,WAAW,KAAKD,QAAQ,IAAIC,WACzC,CAAC;EAED,OAAOhB,wBAAwB,CAAC;IAC9BiB,WAAW,EAAGP,KAAqB,IAAKA,KAAK,CAACO,WAAW;IACzDC,UAAU,EAAGR,KAAqB,IAAKA,KAAK,CAACQ,UAAU;IACvDC,eAAe,EAAGT,KAAqB,IAAKA,KAAK,CAACS,eAAe;IACjEC,YAAY,EAAGV,KAAqB,IAAKA,KAAK,CAACU,YAAY;IAC3DC,WAAW,EAAGX,KAAqB,IAAKA,KAAK,CAACW,WAAW;IACzDf,eAAe,EAAED,qBAAqB;IACtCiB,KAAK,EAAGZ,KAAqB,IAAKL,qBAAqB,CAACK,KAAK,CAAC,IAAI,IAAI;IACtEa,OAAO,EAAGb,KAAqB,IAAKL,qBAAqB,CAACK,KAAK,CAAC,IAAI,IAAI;IACxEK,QAAQ,EAAEN,cAAc;IACxBe,KAAK,EAAGd,KAAqB,IAAK,CAACD,cAAc,CAACC,KAAK;EACzD,CAAC,CAAC;AACJ","ignoreList":[]}
package/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "peerDependencies": {
31
31
  "react": "^18.0.0"
32
32
  },
33
- "version": "1.1.0",
33
+ "version": "1.1.2",
34
34
  "sideEffects": false,
35
35
  "engines": {
36
36
  "node": ">=16"
package/src/FieldPath.ts CHANGED
@@ -181,13 +181,9 @@ function subschema(
181
181
  return subschema((schema as z.ZodLazy<z.ZodTypeAny>).schema, key)
182
182
  case 'ZodEffects': {
183
183
  const {
184
- _def: {
185
- effect: { type },
186
- schema: innerSchema,
187
- },
184
+ _def: { schema: innerSchema },
188
185
  } = schema as z.ZodEffects<z.ZodTypeAny, any>
189
- if (type === 'refinement') return subschema(innerSchema, key)
190
- break
186
+ return subschema(innerSchema, key)
191
187
  }
192
188
  case 'ZodOptional':
193
189
  return subschema((schema as z.ZodOptional<z.ZodTypeAny>).unwrap(), key)
@@ -207,7 +203,7 @@ function subschema(
207
203
  )
208
204
  case 'ZodPipeline':
209
205
  return subschema(
210
- (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.out,
206
+ (schema as z.ZodPipeline<z.ZodTypeAny, z.ZodTypeAny>)._def.in,
211
207
  key
212
208
  )
213
209
  }
@@ -20,10 +20,22 @@ export function createSelectFormStatus() {
20
20
 
21
21
  const selectPristine = createSelector(
22
22
  [
23
- (state: FormState<any>) => state.values,
24
- (state: FormState<any>) => state.initialValues,
23
+ createSelector(
24
+ [
25
+ (state: FormState<any>) => state.values,
26
+ (state: FormState<any>) => state.initialValues,
27
+ ],
28
+ isEqual
29
+ ),
30
+ createSelector(
31
+ [
32
+ (state: FormState<any>) => state.rawValues,
33
+ (state: FormState<any>) => state.rawInitialValues,
34
+ ],
35
+ isEqual
36
+ ),
25
37
  ],
26
- isEqual
38
+ (pristine, rawPristine) => pristine && rawPristine
27
39
  )
28
40
 
29
41
  return createStructuredSelector({
@@ -128,6 +128,7 @@ function useArrayFieldBase<Field extends FieldPath>(
128
128
  ...boundActions,
129
129
  visited: meta?.visited || false,
130
130
  touched: meta?.touched || submitFailed,
131
+ error,
131
132
  elements,
132
133
  dirty,
133
134
  pristine,
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.d.ts","sourceRoot":"","sources":["src/useArrayField.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAA;AACnB,OAAO,EAAY,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAGvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AASrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,SAAS,IAAI,WAAW,CACnE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACzB,SAAS,GAAG,EAAE,GACX,SAAS,GACP,UAAU,CACR,OAAO,kBAAkB,CACvB,OAAO,YAAY,GAAG;IACpB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,WAAW,EAAE,OAAO,WAAW,CAAA;IAC/B,OAAO,EAAE,OAAO,OAAO,CAAA;CACxB,CACF,CACF,GAAG;IACF,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB,GACH;IAAE,KAAK,EAAE,oBAAoB,CAAA;CAAE,CAAA;AAEnC,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;IACxD,CAAC,KAAK,SAAS,oBAAoB,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,EAC3D,KAAK,EAAE,KAAK,GACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAC5D,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC7B,CAAA;IACD,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,UAAU,GACf,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAC3E;AAsFD,wBAAgB,aAAa,CAAC,KAAK,SAAS,SAAS,EACnD,KAAK,EAAE,KAAK,GACX,kBAAkB,CAAC,KAAK,CAAC,CAAA;AAC5B,wBAAgB,aAAa,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,oDAAoD,CACrD,EACD,IAAI,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,EAClC,KAAK,EAAE,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAChE,wBAAgB,aAAa,CAC3B,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CACnC,CAAC,CAAC,QAAQ,EACV,oDAAoD,CACrD,EACD,UAAU,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,EAE9C,KAAK,EAAE,UAAU,GAChB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"useArrayField.d.ts","sourceRoot":"","sources":["src/useArrayField.ts"],"names":[],"mappings":"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"}
package/useArrayField.js CHANGED
@@ -83,6 +83,7 @@ function useArrayFieldBase(field) {
83
83
  return _objectSpread(_objectSpread({}, boundActions), {}, {
84
84
  visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
85
85
  touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
86
+ error: error,
86
87
  elements: elements,
87
88
  dirty: dirty,
88
89
  pristine: pristine,
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","rawValue","_ref2","rawValues","initialValue","_ref3","initialValues","_ref4","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<T> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<T> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useArrayField.js","names":["_FieldPath","require","_react","_interopRequireDefault","_useFormContext3","_bindActionsToField","_reselect","_get","_fastDeepEqual","_useFormSelector2","_reactRedux","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","useArrayFieldBase","field","_useFormContext","useFormContext","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","useFormSelector","untypedUseFormSelector","valuesSelector","React","useMemo","createSelector","createStructuredSelector","value","_ref","values","get","path","rawValue","_ref2","rawValues","initialValue","_ref3","initialValues","_ref4","dirty","isEqual","pristine","Array","isArray","pathstring","_useFormSelector","shallowEqual","error","state","meta","fieldMeta","submitFailed","boundActions","bindActionsToField","elements","_toConsumableArray2","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","_useFormContext2","root","FieldPath"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<T> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<T> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/useArrayField.mjs CHANGED
@@ -59,6 +59,7 @@ function useArrayFieldBase(field) {
59
59
  ...boundActions,
60
60
  visited: (meta === null || meta === void 0 ? void 0 : meta.visited) || false,
61
61
  touched: (meta === null || meta === void 0 ? void 0 : meta.touched) || submitFailed,
62
+ error,
62
63
  elements,
63
64
  dirty,
64
65
  pristine,
@@ -1 +1 @@
1
- {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","rawValue","rawValues","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<T> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<T> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useArrayField.mjs","names":["FieldPath","React","useFormContext","bindActionsToField","createSelector","createStructuredSelector","get","isEqual","useFormSelector","untypedUseFormSelector","shallowEqual","useArrayFieldBase","field","arrayActions","setValue","setRawValue","setMeta","selectFormValues","selectFieldErrorMap","valuesSelector","useMemo","value","values","path","rawValue","rawValues","initialValue","initialValues","dirty","pristine","length","Array","isArray","pathstring","error","state","meta","fieldMeta","submitFailed","boundActions","elements","keys","map","index","subfield","visited","touched","valid","invalid","Boolean","useArrayField","root"],"sources":["src/useArrayField.ts"],"sourcesContent":["import z from 'zod'\nimport { BasePath, FieldPath, FieldPathForRawValue } from './FieldPath'\nimport React from 'react'\nimport { useFormContext } from './useFormContext'\nimport { PathInSchema, PathstringInSchema } from './util/PathInSchema'\nimport { parsePathstring } from './util/parsePathstring'\nimport { SchemaAt } from './util/SchemaAt'\nimport { bindActionsToField } from './util/bindActionsToField'\nimport { arrayActions } from './actions/arrayActions'\nimport { createSelector, createStructuredSelector } from 'reselect'\nimport { get } from './util/get'\nimport isEqual from 'fast-deep-equal'\nimport {\n TypedUseFormSelector,\n useFormSelector as untypedUseFormSelector,\n} from './useFormSelector'\nimport { shallowEqual } from 'react-redux'\nimport { setValue } from './actions/setValue'\nimport { setRawValue } from './actions/setRawValue'\nimport { setMeta } from './actions/setMeta'\nimport { FieldMeta } from './FormState'\n\nexport type UseArrayFieldProps<Field extends FieldPath> = NonNullable<\n z.input<Field['schema']>\n> extends any[]\n ? FieldMeta &\n ReturnType<\n typeof bindActionsToField<\n typeof arrayActions & {\n setValue: typeof setValue\n setRawValue: typeof setRawValue\n setMeta: typeof setMeta\n }\n >\n > & {\n elements: FieldPath<SchemaAt<Field['schema'], [number]>>[]\n error?: string\n dirty: boolean\n pristine: boolean\n valid: boolean\n invalid: boolean\n }\n : { ERROR: 'not an array field' }\n\nexport interface TypedUseArrayField<T extends z.ZodTypeAny> {\n <Field extends FieldPathForRawValue<any[] | null | undefined>>(\n field: Field\n ): UseArrayFieldProps<Field>\n <Path extends PathInSchema<T>>(path: Path): UseArrayFieldProps<\n FieldPath<SchemaAt<T, Path>>\n >\n <Pathstring extends PathstringInSchema<T>>(\n path: Pathstring\n ): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\n}\n\nfunction useArrayFieldBase<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field> {\n type T = Field['schema']\n\n const {\n arrayActions,\n setValue,\n setRawValue,\n setMeta,\n selectFormValues,\n selectFieldErrorMap,\n } = useFormContext<T>()\n\n const useFormSelector = untypedUseFormSelector as TypedUseFormSelector<T>\n\n const valuesSelector = React.useMemo(\n () =>\n createSelector(\n [selectFormValues],\n createSelector(\n [\n createStructuredSelector({\n value: ({ values }) =>\n get(values, field.path) as z.output<T> | undefined,\n rawValue: ({ rawValues }) =>\n get(rawValues, field.path) as unknown,\n initialValue: ({ initialValues }) =>\n get(initialValues, field.path) as z.output<T> | undefined,\n }),\n ],\n ({ rawValue, value, initialValue }) => {\n const dirty = !isEqual(value, initialValue)\n const pristine = !dirty\n return {\n dirty,\n pristine,\n length: Array.isArray(rawValue) ? rawValue.length : 0,\n }\n }\n )\n ),\n [field.pathstring]\n )\n\n const { dirty, pristine, length } = useFormSelector(\n valuesSelector,\n shallowEqual\n )\n\n const error = useFormSelector(\n (state) => selectFieldErrorMap(state)[field.pathstring]\n )\n const meta = useFormSelector((state) => state.fieldMeta[field.pathstring])\n const submitFailed = useFormSelector((state) => state.submitFailed)\n\n const boundActions = React.useMemo(\n () =>\n bindActionsToField(\n { ...arrayActions, setValue, setRawValue, setMeta },\n field\n ),\n [field.pathstring]\n )\n const elements = React.useMemo(\n () => [...new Array(length).keys()].map((index) => field.subfield(index)),\n [length]\n )\n\n return React.useMemo(\n () => ({\n ...boundActions,\n visited: meta?.visited || false,\n touched: meta?.touched || submitFailed,\n error,\n elements,\n dirty,\n pristine,\n valid: !error,\n invalid: Boolean(error),\n }),\n [dirty, boundActions, elements, meta, submitFailed, error]\n ) as any\n}\n\nexport function useArrayField<Field extends FieldPath>(\n field: Field\n): UseArrayFieldProps<Field>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a path array'\n >,\n Path extends PathInSchema<T> = any\n>(field: Path): UseArrayFieldProps<FieldPath<SchemaAt<T, Path>>>\nexport function useArrayField<\n T extends z.ZodTypeAny = z.ZodBranded<\n z.ZodNever,\n 'cast to TypedUseArrayField<T> to pass a pathstring'\n >,\n Pathstring extends PathstringInSchema<T> = any\n>(\n field: Pathstring\n): UseArrayFieldProps<FieldPath<SchemaAt<T, parsePathstring<Pathstring>>>>\nexport function useArrayField<T extends z.ZodTypeAny>(\n field: FieldPath | BasePath | string\n): UseArrayFieldProps<any> | { ERROR: string } {\n const { root } = useFormContext<T>()\n return useArrayFieldBase(\n field instanceof FieldPath ? field : root.get(field as any)\n )\n}\n"],"mappings":"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","ignoreList":[]}