gql-string-to-object
v1.2.0
Published
Helper function to convert GQL strings to objects!
Downloads
6
Maintainers
Readme
GraphQL string to object
Helper function that will convert GraphQL strings into objects.
Intended to allow easier navigation through the implemented schema. Could be for testing, parsing, you name it!
Installation
npm install -D gql-string-to-object
Example implementations
gqlToObject
import { gqlToObject } from "gql-string-to-object";
const FRAGMENT_EXAMPLE = `
fragment ProductDetails on Character {
name
sku
price {
currency
symbol
}
}
`;
const QUERY_EXAMPLE = `
query ProductFinder($first: Int = 3) {
location
availability
details {
...ProductDetails
}
}
${FRAGMENT_EXAMPLE}
`;
const gqlAsObject = gqlToObject(QUERY_EXAMPLE, [FRAGMENT_EXAMPLE]);
console.log(JSON.stringify(gqlAsObject));
{
"location": {},
"availability": {},
"details": {
"name": {},
"sku": {},
"price": {
"currency": {},
"symbol": {}
}
}
}
schemaToObject
import { getIntrospectionQuery, schemaToObject } from "gql-string-to-object";
const response = await fetch(YOUR - URL - HERE, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ query: getIntrospectionQuery() }),
});
const data = await response.json();
console.log(schemaToObject(data.__schema, "sale_tag"));
Output :
{
"sale_tag": {
"amount": "Int",
"label": "String"
}
}
...
{
"kind": "OBJECT",
"name": "sale_tag",
"description": "A description for the SaleTag",
"fields": [
{
"name": "amount",
"description": "A description for the amount field",
"args": [],
"type": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "label",
"description": "Some label description",
"args": [],
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,
"interfaces": [],
"enumValues": null,
"possibleTypes": null
}
...
Contributing
Got ideas on how to improve this?? Lets make it happen 🚂
PRs here!
Issues over here!