import { HasParsablePath } from "../has-parsable-path"; import { MarkRequired } from "../mark-required"; import { Paths } from "../paths"; import { Prettify } from "../prettify"; import { UnionToTuple } from "../union-to-tuple"; type RecursiveDeepMarkRequiredSinglePath = Type extends object ? KeyPath extends `${infer PropertyKey}.${infer RestKeyPath}` ? { [Key in keyof Type]: Key extends PropertyKey ? Prettify> : Type[Key]; } : Prettify> : Type; type RecursiveDeepMarkRequired = KeyPaths extends [ infer KeyPath, ...infer RestKeyPaths ] ? RestKeyPaths extends string[] ? RecursiveDeepMarkRequired, RestKeyPaths> : never : Accumulator; export type DeepMarkRequired> = HasParsablePath extends false ? Type : RecursiveDeepMarkRequired>; export {};