"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var apollo_link_1 = require("apollo-link"); function setContext(setter) { return new apollo_link_1.ApolloLink(function (operation, forward) { var request = tslib_1.__rest(operation, []); return new apollo_link_1.Observable(function (observer) { var handle; Promise.resolve(request) .then(function (req) { return setter(req, operation.getContext()); }) .then(operation.setContext) .then(function () { handle = forward(operation).subscribe({ next: observer.next.bind(observer), error: observer.error.bind(observer), complete: observer.complete.bind(observer), }); }) .catch(observer.error.bind(observer)); return function () { if (handle) handle.unsubscribe(); }; }); }); } exports.setContext = setContext; //# sourceMappingURL=index.js.map