Skip to content

Commit 0437a9f

Browse files
authored
Merge pull request #34 from hellivan/feat/upgrade-dependencies
feat(dependencies): upgrade rxjs to v7
2 parents 665e490 + 6566b5a commit 0437a9f

14 files changed

+3803
-5171
lines changed

.eslintrc.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
module.exports = {
22
parser: '@typescript-eslint/parser', // Specifies the ESLint parser
3+
plugins: ['@typescript-eslint'],
34
extends: [
5+
'eslint:recommended',
6+
'plugin:@typescript-eslint/eslint-recommended',
47
'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin
5-
'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
6-
'plugin:prettier/recommended' // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
8+
'prettier' // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
79
],
810
parserOptions: {
911
ecmaVersion: 2019, // Allows for the parsing of modern ECMAScript features

.husky/pre-commit

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/sh
2+
. "$(dirname "$0")/_/husky.sh"
3+
4+
yarn pretty-quick --staged

package.json

+22-28
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
"scripts": {
1818
"build": "rimraf ./dist && tsc -p tsconfig.build.json --incremental false",
1919
"check-dependencies": "dependency-check package.json --missing --no-dev",
20-
"check-formatting": "prettier --check \"./**/*\"",
21-
"format": "prettier --write \"./**/*\"",
20+
"check-formatting": "prettier --check .",
21+
"format": "prettier --write .",
2222
"lint": "eslint ./src --ext .ts",
2323
"lint:ci": "eslint ./src --ext .ts --format junit -o reports/junit/eslint.xml",
2424
"semantic-release": "semantic-release",
@@ -29,38 +29,32 @@
2929
"test:e2e": "jest --config ./test/jest-e2e.config.json"
3030
},
3131
"dependencies": {
32-
"rxjs": "^6.5.5"
33-
},
34-
"husky": {
35-
"hooks": {
36-
"pre-commit": "pretty-quick --staged"
37-
}
32+
"rxjs": "^7.3.0"
3833
},
3934
"devDependencies": {
4035
"@semantic-release/changelog": "^5.0.1",
4136
"@semantic-release/commit-analyzer": "^8.0.1",
42-
"@semantic-release/github": "^7.0.5",
43-
"@semantic-release/npm": "^7.0.5",
44-
"@semantic-release/release-notes-generator": "^9.0.1",
45-
"@types/jest": "^25.2.1",
46-
"@types/node": "^12.12.35",
47-
"@typescript-eslint/eslint-plugin": "^2.27.0",
48-
"@typescript-eslint/parser": "^2.27.0",
37+
"@semantic-release/github": "^7.2.3",
38+
"@semantic-release/npm": "^7.1.3",
39+
"@semantic-release/release-notes-generator": "^9.0.3",
40+
"@types/jest": "^27.0.1",
41+
"@types/node": "^12.20.19",
42+
"@typescript-eslint/eslint-plugin": "^4.29.1",
43+
"@typescript-eslint/parser": "^4.29.1",
4944
"condition-circle": "^2.0.2",
5045
"dependency-check": "^4.1.0",
51-
"eslint": "^6.8.0",
52-
"eslint-config-prettier": "^6.10.1",
53-
"eslint-plugin-prettier": "^3.1.3",
54-
"husky": "^4.2.5",
55-
"jest": "^25.3.0",
56-
"jest-circus": "^25.3.0",
57-
"jest-html-reporter": "^3.1.0",
58-
"jest-junit": "^10.0.0",
59-
"prettier": "^2.0.4",
60-
"pretty-quick": "^2.0.1",
46+
"eslint": "^7.32.0",
47+
"eslint-config-prettier": "^8.3.0",
48+
"eslint-plugin-prettier": "^3.4.0",
49+
"husky": "^7.0.1",
50+
"jest": "^27.0.6",
51+
"jest-html-reporter": "^3.4.1",
52+
"jest-junit": "^12.2.0",
53+
"prettier": "^2.3.2",
54+
"pretty-quick": "^3.1.1",
6155
"rimraf": "^3.0.2",
62-
"semantic-release": "^17.0.4",
63-
"ts-jest": "^25.3.1",
64-
"typescript": "~3.8.3"
56+
"semantic-release": "^17.4.4",
57+
"ts-jest": "^27.0.4",
58+
"typescript": "~4.3.5"
6559
}
6660
}

src/data-structures/observable-queue.spec.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import { bufferCount, firstValueFrom } from 'rxjs';
2+
13
import { ObservableQueue } from './observable-queue';
2-
import { bufferCount, first } from 'rxjs/operators';
34

45
describe('ObservableList', () => {
56
test('Empty queue should have size 0', () => {
@@ -45,7 +46,7 @@ describe('ObservableList', () => {
4546

4647
test('enqueue should add elements to the queue and change size accordingly', async () => {
4748
const queue = new ObservableQueue<string>();
48-
const sizeChangesPromise = queue.size$.pipe(bufferCount(4), first()).toPromise();
49+
const sizeChangesPromise = firstValueFrom(queue.size$.pipe(bufferCount(4)));
4950
expect(queue.size).toEqual(0);
5051
queue.enqueue('1');
5152
expect(queue.size).toEqual(1);
@@ -63,7 +64,7 @@ describe('ObservableList', () => {
6364
queue.enqueue('2');
6465
queue.enqueue('3');
6566

66-
const sizeChangesPromise = queue.size$.pipe(bufferCount(4), first()).toPromise();
67+
const sizeChangesPromise = firstValueFrom(queue.size$.pipe(bufferCount(4)));
6768
expect(queue.size).toEqual(3);
6869
expect(queue.dequeue()).toEqual('1');
6970
expect(queue.size).toEqual(2);
@@ -86,7 +87,7 @@ describe('ObservableList', () => {
8687
queue.enqueue('2');
8788
queue.enqueue('3');
8889

89-
const sizeChangesPromise = queue.size$.pipe(bufferCount(2), first()).toPromise();
90+
const sizeChangesPromise = firstValueFrom(queue.size$.pipe(bufferCount(2)));
9091
queue.clear();
9192

9293
await expect(sizeChangesPromise).resolves.toEqual([3, 0]);

src/data-structures/observable-queue.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { BehaviorSubject, Observable } from 'rxjs';
2-
import { distinctUntilChanged } from 'rxjs/operators';
1+
import { BehaviorSubject, distinctUntilChanged, Observable } from 'rxjs';
32

43
export class ObservableQueue<T> implements Iterable<T> {
54
public readonly size$: Observable<number>;

src/qd-scheduler/qd-scheduler.spec.ts

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import { bufferCount, firstValueFrom } from 'rxjs';
2+
13
import { QdScheduler } from './qd-scheduler';
2-
import { first, bufferCount } from 'rxjs/operators';
34

45
describe('QdScheduler', () => {
56
test('calling start on a started scheduler should throw an error', () => {
@@ -43,8 +44,8 @@ describe('QdScheduler', () => {
4344
const testError = new Error('TaskError');
4445
const testTask = { exec: (): Promise<void> => Promise.reject(testError) };
4546

46-
const completedPromise = scheduler.taskCompleted$.pipe(first()).toPromise();
47-
const errorPromise = scheduler.taskError$.pipe(first()).toPromise();
47+
const completedPromise = firstValueFrom(scheduler.taskCompleted$);
48+
const errorPromise = firstValueFrom(scheduler.taskError$);
4849

4950
scheduler.queueTask(testTask);
5051

@@ -58,7 +59,7 @@ describe('QdScheduler', () => {
5859

5960
test('taskQueued$ should emit queued tasks', async () => {
6061
const scheduler = new QdScheduler(1, 2);
61-
const queuedPromise = scheduler.taskQueued$.pipe(bufferCount(2), first()).toPromise();
62+
const queuedPromise = firstValueFrom(scheduler.taskQueued$.pipe(bufferCount(2)));
6263

6364
const testTask1 = { exec: (): Promise<void> => Promise.resolve() };
6465
const testTask2 = { exec: (): Promise<void> => Promise.reject() };
@@ -71,7 +72,7 @@ describe('QdScheduler', () => {
7172

7273
test('taskStarting$ should emit started tasks', async () => {
7374
const scheduler = new QdScheduler(1, 2);
74-
const startingPromise = scheduler.taskStarting$.pipe(bufferCount(2), first()).toPromise();
75+
const startingPromise = firstValueFrom(scheduler.taskStarting$.pipe(bufferCount(2)));
7576

7677
const testTask1 = { exec: (): Promise<void> => Promise.resolve() };
7778
const testTask2 = { exec: (): Promise<void> => Promise.reject() };
@@ -105,7 +106,7 @@ describe('QdScheduler', () => {
105106
test('size$ should emit the current task count in the queue', async () => {
106107
const scheduler = new QdScheduler(1, 2);
107108

108-
const sizePromise = scheduler.size$.pipe(bufferCount(5), first()).toPromise();
109+
const sizePromise = firstValueFrom(scheduler.size$.pipe(bufferCount(5)));
109110

110111
const testTask = { exec: (): Promise<void> => Promise.resolve() };
111112

@@ -140,7 +141,7 @@ describe('QdScheduler', () => {
140141
test('queuedTasksCount$ should emit the number of queued tasks', async () => {
141142
const scheduler = new QdScheduler(2, 2);
142143

143-
const queuedPromise = scheduler.queuedTasksCount$.pipe(bufferCount(5), first()).toPromise();
144+
const queuedPromise = firstValueFrom(scheduler.queuedTasksCount$.pipe(bufferCount(5)));
144145

145146
const testTask = { exec: (): Promise<void> => Promise.resolve() };
146147

@@ -156,7 +157,7 @@ describe('QdScheduler', () => {
156157
test('runningTasksCount$ should emit the number of currently running tasks', async () => {
157158
const scheduler = new QdScheduler(2, 2);
158159

159-
const runningPromise = scheduler.runningTasksCount$.pipe(bufferCount(5), first()).toPromise();
160+
const runningPromise = firstValueFrom(scheduler.runningTasksCount$.pipe(bufferCount(5)));
160161

161162
const testTask = { exec: (): Promise<void> => Promise.resolve() };
162163

@@ -219,7 +220,7 @@ describe('QdScheduler', () => {
219220
const scheduler = new QdScheduler(1, 2);
220221
const testTask = { exec: (): Promise<void> => Promise.resolve() };
221222

222-
const runningPromise1 = scheduler.runningTasksCount$.pipe(bufferCount(5), first()).toPromise();
223+
const runningPromise1 = firstValueFrom(scheduler.runningTasksCount$.pipe(bufferCount(5)));
223224

224225
scheduler.queueTask(testTask);
225226
scheduler.queueTask(testTask);
@@ -229,7 +230,7 @@ describe('QdScheduler', () => {
229230
scheduler.stop();
230231
expect(await runningPromise1).toEqual([0, 1, 0, 1, 0]);
231232

232-
const runningPromise2 = scheduler.runningTasksCount$.pipe(bufferCount(5), first()).toPromise();
233+
const runningPromise2 = firstValueFrom(scheduler.runningTasksCount$.pipe(bufferCount(5)));
233234

234235
scheduler.setMaxParallelTasks(2);
235236

src/qd-scheduler/qd-scheduler.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
1-
import { merge as observableMerge, Observable, of as observableOf, Subject, Subscription, BehaviorSubject } from 'rxjs';
2-
import { mapTo, distinctUntilChanged, filter, first } from 'rxjs/operators';
1+
import {
2+
BehaviorSubject,
3+
distinctUntilChanged,
4+
filter,
5+
firstValueFrom,
6+
mapTo,
7+
merge as observableMerge,
8+
Observable,
9+
of as observableOf,
10+
Subject,
11+
Subscription
12+
} from 'rxjs';
313

414
import { LimitedObservableQueue } from '../data-structures';
515

@@ -73,12 +83,7 @@ export class QdScheduler<TTask extends Task> {
7383
}
7484

7585
public async workeredOff(): Promise<void> {
76-
await this.size$
77-
.pipe(
78-
filter((size) => size === 0),
79-
first()
80-
)
81-
.toPromise();
86+
await firstValueFrom(this.size$.pipe(filter((size) => size === 0)));
8287
}
8388

8489
public start(): void {

src/worker-pool/abstract-worker-pool.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ export interface AbstractWorkerPoolWorker<TTask, TResult> {
55
}
66

77
export abstract class AbstractWorkerPool<TTask, TResult, TWorker extends AbstractWorkerPoolWorker<TTask, TResult>>
8-
implements WorkerPool<TTask, TResult> {
8+
implements WorkerPool<TTask, TResult>
9+
{
910
public async executeTask(task: TTask): Promise<TResult> {
1011
const worker = this.aquireWorker();
1112
try {

src/worker-pool/dynamic-worker-pool.spec.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { first, bufferCount } from 'rxjs/operators';
1+
import { bufferCount, firstValueFrom } from 'rxjs';
22

33
import { DynamicWorkerPool } from './dynamic-worker-pool';
44

@@ -116,7 +116,7 @@ describe('DynamicWorkerPool', () => {
116116
throw new Error('DisposeError');
117117
});
118118

119-
const errorPromise = testPool.error$.pipe(first()).toPromise();
119+
const errorPromise = firstValueFrom(testPool.error$);
120120

121121
await testPool.executeTask('1');
122122

@@ -151,7 +151,7 @@ describe('DynamicWorkerPool', () => {
151151
test('busyWorkers$ should emit number of workers in use', async () => {
152152
const testPool = new DynamicWorkerPool<string, string, TestWorker>(workerFactory, 2, 5, 0);
153153

154-
const busyWorkersHistoryPromise = testPool.busyWorkers$.pipe(bufferCount(13), first()).toPromise();
154+
const busyWorkersHistoryPromise = firstValueFrom(testPool.busyWorkers$.pipe(bufferCount(13)));
155155

156156
await Promise.all([
157157
testPool.executeTask('1'),
@@ -169,7 +169,7 @@ describe('DynamicWorkerPool', () => {
169169
test('idleWorkers$ should emit number of idle workers', async () => {
170170
const testPool = new DynamicWorkerPool<string, string, TestWorker>(workerFactory, 2, 5, 0);
171171

172-
const idleWorkersHistoryPromise = testPool.idleWorkers$.pipe(bufferCount(5), first()).toPromise();
172+
const idleWorkersHistoryPromise = firstValueFrom(testPool.idleWorkers$.pipe(bufferCount(5)));
173173

174174
await Promise.all([
175175
testPool.executeTask('1'),
@@ -187,7 +187,7 @@ describe('DynamicWorkerPool', () => {
187187
test('availableWorkers$ should emit number of available workers', async () => {
188188
const testPool = new DynamicWorkerPool<string, string, TestWorker>(workerFactory, 2, 5, 0);
189189

190-
const availableWorkersHistoryPromise = testPool.availableWorkers$.pipe(bufferCount(13), first()).toPromise();
190+
const availableWorkersHistoryPromise = firstValueFrom(testPool.availableWorkers$.pipe(bufferCount(13)));
191191

192192
await Promise.all([
193193
testPool.executeTask('1'),
@@ -205,7 +205,7 @@ describe('DynamicWorkerPool', () => {
205205
test('availableWorkers$ should emit 0 for a stopped pool', async () => {
206206
const testPool = new DynamicWorkerPool<string, string, TestWorker>(workerFactory, 2, 5, 0);
207207

208-
const availableWorkersHistoryPromise = testPool.availableWorkers$.pipe(bufferCount(4), first()).toPromise();
208+
const availableWorkersHistoryPromise = firstValueFrom(testPool.availableWorkers$.pipe(bufferCount(4)));
209209

210210
await testPool.executeTask('1');
211211

src/worker-pool/dynamic-worker-pool.ts

+2-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { Observable, Subject, BehaviorSubject } from 'rxjs';
2-
import { distinctUntilChanged, filter, first } from 'rxjs/operators';
1+
import { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, Observable, Subject } from 'rxjs';
32

43
import { ObservableQueue } from '../data-structures';
54
import { WorkerFactory } from '../worker-factory';
@@ -66,12 +65,7 @@ export class DynamicWorkerPool<
6665
public async stop(): Promise<void> {
6766
this.stopped = true;
6867

69-
await this.busyWorkers$
70-
.pipe(
71-
filter((count) => count === 0),
72-
first()
73-
)
74-
.toPromise();
68+
await firstValueFrom(this.busyWorkers$.pipe(filter((count) => count === 0)));
7569

7670
const existingWorkerDescriptions = this.idleWorkersQueue.clear();
7771
existingWorkerDescriptions.forEach((d) => d.cancelIdleTimeout());

src/worker-pool/idle-worker-description.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { IdleWorkerDescription } from './idle-worker-description';
22

33
describe('IdleWorkerDescription', () => {
4-
jest.useFakeTimers();
4+
jest.useFakeTimers('legacy');
55

66
beforeEach(() => {
77
jest.clearAllMocks();

src/workers/timer-event-registration.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { TimerEventRegistration } from './timer-event-registration';
22

33
describe('TimerRegistration', () => {
4-
jest.useFakeTimers();
4+
jest.useFakeTimers('legacy');
55

66
beforeEach(() => {
77
jest.clearAllMocks();

0 commit comments

Comments
 (0)