@neurodevs/node-lsl 20.0.0 → 22.0.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 +6 -6
- package/build/__tests__/AbstractPackageTest.d.ts +2 -1
- package/build/__tests__/AbstractPackageTest.js +9 -7
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/{BleDeviceController.test.d.ts → BleGattController.test.d.ts} +3 -3
- package/build/__tests__/impl/{BleDeviceController.test.js → BleGattController.test.js} +65 -65
- package/build/__tests__/impl/BleGattController.test.js.map +1 -0
- package/build/__tests__/impl/BleObserverController.test.d.ts +12 -0
- package/build/__tests__/impl/BleObserverController.test.js +62 -0
- package/build/__tests__/impl/BleObserverController.test.js.map +1 -0
- package/build/__tests__/impl/{LslEventMarkerEmitter.test.d.ts → LslEventMarkerOutlet.test.d.ts} +3 -3
- package/build/__tests__/impl/{LslEventMarkerEmitter.test.js → LslEventMarkerOutlet.test.js} +35 -36
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
- package/build/__tests__/impl/LslJsonOutlet.test.d.ts +14 -0
- package/build/__tests__/impl/LslJsonOutlet.test.js +118 -0
- package/build/__tests__/impl/LslJsonOutlet.test.js.map +1 -0
- package/build/__tests__/impl/LslStreamInfo.test.js +0 -1
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.js +0 -1
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamOutlet.test.js +0 -1
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js +0 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/__tests__/impl/UsbDeviceController.test.js.map +1 -1
- package/build/impl/{LslEventMarkerEmitter.d.ts → LslEventMarkerOutlet.d.ts} +6 -6
- package/build/impl/{LslEventMarkerEmitter.js → LslEventMarkerOutlet.js} +2 -2
- package/build/impl/LslEventMarkerOutlet.js.map +1 -0
- package/build/impl/LslJsonOutlet.d.ts +33 -0
- package/build/impl/LslJsonOutlet.js +44 -0
- package/build/impl/LslJsonOutlet.js.map +1 -0
- package/build/impl/LslStreamOutlet.d.ts +3 -4
- package/build/impl/controllers/{BleDeviceController.d.ts → BleGattController.d.ts} +10 -10
- package/build/impl/controllers/{BleDeviceController.js → BleGattController.js} +18 -18
- package/build/impl/controllers/BleGattController.js.map +1 -0
- package/build/impl/controllers/BleObserverController.d.ts +20 -0
- package/build/impl/controllers/BleObserverController.js +37 -0
- package/build/impl/controllers/BleObserverController.js.map +1 -0
- package/build/impl/controllers/UsbDeviceController.d.ts +9 -9
- package/build/impl/controllers/UsbDeviceController.js +7 -7
- package/build/impl/controllers/UsbDeviceController.js.map +1 -1
- package/build/index.d.ts +24 -16
- package/build/index.js +29 -19
- package/build/index.js.map +1 -1
- package/build/scripts/runEventMarkerOutlet.js +12 -0
- package/build/scripts/runEventMarkerOutlet.js.map +1 -0
- package/build/scripts/runMuse.js +2 -2
- package/build/scripts/runMuse.js.map +1 -1
- package/build/testDoubles/{BleController/FakeBleController.d.ts → BleGatt/FakeBleGatt.d.ts} +6 -6
- package/build/testDoubles/{BleController/FakeBleController.js → BleGatt/FakeBleGatt.js} +8 -8
- package/build/testDoubles/BleGatt/FakeBleGatt.js.map +1 -0
- package/build/testDoubles/{BleController/SpyBleController.d.ts → BleGatt/SpyBleGatt.d.ts} +4 -4
- package/build/testDoubles/{BleController/SpyBleController.js → BleGatt/SpyBleGatt.js} +3 -3
- package/build/testDoubles/BleGatt/SpyBleGatt.js.map +1 -0
- package/build/testDoubles/BleObserver/FakeBleObserver.d.ts +10 -0
- package/build/testDoubles/BleObserver/FakeBleObserver.js +20 -0
- package/build/testDoubles/BleObserver/FakeBleObserver.js.map +1 -0
- package/build/testDoubles/{LslEmitter/FakeLslEmitter.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +2 -2
- package/build/testDoubles/{LslEmitter/FakeLslEmitter.js → EventMarkerOutlet/FakeEventMarkerOutlet.js} +7 -7
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{LslEmitter/SpyLslEmitter.d.ts → EventMarkerOutlet/SpyEventMarkerOutlet.d.ts} +3 -3
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +23 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{LslEmitter/ThrowingLslEmitter.d.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts} +2 -2
- package/build/testDoubles/{LslEmitter/ThrowingLslEmitter.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +2 -2
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/JsonOutlet/FakeJsonOutlet.d.ts +10 -0
- package/build/testDoubles/JsonOutlet/FakeJsonOutlet.js +20 -0
- package/build/testDoubles/JsonOutlet/FakeJsonOutlet.js.map +1 -0
- package/build/testDoubles/UsbDevice/FakeUsbDevice.d.ts +12 -0
- package/build/testDoubles/UsbDevice/FakeUsbDevice.js +25 -0
- package/build/testDoubles/UsbDevice/FakeUsbDevice.js.map +1 -0
- package/package.json +3 -3
- package/src/__tests__/AbstractPackageTest.ts +9 -7
- package/src/__tests__/impl/{BleDeviceController.test.ts → BleGattController.test.ts} +43 -43
- package/src/__tests__/impl/BleObserverController.test.ts +72 -0
- package/src/__tests__/impl/{LslEventMarkerEmitter.test.ts → LslEventMarkerOutlet.test.ts} +20 -19
- package/src/__tests__/impl/LslJsonOutlet.test.ts +135 -0
- package/src/__tests__/impl/LslStreamInfo.test.ts +0 -1
- package/src/__tests__/impl/LslStreamInlet.test.ts +0 -1
- package/src/__tests__/impl/LslStreamOutlet.test.ts +0 -1
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +0 -1
- package/src/__tests__/impl/UsbDeviceController.test.ts +2 -2
- package/src/impl/{LslEventMarkerEmitter.ts → LslEventMarkerOutlet.ts} +8 -6
- package/src/impl/LslJsonOutlet.ts +87 -0
- package/src/impl/LslStreamOutlet.ts +7 -5
- package/src/impl/controllers/{BleDeviceController.ts → BleGattController.ts} +23 -28
- package/src/impl/controllers/BleObserverController.ts +62 -0
- package/src/impl/controllers/UsbDeviceController.ts +14 -16
- package/src/index.ts +40 -24
- package/src/scripts/{runLslEmitter.ts → runEventMarkerOutlet.ts} +5 -5
- package/src/scripts/runMuse.ts +2 -2
- package/src/testDoubles/{BleController/FakeBleController.ts → BleGatt/FakeBleGatt.ts} +14 -14
- package/src/testDoubles/{BleController/SpyBleController.ts → BleGatt/SpyBleGatt.ts} +5 -5
- package/src/testDoubles/BleObserver/FakeBleObserver.ts +28 -0
- package/src/testDoubles/{LslEmitter/FakeLslEmitter.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +8 -8
- package/src/testDoubles/{LslEmitter/SpyLslEmitter.ts → EventMarkerOutlet/SpyEventMarkerOutlet.ts} +7 -7
- package/src/testDoubles/{LslEmitter/ThrowingLslEmitter.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +3 -3
- package/src/testDoubles/JsonOutlet/FakeJsonOutlet.ts +25 -0
- package/src/testDoubles/UsbDevice/FakeUsbDevice.ts +34 -0
- package/build/__tests__/impl/BleDeviceController.test.js.map +0 -1
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +0 -1
- package/build/impl/LslEventMarkerEmitter.js.map +0 -1
- package/build/impl/controllers/BleDeviceController.js.map +0 -1
- package/build/scripts/runLslEmitter.js +0 -12
- package/build/scripts/runLslEmitter.js.map +0 -1
- package/build/testDoubles/BleController/FakeBleController.js.map +0 -1
- package/build/testDoubles/BleController/SpyBleController.js.map +0 -1
- package/build/testDoubles/LslEmitter/FakeLslEmitter.js.map +0 -1
- package/build/testDoubles/LslEmitter/SpyLslEmitter.js +0 -23
- package/build/testDoubles/LslEmitter/SpyLslEmitter.js.map +0 -1
- package/build/testDoubles/LslEmitter/ThrowingLslEmitter.js.map +0 -1
- package/build/testDoubles/UsbController/FakeUsbController.d.ts +0 -12
- package/build/testDoubles/UsbController/FakeUsbController.js +0 -25
- package/build/testDoubles/UsbController/FakeUsbController.js.map +0 -1
- package/src/testDoubles/UsbController/FakeUsbController.ts +0 -34
- /package/build/scripts/{runLslEmitter.d.ts → runEventMarkerOutlet.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Lab Streaming Layer (LSL) for synchronized streaming of multi-modal, time-series
|
|
|
8
8
|
- [Installation](#installation)
|
|
9
9
|
- [Usage](#usage)
|
|
10
10
|
- [LslStreamOutlet](#lslstreamoutlet)
|
|
11
|
-
- [
|
|
11
|
+
- [LslEventMarkerOutlet](#lsleventmarkeroutlet)
|
|
12
12
|
- [Test Doubles](#test-doubles)
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
@@ -59,21 +59,21 @@ const outlet = await LslStreamOutlet.Create({
|
|
|
59
59
|
outlet.pushSample([1, 2, 3, 4, 5])
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
###
|
|
62
|
+
### LslEventMarkerOutlet
|
|
63
63
|
|
|
64
64
|
LSL is also often used to push event markers that mark different phases of an experiment or session. The `emitMany` method pushes an event marker, waits for a specified duration, then pushes the next marker. From experience, each event marker should have a `waitAfterMs` of at least 100 ms or so to ensure LSL receives the event markers in the right order.
|
|
65
65
|
|
|
66
66
|
```typescript
|
|
67
|
-
import {
|
|
67
|
+
import { LslEventMarkerOutlet } from '@neurodevs/node-lsl'
|
|
68
68
|
|
|
69
|
-
const
|
|
69
|
+
const outlet = await LslEventMarkerOutlet.Create()
|
|
70
70
|
|
|
71
71
|
const markers = [
|
|
72
72
|
{ name: 'phase-1-begin', waitAfterMs: 5000 },
|
|
73
73
|
{ name: 'phase-1-end', waitAfterMs: 100 },
|
|
74
74
|
]
|
|
75
75
|
|
|
76
|
-
const promise =
|
|
76
|
+
const promise = outlet.emitMany(markers)
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
outlet.interrupt()
|
|
79
79
|
```
|
|
@@ -6,6 +6,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
6
6
|
protected static fakeLiblsl: FakeLiblsl;
|
|
7
7
|
protected static fakeLibndx: FakeLibndx;
|
|
8
8
|
protected static readonly fakeLslInfo: FakeLslInfo;
|
|
9
|
+
protected static readonly deviceUuid: string;
|
|
9
10
|
protected static readonly name_: string;
|
|
10
11
|
protected static readonly type: string;
|
|
11
12
|
protected static readonly sourceId: string;
|
|
@@ -25,7 +26,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
25
26
|
protected static setSpyLslInlet(): void;
|
|
26
27
|
protected static setFakeLslInlet(): void;
|
|
27
28
|
protected static setFakeLslOutlet(): void;
|
|
28
|
-
protected static
|
|
29
|
+
protected static setSpyEventMarkerOutlet(): void;
|
|
29
30
|
protected static setSpyLslWsBridge(): void;
|
|
30
31
|
protected static setFakeWebSocket(): void;
|
|
31
32
|
protected static setFakeWebSocketServer(): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomInt } from 'node:crypto';
|
|
2
2
|
import { FakeLiblsl, FakeLibndx, LiblslAdapter, LibndxAdapter, } from '@neurodevs/ndx-native';
|
|
3
3
|
import AbstractModuleTest from '@neurodevs/node-tdd';
|
|
4
|
-
import
|
|
4
|
+
import SpyEventMarkerOutlet from '../testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js';
|
|
5
5
|
import FakeLslInfo from '../testDoubles/LslInfo/FakeLslInfo.js';
|
|
6
6
|
import SpyLslInfo from '../testDoubles/LslInfo/SpyLslInfo.js';
|
|
7
7
|
import FakeLslInlet from '../testDoubles/LslInlet/FakeLslInlet.js';
|
|
@@ -11,8 +11,8 @@ import SpyLslWsBridge from '../testDoubles/LslWsBridge/SpyLslWsBridge.js';
|
|
|
11
11
|
import FakeWebSocket from '../testDoubles/WebSockets/FakeWebSocket.js';
|
|
12
12
|
import FakeWebSocketServer from '../testDoubles/WebSockets/FakeWebSocketServer.js';
|
|
13
13
|
import LslWebSocketBridge from '../impl/LslWebSocketBridge.js';
|
|
14
|
-
import
|
|
15
|
-
import
|
|
14
|
+
import BleGattController from '../impl/controllers/BleGattController.js';
|
|
15
|
+
import LslEventMarkerOutlet from '../impl/LslEventMarkerOutlet.js';
|
|
16
16
|
import LslStreamInfo from '../impl/LslStreamInfo.js';
|
|
17
17
|
import LslStreamInlet from '../impl/LslStreamInlet.js';
|
|
18
18
|
import LslStreamOutlet from '../impl/LslStreamOutlet.js';
|
|
@@ -20,6 +20,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
20
20
|
static fakeLiblsl;
|
|
21
21
|
static fakeLibndx;
|
|
22
22
|
static fakeLslInfo = new FakeLslInfo();
|
|
23
|
+
static deviceUuid = this.generateId();
|
|
23
24
|
static name_ = this.generateId();
|
|
24
25
|
static type = this.generateId();
|
|
25
26
|
static sourceId = this.generateId();
|
|
@@ -36,6 +37,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
36
37
|
static async beforeEach() {
|
|
37
38
|
await super.beforeEach();
|
|
38
39
|
this.setImmediateTimeouts();
|
|
40
|
+
this.setFakeLiblsl();
|
|
39
41
|
this.setFakeLibndx();
|
|
40
42
|
}
|
|
41
43
|
static setFakeLiblsl() {
|
|
@@ -47,7 +49,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
47
49
|
static callsToSetTimeout = [];
|
|
48
50
|
static setImmediateTimeouts() {
|
|
49
51
|
this.callsToSetTimeout = [];
|
|
50
|
-
|
|
52
|
+
BleGattController.setTimeout = ((callback, delayMs, ...args) => {
|
|
51
53
|
this.callsToSetTimeout.push(delayMs ?? 0);
|
|
52
54
|
return setTimeout(callback, 0, ...args);
|
|
53
55
|
});
|
|
@@ -61,7 +63,7 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
61
63
|
LibndxAdapter.setInstance(this.fakeLibndx);
|
|
62
64
|
FakeLibndx.resetTestDouble();
|
|
63
65
|
FakeLibndx.fakeResult = { status: 200 };
|
|
64
|
-
|
|
66
|
+
BleGattController.ndx = this.fakeLibndx;
|
|
65
67
|
}
|
|
66
68
|
static setSpyLslInfo() {
|
|
67
69
|
LslStreamInfo.Class = SpyLslInfo;
|
|
@@ -82,8 +84,8 @@ export default class AbstractPackageTest extends AbstractModuleTest {
|
|
|
82
84
|
LslStreamOutlet.Class = FakeLslOutlet;
|
|
83
85
|
FakeLslOutlet.resetTestDouble();
|
|
84
86
|
}
|
|
85
|
-
static
|
|
86
|
-
|
|
87
|
+
static setSpyEventMarkerOutlet() {
|
|
88
|
+
LslEventMarkerOutlet.Class = SpyEventMarkerOutlet;
|
|
87
89
|
}
|
|
88
90
|
static setSpyLslWsBridge() {
|
|
89
91
|
LslWebSocketBridge.Class = SpyLslWsBridge;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,OAAO,EACH,UAAU,EACV,UAAU,EAEV,aAAa,EACb,aAAa,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
2
|
-
export default class
|
|
2
|
+
export default class BleGattControllerTest extends AbstractPackageTest {
|
|
3
3
|
private static instance;
|
|
4
4
|
private static readonly uuid;
|
|
5
5
|
private static readonly namePrefix;
|
|
@@ -54,6 +54,6 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
54
54
|
private static setFake400Error;
|
|
55
55
|
private static setFake500Error;
|
|
56
56
|
private static setFake500ErrorWithoutError;
|
|
57
|
-
private static
|
|
58
|
-
private static
|
|
57
|
+
private static BleGattController;
|
|
58
|
+
private static BleGattControllerWithPrefix;
|
|
59
59
|
}
|
|
@@ -7,10 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { randomInt } from 'node:crypto';
|
|
8
8
|
import { test, assert } from '@neurodevs/node-tdd';
|
|
9
9
|
import { FakeLibndx } from '@neurodevs/ndx-native';
|
|
10
|
-
import
|
|
10
|
+
import SpyBleGatt from '../../testDoubles/BleGatt/SpyBleGatt.js';
|
|
11
11
|
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
12
|
-
import
|
|
13
|
-
export default class
|
|
12
|
+
import BleGattController from '../../impl/controllers/BleGattController.js';
|
|
13
|
+
export default class BleGattControllerTest extends AbstractPackageTest {
|
|
14
14
|
static instance;
|
|
15
15
|
static uuid = this.generateId();
|
|
16
16
|
static namePrefix = this.generateId();
|
|
@@ -49,26 +49,26 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
49
49
|
name: this.generateId(),
|
|
50
50
|
};
|
|
51
51
|
static async beforeAll() {
|
|
52
|
-
assert.isEqual(
|
|
52
|
+
assert.isEqual(BleGattController.waitAfterMs, 1000, 'Set incorrect waitAfterMs!');
|
|
53
53
|
}
|
|
54
54
|
static async beforeEach() {
|
|
55
55
|
await super.beforeEach();
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
BleGattController.waitAfterMs = 0;
|
|
57
|
+
BleGattController.Class = SpyBleGatt;
|
|
58
58
|
this.wasConnected = false;
|
|
59
|
-
this.instance = this.
|
|
59
|
+
this.instance = this.BleGattController();
|
|
60
60
|
}
|
|
61
61
|
static async createsInstance() {
|
|
62
62
|
assert.isTruthy(this.instance, 'Failed to create instance!');
|
|
63
63
|
}
|
|
64
64
|
static async connectCallsLibndxCreateBleBackend() {
|
|
65
65
|
await this.connect();
|
|
66
|
-
assert.isEqualDeep(FakeLibndx.
|
|
66
|
+
assert.isEqualDeep(FakeLibndx.callsToCreateBleGattBackend[0], {
|
|
67
67
|
deviceUuid: this.uuid,
|
|
68
|
-
}, 'Did not call
|
|
68
|
+
}, 'Did not call createBleGattBackend!');
|
|
69
69
|
}
|
|
70
70
|
static async discoversUuidWhenDeviceUuidNotProvided() {
|
|
71
|
-
const instance = await this.
|
|
71
|
+
const instance = await this.BleGattControllerWithPrefix();
|
|
72
72
|
await this.connectWithDiscovery(instance);
|
|
73
73
|
const call = FakeLibndx.callsToDiscoverBleUuid[0];
|
|
74
74
|
assert.isEqual(call?.namePrefix, this.namePrefix, 'Did not call discoverBleUuid with deviceNamePrefix!');
|
|
@@ -79,19 +79,19 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
79
79
|
assert.isEqual(FakeLibndx.callsToDiscoverBleUuid.length, 0, 'Should not call discoverBleUuid when deviceUuid is provided!');
|
|
80
80
|
}
|
|
81
81
|
static async usesDiscoveredUuidToCreateBleBackend() {
|
|
82
|
-
const instance = await this.
|
|
82
|
+
const instance = await this.BleGattControllerWithPrefix();
|
|
83
83
|
await this.connectWithDiscovery(instance);
|
|
84
|
-
assert.isEqualDeep(FakeLibndx.
|
|
84
|
+
assert.isEqualDeep(FakeLibndx.callsToCreateBleGattBackend[0], {
|
|
85
85
|
deviceUuid: this.discoveredUuid,
|
|
86
86
|
}, 'Did not create BLE backend with the discovered uuid!');
|
|
87
87
|
}
|
|
88
88
|
static async usesDiscoveredUuidToStartBleBackend() {
|
|
89
|
-
const instance = await this.
|
|
89
|
+
const instance = await this.BleGattControllerWithPrefix();
|
|
90
90
|
await this.connectWithDiscovery(instance);
|
|
91
|
-
assert.isEqual(FakeLibndx.
|
|
91
|
+
assert.isEqual(FakeLibndx.callsToStartBleGattBackend[0]?.deviceUuid, this.discoveredUuid, 'Did not start BLE backend with the discovered uuid!');
|
|
92
92
|
}
|
|
93
93
|
static async exposesDiscoveredUuid() {
|
|
94
|
-
const instance = await this.
|
|
94
|
+
const instance = await this.BleGattControllerWithPrefix();
|
|
95
95
|
await this.connectWithDiscovery(instance);
|
|
96
96
|
assert.isEqual(instance.uuid, this.discoveredUuid, 'Did not expose the discovered uuid!');
|
|
97
97
|
}
|
|
@@ -105,9 +105,9 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
105
105
|
}
|
|
106
106
|
static async connectCallsLibndxStartBleBackend() {
|
|
107
107
|
await this.connect();
|
|
108
|
-
const call = FakeLibndx.
|
|
109
|
-
assert.isEqual(call.deviceUuid, this.uuid, 'Did not call
|
|
110
|
-
assert.isEqual(call.charCallbacks.length, 2, 'Did not call
|
|
108
|
+
const call = FakeLibndx.callsToStartBleGattBackend[0];
|
|
109
|
+
assert.isEqual(call.deviceUuid, this.uuid, 'Did not call startBleGattBackend with correct deviceUuid!');
|
|
110
|
+
assert.isEqual(call.charCallbacks.length, 2, 'Did not call startBleGattBackend with charCallbacks!');
|
|
111
111
|
let i = 0;
|
|
112
112
|
for (const charCallback of call.charCallbacks) {
|
|
113
113
|
assert.isEqual(charCallback.charUuid, this.charCallbacks[i].charUuid, 'Incorrect charUuid!');
|
|
@@ -118,13 +118,13 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
118
118
|
}
|
|
119
119
|
static async startBleBackendThrowsOn400() {
|
|
120
120
|
//@ts-ignore
|
|
121
|
-
this.instance.
|
|
121
|
+
this.instance.createBleGattBackend = () => { };
|
|
122
122
|
this.setFake400Error();
|
|
123
123
|
await assert.doesThrowAsync(async () => await this.instance.connect(), this.fake400Error, 'Did not throw error!');
|
|
124
124
|
}
|
|
125
125
|
static async startBleBackendThrowsOn500() {
|
|
126
126
|
//@ts-ignore
|
|
127
|
-
this.instance.
|
|
127
|
+
this.instance.createBleGattBackend = () => { };
|
|
128
128
|
this.setFake500Error();
|
|
129
129
|
await assert.doesThrowAsync(async () => await this.instance.connect(), this.fake500Error, 'Did not throw error!');
|
|
130
130
|
}
|
|
@@ -134,17 +134,17 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
134
134
|
}
|
|
135
135
|
static async waitsAfterOnConnectedToDiscoverServices() {
|
|
136
136
|
const waitAfterMs = 20;
|
|
137
|
-
|
|
137
|
+
BleGattController.waitAfterMs = waitAfterMs;
|
|
138
138
|
await this.connect();
|
|
139
139
|
assert.isTruthy(this.callsToSetTimeout.includes(waitAfterMs), 'Did not wait after on connected!');
|
|
140
140
|
}
|
|
141
141
|
static async writeCharacteristicCallsLibndxBinding() {
|
|
142
142
|
await this.writeCharacteristic();
|
|
143
|
-
assert.isEqualDeep(FakeLibndx.
|
|
143
|
+
assert.isEqualDeep(FakeLibndx.callsToWriteBleGattChar[0], {
|
|
144
144
|
deviceUuid: this.uuid,
|
|
145
145
|
charUuid: this.charUuid,
|
|
146
146
|
value: this.charValueToWrite,
|
|
147
|
-
}, 'Did not call
|
|
147
|
+
}, 'Did not call writeBleGattChar as expected!');
|
|
148
148
|
}
|
|
149
149
|
static async writeCharacteristicThrowsOn400() {
|
|
150
150
|
this.setFake400Error();
|
|
@@ -156,10 +156,10 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
156
156
|
}
|
|
157
157
|
static async subscribeCharacteristicsCallsLibndxBinding() {
|
|
158
158
|
await this.subscribeCharacteristics();
|
|
159
|
-
assert.isEqualDeep(FakeLibndx.
|
|
159
|
+
assert.isEqualDeep(FakeLibndx.callsToRegisterBleGattCharCallbacks[0], {
|
|
160
160
|
deviceUuid: this.uuid,
|
|
161
161
|
charCallbacks: this.extraCharCallbacks,
|
|
162
|
-
}, 'Did not call
|
|
162
|
+
}, 'Did not call registerBleGattCharCallbacks as expected!');
|
|
163
163
|
}
|
|
164
164
|
static async subscribeCharacteristicsMergesIntoCharCallbacks() {
|
|
165
165
|
await this.subscribeCharacteristics();
|
|
@@ -171,17 +171,17 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
171
171
|
}
|
|
172
172
|
static async callsSetBleRssiInterval() {
|
|
173
173
|
await this.connect();
|
|
174
|
-
const { deviceUuid, intervalMs } = FakeLibndx.
|
|
174
|
+
const { deviceUuid, intervalMs } = FakeLibndx.callsToStartBleGattRssiPolling[0];
|
|
175
175
|
assert.isEqualDeep({ deviceUuid, intervalMs }, {
|
|
176
176
|
deviceUuid: this.uuid,
|
|
177
177
|
intervalMs: this.rssiIntervalMs,
|
|
178
|
-
}, 'Did not call
|
|
178
|
+
}, 'Did not call startBleGattRssiPolling as expected!');
|
|
179
179
|
}
|
|
180
180
|
static async disconnectCallsLibndxStopBleBackend() {
|
|
181
181
|
await this.disconnect();
|
|
182
|
-
assert.isEqualDeep(FakeLibndx.
|
|
182
|
+
assert.isEqualDeep(FakeLibndx.callsToStopBleGattBackend[0], {
|
|
183
183
|
deviceUuid: this.uuid,
|
|
184
|
-
}, 'Did not call
|
|
184
|
+
}, 'Did not call stopBleGattBackend!');
|
|
185
185
|
}
|
|
186
186
|
static async disconnectThrowsOn400() {
|
|
187
187
|
this.setFake400Error();
|
|
@@ -209,15 +209,15 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
209
209
|
}
|
|
210
210
|
static async connect() {
|
|
211
211
|
const promise = this.instance.connect();
|
|
212
|
-
const startCall = FakeLibndx.
|
|
212
|
+
const startCall = FakeLibndx.callsToStartBleGattBackend[0];
|
|
213
213
|
startCall?.onConnected(this.nativePeripheral);
|
|
214
214
|
await promise;
|
|
215
215
|
}
|
|
216
216
|
static async connectWithDiscovery(instance) {
|
|
217
217
|
const promise = instance.connect();
|
|
218
218
|
FakeLibndx.callsToDiscoverBleUuid[0]?.onDiscovered(this.discoveredUuid);
|
|
219
|
-
await this.waitForCall(() => FakeLibndx.
|
|
220
|
-
FakeLibndx.
|
|
219
|
+
await this.waitForCall(() => FakeLibndx.callsToStartBleGattBackend[0]);
|
|
220
|
+
FakeLibndx.callsToStartBleGattBackend[0]?.onConnected(this.nativePeripheral);
|
|
221
221
|
await promise;
|
|
222
222
|
}
|
|
223
223
|
static async waitForCall(getCall) {
|
|
@@ -259,8 +259,8 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
259
259
|
status: 500,
|
|
260
260
|
};
|
|
261
261
|
}
|
|
262
|
-
static
|
|
263
|
-
return
|
|
262
|
+
static BleGattController(options) {
|
|
263
|
+
return BleGattController.Create({
|
|
264
264
|
deviceUuid: this.uuid,
|
|
265
265
|
charCallbacks: this.charCallbacks,
|
|
266
266
|
onConnected: this.onConnected,
|
|
@@ -268,8 +268,8 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
268
268
|
...options,
|
|
269
269
|
});
|
|
270
270
|
}
|
|
271
|
-
static
|
|
272
|
-
return this.
|
|
271
|
+
static BleGattControllerWithPrefix() {
|
|
272
|
+
return this.BleGattController({
|
|
273
273
|
deviceNamePrefix: this.namePrefix,
|
|
274
274
|
deviceUuid: undefined,
|
|
275
275
|
});
|
|
@@ -277,86 +277,86 @@ export default class BleDeviceControllerTest extends AbstractPackageTest {
|
|
|
277
277
|
}
|
|
278
278
|
__decorate([
|
|
279
279
|
test()
|
|
280
|
-
],
|
|
280
|
+
], BleGattControllerTest, "createsInstance", null);
|
|
281
281
|
__decorate([
|
|
282
282
|
test()
|
|
283
|
-
],
|
|
283
|
+
], BleGattControllerTest, "connectCallsLibndxCreateBleBackend", null);
|
|
284
284
|
__decorate([
|
|
285
285
|
test()
|
|
286
|
-
],
|
|
286
|
+
], BleGattControllerTest, "discoversUuidWhenDeviceUuidNotProvided", null);
|
|
287
287
|
__decorate([
|
|
288
288
|
test()
|
|
289
|
-
],
|
|
289
|
+
], BleGattControllerTest, "doesNotDiscoverUuidWhenDeviceUuidProvided", null);
|
|
290
290
|
__decorate([
|
|
291
291
|
test()
|
|
292
|
-
],
|
|
292
|
+
], BleGattControllerTest, "usesDiscoveredUuidToCreateBleBackend", null);
|
|
293
293
|
__decorate([
|
|
294
294
|
test()
|
|
295
|
-
],
|
|
295
|
+
], BleGattControllerTest, "usesDiscoveredUuidToStartBleBackend", null);
|
|
296
296
|
__decorate([
|
|
297
297
|
test()
|
|
298
|
-
],
|
|
298
|
+
], BleGattControllerTest, "exposesDiscoveredUuid", null);
|
|
299
299
|
__decorate([
|
|
300
300
|
test()
|
|
301
|
-
],
|
|
301
|
+
], BleGattControllerTest, "createBleBackendThrowsOn400", null);
|
|
302
302
|
__decorate([
|
|
303
303
|
test()
|
|
304
|
-
],
|
|
304
|
+
], BleGattControllerTest, "createBleBackendThrowsOn500", null);
|
|
305
305
|
__decorate([
|
|
306
306
|
test()
|
|
307
|
-
],
|
|
307
|
+
], BleGattControllerTest, "connectCallsLibndxStartBleBackend", null);
|
|
308
308
|
__decorate([
|
|
309
309
|
test()
|
|
310
|
-
],
|
|
310
|
+
], BleGattControllerTest, "startBleBackendThrowsOn400", null);
|
|
311
311
|
__decorate([
|
|
312
312
|
test()
|
|
313
|
-
],
|
|
313
|
+
], BleGattControllerTest, "startBleBackendThrowsOn500", null);
|
|
314
314
|
__decorate([
|
|
315
315
|
test()
|
|
316
|
-
],
|
|
316
|
+
], BleGattControllerTest, "connectWaitsForOnConnectedEvent", null);
|
|
317
317
|
__decorate([
|
|
318
318
|
test()
|
|
319
|
-
],
|
|
319
|
+
], BleGattControllerTest, "waitsAfterOnConnectedToDiscoverServices", null);
|
|
320
320
|
__decorate([
|
|
321
321
|
test()
|
|
322
|
-
],
|
|
322
|
+
], BleGattControllerTest, "writeCharacteristicCallsLibndxBinding", null);
|
|
323
323
|
__decorate([
|
|
324
324
|
test()
|
|
325
|
-
],
|
|
325
|
+
], BleGattControllerTest, "writeCharacteristicThrowsOn400", null);
|
|
326
326
|
__decorate([
|
|
327
327
|
test()
|
|
328
|
-
],
|
|
328
|
+
], BleGattControllerTest, "writeCharacteristicThrowsOn500", null);
|
|
329
329
|
__decorate([
|
|
330
330
|
test()
|
|
331
|
-
],
|
|
331
|
+
], BleGattControllerTest, "subscribeCharacteristicsCallsLibndxBinding", null);
|
|
332
332
|
__decorate([
|
|
333
333
|
test()
|
|
334
|
-
],
|
|
334
|
+
], BleGattControllerTest, "subscribeCharacteristicsMergesIntoCharCallbacks", null);
|
|
335
335
|
__decorate([
|
|
336
336
|
test()
|
|
337
|
-
],
|
|
337
|
+
], BleGattControllerTest, "subscribeCharacteristicsThrowsOn400", null);
|
|
338
338
|
__decorate([
|
|
339
339
|
test()
|
|
340
|
-
],
|
|
340
|
+
], BleGattControllerTest, "callsSetBleRssiInterval", null);
|
|
341
341
|
__decorate([
|
|
342
342
|
test()
|
|
343
|
-
],
|
|
343
|
+
], BleGattControllerTest, "disconnectCallsLibndxStopBleBackend", null);
|
|
344
344
|
__decorate([
|
|
345
345
|
test()
|
|
346
|
-
],
|
|
346
|
+
], BleGattControllerTest, "disconnectThrowsOn400", null);
|
|
347
347
|
__decorate([
|
|
348
348
|
test()
|
|
349
|
-
],
|
|
349
|
+
], BleGattControllerTest, "disconnectThrowsOn500", null);
|
|
350
350
|
__decorate([
|
|
351
351
|
test()
|
|
352
|
-
],
|
|
352
|
+
], BleGattControllerTest, "disconnectResetsConnectedFlag", null);
|
|
353
353
|
__decorate([
|
|
354
354
|
test()
|
|
355
|
-
],
|
|
355
|
+
], BleGattControllerTest, "exposesPeriperalName", null);
|
|
356
356
|
__decorate([
|
|
357
357
|
test()
|
|
358
|
-
],
|
|
358
|
+
], BleGattControllerTest, "returnsNAIfNameNotAvailable", null);
|
|
359
359
|
__decorate([
|
|
360
360
|
test()
|
|
361
|
-
],
|
|
362
|
-
//# sourceMappingURL=
|
|
361
|
+
], BleGattControllerTest, "throwsWithUnknownErrorIfNoError", null);
|
|
362
|
+
//# sourceMappingURL=BleGattController.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BleGattController.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/BleGattController.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
2
|
+
export default class BleObserverControllerTest extends AbstractPackageTest {
|
|
3
|
+
private static instance;
|
|
4
|
+
protected static beforeEach(): Promise<void>;
|
|
5
|
+
protected static createsInstance(): Promise<void>;
|
|
6
|
+
protected static startObservingCreatesBleObserverBackend(): Promise<void>;
|
|
7
|
+
protected static startObservingStartsBleObserverBackend(): Promise<void>;
|
|
8
|
+
protected static stopObservingStopsBleObserverBackend(): Promise<void>;
|
|
9
|
+
private static startObserving;
|
|
10
|
+
private static stopObserving;
|
|
11
|
+
private static BleObserverController;
|
|
12
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { test, assert } from '@neurodevs/node-tdd';
|
|
8
|
+
import BleObserverController from '../../impl/controllers/BleObserverController.js';
|
|
9
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
10
|
+
import { FakeLibndx } from '@neurodevs/ndx-native';
|
|
11
|
+
export default class BleObserverControllerTest extends AbstractPackageTest {
|
|
12
|
+
static instance;
|
|
13
|
+
static async beforeEach() {
|
|
14
|
+
await super.beforeEach();
|
|
15
|
+
this.instance = this.BleObserverController();
|
|
16
|
+
}
|
|
17
|
+
static async createsInstance() {
|
|
18
|
+
assert.isTruthy(this.instance, 'Failed to create instance!');
|
|
19
|
+
}
|
|
20
|
+
static async startObservingCreatesBleObserverBackend() {
|
|
21
|
+
await this.startObserving();
|
|
22
|
+
assert.isEqualDeep(FakeLibndx.callsToCreateBleObserver[0], {
|
|
23
|
+
deviceUuid: this.deviceUuid,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
static async startObservingStartsBleObserverBackend() {
|
|
27
|
+
await this.startObserving();
|
|
28
|
+
const { deviceUuid, onAdvertisement } = FakeLibndx.callsToStartBleObserver[0];
|
|
29
|
+
assert.isEqual(deviceUuid, this.deviceUuid, 'Did not pass deviceUuid to startBleObserverBackend!');
|
|
30
|
+
assert.isFunction(onAdvertisement, 'Did not pass onAdvertisement to startBleObserverBackend!');
|
|
31
|
+
}
|
|
32
|
+
static async stopObservingStopsBleObserverBackend() {
|
|
33
|
+
await this.stopObserving();
|
|
34
|
+
assert.isEqualDeep(FakeLibndx.callsToStopBleObserver[0], {
|
|
35
|
+
deviceUuid: this.deviceUuid,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
static async startObserving() {
|
|
39
|
+
await this.instance.startObserving();
|
|
40
|
+
}
|
|
41
|
+
static async stopObserving() {
|
|
42
|
+
await this.instance.stopObserving();
|
|
43
|
+
}
|
|
44
|
+
static BleObserverController() {
|
|
45
|
+
return BleObserverController.Create({
|
|
46
|
+
deviceUuid: this.deviceUuid,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
__decorate([
|
|
51
|
+
test()
|
|
52
|
+
], BleObserverControllerTest, "createsInstance", null);
|
|
53
|
+
__decorate([
|
|
54
|
+
test()
|
|
55
|
+
], BleObserverControllerTest, "startObservingCreatesBleObserverBackend", null);
|
|
56
|
+
__decorate([
|
|
57
|
+
test()
|
|
58
|
+
], BleObserverControllerTest, "startObservingStartsBleObserverBackend", null);
|
|
59
|
+
__decorate([
|
|
60
|
+
test()
|
|
61
|
+
], BleObserverControllerTest, "stopObservingStopsBleObserverBackend", null);
|
|
62
|
+
//# sourceMappingURL=BleObserverController.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BleObserverController.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/BleObserverController.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,qBAEN,MAAM,iDAAiD,CAAA;AACxD,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,OAAO,OAAO,yBAA0B,SAAQ,mBAAmB;IAC9D,MAAM,CAAC,QAAQ,CAAa;IAE1B,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAChD,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,uCAAuC;QAC1D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAE3B,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;YACvD,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC,CAAA;IACN,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sCAAsC;QACzD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAE3B,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GACjC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAA;QAEzC,MAAM,CAAC,OAAO,CACV,UAAU,EACV,IAAI,CAAC,UAAU,EACf,qDAAqD,CACxD,CAAA;QACD,MAAM,CAAC,UAAU,CACb,eAAe,EACf,0DAA0D,CAC7D,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,oCAAoC;QACvD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE;YACrD,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC,CAAA;IACN,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,cAAc;QAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAA;IACxC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,aAAa;QAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;IACvC,CAAC;IAEO,MAAM,CAAC,qBAAqB;QAChC,OAAO,qBAAqB,CAAC,MAAM,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC,CAAA;IACN,CAAC;CACJ;AArD0B;IADtB,IAAI,EAAE;sDAGN;AAGsB;IADtB,IAAI,EAAE;8EAON;AAGsB;IADtB,IAAI,EAAE;6EAgBN;AAGsB;IADtB,IAAI,EAAE;2EAON"}
|
package/build/__tests__/impl/{LslEventMarkerEmitter.test.d.ts → LslEventMarkerOutlet.test.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
2
|
-
export default class
|
|
2
|
+
export default class EventMarkerOutletTest extends AbstractPackageTest {
|
|
3
3
|
private static instance;
|
|
4
4
|
protected static beforeEach(): Promise<void>;
|
|
5
5
|
private static readonly markerName;
|
|
@@ -8,7 +8,7 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
8
8
|
protected static canOverrideDefaultOptions(): Promise<void>;
|
|
9
9
|
protected static emittingSingleMarkerIncrementsHitCountAndWaitTime(): Promise<void>;
|
|
10
10
|
protected static emittingTwoMarkersIncrementsHitCountAndWaitTimeTwice(): Promise<void>;
|
|
11
|
-
protected static
|
|
11
|
+
protected static outletIsInterruptable(bailIdx: number): Promise<void>;
|
|
12
12
|
protected static canStartAgainAfterInterrupting(): Promise<void>;
|
|
13
13
|
protected static doesNotWaitIfInterrupted(): Promise<void>;
|
|
14
14
|
protected static clearsTimeoutOnInterrupt(): Promise<void>;
|
|
@@ -30,5 +30,5 @@ export default class EventMarkerEmitterTest extends AbstractPackageTest {
|
|
|
30
30
|
private static destroy;
|
|
31
31
|
private static get streamOutlet();
|
|
32
32
|
private static setupOutlet;
|
|
33
|
-
private static
|
|
33
|
+
private static LslEventMarkerOutlet;
|
|
34
34
|
}
|