@stream-io/video-client 1.18.7 → 1.18.8
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/CHANGELOG.md +97 -169
- package/dist/index.browser.es.js +89 -52
- package/dist/index.browser.es.js.map +1 -1
- package/dist/index.cjs.js +89 -52
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +89 -52
- package/dist/index.es.js.map +1 -1
- package/dist/src/Call.d.ts +10 -1
- package/dist/src/devices/ScreenShareManager.d.ts +1 -3
- package/dist/src/gen/video/sfu/event/events.d.ts +1 -19
- package/dist/src/gen/video/sfu/signal_rpc/signal.client.d.ts +2 -21
- package/dist/src/gen/video/sfu/signal_rpc/signal.d.ts +1 -9
- package/dist/src/helpers/promise.d.ts +2 -2
- package/package.json +10 -11
- package/src/Call.ts +61 -10
- package/src/StreamSfuClient.ts +9 -3
- package/src/StreamVideoClient.ts +4 -5
- package/src/__tests__/Call.test.ts +1 -1
- package/src/coordinator/connection/client.ts +2 -3
- package/src/coordinator/connection/connection.ts +14 -14
- package/src/coordinator/connection/signing.ts +1 -1
- package/src/devices/BrowserPermission.ts +3 -2
- package/src/devices/ScreenShareManager.ts +1 -3
- package/src/devices/__tests__/InputMediaDeviceManager.test.ts +1 -1
- package/src/devices/__tests__/MicrophoneManager.test.ts +4 -4
- package/src/devices/__tests__/MicrophoneManagerRN.test.ts +4 -4
- package/src/devices/devices.ts +3 -1
- package/src/events/__tests__/call.test.ts +42 -57
- package/src/events/__tests__/internal.test.ts +8 -13
- package/src/events/__tests__/mutes.test.ts +7 -3
- package/src/events/__tests__/participant.test.ts +16 -20
- package/src/events/__tests__/speaker.test.ts +6 -6
- package/src/gen/coordinator/index.ts +1 -1
- package/src/gen/video/sfu/event/events.ts +22 -20
- package/src/gen/video/sfu/models/models.ts +0 -1
- package/src/gen/video/sfu/signal_rpc/signal.client.ts +27 -23
- package/src/gen/video/sfu/signal_rpc/signal.ts +13 -11
- package/src/helpers/RNSpeechDetector.ts +3 -4
- package/src/helpers/__tests__/DynascaleManager.test.ts +27 -26
- package/src/helpers/__tests__/clientUtils.test.ts +0 -1
- package/src/helpers/client-details.ts +1 -1
- package/src/helpers/promise.ts +4 -4
- package/src/rtc/Dispatcher.ts +1 -1
- package/src/rtc/Publisher.ts +2 -2
- package/src/rtc/__tests__/Publisher.test.ts +8 -8
- package/src/rtc/__tests__/Subscriber.test.ts +9 -9
- package/src/rtc/__tests__/mocks/webrtc.mocks.ts +2 -2
- package/src/rtc/helpers/__tests__/sdp.test.ts +3 -3
- package/src/stats/CallStateStatsReporter.ts +2 -3
- package/src/store/__tests__/CallState.test.ts +59 -115
- package/src/timers/worker.ts +0 -4
|
@@ -33,7 +33,7 @@ describe('CallState', () => {
|
|
|
33
33
|
Object.getOwnPropertyDescriptors(state),
|
|
34
34
|
).filter((key) => key.endsWith('$'));
|
|
35
35
|
|
|
36
|
-
// @ts-
|
|
36
|
+
// @ts-expect-error - __proto__
|
|
37
37
|
const getters = Object.getOwnPropertyDescriptors(state.__proto__);
|
|
38
38
|
|
|
39
39
|
for (const observable of observables) {
|
|
@@ -318,7 +318,7 @@ describe('CallState', () => {
|
|
|
318
318
|
it('should update the pinned state of participants in the call', () => {
|
|
319
319
|
const state = new CallState();
|
|
320
320
|
state.setSortParticipantsBy(noopComparator());
|
|
321
|
-
// @ts-
|
|
321
|
+
// @ts-expect-error - incomplete data
|
|
322
322
|
state.setParticipants([{ sessionId: '123' }, { sessionId: '456' }]);
|
|
323
323
|
|
|
324
324
|
state.setServerSidePins([{ sessionId: '123', userId: 'user-id' }]);
|
|
@@ -333,9 +333,9 @@ describe('CallState', () => {
|
|
|
333
333
|
const state = new CallState();
|
|
334
334
|
state.setSortParticipantsBy(noopComparator());
|
|
335
335
|
state.setParticipants([
|
|
336
|
-
// @ts-
|
|
336
|
+
// @ts-expect-error - incomplete data
|
|
337
337
|
{ sessionId: '123', pin: { isLocalPin: false, pinnedAt: 1000 } },
|
|
338
|
-
// @ts-
|
|
338
|
+
// @ts-expect-error - incomplete data
|
|
339
339
|
{ sessionId: '456' },
|
|
340
340
|
]);
|
|
341
341
|
|
|
@@ -351,9 +351,9 @@ describe('CallState', () => {
|
|
|
351
351
|
const state = new CallState();
|
|
352
352
|
state.setSortParticipantsBy(noopComparator());
|
|
353
353
|
state.setParticipants([
|
|
354
|
-
// @ts-
|
|
354
|
+
// @ts-expect-error - incomplete data
|
|
355
355
|
{ sessionId: '123', pin: { isLocalPin: true, pinnedAt: 1000 } },
|
|
356
|
-
// @ts-
|
|
356
|
+
// @ts-expect-error - incomplete data
|
|
357
357
|
{ sessionId: '456' },
|
|
358
358
|
]);
|
|
359
359
|
|
|
@@ -370,10 +370,9 @@ describe('CallState', () => {
|
|
|
370
370
|
describe('call.live and backstage events', () => {
|
|
371
371
|
it('handles call.live_started events', () => {
|
|
372
372
|
const state = new CallState();
|
|
373
|
-
// @ts-ignore
|
|
374
373
|
state.updateFromEvent({
|
|
375
374
|
type: 'call.live_started',
|
|
376
|
-
// @ts-
|
|
375
|
+
// @ts-expect-error - incomplete data
|
|
377
376
|
call: {
|
|
378
377
|
backstage: false,
|
|
379
378
|
},
|
|
@@ -389,7 +388,7 @@ describe('CallState', () => {
|
|
|
389
388
|
const event: CallUpdatedEvent = {
|
|
390
389
|
type: 'call.updated',
|
|
391
390
|
call_cid: 'development:12345',
|
|
392
|
-
// @ts-expect-error
|
|
391
|
+
// @ts-expect-error incomplete data
|
|
393
392
|
call: {
|
|
394
393
|
cid: 'development:12345',
|
|
395
394
|
custom: {
|
|
@@ -398,7 +397,7 @@ describe('CallState', () => {
|
|
|
398
397
|
},
|
|
399
398
|
};
|
|
400
399
|
|
|
401
|
-
// @ts-
|
|
400
|
+
// @ts-expect-error incomplete data
|
|
402
401
|
state.updateFromEvent(event);
|
|
403
402
|
expect(state.custom).toEqual(event.call.custom);
|
|
404
403
|
});
|
|
@@ -409,14 +408,14 @@ describe('CallState', () => {
|
|
|
409
408
|
const state = new CallState();
|
|
410
409
|
const event: CallAcceptedEvent = {
|
|
411
410
|
type: 'call.accepted',
|
|
412
|
-
// @ts-expect-error
|
|
411
|
+
// @ts-expect-error incomplete data
|
|
413
412
|
call: {
|
|
414
413
|
custom: {
|
|
415
414
|
test: 'value',
|
|
416
415
|
},
|
|
417
416
|
},
|
|
418
417
|
};
|
|
419
|
-
// @ts-
|
|
418
|
+
// @ts-expect-error incomplete data
|
|
420
419
|
state.updateFromEvent(event);
|
|
421
420
|
|
|
422
421
|
expect(state.custom).toEqual(event.call.custom);
|
|
@@ -428,14 +427,14 @@ describe('CallState', () => {
|
|
|
428
427
|
const state = new CallState();
|
|
429
428
|
const event: CallEndedEvent = {
|
|
430
429
|
type: 'call.rejected',
|
|
431
|
-
// @ts-expect-error
|
|
430
|
+
// @ts-expect-error incomplete data
|
|
432
431
|
call: {
|
|
433
432
|
custom: {
|
|
434
433
|
test: 'value',
|
|
435
434
|
},
|
|
436
435
|
},
|
|
437
436
|
};
|
|
438
|
-
// @ts-
|
|
437
|
+
// @ts-expect-error incomplete data
|
|
439
438
|
state.updateFromEvent(event);
|
|
440
439
|
|
|
441
440
|
expect(state.custom).toEqual(event.call.custom);
|
|
@@ -447,14 +446,14 @@ describe('CallState', () => {
|
|
|
447
446
|
const state = new CallState();
|
|
448
447
|
const event: CallEndedEvent = {
|
|
449
448
|
type: 'call.ended',
|
|
450
|
-
// @ts-expect-error
|
|
449
|
+
// @ts-expect-error incomplete data
|
|
451
450
|
call: {
|
|
452
451
|
custom: {
|
|
453
452
|
test: 'value',
|
|
454
453
|
},
|
|
455
454
|
},
|
|
456
455
|
};
|
|
457
|
-
// @ts-
|
|
456
|
+
// @ts-expect-error incomplete data
|
|
458
457
|
state.updateFromEvent(event);
|
|
459
458
|
|
|
460
459
|
expect(state.custom).toEqual(event.call.custom);
|
|
@@ -521,16 +520,16 @@ describe('CallState', () => {
|
|
|
521
520
|
it('handles call.member_removed events', () => {
|
|
522
521
|
const state = new CallState();
|
|
523
522
|
const initialMembers: MemberResponse[] = [
|
|
524
|
-
// @ts-
|
|
523
|
+
// @ts-expect-error incomplete data
|
|
525
524
|
{ user_id: 'user0' },
|
|
526
|
-
// @ts-
|
|
525
|
+
// @ts-expect-error incomplete data
|
|
527
526
|
{ user_id: 'user1' },
|
|
528
|
-
// @ts-
|
|
527
|
+
// @ts-expect-error incomplete data
|
|
529
528
|
{ user_id: 'user2' },
|
|
530
529
|
];
|
|
531
530
|
state.setMembers(initialMembers);
|
|
532
531
|
const removedMembers = ['user1'];
|
|
533
|
-
|
|
532
|
+
|
|
534
533
|
state.updateFromEvent({
|
|
535
534
|
type: 'call.member_removed',
|
|
536
535
|
members: removedMembers,
|
|
@@ -548,39 +547,33 @@ describe('CallState', () => {
|
|
|
548
547
|
|
|
549
548
|
it('handles call.member_updated_permission events', () => {
|
|
550
549
|
const state = new CallState();
|
|
551
|
-
const user0 = {
|
|
550
|
+
const user0: MemberResponse = {
|
|
552
551
|
user_id: 'user0',
|
|
553
|
-
user: {
|
|
554
|
-
role: 'viewer',
|
|
555
|
-
},
|
|
552
|
+
user: { role: 'viewer' },
|
|
556
553
|
} as MemberResponse;
|
|
557
554
|
const user1 = {
|
|
558
555
|
user_id: 'user1',
|
|
559
|
-
user: {
|
|
560
|
-
role: 'host',
|
|
561
|
-
},
|
|
556
|
+
user: { role: 'host' },
|
|
562
557
|
} as MemberResponse;
|
|
563
558
|
const user2 = {
|
|
564
559
|
user_id: 'user2',
|
|
565
|
-
user: {
|
|
566
|
-
role: 'viewer',
|
|
567
|
-
},
|
|
560
|
+
user: { role: 'viewer' },
|
|
568
561
|
} as MemberResponse;
|
|
569
562
|
const initialMembers: MemberResponse[] = [user0, user1, user2];
|
|
570
563
|
state.setMembers(initialMembers);
|
|
571
|
-
|
|
564
|
+
|
|
572
565
|
state.updateFromEvent({
|
|
573
566
|
type: 'call.member_updated_permission',
|
|
574
567
|
members: [
|
|
575
568
|
{
|
|
576
569
|
user_id: user1.user_id,
|
|
577
|
-
// @ts-
|
|
570
|
+
// @ts-expect-error incomplete data
|
|
578
571
|
user: { ...user1, role: 'viewer' },
|
|
579
572
|
role: 'viewer',
|
|
580
573
|
},
|
|
581
574
|
{
|
|
582
575
|
user_id: user0.user_id,
|
|
583
|
-
// @ts-
|
|
576
|
+
// @ts-expect-error incomplete data
|
|
584
577
|
user: { ...user0, role: 'host' },
|
|
585
578
|
role: 'host',
|
|
586
579
|
},
|
|
@@ -599,27 +592,21 @@ describe('CallState', () => {
|
|
|
599
592
|
const state = new CallState();
|
|
600
593
|
const user0 = {
|
|
601
594
|
user_id: 'user0',
|
|
602
|
-
user: {
|
|
603
|
-
name: 'Jane',
|
|
604
|
-
},
|
|
595
|
+
user: { name: 'Jane' },
|
|
605
596
|
} as MemberResponse;
|
|
606
597
|
const user1 = {
|
|
607
598
|
user_id: 'user1',
|
|
608
|
-
user: {
|
|
609
|
-
name: 'Jack',
|
|
610
|
-
},
|
|
599
|
+
user: { name: 'Jack' },
|
|
611
600
|
} as MemberResponse;
|
|
612
601
|
const user2 = {
|
|
613
602
|
user_id: 'user2',
|
|
614
|
-
user: {
|
|
615
|
-
name: 'Adam',
|
|
616
|
-
},
|
|
603
|
+
user: { name: 'Adam' },
|
|
617
604
|
} as MemberResponse;
|
|
618
605
|
const initialMembers: MemberResponse[] = [user0, user1, user2];
|
|
619
606
|
state.setMembers(initialMembers);
|
|
620
607
|
state.updateFromEvent({
|
|
621
608
|
type: 'call.member_updated',
|
|
622
|
-
// @ts-
|
|
609
|
+
// @ts-expect-error incomplete data
|
|
623
610
|
members: [{ ...user1, user: { name: 'John' } }],
|
|
624
611
|
// @ts-expect-error incomplete data
|
|
625
612
|
call: {},
|
|
@@ -635,19 +622,15 @@ describe('CallState', () => {
|
|
|
635
622
|
describe('recording and broadcasting events', () => {
|
|
636
623
|
it('handles call.recording_started events', () => {
|
|
637
624
|
const state = new CallState();
|
|
638
|
-
// @ts-
|
|
639
|
-
state.updateFromEvent({
|
|
640
|
-
type: 'call.recording_started',
|
|
641
|
-
});
|
|
625
|
+
// @ts-expect-error incomplete data
|
|
626
|
+
state.updateFromEvent({ type: 'call.recording_started' });
|
|
642
627
|
expect(state.recording).toBe(true);
|
|
643
628
|
});
|
|
644
629
|
|
|
645
630
|
it('handles call.recording_stopped events', () => {
|
|
646
631
|
const state = new CallState();
|
|
647
|
-
// @ts-
|
|
648
|
-
state.updateFromEvent({
|
|
649
|
-
type: 'call.recording_stopped',
|
|
650
|
-
});
|
|
632
|
+
// @ts-expect-error incomplete data
|
|
633
|
+
state.updateFromEvent({ type: 'call.recording_stopped' });
|
|
651
634
|
expect(state.recording).toBe(false);
|
|
652
635
|
});
|
|
653
636
|
|
|
@@ -664,16 +647,13 @@ describe('CallState', () => {
|
|
|
664
647
|
it('handles call.hls_broadcasting_started events', () => {
|
|
665
648
|
const state = new CallState();
|
|
666
649
|
state.updateFromCallResponse({
|
|
667
|
-
// @ts-
|
|
650
|
+
// @ts-expect-error incomplete data
|
|
668
651
|
egress: {
|
|
669
652
|
broadcasting: false,
|
|
670
|
-
hls: {
|
|
671
|
-
playlist_url: '',
|
|
672
|
-
status: 'starting',
|
|
673
|
-
},
|
|
653
|
+
hls: { playlist_url: '', status: 'starting' },
|
|
674
654
|
},
|
|
675
655
|
});
|
|
676
|
-
|
|
656
|
+
|
|
677
657
|
state.updateFromEvent({
|
|
678
658
|
type: 'call.hls_broadcasting_started',
|
|
679
659
|
// @ts-expect-error incomplete data
|
|
@@ -697,9 +677,9 @@ describe('CallState', () => {
|
|
|
697
677
|
|
|
698
678
|
it('handles call.hls_broadcasting_stopped events', () => {
|
|
699
679
|
const state = new CallState();
|
|
700
|
-
// @ts-
|
|
680
|
+
// @ts-expect-error incomplete data
|
|
701
681
|
state.updateFromCallResponse({});
|
|
702
|
-
// @ts-
|
|
682
|
+
// @ts-expect-error incomplete data
|
|
703
683
|
state.updateFromEvent({
|
|
704
684
|
type: 'call.hls_broadcasting_stopped',
|
|
705
685
|
});
|
|
@@ -722,7 +702,7 @@ describe('CallState', () => {
|
|
|
722
702
|
state.updateFromEvent({
|
|
723
703
|
type: 'call.session_started',
|
|
724
704
|
call: {
|
|
725
|
-
// @ts-
|
|
705
|
+
// @ts-expect-error incomplete data
|
|
726
706
|
session: {
|
|
727
707
|
id: 'session-id',
|
|
728
708
|
participants: [],
|
|
@@ -743,7 +723,7 @@ describe('CallState', () => {
|
|
|
743
723
|
state.updateFromEvent({
|
|
744
724
|
type: 'call.session_ended',
|
|
745
725
|
call: {
|
|
746
|
-
// @ts-
|
|
726
|
+
// @ts-expect-error incomplete data
|
|
747
727
|
session: {
|
|
748
728
|
id: 'session-id',
|
|
749
729
|
participants: [],
|
|
@@ -761,7 +741,7 @@ describe('CallState', () => {
|
|
|
761
741
|
it('should update the call metadata when a participant joins', () => {
|
|
762
742
|
const state = new CallState();
|
|
763
743
|
state.updateFromCallResponse({
|
|
764
|
-
// @ts-
|
|
744
|
+
// @ts-expect-error incomplete data
|
|
765
745
|
session: {
|
|
766
746
|
participants: [],
|
|
767
747
|
participants_count_by_role: {},
|
|
@@ -770,117 +750,81 @@ describe('CallState', () => {
|
|
|
770
750
|
state.updateFromEvent({
|
|
771
751
|
type: 'call.session_participant_joined',
|
|
772
752
|
participant: {
|
|
773
|
-
// @ts-
|
|
774
|
-
user: {
|
|
775
|
-
id: 'user-id',
|
|
776
|
-
role: 'user',
|
|
777
|
-
},
|
|
753
|
+
// @ts-expect-error incomplete data
|
|
754
|
+
user: { id: 'user-id', role: 'user' },
|
|
778
755
|
user_session_id: '123',
|
|
779
756
|
},
|
|
780
757
|
});
|
|
781
758
|
expect(state.session).toEqual({
|
|
782
759
|
participants: [
|
|
783
760
|
{
|
|
784
|
-
user: {
|
|
785
|
-
id: 'user-id',
|
|
786
|
-
role: 'user',
|
|
787
|
-
},
|
|
761
|
+
user: { id: 'user-id', role: 'user' },
|
|
788
762
|
user_session_id: '123',
|
|
789
763
|
},
|
|
790
764
|
],
|
|
791
|
-
participants_count_by_role: {
|
|
792
|
-
user: 1,
|
|
793
|
-
},
|
|
765
|
+
participants_count_by_role: { user: 1 },
|
|
794
766
|
});
|
|
795
767
|
});
|
|
796
768
|
|
|
797
769
|
it('should update the call metadata when a participant leaves', () => {
|
|
798
770
|
const state = new CallState();
|
|
799
771
|
state.updateFromCallResponse({
|
|
800
|
-
// @ts-ignore
|
|
801
772
|
session: {
|
|
802
773
|
participants: [
|
|
803
774
|
{
|
|
804
775
|
joined_at: '2021-01-01T00:00:00.000Z',
|
|
805
|
-
// @ts-
|
|
806
|
-
user: {
|
|
807
|
-
id: 'user-id',
|
|
808
|
-
role: 'user',
|
|
809
|
-
},
|
|
776
|
+
// @ts-expect-error incomplete data
|
|
777
|
+
user: { id: 'user-id', role: 'user' },
|
|
810
778
|
user_session_id: '123',
|
|
811
779
|
},
|
|
812
780
|
],
|
|
813
|
-
participants_count_by_role: {
|
|
814
|
-
user: 1,
|
|
815
|
-
},
|
|
781
|
+
participants_count_by_role: { user: 1 },
|
|
816
782
|
},
|
|
817
783
|
});
|
|
818
784
|
state.updateFromEvent({
|
|
819
785
|
type: 'call.session_participant_left',
|
|
820
786
|
participant: {
|
|
821
|
-
// @ts-
|
|
822
|
-
user: {
|
|
823
|
-
id: 'user-id',
|
|
824
|
-
role: 'user',
|
|
825
|
-
},
|
|
787
|
+
// @ts-expect-error incomplete data
|
|
788
|
+
user: { id: 'user-id', role: 'user' },
|
|
826
789
|
user_session_id: '123',
|
|
827
790
|
},
|
|
828
791
|
});
|
|
829
792
|
expect(state.session).toEqual({
|
|
830
793
|
participants: [],
|
|
831
|
-
participants_count_by_role: {
|
|
832
|
-
user: 0,
|
|
833
|
-
},
|
|
794
|
+
participants_count_by_role: { user: 0 },
|
|
834
795
|
});
|
|
835
796
|
});
|
|
836
797
|
|
|
837
798
|
it('should update existing participant', () => {
|
|
838
799
|
const state = new CallState();
|
|
839
800
|
state.updateFromCallResponse({
|
|
840
|
-
// @ts-ignore
|
|
841
801
|
session: {
|
|
842
802
|
participants: [
|
|
843
803
|
{
|
|
844
|
-
// @ts-
|
|
845
|
-
user: {
|
|
846
|
-
id: 'user-id',
|
|
847
|
-
role: 'user',
|
|
848
|
-
},
|
|
804
|
+
// @ts-expect-error incomplete data
|
|
805
|
+
user: { id: 'user-id', role: 'user' },
|
|
849
806
|
user_session_id: '123',
|
|
850
807
|
},
|
|
851
808
|
],
|
|
852
|
-
participants_count_by_role: {
|
|
853
|
-
user: 1,
|
|
854
|
-
},
|
|
809
|
+
participants_count_by_role: { user: 1 },
|
|
855
810
|
},
|
|
856
811
|
});
|
|
857
812
|
state.updateFromEvent({
|
|
858
813
|
type: 'call.session_participant_joined',
|
|
859
814
|
participant: {
|
|
860
|
-
// @ts-
|
|
861
|
-
user: {
|
|
862
|
-
id: 'user-id',
|
|
863
|
-
role: 'user',
|
|
864
|
-
name: 'Updated user',
|
|
865
|
-
},
|
|
815
|
+
// @ts-expect-error incomplete data
|
|
816
|
+
user: { id: 'user-id', role: 'user', name: 'Updated user' },
|
|
866
817
|
user_session_id: '123',
|
|
867
818
|
},
|
|
868
819
|
});
|
|
869
820
|
expect(state.session).toEqual({
|
|
870
821
|
participants: [
|
|
871
822
|
{
|
|
872
|
-
|
|
873
|
-
user: {
|
|
874
|
-
id: 'user-id',
|
|
875
|
-
role: 'user',
|
|
876
|
-
name: 'Updated user',
|
|
877
|
-
},
|
|
823
|
+
user: { id: 'user-id', role: 'user', name: 'Updated user' },
|
|
878
824
|
user_session_id: '123',
|
|
879
825
|
},
|
|
880
826
|
],
|
|
881
|
-
participants_count_by_role: {
|
|
882
|
-
user: 1,
|
|
883
|
-
},
|
|
827
|
+
participants_count_by_role: { user: 1 },
|
|
884
828
|
});
|
|
885
829
|
});
|
|
886
830
|
|
package/src/timers/worker.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
|
|
3
1
|
import type { TimerWorkerEvent, TimerWorkerRequest } from './types';
|
|
4
2
|
|
|
5
3
|
const timerIdMapping = new Map<number, NodeJS.Timeout>();
|
|
@@ -36,5 +34,3 @@ function tick(id: number) {
|
|
|
36
34
|
const message: TimerWorkerEvent = { type: 'tick', id };
|
|
37
35
|
self.postMessage(message);
|
|
38
36
|
}
|
|
39
|
-
|
|
40
|
-
/* eslint-enable */
|