You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
982 B
39 lines
982 B
|
6 years ago
|
|
||
|
|
const fetch = require('node-fetch');
|
||
|
|
const fs = require('fs');
|
||
|
|
|
||
|
|
fetch(`http://localhost:4000/graphql`, {
|
||
|
|
method: 'POST',
|
||
|
|
headers: { 'Content-Type': 'application/json' },
|
||
|
|
body: JSON.stringify({
|
||
|
|
variables: {},
|
||
|
|
query: `
|
||
|
|
{
|
||
|
|
__schema {
|
||
|
|
types {
|
||
|
|
kind
|
||
|
|
name
|
||
|
|
possibleTypes {
|
||
|
|
name
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
`,
|
||
|
|
}),
|
||
|
|
})
|
||
|
|
.then(result => result.json())
|
||
|
|
.then(result => {
|
||
|
|
// here we're filtering out any type information unrelated to unions or interfaces
|
||
|
|
const filteredData = result.data.__schema.types.filter(
|
||
|
|
type => type.possibleTypes !== null,
|
||
|
|
);
|
||
|
|
result.data.__schema.types = filteredData;
|
||
|
|
fs.writeFileSync('./src/fragmentTypes.json', JSON.stringify(result.data), err => {
|
||
|
|
if (err) {
|
||
|
|
console.error('Error writing fragmentTypes file', err);
|
||
|
|
} else {
|
||
|
|
console.log('Fragment types successfully extracted!');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|