@neurodevs/node-lsl 19.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 +12 -11
- package/build/__tests__/AbstractPackageTest.js +32 -34
- 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} +68 -70
- 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} +45 -46
- 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 +2 -3
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +3 -5
- package/build/__tests__/impl/LslStreamInlet.test.js +13 -47
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamOutlet.test.js +7 -13
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js +9 -11
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/__tests__/impl/UsbDeviceController.test.js.map +1 -1
- package/build/__tests__/impl/WindowedClockRegressor.test.js +1 -1
- package/build/__tests__/impl/WindowedClockRegressor.test.js.map +1 -1
- package/build/assertions.js +1 -1
- package/build/assertions.js.map +1 -1
- package/build/impl/LslEventMarkerOutlet.d.ts +35 -0
- 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/LslStreamInfo.d.ts +7 -7
- package/build/impl/LslStreamInfo.js.map +1 -1
- package/build/impl/LslStreamInlet.d.ts +63 -21
- package/build/impl/LslStreamInlet.js +221 -65
- package/build/impl/LslStreamInlet.js.map +1 -1
- package/build/impl/LslStreamOutlet.d.ts +16 -16
- package/build/impl/LslStreamOutlet.js +32 -36
- package/build/impl/LslStreamOutlet.js.map +1 -1
- package/build/impl/LslWebSocketBridge.d.ts +10 -10
- package/build/impl/LslWebSocketBridge.js.map +1 -1
- package/build/impl/clocks/WindowedClockRegressor.js.map +1 -0
- package/build/impl/controllers/{BleDeviceController.d.ts → BleGattController.d.ts} +10 -10
- package/build/impl/controllers/{BleDeviceController.js → BleGattController.js} +19 -19
- 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 +43 -31
- package/build/index.js +52 -39
- package/build/index.js.map +1 -1
- package/build/scripts/{runLslEventMarkerEmitter.js → runEventMarkerOutlet.js} +4 -3
- package/build/scripts/runEventMarkerOutlet.js.map +1 -0
- package/build/scripts/{runLslStreamOutlet.js → runLslOutlet.js} +1 -1
- package/build/scripts/runLslOutlet.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/ClockRegressor/FakeClockRegressor.d.ts +1 -1
- package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +4 -4
- package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.js → EventMarkerOutlet/FakeEventMarkerOutlet.js} +7 -7
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +10 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +23 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +9 -0
- package/build/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.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/{StreamInfo/FakeStreamInfo.d.ts → LslInfo/FakeLslInfo.d.ts} +4 -4
- package/build/testDoubles/{StreamInfo/FakeStreamInfo.js → LslInfo/FakeLslInfo.js} +7 -7
- package/build/testDoubles/LslInfo/FakeLslInfo.js.map +1 -0
- package/build/testDoubles/LslInfo/SpyLslInfo.d.ts +10 -0
- package/build/testDoubles/{StreamInfo/SpyStreamInfo.js → LslInfo/SpyLslInfo.js} +4 -4
- package/build/testDoubles/LslInfo/SpyLslInfo.js.map +1 -0
- package/build/testDoubles/{StreamInlet/FakeStreamInlet.d.ts → LslInlet/FakeLslInlet.d.ts} +4 -4
- package/build/testDoubles/{StreamInlet/FakeStreamInlet.js → LslInlet/FakeLslInlet.js} +12 -11
- package/build/testDoubles/LslInlet/FakeLslInlet.js.map +1 -0
- package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +4 -0
- package/build/testDoubles/{StreamInlet/SpyStreamInlet.js → LslInlet/SpyLslInlet.js} +2 -2
- package/build/testDoubles/LslInlet/SpyLslInlet.js.map +1 -0
- package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts} +5 -5
- package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.js → LslOutlet/FakeLslOutlet.js} +8 -8
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -0
- package/build/testDoubles/LslWsBridge/FakeLslWsBridge.d.ts +14 -0
- package/build/testDoubles/{WebSocketBridge/FakeWebSocketBridge.js → LslWsBridge/FakeLslWsBridge.js} +14 -14
- package/build/testDoubles/LslWsBridge/FakeLslWsBridge.js.map +1 -0
- package/build/testDoubles/LslWsBridge/SpyLslWsBridge.d.ts +4 -0
- package/build/testDoubles/{WebSocketBridge/SpyLslWebSocketBridge.js → LslWsBridge/SpyLslWsBridge.js} +2 -2
- package/build/testDoubles/LslWsBridge/SpyLslWsBridge.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/build/testDoubles/consts.d.ts +2 -12
- package/build/testDoubles/consts.js +0 -20
- package/build/testDoubles/consts.js.map +1 -1
- package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
- package/package.json +5 -4
- package/src/__tests__/AbstractPackageTest.ts +35 -42
- package/src/__tests__/impl/{BleDeviceController.test.ts → BleGattController.test.ts} +45 -47
- package/src/__tests__/impl/BleObserverController.test.ts +72 -0
- package/src/__tests__/impl/{LslEventMarkerEmitter.test.ts → LslEventMarkerOutlet.test.ts} +33 -37
- package/src/__tests__/impl/LslJsonOutlet.test.ts +135 -0
- package/src/__tests__/impl/LslStreamInfo.test.ts +8 -9
- package/src/__tests__/impl/LslStreamInlet.test.ts +21 -79
- package/src/__tests__/impl/LslStreamOutlet.test.ts +17 -25
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +15 -19
- package/src/__tests__/impl/UsbDeviceController.test.ts +2 -2
- package/src/__tests__/impl/WindowedClockRegressor.test.ts +1 -1
- package/src/assertions.ts +1 -2
- package/src/impl/{LslEventMarkerEmitter.ts → LslEventMarkerOutlet.ts} +17 -17
- package/src/impl/LslJsonOutlet.ts +87 -0
- package/src/impl/LslStreamInfo.ts +7 -9
- package/src/impl/LslStreamInlet.ts +305 -81
- package/src/impl/LslStreamOutlet.ts +62 -59
- package/src/impl/LslWebSocketBridge.ts +15 -18
- 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 +64 -44
- package/src/scripts/{runLslEventMarkerEmitter.ts → runEventMarkerOutlet.ts} +3 -2
- 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/ClockRegressor/FakeClockRegressor.ts +1 -1
- package/src/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +11 -11
- package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +31 -0
- package/src/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +5 -5
- package/src/testDoubles/JsonOutlet/FakeJsonOutlet.ts +25 -0
- package/src/testDoubles/{StreamInfo/FakeStreamInfo.ts → LslInfo/FakeLslInfo.ts} +9 -9
- package/src/testDoubles/{StreamInfo/SpyStreamInfo.ts → LslInfo/SpyLslInfo.ts} +5 -5
- package/src/testDoubles/{StreamInlet/FakeStreamInlet.ts → LslInlet/FakeLslInlet.ts} +15 -14
- package/src/testDoubles/LslInlet/SpyLslInlet.ts +10 -0
- package/src/testDoubles/{StreamOutlet/FakeStreamOutlet.ts → LslOutlet/FakeLslOutlet.ts} +11 -14
- package/src/testDoubles/{WebSocketBridge/FakeWebSocketBridge.ts → LslWsBridge/FakeLslWsBridge.ts} +19 -19
- package/src/testDoubles/LslWsBridge/SpyLslWsBridge.ts +9 -0
- package/src/testDoubles/UsbDevice/FakeUsbDevice.ts +34 -0
- package/src/testDoubles/consts.ts +3 -23
- package/src/testDoubles/generateRandomOutletOptions.ts +2 -2
- package/build/__tests__/impl/BleDeviceController.test.js.map +0 -1
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +0 -1
- package/build/consts.d.ts +0 -11
- package/build/consts.js +0 -21
- package/build/consts.js.map +0 -1
- package/build/impl/LslEventMarkerEmitter.d.ts +0 -35
- package/build/impl/LslEventMarkerEmitter.js.map +0 -1
- package/build/impl/WindowedClockRegressor.js.map +0 -1
- package/build/impl/controllers/BleDeviceController.js.map +0 -1
- package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +0 -22
- package/build/impl/workers/inlet/LslStreamInlet.worker.js +0 -42
- package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +0 -1
- package/build/impl/workers/inlet/StreamInletWorker.d.ts +0 -73
- package/build/impl/workers/inlet/StreamInletWorker.js +0 -253
- package/build/impl/workers/inlet/StreamInletWorker.js.map +0 -1
- package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +0 -32
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js +0 -82
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +0 -1
- package/build/scripts/discoverMuse.js +0 -40
- package/build/scripts/discoverMuse.js.map +0 -1
- package/build/scripts/runLslEventMarkerEmitter.js.map +0 -1
- package/build/scripts/runLslStreamOutlet.d.ts +0 -1
- package/build/scripts/runLslStreamOutlet.js.map +0 -1
- package/build/scripts/testDestroyOutlet.d.ts +0 -1
- package/build/scripts/testDestroyOutlet.js +0 -4
- package/build/scripts/testDestroyOutlet.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/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +0 -1
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +0 -10
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +0 -23
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +0 -1
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +0 -9
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +0 -1
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +0 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +0 -10
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +0 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +0 -1
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +0 -4
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +0 -1
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.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/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +0 -14
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +0 -1
- package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.d.ts +0 -4
- package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.js.map +0 -1
- package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +0 -27
- package/build/testDoubles/WorkerThreads/FakeWorker.js +0 -67
- package/build/testDoubles/WorkerThreads/FakeWorker.js.map +0 -1
- package/src/consts.ts +0 -21
- package/src/impl/workers/inlet/LslStreamInlet.worker.ts +0 -74
- package/src/impl/workers/inlet/StreamInletWorker.ts +0 -348
- package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +0 -144
- package/src/scripts/discoverMuse.ts +0 -50
- package/src/scripts/testDestroyOutlet.ts +0 -5
- package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +0 -31
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +0 -10
- package/src/testDoubles/UsbController/FakeUsbController.ts +0 -34
- package/src/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.ts +0 -9
- package/src/testDoubles/WorkerThreads/FakeWorker.ts +0 -99
- /package/build/impl/{WindowedClockRegressor.d.ts → clocks/WindowedClockRegressor.d.ts} +0 -0
- /package/build/impl/{WindowedClockRegressor.js → clocks/WindowedClockRegressor.js} +0 -0
- /package/build/scripts/{discoverMuse.d.ts → runEventMarkerOutlet.d.ts} +0 -0
- /package/build/scripts/{runLslEventMarkerEmitter.d.ts → runLslOutlet.d.ts} +0 -0
- /package/src/impl/{WindowedClockRegressor.ts → clocks/WindowedClockRegressor.ts} +0 -0
- /package/src/scripts/{runLslStreamOutlet.ts → runLslOutlet.ts} +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LiblslAdapter, handleLslError, } from '@neurodevs/ndx-native';
|
|
2
2
|
import { assertValidChannelCount, assertValidChannelFormat, assertValidChunkSize, assertValidMaxBufferedMs, assertValidSampleRateHz, } from '../assertions.js';
|
|
3
|
+
import LslStreamInfo from './LslStreamInfo.js';
|
|
3
4
|
export default class LslStreamOutlet {
|
|
4
5
|
static Class;
|
|
5
|
-
static Worker = Worker;
|
|
6
6
|
static setTimeout = setTimeout;
|
|
7
|
+
static lsl = LiblslAdapter.getInstance();
|
|
8
|
+
static handleLslError = handleLslError;
|
|
7
9
|
name;
|
|
8
10
|
type;
|
|
9
11
|
sourceId;
|
|
@@ -15,7 +17,9 @@ export default class LslStreamOutlet {
|
|
|
15
17
|
maxBufferedMs = 360 * 1000;
|
|
16
18
|
manufacturer = 'N/A';
|
|
17
19
|
units = 'N/A';
|
|
18
|
-
|
|
20
|
+
info;
|
|
21
|
+
handle;
|
|
22
|
+
pushSampleToLsl;
|
|
19
23
|
constructor(options) {
|
|
20
24
|
const { name, type, sourceId, channelNames, channelFormat, sampleRateHz, chunkSize, maxBufferedMs, manufacturer, units, } = options;
|
|
21
25
|
this.name = name;
|
|
@@ -30,7 +34,6 @@ export default class LslStreamOutlet {
|
|
|
30
34
|
this.manufacturer = manufacturer ?? this.manufacturer;
|
|
31
35
|
this.units = units ?? this.units;
|
|
32
36
|
this.validateOptions();
|
|
33
|
-
this.createWorkerThread();
|
|
34
37
|
this.createStreamOutlet();
|
|
35
38
|
}
|
|
36
39
|
static async Create(options) {
|
|
@@ -58,27 +61,25 @@ export default class LslStreamOutlet {
|
|
|
58
61
|
throwUnsupportedChannelFormat() {
|
|
59
62
|
throw new Error(`This method currently does not support the ${this.channelFormat} type! Please implement it.`);
|
|
60
63
|
}
|
|
61
|
-
createWorkerThread() {
|
|
62
|
-
this.worker = new this.Worker(new URL('./workers/outlet/LslStreamOutlet.worker.js', import.meta.url));
|
|
63
|
-
}
|
|
64
64
|
createStreamOutlet() {
|
|
65
|
-
this.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
maxBufferedMs: this.maxBufferedMs,
|
|
79
|
-
pushMethod: this.pushMethod,
|
|
80
|
-
},
|
|
65
|
+
this.info = LslStreamInfo.Create({
|
|
66
|
+
name: this.name,
|
|
67
|
+
type: this.type,
|
|
68
|
+
sourceId: this.sourceId,
|
|
69
|
+
channelNames: this.channelNames,
|
|
70
|
+
channelFormat: this.channelFormat,
|
|
71
|
+
sampleRateHz: this.sampleRateHz,
|
|
72
|
+
units: this.units,
|
|
73
|
+
});
|
|
74
|
+
this.handle = this.lsl.createOutlet({
|
|
75
|
+
infoHandle: this.info.infoHandle,
|
|
76
|
+
chunkSize: this.chunkSize,
|
|
77
|
+
maxBufferedMs: this.maxBufferedMs,
|
|
81
78
|
});
|
|
79
|
+
this.pushSampleToLsl = this.lsl[this.pushMethod].bind(this.lsl);
|
|
80
|
+
}
|
|
81
|
+
get lsl() {
|
|
82
|
+
return LslStreamOutlet.lsl;
|
|
82
83
|
}
|
|
83
84
|
get pushMethod() {
|
|
84
85
|
return this.methodMap[this.channelFormat];
|
|
@@ -87,22 +88,17 @@ export default class LslStreamOutlet {
|
|
|
87
88
|
float32: 'pushSampleFloatTimestamp',
|
|
88
89
|
string: 'pushSampleStringTimestamp',
|
|
89
90
|
};
|
|
90
|
-
pushSample(sample, timestampSec) {
|
|
91
|
-
this.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
timestampSec,
|
|
96
|
-
},
|
|
91
|
+
pushSample(sample, timestampSec = this.lsl.localClock()) {
|
|
92
|
+
const errorCode = this.pushSampleToLsl({
|
|
93
|
+
outletHandle: this.handle,
|
|
94
|
+
sample,
|
|
95
|
+
timestampSec,
|
|
97
96
|
});
|
|
97
|
+
LslStreamOutlet.handleLslError(errorCode);
|
|
98
98
|
}
|
|
99
99
|
destroy() {
|
|
100
|
-
this.
|
|
101
|
-
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
get Worker() {
|
|
105
|
-
return LslStreamOutlet.Worker;
|
|
100
|
+
this.lsl.destroyOutlet({ outletHandle: this.handle });
|
|
101
|
+
this.lsl.destroyStreamInfo({ infoHandle: this.info.infoHandle });
|
|
106
102
|
}
|
|
107
103
|
static async waitForSetup(waitAfterConstructionMs) {
|
|
108
104
|
await new Promise((resolve) => LslStreamOutlet.setTimeout(resolve, waitAfterConstructionMs));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamOutlet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import WebSocket, { WebSocketServer } from 'ws';
|
|
2
|
-
import {
|
|
3
|
-
export default class LslWebSocketBridge implements
|
|
4
|
-
static Class?:
|
|
2
|
+
import { LslInlet } from './LslStreamInlet.js';
|
|
3
|
+
export default class LslWebSocketBridge implements LslWsBridge {
|
|
4
|
+
static Class?: LslWsBridgeConstructor;
|
|
5
5
|
static WS: typeof WebSocket;
|
|
6
6
|
static WSS: typeof import("ws").Server;
|
|
7
7
|
private inlet;
|
|
8
8
|
private localServer?;
|
|
9
9
|
private remoteSockets?;
|
|
10
10
|
private isDestroyed;
|
|
11
|
-
protected constructor(options:
|
|
12
|
-
static Create(options:
|
|
11
|
+
protected constructor(options: LslWsBridgeConstructorOptions);
|
|
12
|
+
static Create(options: LslWsBridgeOptions): Promise<LslWsBridge>;
|
|
13
13
|
private throwIfNoLocalServerOrRemoteSockets;
|
|
14
14
|
private readonly insufficientOptionsError;
|
|
15
15
|
activate(): Promise<void>;
|
|
@@ -31,20 +31,20 @@ export default class LslWebSocketBridge implements WebSocketBridge {
|
|
|
31
31
|
private static WebSocketServer;
|
|
32
32
|
private static LslStreamInlet;
|
|
33
33
|
}
|
|
34
|
-
export interface
|
|
34
|
+
export interface LslWsBridge {
|
|
35
35
|
activate(): Promise<void>;
|
|
36
36
|
deactivate(): void;
|
|
37
37
|
destroy(): void;
|
|
38
38
|
}
|
|
39
|
-
export type
|
|
40
|
-
export interface
|
|
39
|
+
export type LslWsBridgeConstructor = new (options: LslWsBridgeConstructorOptions) => LslWsBridge;
|
|
40
|
+
export interface LslWsBridgeOptions {
|
|
41
41
|
sourceId: string;
|
|
42
42
|
chunkSize: number;
|
|
43
43
|
listenPort?: number;
|
|
44
44
|
connectUrls?: string | string[];
|
|
45
45
|
}
|
|
46
|
-
export interface
|
|
47
|
-
inlet:
|
|
46
|
+
export interface LslWsBridgeConstructorOptions extends LslWsBridgeOptions {
|
|
47
|
+
inlet: LslInlet;
|
|
48
48
|
localServer?: WebSocketServer;
|
|
49
49
|
remoteSockets?: WebSocket[];
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AAE/C,OAAO,
|
|
1
|
+
{"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindowedClockRegressor.js","sourceRoot":"","sources":["../../../src/impl/clocks/WindowedClockRegressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Libndx, NativePeripheral } from '@neurodevs/ndx-native';
|
|
2
|
-
export default class
|
|
3
|
-
static Class?:
|
|
2
|
+
export default class BleGattController implements BleGatt {
|
|
3
|
+
static Class?: BleGattConstructor;
|
|
4
4
|
static setTimeout: typeof setTimeout;
|
|
5
5
|
static waitAfterMs: number;
|
|
6
6
|
private static _ndx?;
|
|
@@ -14,15 +14,15 @@ export default class BleDeviceController implements BleController {
|
|
|
14
14
|
private deviceNamePrefix?;
|
|
15
15
|
private deviceName?;
|
|
16
16
|
private onConnected?;
|
|
17
|
-
protected constructor(options:
|
|
18
|
-
static Create(options:
|
|
17
|
+
protected constructor(options: BleGattOptions);
|
|
18
|
+
static Create(options: BleGattOptions): BleGattController | BleGatt;
|
|
19
19
|
connect(): Promise<void>;
|
|
20
20
|
private discoverUuid;
|
|
21
21
|
private waitForDiscoveredUuid;
|
|
22
|
-
private
|
|
22
|
+
private createBleGattBackend;
|
|
23
23
|
private throwIfError;
|
|
24
|
-
private
|
|
25
|
-
private
|
|
24
|
+
private startBleGattRssiPolling;
|
|
25
|
+
private startBleGattBackend;
|
|
26
26
|
private waitForOnConnected;
|
|
27
27
|
private waitToDiscoverServices;
|
|
28
28
|
writeCharacteristic(charUuid: CharacteristicUuid, value: string): Promise<void>;
|
|
@@ -32,7 +32,7 @@ export default class BleDeviceController implements BleController {
|
|
|
32
32
|
get name(): string;
|
|
33
33
|
private get ndx();
|
|
34
34
|
}
|
|
35
|
-
export interface
|
|
35
|
+
export interface BleGatt {
|
|
36
36
|
uuid: string;
|
|
37
37
|
name: string;
|
|
38
38
|
connect(): Promise<void>;
|
|
@@ -40,7 +40,7 @@ export interface BleController {
|
|
|
40
40
|
writeCharacteristic(charUuid: CharacteristicUuid, value: string): Promise<void>;
|
|
41
41
|
disconnect(): Promise<void>;
|
|
42
42
|
}
|
|
43
|
-
export type
|
|
43
|
+
export type BleGattOptions = {
|
|
44
44
|
charCallbacks: CharacteristicCallbacks;
|
|
45
45
|
onConnected?: (peripheral: NativePeripheral) => void;
|
|
46
46
|
rssiIntervalMs?: number;
|
|
@@ -51,7 +51,7 @@ export type BleControllerOptions = {
|
|
|
51
51
|
deviceUuid?: string;
|
|
52
52
|
deviceNamePrefix: string;
|
|
53
53
|
});
|
|
54
|
-
export type
|
|
54
|
+
export type BleGattConstructor = new (options: BleGattOptions) => BleGatt;
|
|
55
55
|
export type CharacteristicCallbacks = {
|
|
56
56
|
charUuid: string;
|
|
57
57
|
charName?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LibndxAdapter } from '@neurodevs/ndx-native';
|
|
2
|
-
export default class
|
|
2
|
+
export default class BleGattController {
|
|
3
3
|
static Class;
|
|
4
4
|
static setTimeout = setTimeout;
|
|
5
5
|
static waitAfterMs = 1000;
|
|
@@ -29,18 +29,18 @@ export default class BleDeviceController {
|
|
|
29
29
|
this.onConnected = onConnected;
|
|
30
30
|
this.rssiIntervalMs = rssiIntervalMs;
|
|
31
31
|
}
|
|
32
|
-
static
|
|
32
|
+
static Create(options) {
|
|
33
33
|
return new (this.Class ?? this)(options);
|
|
34
34
|
}
|
|
35
35
|
async connect() {
|
|
36
36
|
if (!this.deviceUuid) {
|
|
37
37
|
await this.discoverUuid();
|
|
38
38
|
}
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
39
|
+
this.createBleGattBackend();
|
|
40
|
+
this.startBleGattBackend();
|
|
41
41
|
await this.waitForOnConnected();
|
|
42
42
|
await this.waitToDiscoverServices();
|
|
43
|
-
this.
|
|
43
|
+
this.startBleGattRssiPolling();
|
|
44
44
|
}
|
|
45
45
|
async discoverUuid() {
|
|
46
46
|
const { status, error } = this.ndx.discoverBleUuid({
|
|
@@ -59,14 +59,14 @@ export default class BleDeviceController {
|
|
|
59
59
|
resolve();
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
|
-
|
|
62
|
+
BleGattController.setTimeout(checkDiscovered, 100);
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
checkDiscovered();
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
const { status, error } = this.ndx.
|
|
68
|
+
createBleGattBackend() {
|
|
69
|
+
const { status, error } = this.ndx.createBleGattBackend({
|
|
70
70
|
deviceUuid: this.uuid,
|
|
71
71
|
});
|
|
72
72
|
this.throwIfError(status, error);
|
|
@@ -76,9 +76,9 @@ export default class BleDeviceController {
|
|
|
76
76
|
throw new Error(`${status} error: ${error ?? 'Unknown error'}`);
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
startBleGattRssiPolling() {
|
|
80
80
|
if (this.rssiIntervalMs) {
|
|
81
|
-
this.ndx.
|
|
81
|
+
this.ndx.startBleGattRssiPolling({
|
|
82
82
|
deviceUuid: this.uuid,
|
|
83
83
|
intervalMs: this.rssiIntervalMs,
|
|
84
84
|
onRssi: (rssi) => {
|
|
@@ -87,8 +87,8 @@ export default class BleDeviceController {
|
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
-
|
|
91
|
-
const { status, error } = this.ndx.
|
|
90
|
+
startBleGattBackend() {
|
|
91
|
+
const { status, error } = this.ndx.startBleGattBackend({
|
|
92
92
|
deviceUuid: this.uuid,
|
|
93
93
|
onConnected: (peripheral) => {
|
|
94
94
|
const { name } = peripheral;
|
|
@@ -108,17 +108,17 @@ export default class BleDeviceController {
|
|
|
108
108
|
resolve();
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
|
-
|
|
111
|
+
BleGattController.setTimeout(checkConnected, 100);
|
|
112
112
|
}
|
|
113
113
|
};
|
|
114
114
|
checkConnected();
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
async waitToDiscoverServices() {
|
|
118
|
-
await new Promise((resolve) =>
|
|
118
|
+
await new Promise((resolve) => BleGattController.setTimeout(resolve, BleGattController.waitAfterMs));
|
|
119
119
|
}
|
|
120
120
|
async writeCharacteristic(charUuid, value) {
|
|
121
|
-
const { status, error } = this.ndx.
|
|
121
|
+
const { status, error } = this.ndx.writeBleGattChar({
|
|
122
122
|
deviceUuid: this.uuid,
|
|
123
123
|
charUuid,
|
|
124
124
|
value,
|
|
@@ -126,7 +126,7 @@ export default class BleDeviceController {
|
|
|
126
126
|
this.throwIfError(status, error);
|
|
127
127
|
}
|
|
128
128
|
async subscribeCharacteristics(charCallbacks) {
|
|
129
|
-
const { status, error } = this.ndx.
|
|
129
|
+
const { status, error } = this.ndx.registerBleGattCharCallbacks({
|
|
130
130
|
deviceUuid: this.uuid,
|
|
131
131
|
charCallbacks,
|
|
132
132
|
});
|
|
@@ -134,7 +134,7 @@ export default class BleDeviceController {
|
|
|
134
134
|
this.charCallbacks = [...this.charCallbacks, ...charCallbacks];
|
|
135
135
|
}
|
|
136
136
|
async disconnect() {
|
|
137
|
-
const { status, error } = this.ndx.
|
|
137
|
+
const { status, error } = this.ndx.stopBleGattBackend({
|
|
138
138
|
deviceUuid: this.uuid,
|
|
139
139
|
});
|
|
140
140
|
this.throwIfError(status, error);
|
|
@@ -147,7 +147,7 @@ export default class BleDeviceController {
|
|
|
147
147
|
return this.deviceName ?? 'N/A';
|
|
148
148
|
}
|
|
149
149
|
get ndx() {
|
|
150
|
-
return
|
|
150
|
+
return BleGattController.ndx;
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
|
-
//# sourceMappingURL=
|
|
153
|
+
//# sourceMappingURL=BleGattController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BleGattController.js","sourceRoot":"","sources":["../../../src/impl/controllers/BleGattController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export default class BleObserverController implements BleObserver {
|
|
2
|
+
static Class?: BleObserverConstructor;
|
|
3
|
+
private readonly deviceUuid;
|
|
4
|
+
private readonly ndx;
|
|
5
|
+
protected constructor(options: BleObserverOptions);
|
|
6
|
+
static Create(options: BleObserverOptions): BleObserver;
|
|
7
|
+
startObserving(): Promise<void>;
|
|
8
|
+
private createBleObserverBackend;
|
|
9
|
+
private startBleObserverBackend;
|
|
10
|
+
stopObserving(): Promise<void>;
|
|
11
|
+
private stopBleObserverBackend;
|
|
12
|
+
}
|
|
13
|
+
export interface BleObserver {
|
|
14
|
+
startObserving(): Promise<void>;
|
|
15
|
+
stopObserving(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export type BleObserverConstructor = new (options: BleObserverOptions) => BleObserver;
|
|
18
|
+
export type BleObserverOptions = {
|
|
19
|
+
deviceUuid: string;
|
|
20
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { LibndxAdapter } from '@neurodevs/ndx-native';
|
|
2
|
+
export default class BleObserverController {
|
|
3
|
+
static Class;
|
|
4
|
+
deviceUuid;
|
|
5
|
+
ndx = LibndxAdapter.getInstance();
|
|
6
|
+
constructor(options) {
|
|
7
|
+
const { deviceUuid } = options;
|
|
8
|
+
this.deviceUuid = deviceUuid ?? '';
|
|
9
|
+
}
|
|
10
|
+
static Create(options) {
|
|
11
|
+
return new (this.Class ?? this)(options);
|
|
12
|
+
}
|
|
13
|
+
async startObserving() {
|
|
14
|
+
this.createBleObserverBackend();
|
|
15
|
+
this.startBleObserverBackend();
|
|
16
|
+
}
|
|
17
|
+
createBleObserverBackend() {
|
|
18
|
+
this.ndx.createBleObserverBackend({
|
|
19
|
+
deviceUuid: this.deviceUuid,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
startBleObserverBackend() {
|
|
23
|
+
this.ndx.startBleObserverBackend({
|
|
24
|
+
deviceUuid: this.deviceUuid,
|
|
25
|
+
onAdvertisement: (_data, _length, _timestampSec) => { },
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async stopObserving() {
|
|
29
|
+
this.stopBleObserverBackend();
|
|
30
|
+
}
|
|
31
|
+
stopBleObserverBackend() {
|
|
32
|
+
this.ndx.stopBleObserverBackend({
|
|
33
|
+
deviceUuid: this.deviceUuid,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=BleObserverController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BleObserverController.js","sourceRoot":"","sources":["../../../src/impl/controllers/BleObserverController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAC/B,MAAM,CAAC,KAAK,CAAyB;IAE3B,UAAU,CAAQ;IAClB,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IAElD,YAAsB,OAA2B;QAC7C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;QAE9B,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAA;IACtC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAA2B;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAEM,KAAK,CAAC,cAAc;QACvB,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,uBAAuB,EAAE,CAAA;IAClC,CAAC;IAEO,wBAAwB;QAC5B,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC,CAAA;IACN,CAAC;IAEO,uBAAuB;QAC3B,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,eAAe,EAAE,CACb,KAAa,EACb,OAAe,EACf,aAAqB,EACvB,EAAE,GAAE,CAAC;SACV,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,aAAa;QACtB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC;YAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC9B,CAAC,CAAA;IACN,CAAC;CACJ"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export default class UsbDeviceController implements
|
|
2
|
-
static Class?:
|
|
1
|
+
export default class UsbDeviceController implements UsbDevice {
|
|
2
|
+
static Class?: UsbDeviceConstructor;
|
|
3
3
|
private onData;
|
|
4
4
|
private serialNumber;
|
|
5
5
|
private ndx;
|
|
6
|
-
protected constructor(options:
|
|
7
|
-
static Create(options:
|
|
6
|
+
protected constructor(options: UsbDeviceOptions);
|
|
7
|
+
static Create(options: UsbDeviceOptions): UsbDevice;
|
|
8
8
|
connect(): Promise<void>;
|
|
9
|
-
private get
|
|
10
|
-
private get
|
|
9
|
+
private get usbDeviceOptions();
|
|
10
|
+
private get startUsbDeviceOptions();
|
|
11
11
|
writeUsb(value: string): Promise<void>;
|
|
12
12
|
disconnect(): Promise<void>;
|
|
13
13
|
}
|
|
14
|
-
export interface
|
|
14
|
+
export interface UsbDevice {
|
|
15
15
|
connect(): Promise<void>;
|
|
16
16
|
writeUsb(value: string): Promise<void>;
|
|
17
17
|
disconnect(): Promise<void>;
|
|
18
18
|
}
|
|
19
|
-
export interface
|
|
19
|
+
export interface UsbDeviceOptions {
|
|
20
20
|
onData: (data: Buffer, length: number, timestampSec: number) => void;
|
|
21
21
|
serialNumber?: string;
|
|
22
22
|
}
|
|
23
|
-
export type
|
|
23
|
+
export type UsbDeviceConstructor = new (options?: UsbDeviceOptions) => UsbDevice;
|
|
@@ -13,28 +13,28 @@ export default class UsbDeviceController {
|
|
|
13
13
|
return new (this.Class ?? this)(options);
|
|
14
14
|
}
|
|
15
15
|
async connect() {
|
|
16
|
-
this.ndx.createUsbBackend(this.
|
|
17
|
-
this.ndx.startUsbBackend(this.
|
|
16
|
+
this.ndx.createUsbBackend(this.usbDeviceOptions);
|
|
17
|
+
this.ndx.startUsbBackend(this.startUsbDeviceOptions);
|
|
18
18
|
}
|
|
19
|
-
get
|
|
19
|
+
get usbDeviceOptions() {
|
|
20
20
|
return {
|
|
21
21
|
serialNumber: this.serialNumber,
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
get
|
|
24
|
+
get startUsbDeviceOptions() {
|
|
25
25
|
return {
|
|
26
|
-
...this.
|
|
26
|
+
...this.usbDeviceOptions,
|
|
27
27
|
onData: this.onData,
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
async writeUsb(value) {
|
|
31
31
|
this.ndx.writeUsbBackend({
|
|
32
|
-
...this.
|
|
32
|
+
...this.usbDeviceOptions,
|
|
33
33
|
value,
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
async disconnect() {
|
|
37
|
-
this.ndx.stopUsbBackend(this.
|
|
37
|
+
this.ndx.stopUsbBackend(this.usbDeviceOptions);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
//# sourceMappingURL=UsbDeviceController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsbDeviceController.js","sourceRoot":"","sources":["../../../src/impl/controllers/UsbDeviceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"UsbDeviceController.js","sourceRoot":"","sources":["../../../src/impl/controllers/UsbDeviceController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,KAAK,CAAuB;IAElC,MAAM,CAA8D;IACpE,YAAY,CAAQ;IAEpB,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IAEzC,YAAsB,OAAyB;QAC3C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAE9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAE,CAAA;IAC1C,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAyB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAEM,KAAK,CAAC,OAAO;QAChB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAChD,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACxD,CAAC;IAED,IAAY,gBAAgB;QACxB,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAA;IACL,CAAC;IAED,IAAY,qBAAqB;QAC7B,OAAO;YACH,GAAG,IAAI,CAAC,gBAAgB;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC/B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;YACrB,GAAG,IAAI,CAAC,gBAAgB;YACxB,KAAK;SACR,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAClD,CAAC;CACJ"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,44 +1,56 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export * from './impl/
|
|
1
|
+
export { default as BleObserverController } from './impl/controllers/BleObserverController.js';
|
|
2
|
+
export * from './impl/controllers/BleObserverController.js';
|
|
3
|
+
export { default as FakeBleObserver } from './testDoubles/BleObserver/FakeBleObserver.js';
|
|
4
|
+
export * from './testDoubles/BleObserver/FakeBleObserver.js';
|
|
5
|
+
export { default as WindowedClockRegressor } from './impl/clocks/WindowedClockRegressor.js';
|
|
6
|
+
export * from './impl/clocks/WindowedClockRegressor.js';
|
|
3
7
|
export { default as FakeClockRegressor } from './testDoubles/ClockRegressor/FakeClockRegressor.js';
|
|
4
8
|
export * from './testDoubles/ClockRegressor/FakeClockRegressor.js';
|
|
5
|
-
export { default as
|
|
6
|
-
export * from './impl/controllers/
|
|
7
|
-
export { default as
|
|
8
|
-
export * from './testDoubles/
|
|
9
|
-
export { default as
|
|
10
|
-
export * from './testDoubles/
|
|
11
|
-
export { default as
|
|
12
|
-
export * from './impl/
|
|
13
|
-
export { default as
|
|
14
|
-
export * from './testDoubles/
|
|
15
|
-
export { default as
|
|
16
|
-
export * from './testDoubles/
|
|
17
|
-
export { default as
|
|
18
|
-
export * from './testDoubles/
|
|
9
|
+
export { default as BleGattController } from './impl/controllers/BleGattController.js';
|
|
10
|
+
export * from './impl/controllers/BleGattController.js';
|
|
11
|
+
export { default as SpyBleGatt } from './testDoubles/BleGatt/SpyBleGatt.js';
|
|
12
|
+
export * from './testDoubles/BleGatt/SpyBleGatt.js';
|
|
13
|
+
export { default as FakeBleGatt } from './testDoubles/BleGatt/FakeBleGatt.js';
|
|
14
|
+
export * from './testDoubles/BleGatt/FakeBleGatt.js';
|
|
15
|
+
export { default as LslEventMarkerOutlet } from './impl/LslEventMarkerOutlet.js';
|
|
16
|
+
export * from './impl/LslEventMarkerOutlet.js';
|
|
17
|
+
export { default as SpyEventMarkerOutlet } from './testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js';
|
|
18
|
+
export * from './testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js';
|
|
19
|
+
export { default as FakeEventMarkerOutlet } from './testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js';
|
|
20
|
+
export * from './testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js';
|
|
21
|
+
export { default as ThrowingEventMarkerOutlet } from './testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js';
|
|
22
|
+
export * from './testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js';
|
|
23
|
+
export { default as LslJsonOutlet } from './impl/LslJsonOutlet.js';
|
|
24
|
+
export * from './impl/LslJsonOutlet.js';
|
|
25
|
+
export { default as FakeJsonOutlet } from './testDoubles/JsonOutlet/FakeJsonOutlet.js';
|
|
26
|
+
export * from './testDoubles/JsonOutlet/FakeJsonOutlet.js';
|
|
27
|
+
export { default as LslWebSocketBridge } from './impl/LslWebSocketBridge.js';
|
|
28
|
+
export * from './impl/LslWebSocketBridge.js';
|
|
29
|
+
export { default as SpyLslWsBridge } from './testDoubles/LslWsBridge/SpyLslWsBridge.js';
|
|
30
|
+
export * from './testDoubles/LslWsBridge/SpyLslWsBridge.js';
|
|
31
|
+
export { default as FakeLslWsBridge } from './testDoubles/LslWsBridge/FakeLslWsBridge.js';
|
|
32
|
+
export * from './testDoubles/LslWsBridge/FakeLslWsBridge.js';
|
|
19
33
|
export { default as LslStreamInfo } from './impl/LslStreamInfo.js';
|
|
20
34
|
export * from './impl/LslStreamInfo.js';
|
|
21
|
-
export { default as
|
|
22
|
-
export * from './testDoubles/
|
|
23
|
-
export { default as
|
|
24
|
-
export * from './testDoubles/
|
|
35
|
+
export { default as SpyLslInfo } from './testDoubles/LslInfo/SpyLslInfo.js';
|
|
36
|
+
export * from './testDoubles/LslInfo/SpyLslInfo.js';
|
|
37
|
+
export { default as FakeLslInfo } from './testDoubles/LslInfo/FakeLslInfo.js';
|
|
38
|
+
export * from './testDoubles/LslInfo/FakeLslInfo.js';
|
|
25
39
|
export { default as LslStreamInlet } from './impl/LslStreamInlet.js';
|
|
26
40
|
export * from './impl/LslStreamInlet.js';
|
|
27
|
-
export { default as
|
|
28
|
-
export * from './testDoubles/
|
|
41
|
+
export { default as SpyLslInlet } from './testDoubles/LslInlet/SpyLslInlet.js';
|
|
42
|
+
export * from './testDoubles/LslInlet/SpyLslInlet.js';
|
|
43
|
+
export { default as FakeLslInlet } from './testDoubles/LslInlet/FakeLslInlet.js';
|
|
44
|
+
export * from './testDoubles/LslInlet/FakeLslInlet.js';
|
|
29
45
|
export { default as LslStreamOutlet } from './impl/LslStreamOutlet.js';
|
|
30
46
|
export * from './impl/LslStreamOutlet.js';
|
|
31
|
-
export { default as
|
|
32
|
-
export * from './testDoubles/
|
|
47
|
+
export { default as FakeLslOutlet } from './testDoubles/LslOutlet/FakeLslOutlet.js';
|
|
48
|
+
export * from './testDoubles/LslOutlet/FakeLslOutlet.js';
|
|
49
|
+
export { default as generateRandomOutletOptions } from './testDoubles/generateRandomOutletOptions.js';
|
|
33
50
|
export { default as UsbDeviceController } from './impl/controllers/UsbDeviceController.js';
|
|
34
51
|
export * from './impl/controllers/UsbDeviceController.js';
|
|
35
|
-
export { default as
|
|
36
|
-
export * from './testDoubles/
|
|
37
|
-
export { default as LslWebSocketBridge } from './impl/LslWebSocketBridge.js';
|
|
38
|
-
export * from './impl/LslWebSocketBridge.js';
|
|
39
|
-
export { default as FakeWebSocketBridge } from './testDoubles/WebSocketBridge/FakeWebSocketBridge.js';
|
|
40
|
-
export * from './testDoubles/WebSocketBridge/FakeWebSocketBridge.js';
|
|
41
|
-
export { default as generateRandomOutletOptions } from './testDoubles/generateRandomOutletOptions.js';
|
|
52
|
+
export { default as FakeUsbDevice } from './testDoubles/UsbDevice/FakeUsbDevice.js';
|
|
53
|
+
export * from './testDoubles/UsbDevice/FakeUsbDevice.js';
|
|
42
54
|
export { default as FakeWebSocket } from './testDoubles/WebSockets/FakeWebSocket.js';
|
|
43
55
|
export * from './testDoubles/WebSockets/FakeWebSocket.js';
|
|
44
56
|
export { default as FakeWebSocketServer } from './testDoubles/WebSockets/FakeWebSocketServer.js';
|