You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.2 KiB
38 lines
1.2 KiB
'use strict'; |
|
|
|
Object.defineProperty(exports, '__esModule', { value: true }); |
|
|
|
var tslib = require('tslib'); |
|
var core = require('../core'); |
|
var utilities = require('../../utilities'); |
|
|
|
function setContext(setter) { |
|
return new core.ApolloLink(function (operation, forward) { |
|
var request = tslib.__rest(operation, []); |
|
return new utilities.Observable(function (observer) { |
|
var handle; |
|
var closed = false; |
|
Promise.resolve(request) |
|
.then(function (req) { return setter(req, operation.getContext()); }) |
|
.then(operation.setContext) |
|
.then(function () { |
|
if (closed) |
|
return; |
|
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 () { |
|
closed = true; |
|
if (handle) |
|
handle.unsubscribe(); |
|
}; |
|
}); |
|
}); |
|
} |
|
|
|
exports.setContext = setContext; |
|
//# sourceMappingURL=context.cjs.map
|
|
|