Skip to content
This repository was archived by the owner on May 29, 2023. It is now read-only.

Commit 6d10d1a

Browse files
committed
chore(workers): remove unreachable code
1 parent 2508c7b commit 6d10d1a

File tree

9 files changed

+30
-86
lines changed

9 files changed

+30
-86
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ npm i @ng-web-apis/workers
2828

2929
## How it use
3030

31-
You can create worker with service and use it in a template with `AsyncPipe`:
31+
You can create worker and use it in a template with `AsyncPipe`:
3232

3333
```typescript
34-
import {WorkerExecutor, WebWorker} from '@ng-web-apis/workers';
34+
import {WebWorker} from '@ng-web-apis/workers';
3535

3636
function compute(data: number): number {
3737
return data ** 2;
@@ -47,7 +47,7 @@ function compute(data: number): number {
4747
`,
4848
})
4949
class SomeComponent {
50-
readonly worker: WebWorker<number, number> = workerExecutor.createWorker(compute);
50+
readonly worker = WebWorker.fromFunction<number, number>(compute);
5151
}
5252
```
5353

@@ -78,7 +78,7 @@ import {FormControl} from '@angular/forms';
7878
class SomeComponent {
7979
value: string;
8080

81-
changeData(data: number): number {
81+
changeData(data: number): string {
8282
return `${data} (changed)`;
8383
}
8484
}

projects/demo/src/app/app.component.ts

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {ChangeDetectionStrategy, Component} from '@angular/core';
2-
import {WebWorker, WorkerExecutor} from '@ng-web-apis/workers';
3-
import {Observable, Subject} from 'rxjs';
2+
import {WebWorker} from '@ng-web-apis/workers';
3+
import {Subject} from 'rxjs';
44
import {map} from 'rxjs/operators';
55

66
@Component({
@@ -10,15 +10,9 @@ import {map} from 'rxjs/operators';
1010
changeDetection: ChangeDetectionStrategy.OnPush,
1111
})
1212
export class AppComponent {
13-
readonly workerThread: WebWorker<void, number>;
14-
readonly emitter: Subject<void>;
15-
readonly result$: Observable<number>;
16-
17-
constructor(webWorkerExecutor: WorkerExecutor) {
18-
this.workerThread = webWorkerExecutor.createWorker(this.startCompute);
19-
this.emitter = new Subject();
20-
this.result$ = this.emitter.pipe(map(this.startCompute));
21-
}
13+
readonly workerThread = WebWorker.fromFunction<void, number>(this.startCompute);
14+
readonly emitter = new Subject<void>();
15+
readonly result$ = this.emitter.pipe(map(this.startCompute));
2216

2317
startCompute(): number {
2418
const start = performance.now();

projects/workers/src/worker/classes/web-worker.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,13 @@ describe('WebWorker', () => {
5858
worker.postMessage('b');
5959
expect(await promise).toEqual('a');
6060
});
61+
62+
it('should run a worker and return a correct data', async () => {
63+
const workerPromise: Promise<string> = WebWorker.execute<string, string>(
64+
data => Promise.resolve().then(() => data),
65+
'some data',
66+
);
67+
68+
expect(await workerPromise).toEqual('some data');
69+
}, 10000);
6170
});

projects/workers/src/worker/classes/web-worker.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {fromEvent, Subject} from 'rxjs';
2-
import {filter, takeWhile} from 'rxjs/operators';
2+
import {filter, take, takeWhile} from 'rxjs/operators';
33
import {WORKER_BLANK_FN} from '../consts/worker-fn-template';
44
import {WorkerFunction} from '../types/worker-function';
55

@@ -42,6 +42,15 @@ export class WebWorker<T = any, R = any> extends Subject<R> {
4242
return new WebWorker<T, R>(WebWorker.createFnUrl(fn), options);
4343
}
4444

45+
static execute<T, R>(fn: WorkerFunction<T, R>, data: T): Promise<R> {
46+
const worker = WebWorker.fromFunction(fn);
47+
const promise = worker.pipe(take(1)).toPromise();
48+
49+
worker.postMessage(data);
50+
51+
return promise;
52+
}
53+
4554
private static createFnUrl(fn: WorkerFunction): string {
4655
const script = `(${WORKER_BLANK_FN})(${fn.toString()});`;
4756

projects/workers/src/worker/pipes/worker.pipe.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import {take} from 'rxjs/operators';
2-
import {WorkerExecutor} from '../services/worker-executor.service';
32
import {WorkerPipe} from './worker.pipe';
43

54
describe('WorkerPipe', () => {
65
let pipe: WorkerPipe;
76

87
beforeEach(() => {
9-
pipe = new WorkerPipe(new WorkerExecutor());
8+
pipe = new WorkerPipe();
109
});
1110

1211
it('should emit the first value', async () => {

projects/workers/src/worker/pipes/worker.pipe.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import {Pipe, PipeTransform} from '@angular/core';
22
import {Observable} from 'rxjs';
33
import {WebWorker} from '../classes/web-worker';
4-
import {WorkerExecutor} from '../services/worker-executor.service';
54
import {WorkerFunction} from '../types/worker-function';
65

76
@Pipe({
@@ -10,10 +9,8 @@ import {WorkerFunction} from '../types/worker-function';
109
export class WorkerPipe implements PipeTransform {
1110
private workers = new WeakMap<WorkerFunction, WebWorker>();
1211

13-
constructor(private workerExecutor: WorkerExecutor) {}
14-
1512
transform<T, R>(value: T, fn: WorkerFunction<T, R>): Observable<R> {
16-
const worker = this.workers.get(fn) || this.workerExecutor.createWorker(fn);
13+
const worker = this.workers.get(fn) || WebWorker.fromFunction(fn);
1714

1815
this.workers.set(fn, worker);
1916

projects/workers/src/worker/services/worker-executor.service.spec.ts

Lines changed: 0 additions & 37 deletions
This file was deleted.

projects/workers/src/worker/services/worker-executor.service.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import {CommonModule} from '@angular/common';
21
import {NgModule} from '@angular/core';
32
import {WorkerPipe} from './pipes/worker.pipe';
4-
import {WorkerExecutor} from './services/worker-executor.service';
53

64
@NgModule({
7-
imports: [CommonModule],
85
declarations: [WorkerPipe],
96
exports: [WorkerPipe],
10-
providers: [WorkerExecutor],
117
})
128
export class WorkerModule {}

0 commit comments

Comments
 (0)