UNPKG

5.57 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('graphql')) :
3 typeof define === 'function' && define.amd ? define(['exports', 'tslib', 'graphql'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['graphql-tag'] = {}, global.tslib, global.graphql));
5}(this, (function (exports, tslib, graphql) { 'use strict';
6
7 var docCache = new Map();
8 var fragmentSourceMap = new Map();
9 var printFragmentWarnings = true;
10 var experimentalFragmentVariables = false;
11 function normalize(string) {
12 return string.replace(/[\s,]+/g, ' ').trim();
13 }
14 function cacheKeyFromLoc(loc) {
15 return normalize(loc.source.body.substring(loc.start, loc.end));
16 }
17 function processFragments(ast) {
18 var seenKeys = new Set();
19 var definitions = [];
20 ast.definitions.forEach(function (fragmentDefinition) {
21 if (fragmentDefinition.kind === 'FragmentDefinition') {
22 var fragmentName = fragmentDefinition.name.value;
23 var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);
24 var sourceKeySet = fragmentSourceMap.get(fragmentName);
25 if (sourceKeySet && !sourceKeySet.has(sourceKey)) {
26 if (printFragmentWarnings) {
27 console.warn("Warning: fragment with name " + fragmentName + " already exists.\n"
28 + "graphql-tag enforces all fragment names across your application to be unique; read more about\n"
29 + "this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names");
30 }
31 }
32 else if (!sourceKeySet) {
33 fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);
34 }
35 sourceKeySet.add(sourceKey);
36 if (!seenKeys.has(sourceKey)) {
37 seenKeys.add(sourceKey);
38 definitions.push(fragmentDefinition);
39 }
40 }
41 else {
42 definitions.push(fragmentDefinition);
43 }
44 });
45 return tslib.__assign(tslib.__assign({}, ast), { definitions: definitions });
46 }
47 function stripLoc(doc) {
48 var workSet = new Set(doc.definitions);
49 workSet.forEach(function (node) {
50 if (node.loc)
51 delete node.loc;
52 Object.keys(node).forEach(function (key) {
53 var value = node[key];
54 if (value && typeof value === 'object') {
55 workSet.add(value);
56 }
57 });
58 });
59 var loc = doc.loc;
60 if (loc) {
61 delete loc.startToken;
62 delete loc.endToken;
63 }
64 return doc;
65 }
66 function parseDocument(source) {
67 var cacheKey = normalize(source);
68 if (!docCache.has(cacheKey)) {
69 var parsed = graphql.parse(source, {
70 experimentalFragmentVariables: experimentalFragmentVariables
71 });
72 if (!parsed || parsed.kind !== 'Document') {
73 throw new Error('Not a valid GraphQL document.');
74 }
75 docCache.set(cacheKey, stripLoc(processFragments(parsed)));
76 }
77 return docCache.get(cacheKey);
78 }
79 function gql(literals) {
80 var args = [];
81 for (var _i = 1; _i < arguments.length; _i++) {
82 args[_i - 1] = arguments[_i];
83 }
84 if (typeof literals === 'string') {
85 literals = [literals];
86 }
87 var result = literals[0];
88 args.forEach(function (arg, i) {
89 if (arg && arg.kind === 'Document') {
90 result += arg.loc.source.body;
91 }
92 else {
93 result += arg;
94 }
95 result += literals[i + 1];
96 });
97 return parseDocument(result);
98 }
99 function resetCaches() {
100 docCache.clear();
101 fragmentSourceMap.clear();
102 }
103 function disableFragmentWarnings() {
104 printFragmentWarnings = false;
105 }
106 function enableExperimentalFragmentVariables() {
107 experimentalFragmentVariables = true;
108 }
109 function disableExperimentalFragmentVariables() {
110 experimentalFragmentVariables = false;
111 }
112 var extras = {
113 gql: gql,
114 resetCaches: resetCaches,
115 disableFragmentWarnings: disableFragmentWarnings,
116 enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,
117 disableExperimentalFragmentVariables: disableExperimentalFragmentVariables
118 };
119 (function (gql_1) {
120 gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;
121 })(gql || (gql = {}));
122 gql["default"] = gql;
123 var gql$1 = gql;
124
125 exports.default = gql$1;
126 exports.disableExperimentalFragmentVariables = disableExperimentalFragmentVariables;
127 exports.disableFragmentWarnings = disableFragmentWarnings;
128 exports.enableExperimentalFragmentVariables = enableExperimentalFragmentVariables;
129 exports.gql = gql;
130 exports.resetCaches = resetCaches;
131
132 Object.defineProperty(exports, '__esModule', { value: true });
133
134})));
135//# sourceMappingURL=graphql-tag.umd.js.map