UNPKG

6.67 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('tslib'), require('apollo-link'), require('apollo-link-http-common')) :
3 typeof define === 'function' && define.amd ? define(['exports', 'tslib', 'apollo-link', 'apollo-link-http-common'], factory) :
4 (global = global || self, factory((global.apolloLink = global.apolloLink || {}, global.apolloLink.http = {}), global.tslib, global.apolloLink.core, global.apolloLink.httpCommon));
5}(this, function (exports, tslib_1, apolloLink, apolloLinkHttpCommon) { 'use strict';
6
7 var createHttpLink = function (linkOptions) {
8 if (linkOptions === void 0) { linkOptions = {}; }
9 var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, fetcher = linkOptions.fetch, includeExtensions = linkOptions.includeExtensions, useGETForQueries = linkOptions.useGETForQueries, requestOptions = tslib_1.__rest(linkOptions, ["uri", "fetch", "includeExtensions", "useGETForQueries"]);
10 apolloLinkHttpCommon.checkFetcher(fetcher);
11 if (!fetcher) {
12 fetcher = fetch;
13 }
14 var linkConfig = {
15 http: { includeExtensions: includeExtensions },
16 options: requestOptions.fetchOptions,
17 credentials: requestOptions.credentials,
18 headers: requestOptions.headers,
19 };
20 return new apolloLink.ApolloLink(function (operation) {
21 var chosenURI = apolloLinkHttpCommon.selectURI(operation, uri);
22 var context = operation.getContext();
23 var clientAwarenessHeaders = {};
24 if (context.clientAwareness) {
25 var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;
26 if (name_1) {
27 clientAwarenessHeaders['apollographql-client-name'] = name_1;
28 }
29 if (version) {
30 clientAwarenessHeaders['apollographql-client-version'] = version;
31 }
32 }
33 var contextHeaders = tslib_1.__assign({}, clientAwarenessHeaders, context.headers);
34 var contextConfig = {
35 http: context.http,
36 options: context.fetchOptions,
37 credentials: context.credentials,
38 headers: contextHeaders,
39 };
40 var _b = apolloLinkHttpCommon.selectHttpOptionsAndBody(operation, apolloLinkHttpCommon.fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;
41 var controller;
42 if (!options.signal) {
43 var _c = apolloLinkHttpCommon.createSignalIfSupported(), _controller = _c.controller, signal = _c.signal;
44 controller = _controller;
45 if (controller)
46 options.signal = signal;
47 }
48 var definitionIsMutation = function (d) {
49 return d.kind === 'OperationDefinition' && d.operation === 'mutation';
50 };
51 if (useGETForQueries &&
52 !operation.query.definitions.some(definitionIsMutation)) {
53 options.method = 'GET';
54 }
55 if (options.method === 'GET') {
56 var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;
57 if (parseError) {
58 return apolloLink.fromError(parseError);
59 }
60 chosenURI = newURI;
61 }
62 else {
63 try {
64 options.body = apolloLinkHttpCommon.serializeFetchParameter(body, 'Payload');
65 }
66 catch (parseError) {
67 return apolloLink.fromError(parseError);
68 }
69 }
70 return new apolloLink.Observable(function (observer) {
71 fetcher(chosenURI, options)
72 .then(function (response) {
73 operation.setContext({ response: response });
74 return response;
75 })
76 .then(apolloLinkHttpCommon.parseAndCheckHttpResponse(operation))
77 .then(function (result) {
78 observer.next(result);
79 observer.complete();
80 return result;
81 })
82 .catch(function (err) {
83 if (err.name === 'AbortError')
84 return;
85 if (err.result && err.result.errors && err.result.data) {
86 observer.next(err.result);
87 }
88 observer.error(err);
89 });
90 return function () {
91 if (controller)
92 controller.abort();
93 };
94 });
95 });
96 };
97 function rewriteURIForGET(chosenURI, body) {
98 var queryParams = [];
99 var addQueryParam = function (key, value) {
100 queryParams.push(key + "=" + encodeURIComponent(value));
101 };
102 if ('query' in body) {
103 addQueryParam('query', body.query);
104 }
105 if (body.operationName) {
106 addQueryParam('operationName', body.operationName);
107 }
108 if (body.variables) {
109 var serializedVariables = void 0;
110 try {
111 serializedVariables = apolloLinkHttpCommon.serializeFetchParameter(body.variables, 'Variables map');
112 }
113 catch (parseError) {
114 return { parseError: parseError };
115 }
116 addQueryParam('variables', serializedVariables);
117 }
118 if (body.extensions) {
119 var serializedExtensions = void 0;
120 try {
121 serializedExtensions = apolloLinkHttpCommon.serializeFetchParameter(body.extensions, 'Extensions map');
122 }
123 catch (parseError) {
124 return { parseError: parseError };
125 }
126 addQueryParam('extensions', serializedExtensions);
127 }
128 var fragment = '', preFragment = chosenURI;
129 var fragmentStart = chosenURI.indexOf('#');
130 if (fragmentStart !== -1) {
131 fragment = chosenURI.substr(fragmentStart);
132 preFragment = chosenURI.substr(0, fragmentStart);
133 }
134 var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';
135 var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;
136 return { newURI: newURI };
137 }
138 var HttpLink = (function (_super) {
139 tslib_1.__extends(HttpLink, _super);
140 function HttpLink(opts) {
141 return _super.call(this, createHttpLink(opts).request) || this;
142 }
143 return HttpLink;
144 }(apolloLink.ApolloLink));
145
146 exports.createHttpLink = createHttpLink;
147 exports.HttpLink = HttpLink;
148
149 Object.defineProperty(exports, '__esModule', { value: true });
150
151}));
152//# sourceMappingURL=bundle.umd.js.map