1 | import { invariant, InvariantError } from "../globals/index.js";
|
2 | import { valueToObjectRepresentation } from "./storeUtils.js";
|
3 | export 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', 46);
|
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(47);
|
10 | }
|
11 | return definition;
|
12 | });
|
13 | __DEV__ ? invariant(operations.length <= 1, "Ambiguous GraphQL document: contains ".concat(operations.length, " operations")) : invariant(operations.length <= 1, 48);
|
14 | return doc;
|
15 | }
|
16 | export function getOperationDefinition(doc) {
|
17 | checkDocument(doc);
|
18 | return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; })[0];
|
19 | }
|
20 | export function getOperationName(doc) {
|
21 | return (doc.definitions
|
22 | .filter(function (definition) {
|
23 | return definition.kind === 'OperationDefinition' && definition.name;
|
24 | })
|
25 | .map(function (x) { return x.name.value; })[0] || null);
|
26 | }
|
27 | export function getFragmentDefinitions(doc) {
|
28 | return doc.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; });
|
29 | }
|
30 | export function getQueryDefinition(doc) {
|
31 | var queryDef = getOperationDefinition(doc);
|
32 | __DEV__ ? invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : invariant(queryDef && queryDef.operation === 'query', 49);
|
33 | return queryDef;
|
34 | }
|
35 | export function getFragmentDefinition(doc) {
|
36 | __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', 50);
|
37 | __DEV__ ? invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : invariant(doc.definitions.length <= 1, 51);
|
38 | var fragmentDef = doc.definitions[0];
|
39 | __DEV__ ? invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : invariant(fragmentDef.kind === 'FragmentDefinition', 52);
|
40 | return fragmentDef;
|
41 | }
|
42 | export function getMainDefinition(queryDoc) {
|
43 | checkDocument(queryDoc);
|
44 | var fragmentDefinition;
|
45 | for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {
|
46 | var definition = _a[_i];
|
47 | if (definition.kind === 'OperationDefinition') {
|
48 | var operation = definition.operation;
|
49 | if (operation === 'query' ||
|
50 | operation === 'mutation' ||
|
51 | operation === 'subscription') {
|
52 | return definition;
|
53 | }
|
54 | }
|
55 | if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {
|
56 | fragmentDefinition = definition;
|
57 | }
|
58 | }
|
59 | if (fragmentDefinition) {
|
60 | return fragmentDefinition;
|
61 | }
|
62 | throw __DEV__ ? new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new InvariantError(53);
|
63 | }
|
64 | export function getDefaultValues(definition) {
|
65 | var defaultValues = Object.create(null);
|
66 | var defs = definition && definition.variableDefinitions;
|
67 | if (defs && defs.length) {
|
68 | defs.forEach(function (def) {
|
69 | if (def.defaultValue) {
|
70 | valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);
|
71 | }
|
72 | });
|
73 | }
|
74 | return defaultValues;
|
75 | }
|
76 |
|
\ | No newline at end of file |