@jcoreio/zod-forms 1.1.1 → 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 +3 -6
- package/FieldPath.js.map +1 -1
- package/FieldPath.mjs +2 -6
- package/FieldPath.mjs.map +1 -1
- package/README.md +2 -3
- package/createSelectFormStatus.d.ts +43 -3
- package/createSelectFormStatus.d.ts.map +1 -1
- package/createSelectFormStatus.js +8 -2
- package/createSelectFormStatus.js.map +1 -1
- package/createSelectFormStatus.mjs +1 -1
- package/createSelectFormStatus.mjs.map +1 -1
- package/package.json +1 -1
- package/src/FieldPath.ts +3 -7
- package/src/createSelectFormStatus.ts +15 -3
package/FieldPath.js
CHANGED
|
@@ -131,11 +131,8 @@ function subschema(schema, key) {
|
|
|
131
131
|
case 'ZodEffects':
|
|
132
132
|
{
|
|
133
133
|
var _ref6 = schema,
|
|
134
|
-
|
|
135
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
[](https://circleci.com/gh/jcoreio/zod-forms)
|
|
8
6
|
[](https://codecov.io/gh/jcoreio/zod-forms)
|
|
9
7
|
[](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:
|
|
66
|
-
memoizedResultFunc: ((resultFuncArgs_0:
|
|
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>) =>
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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","
|
|
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","
|
|
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
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
|
-
|
|
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.
|
|
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
|
-
(
|
|
24
|
-
|
|
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
|
-
|
|
38
|
+
(pristine, rawPristine) => pristine && rawPristine
|
|
27
39
|
)
|
|
28
40
|
|
|
29
41
|
return createStructuredSelector({
|