rxjs-poll 2.2.2 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +3 -2
  2. package/dist/cjs/index.js +134 -78
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/esm/index.js +135 -79
  5. package/dist/esm/index.js.map +1 -1
  6. package/dist/types/common/service.d.ts +9 -0
  7. package/dist/types/common/service.d.ts.map +1 -0
  8. package/dist/types/constants/config.const.d.ts +1 -1
  9. package/dist/types/constants/state.const.d.ts +8 -0
  10. package/dist/types/constants/state.const.d.ts.map +1 -0
  11. package/dist/types/constants/timing.const.d.ts +6 -0
  12. package/dist/types/constants/timing.const.d.ts.map +1 -0
  13. package/dist/types/observables/factory.d.ts +11 -0
  14. package/dist/types/observables/factory.d.ts.map +1 -0
  15. package/dist/types/observables/interval-poller.d.ts +3 -3
  16. package/dist/types/observables/interval-poller.d.ts.map +1 -1
  17. package/dist/types/observables/pause-delay.d.ts +7 -0
  18. package/dist/types/observables/pause-delay.d.ts.map +1 -0
  19. package/dist/types/observables/repeat-poller.d.ts +3 -3
  20. package/dist/types/observables/repeat-poller.d.ts.map +1 -1
  21. package/dist/types/operators/retry-pol.operator.d.ts +11 -0
  22. package/dist/types/operators/retry-pol.operator.d.ts.map +1 -0
  23. package/dist/types/poll.d.ts.map +1 -1
  24. package/dist/types/types/config.type.d.ts +1 -1
  25. package/dist/types/types/observables.type.d.ts +9 -21
  26. package/dist/types/types/observables.type.d.ts.map +1 -1
  27. package/dist/types/types/poll.type.d.ts +1 -6
  28. package/dist/types/types/poll.type.d.ts.map +1 -1
  29. package/dist/types/types/retry.type.d.ts +7 -0
  30. package/dist/types/types/retry.type.d.ts.map +1 -0
  31. package/dist/types/types/service.type.d.ts +18 -0
  32. package/dist/types/types/service.type.d.ts.map +1 -0
  33. package/dist/umd/index.js +134 -78
  34. package/dist/umd/index.js.map +1 -1
  35. package/dist/umd/index.min.js +1 -1
  36. package/dist/umd/index.min.js.map +1 -1
  37. package/package.json +5 -5
  38. package/dist/types/common/state.d.ts +0 -8
  39. package/dist/types/common/state.d.ts.map +0 -1
  40. package/dist/types/observables/poller-factory.d.ts +0 -11
  41. package/dist/types/observables/poller-factory.d.ts.map +0 -1
  42. package/dist/types/observables/retry-operator.d.ts +0 -11
  43. package/dist/types/observables/retry-operator.d.ts.map +0 -1
package/README.md CHANGED
@@ -14,11 +14,12 @@ A flexible RxJS operator library that enables polling on any completed observabl
14
14
  - **Two polling types**: `repeat` and `interval` to suit different use cases
15
15
  - **Timing strategies**: `constant`, `linear`, `exponential`, `random` and `dynamic` (custom logic)
16
16
  - **Auto-pause**: Automatically pause/resume polling based on page visibility (browser only)
17
+ - **Reliable execution**: First and in-flight cycles (poll or retry) guaranteed
17
18
  - **Flexible retries**: Control retry attempts with consecutive or total counting modes
18
19
  - **Input validation**: Guards against unexpected input time values
19
20
  - **Cross-platform**: Works in both browser and Node.js environments
20
21
  - **Modern compatibility**: Compatible with RxJS v7+
21
- - **Multiple module formats**: Supports CJS, ESM, and UMD
22
+ - **Module formats**: Supports CJS, ESM, and UMD
22
23
 
23
24
  ## 📦 Installation
24
25
 
@@ -210,7 +211,7 @@ interface PollConfig {
210
211
  * - true: Pause polling when tab isn't active, and resume on active
211
212
  * - false: Poll even when tab isn't focused
212
213
  * @default true
213
- * @note Every started cycle finishes before pausing
214
+ * @note Every started cycle (poll or retry) finishes before pausing
214
215
  */
215
216
  pauseWhenHidden?: boolean;
216
217
  }
package/dist/cjs/index.js CHANGED
@@ -15,7 +15,7 @@ const strategyType = {
15
15
  DYNAMIC: 'dynamic',
16
16
  };
17
17
 
18
- const controlConfig = {
18
+ const defaultConfig = {
19
19
  type: pollType.REPEAT,
20
20
  delay: {
21
21
  strategy: strategyType.CONSTANT,
@@ -98,7 +98,7 @@ function extendConfig(config) {
98
98
  return Object.assign(Object.assign({}, normalizedConfig), { getDelayTime: getTimeProducer('delay', normalizedConfig), getRetryTime: getTimeProducer('retry', normalizedConfig) });
99
99
  }
100
100
  function getTimeProducer(mode, config) {
101
- const defaultTime = controlConfig[mode].time;
101
+ const defaultTime = defaultConfig[mode].time;
102
102
  const timeProducer = getStrategyTimeProducer(mode, config);
103
103
  return (state) => {
104
104
  const producedTime = timeProducer(Object.assign({}, state));
@@ -109,32 +109,88 @@ function getTimeProducer(mode, config) {
109
109
  function normalizeConfig(config) {
110
110
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
111
111
  return {
112
- type: (_a = config === null || config === void 0 ? void 0 : config.type) !== null && _a !== void 0 ? _a : controlConfig.type,
112
+ type: (_a = config === null || config === void 0 ? void 0 : config.type) !== null && _a !== void 0 ? _a : defaultConfig.type,
113
113
  delay: {
114
- strategy: (_c = (_b = config === null || config === void 0 ? void 0 : config.delay) === null || _b === void 0 ? void 0 : _b.strategy) !== null && _c !== void 0 ? _c : controlConfig.delay.strategy,
114
+ strategy: (_c = (_b = config === null || config === void 0 ? void 0 : config.delay) === null || _b === void 0 ? void 0 : _b.strategy) !== null && _c !== void 0 ? _c : defaultConfig.delay.strategy,
115
115
  time: isFunction((_d = config === null || config === void 0 ? void 0 : config.delay) === null || _d === void 0 ? void 0 : _d.time)
116
116
  ? config.delay.time
117
- : normalizeNumber((_e = config === null || config === void 0 ? void 0 : config.delay) === null || _e === void 0 ? void 0 : _e.time, controlConfig.delay.time),
117
+ : normalizeNumber((_e = config === null || config === void 0 ? void 0 : config.delay) === null || _e === void 0 ? void 0 : _e.time, defaultConfig.delay.time),
118
118
  },
119
119
  retry: {
120
- strategy: (_g = (_f = config === null || config === void 0 ? void 0 : config.retry) === null || _f === void 0 ? void 0 : _f.strategy) !== null && _g !== void 0 ? _g : controlConfig.retry.strategy,
120
+ strategy: (_g = (_f = config === null || config === void 0 ? void 0 : config.retry) === null || _f === void 0 ? void 0 : _f.strategy) !== null && _g !== void 0 ? _g : defaultConfig.retry.strategy,
121
121
  time: isFunction((_h = config === null || config === void 0 ? void 0 : config.retry) === null || _h === void 0 ? void 0 : _h.time)
122
122
  ? config.retry.time
123
- : normalizeNumber((_j = config === null || config === void 0 ? void 0 : config.retry) === null || _j === void 0 ? void 0 : _j.time, controlConfig.retry.time),
124
- limit: normalizeNumber((_k = config === null || config === void 0 ? void 0 : config.retry) === null || _k === void 0 ? void 0 : _k.limit, controlConfig.retry.limit, false),
125
- consecutiveOnly: (_m = (_l = config === null || config === void 0 ? void 0 : config.retry) === null || _l === void 0 ? void 0 : _l.consecutiveOnly) !== null && _m !== void 0 ? _m : controlConfig.retry.consecutiveOnly,
123
+ : normalizeNumber((_j = config === null || config === void 0 ? void 0 : config.retry) === null || _j === void 0 ? void 0 : _j.time, defaultConfig.retry.time),
124
+ limit: normalizeNumber((_k = config === null || config === void 0 ? void 0 : config.retry) === null || _k === void 0 ? void 0 : _k.limit, defaultConfig.retry.limit, false),
125
+ consecutiveOnly: (_m = (_l = config === null || config === void 0 ? void 0 : config.retry) === null || _l === void 0 ? void 0 : _l.consecutiveOnly) !== null && _m !== void 0 ? _m : defaultConfig.retry.consecutiveOnly,
126
126
  },
127
- pauseWhenHidden: (_o = config === null || config === void 0 ? void 0 : config.pauseWhenHidden) !== null && _o !== void 0 ? _o : controlConfig.pauseWhenHidden,
127
+ pauseWhenHidden: (_o = config === null || config === void 0 ? void 0 : config.pauseWhenHidden) !== null && _o !== void 0 ? _o : defaultConfig.pauseWhenHidden,
128
128
  };
129
129
  }
130
130
 
131
- function createState(partial) {
132
- return Object.assign({ value: undefined, error: undefined, pollCount: 0, retryCount: 0, consecutiveRetryCount: 0 }, partial);
131
+ const defaultState = {
132
+ value: undefined,
133
+ error: undefined,
134
+ pollCount: 0,
135
+ retryCount: 0,
136
+ consecutiveRetryCount: 0,
137
+ };
138
+
139
+ function createPollService(extendedConfig) {
140
+ const state = Object.assign({}, defaultState);
141
+ return {
142
+ get config() {
143
+ return extendedConfig;
144
+ },
145
+ get state() {
146
+ return state;
147
+ },
148
+ setValue: (value) => {
149
+ state.value = value;
150
+ },
151
+ setError: (error) => {
152
+ state.error = error;
153
+ },
154
+ resetError: () => {
155
+ state.error = undefined;
156
+ state.consecutiveRetryCount = 0;
157
+ },
158
+ incrementPoll: () => {
159
+ state.pollCount += 1;
160
+ },
161
+ incrementRetry: () => {
162
+ state.retryCount += 1;
163
+ state.consecutiveRetryCount += 1;
164
+ },
165
+ isRetryLimit: () => {
166
+ const retryKey = extendedConfig.retry.consecutiveOnly ? 'consecutiveRetryCount' : 'retryCount';
167
+ return state[retryKey] > extendedConfig.retry.limit;
168
+ },
169
+ getDelayTime: () => {
170
+ return extendedConfig.getDelayTime(state);
171
+ },
172
+ getRetryTime: () => {
173
+ return extendedConfig.getRetryTime(state);
174
+ },
175
+ };
176
+ }
177
+
178
+ function retryPoll(pollService, getRetryTime) {
179
+ return (source) => source.pipe(rxjs.retry({
180
+ delay: (error) => {
181
+ pollService.incrementRetry();
182
+ if (pollService.isRetryLimit()) {
183
+ return rxjs.throwError(() => error);
184
+ }
185
+ pollService.setError(error);
186
+ return rxjs.timer(getRetryTime ? getRetryTime() : pollService.getRetryTime());
187
+ },
188
+ }), rxjs.tap(() => pollService.resetError()));
133
189
  }
134
190
 
135
191
  function withDocumentVisibility$(poller$, pauser$) {
136
192
  const visibility$ = getDocumentVisibility$();
137
- const pause$ = visibility$.pipe(rxjs.switchMap((isVisible) => (isVisible ? rxjs.EMPTY : pauser$)));
193
+ const pause$ = visibility$.pipe(rxjs.switchMap((isVisible) => (isVisible ? rxjs.NEVER : pauser$)));
138
194
  let emissionStarted = true;
139
195
  return visibility$.pipe(rxjs.filter((isVisible) => isVisible || emissionStarted), rxjs.exhaustMap(() => poller$.pipe(rxjs.takeUntil(pause$))), rxjs.tap(() => (emissionStarted = false)));
140
196
  }
@@ -147,89 +203,89 @@ function getDocumentVisibility$() {
147
203
  return documentVisibility$;
148
204
  }
149
205
 
206
+ const timingToleranceMs = 100;
207
+
208
+ function getPauseDelay$(options) {
209
+ const { time, sourceStartTime = 0, sourceEndTime = 0 } = options;
210
+ const delayMs = time - (sourceEndTime - sourceStartTime) - timingToleranceMs;
211
+ return delayMs > 0 ? rxjs.timer(delayMs).pipe(rxjs.map(() => null)) : rxjs.of(null);
212
+ }
213
+
150
214
  function repeatWith$(source$, getTime) {
151
215
  return source$.pipe(rxjs.repeat({
152
216
  delay: () => rxjs.timer(getTime()),
153
217
  }));
154
218
  }
155
219
 
156
- function buildIntervalPoller$(source$, { nextDelayTime, pauseWhenHidden }) {
157
- if (!isBrowser() || !pauseWhenHidden) {
158
- return repeatWith$(rxjs.of(null), () => nextDelayTime()).pipe(rxjs.switchMap(() => source$));
159
- }
160
- let currentDelay = 0;
161
- const trigger$ = repeatWith$(rxjs.of(null), () => {
162
- currentDelay = nextDelayTime();
163
- return currentDelay;
164
- });
165
- const pauser$ = rxjs.defer(() => rxjs.timer(currentDelay));
166
- return withDocumentVisibility$(trigger$, pauser$).pipe(rxjs.switchMap(() => source$));
167
- }
168
-
169
- function buildRepeatPoller$(source$, { nextDelayTime, pauseWhenHidden }) {
170
- if (!isBrowser() || !pauseWhenHidden) {
171
- return repeatWith$(source$, () => nextDelayTime());
220
+ function buildIntervalPoller$(source$, pollService) {
221
+ if (!isBrowser() || !pollService.config.pauseWhenHidden) {
222
+ return repeatWith$(rxjs.of(null), () => {
223
+ pollService.incrementPoll();
224
+ return pollService.getDelayTime();
225
+ }).pipe(rxjs.switchMap(() => source$), retryPoll(pollService));
172
226
  }
173
227
  const pauseTrigger$ = new rxjs.Subject();
174
- let currentDelay = 0;
175
- const poller$ = repeatWith$(source$.pipe(rxjs.finalize(() => pauseTrigger$.next())), () => {
176
- currentDelay = nextDelayTime();
177
- return currentDelay;
178
- });
179
- const pauser$ = pauseTrigger$.pipe(rxjs.auditTime(currentDelay));
228
+ let time = 0;
229
+ let sourceStartTime = 0;
230
+ let sourceEndTime = 0;
231
+ const poller$ = repeatWith$(rxjs.of(null), () => {
232
+ pollService.incrementPoll();
233
+ time = pollService.getDelayTime();
234
+ return time;
235
+ }).pipe(rxjs.switchMap(() => source$.pipe(rxjs.tap({
236
+ subscribe: () => {
237
+ sourceStartTime = performance.now();
238
+ },
239
+ finalize: () => {
240
+ sourceEndTime = performance.now();
241
+ pauseTrigger$.next();
242
+ },
243
+ }))), retryPoll(pollService, () => {
244
+ time = pollService.getRetryTime();
245
+ return time;
246
+ }));
247
+ const pauser$ = pauseTrigger$.pipe(rxjs.switchMap(() => getPauseDelay$({
248
+ time,
249
+ sourceStartTime,
250
+ sourceEndTime,
251
+ })));
180
252
  return withDocumentVisibility$(poller$, pauser$);
181
253
  }
182
254
 
183
- function retryPoll(getTime, isLimit, resetError) {
184
- return (source) => source.pipe(rxjs.retry({
185
- delay: (error) => (isLimit() ? rxjs.throwError(() => error) : rxjs.timer(getTime(error))),
186
- }), rxjs.tap(() => resetError()));
255
+ function buildRepeatPoller$(source$, pollService) {
256
+ if (!isBrowser() || !pollService.config.pauseWhenHidden) {
257
+ return repeatWith$(source$, () => {
258
+ pollService.incrementPoll();
259
+ return pollService.getDelayTime();
260
+ }).pipe(retryPoll(pollService));
261
+ }
262
+ const pauseTrigger$ = new rxjs.Subject();
263
+ let time = 0;
264
+ const poller$ = repeatWith$(source$.pipe(rxjs.finalize(() => pauseTrigger$.next())), () => {
265
+ pollService.incrementPoll();
266
+ time = pollService.getDelayTime();
267
+ return time;
268
+ }).pipe(retryPoll(pollService, () => {
269
+ time = pollService.getRetryTime();
270
+ return time;
271
+ }));
272
+ const pauser$ = pauseTrigger$.pipe(rxjs.switchMap(() => getPauseDelay$({ time })));
273
+ return withDocumentVisibility$(poller$, pauser$);
187
274
  }
188
275
 
189
- function getPollerFactory(source$, { getDelayTime, getRetryTime, pauseWhenHidden, retry, type }) {
190
- const retryKey = retry.consecutiveOnly ? 'consecutiveRetryCount' : 'retryCount';
191
- let lastValue;
192
- const completed$ = source$.pipe(rxjs.takeLast(1), rxjs.tap((value) => {
193
- lastValue = value;
194
- }));
195
- return function createPoller(state) {
196
- const nextDelayTime = (value) => {
197
- state.pollCount += 1;
198
- state.value = value;
199
- return getDelayTime(state);
200
- };
201
- const nextRetryTime = (error) => {
202
- state.error = error;
203
- return getRetryTime(state);
204
- };
205
- const isRetryLimit = () => {
206
- state.retryCount += 1;
207
- state.consecutiveRetryCount += 1;
208
- return state[retryKey] > retry.limit;
209
- };
210
- const resetError = () => {
211
- state.error = undefined;
212
- state.consecutiveRetryCount = 0;
213
- };
214
- const poller$ = type === 'repeat'
215
- ? buildRepeatPoller$(completed$, {
216
- nextDelayTime: () => nextDelayTime(lastValue),
217
- pauseWhenHidden,
218
- })
219
- : buildIntervalPoller$(completed$, {
220
- nextDelayTime: () => nextDelayTime(lastValue),
221
- pauseWhenHidden,
222
- });
223
- return poller$.pipe(retryPoll(nextRetryTime, isRetryLimit, resetError));
224
- };
276
+ function createPoller$(source$, pollService) {
277
+ const completed$ = source$.pipe(rxjs.takeLast(1), rxjs.tap((value) => pollService.setValue(value)));
278
+ const poller$ = pollService.config.type === pollType.REPEAT
279
+ ? buildRepeatPoller$(completed$, pollService)
280
+ : buildIntervalPoller$(completed$, pollService);
281
+ return poller$;
225
282
  }
226
283
 
227
284
  function poll(config) {
228
285
  return (source$) => {
229
286
  const extendedConfig = extendConfig(config);
230
- const state = createState();
231
- const createPoller = getPollerFactory(source$, extendedConfig);
232
- const poller$ = createPoller(state);
287
+ const pollService = createPollService(extendedConfig);
288
+ const poller$ = createPoller$(source$, pollService);
233
289
  return poller$;
234
290
  };
235
291
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/constants/poll.const.ts","../../src/constants/strategies.const.ts","../../src/constants/config.const.ts","../../src/common/utils.ts","../../src/common/strategies.ts","../../src/common/config.ts","../../src/common/state.ts","../../src/observables/document-visibility.ts","../../src/observables/repeat-with.ts","../../src/observables/interval-poller.ts","../../src/observables/repeat-poller.ts","../../src/observables/retry-operator.ts","../../src/observables/poller-factory.ts","../../src/poll.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["switchMap","EMPTY","filter","exhaustMap","takeUntil","tap","fromEvent","startWith","map","shareReplay","repeat","timer","of","defer","Subject","finalize","auditTime","retry","throwError","takeLast"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/constants/poll.const.ts","../../src/constants/strategies.const.ts","../../src/constants/config.const.ts","../../src/common/utils.ts","../../src/common/strategies.ts","../../src/common/config.ts","../../src/constants/state.const.ts","../../src/common/service.ts","../../src/operators/retry-pol.operator.ts","../../src/observables/document-visibility.ts","../../src/constants/timing.const.ts","../../src/observables/pause-delay.ts","../../src/observables/repeat-with.ts","../../src/observables/interval-poller.ts","../../src/observables/repeat-poller.ts","../../src/observables/factory.ts","../../src/poll.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["retry","throwError","timer","tap","switchMap","NEVER","filter","exhaustMap","takeUntil","fromEvent","startWith","map","shareReplay","of","repeat","Subject","finalize","takeLast"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { switchMap, EMPTY, filter, exhaustMap, takeUntil, tap, fromEvent, startWith, map, shareReplay, repeat, timer, of, defer, Subject, finalize, auditTime, retry, throwError, takeLast } from 'rxjs';
1
+ import { retry, throwError, timer, tap, switchMap, NEVER, filter, exhaustMap, takeUntil, fromEvent, startWith, map, shareReplay, of, repeat, Subject, finalize, takeLast } from 'rxjs';
2
2
 
3
3
  const pollType = {
4
4
  REPEAT: 'repeat',
@@ -13,7 +13,7 @@ const strategyType = {
13
13
  DYNAMIC: 'dynamic',
14
14
  };
15
15
 
16
- const controlConfig = {
16
+ const defaultConfig = {
17
17
  type: pollType.REPEAT,
18
18
  delay: {
19
19
  strategy: strategyType.CONSTANT,
@@ -96,7 +96,7 @@ function extendConfig(config) {
96
96
  return Object.assign(Object.assign({}, normalizedConfig), { getDelayTime: getTimeProducer('delay', normalizedConfig), getRetryTime: getTimeProducer('retry', normalizedConfig) });
97
97
  }
98
98
  function getTimeProducer(mode, config) {
99
- const defaultTime = controlConfig[mode].time;
99
+ const defaultTime = defaultConfig[mode].time;
100
100
  const timeProducer = getStrategyTimeProducer(mode, config);
101
101
  return (state) => {
102
102
  const producedTime = timeProducer(Object.assign({}, state));
@@ -107,32 +107,88 @@ function getTimeProducer(mode, config) {
107
107
  function normalizeConfig(config) {
108
108
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
109
109
  return {
110
- type: (_a = config === null || config === void 0 ? void 0 : config.type) !== null && _a !== void 0 ? _a : controlConfig.type,
110
+ type: (_a = config === null || config === void 0 ? void 0 : config.type) !== null && _a !== void 0 ? _a : defaultConfig.type,
111
111
  delay: {
112
- strategy: (_c = (_b = config === null || config === void 0 ? void 0 : config.delay) === null || _b === void 0 ? void 0 : _b.strategy) !== null && _c !== void 0 ? _c : controlConfig.delay.strategy,
112
+ strategy: (_c = (_b = config === null || config === void 0 ? void 0 : config.delay) === null || _b === void 0 ? void 0 : _b.strategy) !== null && _c !== void 0 ? _c : defaultConfig.delay.strategy,
113
113
  time: isFunction((_d = config === null || config === void 0 ? void 0 : config.delay) === null || _d === void 0 ? void 0 : _d.time)
114
114
  ? config.delay.time
115
- : normalizeNumber((_e = config === null || config === void 0 ? void 0 : config.delay) === null || _e === void 0 ? void 0 : _e.time, controlConfig.delay.time),
115
+ : normalizeNumber((_e = config === null || config === void 0 ? void 0 : config.delay) === null || _e === void 0 ? void 0 : _e.time, defaultConfig.delay.time),
116
116
  },
117
117
  retry: {
118
- strategy: (_g = (_f = config === null || config === void 0 ? void 0 : config.retry) === null || _f === void 0 ? void 0 : _f.strategy) !== null && _g !== void 0 ? _g : controlConfig.retry.strategy,
118
+ strategy: (_g = (_f = config === null || config === void 0 ? void 0 : config.retry) === null || _f === void 0 ? void 0 : _f.strategy) !== null && _g !== void 0 ? _g : defaultConfig.retry.strategy,
119
119
  time: isFunction((_h = config === null || config === void 0 ? void 0 : config.retry) === null || _h === void 0 ? void 0 : _h.time)
120
120
  ? config.retry.time
121
- : normalizeNumber((_j = config === null || config === void 0 ? void 0 : config.retry) === null || _j === void 0 ? void 0 : _j.time, controlConfig.retry.time),
122
- limit: normalizeNumber((_k = config === null || config === void 0 ? void 0 : config.retry) === null || _k === void 0 ? void 0 : _k.limit, controlConfig.retry.limit, false),
123
- consecutiveOnly: (_m = (_l = config === null || config === void 0 ? void 0 : config.retry) === null || _l === void 0 ? void 0 : _l.consecutiveOnly) !== null && _m !== void 0 ? _m : controlConfig.retry.consecutiveOnly,
121
+ : normalizeNumber((_j = config === null || config === void 0 ? void 0 : config.retry) === null || _j === void 0 ? void 0 : _j.time, defaultConfig.retry.time),
122
+ limit: normalizeNumber((_k = config === null || config === void 0 ? void 0 : config.retry) === null || _k === void 0 ? void 0 : _k.limit, defaultConfig.retry.limit, false),
123
+ consecutiveOnly: (_m = (_l = config === null || config === void 0 ? void 0 : config.retry) === null || _l === void 0 ? void 0 : _l.consecutiveOnly) !== null && _m !== void 0 ? _m : defaultConfig.retry.consecutiveOnly,
124
124
  },
125
- pauseWhenHidden: (_o = config === null || config === void 0 ? void 0 : config.pauseWhenHidden) !== null && _o !== void 0 ? _o : controlConfig.pauseWhenHidden,
125
+ pauseWhenHidden: (_o = config === null || config === void 0 ? void 0 : config.pauseWhenHidden) !== null && _o !== void 0 ? _o : defaultConfig.pauseWhenHidden,
126
126
  };
127
127
  }
128
128
 
129
- function createState(partial) {
130
- return Object.assign({ value: undefined, error: undefined, pollCount: 0, retryCount: 0, consecutiveRetryCount: 0 }, partial);
129
+ const defaultState = {
130
+ value: undefined,
131
+ error: undefined,
132
+ pollCount: 0,
133
+ retryCount: 0,
134
+ consecutiveRetryCount: 0,
135
+ };
136
+
137
+ function createPollService(extendedConfig) {
138
+ const state = Object.assign({}, defaultState);
139
+ return {
140
+ get config() {
141
+ return extendedConfig;
142
+ },
143
+ get state() {
144
+ return state;
145
+ },
146
+ setValue: (value) => {
147
+ state.value = value;
148
+ },
149
+ setError: (error) => {
150
+ state.error = error;
151
+ },
152
+ resetError: () => {
153
+ state.error = undefined;
154
+ state.consecutiveRetryCount = 0;
155
+ },
156
+ incrementPoll: () => {
157
+ state.pollCount += 1;
158
+ },
159
+ incrementRetry: () => {
160
+ state.retryCount += 1;
161
+ state.consecutiveRetryCount += 1;
162
+ },
163
+ isRetryLimit: () => {
164
+ const retryKey = extendedConfig.retry.consecutiveOnly ? 'consecutiveRetryCount' : 'retryCount';
165
+ return state[retryKey] > extendedConfig.retry.limit;
166
+ },
167
+ getDelayTime: () => {
168
+ return extendedConfig.getDelayTime(state);
169
+ },
170
+ getRetryTime: () => {
171
+ return extendedConfig.getRetryTime(state);
172
+ },
173
+ };
174
+ }
175
+
176
+ function retryPoll(pollService, getRetryTime) {
177
+ return (source) => source.pipe(retry({
178
+ delay: (error) => {
179
+ pollService.incrementRetry();
180
+ if (pollService.isRetryLimit()) {
181
+ return throwError(() => error);
182
+ }
183
+ pollService.setError(error);
184
+ return timer(getRetryTime ? getRetryTime() : pollService.getRetryTime());
185
+ },
186
+ }), tap(() => pollService.resetError()));
131
187
  }
132
188
 
133
189
  function withDocumentVisibility$(poller$, pauser$) {
134
190
  const visibility$ = getDocumentVisibility$();
135
- const pause$ = visibility$.pipe(switchMap((isVisible) => (isVisible ? EMPTY : pauser$)));
191
+ const pause$ = visibility$.pipe(switchMap((isVisible) => (isVisible ? NEVER : pauser$)));
136
192
  let emissionStarted = true;
137
193
  return visibility$.pipe(filter((isVisible) => isVisible || emissionStarted), exhaustMap(() => poller$.pipe(takeUntil(pause$))), tap(() => (emissionStarted = false)));
138
194
  }
@@ -145,89 +201,89 @@ function getDocumentVisibility$() {
145
201
  return documentVisibility$;
146
202
  }
147
203
 
204
+ const timingToleranceMs = 100;
205
+
206
+ function getPauseDelay$(options) {
207
+ const { time, sourceStartTime = 0, sourceEndTime = 0 } = options;
208
+ const delayMs = time - (sourceEndTime - sourceStartTime) - timingToleranceMs;
209
+ return delayMs > 0 ? timer(delayMs).pipe(map(() => null)) : of(null);
210
+ }
211
+
148
212
  function repeatWith$(source$, getTime) {
149
213
  return source$.pipe(repeat({
150
214
  delay: () => timer(getTime()),
151
215
  }));
152
216
  }
153
217
 
154
- function buildIntervalPoller$(source$, { nextDelayTime, pauseWhenHidden }) {
155
- if (!isBrowser() || !pauseWhenHidden) {
156
- return repeatWith$(of(null), () => nextDelayTime()).pipe(switchMap(() => source$));
157
- }
158
- let currentDelay = 0;
159
- const trigger$ = repeatWith$(of(null), () => {
160
- currentDelay = nextDelayTime();
161
- return currentDelay;
162
- });
163
- const pauser$ = defer(() => timer(currentDelay));
164
- return withDocumentVisibility$(trigger$, pauser$).pipe(switchMap(() => source$));
165
- }
166
-
167
- function buildRepeatPoller$(source$, { nextDelayTime, pauseWhenHidden }) {
168
- if (!isBrowser() || !pauseWhenHidden) {
169
- return repeatWith$(source$, () => nextDelayTime());
218
+ function buildIntervalPoller$(source$, pollService) {
219
+ if (!isBrowser() || !pollService.config.pauseWhenHidden) {
220
+ return repeatWith$(of(null), () => {
221
+ pollService.incrementPoll();
222
+ return pollService.getDelayTime();
223
+ }).pipe(switchMap(() => source$), retryPoll(pollService));
170
224
  }
171
225
  const pauseTrigger$ = new Subject();
172
- let currentDelay = 0;
173
- const poller$ = repeatWith$(source$.pipe(finalize(() => pauseTrigger$.next())), () => {
174
- currentDelay = nextDelayTime();
175
- return currentDelay;
176
- });
177
- const pauser$ = pauseTrigger$.pipe(auditTime(currentDelay));
226
+ let time = 0;
227
+ let sourceStartTime = 0;
228
+ let sourceEndTime = 0;
229
+ const poller$ = repeatWith$(of(null), () => {
230
+ pollService.incrementPoll();
231
+ time = pollService.getDelayTime();
232
+ return time;
233
+ }).pipe(switchMap(() => source$.pipe(tap({
234
+ subscribe: () => {
235
+ sourceStartTime = performance.now();
236
+ },
237
+ finalize: () => {
238
+ sourceEndTime = performance.now();
239
+ pauseTrigger$.next();
240
+ },
241
+ }))), retryPoll(pollService, () => {
242
+ time = pollService.getRetryTime();
243
+ return time;
244
+ }));
245
+ const pauser$ = pauseTrigger$.pipe(switchMap(() => getPauseDelay$({
246
+ time,
247
+ sourceStartTime,
248
+ sourceEndTime,
249
+ })));
178
250
  return withDocumentVisibility$(poller$, pauser$);
179
251
  }
180
252
 
181
- function retryPoll(getTime, isLimit, resetError) {
182
- return (source) => source.pipe(retry({
183
- delay: (error) => (isLimit() ? throwError(() => error) : timer(getTime(error))),
184
- }), tap(() => resetError()));
253
+ function buildRepeatPoller$(source$, pollService) {
254
+ if (!isBrowser() || !pollService.config.pauseWhenHidden) {
255
+ return repeatWith$(source$, () => {
256
+ pollService.incrementPoll();
257
+ return pollService.getDelayTime();
258
+ }).pipe(retryPoll(pollService));
259
+ }
260
+ const pauseTrigger$ = new Subject();
261
+ let time = 0;
262
+ const poller$ = repeatWith$(source$.pipe(finalize(() => pauseTrigger$.next())), () => {
263
+ pollService.incrementPoll();
264
+ time = pollService.getDelayTime();
265
+ return time;
266
+ }).pipe(retryPoll(pollService, () => {
267
+ time = pollService.getRetryTime();
268
+ return time;
269
+ }));
270
+ const pauser$ = pauseTrigger$.pipe(switchMap(() => getPauseDelay$({ time })));
271
+ return withDocumentVisibility$(poller$, pauser$);
185
272
  }
186
273
 
187
- function getPollerFactory(source$, { getDelayTime, getRetryTime, pauseWhenHidden, retry, type }) {
188
- const retryKey = retry.consecutiveOnly ? 'consecutiveRetryCount' : 'retryCount';
189
- let lastValue;
190
- const completed$ = source$.pipe(takeLast(1), tap((value) => {
191
- lastValue = value;
192
- }));
193
- return function createPoller(state) {
194
- const nextDelayTime = (value) => {
195
- state.pollCount += 1;
196
- state.value = value;
197
- return getDelayTime(state);
198
- };
199
- const nextRetryTime = (error) => {
200
- state.error = error;
201
- return getRetryTime(state);
202
- };
203
- const isRetryLimit = () => {
204
- state.retryCount += 1;
205
- state.consecutiveRetryCount += 1;
206
- return state[retryKey] > retry.limit;
207
- };
208
- const resetError = () => {
209
- state.error = undefined;
210
- state.consecutiveRetryCount = 0;
211
- };
212
- const poller$ = type === 'repeat'
213
- ? buildRepeatPoller$(completed$, {
214
- nextDelayTime: () => nextDelayTime(lastValue),
215
- pauseWhenHidden,
216
- })
217
- : buildIntervalPoller$(completed$, {
218
- nextDelayTime: () => nextDelayTime(lastValue),
219
- pauseWhenHidden,
220
- });
221
- return poller$.pipe(retryPoll(nextRetryTime, isRetryLimit, resetError));
222
- };
274
+ function createPoller$(source$, pollService) {
275
+ const completed$ = source$.pipe(takeLast(1), tap((value) => pollService.setValue(value)));
276
+ const poller$ = pollService.config.type === pollType.REPEAT
277
+ ? buildRepeatPoller$(completed$, pollService)
278
+ : buildIntervalPoller$(completed$, pollService);
279
+ return poller$;
223
280
  }
224
281
 
225
282
  function poll(config) {
226
283
  return (source$) => {
227
284
  const extendedConfig = extendConfig(config);
228
- const state = createState();
229
- const createPoller = getPollerFactory(source$, extendedConfig);
230
- const poller$ = createPoller(state);
285
+ const pollService = createPollService(extendedConfig);
286
+ const poller$ = createPoller$(source$, pollService);
231
287
  return poller$;
232
288
  };
233
289
  }