UNPKG

4.09 kBJavaScriptView Raw
1/* tslint:disable */
2var __extends = (this && this.__extends) || (function () {
3 var extendStatics = function (d, b) {
4 extendStatics = Object.setPrototypeOf ||
5 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7 return extendStatics(d, b);
8 }
9 return function (d, b) {
10 extendStatics(d, b);
11 function __() { this.constructor = d; }
12 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13 };
14})();
15import { ApolloLink, Observable, } from 'apollo-link';
16export var onError = function (errorHandler) {
17 return new ApolloLink(function (operation, forward) {
18 return new Observable(function (observer) {
19 var sub;
20 var retriedSub;
21 var retriedResult;
22 try {
23 sub = forward(operation).subscribe({
24 next: function (result) {
25 if (result.errors) {
26 retriedResult = errorHandler({
27 graphQLErrors: result.errors,
28 response: result,
29 operation: operation,
30 forward: forward,
31 });
32 if (retriedResult) {
33 retriedSub = retriedResult.subscribe({
34 next: observer.next.bind(observer),
35 error: observer.error.bind(observer),
36 complete: observer.complete.bind(observer),
37 });
38 return;
39 }
40 }
41 observer.next(result);
42 },
43 error: function (networkError) {
44 retriedResult = errorHandler({
45 operation: operation,
46 networkError: networkError,
47 //Network errors can return GraphQL errors on for example a 403
48 graphQLErrors: networkError.result && networkError.result.errors,
49 forward: forward,
50 });
51 if (retriedResult) {
52 retriedSub = retriedResult.subscribe({
53 next: observer.next.bind(observer),
54 error: observer.error.bind(observer),
55 complete: observer.complete.bind(observer),
56 });
57 return;
58 }
59 observer.error(networkError);
60 },
61 complete: function () {
62 // disable the previous sub from calling complete on observable
63 // if retry is in flight.
64 if (!retriedResult) {
65 observer.complete.bind(observer)();
66 }
67 },
68 });
69 }
70 catch (e) {
71 errorHandler({ networkError: e, operation: operation, forward: forward });
72 observer.error(e);
73 }
74 return function () {
75 if (sub)
76 sub.unsubscribe();
77 if (retriedSub)
78 sub.unsubscribe();
79 };
80 });
81 });
82};
83var ErrorLink = /** @class */ (function (_super) {
84 __extends(ErrorLink, _super);
85 function ErrorLink(errorHandler) {
86 var _this = _super.call(this) || this;
87 _this.link = onError(errorHandler);
88 return _this;
89 }
90 ErrorLink.prototype.request = function (operation, forward) {
91 return this.link.request(operation, forward);
92 };
93 return ErrorLink;
94}(ApolloLink));
95export { ErrorLink };
96//# sourceMappingURL=index.js.map
\No newline at end of file