UNPKG

groupby-typename

Version:

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

33 lines (31 loc) 910 B
import { legacyGroupByTypename } from "./legacyGroupByTypename.js"; //#region src/groupByTypename.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"; * // }[] * ``` */ function groupByTypename(objects) { if (!("groupBy" in Object)) return legacyGroupByTypename(objects); return Object.groupBy(objects, (object) => object.__typename); } //#endregion export { groupByTypename };