@jcoreio/zod-forms 1.1.2 → 1.1.3

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
@@ -94,7 +94,7 @@ function subschema(schema, key) {
94
94
  }).filter(function (opt) {
95
95
  return opt != null;
96
96
  });
97
- return _options.length > 1 ? _zod["default"].discriminatedUnion(discUnion.discriminator, _options) : _options.length === 1 ? _options[0] : undefined;
97
+ return _options.length > 1 ? _zod["default"].union(_options) : _options.length === 1 ? _options[0] : undefined;
98
98
  break;
99
99
  }
100
100
  case 'ZodIntersection':
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","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":[]}
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","_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.union(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
@@ -68,7 +68,7 @@ function subschema(schema, key) {
68
68
  {
69
69
  const discUnion = schema;
70
70
  const options = discUnion.options.map(opt => subschema(opt, key)).filter(opt => opt != null);
71
- return options.length > 1 ? z.discriminatedUnion(discUnion.discriminator, options) : options.length === 1 ? options[0] : undefined;
71
+ return options.length > 1 ? z.union(options) : options.length === 1 ? options[0] : undefined;
72
72
  break;
73
73
  }
74
74
  case 'ZodIntersection':
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","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":[]}
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","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.union(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/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "peerDependencies": {
31
31
  "react": "^18.0.0"
32
32
  },
33
- "version": "1.1.2",
33
+ "version": "1.1.3",
34
34
  "sideEffects": false,
35
35
  "engines": {
36
36
  "node": ">=16"
package/src/FieldPath.ts CHANGED
@@ -142,7 +142,7 @@ function subschema(
142
142
  .map((opt) => subschema(opt, key))
143
143
  .filter((opt): opt is z.ZodTypeAny => opt != null)
144
144
  return options.length > 1
145
- ? z.discriminatedUnion(discUnion.discriminator, options as any)
145
+ ? z.union(options as any)
146
146
  : options.length === 1
147
147
  ? options[0]
148
148
  : undefined