1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | var tslib = require('tslib');
|
6 | var utilities = require('../../utilities');
|
7 | var core = require('../core');
|
8 |
|
9 | function onError(errorHandler) {
|
10 | return new core.ApolloLink(function (operation, forward) {
|
11 | return new utilities.Observable(function (observer) {
|
12 | var sub;
|
13 | var retriedSub;
|
14 | var retriedResult;
|
15 | try {
|
16 | sub = forward(operation).subscribe({
|
17 | next: function (result) {
|
18 | if (result.errors) {
|
19 | retriedResult = errorHandler({
|
20 | graphQLErrors: result.errors,
|
21 | response: result,
|
22 | operation: operation,
|
23 | forward: forward,
|
24 | });
|
25 | if (retriedResult) {
|
26 | retriedSub = retriedResult.subscribe({
|
27 | next: observer.next.bind(observer),
|
28 | error: observer.error.bind(observer),
|
29 | complete: observer.complete.bind(observer),
|
30 | });
|
31 | return;
|
32 | }
|
33 | }
|
34 | observer.next(result);
|
35 | },
|
36 | error: function (networkError) {
|
37 | retriedResult = errorHandler({
|
38 | operation: operation,
|
39 | networkError: networkError,
|
40 | graphQLErrors: networkError &&
|
41 | networkError.result &&
|
42 | networkError.result.errors,
|
43 | forward: forward,
|
44 | });
|
45 | if (retriedResult) {
|
46 | retriedSub = retriedResult.subscribe({
|
47 | next: observer.next.bind(observer),
|
48 | error: observer.error.bind(observer),
|
49 | complete: observer.complete.bind(observer),
|
50 | });
|
51 | return;
|
52 | }
|
53 | observer.error(networkError);
|
54 | },
|
55 | complete: function () {
|
56 | if (!retriedResult) {
|
57 | observer.complete.bind(observer)();
|
58 | }
|
59 | },
|
60 | });
|
61 | }
|
62 | catch (e) {
|
63 | errorHandler({ networkError: e, operation: operation, forward: forward });
|
64 | observer.error(e);
|
65 | }
|
66 | return function () {
|
67 | if (sub)
|
68 | sub.unsubscribe();
|
69 | if (retriedSub)
|
70 | sub.unsubscribe();
|
71 | };
|
72 | });
|
73 | });
|
74 | }
|
75 | var ErrorLink = (function (_super) {
|
76 | tslib.__extends(ErrorLink, _super);
|
77 | function ErrorLink(errorHandler) {
|
78 | var _this = _super.call(this) || this;
|
79 | _this.link = onError(errorHandler);
|
80 | return _this;
|
81 | }
|
82 | ErrorLink.prototype.request = function (operation, forward) {
|
83 | return this.link.request(operation, forward);
|
84 | };
|
85 | return ErrorLink;
|
86 | }(core.ApolloLink));
|
87 |
|
88 | exports.ErrorLink = ErrorLink;
|
89 | exports.onError = onError;
|
90 |
|