UNPKG

1.97 kBJavaScriptView Raw
1import { specifiedRules, validate, NoUnusedFragmentsRule, KnownFragmentNamesRule, Kind, ExecutableDefinitionsRule, LoneSchemaDefinitionRule, UniqueOperationTypesRule, UniqueTypeNamesRule, UniqueEnumValueNamesRule, UniqueFieldDefinitionNamesRule, UniqueDirectiveNamesRule, KnownTypeNamesRule, KnownDirectivesRule, UniqueDirectivesPerLocationRule, PossibleTypeExtensionsRule, UniqueArgumentNamesRule, UniqueInputFieldNamesRule, } from 'graphql';
2const specifiedSDLRules = [
3 LoneSchemaDefinitionRule,
4 UniqueOperationTypesRule,
5 UniqueTypeNamesRule,
6 UniqueEnumValueNamesRule,
7 UniqueFieldDefinitionNamesRule,
8 UniqueDirectiveNamesRule,
9 KnownTypeNamesRule,
10 KnownDirectivesRule,
11 UniqueDirectivesPerLocationRule,
12 PossibleTypeExtensionsRule,
13 UniqueArgumentNamesRule,
14 UniqueInputFieldNamesRule,
15];
16export function validateWithCustomRules(schema, ast, customRules, isRelayCompatMode, isSchemaDocument) {
17 const rules = specifiedRules.filter(rule => {
18 if (rule === NoUnusedFragmentsRule || rule === ExecutableDefinitionsRule) {
19 return false;
20 }
21 if (isRelayCompatMode && rule === KnownFragmentNamesRule) {
22 return false;
23 }
24 return true;
25 });
26 if (customRules) {
27 Array.prototype.push.apply(rules, customRules);
28 }
29 if (isSchemaDocument) {
30 Array.prototype.push.apply(rules, specifiedSDLRules);
31 }
32 const errors = validate(schema, ast, rules);
33 return errors.filter(error => {
34 if (error.message.indexOf('Unknown directive') !== -1 && error.nodes) {
35 const node = error.nodes[0];
36 if (node && node.kind === Kind.DIRECTIVE) {
37 const name = node.name.value;
38 if (name === 'arguments' || name === 'argumentDefinitions') {
39 return false;
40 }
41 }
42 }
43 return true;
44 });
45}
46//# sourceMappingURL=validateWithCustomRules.js.map
\No newline at end of file