UNPKG

3.5 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5var tslib = require('tslib');
6var utilities = require('../../utilities');
7var core = require('../core');
8
9function 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}
75var 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
88exports.ErrorLink = ErrorLink;
89exports.onError = onError;
90//# sourceMappingURL=error.cjs.map