Spaces:
Running
Running
; | |
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 | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
`; | |
} | |