UNPKG

2.83 kBJavaScriptView Raw
1import { __assign, __spreadArray } from "tslib";
2import { print } from 'graphql';
3;
4var defaultHttpOptions = {
5 includeQuery: true,
6 includeExtensions: false,
7 preserveHeaderCase: false,
8};
9var defaultHeaders = {
10 accept: '*/*',
11 'content-type': 'application/json',
12};
13var defaultOptions = {
14 method: 'POST',
15};
16export var fallbackHttpConfig = {
17 http: defaultHttpOptions,
18 headers: defaultHeaders,
19 options: defaultOptions,
20};
21export var defaultPrinter = function (ast, printer) { return printer(ast); };
22export function selectHttpOptionsAndBody(operation, fallbackConfig) {
23 var configs = [];
24 for (var _i = 2; _i < arguments.length; _i++) {
25 configs[_i - 2] = arguments[_i];
26 }
27 configs.unshift(fallbackConfig);
28 return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,
29 defaultPrinter], configs, false));
30}
31export function selectHttpOptionsAndBodyInternal(operation, printer) {
32 var configs = [];
33 for (var _i = 2; _i < arguments.length; _i++) {
34 configs[_i - 2] = arguments[_i];
35 }
36 var options = {};
37 var http = {};
38 configs.forEach(function (config) {
39 options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });
40 if (config.credentials) {
41 options.credentials = config.credentials;
42 }
43 http = __assign(__assign({}, http), config.http);
44 });
45 if (options.headers) {
46 options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);
47 }
48 var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;
49 var body = { operationName: operationName, variables: variables };
50 if (http.includeExtensions)
51 body.extensions = extensions;
52 if (http.includeQuery)
53 body.query = printer(query, print);
54 return {
55 options: options,
56 body: body,
57 };
58}
59;
60function removeDuplicateHeaders(headers, preserveHeaderCase) {
61 if (!preserveHeaderCase) {
62 var normalizedHeaders_1 = Object.create(null);
63 Object.keys(Object(headers)).forEach(function (name) {
64 normalizedHeaders_1[name.toLowerCase()] = headers[name];
65 });
66 return normalizedHeaders_1;
67 }
68 var headerData = Object.create(null);
69 Object.keys(Object(headers)).forEach(function (name) {
70 headerData[name.toLowerCase()] = { originalName: name, value: headers[name] };
71 });
72 var normalizedHeaders = Object.create(null);
73 Object.keys(headerData).forEach(function (name) {
74 normalizedHeaders[headerData[name].originalName] = headerData[name].value;
75 });
76 return normalizedHeaders;
77}
78//# sourceMappingURL=selectHttpOptionsAndBody.js.map
\No newline at end of file