relay-connections-deconstructor
v0.1.5
Published
A Relay connection (edges and nodes) deconstructor.
Downloads
3
Maintainers
Readme
Relay Connections Deconstructor
Description
Not all of us love the Relay spec but sometimes we need to wrestle with a third-party service that uses it. We find ourselves wrestling with edges and nodes and edges and nodes and edges and...
Welp, I wrote a quick little function to flatten out said edges and nodes and edges and nodes.
Installation
yarn add relay-connections-deconstructor
or
npm install relay-connections-deconstructor
Usage
import { relayDeconstructor } from 'relay-connections-deconstructor';
const responseFollowingRelaySpec = {
friends: {
totalCount: 3,
edges: [
{
node: {
name: 'Han Solo',
},
cursor: 'Y3Vyc29yMg==',
},
{
node: {
name: 'Leia Organa',
},
cursor: 'Y3Vyc29yMw==',
},
],
pageInfo: {
endCursor: 'Y3Vyc29yMw==',
hasNextPage: false,
},
},
planets: {
totalCount: 2,
edges: [
{ node: { name: 'Pluto' }, cursor: 'Y3Vyc29yMg==' },
{ node: { name: 'Mars' }, cursor: 'Y3Vyc29yMw==' },
],
},
};
const deconstructedObject = relayDeconstructor(responseFollowingRelaySpec);
console.log(deconstructedObject);
// 👇
// {
// friends: [
// {
// name: 'Han Solo',
// cursor: 'Y3Vyc29yMg==',
// },
// {
// name: 'Leia Organa',
// cursor: 'Y3Vyc29yMw==',
// },
// ],
// planets: [
// { cursor: 'Y3Vyc29yMg==', name: 'Pluto' },
// { cursor: 'Y3Vyc29yMw==', name: 'Mars' },
// ],
// };
const justTheFriends = relayDeconstructor(responseFollowingRelaySpec.friends);
console.log(justTheFriends);
// 👇
// [
// {
// name: 'Han Solo',
// cursor: 'Y3Vyc29yMg==',
// },
// {
// name: 'Leia Organa',
// cursor: 'Y3Vyc29yMw==',
// },
// ]