@neurodevs/node-lsl 17.1.1 → 18.1.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/.claude/settings.local.json +10 -0
- package/.vscode/launch.json +54 -57
- package/.vscode/settings.json +61 -66
- package/.vscode/tasks.json +98 -129
- package/README.md +20 -44
- package/build/__tests__/AbstractPackageTest.d.ts +7 -5
- package/build/__tests__/AbstractPackageTest.js +22 -15
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/BleDeviceController.test.d.ts +54 -0
- package/build/__tests__/impl/BleDeviceController.test.js +333 -0
- package/build/__tests__/impl/BleDeviceController.test.js.map +1 -0
- package/build/__tests__/impl/LslEventMarkerEmitter.test.d.ts +34 -0
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js +243 -0
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -0
- package/build/__tests__/impl/LslStreamInfo.test.d.ts +0 -3
- package/build/__tests__/impl/LslStreamInfo.test.js +2 -27
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +20 -8
- package/build/__tests__/impl/LslStreamInlet.test.js +224 -69
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamOutlet.test.d.ts +3 -7
- package/build/__tests__/impl/LslStreamOutlet.test.js +40 -50
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js +19 -20
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/assertions.d.ts +1 -1
- package/build/assertions.js.map +1 -1
- package/build/impl/LslEventMarkerEmitter.d.ts +35 -0
- package/build/impl/LslEventMarkerEmitter.js +86 -0
- package/build/impl/LslEventMarkerEmitter.js.map +1 -0
- package/build/impl/LslStreamInfo.d.ts +4 -8
- package/build/impl/LslStreamInfo.js +8 -21
- package/build/impl/LslStreamInfo.js.map +1 -1
- package/build/impl/LslStreamInlet.d.ts +31 -50
- package/build/impl/LslStreamInlet.js +79 -149
- package/build/impl/LslStreamInlet.js.map +1 -1
- package/build/impl/LslStreamOutlet.d.ts +15 -18
- package/build/impl/LslStreamOutlet.js +39 -47
- package/build/impl/LslStreamOutlet.js.map +1 -1
- package/build/impl/LslWebSocketBridge.d.ts +4 -5
- package/build/impl/LslWebSocketBridge.js +10 -10
- package/build/impl/LslWebSocketBridge.js.map +1 -1
- package/build/impl/controllers/BleDeviceController.d.ts +58 -0
- package/build/impl/controllers/BleDeviceController.js +145 -0
- package/build/impl/controllers/BleDeviceController.js.map +1 -0
- package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +22 -0
- package/build/impl/workers/inlet/LslStreamInlet.worker.js +42 -0
- package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +1 -0
- package/build/impl/workers/inlet/StreamInletWorker.d.ts +73 -0
- package/build/impl/workers/inlet/StreamInletWorker.js +253 -0
- package/build/impl/workers/inlet/StreamInletWorker.js.map +1 -0
- package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +32 -0
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js +82 -0
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +1 -0
- package/build/index.d.ts +14 -14
- package/build/index.js +16 -16
- package/build/index.js.map +1 -1
- package/build/scripts/discoverMuse.js +40 -0
- package/build/scripts/discoverMuse.js.map +1 -0
- package/build/scripts/finalizeHandles.d.ts +2 -0
- package/build/scripts/finalizeHandles.js +48 -0
- package/build/scripts/finalizeHandles.js.map +1 -0
- package/build/scripts/runLslEventMarkerEmitter.d.ts +1 -0
- package/build/scripts/runLslEventMarkerEmitter.js +11 -0
- package/build/scripts/runLslEventMarkerEmitter.js.map +1 -0
- package/build/scripts/runMuse.d.ts +1 -0
- package/build/scripts/runMuse.js +40 -0
- package/build/scripts/runMuse.js.map +1 -0
- package/build/scripts/runOutletToInlet.js +7 -6
- package/build/scripts/runOutletToInlet.js.map +1 -1
- package/build/scripts/testDestroyOutlet.d.ts +1 -0
- package/build/scripts/testDestroyOutlet.js +4 -0
- package/build/scripts/testDestroyOutlet.js.map +1 -0
- package/build/testDoubles/BleController/FakeBleController.d.ts +24 -0
- package/build/testDoubles/BleController/FakeBleController.js +42 -0
- package/build/testDoubles/BleController/FakeBleController.js.map +1 -0
- package/build/testDoubles/BleController/SpyBleController.d.ts +14 -0
- package/build/testDoubles/BleController/SpyBleController.js +48 -0
- package/build/testDoubles/BleController/SpyBleController.js.map +1 -0
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.d.ts +17 -0
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js +30 -0
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +1 -0
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +10 -0
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +23 -0
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +1 -0
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +9 -0
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js +19 -0
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +1 -0
- package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +3 -3
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -3
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +8 -10
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js +6 -7
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -1
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +2 -5
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js +2 -8
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -1
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.d.ts +7 -9
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +8 -8
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +1 -1
- package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +27 -0
- package/build/testDoubles/WorkerThreads/FakeWorker.js +67 -0
- package/build/testDoubles/WorkerThreads/FakeWorker.js.map +1 -0
- package/build/testDoubles/generateRandomOutletOptions.js +1 -1
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
- package/build/validations.js +0 -2
- package/build/validations.js.map +1 -1
- package/eslint.config.js +3 -0
- package/package.json +27 -49
- package/prettier.config.js +3 -0
- package/src/__tests__/AbstractPackageTest.ts +38 -21
- package/src/__tests__/impl/BleDeviceController.test.ts +492 -0
- package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +323 -0
- package/src/__tests__/impl/LslStreamInfo.test.ts +3 -40
- package/src/__tests__/impl/LslStreamInlet.test.ts +344 -97
- package/src/__tests__/impl/LslStreamOutlet.test.ts +65 -73
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +22 -21
- package/src/assertions.ts +2 -1
- package/src/impl/LslEventMarkerEmitter.ts +133 -0
- package/src/impl/LslStreamInfo.ts +17 -29
- package/src/impl/LslStreamInlet.ts +102 -215
- package/src/impl/LslStreamOutlet.ts +54 -78
- package/src/impl/LslWebSocketBridge.ts +14 -14
- package/src/impl/controllers/BleDeviceController.ts +223 -0
- package/src/impl/workers/inlet/LslStreamInlet.worker.ts +74 -0
- package/src/impl/workers/inlet/StreamInletWorker.ts +348 -0
- package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +144 -0
- package/src/index.ts +16 -16
- package/src/scripts/discoverMuse.ts +50 -0
- package/src/scripts/finalizeHandles.ts +63 -0
- package/src/scripts/runLslEventMarkerEmitter.ts +15 -0
- package/src/scripts/runMuse.ts +50 -0
- package/src/scripts/runOutletToInlet.ts +10 -8
- package/src/scripts/testDestroyOutlet.ts +5 -0
- package/src/testDoubles/BleController/FakeBleController.ts +70 -0
- package/src/testDoubles/BleController/SpyBleController.ts +61 -0
- package/src/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.ts +46 -0
- package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +31 -0
- package/src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts +29 -0
- package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +4 -4
- package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +11 -17
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +3 -16
- package/src/testDoubles/StreamOutlet/FakeStreamOutlet.ts +15 -15
- package/src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts +1 -1
- package/src/testDoubles/WorkerThreads/FakeWorker.ts +99 -0
- package/src/testDoubles/generateRandomOutletOptions.ts +2 -1
- package/src/validations.ts +0 -2
- package/tsconfig.json +23 -27
- package/build/.spruce/settings.json +0 -11
- package/build/__tests__/impl/LiblslAdapter.test.d.ts +0 -79
- package/build/__tests__/impl/LiblslAdapter.test.js +0 -688
- package/build/__tests__/impl/LiblslAdapter.test.js.map +0 -1
- package/build/__tests__/impl/LslEventMarkerOutlet.test.d.ts +0 -21
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js +0 -160
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +0 -1
- package/build/handleError.d.ts +0 -8
- package/build/handleError.js +0 -25
- package/build/handleError.js.map +0 -1
- package/build/impl/LiblslAdapter.d.ts +0 -154
- package/build/impl/LiblslAdapter.js +0 -317
- package/build/impl/LiblslAdapter.js.map +0 -1
- package/build/impl/LslEventMarkerOutlet.d.ts +0 -28
- package/build/impl/LslEventMarkerOutlet.js +0 -63
- package/build/impl/LslEventMarkerOutlet.js.map +0 -1
- package/build/scripts/runLslEventMarkerOutlet.js +0 -18
- package/build/scripts/runLslEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.d.ts +0 -13
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +0 -26
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.d.ts +0 -17
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +0 -46
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +0 -19
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js +0 -19
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +0 -50
- package/build/testDoubles/Liblsl/FakeLiblsl.js +0 -126
- package/build/testDoubles/Liblsl/FakeLiblsl.js.map +0 -1
- package/eslint.config.mjs +0 -3
- package/src/.spruce/settings.json +0 -11
- package/src/__tests__/impl/LiblslAdapter.test.ts +0 -817
- package/src/__tests__/impl/LslEventMarkerOutlet.test.ts +0 -195
- package/src/handleError.ts +0 -24
- package/src/impl/LiblslAdapter.ts +0 -543
- package/src/impl/LslEventMarkerOutlet.ts +0 -97
- package/src/scripts/runLslEventMarkerOutlet.ts +0 -23
- package/src/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.ts +0 -36
- package/src/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.ts +0 -75
- package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +0 -24
- package/src/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.ts +0 -28
- package/src/testDoubles/Liblsl/FakeLiblsl.ts +0 -182
- /package/build/scripts/{runLslEventMarkerOutlet.d.ts → discoverMuse.d.ts} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import LslEventMarkerEmitter from '../../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
export default class SpyEventMarkerEmitter extends LslEventMarkerEmitter {
|
|
3
|
+
static shouldCallWaitOnSuper = false;
|
|
4
|
+
totalwaitAfterMs;
|
|
5
|
+
constructor(outlet) {
|
|
6
|
+
super(outlet);
|
|
7
|
+
this.totalwaitAfterMs = 0;
|
|
8
|
+
}
|
|
9
|
+
async wait(waitAfterMs) {
|
|
10
|
+
this.totalwaitAfterMs += waitAfterMs;
|
|
11
|
+
if (SpyEventMarkerEmitter.shouldCallWaitOnSuper) {
|
|
12
|
+
return super.wait(waitAfterMs);
|
|
13
|
+
}
|
|
14
|
+
return Promise.resolve();
|
|
15
|
+
}
|
|
16
|
+
getStreamOutlet() {
|
|
17
|
+
return this.outlet;
|
|
18
|
+
}
|
|
19
|
+
resetTestDouble() {
|
|
20
|
+
this.totalwaitAfterMs = 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SpyEventMarkerEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,qCAAqC,CAAA;AAGvE,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,qBAAqB;IAC7D,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAA;IAEpC,gBAAgB,CAAQ;IAE/B,YAAmB,MAAoB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEb,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC7B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAmB;QACjC,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAA;QAEpC,IAAI,qBAAqB,CAAC,qBAAqB,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC7B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EventMarkerEmitter, EventMarkerOptions, TimedEventMarker } from '../../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
export default class ThrowingEventMarkerEmitter implements EventMarkerEmitter {
|
|
3
|
+
private errorMsg;
|
|
4
|
+
constructor();
|
|
5
|
+
emit(_markerName: string, _options?: EventMarkerOptions): Promise<void>;
|
|
6
|
+
emitMany(_markers: TimedEventMarker[]): Promise<void>;
|
|
7
|
+
interrupt(): void;
|
|
8
|
+
destroy(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default class ThrowingEventMarkerEmitter {
|
|
2
|
+
errorMsg = 'Intentional throwing: ';
|
|
3
|
+
constructor() {
|
|
4
|
+
throw new Error(this.errorMsg + 'constructor');
|
|
5
|
+
}
|
|
6
|
+
async emit(_markerName, _options) {
|
|
7
|
+
throw new Error(this.errorMsg + 'emit');
|
|
8
|
+
}
|
|
9
|
+
async emitMany(_markers) {
|
|
10
|
+
throw new Error(this.errorMsg + 'emitMany');
|
|
11
|
+
}
|
|
12
|
+
interrupt() {
|
|
13
|
+
throw new Error(this.errorMsg + 'interrupt');
|
|
14
|
+
}
|
|
15
|
+
destroy() {
|
|
16
|
+
throw new Error(this.errorMsg + 'destroy');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ThrowingEventMarkerEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThrowingEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,0BAA0B;IACnC,QAAQ,GAAG,wBAAwB,CAAA;IAE3C;QACI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAmB,EAAE,QAA6B;QAChE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;IAC3C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAA4B;QAC9C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAA;IAC/C,CAAC;IAEM,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAA;IAChD,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IAC9C,CAAC;CACJ"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InfoHandle } from '@neurodevs/ndx-native';
|
|
2
2
|
import { StreamInfo, StreamInfoOptions } from '../../impl/LslStreamInfo.js';
|
|
3
3
|
export default class FakeStreamInfo implements StreamInfo {
|
|
4
4
|
static callsToConstructor: (StreamInfoOptions | undefined)[];
|
|
5
5
|
static numCallsToDestroy: number;
|
|
6
|
-
static
|
|
6
|
+
static infoHandle: InfoHandle;
|
|
7
7
|
name: string;
|
|
8
8
|
type: string;
|
|
9
9
|
sourceId: string;
|
|
@@ -14,6 +14,6 @@ export default class FakeStreamInfo implements StreamInfo {
|
|
|
14
14
|
constructor(options?: StreamInfoOptions);
|
|
15
15
|
destroy(): void;
|
|
16
16
|
get channelCount(): number;
|
|
17
|
-
get
|
|
17
|
+
get infoHandle(): InfoHandle;
|
|
18
18
|
static resetTestDouble(): void;
|
|
19
19
|
}
|
|
@@ -2,7 +2,7 @@ import generateId from '@neurodevs/generate-id';
|
|
|
2
2
|
export default class FakeStreamInfo {
|
|
3
3
|
static callsToConstructor = [];
|
|
4
4
|
static numCallsToDestroy = 0;
|
|
5
|
-
static
|
|
5
|
+
static infoHandle = {};
|
|
6
6
|
name = generateId();
|
|
7
7
|
type = generateId();
|
|
8
8
|
sourceId = generateId();
|
|
@@ -19,8 +19,8 @@ export default class FakeStreamInfo {
|
|
|
19
19
|
get channelCount() {
|
|
20
20
|
return this.channelNames.length;
|
|
21
21
|
}
|
|
22
|
-
get
|
|
23
|
-
return FakeStreamInfo.
|
|
22
|
+
get infoHandle() {
|
|
23
|
+
return FakeStreamInfo.infoHandle;
|
|
24
24
|
}
|
|
25
25
|
static resetTestDouble() {
|
|
26
26
|
FakeStreamInfo.callsToConstructor = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAsC,EAAE,CAAA;IACjE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAsC,EAAE,CAAA;IACjE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,UAAU,GAAG,EAAgB,CAAA;IAEpC,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,QAAQ,GAAG,UAAU,EAAE,CAAA;IACvB,YAAY,GAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,aAAa,GAAG,SAAkB,CAAA;IAClC,YAAY,GAAG,CAAC,CAAA;IAChB,KAAK,GAAG,KAAK,CAAA;IAEpB,YAAmB,OAA2B;QAC1C,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAEM,OAAO;QACV,cAAc,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,cAAc,CAAC,UAAU,CAAA;IACpC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,cAAc,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACtC,cAAc,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACxC,CAAC"}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { StreamInlet, StreamInletConstructorOptions } from '../../impl/LslStreamInlet.js';
|
|
1
|
+
import { OnDataCallback, StreamInlet, StreamInletOptions } from '../../impl/LslStreamInlet.js';
|
|
3
2
|
export default class FakeStreamInlet implements StreamInlet {
|
|
4
3
|
static callsToConstructor: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
onData?: (samples: Float32Array, timestamps: Float64Array) => void;
|
|
4
|
+
options?: StreamInletOptions;
|
|
5
|
+
onData?: OnDataCallback;
|
|
8
6
|
}[];
|
|
9
7
|
static numCallsToStartPulling: number;
|
|
10
8
|
static numCallsToStopPulling: number;
|
|
11
|
-
static
|
|
9
|
+
static numCallsToFlushInlet: number;
|
|
12
10
|
static numCallsToDestroy: number;
|
|
13
11
|
isRunning: boolean;
|
|
14
|
-
protected onData:
|
|
15
|
-
constructor(
|
|
16
|
-
startPulling(): void
|
|
12
|
+
protected onData: OnDataCallback;
|
|
13
|
+
constructor(options?: StreamInletOptions, onData?: OnDataCallback);
|
|
14
|
+
startPulling(): Promise<void>;
|
|
17
15
|
stopPulling(): void;
|
|
18
|
-
|
|
16
|
+
flushInlet(): void;
|
|
19
17
|
destroy(): void;
|
|
20
18
|
static resetTestDouble(): void;
|
|
21
19
|
}
|
|
@@ -2,19 +2,18 @@ export default class FakeStreamInlet {
|
|
|
2
2
|
static callsToConstructor = [];
|
|
3
3
|
static numCallsToStartPulling = 0;
|
|
4
4
|
static numCallsToStopPulling = 0;
|
|
5
|
-
static
|
|
5
|
+
static numCallsToFlushInlet = 0;
|
|
6
6
|
static numCallsToDestroy = 0;
|
|
7
7
|
isRunning = false;
|
|
8
8
|
onData;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(options, onData) {
|
|
10
10
|
this.onData = onData ?? (() => { });
|
|
11
11
|
FakeStreamInlet.callsToConstructor.push({
|
|
12
|
-
info,
|
|
13
12
|
options,
|
|
14
13
|
onData: this.onData,
|
|
15
14
|
});
|
|
16
15
|
}
|
|
17
|
-
startPulling() {
|
|
16
|
+
async startPulling() {
|
|
18
17
|
FakeStreamInlet.numCallsToStartPulling++;
|
|
19
18
|
this.isRunning = true;
|
|
20
19
|
}
|
|
@@ -22,8 +21,8 @@ export default class FakeStreamInlet {
|
|
|
22
21
|
FakeStreamInlet.numCallsToStopPulling++;
|
|
23
22
|
this.isRunning = false;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
FakeStreamInlet.
|
|
24
|
+
flushInlet() {
|
|
25
|
+
FakeStreamInlet.numCallsToFlushInlet++;
|
|
27
26
|
}
|
|
28
27
|
destroy() {
|
|
29
28
|
FakeStreamInlet.numCallsToDestroy++;
|
|
@@ -31,7 +30,7 @@ export default class FakeStreamInlet {
|
|
|
31
30
|
static resetTestDouble() {
|
|
32
31
|
FakeStreamInlet.callsToConstructor = [];
|
|
33
32
|
FakeStreamInlet.numCallsToStartPulling = 0;
|
|
34
|
-
FakeStreamInlet.
|
|
33
|
+
FakeStreamInlet.numCallsToFlushInlet = 0;
|
|
35
34
|
FakeStreamInlet.numCallsToDestroy = 0;
|
|
36
35
|
}
|
|
37
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/FakeStreamInlet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"FakeStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/FakeStreamInlet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAA;IAChC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,SAAS,GAAG,KAAK,CAAA;IAEd,MAAM,CAAiB;IAEjC,YAAmB,OAA4B,EAAE,MAAuB;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAElC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACpC,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,eAAe,CAAC,sBAAsB,EAAE,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,CAAC;IAEM,WAAW;QACd,eAAe,CAAC,qBAAqB,EAAE,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAEM,UAAU;QACb,eAAe,CAAC,oBAAoB,EAAE,CAAA;IAC1C,CAAC;IAEM,OAAO;QACV,eAAe,CAAC,iBAAiB,EAAE,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,eAAe,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACvC,eAAe,CAAC,sBAAsB,GAAG,CAAC,CAAA;QAC1C,eAAe,CAAC,oBAAoB,GAAG,CAAC,CAAA;QACxC,eAAe,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACzC,CAAC"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import LslStreamInlet, { OnDataCallback, StreamInletConstructorOptions } from '../../impl/LslStreamInlet.js';
|
|
1
|
+
import LslStreamInlet, { OnDataCallback, StreamInletOptions } from '../../impl/LslStreamInlet.js';
|
|
3
2
|
export declare class SpyStreamInlet extends LslStreamInlet {
|
|
4
|
-
constructor(
|
|
5
|
-
getStreamInfo(): StreamInfo;
|
|
6
|
-
getBoundInlet(): import("../../index.js").BoundInlet;
|
|
3
|
+
constructor(options: StreamInletOptions, onData: OnDataCallback);
|
|
7
4
|
}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import LslStreamInlet from '../../impl/LslStreamInlet.js';
|
|
2
2
|
export class SpyStreamInlet extends LslStreamInlet {
|
|
3
|
-
constructor(
|
|
4
|
-
super(
|
|
5
|
-
}
|
|
6
|
-
getStreamInfo() {
|
|
7
|
-
return this.info;
|
|
8
|
-
}
|
|
9
|
-
getBoundInlet() {
|
|
10
|
-
return this.inlet;
|
|
3
|
+
constructor(options, onData) {
|
|
4
|
+
super(options, onData);
|
|
11
5
|
}
|
|
12
6
|
}
|
|
13
7
|
//# sourceMappingURL=SpyStreamInlet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YAAmB,OAA2B,EAAE,MAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,CAAC;CACJ"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { LslSample } from '
|
|
2
|
-
import { StreamInfo } from '../../impl/LslStreamInfo.js';
|
|
1
|
+
import { LslSample } from '@neurodevs/ndx-native';
|
|
3
2
|
import { StreamOutlet, StreamOutletOptions } from '../../impl/LslStreamOutlet.js';
|
|
4
3
|
export default class FakeStreamOutlet implements StreamOutlet {
|
|
5
|
-
static callsToConstructor:
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
static callsToConstructor: (StreamOutletOptions | undefined)[];
|
|
5
|
+
static callsToPushSample: {
|
|
6
|
+
sample: LslSample;
|
|
7
|
+
timestampSec?: number;
|
|
8
8
|
}[];
|
|
9
|
-
static callsToPushSample: LslSample[];
|
|
10
9
|
static numCallsToDestroy: number;
|
|
11
|
-
info: StreamInfo;
|
|
12
10
|
options?: StreamOutletOptions;
|
|
13
|
-
constructor(
|
|
11
|
+
constructor(options?: StreamOutletOptions);
|
|
14
12
|
destroy(): void;
|
|
15
|
-
pushSample(sample: LslSample): void;
|
|
13
|
+
pushSample(sample: LslSample, timestampSec?: number): void;
|
|
16
14
|
get name(): string;
|
|
17
15
|
get type(): string;
|
|
18
16
|
get sourceId(): string;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { randomInt } from 'crypto';
|
|
1
|
+
import { randomInt } from 'node:crypto';
|
|
2
2
|
import generateId from '@neurodevs/generate-id';
|
|
3
|
-
import FakeStreamInfo from '../StreamInfo/FakeStreamInfo.js';
|
|
4
3
|
export default class FakeStreamOutlet {
|
|
5
4
|
static callsToConstructor = [];
|
|
6
5
|
static callsToPushSample = [];
|
|
7
6
|
static numCallsToDestroy = 0;
|
|
8
|
-
info;
|
|
9
7
|
options;
|
|
10
|
-
constructor(
|
|
11
|
-
FakeStreamOutlet.callsToConstructor.push(
|
|
12
|
-
this.info = info ?? new FakeStreamInfo();
|
|
8
|
+
constructor(options) {
|
|
9
|
+
FakeStreamOutlet.callsToConstructor.push(options);
|
|
13
10
|
this.options = options;
|
|
14
11
|
}
|
|
15
12
|
destroy() {
|
|
16
13
|
FakeStreamOutlet.numCallsToDestroy++;
|
|
17
14
|
}
|
|
18
|
-
pushSample(sample) {
|
|
19
|
-
FakeStreamOutlet.callsToPushSample.push(
|
|
15
|
+
pushSample(sample, timestampSec) {
|
|
16
|
+
FakeStreamOutlet.callsToPushSample.push({
|
|
17
|
+
sample,
|
|
18
|
+
timestampSec,
|
|
19
|
+
});
|
|
20
20
|
}
|
|
21
21
|
get name() {
|
|
22
22
|
return this.options?.name ?? generateId();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamOutlet/FakeStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"FakeStreamOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamOutlet/FakeStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAQ/C,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAC1B,MAAM,CAAC,kBAAkB,GAAwC,EAAE,CAAA;IAEnE,MAAM,CAAC,iBAAiB,GAGzB,EAAE,CAAA;IAED,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,OAAO,CAAsB;IAEpC,YAAmB,OAA6B;QAC5C,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,gBAAgB,CAAC,iBAAiB,EAAE,CAAA;IACxC,CAAC;IAEM,UAAU,CAAC,MAAiB,EAAE,YAAqB;QACtD,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACpC,MAAM;YACN,YAAY;SACf,CAAC,CAAA;IACN,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAA;IACjD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IACnD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,CAAA;IACrD,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACxC,gBAAgB,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACvC,gBAAgB,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC1C,CAAC"}
|
|
@@ -5,7 +5,7 @@ export default class FakeWebSocketBridge implements WebSocketBridge {
|
|
|
5
5
|
static numCallsToDeactivate: number;
|
|
6
6
|
static numCallsToDestroy: number;
|
|
7
7
|
constructor(options?: WebSocketBridgeConstructorOptions);
|
|
8
|
-
activate(): void
|
|
8
|
+
activate(): Promise<void>;
|
|
9
9
|
deactivate(): void;
|
|
10
10
|
destroy(): void;
|
|
11
11
|
static resetTestDouble(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,QAAQ;
|
|
1
|
+
{"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;IAC5C,CAAC;IAEM,UAAU;QACb,mBAAmB,CAAC,oBAAoB,EAAE,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAC3C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,kBAAkB,CAAC,GAAG;YAClB,mBAAwD,CAAA;QAC5D,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { WorkerOptions } from 'node:worker_threads';
|
|
2
|
+
import { OnDataCallback } from '../../impl/LslStreamInlet.js';
|
|
3
|
+
import StreamInletWorker from '../../impl/workers/inlet/StreamInletWorker.js';
|
|
4
|
+
export default class FakeWorker {
|
|
5
|
+
static callsToConstructor: {
|
|
6
|
+
filename: string | URL;
|
|
7
|
+
options?: WorkerOptions;
|
|
8
|
+
}[];
|
|
9
|
+
static callsToPostMessage: WorkerMessage[];
|
|
10
|
+
static callsToOn: {
|
|
11
|
+
type: string;
|
|
12
|
+
listener: (...args: unknown[]) => void;
|
|
13
|
+
}[];
|
|
14
|
+
static inletWorker: StreamInletWorker;
|
|
15
|
+
static fakeOnData: OnDataCallback;
|
|
16
|
+
createInletPromise?: Promise<void>;
|
|
17
|
+
constructor(filename: string | URL, options?: WorkerOptions);
|
|
18
|
+
postMessage(msg: WorkerMessage): void;
|
|
19
|
+
on(type: string, listener: (...args: unknown[]) => void): void;
|
|
20
|
+
private get inletWorker();
|
|
21
|
+
private get fakeOnData();
|
|
22
|
+
static resetTestDoubles(): void;
|
|
23
|
+
}
|
|
24
|
+
export interface WorkerMessage {
|
|
25
|
+
type: string;
|
|
26
|
+
payload?: Record<string, unknown>[];
|
|
27
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import StreamInletWorker from '../../impl/workers/inlet/StreamInletWorker.js';
|
|
2
|
+
import { createOutlet, destroyOutlet, pushSample, } from '../../impl/workers/outlet/LslStreamOutlet.worker.js';
|
|
3
|
+
export default class FakeWorker {
|
|
4
|
+
static callsToConstructor = [];
|
|
5
|
+
static callsToPostMessage = [];
|
|
6
|
+
static callsToOn = [];
|
|
7
|
+
static inletWorker = new StreamInletWorker();
|
|
8
|
+
static fakeOnData;
|
|
9
|
+
createInletPromise;
|
|
10
|
+
constructor(filename, options) {
|
|
11
|
+
FakeWorker.callsToConstructor.push({ filename, options });
|
|
12
|
+
}
|
|
13
|
+
postMessage(msg) {
|
|
14
|
+
FakeWorker.callsToPostMessage.push(msg);
|
|
15
|
+
const { type } = msg;
|
|
16
|
+
switch (type) {
|
|
17
|
+
case 'createOutlet': {
|
|
18
|
+
createOutlet(msg);
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
case 'pushSample': {
|
|
22
|
+
pushSample(msg);
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
case 'destroyOutlet': {
|
|
26
|
+
destroyOutlet();
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
case 'createInlet': {
|
|
30
|
+
const { payload } = msg;
|
|
31
|
+
this.createInletPromise = this.inletWorker.createInlet(payload);
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
case 'startPulling': {
|
|
35
|
+
this.inletWorker.startPulling(this.fakeOnData);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
case 'flushInlet': {
|
|
39
|
+
this.inletWorker.flushInlet();
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case 'stopPulling': {
|
|
43
|
+
this.inletWorker.stopPulling();
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case 'destroyInlet': {
|
|
47
|
+
this.inletWorker.destroyInlet();
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
on(type, listener) {
|
|
53
|
+
FakeWorker.callsToOn.push({ type, listener });
|
|
54
|
+
}
|
|
55
|
+
get inletWorker() {
|
|
56
|
+
return FakeWorker.inletWorker;
|
|
57
|
+
}
|
|
58
|
+
get fakeOnData() {
|
|
59
|
+
return FakeWorker.fakeOnData;
|
|
60
|
+
}
|
|
61
|
+
static resetTestDoubles() {
|
|
62
|
+
this.callsToConstructor = [];
|
|
63
|
+
this.callsToPostMessage = [];
|
|
64
|
+
this.callsToOn = [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=FakeWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeWorker.js","sourceRoot":"","sources":["../../../src/testDoubles/WorkerThreads/FakeWorker.ts"],"names":[],"mappings":"AAGA,OAAO,iBAAiB,MAAM,+CAA+C,CAAA;AAC7E,OAAO,EACH,YAAY,EACZ,aAAa,EACb,UAAU,GACb,MAAM,qDAAqD,CAAA;AAE5D,MAAM,CAAC,OAAO,OAAO,UAAU;IACpB,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAoB,EAAE,CAAA;IAE/C,MAAM,CAAC,SAAS,GAGjB,EAAE,CAAA;IAED,MAAM,CAAC,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;IAC5C,MAAM,CAAC,UAAU,CAAgB;IAEjC,kBAAkB,CAAgB;IAEzC,YAAmB,QAAsB,EAAE,OAAuB;QAC9D,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC;IAEM,WAAW,CAAC,GAAkB;QACjC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAEpB,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,YAAY,CAAC,GAAU,CAAC,CAAA;gBACxB,MAAK;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,UAAU,CAAC,GAAU,CAAC,CAAA;gBACtB,MAAK;YACT,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACnB,aAAa,EAAE,CAAA;gBACf,MAAK;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;gBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAClD,OAAc,CACjB,CAAA;gBACD,MAAK;YACT,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC9C,MAAK;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;gBAC7B,MAAK;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA;gBAC9B,MAAK;YACT,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;gBAC/B,MAAK;YACT,CAAC;QACL,CAAC;IACL,CAAC;IAEM,EAAE,CAAC,IAAY,EAAE,QAAsC;QAC1D,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,UAAU,CAAC,WAAW,CAAA;IACjC,CAAC;IAED,IAAY,UAAU;QAClB,OAAO,UAAU,CAAC,UAAU,CAAA;IAChC,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC1B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,UAAU,EAAE;QAClB,IAAI,EAAE,UAAU,EAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAChC,aAAa,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,UAAU,EAAE;QACtB,YAAY,EAAE,UAAU,EAAE;QAC1B,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KACX,CAAA;AAC5B,CAAC"}
|
package/build/validations.js
CHANGED
|
@@ -5,11 +5,9 @@ export function isGreaterThanOrEqualToZero(value) {
|
|
|
5
5
|
return value >= 0;
|
|
6
6
|
}
|
|
7
7
|
export function isPositiveInteger(value) {
|
|
8
|
-
//@ts-ignore
|
|
9
8
|
return Number.isInteger(value) && value > 0;
|
|
10
9
|
}
|
|
11
10
|
export function isPositiveIntegerOrZero(value) {
|
|
12
|
-
//@ts-ignore
|
|
13
11
|
return Number.isInteger(value) && value >= 0;
|
|
14
12
|
}
|
|
15
13
|
//# sourceMappingURL=validations.js.map
|
package/build/validations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAwB;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACpD,OAAO,KAAK,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAwB;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACpD,OAAO,KAAK,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACjD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAChD,CAAC"}
|
package/eslint.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/node-lsl",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.1.0",
|
|
4
4
|
"description": "Lab Streaming Layer (LSL) bindings for Node",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"nodejs",
|
|
8
8
|
"typescript",
|
|
9
|
-
"tdd"
|
|
9
|
+
"tdd",
|
|
10
|
+
"lsl",
|
|
11
|
+
"lab streaming layer",
|
|
12
|
+
"neurotech",
|
|
13
|
+
"bci",
|
|
14
|
+
"brain-computer interface"
|
|
10
15
|
],
|
|
11
16
|
"license": "MIT",
|
|
12
|
-
"author": "Eric Yates <hello@
|
|
17
|
+
"author": "Eric Yates <hello@ericyates.me>",
|
|
13
18
|
"homepage": "https://github.com/neurodevs/node-lsl",
|
|
14
19
|
"repository": {
|
|
15
20
|
"type": "git",
|
|
@@ -20,10 +25,9 @@
|
|
|
20
25
|
},
|
|
21
26
|
"main": "build/index.js",
|
|
22
27
|
"scripts": {
|
|
23
|
-
"build.ci": "yarn run build.tsc && yarn run
|
|
24
|
-
"build.dev": "yarn run build.tsc --sourceMap ; yarn run
|
|
28
|
+
"build.ci": "yarn run build.tsc && yarn run lint",
|
|
29
|
+
"build.dev": "yarn run build.tsc --sourceMap ; yarn run fix.lint ; prettier --write . --log-level warn",
|
|
25
30
|
"build.copy-files": "mkdir -p build && rsync -avzq --exclude='*.ts' ./src/ ./build/",
|
|
26
|
-
"build.resolve-paths": "resolve-path-aliases --target build --patterns '**/*.js,**/*.d.ts'",
|
|
27
31
|
"build.tsc": "yarn run build.copy-files && tsc",
|
|
28
32
|
"clean": "yarn run clean.build",
|
|
29
33
|
"clean.all": "yarn run clean.dependencies && yarn run clean.build",
|
|
@@ -31,64 +35,38 @@
|
|
|
31
35
|
"clean.dependencies": "rm -rf node_modules/ package-lock.json yarn.lock",
|
|
32
36
|
"fix.lint": "eslint --fix --cache '**/*.ts'",
|
|
33
37
|
"lint": "eslint --cache '**/*.ts'",
|
|
34
|
-
"lint.tsc": "tsc -p . --noEmit",
|
|
35
|
-
"post.watch.build": "yarn run build.copy-files && yarn run build.resolve-paths",
|
|
36
38
|
"rebuild": "yarn run clean.all && yarn install && yarn run build.dev",
|
|
37
39
|
"update.dependencies": "yarn run clean.dependencies && yarn",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"watch.build.dev": "tsc-watch --sourceMap --onCompilationComplete 'yarn run post.watch.build'",
|
|
41
|
-
"watch.lint": "concurrently 'yarn lint' \"chokidar 'src/**/*' -c 'yarn lint.tsc'\"",
|
|
42
|
-
"watch.rebuild": "yarn run clean.all && yarn install && yarn run watch.build.dev",
|
|
43
|
-
"watch.tsc": "tsc -w",
|
|
44
|
-
"test.rs": "node build/test.js"
|
|
40
|
+
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
|
|
41
|
+
"watch.build.dev": "tsc-watch --sourceMap --onCompilationComplete 'yarn run build.copy-files'"
|
|
45
42
|
},
|
|
46
43
|
"dependencies": {
|
|
47
|
-
"@neurodevs/generate-id": "^1.
|
|
44
|
+
"@neurodevs/generate-id": "^1.1.2",
|
|
45
|
+
"@neurodevs/ndx-native": "^7.0.1",
|
|
48
46
|
"ffi-rs": "^1.3.1",
|
|
49
|
-
"node-gyp": "^12.1.0",
|
|
50
|
-
"ref-array-napi": "^1.2.2",
|
|
51
|
-
"ref-napi": "^3.0.3",
|
|
52
47
|
"ws": "^8.18.3"
|
|
53
48
|
},
|
|
54
49
|
"devDependencies": {
|
|
55
|
-
"@neurodevs/
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
50
|
+
"@neurodevs/eslint-config-ndx": "^1.0.2",
|
|
51
|
+
"@neurodevs/node-tdd": "^3.0.1",
|
|
52
|
+
"@neurodevs/prettier-config-ndx": "^1.0.2",
|
|
58
53
|
"@types/ws": "^8.18.1",
|
|
59
|
-
"
|
|
60
|
-
"concurrently": "^9.2.1",
|
|
61
|
-
"eslint": "^9.39.2",
|
|
62
|
-
"eslint-config-spruce": "^11.2.26",
|
|
63
|
-
"jest": "^30.2.0",
|
|
64
|
-
"jest-circus": "^30.2.0",
|
|
65
|
-
"prettier": "^3.7.4",
|
|
66
|
-
"ts-node": "^10.9.2",
|
|
67
|
-
"tsc-watch": "^7.2.0",
|
|
54
|
+
"prettier": "^3.8.3",
|
|
68
55
|
"typescript": "^5.9.3"
|
|
69
56
|
},
|
|
57
|
+
"resolutions": {
|
|
58
|
+
"glob": "^13.0.0"
|
|
59
|
+
},
|
|
70
60
|
"jest": {
|
|
71
|
-
"testRunner": "jest-circus/runner",
|
|
72
|
-
"maxWorkers": 4,
|
|
73
|
-
"testTimeout": 120000,
|
|
74
61
|
"testEnvironment": "node",
|
|
75
|
-
"
|
|
76
|
-
"<rootDir>/tmp/",
|
|
77
|
-
"<rootDir>/src/",
|
|
78
|
-
"<rootDir>/node_modules/",
|
|
79
|
-
"<rootDir>/build/__tests__/testDirsAndFiles/"
|
|
80
|
-
],
|
|
62
|
+
"testRunner": "jest-circus/runner",
|
|
81
63
|
"testMatch": [
|
|
82
|
-
"
|
|
64
|
+
"<rootDir>/build/__tests__/**/*.test.js?(x)"
|
|
83
65
|
],
|
|
84
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
"skill": {
|
|
89
|
-
"namespace": "node-lsl",
|
|
90
|
-
"upgradeIgnoreList": [
|
|
91
|
-
"@sprucelabs/spruce-test-fixtures"
|
|
66
|
+
"testTimeout": 5000,
|
|
67
|
+
"maxWorkers": 4,
|
|
68
|
+
"reporters": [
|
|
69
|
+
"default"
|
|
92
70
|
]
|
|
93
71
|
}
|
|
94
72
|
}
|