Skip to content

Commit 3270ca3

Browse files
Merge pull request #72 from basics/beta
Beta
2 parents 59e84fe + 571b5c6 commit 3270ca3

File tree

7 files changed

+43
-30
lines changed

7 files changed

+43
-30
lines changed

packages/operators/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Project Changelog
22

3+
# [@rxjs-collection/operators-v1.0.5-beta.1](https://github.com/basics/rxjs-collection/compare/@rxjs-collection/operators-v1.0.4...@rxjs-collection/operators-v1.0.5-beta.1) (2024-10-25)
4+
5+
6+
### Bug Fixes
7+
8+
* **fetch:** implemented sonar optimizations ([9063f6e](https://github.com/basics/rxjs-collection/commit/9063f6e9fc85f5d544af4e6d92d1d60e32cccf94))
9+
310
# [@rxjs-collection/operators-v1.0.4](https://github.com/basics/rxjs-collection/compare/@rxjs-collection/operators-v1.0.3...@rxjs-collection/operators-v1.0.4) (2024-10-25)
411

512

packages/operators/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@rxjs-collection/operators",
3-
"version": "1.0.4",
3+
"version": "1.0.5-beta.1",
44
"description": "rxjs operators",
55
"license": "MIT",
66
"contributors": [

packages/operators/src/fetch/autoPagination.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@ import { request } from './request';
55
export const autoPagination = ({ resolveRoute }) => {
66
return source =>
77
source.pipe(
8-
concatMap(({ url }) => {
9-
return from(resolveRoute(url)).pipe(
10-
request(),
11-
expand(resp =>
12-
from(resolveRoute(url, resp)).pipe(
13-
filter(url => !!url),
14-
request()
15-
)
16-
)
17-
);
18-
}),
8+
concatMap(({ url }) => from(resolveRoute(url)).pipe(request(), getNext(resolveRoute, url))),
199
map(resp => resp.clone())
2010
);
2111
};
12+
13+
const getNext = (resolveRoute, url) => {
14+
return source =>
15+
source.pipe(
16+
expand(resp =>
17+
from(resolveRoute(url, resp)).pipe(
18+
filter(url => !!url),
19+
request()
20+
)
21+
)
22+
);
23+
};

packages/operators/src/fetch/retry.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,22 @@ export const networkRetry = ({ timeout = defaultTimeout, count } = {}) => {
2323
concatMap(resp => (!resp.ok && throwError(() => new Error('invalid request'))) || of(resp)),
2424
retry({
2525
count,
26-
delay: () =>
27-
combineLatest([connectionObservable]).pipe(
28-
// all defined observables have to be valid
29-
map(values => values.every(v => v === true)),
30-
// reset counter if one observable is invalid
31-
tap(valid => (counter = counter * valid)),
32-
// continue only if all observables are valid
33-
filter(valid => valid),
34-
tap(() => console.log(`retry: request - next: ${counter} in ${timeout(counter)}s`)),
35-
delay(timeout(counter++) || timeout)
36-
)
26+
delay: () => determineDelayWhenOnline(timeout, ++counter)
3727
}),
3828
catchError(e => console.error(e))
3929
);
4030
};
4131
};
32+
33+
const determineDelayWhenOnline = (timeout, counter) => {
34+
return combineLatest([connectionObservable]).pipe(
35+
// all defined observables have to be valid
36+
map(values => values.every(v => v === true)),
37+
// reset counter if one observable is invalid
38+
tap(valid => (counter = counter * valid)),
39+
// continue only if all observables are valid
40+
filter(valid => valid),
41+
tap(() => console.log(`retry: request - next: ${counter} in ${timeout(counter)}s`)),
42+
delay(timeout(counter) || timeout)
43+
);
44+
};

packages/operators/src/fetch/retry.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe('request retry', function () {
1717
let counter = 0;
1818

1919
const mockObservable = of(null).pipe(
20-
map(() => ({ ok: !(++counter < 3) })),
20+
map(() => ({ ok: ++counter >= 3 })),
2121
networkRetry({ timeout: () => 1000 })
2222
);
2323

packages/operators/src/log.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Observable } from 'rxjs';
22

33
export const log = (active = true) => {
4-
return source => {
5-
if (active) {
4+
if (active) {
5+
return source => {
66
return new Observable(observer => {
77
return source.subscribe(
88
val => {
@@ -19,8 +19,8 @@ export const log = (active = true) => {
1919
}
2020
);
2121
});
22-
} else {
23-
return source;
24-
}
25-
};
22+
};
23+
} else {
24+
return source => source;
25+
}
2626
};

packages/operators/vitest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { defineProject } from 'vitest/config';
33
export default defineProject({
44
test: {
55
setupFiles: ['../../setup.js'],
6+
testTimeout: 10000,
67
environment: 'happy-dom'
78
}
89
});

0 commit comments

Comments
 (0)