merge-resolver

1.1.9 • Public • Published

merge-resolver

CI npm package Update

merge nested objects with graphql-like resolvers

Install

{yarn, npm} add merge-resolver

Usage

    import { mergeResolver } from "merge-resolver";
 
    const thing1 = {
      __typename: "Query",
      blah: {
        __typename: "Blah",
        bazzez: [
          { __typename: "Baz", a: "b" },
          { __typename: "Baz", a: "c", d: "e" }
        ]
      }
    };
    const thing2 = {
      __typename: "Query",
      blah: {
        __typename: "Blah",
        bazzez: [{ __typename: "Baz", a: "c", d: "f" }]
      }
    };
 
    const merge = mergeResolver({
      Blah: {
        bazzez: (values, join) => {
          const valuesByKey = {};
          values.flat().forEach(val => {
            valuesByKey[val.a] = valuesByKey[val.a]
              ? join(val, valuesByKey[val.a])
              : val;
          });
          return Object.values(valuesByKey);
        }
      },
      Baz: {
        d: values => values.join("")
      },
      typeFromObj: obj => obj && obj.__typename
    });
 
    console.log(merge([thing1, thing2])));

Should print:

    {
      "__typename": "Query",
      "blah": {
        "__typename": "Blah",
        "bazzez": [
          { "__typename": "Baz", "a": "b" },
          { "__typename": "Baz", "a": "c", "d": "fe" }
        ]
      }
    }

License

MIT License

© Bryan Goldstein and Seth Jensen

Readme

Keywords

none

Package Sidebar

Install

npm i merge-resolver

Weekly Downloads

1

Version

1.1.9

License

MIT

Unpacked Size

17.8 kB

Total Files

12

Last publish

Collaborators

  • brysgo1