146 lines
3.2 KiB
JavaScript
146 lines
3.2 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true,
|
|
});
|
|
exports.getIntrospectionQuery = getIntrospectionQuery;
|
|
|
|
/**
|
|
* Produce the GraphQL query recommended for a full schema introspection.
|
|
* Accepts optional IntrospectionOptions.
|
|
*/
|
|
function getIntrospectionQuery(options) {
|
|
const optionsWithDefault = {
|
|
descriptions: true,
|
|
specifiedByUrl: false,
|
|
directiveIsRepeatable: false,
|
|
schemaDescription: false,
|
|
inputValueDeprecation: false,
|
|
oneOf: false,
|
|
...options,
|
|
};
|
|
const descriptions = optionsWithDefault.descriptions ? 'description' : '';
|
|
const specifiedByUrl = optionsWithDefault.specifiedByUrl
|
|
? 'specifiedByURL'
|
|
: '';
|
|
const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable
|
|
? 'isRepeatable'
|
|
: '';
|
|
const schemaDescription = optionsWithDefault.schemaDescription
|
|
? descriptions
|
|
: '';
|
|
|
|
function inputDeprecation(str) {
|
|
return optionsWithDefault.inputValueDeprecation ? str : '';
|
|
}
|
|
|
|
const oneOf = optionsWithDefault.oneOf ? 'isOneOf' : '';
|
|
return `
|
|
query IntrospectionQuery {
|
|
__schema {
|
|
${schemaDescription}
|
|
queryType { name kind }
|
|
mutationType { name kind }
|
|
subscriptionType { name kind }
|
|
types {
|
|
...FullType
|
|
}
|
|
directives {
|
|
name
|
|
${descriptions}
|
|
${directiveIsRepeatable}
|
|
locations
|
|
args${inputDeprecation('(includeDeprecated: true)')} {
|
|
...InputValue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fragment FullType on __Type {
|
|
kind
|
|
name
|
|
${descriptions}
|
|
${specifiedByUrl}
|
|
${oneOf}
|
|
fields(includeDeprecated: true) {
|
|
name
|
|
${descriptions}
|
|
args${inputDeprecation('(includeDeprecated: true)')} {
|
|
...InputValue
|
|
}
|
|
type {
|
|
...TypeRef
|
|
}
|
|
isDeprecated
|
|
deprecationReason
|
|
}
|
|
inputFields${inputDeprecation('(includeDeprecated: true)')} {
|
|
...InputValue
|
|
}
|
|
interfaces {
|
|
...TypeRef
|
|
}
|
|
enumValues(includeDeprecated: true) {
|
|
name
|
|
${descriptions}
|
|
isDeprecated
|
|
deprecationReason
|
|
}
|
|
possibleTypes {
|
|
...TypeRef
|
|
}
|
|
}
|
|
|
|
fragment InputValue on __InputValue {
|
|
name
|
|
${descriptions}
|
|
type { ...TypeRef }
|
|
defaultValue
|
|
${inputDeprecation('isDeprecated')}
|
|
${inputDeprecation('deprecationReason')}
|
|
}
|
|
|
|
fragment TypeRef on __Type {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
ofType {
|
|
kind
|
|
name
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
}
|