import type { IsAny, Prettify, Primitive, RemoveIndexSignature } from "@apollo/client/utilities/internal"; export type UnwrapFragmentRefs = true extends IsAny ? TData : TData extends any ? TData extends Primitive ? TData : string extends keyof TData ? TData : keyof TData extends never ? TData : TData extends { " $fragmentRefs"?: infer FragmentRefs; } ? UnwrapFragmentRefs | RemoveFragmentName[keyof NonNullable]>>>> : TData extends object ? { [K in keyof TData]: UnwrapFragmentRefs; } : TData : never; /** * ```ts * CombineIntersection< * | { foo: string } * | { __typename: "A"; a: string } * | { __typename: "B"; b1: number } * | { __typename: "B"; b2: string } * > => * | { foo: string } * | CombineByTypeName< * | { __typename: "A"; a: string } * | { __typename: "B"; b1: number } * | { __typename: "B"; b2: string } * > * ``` */ type CombineIntersection = Exclude | CombineByTypeName>; /** * ```ts * CombineByTypeName< * | { __typename: "A"; a: string } * | { __typename: "B"; b1: number } * | { __typename: "B"; b2: string } * > => * | CombineWithArrays< * | { __typename: "A"; a: string } * > * | CombineWithArrays< * | { __typename: "B"; b1: number } * | { __typename: "B"; b2: number } * > * ``` */ type CombineByTypeName = { [TypeName in NonNullable]: Prettify>>; }[NonNullable]; /** * ```ts * CombineByTypeName< * | { * __typename: "Person" | "Animatronic" | "CartoonCharacter"; * id: number; * name: string; * } * | { * __typename: "Person"; * birthdate: string; * } * | { * __typename: "Animatronic"; * manufacturer: string; * warrantyEndDate: string; * } * | { * __typename: "CartoonCharacter"; * animator: string; * voiceActor: string; * } * > * => * { * id: number; * name: string; * __typename: "Person"; * birthdate: string; * } | { * id: number; * name: string; * __typename: "Animatronic"; * manufacturer: string; * warrantyEndDate: string; * } | { * id: number; * name: string; * __typename: "CartoonCharacter"; * animator: string; * voiceActor: string; * } * ``` */ type ExtractByMatchingTypeNames = Union extends any ? TypeName extends NonNullable ? Omit & { [K in keyof Union as K extends "__typename" ? K : never]: TypeName; } : never : never; type MergeUnions = MergeUnionsAcc, never>; type DistributedRequiredExclude = T extends any ? Required extends Required ? Required extends Required ? never : T : T : T; type MergeUnionsAcc = [ Curr ] extends [never] ? Merged : MergeUnionsAcc, takeOneFromUnion>, [ Merged ] extends [never] ? Curr : MergeObjects>; type unionToIntersection = (T extends unknown ? (x: T) => unknown : never) extends ((x: infer U) => unknown) ? U : never; type takeOneFromUnion = unionToIntersection 0 : never> extends ((x: infer U) => 0) ? U : never; type MergeObjects = Prettify<{ [k in keyof T]: k extends keyof U ? [ NonNullable, NonNullable ] extends ([ infer TK extends object, infer UK extends object ]) ? TK extends unknown[] ? UK extends unknown[] ? CombineIntersection[] | Extract : T[k] : CombineIntersection | Extract : T[k] : T[k]; } & Pick>>; export type RemoveFragmentName = T extends any ? Omit : T; type Exact = (x: T) => T; export type ContainsFragmentsRefs = true extends (IsAny) ? false : TData extends object ? Exact extends Seen ? false : " $fragmentRefs" extends keyof RemoveIndexSignature ? true : ContainsFragmentsRefs> : false; export {}; //# sourceMappingURL=types.d.ts.map