1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | var tslib = require('tslib');
|
6 | var core = require('../core');
|
7 | var utilities = require('../../utilities');
|
8 |
|
9 | function setContext(setter) {
|
10 | return new core.ApolloLink(function (operation, forward) {
|
11 | var request = tslib.__rest(operation, []);
|
12 | return new utilities.Observable(function (observer) {
|
13 | var handle;
|
14 | var closed = false;
|
15 | Promise.resolve(request)
|
16 | .then(function (req) { return setter(req, operation.getContext()); })
|
17 | .then(operation.setContext)
|
18 | .then(function () {
|
19 | if (closed)
|
20 | return;
|
21 | handle = forward(operation).subscribe({
|
22 | next: observer.next.bind(observer),
|
23 | error: observer.error.bind(observer),
|
24 | complete: observer.complete.bind(observer),
|
25 | });
|
26 | })
|
27 | .catch(observer.error.bind(observer));
|
28 | return function () {
|
29 | closed = true;
|
30 | if (handle)
|
31 | handle.unsubscribe();
|
32 | };
|
33 | });
|
34 | });
|
35 | }
|
36 |
|
37 | exports.setContext = setContext;
|
38 |
|