Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

apollo-link-retry

Package Overview
Dependencies
Maintainers
3
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

apollo-link-retry - npm Package Compare versions

Comparing version
2.1.2
to
2.1.3
+68
dist/src/bundle.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.retryLink = {})));
}(this, (function (exports) { 'use strict';
var __extends = (undefined && undefined.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var apollo_link_core_1 = require("apollo-link-core");
var RetryLink = (function (_super) {
__extends(RetryLink, _super);
function RetryLink(params) {
var _this = _super.call(this) || this;
_this.count = 0;
_this.defaultInterval = function (delay) { return delay; };
_this.max = (params && params.max) || 10;
_this.delay = (params && params.delay) || 300;
_this.interval = (params && params.interval) || _this.defaultInterval;
return _this;
}
RetryLink.prototype.request = function (operation, forward) {
var _this = this;
return new apollo_link_core_1.Observable(function (observer) {
var subscriber = {
next: function (data) {
_this.count = 0;
observer.next(data);
},
error: function (error) {
_this.count++;
if (_this.count < _this.max) {
_this.timer = setTimeout(function () {
var observable = forward(operation);
_this.subscription = observable.subscribe(subscriber);
}, _this.interval(_this.delay, _this.count));
}
else {
observer.error(error);
}
},
complete: observer.complete.bind(observer),
};
_this.subscription = forward(operation).subscribe(subscriber);
return function () {
_this.subscription.unsubscribe();
if (_this.timer) {
clearTimeout(_this.timer);
}
};
});
};
return RetryLink;
}(apollo_link_core_1.ApolloLink));
exports.default = RetryLink;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=bundle.umd.js.map
{"version":3,"file":"bundle.umd.js","sources":["retryLink.js"],"sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar apollo_link_core_1 = require(\"apollo-link-core\");\nvar RetryLink = (function (_super) {\n __extends(RetryLink, _super);\n function RetryLink(params) {\n var _this = _super.call(this) || this;\n _this.count = 0;\n _this.defaultInterval = function (delay) { return delay; };\n _this.max = (params && params.max) || 10;\n _this.delay = (params && params.delay) || 300;\n _this.interval = (params && params.interval) || _this.defaultInterval;\n return _this;\n }\n RetryLink.prototype.request = function (operation, forward) {\n var _this = this;\n return new apollo_link_core_1.Observable(function (observer) {\n var subscriber = {\n next: function (data) {\n _this.count = 0;\n observer.next(data);\n },\n error: function (error) {\n _this.count++;\n if (_this.count < _this.max) {\n _this.timer = setTimeout(function () {\n var observable = forward(operation);\n _this.subscription = observable.subscribe(subscriber);\n }, _this.interval(_this.delay, _this.count));\n }\n else {\n observer.error(error);\n }\n },\n complete: observer.complete.bind(observer),\n };\n _this.subscription = forward(operation).subscribe(subscriber);\n return function () {\n _this.subscription.unsubscribe();\n if (_this.timer) {\n clearTimeout(_this.timer);\n }\n };\n });\n };\n return RetryLink;\n}(apollo_link_core_1.ApolloLink));\nexports.default = RetryLink;\n//# sourceMappingURL=retryLink.js.map"],"names":["this"],"mappings":"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"}
import { ApolloLink, Observable, Operation, NextLink, FetchResult } from 'apollo-link-core';
export default class RetryLink extends ApolloLink {
private count;
private delay;
private max;
private interval;
private subscription;
private timer;
constructor(params?: {
max?: number;
delay?: number;
interval?: (delay: number, count: number) => number;
});
request(operation: Operation, forward: NextLink): Observable<FetchResult>;
private defaultInterval;
}
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var apollo_link_core_1 = require("apollo-link-core");
var RetryLink = (function (_super) {
__extends(RetryLink, _super);
function RetryLink(params) {
var _this = _super.call(this) || this;
_this.count = 0;
_this.defaultInterval = function (delay) { return delay; };
_this.max = (params && params.max) || 10;
_this.delay = (params && params.delay) || 300;
_this.interval = (params && params.interval) || _this.defaultInterval;
return _this;
}
RetryLink.prototype.request = function (operation, forward) {
var _this = this;
return new apollo_link_core_1.Observable(function (observer) {
var subscriber = {
next: function (data) {
_this.count = 0;
observer.next(data);
},
error: function (error) {
_this.count++;
if (_this.count < _this.max) {
_this.timer = setTimeout(function () {
var observable = forward(operation);
_this.subscription = observable.subscribe(subscriber);
}, _this.interval(_this.delay, _this.count));
}
else {
observer.error(error);
}
},
complete: observer.complete.bind(observer),
};
_this.subscription = forward(operation).subscribe(subscriber);
return function () {
_this.subscription.unsubscribe();
if (_this.timer) {
clearTimeout(_this.timer);
}
};
});
};
return RetryLink;
}(apollo_link_core_1.ApolloLink));
exports.default = RetryLink;
//# sourceMappingURL=retryLink.js.map
{"version":3,"file":"retryLink.js","sourceRoot":"","sources":["../../src/retryLink.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAO0B;AAE1B;IAAuC,6BAAU;IAQ/C,mBAAY,MAIX;QAJD,YAKE,iBAAO,SAIR;QAhBO,WAAK,GAAW,CAAC,CAAC;QAqDlB,qBAAe,GAAG,UAAA,KAAK,IAAI,OAAA,KAAK,EAAL,CAAK,CAAC;QAxCvC,KAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxC,KAAI,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;QAC7C,KAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAI,CAAC,eAAe,CAAC;;IACtE,CAAC;IAEM,2BAAO,GAAd,UACE,SAAoB,EACpB,OAAiB;QAFnB,iBAiCC;QA7BC,MAAM,CAAC,IAAI,6BAAU,CAAC,UAAA,QAAQ;YAC5B,IAAM,UAAU,GAAG;gBACjB,IAAI,EAAE,UAAA,IAAI;oBACR,KAAI,CAAC,KAAK,GAAG,CAAC,CAAC;oBACf,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBACD,KAAK,EAAE,UAAA,KAAK;oBACV,KAAI,CAAC,KAAK,EAAE,CAAC;oBACb,EAAE,CAAC,CAAC,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC1B,KAAI,CAAC,KAAK,GAAG,UAAU,CAAC;4BACtB,IAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;4BACtC,KAAI,CAAC,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;wBACvD,CAAC,EAAE,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5C,CAAC;oBAAC,IAAI,CAAC,CAAC;wBACN,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;gBACD,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3C,CAAC;YAEF,KAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE7D,MAAM,CAAC;gBACL,KAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;gBAChC,EAAE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACf,YAAY,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAGH,gBAAC;AAAD,CAAC,AAvDD,CAAuC,6BAAU,GAuDhD"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var chai_1 = require("chai");
var sinon = require("sinon");
var graphql_tag_1 = require("graphql-tag");
var apollo_link_core_1 = require("apollo-link-core");
var retryLink_1 = require("../src/retryLink");
var query = (_a = ["\n {\n sample {\n id\n }\n }\n"], _a.raw = ["\n {\n sample {\n id\n }\n }\n"], graphql_tag_1.default(_a));
describe('RetryLink', function () {
it('can be initialized', function () { return chai_1.assert(true); });
it('should fail with unreachable endpoint', function (done) {
var max = 10;
var retry = new retryLink_1.default({ delay: 1, max: max });
var error = new Error('I never work');
var stub = sinon.stub().callsFake(function () {
return new apollo_link_core_1.Observable(function (observer) { return observer.error(error); });
});
var link = apollo_link_core_1.ApolloLink.from([retry, stub]);
apollo_link_core_1.execute(link, { query: query }).subscribe(chai_1.expect.fail, function (actualError) {
chai_1.assert.deepEqual(stub.callCount, max);
chai_1.assert.deepEqual(error, actualError);
done();
}, chai_1.expect.fail);
});
it('should return data from the underlying link on a successful operation', function (done) {
var retry = new retryLink_1.default();
var data = {
data: {
hello: 'world',
},
};
var stub = sinon.stub();
stub.returns(apollo_link_core_1.Observable.of(data));
var link = apollo_link_core_1.ApolloLink.from([retry, stub]);
apollo_link_core_1.execute(link, { query: query }).subscribe(function (actualData) {
chai_1.assert(stub.calledOnce);
chai_1.assert.deepEqual(data, actualData);
}, chai_1.expect.fail, done);
});
it('should return data from the underlying link on a successful retry', function (done) {
var retry = new retryLink_1.default({ delay: 1, max: 2 });
var error = new Error('I never work');
var data = {
data: {
hello: 'world',
},
};
var stub = sinon.stub();
stub
.onFirstCall()
.returns(new apollo_link_core_1.Observable(function (observer) { return observer.error(error); }));
stub.onSecondCall().returns(apollo_link_core_1.Observable.of(data));
var link = apollo_link_core_1.ApolloLink.from([retry, stub]);
apollo_link_core_1.execute(link, { query: query }).subscribe(function (actualData) {
chai_1.assert.deepEqual(stub.callCount, 2);
chai_1.assert.deepEqual(data, actualData);
}, chai_1.expect.fail, done);
});
});
var _a;
//# sourceMappingURL=retryLink.js.map
{"version":3,"file":"retryLink.js","sourceRoot":"","sources":["../../tests/retryLink.ts"],"names":[],"mappings":"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"}
import './retryLink';
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
require("./retryLink");
//# sourceMappingURL=tests.js.map
{"version":3,"file":"tests.js","sourceRoot":"","sources":["../../tests/tests.ts"],"names":[],"mappings":";;AAAA,uBAAqB"}
+4
-0

@@ -0,4 +1,8 @@

# Change log
### vNext
### 2.0.2
- ApolloLink upgrade
### 2.0.1

@@ -5,0 +9,0 @@ - ApolloLink upgrade

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"bundle.umd.js","sources":["delayFunction.js","retryFunction.js","retryLink.js"],"sourcesContent":["export function buildDelayFunction(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.initial, initial = _c === void 0 ? 300 : _c, _d = _b.max, max = _d === void 0 ? Infinity : _d, _e = _b.jitter, jitter = _e === void 0 ? true : _e;\n var baseDelay;\n if (jitter) {\n baseDelay = initial;\n }\n else {\n baseDelay = initial / 2;\n }\n return function delayFunction(count) {\n var delay = Math.min(max, baseDelay * Math.pow(2, count));\n if (jitter) {\n delay = Math.random() * delay;\n }\n return delay;\n };\n}\n//# sourceMappingURL=delayFunction.js.map","export function buildRetryFunction(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.max, max = _c === void 0 ? 5 : _c, retryIf = _b.retryIf;\n return function retryFunction(count, operation, error) {\n if (count >= max)\n return false;\n return retryIf ? retryIf(error, operation) : !!error;\n };\n}\n//# sourceMappingURL=retryFunction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ApolloLink, Observable, } from 'apollo-link';\nimport { buildDelayFunction, } from './delayFunction';\nimport { buildRetryFunction, } from './retryFunction';\nvar RetryableOperation = (function () {\n function RetryableOperation(operation, nextLink, delayFor, retryIf) {\n var _this = this;\n this.operation = operation;\n this.nextLink = nextLink;\n this.delayFor = delayFor;\n this.retryIf = retryIf;\n this.retryCount = 0;\n this.values = [];\n this.complete = false;\n this.canceled = false;\n this.observers = [];\n this.currentSubscription = null;\n this.onNext = function (value) {\n _this.values.push(value);\n for (var _i = 0, _a = _this.observers; _i < _a.length; _i++) {\n var observer = _a[_i];\n observer.next(value);\n }\n };\n this.onComplete = function () {\n _this.complete = true;\n for (var _i = 0, _a = _this.observers; _i < _a.length; _i++) {\n var observer = _a[_i];\n observer.complete();\n }\n };\n this.onError = function (error) {\n _this.retryCount += 1;\n if (_this.retryIf(_this.retryCount, _this.operation, error)) {\n _this.scheduleRetry(_this.delayFor(_this.retryCount, _this.operation, error));\n return;\n }\n _this.error = error;\n for (var _i = 0, _a = _this.observers; _i < _a.length; _i++) {\n var observer = _a[_i];\n observer.error(error);\n }\n };\n }\n RetryableOperation.prototype.subscribe = function (observer) {\n if (this.canceled) {\n throw new Error(\"Subscribing to a retryable link that was canceled is not supported\");\n }\n this.observers.push(observer);\n for (var _i = 0, _a = this.values; _i < _a.length; _i++) {\n var value = _a[_i];\n observer.next(value);\n }\n if (this.complete) {\n observer.complete();\n }\n else if (this.error) {\n observer.error(this.error);\n }\n };\n RetryableOperation.prototype.unsubscribe = function (observer) {\n var index = this.observers.indexOf(observer);\n if (index < 0) {\n throw new Error(\"RetryLink BUG! Attempting to unsubscribe unknown observer!\");\n }\n this.observers[index] = null;\n if (this.observers.every(function (o) { return o === null; })) {\n this.cancel();\n }\n };\n RetryableOperation.prototype.start = function () {\n if (this.currentSubscription)\n return;\n this.try();\n };\n RetryableOperation.prototype.cancel = function () {\n if (this.currentSubscription) {\n this.currentSubscription.unsubscribe();\n }\n clearTimeout(this.timerId);\n this.timerId = null;\n this.currentSubscription = null;\n this.canceled = true;\n };\n RetryableOperation.prototype.try = function () {\n this.currentSubscription = this.nextLink(this.operation).subscribe({\n next: this.onNext,\n error: this.onError,\n complete: this.onComplete,\n });\n };\n RetryableOperation.prototype.scheduleRetry = function (delay) {\n var _this = this;\n if (this.timerId) {\n throw new Error(\"RetryLink BUG! Encountered overlapping retries\");\n }\n this.timerId = setTimeout(function () {\n _this.timerId = null;\n _this.try();\n }, delay);\n };\n return RetryableOperation;\n}());\nvar RetryLink = (function (_super) {\n __extends(RetryLink, _super);\n function RetryLink(_a) {\n var _b = _a === void 0 ? {} : _a, delay = _b.delay, attempts = _b.attempts;\n var _this = _super.call(this) || this;\n _this.delayFor =\n typeof delay === 'function' ? delay : buildDelayFunction(delay);\n _this.retryIf =\n typeof attempts === 'function' ? attempts : buildRetryFunction(attempts);\n return _this;\n }\n RetryLink.prototype.request = function (operation, nextLink) {\n var retryable = new RetryableOperation(operation, nextLink, this.delayFor, this.retryIf);\n retryable.start();\n return new Observable(function (observer) {\n retryable.subscribe(observer);\n return function () {\n retryable.unsubscribe(observer);\n };\n });\n };\n return RetryLink;\n}(ApolloLink));\nexport { RetryLink };\n//# sourceMappingURL=retryLink.js.map"],"names":["this","Observable","ApolloLink"],"mappings":"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"}
{"version":3,"file":"bundle.umd.js","sources":["../src/delayFunction.ts","../src/retryFunction.ts","../src/retryLink.ts"],"sourcesContent":["import { Operation } from 'apollo-link';\n\n/**\n * Advanced mode: a function that implements the strategy for calculating delays\n * for particular responses.\n */\nexport interface DelayFunction {\n (count: number, operation: Operation, error: any): number;\n}\n\nexport interface DelayFunctionOptions {\n /**\n * The number of milliseconds to wait before attempting the first retry.\n *\n * Delays will increase exponentially for each attempt. E.g. if this is\n * set to 100, subsequent retries will be delayed by 200, 400, 800, etc,\n * until they reach maxDelay.\n *\n * Note that if jittering is enabled, this is the _average_ delay.\n *\n * Defaults to 300.\n */\n initial?: number;\n\n /**\n * The maximum number of milliseconds that the link should wait for any\n * retry.\n *\n * Defaults to Infinity.\n */\n max?: number;\n\n /**\n * Whether delays between attempts should be randomized.\n *\n * This helps avoid thundering herd type situations by better distributing\n * load during major outages.\n *\n * Defaults to true.\n */\n jitter?: boolean;\n}\n\nexport function buildDelayFunction({\n initial = 300,\n max = Infinity,\n jitter = true,\n}: DelayFunctionOptions = {}): DelayFunction {\n let baseDelay;\n if (jitter) {\n // If we're jittering, baseDelay is half of the maximum delay for that\n // attempt (and is, on average, the delay we will encounter).\n baseDelay = initial;\n } else {\n // If we're not jittering, adjust baseDelay so that the first attempt\n // lines up with initialDelay, for everyone's sanity.\n baseDelay = initial / 2;\n }\n\n return function delayFunction(count: number) {\n let delay = Math.min(max, baseDelay * 2 ** count);\n if (jitter) {\n // We opt for a full jitter approach for a mostly uniform distribution,\n // but bound it within initialDelay and delay for everyone's sanity.\n delay = Math.random() * delay;\n }\n\n return delay;\n };\n}\n","import { Operation } from 'apollo-link';\n\n/**\n * Advanced mode: a function that determines both whether a particular\n * response should be retried.\n */\nexport interface RetryFunction {\n (count: number, operation: Operation, error: any): boolean;\n}\n\nexport interface RetryFunctionOptions {\n /**\n * The max number of times to try a single operation before giving up.\n *\n * Note that this INCLUDES the initial request as part of the count.\n * E.g. maxTries of 1 indicates no retrying should occur.\n *\n * Defaults to 5. Pass Infinity for infinite retries.\n */\n max?: number;\n\n /**\n * Predicate function that determines whether a particular error should\n * trigger a retry.\n *\n * For example, you may want to not retry 4xx class HTTP errors.\n *\n * By default, all errors are retried.\n */\n retryIf?: (error: any, operation: Operation) => boolean;\n}\n\nexport function buildRetryFunction({\n max = 5,\n retryIf,\n}: RetryFunctionOptions = {}): RetryFunction {\n return function retryFunction(count, operation, error) {\n if (count >= max) return false;\n return retryIf ? retryIf(error, operation) : !!error;\n };\n}\n","import {\n ApolloLink,\n Observable,\n Operation,\n NextLink,\n FetchResult,\n} from 'apollo-link';\n\nimport {\n DelayFunction,\n DelayFunctionOptions,\n buildDelayFunction,\n} from './delayFunction';\nimport {\n RetryFunction,\n RetryFunctionOptions,\n buildRetryFunction,\n} from './retryFunction';\n\nexport namespace RetryLink {\n export interface Options {\n /**\n * Configuration for the delay strategy to use, or a custom delay strategy.\n */\n delay?: DelayFunctionOptions | DelayFunction;\n\n /**\n * Configuration for the retry strategy to use, or a custom retry strategy.\n */\n attempts?: RetryFunctionOptions | RetryFunction;\n }\n}\n\n/**\n * Tracking and management of operations that may be (or currently are) retried.\n */\nclass RetryableOperation<TValue = any> {\n private retryCount: number = 0;\n private values: any[] = [];\n private error: any;\n private complete = false;\n private canceled = false;\n private observers: ZenObservable.Observer<TValue>[] = [];\n private currentSubscription: ZenObservable.Subscription = null;\n private timerId: number;\n\n constructor(\n private operation: Operation,\n private nextLink: NextLink,\n private delayFor: DelayFunction,\n private retryIf: RetryFunction,\n ) {}\n\n /**\n * Register a new observer for this operation.\n *\n * If the operation has previously emitted other events, they will be\n * immediately triggered for the observer.\n */\n subscribe(observer: ZenObservable.Observer<TValue>) {\n if (this.canceled) {\n throw new Error(\n `Subscribing to a retryable link that was canceled is not supported`,\n );\n }\n this.observers.push(observer);\n\n // If we've already begun, catch this observer up.\n for (const value of this.values) {\n observer.next(value);\n }\n\n if (this.complete) {\n observer.complete();\n } else if (this.error) {\n observer.error(this.error);\n }\n }\n\n /**\n * Remove a previously registered observer from this operation.\n *\n * If no observers remain, the operation will stop retrying, and unsubscribe\n * from its downstream link.\n */\n unsubscribe(observer: ZenObservable.Observer<TValue>) {\n const index = this.observers.indexOf(observer);\n if (index < 0) {\n throw new Error(\n `RetryLink BUG! Attempting to unsubscribe unknown observer!`,\n );\n }\n // Note that we are careful not to change the order of length of the array,\n // as we are often mid-iteration when calling this method.\n this.observers[index] = null;\n\n // If this is the last observer, we're done.\n if (this.observers.every(o => o === null)) {\n this.cancel();\n }\n }\n\n /**\n * Start the initial request.\n */\n start() {\n if (this.currentSubscription) return; // Already started.\n\n this.try();\n }\n\n /**\n * Stop retrying for the operation, and cancel any in-progress requests.\n */\n cancel() {\n if (this.currentSubscription) {\n this.currentSubscription.unsubscribe();\n }\n clearTimeout(this.timerId);\n this.timerId = null;\n this.currentSubscription = null;\n this.canceled = true;\n }\n\n private try() {\n this.currentSubscription = this.nextLink(this.operation).subscribe({\n next: this.onNext,\n error: this.onError,\n complete: this.onComplete,\n });\n }\n\n private onNext = (value: any) => {\n this.values.push(value);\n for (const observer of this.observers) {\n observer.next(value);\n }\n };\n\n private onComplete = () => {\n this.complete = true;\n for (const observer of this.observers) {\n observer.complete();\n }\n };\n\n private onError = error => {\n this.retryCount += 1;\n\n // Should we retry?\n if (this.retryIf(this.retryCount, this.operation, error)) {\n this.scheduleRetry(this.delayFor(this.retryCount, this.operation, error));\n return;\n }\n\n this.error = error;\n for (const observer of this.observers) {\n observer.error(error);\n }\n };\n\n private scheduleRetry(delay) {\n if (this.timerId) {\n throw new Error(`RetryLink BUG! Encountered overlapping retries`);\n }\n\n this.timerId = setTimeout(() => {\n this.timerId = null;\n this.try();\n }, delay);\n }\n}\n\nexport class RetryLink extends ApolloLink {\n private delayFor: DelayFunction;\n private retryIf: RetryFunction;\n\n constructor({ delay, attempts }: RetryLink.Options = {}) {\n super();\n this.delayFor =\n typeof delay === 'function' ? delay : buildDelayFunction(delay);\n this.retryIf =\n typeof attempts === 'function' ? attempts : buildRetryFunction(attempts);\n }\n\n public request(\n operation: Operation,\n nextLink: NextLink,\n ): Observable<FetchResult> {\n const retryable = new RetryableOperation(\n operation,\n nextLink,\n this.delayFor,\n this.retryIf,\n );\n retryable.start();\n\n return new Observable(observer => {\n retryable.subscribe(observer);\n return () => {\n retryable.unsubscribe(observer);\n };\n });\n }\n}\n"],"names":["Observable","ApolloLink"],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"delayFunction.js","sourceRoot":"","sources":["../src/delayFunction.ts"],"names":[],"mappings":"AA2CA,MAAM,6BACJ,EAA2E;QAA3E,4BAA2E,EAAzE,eAAa,EAAb,kCAAa,EAAE,WAAc,EAAd,mCAAc,EAAE,cAAa,EAAb,kCAAa;IAE9C,IAAI,SAAS,CAAC;IACd,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAGX,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;IAAC,IAAI,CAAC,CAAC;QAGN,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,uBAAuB,KAAa;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,SAAA,CAAC,EAAI,KAAK,CAAA,CAAC,CAAC;QAClD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAGX,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
{"version":3,"file":"delayFunction.js","sourceRoot":"","sources":["../src/delayFunction.ts"],"names":[],"mappings":"AA2CA,MAAM,6BAA6B,EAIP;QAJO,4BAIP,EAH1B,eAAa,EAAb,kCAAa,EACb,WAAc,EAAd,mCAAc,EACd,cAAa,EAAb,kCAAa;IAEb,IAAI,SAAS,CAAC;IACd,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAGX,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;IAAC,IAAI,CAAC,CAAC;QAGN,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,uBAAuB,KAAa;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,SAAA,CAAC,EAAI,KAAK,CAAA,CAAC,CAAC;QAClD,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAGX,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}

@@ -1,1 +0,1 @@

{"version":3,"file":"retryFunction.js","sourceRoot":"","sources":["../src/retryFunction.ts"],"names":[],"mappings":"AAgCA,MAAM,6BACJ,EAA+C;QAA/C,4BAA+C,EAA7C,WAAO,EAAP,4BAAO,EAAE,oBAAO;IAElB,MAAM,CAAC,uBAAuB,KAAK,EAAE,SAAS,EAAE,KAAK;QACnD,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;YAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC"}
{"version":3,"file":"retryFunction.js","sourceRoot":"","sources":["../src/retryFunction.ts"],"names":[],"mappings":"AAgCA,MAAM,6BAA6B,EAGP;QAHO,4BAGP,EAF1B,WAAO,EAAP,4BAAO,EACP,oBAAO;IAEP,MAAM,CAAC,uBAAuB,KAAK,EAAE,SAAS,EAAE,KAAK;QACnD,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;YAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC,CAAC;AACJ,CAAC"}

@@ -1,2 +0,1 @@

/// <reference types="zen-observable" />
import { ApolloLink, Observable, Operation, NextLink, FetchResult } from 'apollo-link';

@@ -3,0 +2,0 @@ import { DelayFunction, DelayFunctionOptions } from './delayFunction';

{
"name": "apollo-link-retry",
"version": "2.1.2",
"version": "2.1.3",
"description": "Retry Apollo Link for GraphQL Network Stack",

@@ -26,4 +26,3 @@ "author": "Evans Hauser <evanshauser@gmail.com>",

"scripts": {
"build:browser":
"browserify ./lib/bundle.umd.js -o=./lib/bundle.js --i apollo-link && npm run minify:browser",
"build:browser": "browserify ./lib/bundle.umd.js -o=./lib/bundle.js --i apollo-link && npm run minify:browser",
"build": "tsc -p .",

@@ -34,6 +33,4 @@ "bundle": "rollup -c",

"filesize": "npm run build && npm run build:browser",
"lint":
"tslint --type-check -p tsconfig.json -c ../../tslint.json src/*.ts",
"minify:browser":
"uglifyjs -c -m -o ./lib/bundle.min.js -- ./lib/bundle.js",
"lint": "tslint --type-check -p tsconfig.json -c ../../tslint.json src/*.ts",
"minify:browser": "uglifyjs -c -m -o ./lib/bundle.min.js -- ./lib/bundle.js",
"postbuild": "npm run bundle",

@@ -47,17 +44,17 @@ "prebuild": "npm run clean",

"@types/zen-observable": "0.5.3",
"apollo-link": "^1.1.0"
"apollo-link": "^1.2.0"
},
"devDependencies": {
"@types/graphql": "0.12.3",
"@types/graphql": "0.12.4",
"@types/jest": "21.1.10",
"browserify": "14.5.0",
"graphql": "0.13.0",
"browserify": "16.1.0",
"graphql": "0.13.1",
"graphql-tag": "2.7.3",
"jest": "21.2.1",
"rimraf": "2.6.1",
"rollup": "0.55.3",
"rollup": "0.56.2",
"ts-jest": "21.2.4",
"tslint": "5.9.1",
"typescript": "2.7.1",
"uglify-js": "3.3.9",
"typescript": "2.7.2",
"uglify-js": "3.3.11",
"wait-for-observables": "1.0.3"

@@ -70,4 +67,10 @@ },

"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"moduleFileExtensions": ["ts", "tsx", "js", "json"]
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"json"
],
"mapCoverage": true
}
}
import gql from 'graphql-tag';
import { execute, ApolloLink, Observable, FetchResult } from 'apollo-link';
import {
execute,
ApolloLink,
Observable,
FetchResult,
fromError,
} from 'apollo-link';
import waitFor from 'wait-for-observables';

@@ -21,3 +27,3 @@

const retry = new RetryLink({ delay: { initial: 1 }, attempts: { max } });
const stub = jest.fn(() => new Observable(o => o.error(standardError)));
const stub = jest.fn(() => fromError(standardError));
const link = ApolloLink.from([retry, stub]);

@@ -48,3 +54,3 @@

const stub = jest.fn();
stub.mockReturnValueOnce(new Observable(o => o.error(standardError)));
stub.mockReturnValueOnce(fromError(standardError));
stub.mockReturnValueOnce(Observable.of(data));

@@ -66,3 +72,3 @@ const link = ApolloLink.from([retry, stub]);

const firstTry = new Observable(o => o.error(standardError));
const firstTry = fromError(standardError);
// Hold the test hostage until we're hit

@@ -102,4 +108,4 @@ let secondTry;

const stub = jest.fn();
stub.mockReturnValueOnce(new Observable(o => o.error(standardError)));
stub.mockReturnValueOnce(new Observable(o => o.error(standardError)));
stub.mockReturnValueOnce(fromError(standardError));
stub.mockReturnValueOnce(fromError(standardError));
stub.mockReturnValueOnce(Observable.of(data));

@@ -121,3 +127,3 @@ const link = ApolloLink.from([retry, stub]);

const data = { data: { hello: 'world' } };
const stub = jest.fn(() => new Observable(o => o.error(standardError)));
const stub = jest.fn(() => fromError(standardError));
const link = ApolloLink.from([retry, stub]);

@@ -137,3 +143,3 @@

const retry = new RetryLink({ delay: delayStub, attempts: { max: 3 } });
const linkStub = jest.fn(() => new Observable(o => o.error(standardError)));
const linkStub = jest.fn(() => fromError(standardError));
const link = ApolloLink.from([retry, linkStub]);

@@ -160,3 +166,3 @@ const [{ error }] = await waitFor(execute(link, { query }));

});
const linkStub = jest.fn(() => new Observable(o => o.error(standardError)));
const linkStub = jest.fn(() => fromError(standardError));
const link = ApolloLink.from([retry, linkStub]);

@@ -163,0 +169,0 @@ const [{ error }] = await waitFor(execute(link, { query }));

@@ -44,5 +44,7 @@ import { Operation } from 'apollo-link';

export function buildDelayFunction(
{ initial = 300, max = Infinity, jitter = true }: DelayFunctionOptions = {},
): DelayFunction {
export function buildDelayFunction({
initial = 300,
max = Infinity,
jitter = true,
}: DelayFunctionOptions = {}): DelayFunction {
let baseDelay;

@@ -49,0 +51,0 @@ if (jitter) {

@@ -33,5 +33,6 @@ import { Operation } from 'apollo-link';

export function buildRetryFunction(
{ max = 5, retryIf }: RetryFunctionOptions = {},
): RetryFunction {
export function buildRetryFunction({
max = 5,
retryIf,
}: RetryFunctionOptions = {}): RetryFunction {
return function retryFunction(count, operation, error) {

@@ -38,0 +39,0 @@ if (count >= max) return false;