UNPKG

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