rxjs-poll 1.0.4 → 1.1.0
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.
- package/README.md +8 -6
- package/dist/cjs/common/config.js.map +1 -1
- package/dist/cjs/common/observables.js +6 -3
- package/dist/cjs/common/observables.js.map +1 -1
- package/dist/cjs/poll.js +3 -1
- package/dist/cjs/poll.js.map +1 -1
- package/dist/esm/common/config.js.map +1 -1
- package/dist/esm/common/observables.js +7 -4
- package/dist/esm/common/observables.js.map +1 -1
- package/dist/esm/poll.js +3 -1
- package/dist/esm/poll.js.map +1 -1
- package/dist/types/common/config.d.ts +12 -11
- package/dist/types/common/config.d.ts.map +1 -1
- package/dist/types/common/observables.d.ts +1 -1
- package/dist/types/common/observables.d.ts.map +1 -1
- package/dist/types/poll.d.ts +1 -1
- package/dist/types/poll.d.ts.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<a href="https://www.npmjs.com/package/rxjs-poll" target="_blank" rel="noopener noreferrer nofollow"><img alt="NPM Version" src="https://img.shields.io/npm/v/rxjs-poll"></a>
|
|
4
4
|
<a href="https://bundlephobia.com/package/rxjs-poll@latest" target="_blank" rel="noopener noreferrer nofollow"><img alt="NPM Bundle Size" src="https://img.shields.io/bundlephobia/minzip/rxjs-poll?label=gzip"></a>
|
|
5
|
+
<a href="https://github.com/mmustra/rxjs-poll/tree/main/tests" target="_blank" rel="noopener noreferrer nofollow"><img alt="Codecov" src="https://img.shields.io/codecov/c/gh/mmustra/rxjs-poll?token=H9R97BLFQI"></a>
|
|
5
6
|
<a href="https://github.com/mmustra/rxjs-poll/issues" target="_blank" rel="noopener noreferrer nofollow"><img alt="GitHub Issues or Pull Requests" src="https://img.shields.io/github/issues/mmustra/rxjs-poll"></a>
|
|
6
7
|
|
|
7
8
|
Library provides RxJS operator that can do polling on any completed source.
|
|
@@ -10,7 +11,7 @@ Library provides RxJS operator that can do polling on any completed source.
|
|
|
10
11
|
|
|
11
12
|
- Two types of polling; `repeat` and `interval`
|
|
12
13
|
- Delay/retry can be a **static**, **random** or **dynamic** number
|
|
13
|
-
- Any **backoff strategy** you can think of
|
|
14
|
+
- Any **delay/backoff strategy** you can think of
|
|
14
15
|
- Background mode (browser only) to **pause/resume polling** on page visibility
|
|
15
16
|
- Consecutive rule for **different retry attempts** approach
|
|
16
17
|
- Config **input guard** for unexpected values
|
|
@@ -84,7 +85,7 @@ request$
|
|
|
84
85
|
|
|
85
86
|
### Advance
|
|
86
87
|
|
|
87
|
-
Use delay function when you need
|
|
88
|
+
Use delay function when you need unique delay or backoff strategies for polling/retrying.
|
|
88
89
|
|
|
89
90
|
[Demo](https://stackblitz.com/edit/rxjs-awthuj?devtoolsheight=100&file=index.ts)
|
|
90
91
|
|
|
@@ -96,7 +97,7 @@ request$
|
|
|
96
97
|
.pipe(
|
|
97
98
|
poll({
|
|
98
99
|
retries: 6,
|
|
99
|
-
delay: ({ polls, consecutiveRetries, error }) => {
|
|
100
|
+
delay: ({ polls, consecutiveRetries, value, error }) => {
|
|
100
101
|
const delay = 1000;
|
|
101
102
|
|
|
102
103
|
if (error) {
|
|
@@ -105,8 +106,8 @@ request$
|
|
|
105
106
|
return Math.pow(2, consecutiveRetries - 1) * delay;
|
|
106
107
|
}
|
|
107
108
|
|
|
108
|
-
// Faster polls
|
|
109
|
-
return
|
|
109
|
+
// Faster polls for shorther facts
|
|
110
|
+
return value.length < 100 ? delay * 0.3 : delay;
|
|
110
111
|
},
|
|
111
112
|
}),
|
|
112
113
|
takeWhile(({ length }) => length < 200, true)
|
|
@@ -195,10 +196,11 @@ const config: PollConfig = {
|
|
|
195
196
|
Provided as argument of delay function. Use it to set delay for polls and retries.
|
|
196
197
|
|
|
197
198
|
```typescript
|
|
198
|
-
interface PollState {
|
|
199
|
+
interface PollState<T> {
|
|
199
200
|
polls: number; // current count of successful polls
|
|
200
201
|
retries: number; // current count of retries
|
|
201
202
|
consecutiveRetries: number; // current count of consecutive retries
|
|
203
|
+
value: T; // value emitted from the source
|
|
202
204
|
error: any | null; // "any" when retrying and "null" when polling
|
|
203
205
|
}
|
|
204
206
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":";;;AAAA,iCAA8F;AAE9F,SAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":";;;AAAA,iCAA8F;AAE9F,SAAgB,eAAe,CAAI,MAA4B;;IAC7D,OAAO;QACL,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,qBAAa,CAAC,IAAI;QACxC,QAAQ,EAAE,IAAA,kBAAU,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC;QAClG,OAAO,EAAE,IAAA,uBAAe,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,qBAAa,CAAC,OAAO,EAAE,KAAK,CAAC;QACvE,iBAAiB,EAAE,IAAA,aAAK,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB;QACrF,gBAAgB,EAAE,OAAO,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,CAAC;KACpD,CAAC;AACJ,CAAC;AARD,0CAQC;AAED,SAAS,aAAa,CAAI,SAA2B;IACnD,OAAO,UAAC,KAAK;QACX,IAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,IAAM,eAAe,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,qBAAa,CAAC,KAAK,CAAC,CAAC;QAEpE,OAAO,IAAA,oBAAY,EAAC,eAAe,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAI,KAAkC;IAC5D,IAAM,eAAe,GAAG,IAAA,uBAAe,EAAC,KAAK,EAAE,qBAAa,CAAC,KAAK,CAAC,CAAC;IAEpE,OAAO,cAAc,OAAA,IAAA,oBAAY,EAAC,eAAe,CAAC,EAA7B,CAA6B,CAAC;AACrD,CAAC;AAEY,QAAA,aAAa,GAA2B;IACnD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,KAAK;CACxB,CAAC"}
|
|
@@ -5,12 +5,15 @@ var rxjs_1 = require("rxjs");
|
|
|
5
5
|
var utils_1 = require("./utils");
|
|
6
6
|
exports.visibilityState$ = pageVisibility$().pipe((0, rxjs_1.shareReplay)({ bufferSize: 1, refCount: true }));
|
|
7
7
|
function getPoller$(type, source$, getDelay) {
|
|
8
|
-
var
|
|
8
|
+
var lastValue;
|
|
9
|
+
var completed$ = source$.pipe((0, rxjs_1.takeLast)(1), (0, rxjs_1.tap)(function (value) {
|
|
10
|
+
lastValue = value;
|
|
11
|
+
}));
|
|
9
12
|
return type === 'repeat'
|
|
10
13
|
? completed$.pipe((0, rxjs_1.repeat)({
|
|
11
|
-
delay: function () { return (0, rxjs_1.timer)(getDelay()); },
|
|
14
|
+
delay: function () { return (0, rxjs_1.timer)(getDelay(lastValue)); },
|
|
12
15
|
}))
|
|
13
|
-
: dynamicInterval$(getDelay).pipe((0, rxjs_1.switchMap)(function () { return completed$; }));
|
|
16
|
+
: dynamicInterval$(function () { return getDelay(lastValue); }).pipe((0, rxjs_1.switchMap)(function () { return completed$; }));
|
|
14
17
|
}
|
|
15
18
|
exports.getPoller$ = getPoller$;
|
|
16
19
|
function pageVisibility$() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observables.js","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"observables.js","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":";;;AAAA,6BAAuH;AAGvH,iCAAuD;AAE1C,QAAA,gBAAgB,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,IAAA,kBAAW,EAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEvG,SAAgB,UAAU,CAAI,IAAc,EAAE,OAAsB,EAAE,QAA8B;IAClG,IAAI,SAAY,CAAC;IACjB,IAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,IAAA,eAAQ,EAAC,CAAC,CAAC,EACX,IAAA,UAAG,EAAC,UAAC,KAAK;QACR,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,UAAU,CAAC,IAAI,CACb,IAAA,aAAM,EAAC;YACL,KAAK,EAAE,cAAM,OAAA,IAAA,YAAK,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAA1B,CAA0B;SACxC,CAAC,CACH;QACH,CAAC,CAAC,gBAAgB,CAAC,cAAM,OAAA,QAAQ,CAAC,SAAS,CAAC,EAAnB,CAAmB,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,cAAM,OAAA,UAAU,EAAV,CAAU,CAAC,CAAC,CAAC;AACpF,CAAC;AAhBD,gCAgBC;AAED,SAAS,eAAe;IACtB,OAAO,IAAA,iBAAS,GAAE,CAAC,CAAC,CAAC,IAAA,gBAAS,EAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,EAAE,IAAA,UAAG,EAAC,yBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAsB;IAC9C,OAAO,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,IAAI,CAClB,IAAA,aAAM,EAAC;QACL,KAAK,EAAE,cAAM,OAAA,IAAA,YAAK,EAAC,QAAQ,EAAE,CAAC,EAAjB,CAAiB;KAC/B,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/cjs/poll.js
CHANGED
|
@@ -12,10 +12,12 @@ function poll(config) {
|
|
|
12
12
|
polls: 0,
|
|
13
13
|
retries: 0,
|
|
14
14
|
consecutiveRetries: 0,
|
|
15
|
+
value: null,
|
|
15
16
|
error: null,
|
|
16
17
|
};
|
|
17
|
-
var nextPollDelay = function () {
|
|
18
|
+
var nextPollDelay = function (value) {
|
|
18
19
|
state.polls += 1;
|
|
20
|
+
state.value = value;
|
|
19
21
|
return getDelay(state);
|
|
20
22
|
};
|
|
21
23
|
var visibility$ = isBackgroundMode ? (0, rxjs_1.of)(true) : observables_1.visibilityState$;
|
package/dist/cjs/poll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/poll.ts"],"names":[],"mappings":";;;AAAA,6BAAqG;AAErG,0CAAmF;AACnF,oDAAoE;AA8BpE,SAAgB,IAAI,CAAI,
|
|
1
|
+
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/poll.ts"],"names":[],"mappings":";;;AAAA,6BAAqG;AAErG,0CAAmF;AACnF,oDAAoE;AA8BpE,SAAgB,IAAI,CAAI,MAA4B;IAClD,OAAO,UAAC,OAAO;QACP,IAAA,KAAmE,IAAA,wBAAe,EAAC,MAAM,CAAC,EAAxF,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,gBAAgB,sBAAA,EAAE,iBAAiB,uBAAA,EAAE,QAAQ,cAA4B,CAAC;QACjG,IAAM,QAAQ,GAAa,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,IAAM,KAAK,GAAiB;YAC1B,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,kBAAkB,EAAE,CAAC;YAErB,KAAK,EAAE,IAAW;YAClB,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,IAAM,aAAa,GAAG,UAAC,KAAQ;YAC7B,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YACjB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAEpB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,IAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,8BAAgB,CAAC;QACnE,IAAM,OAAO,GAAG,IAAA,wBAAU,EAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAEzD,OAAO,WAAW,CAAC,IAAI,CACrB,IAAA,gBAAS,EAAC,UAAC,SAAS;YAClB,OAAA,SAAS;gBACP,CAAC,CAAC,OAAO,CAAC,IAAI,CACV,IAAA,YAAK,EAAC;oBACJ,KAAK,YAAC,KAAK;wBAET,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;wBACpB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;wBACnB,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC;wBAG9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC,CAAC,CAAC,IAAA,YAAK,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtF,CAAC;iBACF,CAAC,EACF,IAAA,UAAG,EAAC;oBACF,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;oBACnB,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBAC/B,CAAC,CAAC,CACH;gBACH,CAAC,CAAC,YAAK;QAlBT,CAkBS,CACV,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA/CD,oBA+CC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAO,eAAe,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAE9F,MAAM,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAO,eAAe,EAAE,YAAY,EAAgB,MAAM,SAAS,CAAC;AAE9F,MAAM,UAAU,eAAe,CAAI,MAA4B;IAC7D,OAAO;QACL,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,aAAa,CAAC,IAAI;QACxC,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC;QAClG,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC;QACvE,iBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB;QACrF,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAI,SAA2B;IACnD,OAAO,CAAC,KAAK,EAAU,EAAE;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpE,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAI,KAAkC;IAC5D,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAEpE,OAAO,GAAW,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,KAAK;CACxB,CAAC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { fromEvent, map, of, repeat, shareReplay, startWith, switchMap, takeLast, timer } from 'rxjs';
|
|
1
|
+
import { fromEvent, map, of, repeat, shareReplay, startWith, switchMap, takeLast, tap, timer } from 'rxjs';
|
|
2
2
|
import { isBrowser, isDocumentVisible } from './utils';
|
|
3
3
|
export const visibilityState$ = pageVisibility$().pipe(shareReplay({ bufferSize: 1, refCount: true }));
|
|
4
4
|
export function getPoller$(type, source$, getDelay) {
|
|
5
|
-
|
|
5
|
+
let lastValue;
|
|
6
|
+
const completed$ = source$.pipe(takeLast(1), tap((value) => {
|
|
7
|
+
lastValue = value;
|
|
8
|
+
}));
|
|
6
9
|
return type === 'repeat'
|
|
7
10
|
? completed$.pipe(repeat({
|
|
8
|
-
delay: () => timer(getDelay()),
|
|
11
|
+
delay: () => timer(getDelay(lastValue)),
|
|
9
12
|
}))
|
|
10
|
-
: dynamicInterval$(getDelay).pipe(switchMap(() => completed$));
|
|
13
|
+
: dynamicInterval$(() => getDelay(lastValue)).pipe(switchMap(() => completed$));
|
|
11
14
|
}
|
|
12
15
|
function pageVisibility$() {
|
|
13
16
|
return isBrowser() ? fromEvent(document, 'visibilitychange').pipe(startWith(null), map(isDocumentVisible)) : of(true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observables.js","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"observables.js","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAGvH,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAEvG,MAAM,UAAU,UAAU,CAAI,IAAc,EAAE,OAAsB,EAAE,QAA8B;IAClG,IAAI,SAAY,CAAC;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,QAAQ,CAAC,CAAC,CAAC,EACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACZ,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,IAAI,KAAK,QAAQ;QACtB,CAAC,CAAC,UAAU,CAAC,IAAI,CACb,MAAM,CAAC;YACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SACxC,CAAC,CACH;QACH,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAsB;IAC9C,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAClB,MAAM,CAAC;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC/B,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/esm/poll.js
CHANGED
|
@@ -9,10 +9,12 @@ export function poll(config) {
|
|
|
9
9
|
polls: 0,
|
|
10
10
|
retries: 0,
|
|
11
11
|
consecutiveRetries: 0,
|
|
12
|
+
value: null,
|
|
12
13
|
error: null,
|
|
13
14
|
};
|
|
14
|
-
const nextPollDelay = () => {
|
|
15
|
+
const nextPollDelay = (value) => {
|
|
15
16
|
state.polls += 1;
|
|
17
|
+
state.value = value;
|
|
16
18
|
return getDelay(state);
|
|
17
19
|
};
|
|
18
20
|
const visibility$ = isBackgroundMode ? of(true) : visibilityState$;
|
package/dist/esm/poll.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA4B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAErG,OAAO,EAAE,eAAe,EAAmC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA8BpE,MAAM,UAAU,IAAI,CAAI,
|
|
1
|
+
{"version":3,"file":"poll.js","sourceRoot":"","sources":["../../src/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA4B,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAErG,OAAO,EAAE,eAAe,EAAmC,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA8BpE,MAAM,UAAU,IAAI,CAAI,MAA4B;IAClD,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACjG,MAAM,QAAQ,GAAa,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,KAAK,GAAiB;YAC1B,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,kBAAkB,EAAE,CAAC;YAErB,KAAK,EAAE,IAAW;YAClB,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,MAAM,aAAa,GAAG,CAAC,KAAQ,EAAU,EAAE;YACzC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YACjB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAEpB,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACnE,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAEzD,OAAO,WAAW,CAAC,IAAI,CACrB,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CACtB,SAAS;YACP,CAAC,CAAC,OAAO,CAAC,IAAI,CACV,KAAK,CAAC;gBACJ,KAAK,CAAC,KAAK;oBAET,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;oBACpB,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;oBACnB,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC;oBAG9B,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtF,CAAC;aACF,CAAC,EACF,GAAG,CAAC,GAAG,EAAE;gBACP,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAC/B,CAAC,CAAC,CACH;YACH,CAAC,CAAC,KAAK,CACV,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
import { Nil, UnsafeMinMax } from './utils';
|
|
2
|
-
export declare function normalizeConfig(config?: PollConfig | Nil): NormalizedPollConfig
|
|
3
|
-
export declare const controlConfig: ControlPollConfig
|
|
4
|
-
export type ControlPollConfig = {
|
|
2
|
+
export declare function normalizeConfig<T>(config?: PollConfig<T> | Nil): NormalizedPollConfig<T>;
|
|
3
|
+
export declare const controlConfig: ControlPollConfig<any>;
|
|
4
|
+
export type ControlPollConfig<T> = {
|
|
5
5
|
delay: number;
|
|
6
|
-
} & Omit<NormalizedPollConfig
|
|
7
|
-
export type NormalizedPollConfig = {
|
|
6
|
+
} & Omit<NormalizedPollConfig<T>, 'getDelay'>;
|
|
7
|
+
export type NormalizedPollConfig<T> = {
|
|
8
8
|
type: PollType;
|
|
9
|
-
getDelay: DelayProducer
|
|
9
|
+
getDelay: DelayProducer<T>;
|
|
10
10
|
retries: number;
|
|
11
11
|
isConsecutiveRule: boolean;
|
|
12
12
|
isBackgroundMode: boolean;
|
|
13
13
|
};
|
|
14
|
-
export type PollConfig = {
|
|
14
|
+
export type PollConfig<T> = {
|
|
15
15
|
type?: PollType | Nil;
|
|
16
|
-
delay?: number | UnsafeMinMax | PollDelayFunc | Nil;
|
|
16
|
+
delay?: number | UnsafeMinMax | PollDelayFunc<T> | Nil;
|
|
17
17
|
retries?: number | Nil;
|
|
18
18
|
isConsecutiveRule?: boolean | Nil;
|
|
19
19
|
isBackgroundMode?: boolean | Nil;
|
|
20
20
|
};
|
|
21
21
|
export type PollType = 'repeat' | 'interval';
|
|
22
|
-
export type PollDelayFunc = (state: PollState) => number | UnsafeMinMax | Nil;
|
|
23
|
-
type DelayProducer = (state: PollState) => number;
|
|
24
|
-
export type PollState = {
|
|
22
|
+
export type PollDelayFunc<T> = (state: PollState<T>) => number | UnsafeMinMax | Nil;
|
|
23
|
+
type DelayProducer<T> = (state: PollState<T>) => number;
|
|
24
|
+
export type PollState<T> = {
|
|
25
25
|
polls: number;
|
|
26
|
+
value: T;
|
|
26
27
|
error: any | null;
|
|
27
28
|
} & Record<RetryKey, number>;
|
|
28
29
|
export type RetryKey = 'retries' | 'consecutiveRetries';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,GAAG,EAAiC,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9F,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,GAAG,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/common/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,GAAG,EAAiC,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9F,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAQxF;AAiBD,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAMhD,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAE9C,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAAI;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC7C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,YAAY,GAAG,GAAG,CAAC;AACpF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;AAExD,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;CACnB,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE7B,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,oBAAoB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
2
|
import { PollType } from './config';
|
|
3
3
|
export declare const visibilityState$: Observable<boolean>;
|
|
4
|
-
export declare function getPoller$<T>(type: PollType, source$: Observable<T>, getDelay: () => number): Observable<T>;
|
|
4
|
+
export declare function getPoller$<T>(type: PollType, source$: Observable<T>, getDelay: (value: T) => number): Observable<T>;
|
|
5
5
|
//# sourceMappingURL=observables.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observables.d.ts","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,
|
|
1
|
+
{"version":3,"file":"observables.d.ts","sourceRoot":"","sources":["../../../src/common/observables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAuE,MAAM,MAAM,CAAC;AAEvH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,gBAAgB,qBAAyE,CAAC;AAEvG,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAgBnH"}
|
package/dist/types/poll.d.ts
CHANGED
|
@@ -28,5 +28,5 @@ import { Nil } from './common/utils';
|
|
|
28
28
|
* @return A function that returns an Observable that will resubscribe to the source on \
|
|
29
29
|
* complete or error
|
|
30
30
|
*/
|
|
31
|
-
export declare function poll<T>(config?: PollConfig | Nil): MonoTypeOperatorFunction<T>;
|
|
31
|
+
export declare function poll<T>(config?: PollConfig<T> | Nil): MonoTypeOperatorFunction<T>;
|
|
32
32
|
//# sourceMappingURL=poll.d.ts.map
|
package/dist/types/poll.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../../src/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,wBAAwB,EAAgD,MAAM,MAAM,CAAC;AAErG,OAAO,EAAmB,UAAU,EAAuB,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,GAAG,GAAG,wBAAwB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../../src/poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,wBAAwB,EAAgD,MAAM,MAAM,CAAC;AAErG,OAAO,EAAmB,UAAU,EAAuB,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,wBAAwB,CAAC,CAAC,CAAC,CA+CjF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rxjs-poll",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "RxJS operator for polling",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rxjs",
|
|
@@ -26,17 +26,19 @@
|
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"release": "release-it",
|
|
29
|
-
"build": "npm run util:clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run util:packageJson",
|
|
29
|
+
"build": "npm run util:clean:dist && npm run build:esm && npm run build:cjs && npm run build:types && npm run util:packageJson",
|
|
30
30
|
"build:esm": "tsc -p ./ts-configs/tsconfig.esm.json",
|
|
31
31
|
"build:cjs": "tsc -p ./ts-configs/tsconfig.cjs.json",
|
|
32
32
|
"build:types": "tsc -p ./ts-configs/tsconfig.types.json",
|
|
33
33
|
"prepare": "is-ci || husky",
|
|
34
34
|
"prepublishOnly": "npm run build",
|
|
35
35
|
"test": "jest --verbose",
|
|
36
|
+
"test:coverage": "npm run util:clean:coverage && npm run test -- --collect-coverage",
|
|
36
37
|
"lint": "eslint ./src ./tests --ext .js,.ts",
|
|
37
38
|
"lint:fix": "npm run lint -- --fix",
|
|
38
39
|
"util:packageJson": "ts-node ./scripts/generate-package-json.ts",
|
|
39
|
-
"util:clean": "fse remove ./dist",
|
|
40
|
+
"util:clean:dist": "fse remove ./dist",
|
|
41
|
+
"util:clean:coverage": "fse remove ./coverage",
|
|
40
42
|
"util:commitlint": "commitlint",
|
|
41
43
|
"util:lint-staged": "lint-staged"
|
|
42
44
|
},
|