{"_id":"graphql-binding","_rev":"93-350c6c5046f3a754f0844b23884418b3","name":"graphql-binding","dist-tags":{"latest":"2.5.2","beta":"1.4.0-beta.33","alpha":"3.0.0-alpha.8"},"versions":{"0.1.0":{"name":"graphql-binding","version":"0.1.0","license":"MIT","repository":{"type":"git","url":"git@github.com:graphcool/graphql-binding.git"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"^8.5.2","ava":"^0.24.0","tslint":"^5.8.0","tslint-config-standard":"^7.0.0","typescript":"^2.6.1"},"dependencies":{"@types/graphql":"0.11.7","graphql":"^0.12.3","graphql-tools":"^2.14.1"},"_id":"graphql-binding@0.1.0","dist":{"shasum":"98e64f9ffdd4fdb245237c5969fe0975f2d91855","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.1.0.tgz","integrity":"sha512-3O0jP1kiDD6tqaDpjCrdj/1ESmiw+VqO/5X6Eay1w/09hicOyOY+T+0TheR9fys/WigvpN0+fI1OHuUhQU2FhA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3hrwWtJA6+YSDJM++B/R2WgEXxy3TdRruwVLYlgJaPQIhAL+Mw1wENx7tYL7IhTWRAcrrrHQajLlbtiTxXgKXgmM2"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.1.0.tgz_1513794852042_0.9567478045355529"},"directories":{}},"0.1.1":{"name":"graphql-binding","version":"0.1.1","license":"MIT","repository":{"type":"git","url":"git@github.com:graphcool/graphql-binding.git"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"^8.5.2","ava":"^0.24.0","tslint":"^5.8.0","tslint-config-standard":"^7.0.0","typescript":"^2.6.1"},"dependencies":{"@types/graphql":"0.11.7","apollo-link":"^1.0.7","graphql":"^0.12.3","graphql-tools":"^2.14.1"},"_id":"graphql-binding@0.1.1","dist":{"shasum":"e9a8fc0f4c26754638f1ca4400762a018540ba6f","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.1.1.tgz","integrity":"sha512-qb/pkG94yCNRnWpR2eYntq5mBJ4stPD3HpvToxbz4pkPMLU3buZua/AL1HCJaEqcHVjZJFT7cpxTOARX5oECUw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLSqLoCXLCkbVHuDuk67akYQDzvZU1b+Dbw5VAG1tksAIhAJJdyOVJvLUnWxPnXRX2YyxgIycQOiUnQ9Bx5hxA/inr"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.1.1.tgz_1513856748541_0.877688852371648"},"directories":{}},"0.2.0":{"name":"graphql-binding","version":"0.2.0","license":"MIT","repository":{"type":"git","url":"git@github.com:graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"^8.5.2","apollo-link":"^1.0.7","ava":"^0.24.0","tslint":"^5.8.0","tslint-config-standard":"^7.0.0","typescript":"^2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"^0.12.3","graphql-tools":"^2.14.1"},"_id":"graphql-binding@0.2.0","dist":{"shasum":"5964ed83cb3c30bc3750a08b848c4cac3600b9dd","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.2.0.tgz","integrity":"sha512-WasFS+dgebcsXh2xqsYnoQYWwZqDTscrHBD4KVjKwEmDn3QWdgKs9uDdQu1ZzzPdLqqNMS60P4LBEd+92qMPoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD829j0fiIcA6GS6kA2o3E1do1Tynvw98m4VvzNgxWAygIhAMsx8OMNVB+TSyLEpDzfa7ZAnej4FdwcdWwePiV8pvC2"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.2.0.tgz_1514030528776_0.42127640172839165"},"directories":{}},"0.2.1":{"name":"graphql-binding","version":"0.2.1","license":"MIT","repository":{"type":"git","url":"git@github.com:graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"^8.5.2","apollo-link":"^1.0.7","ava":"^0.24.0","tslint":"^5.8.0","tslint-config-standard":"^7.0.0","typescript":"^2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"^0.12.3","graphql-tools":"^2.14.1"},"_id":"graphql-binding@0.2.1","dist":{"shasum":"171c78fe2cf893359f62fed14901f70e3f235420","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.2.1.tgz","integrity":"sha512-krZrGwEwAlUjIuyqIFwIqxtiytVdx6j/vIfCPuwhRMICVUWTitPQcKKzJBKTZflVT32iVO0xncnfTEvKvOQTAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNeGHKJz1p67R20pRDyg9NmHurs0zcG6Y8ljQwnqRn9wIgJLOHmxnEr0R9UeuQ+A45JAzXXRCwPV9GZcUQ73aS2hg="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.2.1.tgz_1514477965246_0.045196545543149114"},"directories":{}},"0.3.0":{"name":"graphql-binding","version":"0.3.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"8.5.2","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.8.0","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"0.12.3","graphql-tools":"2.16.0","iterall":"^1.1.3"},"gitHead":"22b316e977a068f7be189c62c388975556efd809","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@0.3.0","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-3798Np8eOiW3dxdNS5OvRyMZMk9WiorhYO5LGoa6KRAlZ75mVdfMo1/FhxHVeVUk3o6ZF0wQ64FqbpXi4/D6fg==","shasum":"185806e7c29a7b0e9b2d90df3c17a0a835596e62","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDil0kTn09Nnp8NVC5lje9nWb8JyBgypHYuhQSdmkggoAIgfi/bPiw7CoBu5XT625gyreRhyPeGciS62pUS6no43tE="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.3.0.tgz_1514986962216_0.9030975170899183"},"directories":{}},"0.3.1":{"name":"graphql-binding","version":"0.3.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"8.5.2","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.8.0","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"0.12.3","graphql-tools":"2.16.0","iterall":"^1.1.3"},"gitHead":"eb0f14e37e404911b6115ca965382d553f262a20","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@0.3.1","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-iYMaA0eMmi23emBlPFpo8mjrAq2OwM02f63L8wGpR8ut74ytP4jnbioMFsVTAJLzuUVZda53szUa4tklBA+IzQ==","shasum":"782a8c61efb8536d1f1ca328aa6b4a42ed52a218","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.3.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFEJnv3IfP1ZE80lx42EaTYmtNc8FDdUOr/18l6qj888AiAOTTS3xG287+eJjOUuUS5l1HPDB70oKrh5XkyTXYBhKA=="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.3.1.tgz_1515002685073_0.18729988182894886"},"directories":{}},"0.3.2":{"name":"graphql-binding","version":"0.3.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"8.5.2","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.8.0","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"0.12.3","graphql-tools":"2.16.0","iterall":"^1.1.3"},"gitHead":"69ff01cfcac077317d5dad2db05a3efbf44f85c9","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@0.3.2","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-m/VG98El/YQgZYCqD5zbA0nXltv7e5CF/lNpjTm5dyO0k1kMAXUSvXz1mcuK6s303bclo15g/P92mW/uJvgOMg==","shasum":"abea0ee2f9b7070234be9264303a6669bcec6b16","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.3.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQClNVr+zjRL0/v+5JbysekFLc1226NHlgK2aYrVpb9ZEQIhAIbO19/c4vkaflRkHNmrm21apMT6PlbFkXFJ+ca7a5jb"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.3.2.tgz_1515002769334_0.04297058307565749"},"directories":{}},"0.4.0":{"name":"graphql-binding","version":"0.4.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"8.5.5","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.8.0","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"0.12.3","graphql-tools":"2.16.0","iterall":"^1.1.3"},"gitHead":"7bd5fcc48c29d703fa358edf49905f4ff2af43e2","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@0.4.0","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-252A/lYB4n9OQMYgkCUow9q3qnacmHAZbB9vra0ORzY96uuYd7KhdJxjwbo/oWh5Jv9EO/5A5iYU82uWMQrtig==","shasum":"3b8c9e22ffc0b34cb0dc40e80a70df49dbd94057","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.4.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvCLR8mda9+fZjYlsaLDO8067psOqoAu7VcrgZGjyrWQIhAIP2AqJVrUHlZuQcwESfyr/ZRJczk1891wWPstXuqyW+"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.4.0.tgz_1515037044366_0.39054880011826754"},"directories":{}},"0.5.0":{"name":"graphql-binding","version":"0.5.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/node":"8.5.5","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.8.0","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"@types/graphql":"0.11.7","graphql":"0.12.3","graphql-tools":"2.16.0","iterall":"^1.1.3"},"gitHead":"d870ad6a720ed5031c1b70de8221d60f41a9857f","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@0.5.0","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-werpTnhf0/tGYFmmI5tpnaSl2jHPbUF6HlCHozfBUSSdDIUBcLXg//eIkPchJpF9aU44Tb/vOVYpHHaPZsNlwQ==","shasum":"2ec068197ca003ea19024f9e617e053fc3afaffa","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-0.5.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGTv8pGkSWDnTDu7FI85wlbaDXoWfY4Cxi4mlAjtudICAiBkIo12VyF3pQFlF44GhiOwtnYrJUCyWS/KDsxWyuUUGA=="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-0.5.0.tgz_1515071343244_0.5174053704831749"},"directories":{}},"1.0.0":{"name":"graphql-binding","version":"1.0.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.11.8","@types/node":"9.3.0","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"graphql":"0.12.3","graphql-tools":"2.18.0","iterall":"1.1.3"},"gitHead":"9dddd6fba6141afa0505ed8330041cb22de5c741","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-8GYWteZ+kTQXus3JkNnV9vGcXH6S98C/ieDDMMuXbF7q6AnOiAIqB99nfPfEve9z3PGmFRrJnqGfH8lmr7AY0Q==","shasum":"ffcc2373064f94c6e2335c3ddcd0f6890ffd5e08","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDd9ko76tUC9ZgYpvBtZN3O96pkiJ90/nmjBmmFBAKQKAiAPMSJFw1fkBk7tpQ6aMyh6QLukxD8XprVGeweP4tQSyQ=="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-1.0.0.tgz_1515760050483_0.1763232033699751"},"directories":{}},"1.1.0":{"name":"graphql-binding","version":"1.1.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.11.8","@types/node":"9.3.0","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"graphql":"0.12.3","graphql-tools":"2.18.0","iterall":"1.1.3"},"gitHead":"1b8f8efd86aa3eab02cdb71034508eb06a07d9cc","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-Vmz39kYO38q6IfmnBekfJi+t+/lqtvmFPZox4INC/MOEqzdvdlAUaKJVWfmAIQEUaQQ4JifEaRTBLVDxzVA+cw==","shasum":"7493c0470d7d45e90f0cf73f1b5adacd7af7206f","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHjZKnS6vXldJkb8xLRQwjkAbAIWfx0woaj8co/FZDzrAiEA58WiTrxKBEMz6ahBC2ap4NSr/24mnl2DmwlA9+8mvYI="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-1.1.0.tgz_1515760932668_0.007153429323807359"},"directories":{}},"1.2.0":{"name":"graphql-binding","version":"1.2.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.11.8","@types/node":"9.3.0","apollo-link":"1.0.7","ava":"0.24.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.6.2"},"dependencies":{"graphql":"0.12.3","graphql-tools":"2.18.0","iterall":"1.1.3"},"gitHead":"aa4c058c4614c7bfe2d16b2497198fb6d5de1918","description":"[![CircleCI](https://circleci.com/gh/graphcool/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphcool/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.2.0","_npmVersion":"5.6.0","_nodeVersion":"9.4.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-6aL45KI05RbbXJY1Qh0QveEq3QUhhZZZbxwgcxxwjfdhd0vPBC0itYlZBqUyN2vsOGyP8GhuRT6I43cv4sS9yQ==","shasum":"0876318735fb469631586d7721a2189eff7a8532","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.2.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCIE9udf5bmclRaUvRvIADHti7BgBkIl63mRb5B+FkAWZSAh9E79/Mk2ml41d8NsEm7yH3/zNuwylVDCt3Uungb9FV"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding-1.2.0.tgz_1515761732802_0.22989104432053864"},"directories":{}},"1.2.1":{"name":"graphql-binding","version":"1.2.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.4","@types/node":"9.4.6","apollo-link":"1.1.0","ava":"0.25.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","graphql":"0.13.0","typescript":"2.7.1"},"dependencies":{"graphql-tools":"2.21.0","iterall":"1.1.4"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"32ec4259223889d0d6be2cf6602062fbd4606704","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.2.1","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-XZAsXbLfX1IzJYrKCiCsSCBH2oY3BykUUIHKFUrAXGo7yMCQOLlujFwCwAAOas//lxxeHXbZuJLVzGyRrgb1sg==","shasum":"60195fa62560a739727735eb42e37d3784080d27","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.2.1.tgz","fileCount":29,"unpackedSize":55667,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmqjAmyvBUn/nSJ6xb3docj3L4KmWcXa527XKSmpL6/wIhAImn2xJKx/qRpzA6CuSPzMwu3q+5L17I9c/hYCnt26re"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.2.1_1518605227524_0.9079126828469899"},"_hasShrinkwrap":false},"1.2.2":{"name":"graphql-binding","version":"1.2.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.4","@types/node":"9.4.6","apollo-link":"1.1.0","ava":"0.25.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","graphql":"0.13.1","typescript":"2.7.2"},"dependencies":{"graphql-tools":"2.21.0","iterall":"1.2.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"bc7ae346323130b822db1021cb738398058f6af8","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.2.2","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-1qUzbuhzLyubYhnMGVEn32O9Um97pxhInsRhBazUY76yV1nKjiDcfMqdck1bzOWozkYQoAuHTQbU1Rk78paO2A==","shasum":"81a0439c3e951333d0cebde1887f418297a9193e","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.2.2.tgz","fileCount":29,"unpackedSize":55667,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcB1F3ky1KMu0PtnpaeJkeJASePpLPDXIKCIG/elIU3QIhAOvfP4yymiBcSWLSftnyeEjlvZxbd+dto63RKvt5o0jQ"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.2.2_1518787251069_0.7246206742198782"},"_hasShrinkwrap":false},"1.2.3":{"name":"graphql-binding","version":"1.2.3","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.4","@types/node":"9.4.6","apollo-link":"1.2.0","ava":"0.25.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","graphql":"0.13.1","typescript":"2.7.2"},"dependencies":{"graphql-tools":"2.21.0","iterall":"1.2.1"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"7902171ff78289253cd55339c6121b100fc8709c","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.2.3","_npmVersion":"5.6.0","_nodeVersion":"9.5.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-XPZTz48k9B9f7LquvuQvxPqLs55bimK4zdbYkoWNK0nd/AWo4nSjeIIKRm8nM88ie4BehAS+wIdmzkjRPFsklQ==","shasum":"36c90649e652b59cf44f89e997ad96767cff6cb8","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.2.3.tgz","fileCount":29,"unpackedSize":55667,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+ee7liNhQXOWdvznJN4/CaavBVlw7d0TLGDzw98i1wQIhALk751SxVJJ2LdGqh/6wCCbkeAv2HiI0dAtQnBwa+3TK"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.2.3_1519203610210_0.3101997362019633"},"_hasShrinkwrap":false},"1.2.4":{"name":"graphql-binding","version":"1.2.4","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.4","@types/node":"9.4.6","apollo-link":"1.2.1","ava":"0.25.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","graphql":"0.13.1","typescript":"2.7.2"},"dependencies":{"graphql-tools":"2.21.0","iterall":"1.2.1"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"5c174410a9a176c8e75ca6fc7321c87e980c9ee1","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.2.4","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-pOMDPfupSN42GnCG6VO7kJqP+QnWESI/Tjngm7eGNW3pI5Up9maVZ3UP0Ktnjwn54qjni4LxQmuxQmmyvSc8oA==","shasum":"ac1af63d98fca412dcd52ca04928cab2d6d08e0a","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.2.4.tgz","fileCount":29,"unpackedSize":55673,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiijwZiLqeZiogwdbEFB6+/vLfJq0TuU4/5kOB7mi3OgIgOd18kSdqiAyfueG+PIJz4oAnQPj3HZ3OkPNlS+hl3ZM="}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.2.4_1519727272969_0.2242305700320022"},"_hasShrinkwrap":false},"1.2.5":{"name":"graphql-binding","version":"1.2.5","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.4","@types/node":"9.4.6","apollo-link":"1.2.1","ava":"0.25.0","tslint":"5.9.1","tslint-config-standard":"7.0.0","graphql":"0.13.1","typescript":"2.7.2"},"dependencies":{"graphql-tools":"2.21.0","iterall":"1.2.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"907774878dc499960430df4eba4d78631d17e800","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.2.5","_npmVersion":"5.6.0","_nodeVersion":"9.6.1","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-BjT3L7IoWHx97hY9a2PkWB6UcahZcX4lN6FEyk7Vk87IG2HzaGzrj8Q2hfQ/WyL9ztyvU7Y1uB4zTBIKzLOuUg==","shasum":"1c45b9da055cb0722f0348b6354be2e11b0a8c17","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.2.5.tgz","fileCount":29,"unpackedSize":55673,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnCSOnmne4C/2hg2yu/k/fW/YRbXJftOVhWSOgT0tOJgIhAO/XORxhwrqzQfyVe9xOAKU0yEsKmcED4unpsDFD/eWH"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.2.5_1519809440996_0.9914184693347012"},"_hasShrinkwrap":false},"1.3.0":{"name":"graphql-binding","version":"1.3.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.7","@types/node":"9.4.6","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.7.2"},"dependencies":{"graphql-tools":"2.21.0","iterall":"1.2.2","object-path-immutable":"^1.0.1"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"bcafed5a4f908d529707c6bcc79f3e5146b4a09d","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.3.0","_npmVersion":"5.6.0","_nodeVersion":"9.11.1","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-QWZR0JB/gL6v1q+A16GAOZfQ4khc+K8bJVgKk77PoThUzKVReKBlKnA7+ZececGdgxEzk/C1Uj/D+jHN7q7NXg==","shasum":"6149e151bddc7f0b00cc38e787da39c7f1268d23","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.3.0.tgz","fileCount":30,"unpackedSize":74320,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRoHMNAMctSDYdvV5Iyz+hlPdaWmmIpQc09OVUs7UIMwIhAObFrnnSGG/jYIQQznCOj93yJGfCljcEeeRbKdHTE1qg"}]},"maintainers":[{"name":"schickling","email":"schickling.j@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.3.0_1523352023558_0.7830474625170658"},"_hasShrinkwrap":false},"1.4.0-beta.1":{"name":"graphql-binding","version":"1.4.0-beta.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.7","@types/node":"9.4.6","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.7.2"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"2.21.0","iterall":"1.2.2","object-path-immutable":"^1.0.1"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"b33a73ec18c0ac0e70cf1a7aa497d3f54dd4c3cd","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-l9Ct+kJyZqtumXyp0lxtyv62nUYxb98rZgRvGB2cEuE65qkp/MpOst+XL+zS1QrD3XRwG1X43Q6K7ldAqYGVuQ==","shasum":"7c7ba01e7fc08fd4e56089264a4dda89c2c94a71","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.1.tgz","fileCount":30,"unpackedSize":80011,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSqboOjaPzgqepeNDca3r+ooLkkbCcgoS/j+cbYm4ckAiBjvGNFdaeR4GZ26PZAP/VCwDKFjCs/BgzMybt40C/3XQ=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.1_1523607492317_0.02253859533068492"},"_hasShrinkwrap":false},"1.3.1":{"name":"graphql-binding","version":"1.3.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"}],"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.12.7","@types/node":"9.4.6","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.7.2"},"dependencies":{"graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"64ecf1099ce35317f476c9b00f12789caf67a3a5","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.3.1","_npmVersion":"5.6.0","_nodeVersion":"10.0.0","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-FdIJ7BwXlUNvnSJg0fPQ3ZAM8jfZSYgU2sgwUaS6qITaaWZxOnTfp3HkgIvQA+kEjzWeFE9VIwKmEI9vfHtUmQ==","shasum":"ce415fb068042422e8a980df0cdb0f5106f5fb47","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.3.1.tgz","fileCount":30,"unpackedSize":74319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa5yUiCRA9TVsSAnZWagAAdH4P+wdveoUUlNJE4WBlEwKU\n5/XVzfUyFxE6dHxToLf/qjZyoDhl6wgWj5+H2rwrQQ/lqDqGTojTjSwN3oRW\nt1JNh9ylODhyEEDDynX1Wli9gjo61VsWBubqXaYFpaZWB6/NHyEVg32Iewq/\nnJbycm7+GzitnDbDfKDwGm5dGHKYcoXfDZN9NrEhSdL2ODGOIKT+euZWS/T8\nwwzavcckwzeTHb/IW5GI2/Sv/Xtxll7ARaWvget9wC/aexoz9TuRNe9e4ijW\nXEB/M0usP7AjnqWA1Dl7GlbNv21wH6Q9O87JwjJhUtHKRAhqIKsgNHI5O8hA\nFIth1f5RQsg6nWr0m7jzUj45q/oP0wxdzbdHn/eWvHx7qHsKxzW209rpq/5s\nGZns+TEl6lW8hWg6FbT2eoP19fJMoeIpJVgX66CIupHYfK+2B+Cx4shgD6QV\nigKFWKQIvLDni8trjMXbuE+o6e7nVRe0h8pp/jRkcfktfcVlX+JnUO4uiaqA\nG22sRuYQ5vkcAPLP1fH7gRTShng5t36/jdtzel/unKJazAzJU/tgTobgAstH\nG5JL/vRkkOfEaoFCq6C3zTpP7xhMM00VzFurFgCI9QNblL1lb3nbEUotJ43c\nNSRwY9rCTP6hRsqnzR2lmbF+U//ON8eBv+LGxILfRuE8forqA7Yg81APgqkS\n8eo8\r\n=TM8A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpM43VKW/BCDSkyMGO+voUxg7qQgFgEfG/+W+arUcfvQIhANfvFu/YYeJIZ9189JF8KO6BwV9jBOEHVnXXJ8L1bhqN"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.3.1_1525097761546_0.49292739543246666"},"_hasShrinkwrap":false},"1.4.0-beta.2":{"name":"graphql-binding","version":"1.4.0-beta.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"adaac1e74b85fca72f65a93af2752894c1532e20","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-tRqlFKDzqn4YAwpl8C4Jj5kSb9GVatS8BimjC0zdM5mH5HjXuJ9nC2hNidrTqJEzvkamH+s9L6ZQOkMmDo2MeQ==","shasum":"c5f7593611d27b4c87966cf95a6885665fd01652","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.2.tgz","fileCount":54,"unpackedSize":112929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6dtpCRA9TVsSAnZWagAABocQAIpq867bYy1NFCEhO5Rd\nvpbEfWCyz585aBtPc4OpCg7UdKJsYBl40E0HG9rx2wVBY4e4OpbNaSwq0pHJ\nZSGf7Q3jc95MHbUpqh3+B1TVKd7nY154dOyy/fGmePOmhVCfw/+4KEokEoDA\nguJdTlM5knAxapwz7bqNGpKZ8hR5PdK0GDGZklVq0HG4MJAWxSZRS/676/s2\n9DrT/lgoyfTYRt3lIdt4xoeGykBN/BlnSUzhvtKF6Ix2BtbILezCbPkSEFpC\nPRoySK103LH0Mgs9QyTZWqM16Y1r5lR6rpa4DG20w7nx+F5CaRPwoDwtJKju\n4HveACrNDsFXcFyC8i+Pk/1OXD8xUsyhrb3eQAJzDo7oMFQ5c2p/JL07x61D\n2rnDsF5Xf9rN5CqZGnFYkrGbk0lKsMfxyCyWv2ALM0d3RQp7a5dHwTUGAKPW\nFgnatNxHMq532sFq7l2EGslD8+87V3jJY6uxpElaYW9TAdx2OVseuHm4VSRj\nT9AsbpmfbcmT8pbUvPMr/ClngIjO80lKcPjQpkNA5G+4j0OLZ3j7j+X98Wup\nFOlO/KJ4bZxGO4pfC/1o3WSxmkcguGKO6hdRNld4clXxasbSs7g7Wrfj3wOZ\nC9kRZ860Mkk3j0AmLvT7ZM2Lj83plKmmW1X7FJ5p5TpVmJAxhQip8X2Ov7y5\nu7z3\r\n=d6vn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdmz8LDtosAyJI2n4pguisUxHI//7MjPpiptCsbzCjoAiEAxqAyDupRLxwgx4DVqA4KYCPHlT4qI86OXPuGjjAYxlw="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.2_1525275496847_0.8602391594639271"},"_hasShrinkwrap":false},"1.4.0-beta.3":{"name":"graphql-binding","version":"1.4.0-beta.3","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"adaac1e74b85fca72f65a93af2752894c1532e20","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.3","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-j204cM/wtYPiZWG3x2ROHTtzxumkD3nhHDgmODws1PCj3HBvJ6nl3PtdXg7b4o+tzHgoNrim0SYYdAmgxRiFVA==","shasum":"30d7f98674a42d78f9916f6cf2f1318ba2c4764b","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.3.tgz","fileCount":54,"unpackedSize":112710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6d2lCRA9TVsSAnZWagAAEQoP/R85pJYHnep2ccuZsUem\nHKEDF3S923jNIDknG/dJQbEFc677NvDyGwfCvGmlASa+94tJ+HP8JcZRryN2\nxiKHud1nw45R/6Wf0Q7UbheQF0MnP9ThrUuJYsukhPPHtboYIHAam0VI9ZcI\nMep0tfbkPVjkwr9WB8l/Ypd53tvqLeFJYxPfnNq47Cx/YXLOyL/u+PsrhE45\nD0jgSuY7cL15JfaQf03nfjSSsNEDbiV1+YR0Qh6LsOgdAYsPctmTe+OXotGL\nZYs7rURQVnO328EY9lZlxQfWOsEZyn7EIuUxy/F+hAVg/q8MshuSaFjFb7d5\noz59ylOZHf46IucoE9s6PkGOUdOMQ1hz8gM+gA0qL1GVumvvP2xyso17oPdf\nOrYjnW+8eRwmYL3rezyGf8cnTwjpbDsw7CDQpDTFhWH0SXolZec6briiAGgY\nPBxfIHXwD+gw9w4TDqmSSER8peS95uhFZPI+tUiAPVEoBwPO0vuNLQisgET2\nHYqh7j45Yq7yla35amADQHgThYrWlMNkDNFEvQ31R2KBAVfqXBXMPxWcxIaI\nZ5QMSAVa1i0o6MiBgVhbG9eZp7kKC+WjHUUqBAOsJ05yVrJbmdPTH7vKJbIO\ns9/FqbAQDoWLaVswcVuzeawspuKyiKjVv1RPlSHVzWAEMlX3MS2GIodw9UOO\nZapd\r\n=loKm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEjpeFKW24Or5GVU+jjrWc7GWyJZzZx11OafPGi3P1QjAiEAl5oeW57nkW1xWbLZYgjROZZF+xtgLM+JhQ2/OkrxUgI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.3_1525276069016_0.49108877038874854"},"_hasShrinkwrap":false},"1.4.0-beta.4":{"name":"graphql-binding","version":"1.4.0-beta.4","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"adaac1e74b85fca72f65a93af2752894c1532e20","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.4","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-ZvUGizNCCnfG8Ijy3dYs+Zgit/JumUJKT0isHOxMdtlxpBFnSqVEqeBwSYsuQDXuPAsPqefBK9Zu76NYD82tpQ==","shasum":"c98fde50a6f206f539818dbb5eda6c931be33dc0","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.4.tgz","fileCount":54,"unpackedSize":112766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6d8HCRA9TVsSAnZWagAAANAP/iY2QCM8GSX5eukGsMDe\nHCnCSrJhHrSbS5B81at2BNhI22MhxqxDHT7gf5HZXRNfJ/hyQQRKWcigHZEq\nrwV3oQhcDBO0baJbvD9pbakcqAaOvZH52KLGCxHCElHnaOZRg9ptmEyx6BvX\n/yCYsQlXN+D+MxEz/DB5EygTQV+I/TMmNAkbKNKlENNb/Me/4Njb2qXeCcmC\nRyEebBOYCQExs/WFQHvZoE6BMKUI10NpJGZ80a+bTx0n4Qgz0fF84sq/uReB\nmPfprqTk4H+sLs+ItxqC2vq005gYPrVPG62KYpEKo9/oiR4fHcUt+GUUfxTI\nMAm6ojBeEHBSGA/TUQgmjaN2/lqU97YkZWoCRBLaV4r3gozfRL9hD9lheFMj\nPs0ruwqRN9ZB/pSpMzWZ7zXfOJtPKgmxvJwsA5A/1Yp4EMv9UF5Bthj0q2g8\nxoMtAHg4QnDpl6SSTOLNZziYrZb0nVawp+ituLppvxGVZh08PkTFjdvATqjH\nTvyxB/CmYw6vhnWucxe5xCyKq9TcdJUIJhqPTjhV2+oq8GOT5RVcY0ebXaoY\ne1mN2sCFk1hhrRfTM0C0cmyakscvcs/Z4yExPkeBBlXHBLmmiR8j9Pw4/zZn\naxGWRJ13eGJzMiVGDiOMAEp5+Bqyc34pnIBbPGGg9TfdEFvNrPayJnuJr3hh\n3ktv\r\n=sdVw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZ+61ift3K3r07GsB+mr6fWH0G2dW0LeV8q4nQZCeXyAIhAIAGsoyOAAeQwebf/vrNNSW+/KWQFgW5RzV4dsS4j/nR"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.4_1525276422379_0.12228882814093356"},"_hasShrinkwrap":false},"1.4.0-beta.5":{"name":"graphql-binding","version":"1.4.0-beta.5","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"adaac1e74b85fca72f65a93af2752894c1532e20","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.5","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-uwe/1IIdJoZOpesGJDIOCLs+0CQ+3637zKDxo/ldkhfE21jKanVrRGYldllssNDpb/LxLfGGDxyCbFZ3gE0djg==","shasum":"af62b53a66a42faacd41bd32262869731a9bf6f9","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.5.tgz","fileCount":54,"unpackedSize":113255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6eA0CRA9TVsSAnZWagAAd6cP/jx+aTsk3j13IZU5KOoH\nGXLY8pz0UJllYQRariH/3HeTMZmTng7Jo9FxRHiap/kxQEnhQnClJ14MXk2o\n/t7zrc61yttVe52UMfi44wo36gewK3DQJb8V+N6QBpuHCVJbD0A2hXoQNv7t\nz4cAhW785aKCQIwsKvQyljjaPPop7HzQN94jNEKQon79LT3K05iveb3KAfS+\nZWcaILopgI2L623SRTBlhyepzRN4wDWADYosqgHcJqZAHgg4DsW2Tv227csu\nJLUICeVGEOXClc0CZHVvR39qHF1gDSu3eiAe1QfQSwKr4nGUM5fDFQMQHvUp\nwrRevAfS3JvYYLtCrnooF1KswCoC3Q1c3CDmjiFK218AHzq0qupZ77znaGwD\n/z9aXmTTq9EWNPSVYl0x3/xjEEvuosmvdwsQcYK6JJ0Tkjt4B3OCJyecg3Vr\ndSM0FnbFXguyi0Q2UsBbtAJUJs4DRM7S/Nq60EzwUjxb6KCdwpM7KTk1qyUI\n+FNSarvGUpq3dLkvGsi4AprRsQ+WLEt9DlzDEF9s3J8+27f51lV//sKnfTvo\nxr5ZAgnxdhxepYrwc5/4UGuRN+hnO4M7GQN46fbtbmU2PmkVAbF8IYligxML\nhz9eaWy+1+XLATzLbRIbIxpbQ/ZDi+vzXmjI8Wbl94+FeIgGWbIhX8+3VnWI\nk4Gw\r\n=5tSU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD00NDUeP3MTV91FpE6rV6JVPfabKBSA1r3+FWGcYYEWAIhALnMIKCLi5fIJzEL3aR8FIwgigwh+QHf67KGffdmB421"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.5_1525276723769_0.5384974351385012"},"_hasShrinkwrap":false},"1.4.0-beta.6":{"name":"graphql-binding","version":"1.4.0-beta.6","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"adaac1e74b85fca72f65a93af2752894c1532e20","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.6","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-Rmfw6oDwxq4a8ly8nb/EEOGp3jQDJP1AE9m6TEEPM1n3EuoRqMjNlkEO/A2m/9KVv7zHqWF3Z+DbgGfBytckcQ==","shasum":"8403f222ac5fb8f8fe363e0c1130ed41ff71850b","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.6.tgz","fileCount":54,"unpackedSize":113681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6eGqCRA9TVsSAnZWagAAZgAP/0gLRcDYeRLlJjskYuSb\nFJbNbBFblmyPJtaHK8nrjWhQiJutHX74IDfRNfJVCUfKyhie2ENvb4Biew+E\nILC8BWLwz9NtlBgDU14ejDe4gOGE0BQ8hNpDSuPi4LD18IB4pDMk4M9Q3hSO\nLrxdfxr7Jnf4f3wcYm4uvsnwI/Q9IHn60UloGSoTyCiQbbqXrAZeP1wElMqh\ntQjgR/FuapxE3vH5X3O82g8+ImelemPB/2MufU83Vb9WejtO6GsKRuErub/v\nVdZJjHTKxaOUOiWE8KKOufV/zsmtM+TWiRMBrEIjLk5RYMbGll9UctIGsNv7\n69vMV0mb+SKEKSwsCsVjlicB7XaiuBpG6JpY8ARTZMjK6srgJSR8OrOcluD9\nga2MWTDpfzAuTTmalc64DtEpDdQHBqHwTbCwCKFCAWdcnbS+KV1pwvouK22G\n6CJPyIQ0XJZhENWCWyMLmysKNXu9KMSoyLkL4NgKBGNI8cB/n4TovlSmxqJj\nretLlr/fdXvtNMK5z/4hBNbUIPxdiS3vQ6MBjyIZS5qscfDoJw5kcr/0cgLB\nFVBrI3G5UBu6YumIevFsbUvA/RW0ByIBP/su4unV5j9Q4NRLy3vrr5e+JbHr\nIomwDWoJ7VRr9VoF6mj5h3NuHMc0QzrcSr+TKSy2NWXAnWIf2jwAnlv/y4no\nUrth\r\n=rzH1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFbn/0diG5bgrJ5YY46IOfCMcAwtSsnbkuiEZ8HjHW5AiEA0k2YqbM53mVYirItZg4k70NNWpjpI6edd46v0woRx2s="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.6_1525277098012_0.8522419900474323"},"_hasShrinkwrap":false},"1.4.0-beta.7":{"name":"graphql-binding","version":"1.4.0-beta.7","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"adaac1e74b85fca72f65a93af2752894c1532e20","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.7","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-JVRwcPudmRZ1KDidzBeCI2SqSrclYoYmKfFeAKBdMpDXkFkE3cPkO/OC1u5p0/6TWbptQ9wW6/qkrV72QK1RfQ==","shasum":"d774c91ff08d725aa3f5f2931783f2678d07de9b","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.7.tgz","fileCount":54,"unpackedSize":113328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6sCNCRA9TVsSAnZWagAAe+gP/A7uVbQXW8Pe40In2114\nKn8jX1iNOLLQ/e3qh/9yJtDIVcKX/OrFE5ce8wsXYoyvOyJX3kQ/Y6Msl06i\nFv0CWMqPr0iqH0qB3NjDeQnFvpFrPn/16P3IVxALoNypimiWIA0kjY5rdmOA\nIIDUrrpcUoeSk3tZ3gtO4bGQfvY7IOStQenHv0O2TXF2ZbavpLmLSVUg7H2A\nLHFPlOGUFaf3fDg7DffIJkruPV2Ms5re5IxcFOPWhhMR9GcVMZqgpyHald4A\np5Ac3eIi48FDYM2pRR9IvqTvSmNoGAL4HkHU+EtzJaueVPtGQ5VXImSuXD/o\n3ZdkSA2z7bDym4woomU2Nvym9clONs2VH0GhS5wC1BXm9TGr8jrqLqLvenKW\nXtJ2RNIQ025wWGYKVKKHG4IXe4XkDGKv+P30VJiNh24/QXIzdi1MublszwOW\n5IIpOlmtJtFU8rEPEWvDBzlILIeASp8pPxAnwR3fFDoab4E7QDWFFQgeIIpc\niy36uQ21KXNhrb1KWbLcWmvimgTvUvUseKpUXhz5zNTuo83myyrMsVLQ8qYv\nhGf/tn4hnL9QWZtJLEXC3gnNJ9Mxqs1btK5QWVH4j3/XPFzNYVH13p3a66KH\ndFK5vbUTTLD36eboJstY7YUXJwY4euAopdAD0wDQVaSVQNi6GWso5nvH2RI9\nf291\r\n=u0Qy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCCnVXaXIvUTFFFaHdu06cqajDChlcKdohJNhSMA1UsEAIhAJA3WyZDnwCX8uogPlyZ5gNi3RraoxP8LutpAZCixx2E"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.7_1525334157304_0.5250157776927054"},"_hasShrinkwrap":false},"1.4.0-beta.8":{"name":"graphql-binding","version":"1.4.0-beta.8","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"409643ebd68391da37836479b3eb2e41f9619b21","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.8","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-WUdPP1uD1ifRVpU9noXfxQnOHwwL6NSWNfv/3/ezq5yXcYwa3+8mAGtuRuNn+65Ni1uiYeTvhvZSg7CmZMlRMw==","shasum":"bb60eb11dd69c8cac126013612f0be13e83dc95b","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.8.tgz","fileCount":54,"unpackedSize":113423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6tv/CRA9TVsSAnZWagAAL6cP/2x3tOHuXVX4SFziwLvu\n2T0GW2+onzzJIL0vQQ2AOmbMUASGFiWBhMkBnJQWj4u9ppPeWk7P/x5AmmsH\nArWyjdY6k6MEAtB0KgfzYVlfxNQvNnN0c8DyU+sbzF6IE5r8CWHXSICMCgRX\nk5aEQsVun7X3ir/BZvdUqOCEZihmfL3C5U4Ui6Vj+wYS5AQWt7f0RnTNuszF\nnGWN5UjV51CN/WvSsy391b3LevUWH3mrxIYSsjwJlD3wjANO45chpv3fOKGp\nxouwtBmaP1Cb6/g1CRS53V5NZUlicFQaLoQ7h9DUG4/l02GiIp0n2ekjO4aU\nr+fd9MNN3k6v8kbqnO8KoHn8jurBp8Mn5rLfdKdt2k6FAO5JoFLTeVbBFG0B\ngIzfuumvx5fVN3RlJOIa4Y+e+QcYuqWV8F0bJVjvFsMFRdL+LZdjipxjqzpJ\nXfjGZ8RmhAHt+GCUjmeFMt57tISFCYvSoaxtJmxE4eZcsaMVHCGnjfo/8Jw2\nPt5io7oygKrt0CpyTmfkaPXEVJWs/qkl2mqAfm+C2QCN/mbYjHqRSlRzel1m\nI6VFodn48e3edOURLIcW9dviEfPIcD9dX7CT2WSKamXpB1c6gLmYyXdyMk/X\n3kH5CRBPholYVuDBED4eAME1ZqaEmocCDlk9kR+m7h55IrcR9LZ1Mc/Dy9C3\n42E9\r\n=pPso\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6V26qCtNcLnM/alWKbcUMdH47nX6j9i/VEJAXjDCAzgIgSw20hSajKhEUbT+EUkN7Anv4zE/APxK9iHZuyNPlaIg="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.8_1525341182831_0.6886127993074185"},"_hasShrinkwrap":false},"1.4.0-beta.9":{"name":"graphql-binding","version":"1.4.0-beta.9","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"3b88eb7e6a1a3cb89f69ce14fefd19bf7796c1ba","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.9","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-5XnDDw6bRJpFf2/YYB5TenIwo+MhrZxupkcpFu/RhEKUW7TbYtg0qc82d5knC3br+6khpVO8fglY4wHlTKbl2A==","shasum":"9aafb817844dc0de17fd729a10ee6d88f6eb78ae","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.9.tgz","fileCount":63,"unpackedSize":119610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6vfFCRA9TVsSAnZWagAAKQ4P/inTjsNHzYw8LO63mI6G\nBnxUiSJeCwFq2PgTIAAftFONcm6q2uXod4gHj2aqW43AqlT8CvSxMyho4JxM\nvVNRGFqyMMpvNLMuuCJCJzU/5/8ChxgojrN1zBpbHWjcTym2QM8HvuF7OLWr\nrG63NGp45NAm7dFuhJPKH3GA3AZ94trBCO+tpFn75X2m60n2yGF7fIKaMSx6\n81BJAxTd7/fXunuj0IVEm2LW3tkIdedx1MtJN6kWf9+0Sx10NhlodG0GJr8J\niuAr4wtFzmPPV8yXP08uewRXZ8LciJOFFK/RKI9ZFHGIiYeeq4NG+Awo6XIs\nLU5CriGNZwBTSTHtH6DdcIJ5IN5ncJOstcbiI8H9cTnCq7aPWBOuRSgUIv7t\n5OK03azWeYrrp3lMLWRecxjRj00re6/eXv692ACV8weD4pZM0iPir/dvpcKM\n57HNBt9e/1X6i98OqjnxoeAfayKgNNW1MzVr6xtNysx6Y+0s1nmbM5pktont\ng5xjxaep/BiyXZDoAW1yoxaLHW/5IOPOi8MUAB5u19Eh+Fpi4G7N+rA2Tjhc\nFuS3xehSbVThk8oH8H97KDtUKt9YUXTNspDJKU6uuDU0bI6LXKrC0KoxmKSj\ndLSzWa0bWsvFxYtRv4zFgQot2ZWPfdeAE2YN7rNYxCVBy+axT32MZWoTUtpo\nfjWZ\r\n=1EjQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGNI9O8s3/9pEI6t5+u4TujcMNUdJCgTgCyexSvzg1UqAiEA1+QhZMH5JD5voPd3BVhV0IqyOtrDE/M2qFu3iahLz5s="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.9_1525348293135_0.35787288408122175"},"_hasShrinkwrap":false},"1.4.0-beta.10":{"name":"graphql-binding","version":"1.4.0-beta.10","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"db69c603744d2c5374c1e0b09ccef3017d8ce6e6","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.10","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-vEcBEQaHlAVNSLC4QBVrVrWaguYJej+SjB7FLnj75e2n1/LfKjVWXlqsFHBG8hYgdrg9mvJk+x7fQ886cNvjOA==","shasum":"fd954a17f1828920fd2da49e051a810f5abaac18","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.10.tgz","fileCount":63,"unpackedSize":119688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6wLqCRA9TVsSAnZWagAAZj0P/jc//qPQtwFOvJP3+CCP\nCutKLEZQAp+7jhGityPYMbe4MYFUDEjrmYYC66vfsALkNAPt9aojBvC8Drrk\noddaluAu5L7z/ia6ZGP9BdQSlWFfbzd9yLXZLaazaIkPSfEZUhPgrsniwU06\nF4tEytq4XFiFWNcEwXCYpiCzTZlMhDMJmeKA1i3eJk8pB8QkdK/v46gV5QId\nbFQ7L8lbiQKBErGmuS1pVqBfStmNjVEI3Ef7xOe4HCP2QwlaqoiqaR0XMYCf\nD+jHcu4kevmsbRispSGpHlIp4sWrXF61G50gxQfhtGTbNYV6FPIsmlxOorD2\n7tLNahmOEkiqoue4hDndAkgjQ4xDemb/stmh8KzdYC43R0MZlsloBZ94xcBb\nwIG//o+XiVF16wdnRIsHQTnKTjwlM6Z2HT1xNvGJKmqgyFkX+BBBHqDj4n89\nrhfXiXXluSczYKE5XT6cuXD22ptUYDWMiG5qNm22Cd/GI+KisEyMw6efGe+W\n7IR8WxFJRy9att5Qs7YmEGcrLBVBJJVqSK+ezYD4lnMpX+8PLM4RrREnYLlM\nDvpHFabUn65piJQcl5J9XdHPkssdgTPnuoinA/b0t9f71V7eYsYTr6rtdG1T\nuHBYYA3PmSOHUtiFbFh+nqqKOfzFsePLSA9K2SQZpWsA9CrbluEIamJm6+Am\nyBpC\r\n=Xfjv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF/CTVQ2ZD7/lBIVJ08fyGUcVxtBBmfBd90Z1+YA786cAiEA3tzJERrLrWR9LD1RUWcfAMNkcIUuMqI6nKtxwnkGVNc="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.10_1525351145622_0.5009079231476437"},"_hasShrinkwrap":false},"1.4.0-beta.11":{"name":"graphql-binding","version":"1.4.0-beta.11","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"db69c603744d2c5374c1e0b09ccef3017d8ce6e6","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.11","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-jKQnokupGkCQBYPiiKe/fvyanQy9wrhUkgRkMiJUGwUHn3kCTIkWoL+VO8Gd3PBgvQ7i4Z/yRBuFswJJjCxLtA==","shasum":"26cbf31c8f7a89fcd2ce94fed4c8386791b3a37d","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.11.tgz","fileCount":63,"unpackedSize":119791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6wiYCRA9TVsSAnZWagAANZEQAILXhH+XqkoQ88l7WdUw\nwD+V2LieLgfhKhNoSPErCIKdf6UPpUwuNgjOa8EThP5lLMQrW9n70DsX5rw/\nXwea6bX9hgBNB2Zfeilx60r2i3eLYFmrz0OWi5f9mvx7h9RvjOepnWLZ4Wtf\nRnjK6501U98F45WgGcAly4RWcZOHigjACGe4R5i0Q3aiSAeb5mLIiiAbF3YC\nVaJE+r7BtRHmM6R8jnq87BWQECCzgovYZ9ZEvRrK85n6PmP4BmBAF/2CzYKT\nySppLZA8cPqITludHmW9qPLTYydbyW/QDpiA7joXecIwwPQSvWVl/u5uXAa8\nIiD3mctwbNfkJ7PlUPPiqHxdJZu4LsFsLdziNujBcncS8fN19qjbO6XuXti4\nsY9vF002ZFylXzNITEjrlO0wP/Zhpy01iHj/BuU0xLTL6HqibScoNO0dZnXP\nTBeYmegurV6IOSIDhEGgcAKC0xXh5jx/W+sjS3iePOpgWlXatufovvzRE/QC\n1rDUpFPirXWZYvtRjYleV3GEQlp+KOzXURbFsaYR0y8zeQGHgZRq2sYq/FBH\nSgAUALrhCqVJ+pgI/8n8gY/iKrHWJlU8DMuTqSk/PLJntw97ZRt/tRTHR2/Y\nfYxpxXjrs/LzcdtkbIe9C3sDwFfjMSF7txS7fKQ8PcAGdv2HyqLLvQMwx0Q7\nT6qc\r\n=HF+N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICx+aqwVJqUjI1xrDnk7lZ1gr5Ht8awe+nIVXrCQP2etAiAeOz2kxFpyahG2LILV/PcHY8JRhkT92fTUPs7tLfDRDA=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.11_1525352599586_0.23325885227074816"},"_hasShrinkwrap":false},"1.4.0-beta.12":{"name":"graphql-binding","version":"1.4.0-beta.12","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"dca40c440fecd07f3881756a07eaf40588f38ca3","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.12","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-NBm9e937mAWisUfCddx+3rozUz+3e/zJiLh1c6sgZv+iRTVv+3aDjZju1x6JPgjCwk2pQdYEccCKkLuJgAdBrQ==","shasum":"5d8721baf1d888f0f3187d16d380dc5ed939093f","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.12.tgz","fileCount":63,"unpackedSize":121039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6w4WCRA9TVsSAnZWagAAYAcP/R5IhjHWmgWGhxHL/0OQ\nATT/XPhkQqTwosQzgknXgRVUEJeQle66SDs8e4nEbKRHfT+UM5x5iVstMbJC\n/zIRs8A+MDlz1y0UQ1ZpYnSbH/ZFwalP4AQOavYLCkHsFbeQSirkB729K4Fl\nYhMj6wRNt9e3G/KsPHhUk4NHORdwRl4tnXhC5JoKXXnsSziLFHrwct9lBzoG\n5Af/qvBOXnX9W/JFL3cXLwVx8EOJcQiOjXdRPgkPa3sLN4nUFFKaRbC5HTTf\nAsAeKpkVq184RjxAwPxwNaLQeCGgu/LjoTuebAyJvDy8ZaO5hsk0xqh/9QJ4\ncS8bPjf/QAXwwEnvArlc7vIORRLiThQ0Us30HOig/7BZ4kXLDGg/RtgJAL9e\noiXYOJ6N7UB55AEyMWXZLOFKsuXjs12c+UolkxS5rTa4//fCxktRi5+0DmxY\n6VoQXxQxsnAtwwZOosJAR4QRNA75Hx9dEDIFq42bmp1UzZ6BZHoKfDzdiIXA\nt52BvsLS+UZorD6cRH2g4cYKExOFZ2PoY6AAjarphp9mRYma1LQKTBTTE1uG\nkcorKT1LWJatCiMN5N3wxi7otVUvNb+qGkpTja4hZKIUU0ZFXFo9Oj7i0UzP\nn6zJxighHCmSsalgkT9nv7aY7Gsd6/dC/3Ded754o53OBD4BrBwo4uBu7Xg5\nxWUr\r\n=m2HN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICbQZR/1um1PmVfi8U2fonNIlm1Ir2JFrnLxpBfiiOrXAiEAz1wPglVB1OqMwXBOOTjC1HPQGZ7favIFY+xfY5hjooM="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.12_1525354005967_0.3821162189535168"},"_hasShrinkwrap":false},"1.4.0-beta.13":{"name":"graphql-binding","version":"1.4.0-beta.13","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"dca40c440fecd07f3881756a07eaf40588f38ca3","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.13","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-xPb/I0qiOlEvTMPdp+cG4DqG/WgIOhtKHIl52v3NAbzeiisSkLdHUOJXehL1UruY8VsgDQQoza0uTT9MxfdFzA==","shasum":"32779b6708c4aa5d93a9b5affda2d1b5e0c775ef","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.13.tgz","fileCount":63,"unpackedSize":121303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6xm/CRA9TVsSAnZWagAA4EEP/RXzJByFlua2Whqcmi/F\n7vmZ4jH4A2Apqj2Du5gEJEEJRjbmRCVnKBfXXsGI+LsxBS5nXNKhE/W9xZGV\nNi4V+AcFvHlltZqHCuKIQc88GJE+lm/tDJNevs3Tnql3DHRe6HlzBLsxbWOf\ngjwRV3G2PnJcisqZkYRrpToTssvv3/dsnZn2iDYMWK2W9MwfUXR2fdEQJzP5\nbDFP2UH+HTigxmhDNuXsqmkPfAycLjBnUeiNckk9yPtBUPxZB//bp3orCfbR\nFoA8Nn7tkohE1K1cJXMKmbSRvXX1++9UwQdjxMySmReC2F1SxUthladrnj1A\nroBZ2sMv1tyhGl5/ntFFI5uwPnp63YZDso9E5/5Tc0r14IoOQ1gCnwVykJyu\nPYjxlNu9XfaPvIop4XTn4OTp2JeiW0CPm9hBKciQ0FLFPMuMqE7ijtNrixbi\njne6mTQ4X8/3kwXG/3rJ9V2uM5qKQ+i9/wqDESBeZAOHNkvDEOcEaAlVnYeC\nWMRcuPZ38sknNI7i+AIm/HdKoUCrXWqxkfhOlb96MYnnKaqEFbxDnvcq3XJ1\nnHY3V/H29MaMbs70W9DepIMsMYMpi8Dk4xzAyPuM1TE/TMScnUpij3sYBYIA\nqfjeBDHEKgWTHuVEKXV6SU2cyt+HQjra/n3/DFJywyaVnFcEU+qyzJmrDGu0\ndn6R\r\n=qz3S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCfAlmIM6V2kN8eH8v8b6YuNHu0NkqY7fxoEO0YFfQYxAIhAM08cpcK/dxGKg2OqkZ+i41NrxEb++JKB+klu48zlmQU"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.13_1525356990876_0.1478104725467404"},"_hasShrinkwrap":false},"1.4.0-beta.14":{"name":"graphql-binding","version":"1.4.0-beta.14","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"dca40c440fecd07f3881756a07eaf40588f38ca3","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.14","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-Ly/MprTZwBqkRVcYQPfoZtfWiGU5iul09Amv+zk0uC8WWerKPEsjhnZ/ns3ICvagf1JkjOMAdhV/1+v+4c5WRg==","shasum":"704550b1ec537edd0778635b94b647ca3df08c03","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.14.tgz","fileCount":63,"unpackedSize":121298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6xpPCRA9TVsSAnZWagAA/KMP/3hZBo/LYXKCxjsx8Hdc\n9VHJfGqrcHTxSeGMwk5psH+VIMlkbBCqVotAEmmkPv6FkTcgpxXQfCAKkt0K\ntFpmwylSXjP8DZHV/QDAHR+zEqib3CmTghMgRodLRVSmOdZaB3DOWu7VYGFp\nL0RM9atC+bYLZGQ1AECq8InEYCCM54u+sXnmqocdBxBFZQ4Ed96TEKkq/l+w\nv8S6PcGqewVSFymL/DgYgJHwqNgUzj+Zr+qyTIdAf+3m5t8mjqTN5mUQyrlt\noN8J2Axcx/pBX8FZRBBBQRaNb04+27/CXb57fTVOd6rjLLc1L49+KG0hRwaI\nclbECQHCR/dJhc4J8m/Yklq1RFzM4xR05yxEnZQdLqPt8yp5i/8NqnkPT6kd\nqe84r6uVvFqtpIpptO0yS9A60ES9SkWUYFAcFe523ztPx/5PPaPKf+aNabBG\nbNk0PM3FjfDxpfluTJCrHi8t4qQysPrclbvv/HIhST18KaBrZXg6jkJbeHSR\nlwiJH+d59E7llM228dbBdkbwblNdX6fyyocPZlwZ4sBgrQ0joqtAMH86XaV7\nmr2M1RgINojap7ERqAXLreXLfurE3LRpJjoSOCM8SO1awy43jvcSBaLeUGkW\n7OLG/9E6DaRcoJpnX+zXH8TUwj693wXlGHHfHdgNopeNgWJskJHJluvvIhyJ\n9xgb\r\n=SeMV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDk7gtNoTAIZh56T6wqHDx50e6Be1sgJXqugITfWIIBvQIhAKQerqBDnnyrZtJbZGWBSMEGmMJ9hy46AsN0HwGaCNmg"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.14_1525357134249_0.8959436939052254"},"_hasShrinkwrap":false},"1.4.0-beta.15":{"name":"graphql-binding","version":"1.4.0-beta.15","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only","ava":"ava"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"66688b2ba222e0ca44a9c87a33787a13e7226cd6","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.15","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-0eQL7in0aY/PV8JAdP2PixXc/DnKG3/SwTW/7yNIA1Lo58EYVqjg/nJueABg6ZEcuHM7bqGzny+/7jSnICIxZw==","shasum":"82039f677a9de83734a82ae130b974db9acc9149","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.15.tgz","fileCount":63,"unpackedSize":121298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6yYdCRA9TVsSAnZWagAAg7wQAJXBB+TaP3+0EsE1VQpo\npI9gsQDmomWasSXjeqzQeCoXpPjlo5SJ+mwHr7CzVDBMmGCKg1mjHJK+lg6i\nxtq546MwYzrt0dyh+wna6zz+Qds3WXnKekMhfM6QzvgM3khYmAp7rYAz2JYz\nMuxRyCuyCx6ujK0cSNNf6tENBtdRM8yjDzIWYvUDOTSFEgzyiL6ipWIL0nLl\nodmKJr86f4tH812G1DQQQWT69Q4OERu+JJRuqqjLjhziWIb4yrs4+GuGqvJr\ny3pW1QtGQrPi+8NRyH180NG+28sxvVdIjXFrsH08WGeXsMOTS/cEY0gXzbk2\nADMCJLzRfI54NAHlLvQQdC8vfS/3JLB+MxkKLEmkweGJ3oJnGkx6CEB2j8Uv\nQ8OskTjU5M6RmzgZAneCL5Jg9xGCOPIt3Jr3D8z4a6o66YIAZtwEEmWz2zE3\nDH80KQIFPbBdiLjtNzInuE8OoMBhsy5WjctL89zLvaW4N+gBuPgS9jkOMOsD\nn/onqMuUyTUoKLN2BMmV+r4fAjm+poZsFXti5R7YgNVOaMO902BNVE8S7Asf\n74gBNbrSD9bI/ZjBn60cbTGTmNAPUY4iF52jONeRUPHukL0pxVs6VsSwqMxo\nraqaspkC1Khpk5pfmTM+zi/RVIrMIgj35zhIhLpm2BWLHK2LBIGiBR/XTJxw\naw1Q\r\n=XrTr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwSW/b+QRj5qu+UfEEhfU/puggS+jkY3CH8Rh/X19MMAiEA1LM27qorT37C5QLSXsyQaxjz6nld8OP12XMdI5YasT4="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.15_1525360157270_0.5608441830295852"},"_hasShrinkwrap":false},"1.4.0-beta.16":{"name":"graphql-binding","version":"1.4.0-beta.16","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"c627e7a5a4264994a1ef6992bfb8ea288e6d8223","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.16","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-rwLK21thpeXaG4yglyBCd0sz1WY6wxOnXWry6rY9BDY/x7S+Q1JT2Ln50kdMI51M4vSTIeUDvPWPxhE0JwOayA==","shasum":"c5045880af724a5b0086d360c5ff487fdff7b14b","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.16.tgz","fileCount":63,"unpackedSize":121390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6zVpCRA9TVsSAnZWagAAwcIP/jgI5yFjfrvBBWNS1OtQ\ncRRbo0GOOBPHCKbP5CnA+q8J8f7OZ4T1MTt5HV0k1Dah601N3Ax//unAXORe\nQCAAh3w15Xrkwcm67RoxuGU98HTazRxbmcdjgOHMN0XW7BYKQKBIIOrN2Y4m\nQwcaSq2c0onmMublcrUWhlFjbfg3Z+MnWcjNyR/edE6TJqKFAyqbwGY5n1Ma\nHoGtqikG2xVzs35U801sxHgz9+G/3NFFAATgPnPEPyJc3bpXYXiOksGGW7w+\nNXsjzWWZIHXvoGANLmAkYjpr1RPvGWXQVag32J6VpGltj/XBBuJuxme/9VSY\nRHnQESAmd/Ee3fldRwSBosy130+4zjV5p9lEY6Oj7hmPuLR1Jz814fQjPtgD\nXaoVWOWZDREirRQ7s0obhIwp3ucx69FIhja5P+zi9BEsArE+bFDkv2/1tjvH\nsxqs8x/YLlO4RgiEWE606hzHRFAR7gal/TiyGlCc+/E0dcrVp/K3PLJO+VvP\ngLemaPh+sncnsa1rO8DOnrLR0eLaEboqB+iLa44Elj9HPTFqDE34L1+sXA2W\n+/jKjm6f70N0YyT0xO6t6HXWtEOq2nnVDn/x0dc0g4R9+aTNkLV3qQMTJNQu\nIPNxn0aQPckaoGDc67volDpvbnL52Dybmk0iPCllvNodtlTqQZQsQnKEVrSy\nNfIi\r\n=TiWd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBv9c8EQkqX99xfLN+22OQyjLGy86K0ZzvZgeoNNgUo8AiEAmjJhfVzT/GYucHFKC7ORVpRaDu1rOPpCybbBlgm/h8U="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.16_1525364072061_0.14963735114813992"},"_hasShrinkwrap":false},"1.4.0-beta.17":{"name":"graphql-binding","version":"1.4.0-beta.17","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"57792a8c0ba3a9ef294339a7f06503576838b6ca","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.17","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-gSrRCnBAmqSUL0NjLqhEqlBa0hcUsq1M0o6OPbexRkFsveJEEHnefq94ipF1qPYpt7bxrjpQaZ4WzrDODWlWhQ==","shasum":"a4f6f100fa9db8a719ef9a0355e976b51a91502b","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.17.tgz","fileCount":63,"unpackedSize":121503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6zjrCRA9TVsSAnZWagAAa9gP/jBrP4YOtFwFD5W+HJrp\n8tk3FvvQrbiUsxFnVqVc/qKQ4XQWmMtUVIdTFLp3+fhp0xdFEv0mYwfEesmO\nayw8ep1M7ryprVyJXh5fFiK3x3WpwhWGxLM1RrTXlSulMdVNzRc1cS3pP+Rv\nJvDOOyw5GQq9rDIGiGuK4FQctNN5ayDzatGw5D8+YxPxLLpjJ/+is5OlwMgd\nBiFAeohUEr60xdnLx7NCtw3ajsizR5Ibt9mbHhb4pGbj7rt6MsvZWKMcvt3o\n0M+SHhDPvpDtVdMW7IriI+8eh4HeeL41WX2JHOQDQBXmsxJiPvm6HxeLpoP8\nUCk01nubYvLU3xKl0ICPg856FJj/52yx6IrAEvodWMtpozAqv+7gGWDLtr8h\ngPdylgGJOQAi3EDwaxosYLfjFMie90Wff9v/ZcIbw64AjhKaUoHjBWqxTami\nRslheBT6dPSbzB9Vm5nSHgjvtCOJf0vwTcdoLax0Wftpc7YVXEA6gjUaqRYM\nmorLOkM6tGgrHlH790fez+0Ka6uZiA5FSRN1fMS0ywILkncp27DOXo37oD2M\nWF8TlNtCuFtl5EWgXPownfH3Rkbzq8VrG3ZLxLTxVmDlwIBYfc1dcer3cmcB\nG1j52s1A4rr0zmivuB6TTKVW0z3DiBNrwB8QhOg8FQi8E8v9499x8o5bhITb\n73FE\r\n=X/79\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDd3vRJpBuuwD+IfstzyGXlG/KY5NTyNnoNaHBR9+ac4gIhAMBtXpJOgtjYdIBzShVwAqWwZsJjL94h5VoxWRlSGGAV"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.17_1525364970731_0.7121967826497373"},"_hasShrinkwrap":false},"1.4.0-beta.18":{"name":"graphql-binding","version":"1.4.0-beta.18","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"45013f9c9e91f368f4fbe93827bf840ef0435c4d","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.18","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-g/6ev6gxRka3jpuhm+SDDOvseTVcCkfExIECEZzURYi3KOe86r4BC0WyIeb5jdNcYVDPH+YDDHPkcveX4CwmHg==","shasum":"bb742c4eedf3bc665e9c905ea7af2ff19e1c9b97","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.18.tgz","fileCount":63,"unpackedSize":121675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6z39CRA9TVsSAnZWagAAFHsP/jtIltC0ZP+a+ZLShIor\nFH6M9go1DmzesBAKUFj64YcUmDfEDiEobsNAtlaHo0X3w/mWqVDssX64XATF\nJCfHg9Z3Vg4HFuWhHeKcORtlwdmPaitw9w4/KkjW6bOgATukEFg8my+eYx9J\nBefGK6vbRH+fP0VI6TCuIw0Cfn15aOuJGgt+W60TmLIzRgxkkpK2uxZLgv6N\nq7ae9FTQ0TS/VPVOAbQC2IOrM3PGoNfXwXp8LBuSotALFBpcj4eBf06HorE9\nxbqHT7NQY8srUbfiehKV9ntBC6oonbqW3MlwMrXUoPrTS70SiGCLvE59Ro4N\nWq2m15g5UTadhBxG/R0K1X5ft1vsRWp0CEd3ZFyQL6NmMgOMP/Leg3LcAiw3\ngQ9+cZUJuLoKEKa+XEVWoaYz8nH6GQrbJGvrW7JLembhMg+5227Qmto+fjL7\nm8Q0rt0IkrwI5gpyfG0DEVhmkMuBN7LqHGeLXZoGmQcuH4OW4IuoK32KVBi8\nSNdDdN1Z8N4o3tHsrceXIjL4lHjFe33eLenyADJ0LEiQTNVLodL92A1Bw6OM\nMwR6Q5wzxpB9SmxhuAO5ts6U10zzxjJOywAegbjZWc4tSDdzXwGmxYi2RRdG\ndLAz/FoYZb17S7xJBdtP2EmUUZ9VyNiBPvIxBVkDWLykNgRcmZ3NC21tWrzv\nIkyr\r\n=yK1Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeICCCYv1cA+UkeSMXeMO+0hzn7Sx+6nq15PSDVaC36AIhAIAdgFkDyvj9CoA9RoOvnR0GXDzDsnUhHaGxw7fkK9KS"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.18_1525366268889_0.9397569822602374"},"_hasShrinkwrap":false},"1.4.0-beta.19":{"name":"graphql-binding","version":"1.4.0-beta.19","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"45013f9c9e91f368f4fbe93827bf840ef0435c4d","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.19","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-q18sxuCATU1EAXwBAl/UxYTNbHZiiw9cysdimH2YEhGthiVWfIn8V4i72V1tZDyRdo7nYZKrEe2BsGSK2zPT6w==","shasum":"f0e7dbbae7e8b1e11c72d5d5d8beb7118711ad8d","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.19.tgz","fileCount":63,"unpackedSize":121673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7BTzCRA9TVsSAnZWagAAU/sQAJa8ndTIszU85M74tz2/\npcmSfUQ0z3FPRed07J0SZSPE0b1/LQCr1DlvrliLQbZIb3aCYwhlG0c43TIW\nj/MQoVqsKiup6PJmNFESX+B9i3dltTnBm9JDS6JgFFRgzD0CsU5SdGvbw7Pt\neiSjCG4w4Rbfy3qShOebqMz4tTzK8SLdY+VmGPHojkb3FEbjMMh+TZ9fNkE3\nY80KG/EOfP5yfH6MkC6s0eTA8C9HVur4y46aXbOtlhFgGD3z3Dr6F2LYBuJc\nj1hTALoXa9hJQMn8Vk6d7Pa65r61E5y8vctejogQK5JCaTzzhQmwszk8NTi1\nL9fJMU0wolzp7/8eGqL1z6mKKFyeTNs5q4FM3XV1ODHmm4w353OSyFBWPA3g\nybwUEqvAKmTsy2280EBkiBqTsYgceTV9H4WSoKRYapMO25R4CGmnz9LUgGbo\n7h7rVB9FgrFfrS/SVb+bwCWJdmjUAVJjxEtRUQCphzcC/tO1NRSC0sd6Iwvd\n5PAOCVnLocAHmh458/2XgAGmwPk3tQUIaXPHYrvLfYnJs39svkbTHmqe92WB\nUZ5Ax+Inx9JFZalnam83Mm+WDMOJNWi8N34LbVdWxhEAKH5LIfVw5PbxquRq\nKujS1PSqthT0nXari+ogAhCmnjddaWCCga0+VRyLzW3ym77KmFEiQ7vFYmPJ\nz64R\r\n=2kYH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAk+2k6tF2FdJn6dZDG9Ktft5uW4RjVpRiKbSVmm6hVAAiEA1p4U0NtLmvVnF9hPW0NbTx42glLfIt3l9/IXPYlGGrI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.19_1525421298385_0.8779928646382182"},"_hasShrinkwrap":false},"1.4.0-beta.20":{"name":"graphql-binding","version":"1.4.0-beta.20","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"1d8786e479dd08153c51a9f2570911b0ea19df8e","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.20","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-oSfpJCmdnwZSdQiPShi9AswoXNZHC4fPCFAyaZQbI+ii3LmiUrXGO8Twwrcx4DlD3UfRBx/cKlPiM7a+XaGKqg==","shasum":"057987752d915fac9520d9b369b6819ed893d9df","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.20.tgz","fileCount":63,"unpackedSize":121860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7C4GCRA9TVsSAnZWagAAhgEP/1bkuv/7UR3WZEVE8qLS\nw9IQE7RAH2W7HuqzRmRESRodbOVFnb0e7Q8Ie1boW2QYOSEixBaosbQb4R29\naxlsbsGneCSq3iys5+l7116r7TtNw76wlg7uBTQ2qYN/wSeWPSwlyVzGtVZG\nRcBkmF9y5CP+TrtyU+uziUSpk/qXg0Xy6u26B/ekk8u8QWUfbHKUennC0DTE\nxQPRy8hkBOOCz+iJLn6zdaLbIowAsKV2JMmq3vPfuOhtIr24EacDxFUon9ff\nGVG3d6/nC7qmw1Q9fYiMowUO7RnczARCB+betkxd/06VcHntQkJujrLJQwpz\nseGUW4/Mw7kjxktohKkX/jSUITlkZ0JeuE04Rb3ULfqUpociqVIfug5y9CSl\n1pZvexxLTGdndxHtQlkGd7H8eZa7PvA3uhx/obPSY5vIdmtuFdCJEj70uBYI\n0ww5rA2HeveG4Set0MM+4dftKSRaAMwqTsez/9Qv+shlZm32P8TZeXh0rQbf\nNI2nRrEAZb8M0TYuWhs0o9Bz/1EeyYaoZSA23A2jpVki5R3fpnJNffLH0C5y\n0CwE7UkDsaHu/ZSgbIK/PnzTNnuGpkPDBYhw31MkLQrSZlDHtJMoWph9E5Vx\nqlN3DGAfRFGngZv26xAQ+dfu7hDaXwdlustuO3K2y4Dt98tUdUcdD2KqTiaT\nGrKP\r\n=Dm6d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDswkD8QnyZ+iGur0Fxmb6qNP+04fYpP6Dcc+fCqyZj6wIhALfPGY8emEZagXt4MLTh3nR8KrKn5WdKoDjYamV+9z9R"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.20_1525427718435_0.7769097933287323"},"_hasShrinkwrap":false},"1.4.0-beta.21":{"name":"graphql-binding","version":"1.4.0-beta.21","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.0","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"58eb547e92bcdd96a764bde272676b7e1dc6dfd1","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.21","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-Sk/0boBo8klCOEPOiVQVhEEIgDCbKhUzGiYyR0Si0209jyJTKfHww8miFkiO3MJVqZO4xtz1vWvrz/LI3lOTvQ==","shasum":"c048dcd0e4e1756dff814ca7faed91dd9df674d3","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.21.tgz","fileCount":63,"unpackedSize":122120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7FZ6CRA9TVsSAnZWagAA0C0P/2Gzn93fLOgc6ymlj1GW\nIG/0Rj3Bos1VC5bBHBix/rdU1ipATYrOMOL1kbVTnFRiwr7SSrKFkuDXWhUL\nOsb0xV/zSa75AIPZIgZyWCINigZA7RPG2KIBYDnxFfNg6WYKeYBKh+lf5Z33\n9S65YWWdHPVi3uL0Y4DUi+2w33oktjetFCiqAb3gFAMbYeJ6yDNk29XBrpmm\nGwNxzFSEb7C6S0v3oZyme5lCurzx8MKSa2RyMaue1iU5lXntjKsfqPrMMAkO\nj3dYOR2K9L6GPAOB9OvW1Gr2WmN7PP/gt8lGxsETWOd5/dgEFS49nGBUh/sr\ncwyfioKwEbjSJZ0SJqdastJtkzDzuVudkAYPBKTEKmvSNQQ1o2wvbB2RsMmF\nO/Mmu369hBdx+LGo6jaKBqD8bUrxPczk1noTKuGXtbsFS7nWhS6vKFjywyKR\nDOfVEDAIoHWvy0tQoM55ZF6o5iT3zW7Rf6UKNPQsThsOeRbSTcdM9e3rK/FP\nl3exeWr3jhfl0eoCJtgGJWLfc+lEG1c/9eLI5Aa4ufaOxhQG1btKi26pwI/+\nKPIICCVltwTp+g1sDCtOP8OSQNuWteg0E23HeyPnN8LP1xr8LQ57ssWlyTA+\ntpRFhdCTdevOEP5qyeAXZhHr7VHgshcKFJ7URE7N+LG8VrFio0mjg/YfMqOY\nvsyI\r\n=WLfE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIAhUQp6LBTrOSYZf+jtX4HWKTBVwHkpWgxOzmKxKA0AIgZyKH7twQ8PVUe3j1FbZA+fDEfIKWndH24VU/H6yG9b0="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.21_1525438074107_0.8119221870849604"},"_hasShrinkwrap":false},"1.4.0-beta.22":{"name":"graphql-binding","version":"1.4.0-beta.22","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"f31e3c70c21e27c3ebade386b3674df2fac329f9","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.22","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-yQLFRFOZiEv9hquft7GiaL00RIzOX43uyaWxr/oDfL5G9iEhql1/ndCtwGjKMBBrl72ehOfw7C46aueuDkxwKg==","shasum":"6a0d15b81d4d9c45f5e088e4750e77586c6a3dcb","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.22.tgz","fileCount":63,"unpackedSize":123793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7GD5CRA9TVsSAnZWagAA6a8P/3ep/fZHxoIX9Emnwdkt\nYVfwXQfF2Dl46AcuSfC1tGJaOl90bGBKXhHXllxE/z4E1LhZBclTaBIAdfhs\n84NMBUf6P7uhfyPMJp5a+zDsx98n/LpB5g2sZ0MNQCiCtlJL/1vFiFUE60ua\nCYKB/bvoVA5Jy3y+DUiQ5gvJsFdGXSlwr1j6TSpMgMgVrPN7y1+j2XqU6I2U\nKEOBxZineVy+DnJ8HviX2eQYpRSg4oWgNEtPMnVPtPD8gVpn1IYc1x0Mkzvn\nsuChYSx5KfQFXaLsOK1xrtPtPgZegZyJMNEDhPoBb9HVZoAVVIeBH5ya859x\nWuH27GNoJbfaBmGvGKaLb7p4BFEswtJMKMV8TSj4rsPN08qncPAnmXmACvyh\nJa1t2BBT+pxT/GBtpy1u6qMvY9KNlTvQbM5V01Bp1Xg4yqz+7uFj1ICf78/d\nIO+iEF/nJzT8PkROtg3kQhOoTFXHN/2nXfJKL1nn4/o7zt29Imv+63JE6/DY\nvOvaGOx+idhDTCW1xSsgCKSnnUXMOse4pfR42ymnoEUvzG/ch9mGNr7DODpp\nKO5rxkAoguliRSMk/Zz4Xh8tYvqMs1KdmXyWNjwA+1jHN/MAI+BRrxVCE7B8\nxi4OKZ6dTmtAZcQye9vgbBGjwkUZJusOG+UWGee1IKS2jJ8uTwcXO8uVXjoB\ngUJR\r\n=bDbI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvKH6It1hlsIm6ytBAjtMaGA3H8bQzJjOQe5XmBpbkoAiEAzSAi30CgBxqWIbZla+7XBVD4Wax+OueM8mZ4TXgSdf4="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.22_1525440760896_0.1386671209632202"},"_hasShrinkwrap":false},"1.4.0-beta.23":{"name":"graphql-binding","version":"1.4.0-beta.23","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"d6a37ccac405b30b46a61b6d2d14f21be494c27a","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.23","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-Ss9FXqyQsVztZEvS7N6zyyvLJusRwnFS3TlC1c3GiRsEEhL51sfoNkPegKcsnYYLoMu3zC8MTpjJ9lhDp4MrJg==","shasum":"060b1cdb4dbbae740df50096b09ea34fab0fe222","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.23.tgz","fileCount":63,"unpackedSize":123835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa7HpHCRA9TVsSAnZWagAAg8wQAJBBUGDwv9mCRVw9Wkwz\nIzz+L+LLlyYvNCNga1CF9GmBrhgmSsi0uTAzYIHqHUWJshyq47fU9MZEX8Cm\n6zflJPD6aj1U61zwoJd8Uswjjhr8e6VSNh2FwrmG/Z5M4iXvOGPn7CDpznpu\nss//AGXnriaeFb2c5TZ32UERC3Tbi9UGXmaFq0jPvNClhbi9yUym200ZsTry\nO1cuW21WjvA18q/ZwKYrAp72FTje+U8Kgk2AFzrTcESfkaO+XL7u9AErrt/5\nVWvIQSPXXsjtZ/JL26l0wyvnkcV3ohCO03ruuEPKM4yonfyYkCmspGbGMgL4\nUaSV6cOfm3DAW+P28978B6cpSeq4uxMIAMqHd9j/5uWsagNlXpyKIsOroaeJ\nxt+Q/6FZCetZuO2Dn8EL2nmvRGuO+UFSbraf4jx8vl3NmxX1+E6dDgj3XS45\nB+WgMYKzcYchh86OCRX5R0vMZSKBwUK8VbmrJzQtdJhaLR+9Z9gehhZPbBzb\nuGoCfiIIU7a5RXRKWIqn82bZ73xAxOHGyFmlR+8E8Fn3uiefe00fTfLnnqF8\ng+JEN5nLxXFsCp2ECoQGtrXMmo6XRYE915nVLP00tKDYexaTOPEoHx+SgyK9\nmf7Gl4UykyLFi44lX6MdmByfilDXpf3nslkHt2A5bpX8GsvaKkGb3hDZ55f2\nYiT5\r\n=3xTe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD73OgIDAslsoIzKdZSlP4E8C1ZRhsZQi8JgymgJBfXyQIgO2AwT/wN1CN6fpVzHi8ehVJZtTfz93B+furSIPNiPc8="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.23_1525447238724_0.32665545402714624"},"_hasShrinkwrap":false},"1.4.0-beta.24":{"name":"graphql-binding","version":"1.4.0-beta.24","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"c8a9f286edd7c4ebc6e53c4a622609c15b22f677","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.24","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-45m9QHWXYony/sKPMTQGoQ2rmuk0qGbtoJ5MJn+Jesf2LxZ94huBFSJDidjPg2dTDR5712K9wwZGwqzcXaSXPg==","shasum":"7d593064447ebf90623a487ecb7ca7b8e9b5f654","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.24.tgz","fileCount":63,"unpackedSize":123811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8riVCRA9TVsSAnZWagAAAYwP/3d6/P3WHVpSAcr0r9dS\nBmVOgeikT6P1eSjAA2vmMbcwQgSo85SYDyaRy6FSMTipEKm2IfdPo8iCum9H\n+Exgp8SkFdl6DkuiPFsRLngWz/QRV2f7LwmTOZlTdIT5sbz43wFYAGaF07Oh\ni3TGCfgoEZwXW63AAS62H5C5p7w4VexyUoeY3RUUIxTH/TSQOFhXg1qw62bQ\nj5YcwYnwaVt5cZmvTp3EQezcHrpV56Lvk0dxcdhTX0nq8xag73du340CNzX6\nYlmJ8SV3EkwQPv8X7XOplNtVe6Fv2+xdzH4FDfhKykVac61kRUPIJhxvmSl+\n1hKV2+lG8b/vmxeXH+UToRW1uFhSU7wMQarlKLBscjcSoDUKiG6CIAMAmHwD\npzy54odVjZXLnU5kmvmegu6qLGjtE3HRFW5o1UWYJOSovHFSQbGXdR2I41ZD\nU9BDJKQ1txSC8eL8u8kDhM5lwAvrK6+7s+6df8+k/QkI4Q7BOsHWe/1wZPyj\nBsCiYMerd+7B1EHNA/qJBNypSbr3pktJSIMEoT6Pdlai2CDVIOW0kqa8DlGF\nH2g4/8LMzMVABkjiFDRcyS66VwmaXQ1PpUj8O4EjfBF+P23C6/8LOeMy54y5\nhuBPqLAERTKaf6O1dso0Xf7HMHtsDSV2bCmRfThEuSRQyET/xOzBL7Ll4FJf\nyKqO\r\n=Zw/w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAP5WyaNsNHOjYeGEAzbOl9M1iWpqvQDUM5w0SmgynJAIgQvkZlVcagHncETO/h5e/cC+6JcNf9E6yxfFrb+gNwHU="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.24_1525856405302_0.34621563228102104"},"_hasShrinkwrap":false},"1.4.0-beta.25":{"name":"graphql-binding","version":"1.4.0-beta.25","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"e561018cf6a5fc5871ea2f57b742935447252209","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.25","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-IXLpTObJWwKAWJRVfVtopi5XdOJazCZbdwoPdDUrgis/HypdG98vqquJbKopqnaDkwgIZsB7zvD7Q1LV3mvjSg==","shasum":"b816dfd38afa82a95e3180af13c8baa7be2b6815","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.25.tgz","fileCount":63,"unpackedSize":123932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8w52CRA9TVsSAnZWagAAxuUP/A6ajhj3HXHmEJBKRsOZ\nS0Za7Gf/K3O0BIk7rNEeNKqwSgS9FZ4XkyoVTY6Cq6qLIQwE1LtoGNCBeKgt\nv3fixAQA1Y99VCUoQ8MCNbaMjacPyrNsSBFPI9T3R83SUpvt2D6O1rBhY70V\n8fnswgKSw2Y7cj+FTFtfLyOrIOmpn7ukeboyVjmns9w9iu/d4yWuug9AmkbF\nmcugeul44S57AKY5jMOZ4ssbvoa9CsW2snyDFZmjRenNpDXd9P+X9odCGcfb\nTQcgGffzkOouZsiYtc3Gl9ZxUpIBogXyYpaKFeKSYj81tcApZaSQ7bppSLnN\njYVAvA2NGUgVg50X9fatWe2m60p9rhpOVXG9mIOC3O9eKnyHv8pljhIuuSpo\nq5WjqDiP/dMswssrOs5YruNkbpLna9fFoYkpgt4JIaqEGNgp2LE2iU7xxTks\nRRAEgi1u3HkPHbK8szW5MnB6+wny/GoWeKfifODnHyPxGzNGQXESZjVcl04V\n/V5zBp0BJsW0EN69vX3ZC+wImLCTrcUg0ZtJXe7XaFIfGjNUtcijePt87wDm\n7SnAeiDwQGZj3VouiR6UHwmz1p7trd8Nlu4/5hO0WYXCaLUNYGkJlv3u0cms\nPA7CS+DXN90vxulVz8/Co8ffv+IzHLy60fUn+pLG/lxw3+pCNv5QHZIb58sY\nLFxF\r\n=0HKB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlweGykGQTqp8VWne82HKV9uIteAALUWV6/Z59XOcSaAiEA+NL4o9mY9LbRMXQn49IKOMmhbt17TR3TCS7tu57LOFQ="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.25_1525878389724_0.023012243738069982"},"_hasShrinkwrap":false},"1.4.0-beta.26":{"name":"graphql-binding","version":"1.4.0-beta.26","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"bed63eee93176f36b02da41fd70dd5beb65899f8","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.26","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-vNJseuTi1ZJh6zqV0IcJuslSnFg2hk4DlHdxdkEPfCEm3caQ2ZP8P936WgV2KENUZ5IcXgec9a/siWnjCRXYkQ==","shasum":"0630ee07905afa26fd8950f0a9b33c6d3b053804","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.26.tgz","fileCount":63,"unpackedSize":124288,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8xDcCRA9TVsSAnZWagAAcFkP/iqUMg71GPfsDINCsIp0\n0TccYO6vs9et9O38swq7LAL1iVxYDIX7ZXGoxp5kVIYUYjJicX0jP03TJ8jv\nkuAcZqIl0EVz8ck5V+4W7ycsbpEr367sXJoPaDDXtdj1VGhMU+k0p9kDiimA\n8ROixwxc1MbcsrJSw1Mo8TADKBplywCCIn2QbTAAiOBxXgt+3hIVk2SM/Wuq\nMGZMr2Zo77CAH6g/wUT1mCs8vqF9qqtBJDwfs2KPQp0WwkyWxHt48BP91CUm\nvThjywP6G1egpwwH4ADP6xi0dFZ6nsyeaM2ukmyHZJ3AHB2sUt4s+pdCGDOU\nXe6K6Y6bi13f6Pdc4LCBEPpz6yuIKXLWeL7oByM2X4rAZa8i9aU5xqdTEZCJ\nWGUtZNlZNU2eh5SMt7GkbvUzLrxg9CQDLBGAryDhS2fBAKdeWpLG3AeBuWbY\nWq4Enic9lk1hfqi+3fjJI0Y25FIwkBWe0us+p71fS/yq6p4r3hoKEXDGpX05\nBPq9eJdObil/A0dty1zYrjNow0GtTrUsRuC4UZQVbaq9TXVN0maFWoenKYoW\nFaW4nUo7lDyQopnV5je1kjgopLWS+KA8msNEklHdfQyUAvwCLVE1Oij1dqpb\njH6DV4JpMPNINxVwkd27JggbsDdPFn2LdkqImcu6oNn5xpE00hrVa+fndd+5\nuPeU\r\n=+Qoc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBehxF3Y35TuFPXsBmWn3bRbkzJs+o1ltZ/QU2uombhYAiAwwjynCYo01YcDRVwfGO6zW4iIit/KuoUE/2tTbfN3kg=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.26_1525879003534_0.7106013221684626"},"_hasShrinkwrap":false},"1.4.0-beta.27":{"name":"graphql-binding","version":"1.4.0-beta.27","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"7a1d5397868b1ff82c856443cc00f5476af39b11","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.27","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-ajy8XF5ldp3/UsyXryoI/sSA2ubCYUgJYkSgskuhsNSt+sLWgay0wqWxg/t+KswmDO+WGdnblHN0Vq+JQ4rlsw==","shasum":"9098d91bdf83f597ff7fbeb2f31e28ad63e3161a","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.27.tgz","fileCount":63,"unpackedSize":123508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9DYyCRA9TVsSAnZWagAABTIP/2uxIbMDIWsGp8Lty9+a\nNSWtolB55Wvvrwt0cmAvDIz+DGO8PkIYJOkmDIpUWR3WvcBOMyXkSJLiJRFD\nf8xdtByshUU+NPrGqpdFwGAvyfIKUHHFIO1L0UrDt5w/qjY3gZz1CDC87O7V\nevnRKuxdS2RbOkmrtzM26L1SNkUIAjir+fg0tpIcmI/FmMZ5uu0srs/kXlcy\nvwHdxQ7sweBDKUTNZVdzFlJal+881IWA5FhPgsZD0rDJ/02nY+p9Kro7LGxn\nTX7XV4TuZ2IQu43FJ8R6mUhoOBEFQJ3noV05Vfqwa0rLku3ajbePR3s8kO26\nDQKwExcXZnNb+p9TwSG4FfDJVbM2ZF+erApMGkeJsxn1Ykc1alHhiY2vG21c\nBCddmdhEJw+zHVr5B7SeuXAWMU8Pps5jZ82nrRzdEGNamRl4s3fkbDatG7jL\nErL5P/bd/dE9baf8q6XI4TLypqEx8Y0G+aGkRPMNVN8N4UiyHGWCqbKW3ozV\nyY0u/bic9/079Tpx8X4pnkiXPPKGZtOUVGSDtF+ntpkHCYkU1CeI/CXrgYdJ\nRuNGBzbLWTyGZ4wo3EptfDEUq1RGxbDnrp50dwq/4F5EmcxUBxpYkB9fA5ho\n/Lm/DpUJd7ioDrtyAYsHG0fW+tJvFrj42wvWpFiD6SdTCe3KjE37e9nX+8Sf\nX9Nr\r\n=AOdf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDugGjlaX6ATiLabHA/VgCJUmRFd6x5uFoyh00Q4J9OJAIgNaAaifiWie6OECWDZ/PqUk4f4a+iYzi6rPVYvJkwUbg="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.27_1525954097528_0.5079297938019656"},"_hasShrinkwrap":false},"1.4.0-beta.28":{"name":"graphql-binding","version":"1.4.0-beta.28","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"3ed24d62e440cd2a72390198ddca46d3965b81fc","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.28","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-X9AxF5Fuys98Ab3sZAspKImc3lhq/NWZR5ega+dCVHEEoFarSWgBiPGuDGOlN59Wbhwjih8vwzCySvduinTK7A==","shasum":"9197a9b3a58659637f2d7dec561267cb689c7207","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.28.tgz","fileCount":63,"unpackedSize":123403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9DbDCRA9TVsSAnZWagAASP8QAIETi7kj0tbAAv+JHNOP\nnNG/3SEOm16PzHV1833T5xGCBjnwMnSV6uUbsQ0CaWhvr85VYvlbjAQTsBXJ\nVN+mgmmS9sJNS5aCPQC01fp8cXcfoNPKRYZXRM6pajFzk6r0BL3rOzZsh43b\nfNgV3tU2EATnHUvelYL8Fc0IUfVwV/bEmrUFJ9528VQYaF3/I1pA0hAxk8rQ\noDlIqRSLGBJTEVWeSBdPC5p+OChgwZrZWxrpPVCUL827AnxJ+e0bRsiOCoYg\nBShEZY2DotARGaAM6guTecXP7NQXioCfubdVifzSx5dazYPDM5tqmj6U2pjy\nkyoNsBNyJmBOodMcjx9e5Ndds2MUrpxyZ5IBT1r1YwSJOzcDMKRohi2GQJkC\nfhkQrRKM1cOm+cqrBAfYvsolcCn52EoxZvtzG639FthjjjL7geUOKjRvI9Zx\njJfd4lpXln9PQRkQYk81L0xKtpxGO2OFmFA+dBwEO1tEicrJpzxjYESUYadl\nCVdNuQwVbo56RQF2+M5b5kyZVT1MxwUhf6Gb3dBEoghwMEFi5UL2i2ShtN+j\n5Yr6SSVriWXwD7jZQahRFITr9LWmH5iNh9yp6cd59/N3tTEFzc3yGGdeLJkR\nQEqLW+NaCFkEaQ/CS7fhvK1TmOiEkMsHKc/VEJmCC0RppGsFU1DgwYBvhkrT\naKuw\r\n=lqtN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzEEQoCOvIOC+AxIFNhTSGnTiMXy28A14lK23IZqhdlgIgVOxDuTZFR2R+cpgNC0nButi7s/vGGDx8Oyln8ey82iI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.28_1525954242903_0.35253800578848904"},"_hasShrinkwrap":false},"1.4.0-beta.29":{"name":"graphql-binding","version":"1.4.0-beta.29","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.1","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"3ed24d62e440cd2a72390198ddca46d3965b81fc","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.29","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-ofMg/Dk8NQvB5BucxjIEdmoqV9t6OyKeI+OVheuO2iY0etKvSb29Gc2+i32pZie/H1VQ+AolTloYA/dOlZZHWg==","shasum":"87bffa7e5d6b215ab3ee189897dc20296d7c6b00","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.29.tgz","fileCount":63,"unpackedSize":123403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9Dd9CRA9TVsSAnZWagAATmYP/318BeOnvkIUCwE6PoTx\nKTZu6FXWfsNzhuHjG/ubWJfkiPA2u4br1paTBOUWlFiZO5/rbBZvRBLbfDUD\nvtuhlwmDEx6ESGjTlv+NplbWyBoO2z0+yOY/qYKtny1HoO6o2tt1KySXFuoD\nMVAU0X1GrYwS02t/81yV7HyMZYSsg4hh241zBtdMAsWU+oJJO0i9kVgbDjp/\nFy6yJ/RzutX0g9vyGRZwj4LKw18EL05d9AKktvd+f4BHrqQTU85VaZrdqMF3\ncEPy/eY8Gapw8S2E2sxLP5h+yG3B45Ua/MIBM5BJLbIFlztSrv90Itk9kgP0\n3sZzS0YCBPpYlYALKBZxemYE+mriCGVemNQ0eqmgBQaZEAhgDP4m2O4zQgKK\nnNOxVSxOrtVAwh3aU491F4o+SEZ6gHXEPc77X7L9IA+i2+NQMpNGlkAGLKnU\nrHK6kZes3AGatz3ihD9EPK9OmTQXPH3DAK8YGDNfgDfDefF2H/utts1tDAGt\n6TyJiYs1Koqs2CyWpJ/8XCFqqJBZ+FHj4Gn0m33jDOK4Y197cvPbSHbaqBvC\nfMINvNKwS6RJlP4bPcti4Iv6HtKknoh7AWy1hL75dBjy2eYlrSSxM6Japl+8\n2dtlmwJ4p8AgEiw/9rGSTyUw9T5MMPsV941o7tBFZBauu5KQ5N8W55lwWHjF\nNcSY\r\n=Zr/H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+4DIfw5CvFFvYu+vZTy5EFPcZAW3rV5IPiuVfneHMYwIgBFml6gh1qMnA9mR6tuqpsP4LMQjMrLvUUM5hGr5St24="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.29_1525954428681_0.6857111872417023"},"_hasShrinkwrap":false},"1.4.0-beta.30":{"name":"graphql-binding","version":"1.4.0-beta.30","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"0f29aeb745274d9532f169feb07106a5c9357747","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.30","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-bXv6FU7otUX2rZaXn+gBlC0XZQdtRCj8lRpXpNvepZ7ngTQknjBDlmFA6+D+iOiwkzt58xDUNUF1NK/GUvX0sg==","shasum":"912d3fd5b5a94eab671bce9187c0ede39f406b0c","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.30.tgz","fileCount":63,"unpackedSize":123403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9HEnCRA9TVsSAnZWagAA/MIQAJbVevrTApkvE/yX0qVH\ntm/YnXRw0Xs663uzamDbYKpmnDOTBG9d+P4/89jC2cP57RgyQUScpDDe5TEl\nAIZ77yOlNpo1OAA1jM4hRRJO3i4jLBLwGT85MiEzjGqsJkot/+Prs+srk0AM\n3aotNMKkJ6b9KQtXnd5uDXoI4nPGurCwnNQnXM854Wbabm63CTX+IBI48b8F\nzw5VAF+MtPGmo72zMzM4mGGKk9Lrkw7V/ASbx+VrPojnVH0SBiDX0KIEeUs3\nyHgFo5zP/e3DFAQQx9GI4uGIC6AvsXFy/XVa+9EkGeEKfRJTS08NNv1j6f10\n++VuTP0zBWHXvPx2rh7rhXLnj0gGv9eoiDCy4Fx+R5HR+SPCZA1T0QXvl3or\nOOu47zTRgKDqSgKwFmke4ZDnv5AzFOgulKLYoHSufZGlspJxgPq+dk9FIX+n\nK4PZ0kkaDeT/dv8Os11oihujDzJwWeYpwzRlx48wBz/ReeLp4349e47jcpjz\nhSwLSPf4r+lNuyhuMcXqRrsUHikT+lN3sdKYaRZLg5k7feQA2iWxFMbNTOdL\nD3pk87oIbXo12Tu02cre73UaQDaBjdIotPnhRT57gTS/yj0BLa19in+m/vmW\nWpef9dGbSvfptQwFJgZAfPYkWWDOajt+JPtt0tom4ic1C3VHBkkJ3G6dADja\nr9rj\r\n=YFYX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnY8CT9uCbN0MK2NPTVjYVaTWD2jdev3IDr9UpKi9cogIgJB9t/pAkDR9bKnJtW8oUiY4CVkatsnGKEgxPhECvm/s="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.30_1525969190698_0.5522532625444547"},"_hasShrinkwrap":false},"1.4.0-beta.31":{"name":"graphql-binding","version":"1.4.0-beta.31","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"0f29aeb745274d9532f169feb07106a5c9357747","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.31","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-3lDpDsj0ZLX/a6Eb6tXuvCxy2AM1mBdbfiGjgALqa1K0AqEgHb+YIjNI7L1RM8Poatu9Oknfl1mUNXgjvGtQtw==","shasum":"8714d7311c869fc529599c20bc1ca1764243ffee","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.31.tgz","fileCount":63,"unpackedSize":123403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9HJsCRA9TVsSAnZWagAAl4AP/3EfjKk+m5Ds7N8MZL7Z\nQzvXVkrXL5Vbr1gDiqg6nAt/OS9NYytRDT690xJ/Bbd4LF9E3Giew0/jucDG\ncdeSlYeYokqrkPLFwF9cDwaz4wUijF7fh83fvIcxxKdIIowIe3qPM0jHIxAr\nbzeQcnWHx7CUljKUM7AWgxgc/7JQeFB2JLoeEuKJ2meGx8S/zMVvZwjOLFdt\nuVFGe4GQbjME6aIMtVpvcHWjuv5WhQTIjuTEVavdEpnfDTGOIF01Bn2ljMpn\nSv55BwRDLxWdEjsnncFW/GEqELM5LgWOiRJKDmaG/ROKz5vzh7g4Gh3+kllr\nreYV1Z3vgMgOgaV89xH0KMJMclDj83gb19w1y9KeIRtiabhSqHlEPodXVW+0\nwP9XMqIdM+8ynRiYHydR1yY53NPriNit6LMknIsVFBq5rv5qqfrd7drASERN\nVEcLOlNwmM18H8OhOhnsvXMwwOo00A+05g/a0iopkiPGS5Y6pwRqxd139kUK\nQAl4YkTy43sliWeh0tVhsJFZXM1YDN0mSawBa+Ocx8BFRuDMDea8wLkWvH52\nZlQ2T1MLaAiE8tA1qXMIb8g8kNGbLN6UnOdV0w55CYMawCUrAFuh4uOObpf2\nfA/DURcEYGqKHmyYGyMX2xjY6iyeH0PXCE1nwX/s1pGSUvudWfN/k4XYCiu6\n6UUj\r\n=yKwE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFkVYsVCv+tgTgIvM18DcLYA8KMIHrQBN5YyIcosFnNOAiBdjvE1OU/rQbsdOisZTWRsP5nXq2b9FYBNfdaPPXVPhg=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.31_1525969515525_0.54356718761234"},"_hasShrinkwrap":false},"1.4.0-beta.32":{"name":"graphql-binding","version":"1.4.0-beta.32","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"0f29aeb745274d9532f169feb07106a5c9357747","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.32","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-RVUbhMrMSkQlrfnl1nzIb6+kPOqnRGYAYjbni6gGgEBWCnHTtNhYdG5ZvAkprNQrvLbq5A2iK/B7vf04BC+FSg==","shasum":"f53d30f23ca31b8f90b2f20681501fc8267a00ca","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.32.tgz","fileCount":63,"unpackedSize":123403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9HS6CRA9TVsSAnZWagAAp8EP/j0Vxyhd8TrY2nrYbBHc\nC3D/eA/7SQFsFLDMBvyWCL1enuqtbNhLKFfxSZxeV2HhvwvKElS61PjPnXB8\nNJ8cikSwqy9e6UPFN/CXPuBQSYWLYxA3xZqTqUGk1XnQCM8qA/6WAaIW1pnH\nahF1+pcx1pVmezTRCtwh20bzIQzOioZk8MOARlz6jj/byHr54QxMhY5awImk\n7/dh/1SCvRqNPmybRgNA5ffCLGWVFlG0v62SuANT9E507jSn0jp9UralofXI\nfQ4dEx4cfdjiRsZNNrlyREKKeFpe+ZlntfLWMkIEagY3Kp7ZIIDRC3T3SKFR\nHloKIijy5S3AbLRqVvH3Eo9qeaQa1YNJcvNTfkJOs/jPJt9cnm8Jw/1w0arR\notW72wsmKW+gCoIsbTxrlJi41ORwkQjRkyu2/sg8wSRh6I26hg03OV8mYYFe\nlF5Gv3Wh407fx/FrGSR+o8BMUmYtSNWyP+bH7kUd+2RnULdnJ0vXaqOGc/Em\nvFrlYYJecm0BnkH783ExgxX+m+7qMGzrhNQrn2oZOLt0D+uJcWNMJO/ZwTI5\n2XIjEdInCJ9dHsWTN5aZbBhYWeufXlw8/3gPOgDgkus2vDgLMQMadSdTs49y\nDUTLIerroIHMOcdT4k03AMHIrb01Vjnmh2qKqAr47zzDqiU6YgEMFvko1ch8\n3FjF\r\n=z3Gw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXdBk3Ssp/sQxmPrh/cdNmuGRut5yZxRAx27W3uKJXZQIhAJrzgsCj0H2efJAqJcAdUdcXY/j+pytRA/WaGDFEzZ6D"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.32_1525970105767_0.3810255219873562"},"_hasShrinkwrap":false},"1.4.0-beta.33":{"name":"graphql-binding","version":"1.4.0-beta.33","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://blog.graph.cool/80a4aa37cff5)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## API\n\n### `Binding`\n\n#### `constructor(options: BindingOptions): Binding`\n\n[`BindingOptions`](./src/types.ts#L27) has the following properties:\n\n| Key                    | Required | Type                   | Default             | Note                                                                                                                                                                                                                           |\n| ---------------------- | -------- | ---------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `schema`               | Yes      | `GraphQLSchema`        | -                   | The executable [GraphQL schema](https://blog.graph.cool/ac5e2950214e) for binding                                                                                                                                              |\n| `fragmentReplacements` | No       | `FragmentReplacements` | `{}`                | A list of GraphQL fragment definitions, specifying fields that are required for the resolver to function correctly                                                                                                             |\n| `before`               | No       | `() => void`           | `(() => undefined)` | A function that will be executed before a query/mutation is sent to the GraphQL API                                                                                                                                            |\n| `handler`              | No       | `any`                  | `null`              | The [`handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler) object from [JS Proxy](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) |\n| `subscriptionHandler`  | No       | `any`                  | `null`              | ...                                                                                                                                                                                                                            |\n\n#### `binding.query.<rootField>(): Promise<any>` & `binding.mutation.<rootField>(): Promise<any>`\n\nA binding object exposes two properties which can be used to send queries and mutations to the API: `binding.query` and `binding.mutation`.\n\nBoth are of type [`QueryMap`](src/types.ts#L11) and will expose methods that are named after the schema's root fields on the `Query` and `Mutation` types.\n\nThese methods take three arguments:\n\n| Name      | Required | Type                                 | Note                                                                                                                                                                                                                                         |\n| --------- | -------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `args`    | No       | `[key: string]: any`                 | An object that contains the arguments of the root field                                                                                                                                                                                      |\n| `context` | No       | `[key: string]: any`                 | The `context` object that's passed down the GraphQL resolver chain; every resolver can read from and write to that object                                                                                                                    |\n| `info`    | No       | `GraphQLResolveInfo` &#124; `string` | The `info` object (which contains an AST of the incoming query/mutation) that's passed down the GraphQL resolver chain or a string containing a [selection set](https://medium.com/front-end-developers/graphql-selection-sets-d588f6782e90) |\n\n##### Example\n\nAssume the following schema:\n\n```graphql\ntype Query {\n  user(id: ID!): User\n}\n\ntype Mutation {\n  createUser(): User!\n}\n```\n\nIf there is a `binding` for a GraphQL API that implements this schema, you can invoke the following methods on it:\n\n```js\nbinding.query.user({ id: 'abc' })\nbinding.mutation.createUser()\n```\n\nWhen using the binding in a resolver implementation, it can be used as follows:\n\n```js\nfindUser(parent, args, context, info) {\n  return binding.user({ id: args.id }, context, info)\n}\n\nnewUser(parent, args, context, info) {\n  return binding.createUser({}, context, info)\n}\n```\n\n#### `binding.subscription.<rootField>(...): AsyncIterator<any> | Promise<AsyncIterator<any>>`\n\nThe `binding.subscription` property follows the same idea as `query` and `mutation`, but rather than returning a single value using a `Promise`, it returns a _stream_ of values using `AsyncIterator`.\n\nIt is of type [`SubscriptionMap`](./src/types.ts#L19) and will expose methods that are named after the schema's root fields on the `Subscription` type.\n\nThese methods take same three arguments as the generated methods on `query` and `mutation`, see above for the details.\n\n#### `binding.getAbstractResolvers(filterSchema?: GraphQLSchema | string): IResolvers`\n\nIn order to have support for custom abstract Types like `Interface` or `Union`, the `getAbstractResolvers` method can be used.\nThe returned resolver then have to be included in the resolvers of the application:\n\n```ts\nconst typeDefs = importSchema('app.graphql')\nconst resolvers = {\n  Query: {\n    hello: (parent, { name }) => `Hello ${name || 'World'}!`,\n  },\n  // the following is needed to make interfaces, unions & custom scalars work\n  ...binding.getAbstractResolvers(typeDefs),\n}\n```\n\n### `utils`\n\n#### `addFragmentToInfo(info: GraphQLResolverInfo, fragment: string): GraphQLResolverInfo`\n\nCan be used to ensure that specific fields are included in the `info` object passed into the bindings.\n\n##### Example\n\n```ts\nimport {addFragmentToInfo} from 'graphql-binding'\n\nasync findUser(parent, args, context, info) {\n  const user = await binding.user({ id: args.id }, context, addFragmentToInfo(info, 'fragment EnsureEmail on User { email }'))\n\n  if (blackList.includes(user.email)) {\n    throw new Error('This user is blocked')\n  }\n\n  return user\n}\n```\n\n## Example\n\n### Minimal example\n\n```js\nconst { makeExecutableSchema } = require('graphql-tools')\nconst { Binding } = require('graphql-binding')\n\nconst users = [\n  {\n    name: 'Alice',\n  },\n  {\n    name: 'Bob',\n  },\n]\n\nconst typeDefs = `\n  type Query {\n    findUser(name: String!): User\n  }\n  type User {\n    name: String!\n  }\n`\n\nconst resolvers = {\n  Query: {\n    findUser: (parent, { name }) => users.find(u => u.name === name),\n  },\n}\n\nconst schema = makeExecutableSchema({ typeDefs, resolvers })\n\nconst findUserBinding = new Binding({\n  schema,\n})\n\nfindUserBinding.findUser({ name: 'Bob' }).then(result => console.log(result))\n```\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n","readmeFilename":"README.md","gitHead":"0f29aeb745274d9532f169feb07106a5c9357747","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@1.4.0-beta.33","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-oOWgAJpT6zaK/+8+J3Rnv0SG2rBY/JwHrBZCl+0DLUg4RuH7Q3Xk6eIs5236CFPLABmHVpIzDxNkDUhcRPNE+A==","shasum":"dd909b337373b918664023f0577fcaf4ac7a790d","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-1.4.0-beta.33.tgz","fileCount":63,"unpackedSize":123403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9HuyCRA9TVsSAnZWagAAfLgP/jacv+/XhwsGJ43+DNHr\n8n1PR9MdsFuEh+nNQSSkms8XasPiNM56gm/nSTGjDGzSOulNmKcwfxVNqsQp\n0zk2KMlbIOfzCU0X4rS/nkmcvySfKO5Wr8E1mKY4HQDjYC7m7BslbFAm8JB0\n+01y1D3E2I+dTKz0ee3otuz9m/C/+uQd7AbbKEsJLMBoyJKCHUUE6MRKALjM\nHrZojkkPEs+ywaLHgB1htUT+kUNKMun1bknEn0MQBnQYWOtRhmvStCD1q8QJ\nu30/J76hY8A02A8dwkUW3R6krOdKoQJdHOw0qI0wiSlHqu1L/uoS8RIq1YQv\nFUlYP8zAo7liW/RDwfM77Zfx9cu1WAa6RJX7QHjBzHipRTIYtu/25/lf1YXL\nGl5kfnjQC99iSo8MQ2jIe2GrS6FDg0DqcaPcDTGnnGWCtSrQY0VQ1p8otIIr\nIcODREarvEmnxQ0f07UrJch6srH06nsd1w80M/ZIENLrArabngSD3/R6lPwL\nrvhh8YPcWUWQsDoBNzh/g6NfE9Sd2B7nVOUOBs/eTJgJmxejoGR2BQSzcUUq\n7hzkAX67VNA8pqRO8IjxrorDNbdFR5BP8ctGxV2XrWPAeC7rLd9dsuj2yh5V\nvNb3wabz7urRNsa1B4QgF9Qc8J6OkKHPMGS114iAZxGIjszoKTKBNINUf/QU\nnhpy\r\n=V93R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0BBF7QgDo53h7Y2GalqYymwEZLRBJ53iX3Z9Req2PLAiEAlCwfUxu3BNeKYsomeWr3oQvDYRHHRK2P7X3GQpXvK9k="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_1.4.0-beta.33_1525971889736_0.7943497275896076"},"_hasShrinkwrap":false},"2.0.0":{"name":"graphql-binding","version":"2.0.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"bab55349edf349f956576413578742ee95f588f7","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-JalW6YtfiZ96GPKYVBUfcDiFvX2+rnmjadrmNFjhWw+wKVfYQKM0AjInDH/XPlf+E5SgRe5jSwwY1CGym2e5Rg==","shasum":"6dce5842fef724327a2c469c5366cdf6ba903f30","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.0.0.tgz","fileCount":63,"unpackedSize":116308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa9IDeCRA9TVsSAnZWagAAQDQP/jFqzBg9T7vvGKlJAe6T\ntMmcg7xViFMItfJVjTUgrgROb+hxg/tBme05V9AMavk2VIvpHqWLWuz0zz8c\nwEtPK2qeLOuVrzofdtfYdeZ0u6vvOO6kJQiaYy4emEME3sEJLqSnv8UrZwhw\n4AlAChpMENW4dIr+kuVNHPDwu/w+6WvSZEBGoO3aftUsH1SZS9s9b+156lRw\nThZWlEktQRH7UXkeZirOos3swNmNp4pkWyZdS4sIhZAUT09G7Oy5Q6/726w1\nUKFbak5882p/WfmGJdaZ+Ue3tgU+h8lJh+CQmwHu0qLClM2Lx8AN392vmw9A\noRr+BJwyCZfW8ZNszJDlvUbPMAtITiCBmIqrODnNWWMVQv4qbhK8GunlB7PZ\nEEVRKS61tHUgXcAV/2cVP5Q4DbsGkQnMs/aK8PPw6s6K8RDKoanZEeNdE/De\n+D21cDmuyYcjVgeW+HzsruuXTnInHFBDyHyyJ9y5yTDkXlm2h+00NAw2hAAQ\nqRelbDiShTrFhEk3BKCrHS9qpZuwVdDIJMc0Dal0nkSEhCLdS0vqa93c02yG\nAnW9UBFs4KK4y0EWhxfmW71rFOwXn4po/PdhA/cmgPhQQhDzjbXY7QAscH12\n/AJnxV4hy2N6SuHHgYc9Qh3V5ToHBglsaEdCPQysFa/Qte//ng239vzvgk6G\ndeXO\r\n=zQ0f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIARxSWFlK6/d3T8FR+nDUGpMcF4Ccs+2e11cd/AljXvrAiEApThfnoxPRG//Hd4E4Y0f+1jXllImDWi7Hjzi1acSMeA="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.0.0_1525973214216_0.5137744641650721"},"_hasShrinkwrap":false},"2.0.1":{"name":"graphql-binding","version":"2.0.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"bcf6ea57ce0139adceb0e9c5651ff5b9de7f7b30","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.0.1","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-Ou1ejNYGpILNtV9BDoANPEx2O4Y+/5C2Ok0YwSr7tSTI6uyP/DAjyeuDUk3m1LGhvU/MGn1gVjo07xePfhQljw==","shasum":"5e2591651a16a26d476f59bd2698c2b11b195263","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.0.1.tgz","fileCount":63,"unpackedSize":116396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDQnECRA9TVsSAnZWagAA4C0P/2fSU4EeQBdibHKsshUk\n/BMrnahgrdjKCleI3zVCjlQfVZEWPV4B/OmUYGvILgg0U03rbt0SnxSxzFTC\nSw7Dl4xmwi/TsWRxBv/44I0wNfp7TqC7o2dVZefUQxeDshgCo6Pg1tBUASnm\n7LaFNIW2CElBOUzxE7Lo5NsWuE20brk3jrk3nliGpX3VT/5VkavMXD9Xx7xs\nKPGnFjOeci8OxpmnvoFGgwcUj211Hf2q+ByUCtrKmYVl8jgXdioIu+vFGvim\n+fkVWYcCoqMW4xdzTpDQx//NzRjXNGWSj+y5W/VayruPnJH/4eXY0mQfZWb+\nevgKgWyi+9lWpLHZbaxnqC36+eoOWJMrj3Y5yNnn+65/rwYVleF8GhmJB5EV\npYEfusGlJQnYHgFNde4qc96Y5D4tETd9oiAO2A594UA8AJXN3pO7z5BsWGQ3\nswKWSmOLqqBjxmhdNm+K/XOMaYdGOuOhHUWUb36L4Zr35AQ5pzuclfN+f7pZ\nCJR+rjVM7ijDmvzj4S8Cp9S6FHMi7IQKrr6A2FHJoHf/zNXw6XpYp1ahnjDi\niCb0uZ6eBb22jzTosjsCiFh3Z4FM3RsvLiZS4108qF64ZsPg6LZRWg15IITJ\njvAG78mHqIsaaWL6n2EVRAiuiY+sUiVsuAk5GODY4ycsUUgdp24o2klJ7GBI\nsyg0\r\n=ILp+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBgHsR2Ifh5FH0SO420PjQraehLSQjBD/Ii3x4EF/hVYAiBiBqHpwjPbqGN1owzqkgKTeYCyiL2KQUF8kiM+naFGlA=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.0.1_1527581123458_0.42759580112112583"},"_hasShrinkwrap":false},"2.1.0":{"name":"graphql-binding","version":"2.1.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"bd9311df3fd086d7b5aee8d4fe070a5f6779843d","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.1.0","_npmVersion":"5.6.0","_nodeVersion":"10.2.1","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-8kSOrR9IOtu2ZglUUiSnrgC8TkiULKo3IROhZbnlCp6KKZIVNogd080ph50naaYKCVt8pk0L0tHx7ro7MB2BMQ==","shasum":"7292aee06997f64bc9aa6f87259c5d1a35246a1e","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.1.0.tgz","fileCount":69,"unpackedSize":141565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDQ26CRA9TVsSAnZWagAA/8UP/0E1wHBekmg7QEfuK22t\n+qnwzCAojUpF1I8cVtRMsyOUY/vGkMxxIvcX8IKTJnM0brBFTIzsogS6yMuT\nfAeItLJ0ofw6lIvBEvoiW0lDM2uJWAMH3XNcmziIp+uzGBWTlaapsWtnjhbE\n0ymA2k42tNFOBAxUQnv6G4Cp0UC+g0L/hbRBPiH+oqNnLCjE/9dt8QU0xacl\nOebOKwIhJ+aL/fdL1FN2jIWoHBNhnSa0w4hurU1Zd/+8vxREgtajV/gj7tWh\nrtxNaa9Y8dq40mWsvvHI5CZQScNnSBsauhFWigrd6vYgxAaE3eM7bSq529+8\n7XH46WRQj0fQpoN9TMTofQVW5WvQrjIDtcAljepP8ebVvMUp1cC8Gfk391Qp\nDYjXJx73AzPYFpf7MbmVRlzhaatllRfU2zxVBM7Qbk09nmHmx6G7nO3QPdmi\nwCWn0ZOPwOIn3IyL4cYxgUaGFtnX0rYJAxsaOA6Jmjt5pUv0XiQTatJPaOuK\nkN6D4jSpLWDUfQBDcd7VnIwGF4VxvyWIgS6s/AX0nGPRbAGLCD3tumYQU+/5\njLFbY/ZNHsBmKCZP4Ge2H9fpQqxqVKxszp6GGJ/cOFxpV+FBOz+IOZsBi/gs\n/NSfSnCpcrhUSt/NiUDf8pD7pHsbtkN9IPS8R1D4rac8ogxNR94KLT5zB42L\nB5Zq\r\n=R7ww\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpWD3XBsLFVid1B8GnyAzTDAuW8Fb5MwVbM+kiTbbbvQIgcZGM4Gxv3B1h6dlYvQDKDVUQbZV//g6Uz+B+2bycXcA="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.1.0_1527582137655_0.588758795036274"},"_hasShrinkwrap":false},"2.1.1":{"name":"graphql-binding","version":"2.1.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"3b685430c51658f5e8487f6039544b6cb6944c6b","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.2","_npmUser":{"name":"schickling","email":"schickling.j@gmail.com"},"dist":{"integrity":"sha512-Bx70DaG0LVUKIle0N5anQ97T9bIq6RfUsPB5wa10vYbytp0kscLoh9pMlVtxtQ6KwrfkRp1QhV8pa2fMHxBeLw==","shasum":"8f01f8da8a99f9c703ba96167c5925bd05ef14f2","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.1.1.tgz","fileCount":69,"unpackedSize":141650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIUqhCRA9TVsSAnZWagAARQsP/AiV/GfOeL+xz208icSu\nafY+mvCKCL31uPPzFIdat1+vAU0JSRPvMgYHYAhqPw73bwBiuOcsu0W8vvWL\nW0BYpPtvh4Mw68qmcD5iy27UNiP8UTSOqHKDGYfITSRbaWZ5dPLH9IVexP2R\nmnPmmu4+KNvmYo/WTrK3Kwc5ysLGzvqEEhnayZzF0OKbdxYPqV3fT/NjxBnB\nQ6f3R3r1ZtZtAFJiH2K9R9oSxWOA2E3MYbwCBTXGzR5pXAR/zWfO8E/7XDRt\nhRy+Nxq8qU/6a//VZaNDvrylxLOhbYqY4+RL7mnHEjdaUSo2/2DKqddDmDY5\nkRGr8UI3sMfehOh+c8W9G5Tss3Xh6arKHIFkk0KsFD1UtGs1OLnjb6ZD5ZPC\no2vMCifsmPyQFJAS1UqFCwuXOJipVC0lUnyVU5BjOBeD5Lbx3WHZch5jowcm\nPhQshvJaHxQGqgsdw0ikzmWYXiVs25lzdJuCoC/btdelD7Wc2TMlmduwhdxe\nOo7+zg7ZjEirjEMOcsVhOJn4hIP6K8b9WOccXTO49E57Z5g+K6d/OIimE7KO\nvxaK9HgFwaOQw6dcwbr5XCay3TIiNlIOStoUgcDgXz/aQhbS7iXCtDbq8Ykl\nPHzG1bYQMsxXYD6klVxu3SVf4RqmU/7sKvphHA38gGIx14IdqcsIr5KGLr9W\nkGFh\r\n=4CJu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGju1HLkXHWqXi4U0cpKY+q87hX5LsOpovfE5SigNzWiAiEA4w8d4BXz+j7jH9uwJa6Qa+M3wuvMq4dM2e+g+6fadgM="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.1.1_1528908448407_0.2199088096765982"},"_hasShrinkwrap":false},"2.2.0":{"name":"graphql-binding","version":"2.2.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"9fc7abcaf5c41595782e4029a11b45968c4625b1","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-byx3maUhse2P82v9k60zSRCG/tZn8LaJmQMRxheMvIRjqzd89KatglzK1oltCihfy3VRWFtd8pz6Jckcd/iSJg==","shasum":"b261d37136bb386e303528d4208d45e9b0d6809a","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.0.tgz","fileCount":69,"unpackedSize":141728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTacTCRA9TVsSAnZWagAA/zEP+wZR6D2SvtfLl2web3rD\n4EpaCvYwb6QnrhUDOJy1o3TQZT79tjg/EmXREq3Mq7xIoslFblicH8OkzFC6\nlpQ8dRH/KULf4DtnyYAiLTWB1X4e3MP2bMGV9BYHbAF1PVX4L84sE2VEe3R2\n6FFl7IIhpMOBh6UUnutGlu2lI98i0Fn+RoTXoTSewJQRJoTBzGYD+4xGjlfp\nRXA9I/vd6Opo0OuqFspT3nmHKhsuIKuqW2HamAfJCHQmLVSC7XtIqIM5g/QE\ngG1UXqvnsuwkwbEYMNraAJaveu+ozM2T06iSIWhW4tB6QYSkAhYScvbBxyuN\nqn2Ux21ZQ2FO/Q4uFNfMj3OLEpHmLWauUYOYEFhQ5ar+0toe6XDmCIGsS+gR\nP7M9a8m/eH4PTUeUnJVcWsin6CbnFQhJWHgz34tRj2kCRFo6rdMk2aimKgtQ\nQzNxDMr8/EjpwwoxT5DzSQoeDr+NouCpcNuzzWpfIdzRwsJ86VIgqQ36l+mJ\nnqErFfSzxgBC+8OAiS6W0iXAygVNXuBZQhQQDl+wG4cGJ6DaCagcQTOeblzw\nvQ/RQxHqodq8RrllGUDC7I45QprNCeGyfJezxlgU5YUiHIXRwVy9/+8ecvn/\nR++Sg2Dn5lXqeprVyM6ugHSzZsfYwJ1ORmK10rs1YF7rDFkUXw8lTP0EVGg4\nxiIf\r\n=WM5g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAMOkgKnw7fJl2YMTB+XLSOrxuvEWu8pAr/CcERHHyQCAiEA4N9vZsZsoDdtZCnI8u+0oIwVB2xl3vColy7MZA3+0mg="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.0_1531815699448_0.4984148923332059"},"_hasShrinkwrap":false},"2.2.1":{"name":"graphql-binding","version":"2.2.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.0.1","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"b3b651ebb8becf16c2f20038518daab0ae140cdb","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-3tufkuVt1YkYGnsE2b7l+fn8rdL+w5K0SL4aSf0xnum8tY0NEDbxTuKUIJ6roDbRNeHvNDXBH+3t4SJ5j8CjSw==","shasum":"a3742714c558ab9f0e7f86407a40e9d9b8833bd7","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.1.tgz","fileCount":69,"unpackedSize":141928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTwwYCRA9TVsSAnZWagAA2KIP/iLECwZhubngALWxFfcB\nSKsHh/Ua16mQas4LnMt4B6D46EX8Thn8BMNR39vLurgNtyLgI3F8sFKXKBfe\nmzL+MjsW+Vrc840ZeSykvH1pi+6R+OlqDoWkVF43lrjK7I4QSBD/kJrPsBi6\nGESxtGn4pnVYvf5cW2SqjLmedDhFZX4vrWvWrDZvpDOP+dOBO8smGFEYsptN\nMP80Cpw1zjyPeGAa99+tgB0kqfU2MlqxIXKhSaSDnLklek1YWVuJEdpmYOn2\n0/fXAuN9hbpvKWAEPfKpj/jXbcou9HrNgUkjhMx9zpy+hL7egPCoWJdASZ0o\nyxkl46sB0RvT9pllk2i34+GMd27ob0RX28KE7aPfm8/PgmiQQyQX/5xZfaid\n/uKuB41F8tCTRqDztz/DNw92jlzQFZiQ1nmMjIbbpUeL/I69znL+K7x5LXfh\nKoYWT6agnfw0mo+KqBgk1CrH/0PwF5Hzf4tPMoVKdgoo//X5CpCQZ0XiPjM5\n+x/8p+Op/iuzq4tl7axERoyxmXOJMl0bdHfdgy755cN/xuO1ArXvuhxXQ3RQ\nHzhIUUliKyUnDzBARxSmOosNbuaxmnpyQ+jknOTOV+HsQq7UYaHQ/aHNBiQs\n8gpoY/2M9Wyx/5LTDIgTS0IQtD5QWuyAyvbs9P0NeY9YCvIJc9NoR8aQoiXo\n8Jf5\r\n=Ic4j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbMqAhuQEZ6/PMfXCCGhb7Y5dJ5k+WXvN9i+BXfH0LhAIgHSdiKmGqBZzoin7qJwbUG/eT0pAhDvbucPFIqb95jNU="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.1_1531907096541_0.1022943338700475"},"_hasShrinkwrap":false},"2.2.2":{"name":"graphql-binding","version":"2.2.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"b55bb1f1158e6ff7dd7f0310b18aebaab1643e42","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-xPT3iBlAgK6NiwjL02/z/j6LRkh0mUzbc5n25Kic4Ayf/CP0ea2IpKIAJEd8Rr3T+47RowcppmtBzKhFDGZEdA==","shasum":"314623a39e5a877f81ffee4f23062ecb2566897a","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.2.tgz","fileCount":69,"unpackedSize":141928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYqUkCRA9TVsSAnZWagAAJ7gQAJrejrsEojXBajgO6wPa\n6y2ItOLLKqbPZUIWjTMViJCHr3o2c1LMb9fpQXPn57xrPEqzS+Vbu0cV+oji\nqTXmpO89fHnyQhuUulau3vawalaJOueepqo75uyOwYlQEGSClsWKn5OlVPBq\nOzvS04jtLFETEmeTO/ozWhxAFKNe+YpQUtGRv1Sio4afU9UIXysV+8IZ1toI\nBp0Pl2ivejMO+6uA+fvHKOuqC5RgF/5u1pSv96cwRGD0U4agEoBmEHK1Q76Z\n+SwnYc23hvFG1Xbdwypnm6IHXYG3z1uKgFI2XZIoajPDRsA5Mnl4Ccn56Z8i\nbMd7vEY3p4mY1rci9r6wAuD4nPhbPz8UTBWouVwN8pTSEhSYDIUL4CneLEq7\n9WpbpBnSAWXATN4mc/RnRQfwwi9nH58k8G9c/3Zo7FWX/8y5wocKijWiuuyN\nvenqkifOAJJpqyT1TY6s6igBd71dSSnHgvU7C5NkjiHj+CU1aJoq5wTUmYSO\nGDIfNI0+GeFX4+waOwWoBuFVjtsmWSg+4jYN8OslnSdiQj6ypdQhUF4zg7lv\n1uAPLDqDkWoJDltfJKspVTjX+415mLb5VOP0jD+aEzp/2O/ieKTXuQS+/Sf6\nZSlPviup7JjmAHqBYabYWrgc3aYOkB0ABESEnyZ98OY5HOSHc8UheIHbNk0h\n1+vP\r\n=aRcB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCF5A7wcxvxHBhAfr0a5XdCjJAdzK6uFajy0syiVq7dhgIhAL/aJywqOgDlz0Q7wk2WM7W5jz2chi/13DIc3Ajntvw8"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.2_1533191460000_0.013430977292907764"},"_hasShrinkwrap":false},"3.0.0-alpha.1":{"name":"graphql-binding","version":"3.0.0-alpha.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"f43044a4dc142ffad99c81b98425eb590b22951f","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-XQIvb3ogdnCNy/FJ+3uBIxX8OIHDpA+WnwimzCtRn0y5oTsmYOzeuzM4DPBCpaQDkHOuAcAm8NMF2umZwdFKew==","shasum":"431e522ba1ff75cace9999962983b334193490a7","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.1.tgz","fileCount":69,"unpackedSize":163716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbZNfCRA9TVsSAnZWagAAQtAP/jx4je/nT2hoCpTHbRTY\nVLEfgsNEtEs4NoyT9di2SVEe29a73tBlmvIoKsY03IdZbzNsfU8aHnbH6TJr\n90EmA+gkW1ywhwunWrhNAQug017wX6y0++IWPhWSxFTHqDc/e7YohdFFyUWZ\nW2acCTQZahfTCn7N8oeMW/6BC5znuL2Pt6jY0H2Y6P1/hLMQ7erME4/APseO\n4QyBxMaVZBxyV/gwZhrbl4tCTOOVw7W3KCyLEPNHfuz+e+OteTHLEHVhKyKk\nP8O3+HMJTnO7mMXvAdcsKFuh0OhYdARR9D3+GBV7CFVtrFoZlcqhjBePIXhK\n9p0Ch3Qhl+QRFzK0RMBarINHpUWm77Kax5ys7DJA469B8cdB1DeqAHi0zPZc\nMQBvYpZGiRtwZ8AyQYNTqXJ6OOjRcP7i5LdgFAISHD8hKIHswhrykwHHUskE\nlNYm6nmvRWdMeJRbVDatrePCtCao9IoQXcJqjFGYifNSDP6HT+zklYPxuHts\n5xmaTWnf+ljz6aKzXKuf9z3Kj7uHoz0F1wR3Aw2j5eU8s/XGz3mc99O1UdiU\nww+ltJUtkvh8irdypU8pdBFwaR83PU1IwWazahEyuKielVvt+ZQG/GHvizcz\n9BSYVK3D3HRrIJ3Csbu8iuSYelJZMExYSL/CfFpFfRrssf05fTSO8bQI3yTn\nmV5q\r\n=sCPZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWSHgFww/eXhSANOmQdNLb7tg5xFgIt5djAVqEExXaUAiBgPfeWBhTIJg3RHA21t7FtTTUXgPL4JiIAVFhynr6umw=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.1_1533907807299_0.17215711804912814"},"_hasShrinkwrap":false},"3.0.0-alpha.2":{"name":"graphql-binding","version":"3.0.0-alpha.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"59aa169b6eab8a1a8b02280c1d654a616c06aeff","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-hT9xanYuzyrN2OJlmXGDWwx/GT5Ktk9ZqlL92+GEo/beHbObgDlSDUzzroQRYNktXqDrWzXc7UkXlx8bY4YtAA==","shasum":"89845e8c8eb8a1ef6d65194a3e855ddf685747b4","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.2.tgz","fileCount":69,"unpackedSize":163777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcU6mCRA9TVsSAnZWagAAprQP/iKcHchzwuQCoJcBrAeW\nORA+2QZVjSb+0rKOtds0f79Y+K+TthjtJt0XWfTRdg0IvzxGdrt/kak076Dk\nWU8h9IEdUDkKe3MiCZJ95nhBmzrAmHUCDPk6UwqkDuYvxNkomYHm5IYNLjQf\npOf64pU504snjzNIGkOFmZDvcUQgwpatJCnAutqHJAAqr+nM4tJsKjac0CSV\nPPOw+3PtLzfzYSt8XnxrxB1vBtBYoAntLgb8pztWLv6qUzPmrVdAJWZDXn9T\nNO5sslE55ykq5uS2FsRsLlNHdykbI54mz1TxYAol7CaLUo3ldFd+E5k/3R6k\nPyRg3hCIFxV7ZiS60rZJXNrfjX9CJCX/LKf6alMrX2l2h4aNTGrZEl6CR6w/\ng0cVb8ARrgem8b6D/mdPKVormroebmXkHYvIFPPpM6A9E14yne9k/+fYTb5y\nT70Xgnjl6VnKSWFnC+K4ZIpRTXDK7WaSWxINYPbE6u7oYUf2iyyDTVRsr/86\n9ng84r24rUi9wDAKGk5TwiKmzpMQptmkW51IZeL5mxVwtn4lUr+6HmMGQpU+\niNn3jgJNWbvqi9ZSxnZb3cVv72Avyol+/XgJciuuMTqsOGYKzveWOy4x7Pad\n/A0WmdQ0bU0RNCi2pICQ/jc10mmiW/rTHNoT1fKl1exL6lGHQU+kcY0kZHFf\nHRvO\r\n=rj43\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcOo1bQyTocPIrXejjOwnwqn5khGw1eZSRrmjJa6SXxwIgSCPFvjN0ysp5bJhAQd0ALdxGm6wb5HuYDhuQWQLjtzM="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.2_1534152357827_0.48657084783171034"},"_hasShrinkwrap":false},"3.0.0-alpha.3":{"name":"graphql-binding","version":"3.0.0-alpha.3","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"59aa169b6eab8a1a8b02280c1d654a616c06aeff","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-7TPZx3eAUE2mm9juwxzYBit1KNgHJBfNy0k/ivmY/tB1E4UZRyqwIFSErOD1h9Pkwp+OysNsq/KNvILnS1CFtQ==","shasum":"10b9ea2c76436d17a559d5869b3f171845133bb1","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.3.tgz","fileCount":69,"unpackedSize":163847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcVFKCRA9TVsSAnZWagAAyAUP/j6VkAOwVE6Yaq/ySqx8\nYraZNeiGRwyQrnP20V/ssEJmvdnrfqZuMCQcmrrKTErisc5P3mJYD4GwXY3Y\n1YdvAu/Ov6ZNDlRdgvkNapbxOXlb/tX6O8rhukYBLu+bpm9CvXFESAJDLaQo\nO14gRH3H5mNvSGVHPsDS1UJ8HBftbJTYMtIVQvmtruHgrvYOn5yk/XEiV+pL\n3zmqc36FOY/YVNM5e1EWukDaxVaDshqrUAMRjP9IB5gVQlJYk+Cf66WOvtp0\nnyTEswXvwC90eDJ+D0GJdHqb4jAWQ3PJ+ZiqwiFpOKspUKXOHRcuK0vE5l5v\nzeY+l3w0HT/tfJd296dlEn9948EwYFD8u9e3av4jMYd/2UA2cSsEWKGFROvu\nnEHNDd2+BckNsv7/rGAe4N4z9NCGLsgTDmC1SD68cI78tdDa2yE/RGHTiT6b\nWMpL1JsfnPPC8KDo2cTolP3ZpvloFP5uD0xYlsGUjtfS9ikc6nm1fmGS9q62\nwObZMrl3cdyYAgILMQCekX7NTUWN7tFK1amfvqxVnmz5vBXMYUvvPGbAx2kJ\n9gApUsPM9b267BX8mspxdQpXvy3BNMjzRU/Yo9pHi2myv5BZyxtEb/aIY7wR\n9ySs6F8FzM4XFXhVQWG3lv2FsYIHlnfQ0gDlkPVq8T/SbSDZmjbG/UZ9mb3S\nD4sV\r\n=tVF2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC4tKVYqVC7aiSjJaLfGF/WWFw71SRQjExamPUlY2sCuAiEAicmwwhZy9CR7kel6VpTCG8e9OgSNqJk6FK9grqLkoio="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.3_1534153033751_0.7157842873968403"},"_hasShrinkwrap":false},"3.0.0-alpha.4":{"name":"graphql-binding","version":"3.0.0-alpha.4","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"24f6d34f1f25cc8dff61eae926df7558064354bc","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-55hWdN3YPV3gRTW7B5lkpQIU6Deb/AwTT20HYyZ6/f9GnnC0/8ggLgyqU/S45ODYNIurxbDjeNSrEW+FoRF2oA==","shasum":"360d7843a1619bf2b0e018758426cde237014b06","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.4.tgz","fileCount":69,"unpackedSize":164634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcu2CCRA9TVsSAnZWagAApZQP/3/teGm0dXmJSsR5lK+b\nWGDlk22h0f02THvuf4e7ygIEYNIBCh2VxKn2+ro61HaehRv7SFrbyxb/U5OI\n0mGwjXHL6ApNtu7yqcJa04nm0XEoUDMTatspNzgYfkXYx92e7CwuS0mI3LA4\n1ZAYD+y6TXe41/OJxhtizq75rNZGP+ew+l6gwtG0LIF+9jiTbC6t5WwlIjFf\nhv/oqiY/+BBhop70xbKht0Fk0evuq2G26GaQBZ23CjG2yRbFFRlgwnFquhFM\nzxR05Fczsgoc3Prm/3lj2epE1V3NwAlOuOqAIFHNFpk0a+Ey8MjvYA8uWoSS\nttF/Z5MxPcAK+9KIiiKeE9v9oqGi13YNaQkw7GTglRm/7NAC/XK6jv1LDma1\nRS1tPQsJs7TAmxFe5oO7EIzZVK0zRreSyTqVENYNn1ArbjCUHDB6VOgRl5Ac\n7ymvQIU4maYAxzUt75CmY21TE3f7zba/4ZHuqnRDJo+skGi0gSReeo/k6kLR\nqwARzfYthGV0295kVJ9jNjj5W8Dc6owjRX/g6ORaOZQSUutuDKn73eLfpc4E\n6tkSvb/lvZUj1fTMAifqJDyK31z9QxS4+WEYIqW2FYKYZgTqX37IQpsMqGby\nlToc4z0o+BlDYyneBjPmZWw4La6RVQHui7SIdVnKCXtGQf2RcUo9StpMOAxn\nRZwq\r\n=dA86\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFJMltBsc71QT0PlPSuHm9jxE37sUct9Mk7YLsa+1RGyAiAsGIRMLPV9CQJCzt8WdV4+/6T/RJ0kB+fgWIk0nNtY5g=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.4_1534258561794_0.8899957099683025"},"_hasShrinkwrap":false},"2.2.3":{"name":"graphql-binding","version":"2.2.3","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"d349174363a4bcdd88f5e6b8366d821cd579dadb","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-h195SNniXdeSX6ob6f8tLXnnSMrEPaIqIbwisQShI0STT5CHZf9ynHaHnS/ag2NcBmt5KPYwop3o5eoTS8KFBw==","shasum":"63dda3f520094889127d28cfe59dec155b22561f","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.3.tgz","fileCount":69,"unpackedSize":142082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcw8ZCRA9TVsSAnZWagAApugP/09TJQcGR7TNp0NvVtjz\nE970DIEeob/g6Zx3K//mphkMYKQgJBMnFAeqo7TZjdSvQnGgaH6SM44ugLr7\nIPTVkwJGX+PoOdWcPgDPo6mob3VaEpQK5lbJCAGs+FO7Q8FerwP6KqdsDzbj\nwzex2cWC0xiDkWbaquxWwVNbHehGKdUVxhDzH76B0270ZyIvRffAqNEy3cO/\nsyBb5dxIM0z2WJwbT2S4yUsuNhoH+Zekqd8hYc8r16z3tahGXAZzBy3WyOTT\np9YhYGcsMAN4s8ZZ4yuNaN+xrzJu0w/Ph7xAl8vs8eU+eZQfUKG9k457ODi6\nqlWhP6BB4d+9u7QIxf3lB7bujXI476HBYgE3Y5Xe2GExzauzlpSEk5j81EL5\notgum1Rzn/sawWBQdsYQI/GjFmZ5xZ56OW8vzJvyiRMnBDCV+CBkjZ7JMbuf\nZJP6HX6ddSK5lWIBOJYL6uL7rn+JPupSeLXLkN8DyN81FX8A2MVYkJ/hkogn\nOgy0bsLAdiRkBBSAgxKAYiplhXGapOdFV/1roXCoVdZdVG/3FYtZe+V5TyQR\nf/KazRX0bKN2YTm8TVWQ/ZWB3xZTjGnkrrnLFe2WbWs9mvM37CI7uuKxvpkE\nXx3dlzI/u0heNoVHSSIShUWsT5UJ2/jboyMUQpRAYAFWqSLnDxiB3YG5uPk5\n6lpz\r\n=Wvoj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJNJ0MIDT6v9I9pSRAL/N27YRSVBb2DCaOXssOZwtZvgIgXJRPsfC0SKLKXPLoSwpnwLKGBa/2v/fl2U6mGgCJoUI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.3_1534267161085_0.5863100233203298"},"_hasShrinkwrap":false},"3.0.0-alpha.5":{"name":"graphql-binding","version":"3.0.0-alpha.5","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"3c99bff9aee9c0b642dfce688cf9dd8397ee62fa","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-2KORPTSWZm4IJgNZUPcRYmQXDJki4Jr7+A/N6qUU5a31X7NlgyWRAuq12vxwGnW17dmmMG9Lr7ggLh/wyVzP0w==","shasum":"87bc3cdd7672198eb2f96705402d44892fd827dc","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.5.tgz","fileCount":69,"unpackedSize":168985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbc/u/CRA9TVsSAnZWagAAIEUP/23YqVCHTho0w6rbbw/H\nC8J4RtfJbrIe/++TY8yvKwZyzKgzQ9w3mFV3Oss/FnOea+gCgwuSBKJXChTD\n4gm1pYVfVrpzD7pnilRYAOPF+fgoFriphySHMTsa4/3519im5A06Syv03Dyh\ndQNEZ6CXvHaOxUGBdp1+USIloX/mFdf8L+3T75NPJmvsjPT3duilAaMPPGP1\n79SdYmWC6guSeq6lSaLkTTqplq+LMILU4fl0gGLN2okH7YbbpEvdxBBmWXif\nOODp6jXi1kwdKaX9sQG9E7zpQkFV2kINI6OjdWVK+aMR1eJtJ3a0KYpSwHDA\nnQB+CW+fhPVR7gXAV1kc0ci9e6TJKmqYHpM9GUF12+7i9Zmg8QqzOOlsNBTk\nyrafsq/GnWWFfAL3QnDqLCWXFAGCNNewnctVjAFiGzTW5tofaqasdNyia+jK\nWA/O8UpA0sZawxF1FwPAlcRWRhksXVxDv4pbIdCUsDUB0T1ncncruW3IJusw\nNWRgyNoTszmrC5zc0spJzYfIi578NcT+6dN9aMp0y5e82dn5Jm3H5hLOQ5PC\nKhvGfMLp8M75pACCkl8DhT72JyPDDRSqpKVNd8M5gj+crsZEpQ3R3wSGL70K\nIDpQPOUoFFEXmIs0kYPtK5icJ5TLAXLTIoPPg+GQt2POSA3cGGqtASQ+0KD6\noSRl\r\n=iVA0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNjme9gfOVIq9fOS7jGMN2okAjqcrJWkthMGEeUn9PuAiAEtMqg0L8GA9VtOhveUV0utyFeRFFeRhYNOpydqdkyKQ=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.5_1534327743372_0.8025963874349265"},"_hasShrinkwrap":false},"3.0.0-alpha.6":{"name":"graphql-binding","version":"3.0.0-alpha.6","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"3c99bff9aee9c0b642dfce688cf9dd8397ee62fa","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-S8kAAbiHeqyaBxiAFn5qTW8lEvdlMXP1KDd51zJh+pz7Ch/L+E7u6JEchoV0qqwKVGa0ErZ9ywvHKnLU79yXug==","shasum":"f56896cc5a8885d48f8a662c2e1de18a528fd791","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.6.tgz","fileCount":69,"unpackedSize":168976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdBnuCRA9TVsSAnZWagAAnYIP/1w20JZVWAkYyyXcxolK\n7DGuKxvdzDdKrtWNQM5PYQf6r64mhtzmy8T01irCTcJUcpiWwNNHbqFtdVvP\ncylmbbLaJqsIIX0fls9zYwiyrEAR1KPFGqVxu2eb55ppKFQbmA6Dl2mfjA7U\nxoed0/b9Ue8j15HJZwHuzLYTGXLZJhg16Lg6QPqERzYC6Z4jN5Dnv0988LiL\nmLH1sLtcI6GymGhvtxY1LHGbtM5Q3GEbVAQsU5+nB8vZvyDRaUNmdXS0XxBa\nC1tuQA8sHJEoVheZ0Ih9kis0N148M7GHrCeRJS/LuhrLFl12HT1t7igurt8X\njwEG5xnbqxf/4cdzIqubSVSBbdwoRUeyZ9einJwBt/tXq9gzyHuHqmSkPpbn\nxX3hzQKYx28nIoPkpH3u9c1DG+PQKSSSLH5afza+6fWwzBqLKye2CrktZBry\n6ID/TxMl5NpRa4MMNwl/p6wqRLZQ7x3qwfIxSs0bwRAqs82RJfhf0TSuIKfJ\nLm/kfQyKucm7G51R0Fawv+DlokIwWoJuvIT5cijkeQBujuBPwjqVAc9LHs/Z\nNcFl3aOV8BRwd3sky6IsDwtV5J/u2yU9ADOnVHyopy7nh+8YzcFnnNKoIFHh\nb98xRp9ZnZfAGgc1DpB/00TJj7LM3gztIoGFYg4W58gRyDu/canLUj7A//YS\nSrUc\r\n=xLE7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6hrxejCwttslYaXCE/0eyZEdISffVGl6kni9Sa0OTqAIgDdFeLpvW2lNgi2h1W3XzFQGKithbfePbE6G2pZSPgWI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.6_1534335470196_0.441577378131093"},"_hasShrinkwrap":false},"3.0.0-alpha.7":{"name":"graphql-binding","version":"3.0.0-alpha.7","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"3c99bff9aee9c0b642dfce688cf9dd8397ee62fa","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.7","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-F6DTo7r2Yu7q+sN2szk9A5VitBNm/3l0ONY9QgX0W5vaqkHeZSm7SsD6kGMq0PF0DAHIk9i/xAYyIeyltwSRPQ==","shasum":"ee211adb958785cb1e67bf37f27fcaee7bc5bc44","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.7.tgz","fileCount":69,"unpackedSize":168976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdBoUCRA9TVsSAnZWagAAGbYP+wW53SIHA+OVrhkarNct\n2mHCMZZB84/nf68SUGTzEvy4lt2APUQOfo9PaxoNNjRSyJunlBss955WzXw5\ndwh1NlpIUFh/vxVt/OSfSUVT+QRWHmCyUkzV4W3WlsGRPdUKpXgT1X5KrAxB\nZKEUE97JAn5yH1jtvbF879Fv+FNZq4C9rEhRxQfnxiyr5UsoS3up4LIzCC3k\nky6gCPTPhX52QE+OUC8KJ1JIg0UGQSAa1gXkBXP4E7sCrGJxwtEcZ61jOl21\nWYY8q8GxNQIduK2kMhufvLHaaIXU0iDs6wtJ+HJ2o3JM0kKEu05cXelWUn63\nUEZY7hv0sbYtcfQ3j4tdJ7nMPOzevVj2GE5TcQNtxbNC3gBaTHwziFU4iqXz\npYIsX/ZqLMpxT3tAWpzSAxj4bU1egizjGXY07fYFK3iR/eA3rTy4n3681EGe\ngDEPdaUI90o6o1Yv3u9EaAnW/gpjPFf0bxuUmCoWvynPuOfqQA9uYEbMsVC3\nSzKxGe4JpP1gyGFIq/3h7Co5aCrjFkoE6vXaWGIO6I00yZvCCrxb9ek8Jc4T\nj5CFUycHeLnRAjnmWCwA0EH71m4XocaAxcNR6b5+sEPlyNG0JicE88Bc9MYW\nZtBin2/4QOSAZHSh7Ofh8aw07u+Xl7rVm/NFuVmmkel6lO7a3kjUrBa9DkQc\nU4Zk\r\n=CDAC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAilctqIAIdxUt4IQST1qRSi3hTpw+wfjQcxs78SLCrmAiEAsnEctZsbxrdtwxrhoEPQAtyaVWre0/5WbG/I2dnFwVs="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.7_1534335508172_0.614938605597797"},"_hasShrinkwrap":false},"3.0.0-alpha.8":{"name":"graphql-binding","version":"3.0.0-alpha.8","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow. \n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n* [`graphql-binding-github`](https://github.com/graphcool/graphql-binding-github)\n* [`prisma-binding`](https://github.com/graphcool/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://graphcool.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.graph.cool/).\n\n","readmeFilename":"README.md","gitHead":"3c99bff9aee9c0b642dfce688cf9dd8397ee62fa","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@3.0.0-alpha.8","_npmVersion":"5.6.0","_nodeVersion":"8.11.3","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-qW5O/UemzKjLbo/kfCHSBIi91+3ehvJNzdMww5E1fzFtxnzypb/9XlK++/W+ZthDhQJukzvnHIAWo1qnsn94Fw==","shasum":"71dba6cce374d01d9cabc229f9dd80981a1828d8","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-3.0.0-alpha.8.tgz","fileCount":69,"unpackedSize":169318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdCSqCRA9TVsSAnZWagAAlbgP/1pJ/mZZwXXH6C655oFS\nRVFvfhkcOWmfB3GsMhmfDjn9MyZQbCJL8JvyzT3hbr/z+0WVV8nFE8/KFg9p\nL7RyQn0lIKTLuOpUKf6GSuIgC/EcspNyyrLkZIy8boHhIkrpd/UbXoRJmA3k\nqIRjr8J1Q2UX4KHI7PYXnFlup0l1CY4aWX9vwKftQLj3IAJE5+59mkwz3iLB\nmKrDcgrCUFmRAEB7e/+BrXm/reyRC2NBToBKj1A9s+pvs4EBIm8Homiev+x5\nOD9UDQDdVl6MAi0gMqEYdJ2kLzwze02qqStRdLBG7IAI4oT+a/1Gfoo7ZsKn\nxAQfoQUVTDzSjpQ2ZH7kynvfiJzw/uU3weZhPyEFSDkDrODUXBrxes3x6GvT\naza5dsP9vY7V/LG6fhmkJtiYwskx2sSfuS9tGsU8puTMpN21si/lwEQRmWxP\ncaRvBmU1DQhln1ghwGn1GbwcACXdeyMGFt7jpabLjWPJpSdYLoTEb67z7/jV\ngvlHJzZlNA1Iz9NslWkS6GwZf1zV47dwbU4SS+F8USq7fNyPpcUMaLA2S9KB\nWX1Mw6m9JW0AEkXPTqyv/r5c9nKYJBUPMuz3GSIrIeava7LE++hxtUPogm17\nkzXvOZP0JpbJbJV0+tpEcde5sBR+eeqwbIIJ00NcdH5o9p/Cblmodf3LP6gx\nBk6Y\r\n=wu76\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFSLGxUI5FJZSld9kFRMR5WISud1BkrxgklwSCQvBWYdAiBx97V2A7wGMFIsDrZp+xOzHhiaRwJWTCeCV1OurRwuMA=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_3.0.0-alpha.8_1534338218678_0.7919921712445694"},"_hasShrinkwrap":false},"2.2.4":{"name":"graphql-binding","version":"2.2.4","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"files":["dist"],"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"3f79a7901ce3f9583b2a2a4d296e87534646c6aa","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-HgMEZEFiMUVAlcbjEGdPizLfh5T2LfrxFw42SApurh88sIo31+LfLb5rpW+W9wGdmRGA6WXdQjBZS/Q2Nsk0QA==","shasum":"997df7d2e1d7278950e64ec21618092e414b635e","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.4.tgz","fileCount":69,"unpackedSize":142067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhP/7CRA9TVsSAnZWagAAGcYQAJP3iRBB0y5U7wJAI3C6\nOD3H7JBVsAnJHWlXLYkNMFbZPnDPBi3/TYdEFJh4U5x1QAbScHemfy1HoMnK\nZo4lop1MibZoM4llk+/Rc6M18T68PPJHcwn+6tPhwRWJAxnm+1k8CbIelYp9\nTDWcDiew2AYWt2/g8/1qx/9Uu8EPVgMQaJr2LDm2xhCwPUZSOQOTtkpFFnXI\nyolI+ZHmaZvsVwnbjght0n1bX3xYozNtG+rK+8G+EI3e23Ka1OECSBHuBXrj\naKJf1PrR/Boe2wfb/8R3bLtRiXQy5G5MkfA8ddvP/nJTI7wSAPG6v/LWaHmX\ncT24vCRGMvmttZ6vy8E4pLxud3mD2ksuwg9hn9PqEsk8m2yEbnKHrpBSwUTd\nJBSHEJ2cZDkIOUGmAjAB/wMI/r8Vn4YDCtnwoK4mU9yWF37wO2YexP7/W5PB\nDOPKwjR4XCp2D7lbUgWRX9MiZZtf6C4tpUJbbXy+5+Gkn+2S8kWZ4crpDlhx\n2iDwLvaJ3B+rdPgbI13i1EnprgmgDBnWtLn7bDqwb7Jv31jNNhhtmJFdh/91\nIvYdOZGoHrSmyizouCbsUgms//kAZhccJ5s4tsysL3lSdTjYOjseHPVfwADQ\nssiJmb8GFlda3rzwzIwRxg0LR8ANALOyCtuGgTX60M7ZIjq9ZTCD60T0pqBE\nb1ZY\r\n=Bdu0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwOoWE+0vZXWwjtKIUA4REE7tMRB89rnTo8ifSNHpMogIhAISjsBtAueJT9ndgZsPiEUxCp+HeoD2A30FR2bxYUMSx"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.4_1535442939033_0.8348268785223696"},"_hasShrinkwrap":false},"2.2.5":{"name":"graphql-binding","version":"2.2.5","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"eb9367e260466519531e33c0709ce2c0430282d8","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.5","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-fCcX4sOgM7/8+xdBGElIPURlFXq1bT+ri07NAmKJ4WLUqrsFVTdskqv3b1femiV1e4qEYEh71tYixi5c3cea1Q==","shasum":"c71c5927793a90bdc77c7c339f9236d649e67d80","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.5.tgz","fileCount":69,"unpackedSize":142158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbomafCRA9TVsSAnZWagAANOgP/0dBjzVYcebqAiVJ/yf7\nLtfAKlkmI07jYj9yaeJyMYo2TvxeBrtgP29RtaGjC+1VgQQzAlA538Cw6C3c\nRwNNzobBOlwAWzdLzNhys0zQNPG8qkwKkKXSB7loAvMe3yI9JGVDjIEcr0iw\nRKQlTE+v9GCus8nM6jwreHS2SSxtj/lWgNP/TPtrK554l6cmlYrDK7i0GEcO\nWMsAZ2KDpY01E8t/SGJWR6Iwxe5FByvDQCoflCp68ki5jD6qCAgq9062HvAI\n2mHB4E/MHmz4s3xmBDNhjSwn5E6xJxeywWi3T+0Mnpz1uZJhNpRcXpq5PuJ2\n4Du7/RTwY8Vmgnupw6lYHHLN8wNwTMIPtqzpvOkPgMuK2eWJdQFAF7yoVOsg\nDy/5AYSPN5tH7WQaCDKHibipWYSezyzsMirQfRM3HrvvDCWMaXi8NP5HXxL1\n5CEiIu3VtH4K+Fp4VAUaCfKPqFFeKnJcJqNm7oEmqFsx/PYoR8ARwECkjZKc\nNuxm4oTYQsyMB5ITI098fQ9GVnGR3KTw1xDuAnHtgiNZ1ORKXPan86TJEFrZ\nCvR6fePV6xAJc/G4nFLyfwDbeoSrGZXODqGY05tMCWJBeh0LO43OV2YwdYWh\nn7Kz8BRIe8YFq0fRHYKfjW/F5v6ylPO6XcDm3Qn3gVzUBqkDk4WYj6e/xVXt\nDPZ8\r\n=Nysa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBlRMElYV5PjORSphKGV2xHlpRxzwgrWmD9ltvIk4sfgIgaVndNuM1fDa/FPAO7sPj9OGpAaqOvevKPetzmAMJ+bg="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.5_1537369758717_0.6913868997276968"},"_hasShrinkwrap":false},"2.2.6":{"name":"graphql-binding","version":"2.2.6","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","typings":"dist/index.d.ts","typescript":{"definition":"dist/index.d.ts"},"scripts":{"prepublish":"npm run build","build":"rm -rf dist && tsc -d","test-only":"npm run build && ava --verbose dist/**/*.test.js dist/*.test.js","test":"tslint src/**/*.ts && npm run test-only"},"devDependencies":{"@types/graphql":"0.13.0","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"0.13.2","graphql-tag":"^2.9.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"2.8.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0"},"gitHead":"0614831d8510f5ecbef2e76c080d0f97672346c7","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.2.6","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-ThVjlPqbU0x9StJA83XctnWIaVWW3wqIBI/VGF0e+bIVqiwjf0v2eS27T5usWo2gcfkYyqJIB5MO7AmOpzHGgg==","shasum":"a006dd56de3eb6e90db8e091cee87645095ec0e2","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.2.6.tgz","fileCount":69,"unpackedSize":142383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyBFECRA9TVsSAnZWagAAOaYQAIgpxiUETBWwL3sKrWpi\n73mfDUhtaY4IC6L6k3i9wQkEd071++/vaneCLAxau5XJR6jM5hwzjRvl+cnB\nrKD9UnCg6DAVA+Nh2YFbdDObJui/YlZiDHD0Oo8O9zqfdNdsUVCfV+cH31VW\nsQfE5/Xlu+VhH5MvUuD301HA1FRuZJVv+ZnJOaQkv+EWMM5V0vUBc0uYDwK8\n8MYhqxXOOjh2FrNG8U8py5jd2ha/iuX0j+rsdu0kxJQW7c80jK/CPaosUQ12\nfduie/oy1Pz9BJ2R6EPfLMRv/xA/0gJHpmVAdZMDik38MMv6asGeaEnJkj/E\nw10kTk0XlG6sIUjnJGrKZmX5HnhOMGnxuzmqpYr6Wkzs4/udw1YxJ9zww7+b\n+PFcwck6R+Pte3fZS0lsUeDTi9/vTgQTAU6akc6rLGIyzmChKjK88G8V6DGO\nyN6ZVquexghN70ASAIEBwufKcZGjzkJKcJZQyVxmgqY/X71pkisCAUBtp+36\nx03mY5pbGZ+FO0PvWnLbiH0ftN20GPDTxflvcvAGtzDx5dn/uDwlUWqNNaZc\n8RWKjpVElgY7hWESCaA7WKtUrf2aQndJzUMruVrvZA8xD+T6i3dQAVjEtBvt\n+5jN69Y3G4ztRhXzanAAa8Xn673vhI9+Ik2BEz1g11oFh2VsCuzRyQieFFGh\n+813\r\n=+Fy/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCT81+98puThrMv/0xZdGcu6b5VpS+/spy6v5isRtKjqQIhAM3RRuXn63w834nGWYZqKcsBaKgajlPEdwG3nRzn98It"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.2.6_1539838275366_0.9419686054894227"},"_hasShrinkwrap":false},"2.3.0":{"name":"graphql-binding","version":"2.3.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"yarn build","clean":"rimraf dist","compile":"tsc --build","lint":"tslint src/**/*.ts","ava":"ava --verbose dist/**/*.test.js dist/*.test.js","build":"npm-run-all clean compile","test-only":"npm-run-all build ava","test":"npm-run-all lint test-only"},"devDependencies":{"@types/graphql":"14.0.3","@types/node":"10.0.2","apollo-link":"1.2.2","ava":"^0.25.0","graphql":"^14.0.2","graphql-tag":"^2.9.2","npm-run-all":"^4.1.3","rimraf":"^2.6.2","semantic-release":"^15.5.2","tslint":"5.9.1","tslint-config-standard":"7.0.0","typescript":"^3.1.3"},"dependencies":{"graphql-import":"^0.5.2","graphql-tools":"3.1.0","iterall":"1.2.2","object-path-immutable":"^1.0.1","resolve-cwd":"^2.0.0","ts-node":"^6.0.2","yargs":"^11.0.0"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"cd8ac5402a4476775dfdea88a666bd0c11a8f9d7","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-vccgRVdQaSNrKbiDhTcun1NLqogQ3NHalZwbPln8Pbp+7mJ+6enu3HaOnhQOmme5HLvX8g0UbHcXOWzROhecsg==","shasum":"b29292e0139f69598ace42fb50eaa2dac3c72874","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.0.tgz","fileCount":69,"unpackedSize":146069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7uO5CRA9TVsSAnZWagAAwZMP/1hjnbLJlAY0d26NAMmb\nPhP8Tpkottm7OfA1Na8t1VNfjEve6bnKG6UWU15rqNhPQHmHDicbCYEs666J\nVc4UQGUKapj2UmHcBoog0v+c6PCOGYmktzryTDhu0UJGnsHVW69nyzK06Fa3\nmCeLNqCkd5m28QgyQoNkidrg6aSHuUp9KNcmFBR9Ifo8tCVuiQPHgRUd8xoc\nQ0AAQdJ8A1YFMt1bWpS+1wuAz/tiGJ9WjgB2r/CgHz7uJOYBr1FbISZrYlQp\nhO2LTrf9arTnvsP54KcOvVlIS51cBH4G/hwfjb6lmXDE58OPGf20Rs1tR6yg\nY45zFPDYKwXSVAKydLERPceXpqyAhGlydXBAoHmwytugR4ZJqaAWNniyxFKf\n1o60sv682LONMktYCecvvrvpdy9LZWV8nSb9HSZBtcPQndnTgJLZ7l0EfVlM\n1LNfIpRX71SDmkvPpfR7WjfSupW2c1NXlDOW1VXMwqnfQhvBCJLXyFbmdIGk\nXaZ1nyZyMPk0mjCl7t/XpzUZJZ09m8aTzEyKeJAlPXzhIXM+khudFyeZVnNV\nKszkamhwmzKEOvo+Wo2LezgqUUcCCswugqEH47hWV+U6l2AZHZfcVLeay611\nEWvIW4e1dIopHHUEZpmidsC3bGVJ2+apBTcTRx1ipjf0g5fDCkWPpxXewl4M\nhxjH\r\n=Dmpd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDhY4XMKnIAtYZL0k2Ybs7NodlUn1wZTWarS2zKS+fhiQIhAPzxqH2Leh0CNHO/nVmWwmVs6MufP1CegtfR8vuip/4L"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.0_1542382521002_0.7413054051655259"},"_hasShrinkwrap":false},"2.3.1":{"name":"graphql-binding","version":"2.3.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"yarn build","clean":"rimraf dist","compile":"tsc --build","lint":"tslint src/**/*.ts","ava":"ava --verbose dist/**/*.test.js dist/*.test.js","build":"npm-run-all clean compile","test-only":"npm-run-all build ava","test":"npm-run-all lint test-only"},"devDependencies":{"@types/graphql":"14.0.3","@types/node":"10.12.9","apollo-link":"1.2.3","ava":"^0.25.0","graphql":"^14.0.2","graphql-tag":"^2.10.0","npm-run-all":"^4.1.3","rimraf":"^2.6.2","semantic-release":"^15.12.0","tslint":"5.11.0","tslint-config-standard":"8.0.1","typescript":"^3.1.6"},"dependencies":{"graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"b6d979ef1ebdef43a777e4ca3d41c0b89ef4d6e0","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-/vDjRY6CS/XmtX6ACIvuaZEN7+NlZo+Amq0Smpu4FzKSXZ61L3nBV0hAqWsPW9pr9LpgMn972BdAJTVyhw+/Dg==","shasum":"e96af6bb57476c02c830df75f0a77a10eedec739","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.1.tgz","fileCount":69,"unpackedSize":146073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7uW0CRA9TVsSAnZWagAA7V4P/2xEFKPE3qe+FrRB0JRR\nsUf1/qOe5jWXTFoI0Uj6qu1Tdb8rwDYcSR6klDWmhj02WHkjbL4ayZth0BMT\nTTPqkTFgzKQdzmf4abJiQ1JlsXUPR5TbkmbgJc/MqoO4+6iN8EJXMYRDHpGz\nt2TrTbUfHPS9mugDMxSVR56Wec54Hc14C6jd3AOvH7gLlje9Ljer4JiM9Gj3\nbqnmxYuspNYm8bQsL7/zAQoIBTiErJFEcF/mEip0swF1vZ1IsEKJQtwNO4LM\n9uyBkH/BRKJcgkDK16Di0wKPJmMUuYg2A2C9syqbWcZCpQFYR2lwaoKYSW/2\nvkjl4NAjPT67Up77xQ/QzIve2MLkH3CEixS437Niue7yxWYMJh+Lg/p/S0cQ\nxPH6ZKJuYsAJNyZOhqNcIwHSpeCXJq+PHgjD7WWL33lOIUpSyGaDghSiQkux\n+ALifHqdDF8/Mvg+7a7pMOAWkZqtxNqrzQKVvRmYzYh33F349dOeoXz0ZNI9\n/hqFeTamFb3bym4UgRmLZk7aQRkr+shcUqPAKDrab1E0rId4WYh8ERf+vCv9\nzjR9579IviyAeouW53oDfTcXAOGmzwUQcSt2L9rY4WpRXAF3v7NlGJxDrikH\n887IqEt+N1vRLsIWtmVTdNuYbIwAwig94eM852Uj7i+zGNRZ+ZAammFLW+aq\nYMzE\r\n=N851\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEft3yVBIozyKd62w/9i9LvBvCWuYGXwIl5bhveSQp1nAiBJiTpm+1NChrBZzq8Vx/eNa1a43TBYPe5tgLNrgN4ASg=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.1_1542383027535_0.16172365091682228"},"_hasShrinkwrap":false},"2.3.2":{"name":"graphql-binding","version":"2.3.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"yarn build","clean":"rimraf dist","compile":"tsc -d","lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","build":"npm-run-all clean compile","pretest":"npm run build","test":"npm run lint && ava"},"devDependencies":{"@types/graphql":"14.0.3","@types/node":"10.12.9","apollo-link":"1.2.3","ava":"^1.0.0-rc.2","graphql":"14.0.2","graphql-tag":"2.10.0","husky":"1.1.4","npm-run-all":"4.1.3","prettier":"^1.15.2","prettier-check":"^2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.12.0","tslint":"5.11.0","tslint-config-prettier":"1.16.0","tslint-config-standard":"8.0.1","typescript":"3.1.6"},"dependencies":{"graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"79d0417c11c01127a4f3bd4eab9e785aed9f0db9","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-NjtzwxyFCKcrmcSCyrnO3ZJXJ12nU/C/Q3jcaz8NMii0CQf8TyVvlVpE8CViGryFZ6GTtSkV3B939f3lTm1rAw==","shasum":"05511bab58ffa13ee3035eca5f29e31ac2f3d7fa","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.2.tgz","fileCount":69,"unpackedSize":148420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8HuvCRA9TVsSAnZWagAArnEQAJdmDXt4gcNXk+Bj26Zy\n1/b9xlW4vv7t3Brfp9AV8ubkuS+BMSQUCXXdnw2Nc3SSiNoYIStyjf2WEzDB\nUU/qxkjNdCSpzJGeSlTOJbaco6EemIAuGFgjy7JGzexqXzzC/+cOKlmKttQZ\nOv9KC8N5BGgHHkRETAAdw1QsXQV+OtwDGcSKKBL9QWZjvASx7eGmi6ll3RuK\nRcL7dV9g0yGcEf7GQQW6GwKPulscMPLPBvSmA//LvMGdmEHMPo/rsFKHynVh\nChIshh2WVDOCSgIGFA1ERfjtkDtuowW/aozHTW/YEOX66UkTpFo3XzA6v5Vv\nGCWG5ppIpBgSQ06Qy/pjT0p84OmVePN2p6ghEmPaTjmCMWbdxIvB/UsXA+ee\nPFdjEjhhPVL7WzL+oIhEwaTUsOA7lWhfFNQGXwRNC6Teb/8d1hGF3hPztDsb\n2za8S9/Q2e1G5SPRg/CmPydJ4keqQuxHwm5p9V4GaZr0n5tK8MJvFoYv9/Qd\nCo8N3R051UMl1XWRmFti9FCXhGD+/vHCwDrrf0kBqk9Og5HbZFQonYdqqHya\n8JGXEoBs64A/yihbACEt4bCyZJgbEg384t7qnidDdzVqwjJdyS5c22XU52rW\nz9yN0fLQObbaWqEcZ4d9KVCYyKn8qB6sej60YrygDG2pAayHE2CB6qIf2ILH\nzRDy\r\n=f5x4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC0hkyDTD/c9Og4hzI4R9xTHxK0H75Tnc1m65b3wSkvDgIge6IRgDqoBbSLsTKthEBLpHKC4AEXAauNKjzddlB1rEM="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.2_1542486958394_0.6052090558247356"},"_hasShrinkwrap":false},"2.3.3":{"name":"graphql-binding","version":"2.3.3","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"yarn build","clean":"rimraf dist","compile":"tsc -d","lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","build":"npm-run-all clean compile","pretest":"npm run build","test":"npm run lint && ava"},"devDependencies":{"@types/graphql":"14.0.3","@types/node":"10.12.9","apollo-link":"1.2.3","ava":"1.0.0-rc.2","graphql":"14.0.2","graphql-tag":"2.10.0","husky":"1.1.4","npm-run-all":"4.1.3","prettier":"1.15.2","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.12.0","tslint":"5.11.0","tslint-config-prettier":"1.16.0","tslint-config-standard":"8.0.1","typescript":"3.1.6"},"dependencies":{"graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"16ae4bac1b41625efdd2db1aa549055965a9db5e","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-LeT2V0GY1dnbJlD6gkXfRrO486OfNplyeeZh0QrgxTOCe9AhmA8+ewgn3rpy/v+zTR2rIiSUczugDe6h2O4F9Q==","shasum":"e1d7adf9f3f0872b54c08efb7483c7b3ab71c51f","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.3.tgz","fileCount":69,"unpackedSize":148450,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb8ppWCRA9TVsSAnZWagAA0DEP+QD1K9FKzl/HOsQ3giWy\nV95pX89lH0cAqT5cDaIx3hQqwgJcLLa3jdbnA4ZXSP4ViMhYYTo7L9wWY4dx\nL+QOTZO1RH3DSYjrkyMNUVs9l8BeV9JzTXZlIxd40g6wgxwSNjxxfZQOnMVa\nFe89ccJ7FT8ghWWeLgQZEXN/MOB7xkGzqQnz3cGqeYJ6KxW/YHjkGVm40OUV\nw4of1vqrSCNIO5zdZBE8B5gZFbMl1bkqEOjzwkG5dlYrrMZejn/m3rKXDwMl\nlw2Ym+yFfcW45s06ShT7iNty+KvF5/wlWIavFobO+WHPqOxPMH5yoqpiy0Z/\ntW6drbfxNU3iz8GsoJsoDnhkyjpb374x8gR7WmRMCGBzSoRkvvHuDh2RUezp\nIzf9JIEaZLBapwmdCzdcrvVznKp+J+BrX/+A+MaBYwghu7qKRWxbIp9a2Ifx\n2mo5ArseFgZ0l9Aq2O4wNAFGIvLrEIgqkmi8972mM+ldeB5oLyCwt2wC7ufi\nA2bZmbogaMHuXAxh3FRSrEnNGF66say9Ej3Xda36ZCEpA4mCEwO1cB7vOuoQ\nn7067V4WPPavHTtLK7NtdVfeFzH5nvYyWD1mLvgCCi5hqfM1ohUVlxYD+ll8\nn/kvDg7zFFyz728Ow40JIBgsCyWjApA8qRcknfR732Zsbxme5Fkvryy2maR0\nlLBA\r\n=fFgX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFUmWIacvA3qLS/X7d+wHfuw4nmW1UX8x3jzwJ+p/nCrAiAsnSulwbhhISIssTgtmnMZftrDoAqCLUR5vzdOOJFwNQ=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.3_1542625877552_0.32000019286597703"},"_hasShrinkwrap":false},"2.3.4":{"name":"graphql-binding","version":"2.3.4","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"yarn build","clean":"rimraf dist","compile":"tsc -d","lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","build":"npm-run-all clean compile","pretest":"npm run build","test":"npm run lint && ava"},"devDependencies":{"@types/graphql":"14.0.3","@types/node":"10.12.9","apollo-link":"1.2.3","ava":"1.0.0-rc.2","graphql":"14.0.2","graphql-tag":"2.10.0","husky":"1.1.4","npm-run-all":"4.1.3","prettier":"1.15.2","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.12.0","tslint":"5.11.0","tslint-config-prettier":"1.16.0","tslint-config-standard":"8.0.1","typescript":"3.1.6"},"dependencies":{"graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"194571a7084d0939e3e0fc1199088428be9b18cc","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-ZNnBEwdHeAMavctrTLPxYgyja7le86CBPsj0Ftfn255ApNioj13ft/ERkX2BMPJM1TnBBPxkg3X8J+LW8nP5TQ==","shasum":"77a5699b41133afe9884988e58efb390f1512ac0","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.4.tgz","fileCount":69,"unpackedSize":148619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9RZZCRA9TVsSAnZWagAALdkP/0dEaiXlYe+s9022powr\nK9qKl42pxsSd19VkYE6BUyPPy18tGTYpvN4xR3rj9cDlkbQlh9HnNpYNkxI/\nPfUcvtOxVno+Uw6miOJ9o0oVkJ/ltGrUJs+sydsxj/ESw9M+biGmDX20B2/3\nRIwRhJNpVYo/LTdy6ACHZpjG1pDqL3nDmyijeqpbuhB4/W6U98FZMHKJGLWK\nZywy+NnB9GZdbetunOGT/x8TnBL9y8onVKL4ltMHWe3vis8TQKlaJOTeXrVv\nOOml6VpO7gqDr2CgSn4oAXpdoIC5xxVxzNPiicoI13bPOj8wb5t1FuDK0+w/\n0liEhnMLgL3vypSFwMefTWAdGapS8AlQaChcW6mWkaojbbPmM7XWwgIKTxOM\n8zB+vQgO+aoKfqKQp1zL+oHVt9AHcb0tVkuN8M5SawiWIGr68Kq8xwkUiC3Q\ntoKiJGVibSeFIlQ5e25OksYbZAyJRmF0ifcyjWRuI9ZxoA8wx0q5VTQrwoOK\nwQ5TE5mWN/1/GJ5Brsi5IpeYfFbkQIz6ttQ0X7xDy07vEDKYKHNCfz7gxSlP\nsj2oAKtSQybJi/Z6/Tpm8+rncgj/tIdJUOXac2OCafkZ0Pxrkt2dsI9+gR/M\ndDyse7HDsZrXpRRohUeIUluW4Bjyb/1sjjMmKRP/ViffFFXbRdOQTnhwz5Qu\ntoOW\r\n=VWwQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETi4wLsVgTXlZtPoC+qxfgNlip6AiMhuCuj0FDPoqM4AiEAsf75DPTPK3YRa3+ayd+8l0s+SJXR0m78J61kq6xHQe8="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.4_1542788696553_0.4823339388715049"},"_hasShrinkwrap":false},"2.3.5":{"name":"graphql-binding","version":"2.3.5","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"yarn build","clean":"rimraf dist","compile":"tsc -d","lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","build":"npm-run-all clean compile","pretest":"npm run build","test":"npm run lint && ava"},"devDependencies":{"@types/graphql":"14.0.3","@types/mkdirp":"^0.5.2","@types/node":"10.12.9","@types/yargs":"^12.0.1","apollo-link":"1.2.3","ava":"1.0.0-rc.2","graphql":"14.0.2","graphql-tag":"2.10.0","husky":"1.1.4","npm-run-all":"4.1.3","prettier":"1.15.2","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.12.0","tslint":"5.11.0","tslint-config-prettier":"1.16.0","tslint-config-standard":"8.0.1","typescript":"3.1.6"},"dependencies":{"graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"dba4098dfa4925a8f4e9b50defc2da4378d15fb9","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.5","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-COtcQzRIJU3MLJ+NOiVtN0UrLS/ZknZRbAqPIRmK4oAQlvBhY4M903m6RoS4kRW1uk/aFuQyEqyj4lbzHoLjfw==","shasum":"b3a7ee91f82f94f044c9902b08f888ef4bf0c6a9","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.5.tgz","fileCount":69,"unpackedSize":148711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9xotCRA9TVsSAnZWagAAnSUP/3HNlhV+t0k1Ea/ierLK\ndPbrqSqU5wE3U265foFP8KCyr/LmlLbuHPhrAU6MGsjNke7AIceV9mHFWZ9I\neyb3MZNiOqbIQ9hi7DaGBfNO5VjOmKTzveL7QyW2i236H/UyuHfXf0bYqWOl\ntkBVnDbHjDxVf31S/3JV37/YVbBIXZ2LlCmaqfTFOJ3a0KCNTlAGr9VUMHV5\nLFJHoH3yum0u3OkqmH0h4tb91fgh9HofNpUrQxnOLWGUfRpB0vDDsDS/60N5\nNbpL+U8q9VGV0rdxi43q/TcZP3kQIfdp8pyPGFHze6iBriuvjWoqAHM4TdLE\nqEKCtT+Q0ECvB2jzoAXai9nYKTtIpyFmHnUiGnd6EyxWUUz7yc8HPhLgU1M4\npV88pIx/q00MmFTlt/w5xjFAJ5J3FYthAnsFdSHqx3h0h41DaJlT0nwh32Ev\ncly2ldMyID+qRgunyE1WP0R0CzPArDmvKCstdt4LuVcCVfGl4faoBTLtJIk4\nRbP9ru5Q8sxUhEvFoME6Pvg9lk/kWxV5ePB8xbaSLhEdJCunv4FH9FMZVShY\nNn5Ay7+xkvo2wYs2IdLYgMZR/lQi5TuRba2C/2tGHrv91EyyzvUUqTz2BN1b\n9FBnO5wFR6z96GclptjfeNiHjqobtXhPinmigS5geOJ25ERbq2wooGVtt7SM\nDIPb\r\n=AieC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICg71rGP+QnZOL1/dh/9VedJShIJJ8hmf4GKZUD6ydmTAiBkv2kKifIk3zFadrgkKOSqWO9niWELt054Y0YmfOVjHQ=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.5_1542920748739_0.8141517869221644"},"_hasShrinkwrap":false},"2.3.6":{"name":"graphql-binding","version":"2.3.6","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"devDependencies":{"@types/graphql":"14.0.3","@types/mkdirp":"0.5.2","@types/node":"10.12.12","@types/yargs":"12.0.1","apollo-link":"1.2.4","ava":"1.0.0-rc.2","graphql":"14.0.2","graphql-tag":"2.10.0","husky":"1.2.0","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.12.4","tslint":"5.11.0","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.2"},"dependencies":{"graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"peerDependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"},"gitHead":"ee54b24622c4553223724f4d79119320c3ee71f0","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.6","_npmVersion":"6.4.1","_nodeVersion":"8.14.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-khQsAuGjAceZB8oLBIIIo7eomrqwICmxiDvaMz0bIhEUsyBr109CauFamkSBXxQKh71uf5e8MihCsW50gLfQEQ==","shasum":"37546f038567d56ea4f3ee3ec9e6629d078d9545","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.6.tgz","fileCount":69,"unpackedSize":149136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcDoaUCRA9TVsSAnZWagAAX7YP/jv7kvMUor0wlhFQjkrL\nd8327kgJelxhspE/9EszizZD5kMIPCuOB0dSZJ2ut7cGPrsBrWhfhr5o/z2y\nlqLayOA/ghLEmDRkUghc98HoHU98dQmGdfkx3DPitxRXR+8cxkDp1lAd2yLc\nmp4Nc05sUFutjQVxBnNLwypXwfCxtDRBKq0Y4R1WRmWFO1QEc7vrKTfmt/dl\nJ9G98y5Hmx8wiK/eExty1P8uis5Uxk6W9jYfIK7V4/P+CNTwan+AZ7UlSylM\nzurEdv5C4z8atu2sgr+Vl5XlsiV7/VWeGrgmNUVfTOooZzZRPt2AnhMs5TcP\nAlNpGRxJuIwcdwVdHaTrJ4f7/r/Q0pDZhUHtoKmrj9I0jP5hyrJZxvX0Q3Mk\nmejlHOOA38rMLDWfWQxNzg1sL4fJrZItUk0p4sFWxjbCQ6filWKAz/+/JUQZ\nYUhbUOj2vMFmHlCblof+eW4UlyqtnyB5lfaI4eAzEjaaZbkuEuIqwT7WgaEf\nnUMD2tJ6yqHY8rRGcE6cLpSafhiO2FoX24pG08CIZnpaVudFhLWVyH0l2xcN\ndzNBYBziEeE04/voN7csgyM0d1d3ipVcyDHjTmf4gR4IdxyhoAb2HH/79J4N\nib1UJ4n9GECG33KLjX5PufGanwHz5VjC9ZD6CJdje3aKRQsvHpYXI0pw2kCC\nTFbZ\r\n=2kWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMrqMJro552ZZdX31tF6lDRcY6xOZvVq+D5fNBrEzFgAiEAse4AEe+2mhpiLZH1orxJXPvv3RK3yJrR6ebSYXeJKVo="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.6_1544455827541_0.41801897528825394"},"_hasShrinkwrap":false},"2.3.7":{"name":"graphql-binding","version":"2.3.7","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.3","@types/mkdirp":"0.5.2","@types/node":"10.12.12","@types/yargs":"12.0.1","apollo-link":"1.2.4","ava":"1.0.0-rc.2","graphql-tag":"2.10.0","husky":"1.2.0","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.12.4","tslint":"5.11.0","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.2"},"gitHead":"22491a32379952d94bd83ccfe23842d25583df75","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.7","_npmVersion":"6.5.0","_nodeVersion":"8.14.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-fhvNySzmPHdqyjS73Rrr12RfJ2IehhFz7Ql7qYkls5KHwdktCg2E3MZroLiLkNQOx9uKIPq9AfibgIM7wecYKw==","shasum":"2480d9ae4582ab1fbedb3ab1ae67963f82a8b028","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.7.tgz","fileCount":69,"unpackedSize":147627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD8IECRA9TVsSAnZWagAA2FIQAItNCId2M9UizC6As7jS\nu16+vGA0Plv6q49ezMNDv+0U55+EoUA8dn/YExDq4+fVrVwmASgwlEREMcO3\n3Xen4cb2YPlh7Avtazzt+tO6nVKOMBVPzwAQG1+jF5P8vNVqgrw26yjcrtwo\ni/9tkhAOWbmtbWi/X8q/OnVmRiMnrVLyNTxZ9TK+YQw5P3khKoYZMpvL77Uk\nDP8jjSdAUHYQt/XjdtV2tTRGntmVUbNdO9HoOYbd6m3/eqgFUgmqEnyNK1QT\nyrQJFTzD7CYq/TYP+NXZ3HuKFoGYG7YsGiXOhx5CXf4uBHWnjtv6E7ndQQNR\nLRu2aj8Efp96LXMNacWpioWktfsJCWWAld2UG6xKZYp36/7xBiovY8fVKe9a\nKGa4mS/Njg7pCfceekLFgDOtOZFM3xhRdIPvqyQO2QNOi0+wVXfV89YTxFEC\nah3jow1+uobU8fs79hQQYy/4yivp9TYn7TmesHdcvo8YdQX/Y7ZIZqmMjnSX\n4wkmQM71JdBx+EvfXRJNFCxwhbPDuc4IDTGlfkHj+owuRXU1Cyl7ZDlve+tC\ntSw9JuuWk2jbbcGlC/Yu6byL7Zv8JVWSnxGf6FJgjTTnyQ2ffX8zq+grcakp\n8vVf84hsAilG/CAWTC3EVCy+Js9wXzXk/1BS3ROZRvPhPAGjR/0jX4HjRtUL\nlUZs\r\n=rZEt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdFqJhGxrTgIvSNxwQTwUNOm3lWxW7Fi6hCUYynqrTSwIhAMt1F/XTvglq9iY1rnnFCIkROKd+8v1gK2xw2rF25fO+"}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.7_1544536579554_0.92011042147003"},"_hasShrinkwrap":false},"2.3.8":{"name":"graphql-binding","version":"2.3.8","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.3","@types/mkdirp":"0.5.2","@types/node":"10.12.18","@types/yargs":"12.0.2","apollo-link":"1.2.6","ava":"1.0.1","graphql-tag":"2.10.0","husky":"1.3.0","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.2","semantic-release":"15.13.1","tslint":"5.12.0","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.2"},"gitHead":"50190cfdb9434887de04835587c0f98f30e787a5","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.3.8","_npmVersion":"6.5.0","_nodeVersion":"8.14.1","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-lW9HnQsD4HV8P2pon53j31b2ySmoP8UgudRYw9L8vGcjvjwh9Rietg9lCMNB4zMwC6crnWO7Rtl6Rj3EWWyBuQ==","shasum":"7434d6ae95bf6d26ea566390c780d8b318009443","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.3.8.tgz","fileCount":69,"unpackedSize":148579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIKa9CRA9TVsSAnZWagAAckwP/05H0AEZ9WmvmKME+wES\nRP8YhsLVi0u/+LF8ybI9zxYbPEaDpErqnqeN9LlxOqoWvZhU0Ye0SgMT6k8/\nErahlBLJ2USs3cwTyj+8REOaYHfRp8DzBKQJxPTyGqS0WoGbA+3gP2Tu/3O6\nzSDgxFC2eo4gkdxV4OdidXkrCOozhUWKpO2WUuImFfrwlgdhtgEBoHbihBT0\nXT7jQr8sT/5UTSyRb7EKY6nMf4SDVv+Qu2/5Sn1hfGV4cPwTryDHvfOAj8Kw\no4EFivTsIXXnOaHJY5O1myxDeIq3nAdE7KNrKEwLRqXLsiPJViDS2H1h/GJy\nEmCxYvxrXd6rZkZ/MVeTaSfkoiREGEqCbUwI+kLHjn2YF27GD+v9lbWNE3/S\nbainUD0SDf4GOXXXkPVSO5ePh0P4MQQHsbdBDXT4vqyuCemnuaDkvTrIZ/ew\nihQWCycx8O28NcKJgsAGtNiFVmIePCl8+Px6FBW29XWjJ5wzrO3bVnhh3n+K\nBQo4GQlUsFuwDsv9dvDfXUea/3wEMi9U0IfU5t3AQv4pmLEpEoV+zfzx4x24\n5Jo6qjCsSd9ha8KjzFAOMWY0ZZzopvtT1+9ltlMh8YK04YXC62ghImVS5Nqz\nxAX130vGNs5XbTaXQba58zCUvXVYPtCz57x15yY5nciLKjMTs7k6gU5Fzflk\nn+Kk\r\n=kPbM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHCzimlQUA6J10JrwR8alzoXA72mNzYYZpVHY93P0joGAiBdaxHtC63zWDM3ZvihVrrWBx2y5wpoyvfmL3ijopuZOw=="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.3.8_1545643709352_0.12531256465892837"},"_hasShrinkwrap":false},"2.4.0":{"name":"graphql-binding","version":"2.4.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.4","@types/mkdirp":"0.5.2","@types/node":"10.12.18","@types/yargs":"12.0.5","apollo-link":"1.2.6","ava":"1.0.1","graphql-tag":"2.10.0","husky":"1.3.1","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.3","semantic-release":"15.13.2","tslint":"5.12.0","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.2"},"gitHead":"54caccb1084de5018121ecaf0492575edde8b720","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.4.0","_npmVersion":"6.5.0","_nodeVersion":"8.15.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-oaEVZGkXZO6clqilCPc4j+PMifivcsfWivFiTIrUw7AlMZjjUM5Gaohpg/YKFRvqhuNgfvRek4NQBvaApfT4aA==","shasum":"f06bd40217122ef7a454646b563f76f58fb24328","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.4.0.tgz","fileCount":69,"unpackedSize":148805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMK+9CRA9TVsSAnZWagAAUtMP/3fabf6kwzTFCJtPiq43\nWIuASB58hrlOxY3iaTCOmtQMPV0YVwvNxUcvsHhbmuD+6CqFtDbECq6HoFHX\nwSBn152OGYh2R4m374waOmArhvM/B5TvVdMYZMVfetQI3Tu44G6aTAx7l/VS\nNl++NU6A/feReN1Yax6VTiUQP7T39pF73b5gmMBKD6b4Ci9ephqIIM6W/xAI\nvYWYkyIm0znTEMqCspa3kmbn3pSw9Kohh6dQsy3O+sZmQe+jXs98fGNBNabH\n4SwrclhHjhyueCgdYCSB2onXShKOhmH0sn/cR2JkcAmMw4RCoLicKX/4TSuc\n1q+MJqAYDzWfKgEFo3v7/L5ZVel3lkFhuawGF2TlXKCuIp+S3KEK1RFR4veo\na1dGeePKIdR3SF/g9VoO1zHaoCsAs/maJyswSRZUA0L1x337MgILCbDBbgTz\nNgvwEoq/prjJ/iexNrqy1LKzdIR64QzbLKLFGv8zruXnQqMIpjMEKevMy+im\ncCzl2SR0JPX7e+BOZCpa17a1B/cR6JgA6zgeLyJBAPv2+s4JOoIwAO4Nog8J\nE46PAFG8U7Qe43rgzuXFf4Q3Qca50WZyVaO78taB+rfDLBE8qMkyPIGz1A+a\n/qwihWdZjO2cmGrsxB72JE8TyOoDvO7B5HfCFTpCMv0BTQwEPYS49HQxldx4\nkWAC\r\n=kcc8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHqmFI4ZmcNmmvYrz4VjKw4/mmySTB8lsbedU9AJ/+w6AiEAzR8HFS9LQGbMH0F9YgESKHThHbbH0S9WSJUGfSitWpE="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.4.0_1546694589055_0.15689079178761411"},"_hasShrinkwrap":false},"2.4.1":{"name":"graphql-binding","version":"2.4.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.3","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.4","@types/mkdirp":"0.5.2","@types/node":"10.12.18","@types/yargs":"12.0.5","apollo-link":"1.2.6","ava":"1.0.1","graphql-tag":"2.10.0","husky":"1.3.1","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.8.0","rimraf":"2.6.3","semantic-release":"15.13.2","tslint":"5.12.0","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.2"},"gitHead":"2256d1de01aa0b28928626b145f5846155ec29f6","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.4.1","_npmVersion":"6.5.0","_nodeVersion":"8.15.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-UHSVM2bfB4gGtwRcUXwejo2R825Rm8vnJGA6+IB+NquObXBdw6YvDSTIwgavsNM6I6qRlyl0CUaAf/r15YYqwQ==","shasum":"5880b78670b5910b3589a6fa76441e9a7d8c289c","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.4.1.tgz","fileCount":69,"unpackedSize":148805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMVV2CRA9TVsSAnZWagAAxhIP/2JP61eHZMpt3xwbvyr1\nShG1LxXzJopMS8nqCMzbyUaCfykJHpQnzn/lhnhoP11xQ/1VpWwolQsLXG10\nnQSW3p+kZZKpE4UyqkmR+g/mSFn79p9i2pCTAwxov8U6Yco+XczDDywzz2V6\nfJqsmljrKpkUaJcaBcu/5Vks6BjQl1lBn6fMG7S2FQbNTPDoeH8GhFAUBgqJ\ntSKpmK6AUr921uiK2NanWIMaStrP7dBzw/tUlj0gHtm7yhYV2PJRgLfpVChZ\nRHnbV10IxXJ4Lauswkm/7CDNLyJrYHKrxN+rXIuJq+TbATMYno+Od/roQ1lR\njZJr7TKkzm0VE96TupQKn0h8PljD3cYzXfPk5IDKIWCCPgaAyKnoenXOGfqE\nmW8khbuhoO+3pB6mp3DssaK4wk8PaP4QSDbo32orHSazPcil8ecQwr/H2cRH\n8kLIjWgsp/5r6E9zWS89jQ2DOI5IRGVvkJyvPonGdszbm0qTfKBYhlvp6AnP\n+6m3NvYmGlI88OtFMcYVfLZOmGpTxHwcvS36C3wrkgIJcWuIGxC62eEDugra\nxiv8DCCWJYKOQceFTE2zp6uj/YoLjfW9Sbzq42cwmi+PWDdRAxBbrigF4Ngs\nEMUgrKqnIGtVe2dOynMzfuQ977gqI2GwpBMGScQb5rIYf60ScfqV4OLLezBp\nYaE3\r\n=k528\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT4OeLke6ixDviZ3An2O8jbJ25xmIZiTbUqpvdtL7nKQIgRvuFX2A0Vgv1gf/25OcUwmRG0eT120WlPvSdAr1AIJI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.4.1_1546737013703_0.877465530629628"},"_hasShrinkwrap":false},"2.4.2":{"name":"graphql-binding","version":"2.4.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.4","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.5","@types/mkdirp":"0.5.2","@types/node":"10.12.18","@types/yargs":"12.0.7","apollo-link":"1.2.6","ava":"1.1.0","graphql-tag":"2.10.1","husky":"1.3.1","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.10.0","rimraf":"2.6.3","semantic-release":"15.13.3","tslint":"5.12.1","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.4"},"gitHead":"e01780576eeabb9d189f4957f9aa863b03f8ba51","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.4.2","_npmVersion":"6.5.0","_nodeVersion":"8.15.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-1w3YoyCnGaEkR/vihOnK9PqN30IMqzKoVkg156zSRK9tGvYF33yy3O8ZZqOPMu7q6xp+LMUsnrjhYgit4sH1hg==","shasum":"a48340e55161f90a75e3c24bab87e810f4b096d5","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.4.2.tgz","fileCount":69,"unpackedSize":148866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSiduCRA9TVsSAnZWagAA8WcP/12WwSFaL+z117s4kXu0\nmtsEAML3Uyp6VCAcs5O2tSkd3MI9qNHdDlEQXMSwZ6iv9JzDpSbj/YLoSzXp\nxtI7KjCd/hluBP0pPggfXuS8uJ0y+3jlUYVYTFNKEIhJFxKK1hCAhRBMSpwx\ndwOAn+18hrwG15+xjkRuAizEacDILWcIRklRRT/OLy0BrqeOkfYClqIfPJ40\niAqMunHti7e/fvbXdvWmLXLXyNNzB76DmIc39O1ItlpZLSfYF1520UO8GiyN\noqB6fSvNmNTMubqE5qBJ5a2DuRmkc08VEMlCyJup4S9Gcb0aaBrMZ79fe5iY\nxiNqhoiDzBkN7jiQBgXI1k2jyIdsizxJ8CNziuJJPxV3zaKDlO/ErcPU7iK5\nXRF+OwZjJ3rWV9kLDdwM+8zie8YELBXo4RESEm38lFjMcmTNq/53lLaJma0z\nIP9TTWjXFUEg815tiamBKyKXAkZMDpYrP5MEIHtcJPdcTniEYDgEilDTsLsW\nzLrpiFebKjs3w9LC2VK7b+LtGEOEzIg7Fq3eEq0F/p0mjrd9FFMuznWnv4ao\nUIytZBwJLE7q94yHR74pakC97lR3stN2aI8lacPWMHFEDdO/zW4PPST/YfrW\nL77W6wRUY3zOyi56dmOtPY/S12VkWm0NL62/+MKSWNxOMT9pKZ7bLlRO9fhX\nW1Vd\r\n=K9mJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCsdUbpKCqEtzv3rLXIZQ2MCs69z02N6ymCvM1d0MIe1AIgWT3Q9XbKWoz4Srw6ft7G6Kq3P0ifJ06OqWNuSxRDRbI="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.4.2_1548363630377_0.5992062528936946"},"_hasShrinkwrap":false},"2.5.0":{"name":"graphql-binding","version":"2.5.0","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.4","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.5","@types/mkdirp":"0.5.2","@types/node":"10.12.18","@types/yargs":"12.0.8","apollo-link":"1.2.6","ava":"1.1.0","graphql-tag":"2.10.1","husky":"1.3.1","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.10.0","rimraf":"2.6.3","semantic-release":"15.13.3","tslint":"5.12.1","tslint-config-prettier":"1.17.0","tslint-config-standard":"8.0.1","typescript":"3.2.4"},"gitHead":"f2aaac3d0bbe04f211bf4d82f66cd14e3c05685f","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.5.0","_npmVersion":"6.5.0","_nodeVersion":"8.15.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-DzZgPakNlAqELjO3M7F4YOSC4QBL3CTYGEH/NJdSvF/DqAGY7UrnCNVXGt+fR4yx+VYQVtd+kF2VgpZmIAahQg==","shasum":"47eee13e622171bb337c2ce9bab6b4cecd5a76cc","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.5.0.tgz","fileCount":69,"unpackedSize":149164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcTCGkCRA9TVsSAnZWagAA4ooQAISd+oLXScqz2dmn04/o\nw0zBiCUNH/aEmqvWU3l1W56jubhsgRDviyoLzEZF21QRiNgxuncnuYNppLYy\ncJu9vC/ssy9VISpev94E9CGf34WqmBUA/IEyGGka69rk4JFoWokvLxk6q6B2\nuE3Zc8aaxrxgQXo24V8dRaWO+5n/K7UM4djxAmTHF6DI9g46IpOLcyX9rlAI\nZFCCuvxqU1b4XbxTazO0w0hp9wcicIGBfyrm8aRJv/lBe6QpkHJIqo05S2Ns\nlge1kXk4mSKFUIyv1BRP+LjbLgD5y1vFHjoRdl59LLx2NmkcKpnpgbIbS70b\nz36LN8HHossSojvgNfOZymfZ6ttK44InVBCYiXFGl4xsJXh9qD3BmgZI1O+o\nIQx7zAntm0vNFwXvy0++xm15Ah+AKX/ruWvyq3bSVM70CSYJdydWLz5srJol\nqGoJt3T/ihOmo0VsABoFstcp55PQG2BSaad+tcMj3WN3NnHS4ljr6hwfHXhr\nHYXJtCxbEuqyT9aHvwWTQdHAmzSj1uW+y4zdNohWT/SR6+k4JozfpEALEJiw\nOA2bxvp7GFS9g9MZWMOVDfrvswu+Tv95Gn/wzz3CApI6xg2s0BRX3gMqQlGV\nO7ZMs2Rtfp3C9P2HTGpK9Ohhh1Uo7y37HoryAQ7YPI3PE8RtU9z81oiBRnq2\nwXJf\r\n=3xHC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDU1m6tuxBSoXxlnw/V4/ZpKTNR+Yf/YIpy+FH057xXBQIgRM7ZC2aXZXcHKxJksa2IgL4XxVTgXkM/OPTJLr/Ml0M="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.5.0_1548493219883_0.07546608731869942"},"_hasShrinkwrap":false},"2.5.1":{"name":"graphql-binding","version":"2.5.1","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.4","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.7","@types/mkdirp":"0.5.2","@types/node":"10.12.30","@types/yargs":"12.0.9","apollo-link":"1.2.9","ava":"1.3.1","graphql-tag":"2.10.1","husky":"1.3.1","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.10.0","rimraf":"2.6.3","semantic-release":"15.13.3","tslint":"5.13.1","tslint-config-prettier":"1.18.0","tslint-config-standard":"8.0.1","typescript":"3.3.3333"},"gitHead":"f9ee758952b7fb518178fe3851a35c895c40e478","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.5.1","_npmVersion":"6.5.0","_nodeVersion":"8.15.1","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-9Lejxa7h/WcNZYyTvFQG12QUK8pkgbeEbEnMw3o/DsRhlIB8hrh+a+mbJgHpZ+dcUzSBGyTByiLAI3OLg7B//g==","shasum":"cacd8d579c4098541dadb9325255c09e476ab65c","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.5.1.tgz","fileCount":69,"unpackedSize":149533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgVPgCRA9TVsSAnZWagAAMrsP/iKU26k0Is0OTN7AKYCG\nSnMLmn4ttETS6fm7zCTd4iP7qRC3UQdp/9AuSqywMCZoQR6B6F0NOn5IQyNY\nLqMDMiDVtE1hgMBaBX+M3rR+SuELbXZN2RopaI5meU0Y7ACdnZi73mT3Je2d\n/h/nY76eRXzsxElQB6jUcizfhV146pxJweW5keH95E9qeuNP6aS9FJ1rTF11\nJEnMIe8UW1JvqPm3oEjjUR+E1BhXFJpXH8O7SoyDJGKMJgCbFqHN5kmWCnda\n0AEwUSbkzC0biYPqvc/4mSy+va3xZlH0Kwck+0SsdixoyE2M9OFmAUerITwS\nSPVAiEl+vATIl+x6EUEya3fLx5YlqE+x/JSuygnn0xWq/54j9Z9ZiMBxozoC\n0GxjGcnkK/0/J31u09sMA+N36RYp7REE4jGhIAZX3ulh98N1ATl1Zm0ao5V3\nLMyQ8FVjpJneoaq1vPADOpf/X8gUDuA4DY3nYa8pB+7j5Nu+7suWZEVpw/rN\n6g8/NDBfVZhuvPa1GJiHM2OdCsDErlF7YgbVViOdZKlss9tnisCepSNL0f2C\nXLQ36B4t9TC6ljk8F57UCReCp8v+/FWtV4sJ4UfGWof0tnNOORWMxsxxxECm\nSNW/j5pQT3lPcN+C5GmkH/5i0qmbYVrP9fGtxoOOX3kj2gDUy8/iIzJZ9tnp\nP26K\r\n=4ePT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDesVYmrjFgWtltXaVIWBbhwso/5PTk135l/B6YpH73NgIgR0OvjLhVOpwW1pVNZNSb8ePnO4WzLTEUmgRreFGlGlw="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.5.1_1551979487774_0.9384024858658693"},"_hasShrinkwrap":false},"2.5.2":{"name":"graphql-binding","version":"2.5.2","license":"MIT","repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"bin":{"graphql-binding":"./dist/bin.js"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublish":"npm-run-all build","clean":"rimraf dist","compile":"tsc -d","build":"npm-run-all clean compile","pretest":"npm-run-all build","test-lint":"tslint --project tsconfig.json {src}/**/*.ts && prettier-check --ignore-path .gitignore src/**/*.ts","test-ava":"ava","test":"npm-run-all test-*"},"dependencies":{"graphql":"^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0","graphql-import":"^0.7.1","graphql-tools":"4.0.5","iterall":"1.2.2","object-path-immutable":"^3.0.0","resolve-cwd":"^2.0.0","ts-node":"^7.0.1","yargs":"^12.0.2"},"devDependencies":{"@types/graphql":"14.0.7","@types/mkdirp":"0.5.2","@types/node":"10.14.9","@types/yargs":"12.0.12","apollo-link":"1.2.12","ava":"1.4.1","graphql-tag":"2.10.1","husky":"1.3.1","npm-run-all":"4.1.5","prettier":"1.15.3","prettier-check":"2.0.0","pretty-quick":"1.11.1","rimraf":"2.6.3","semantic-release":"15.13.16","tslint":"5.17.0","tslint-config-prettier":"1.18.0","tslint-config-standard":"8.0.1","typescript":"3.5.2"},"gitHead":"6ed04afc6fdf36643427cd059beb0680790d1520","description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"},"homepage":"https://github.com/graphcool/graphql-binding#readme","_id":"graphql-binding@2.5.2","_npmVersion":"6.5.0","_nodeVersion":"8.16.0","_npmUser":{"name":"timsuchanek","email":"tim.suchanek@gmail.com"},"dist":{"integrity":"sha512-CUDidmx/Ql6bB3Jz9owZK4TlSfD58/dJEXeGVPn6Zl0qrLjxZI+jhovxYw4ArU6cLG/NdadsSg62PlR1M6+reg==","shasum":"b311e0e8ccbe04ae3346bc236552ef963fcaf4db","tarball":"https://registry.npmjs.org/graphql-binding/-/graphql-binding-2.5.2.tgz","fileCount":69,"unpackedSize":149598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDEOVCRA9TVsSAnZWagAA5qAP/01fN5/P/yc3ge0FDIb8\nCz4ubupIytPD9u9MOCsK+b9rYqSfbkkYkvxu+6EdTOxAYo5yxpD6cPyKq9JV\nspOrIdyaorrwx3j6v3B3EwdecwX/guU8LJGtLl8JggNWVdNjT/Fva1wD0Wy8\nfDosIpQmZCD6JmXxw5g9o3+3ekNTlAe2hqc4pu0ETzyoNyjV9NnJsXl4eOVH\n2heAVBUvYUcO45PbdWHfHHKaJxkzvkUwHnkpCTh9vTpwEeGB+uDQBG5UZtYs\no5So6qox/t3VgHzfmqiQ4PKle6Qsxd+oyR5sbfozsO8+VUjjPBoRyRR2LDb1\nWaZxSYmgWUm1Abi4iUBNxrX1F30DVmlCzGberIcwlrhscVbcuauZ5mhZ5sZx\nisH9d32EAK/le+EYHRWWMpgqEtn1pWav2P+UN6FuyHNm83ipfUHp9kx6Ag/h\n+KqnTpve8uRwL5gLnqY1Ifg3ZxyEqnmXO4uh+SIElMFCCzzv2cs0wpHUV10b\n9nXW3H4SQ/doqVzTf1abHjD/IF/TZAtgHxrtoS3Ej4726DcfwzMkkaGuKjEC\nSovm4mv9JgH5k6Nl1oHy8CPyW1I58zajTYvZTfuMVXVfCZY91menz+GSM1Yc\nhrCYR60BD0M8fVEdUqGEDhaYBu1123eAV5ExaRcfyGr78ciD52lPzZrJ6SH9\njoVS\r\n=wLuq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIADUyRqyoEuMksTzdxja4eNyC0ViJDaA0HzjTGx6fkNlAiEA9EHz1zhF/hTWlWRuG23vbJQpqHxG4zqk5X2dc+PSYy8="}]},"maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-binding_2.5.2_1561084820487_0.4932919104180531"},"_hasShrinkwrap":false}},"readme":"# graphql-binding\n\n[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)\n\n## Overview\n\n🔗 GraphQL bindings are **modular building blocks** that allow to embed existing GraphQL APIs into your own GraphQL server. Think about it as turning (parts of) GraphQL APIs into reusable LEGO building blocks. Bindings may be generated in JavaScript, TypeScript, or Flow.\n\n> The idea of GraphQL bindings is introduced in detail in this blog post: [Reusing & Composing GraphQL APIs with GraphQL Bindings](https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/)\n\n## Install\n\n```sh\nyarn add graphql-binding\n```\n\n## [Docs :books:](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html)\n\nCheck out the docs on [oss.prisma.io](https://oss.prisma.io/content/GraphQL-Binding/01-Overview.html).\n\n## Public GraphQL bindings\n\nYou can find practical, production-ready examples here:\n\n- [`graphql-binding-github`](https://github.com/graphql-binding/graphql-binding-github)\n- [`prisma-binding`](https://github.com/prisma/prisma-binding)\n\n> Note: If you've created your own GraphQL binding based on this package, please add it to this list via a PR 🙌\n\nIf you have any questions, share some ideas or just want to chat about GraphQL bindings, join the [`#graphql-bindings`](https://prisma.slack.com/messages/graphql-bindings) channel in our [Slack](https://slack.prisma.io/).\n","maintainers":[{"email":"schickling.j@gmail.com","name":"schickling"},{"email":"tim.suchanek@gmail.com","name":"timsuchanek"},{"email":"uri.goldshtein@gmail.com","name":"urigo"},{"email":"dotansimha@gmail.com","name":"dotansimha"},{"email":"kamil.kisiela@gmail.com","name":"kamilkisiela"},{"email":"ardatanrikulu@gmail.com","name":"ardatan"}],"time":{"modified":"2022-06-18T13:54:57.846Z","created":"2017-12-20T18:34:13.008Z","0.1.0":"2017-12-20T18:34:13.008Z","0.1.1":"2017-12-21T11:45:49.466Z","0.2.0":"2017-12-23T12:02:09.671Z","0.2.1":"2017-12-28T16:19:26.183Z","0.3.0":"2018-01-03T13:42:43.206Z","0.3.1":"2018-01-03T18:04:45.971Z","0.3.2":"2018-01-03T18:06:10.199Z","0.4.0":"2018-01-04T03:37:24.432Z","0.5.0":"2018-01-04T13:09:04.145Z","1.0.0":"2018-01-12T12:27:31.478Z","1.1.0":"2018-01-12T12:42:13.975Z","1.2.0":"2018-01-12T12:55:33.731Z","1.2.1":"2018-02-14T10:47:08.239Z","1.2.2":"2018-02-16T13:20:51.160Z","1.2.3":"2018-02-21T09:00:10.348Z","1.2.4":"2018-02-27T10:27:53.082Z","1.2.5":"2018-02-28T09:17:21.087Z","1.3.0":"2018-04-10T09:20:23.654Z","1.4.0-beta.1":"2018-04-13T08:18:12.421Z","1.3.1":"2018-04-30T14:16:01.704Z","1.4.0-beta.2":"2018-05-02T15:38:16.962Z","1.4.0-beta.3":"2018-05-02T15:47:49.181Z","1.4.0-beta.4":"2018-05-02T15:53:42.453Z","1.4.0-beta.5":"2018-05-02T15:58:43.840Z","1.4.0-beta.6":"2018-05-02T16:04:58.116Z","1.4.0-beta.7":"2018-05-03T07:55:57.503Z","1.4.0-beta.8":"2018-05-03T09:53:02.922Z","1.4.0-beta.9":"2018-05-03T11:51:33.241Z","1.4.0-beta.10":"2018-05-03T12:39:05.799Z","1.4.0-beta.11":"2018-05-03T13:03:19.668Z","1.4.0-beta.12":"2018-05-03T13:26:46.081Z","1.4.0-beta.13":"2018-05-03T14:16:30.944Z","1.4.0-beta.14":"2018-05-03T14:18:54.318Z","1.4.0-beta.15":"2018-05-03T15:09:17.386Z","1.4.0-beta.16":"2018-05-03T16:14:32.185Z","1.4.0-beta.17":"2018-05-03T16:29:30.833Z","1.4.0-beta.18":"2018-05-03T16:51:08.977Z","1.4.0-beta.19":"2018-05-04T08:08:18.522Z","1.4.0-beta.20":"2018-05-04T09:55:18.525Z","1.4.0-beta.21":"2018-05-04T12:47:54.240Z","1.4.0-beta.22":"2018-05-04T13:32:40.984Z","1.4.0-beta.23":"2018-05-04T15:20:38.801Z","1.4.0-beta.24":"2018-05-09T09:00:05.435Z","1.4.0-beta.25":"2018-05-09T15:06:29.813Z","1.4.0-beta.26":"2018-05-09T15:16:43.686Z","1.4.0-beta.27":"2018-05-10T12:08:17.668Z","1.4.0-beta.28":"2018-05-10T12:10:43.103Z","1.4.0-beta.29":"2018-05-10T12:13:48.752Z","1.4.0-beta.30":"2018-05-10T16:19:50.790Z","1.4.0-beta.31":"2018-05-10T16:25:15.673Z","1.4.0-beta.32":"2018-05-10T16:35:05.848Z","1.4.0-beta.33":"2018-05-10T17:04:50.022Z","1.3.2":"2018-05-10T17:22:51.966Z","2.0.0":"2018-05-10T17:26:54.284Z","2.0.1":"2018-05-29T08:05:23.577Z","2.1.0":"2018-05-29T08:22:17.725Z","2.1.1":"2018-06-13T16:47:28.714Z","2.2.0":"2018-07-17T08:21:39.574Z","2.2.1":"2018-07-18T09:44:56.747Z","2.2.2":"2018-08-02T06:31:00.090Z","3.0.0-alpha.1":"2018-08-10T13:30:07.406Z","3.0.0-alpha.2":"2018-08-13T09:25:57.953Z","3.0.0-alpha.3":"2018-08-13T09:37:13.857Z","3.0.0-alpha.4":"2018-08-14T14:56:01.890Z","2.2.3":"2018-08-14T17:19:21.306Z","3.0.0-alpha.5":"2018-08-15T10:09:03.466Z","3.0.0-alpha.6":"2018-08-15T12:17:50.283Z","3.0.0-alpha.7":"2018-08-15T12:18:28.262Z","3.0.0-alpha.8":"2018-08-15T13:03:38.821Z","2.2.4":"2018-08-28T07:55:39.133Z","2.2.5":"2018-09-19T15:09:18.913Z","2.2.6":"2018-10-18T04:51:15.501Z","2.3.0":"2018-11-16T15:35:21.172Z","2.3.1":"2018-11-16T15:43:47.710Z","2.3.2":"2018-11-17T20:35:58.529Z","2.3.3":"2018-11-19T11:11:17.751Z","2.3.4":"2018-11-21T08:24:56.737Z","2.3.5":"2018-11-22T21:05:48.858Z","2.3.6":"2018-12-10T15:30:27.889Z","2.3.7":"2018-12-11T13:56:19.784Z","2.3.8":"2018-12-24T09:28:29.530Z","2.4.0":"2019-01-05T13:23:09.222Z","2.4.1":"2019-01-06T01:10:13.871Z","2.4.2":"2019-01-24T21:00:30.523Z","2.5.0":"2019-01-26T09:00:20.061Z","2.5.1":"2019-03-07T17:24:47.905Z","2.5.2":"2019-06-21T02:40:20.637Z"},"repository":{"type":"git","url":"git+ssh://git@github.com/graphcool/graphql-binding.git"},"license":"MIT","readmeFilename":"README.md","contributors":[{"name":"Kim Brandwijk","email":"kim.brandwijk@gmail.com"},{"name":"Tim Suchanek","email":"suchanek@prisma.io"},{"name":"Marcin Pacholec","email":"marcin11235@gmail.com"},{"name":"Matic Zavadlal","email":"matic.zavadlal@gmail.com"}],"author":{"name":"Johannes Schickling","email":"johannes@graph.cool"},"description":"[![CircleCI](https://circleci.com/gh/graphql-binding/graphql-binding.svg?style=shield)](https://circleci.com/gh/graphql-binding/graphql-binding) [![npm version](https://badge.fury.io/js/graphql-binding.svg)](https://badge.fury.io/js/graphql-binding)","homepage":"https://github.com/graphcool/graphql-binding#readme","bugs":{"url":"https://github.com/graphcool/graphql-binding/issues"}}