1 |
|
2 |
|
3 | import { DocumentNode, DirectiveNode, print } from 'graphql';
|
4 |
|
5 | import { checkDocument, removeDirectivesFromDocument } from 'apollo-utilities';
|
6 |
|
7 | const connectionRemoveConfig = {
|
8 | test: (directive: DirectiveNode) => directive.name.value === 'client',
|
9 | remove: true,
|
10 | };
|
11 |
|
12 | const removed = new Map();
|
13 | export function removeClientSetsFromDocument(
|
14 | query: DocumentNode,
|
15 | ): DocumentNode {
|
16 |
|
17 | const cached = removed.get(query);
|
18 | if (cached) return cached;
|
19 |
|
20 | checkDocument(query);
|
21 |
|
22 | const docClone = removeDirectivesFromDocument(
|
23 | [connectionRemoveConfig],
|
24 | query,
|
25 | );
|
26 |
|
27 |
|
28 | removed.set(query, docClone);
|
29 | return docClone;
|
30 | }
|
31 |
|
32 | export function normalizeTypeDefs(
|
33 | typeDefs: string | string[] | DocumentNode | DocumentNode[],
|
34 | ) {
|
35 | const defs = Array.isArray(typeDefs) ? typeDefs : [typeDefs];
|
36 |
|
37 | return defs
|
38 | .map(typeDef => (typeof typeDef === 'string' ? typeDef : print(typeDef)))
|
39 | .map(str => str.trim())
|
40 | .join('\n');
|
41 | }
|