groupby-typename
Version:
Type-safe and tested utility to easily group an array of GraphQL objects by their typename
20 lines (18 loc) • 641 B
JavaScript
//#region src/legacyGroupByTypename.ts
/**
* Replaces `Object.groupBy` with a legacy implementation for environments that don't support it.
*
* This is part of the new baseline for 2024 and currently implemented by all major browsers.
* TypeScript support requires 5.4 or later, and should target `ESNext` or upcoming `ES2024`.
* Node support requires Node 21 or later.
*/
function legacyGroupByTypename(objects) {
return objects.reduce((acc, object) => {
const key = object.__typename;
if (!acc[key]) acc[key] = [];
acc[key].push(object);
return acc;
}, {});
}
//#endregion
exports.legacyGroupByTypename = legacyGroupByTypename;