UNPKG

3.93 kBJavaScriptView Raw
1import { invariant, InvariantError } from "../globals/index.js";
2import { valueToObjectRepresentation } from "./storeUtils.js";
3export function checkDocument(doc) {
4 __DEV__ ? invariant(doc && doc.kind === 'Document', "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql") : invariant(doc && doc.kind === 'Document', 47);
5 var operations = doc.definitions
6 .filter(function (d) { return d.kind !== 'FragmentDefinition'; })
7 .map(function (definition) {
8 if (definition.kind !== 'OperationDefinition') {
9 throw __DEV__ ? new InvariantError("Schema type definitions not allowed in queries. Found: \"".concat(definition.kind, "\"")) : new InvariantError(48);
10 }
11 return definition;
12 });
13 __DEV__ ? invariant(operations.length <= 1, "Ambiguous GraphQL document: contains ".concat(operations.length, " operations")) : invariant(operations.length <= 1, 49);
14 return doc;
15}
16export function getOperationDefinition(doc) {
17 checkDocument(doc);
18 return doc.definitions.filter(function (definition) {
19 return definition.kind === 'OperationDefinition';
20 })[0];
21}
22export function getOperationName(doc) {
23 return (doc.definitions
24 .filter(function (definition) {
25 return definition.kind === 'OperationDefinition' && !!definition.name;
26 })
27 .map(function (x) { return x.name.value; })[0] || null);
28}
29export function getFragmentDefinitions(doc) {
30 return doc.definitions.filter(function (definition) {
31 return definition.kind === 'FragmentDefinition';
32 });
33}
34export function getQueryDefinition(doc) {
35 var queryDef = getOperationDefinition(doc);
36 __DEV__ ? invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : invariant(queryDef && queryDef.operation === 'query', 50);
37 return queryDef;
38}
39export function getFragmentDefinition(doc) {
40 __DEV__ ? invariant(doc.kind === 'Document', "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql") : invariant(doc.kind === 'Document', 51);
41 __DEV__ ? invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : invariant(doc.definitions.length <= 1, 52);
42 var fragmentDef = doc.definitions[0];
43 __DEV__ ? invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : invariant(fragmentDef.kind === 'FragmentDefinition', 53);
44 return fragmentDef;
45}
46export function getMainDefinition(queryDoc) {
47 checkDocument(queryDoc);
48 var fragmentDefinition;
49 for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {
50 var definition = _a[_i];
51 if (definition.kind === 'OperationDefinition') {
52 var operation = definition.operation;
53 if (operation === 'query' ||
54 operation === 'mutation' ||
55 operation === 'subscription') {
56 return definition;
57 }
58 }
59 if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {
60 fragmentDefinition = definition;
61 }
62 }
63 if (fragmentDefinition) {
64 return fragmentDefinition;
65 }
66 throw __DEV__ ? new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new InvariantError(54);
67}
68export function getDefaultValues(definition) {
69 var defaultValues = Object.create(null);
70 var defs = definition && definition.variableDefinitions;
71 if (defs && defs.length) {
72 defs.forEach(function (def) {
73 if (def.defaultValue) {
74 valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);
75 }
76 });
77 }
78 return defaultValues;
79}
80//# sourceMappingURL=getFromAST.js.map
\No newline at end of file