UNPKG

groupby-typename

Version:

Type-safe and tested utility to easily group an array of GraphQL objects by their typename

30 lines (28 loc) 908 B
import { GraphQLObject, GroupedGraphQLObjects } from "./types.js"; //#region src/groupByTypename.d.ts /** * Groups an array of GraphQL objects by their `__typename` property. * * Useful when getting nodes or a union of types from a GraphQL response. * * @example * ```ts * const data = [{ __typename: 'User' as const }, { __typename: 'Post' as const }]; * const grouped = groupByTypename(data); * // ^? const grouped: { * // User?: { * // __typename: "User"; * // }[]; * // Post?: { * // __typename: "Post"; * // }[]; * // } * const users = grouped.User; * // ^? const users: { * // __typename: "User"; * // }[] * ``` */ declare function groupByTypename<Objects extends readonly GraphQLObject[], Grouped = GroupedGraphQLObjects<Objects>>(objects: Objects): Grouped; //#endregion export { groupByTypename };