1 | "use strict";
|
2 | var graphql_1 = require('graphql');
|
3 | var FIELD = 'Field';
|
4 | function tooManySubscriptionFieldsError(subscriptionName) {
|
5 | return "Subscription \"" + subscriptionName + "\" must have only one field.";
|
6 | }
|
7 | exports.tooManySubscriptionFieldsError = tooManySubscriptionFieldsError;
|
8 | function subscriptionHasSingleRootField(context) {
|
9 | var schema = context.getSchema();
|
10 | schema.getSubscriptionType();
|
11 | return {
|
12 | OperationDefinition: function (node) {
|
13 | var operationName = node.name.value;
|
14 | var numFields = 0;
|
15 | node.selectionSet.selections.forEach(function (selection) {
|
16 | if (selection.kind === FIELD) {
|
17 | numFields++;
|
18 | }
|
19 | else {
|
20 | context.reportError(new graphql_1.GraphQLError('Apollo subscriptions do not support fragments on the root field', node));
|
21 | }
|
22 | });
|
23 | if (numFields > 1) {
|
24 | context.reportError(new graphql_1.GraphQLError(tooManySubscriptionFieldsError(operationName), node));
|
25 | }
|
26 | return false;
|
27 | },
|
28 | };
|
29 | }
|
30 | exports.subscriptionHasSingleRootField = subscriptionHasSingleRootField;
|
31 |
|
\ | No newline at end of file |