@neurodevs/node-lsl 11.4.2 → 12.0.1
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/.vscode/tasks.json +19 -1
- package/README.md +8 -9
- package/build/__tests__/{AbstractLslTest.d.ts → AbstractPackageTest.d.ts} +7 -6
- package/build/__tests__/AbstractPackageTest.js +53 -0
- package/build/__tests__/AbstractPackageTest.js.map +1 -0
- package/build/__tests__/{modules → impl}/LiblslAdapter.test.d.ts +6 -3
- package/build/__tests__/{modules → impl}/LiblslAdapter.test.js +193 -151
- package/build/__tests__/impl/LiblslAdapter.test.js.map +1 -0
- package/build/__tests__/{modules/EventMarkerOutlet.test.d.ts → impl/LslEventMarkerOutlet.test.d.ts} +5 -4
- package/build/__tests__/{modules/EventMarkerOutlet.test.js → impl/LslEventMarkerOutlet.test.js} +54 -52
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
- package/build/__tests__/{modules → impl}/LslStreamInfo.test.d.ts +3 -3
- package/build/__tests__/{modules → impl}/LslStreamInfo.test.js +53 -59
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -0
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +11 -0
- package/build/__tests__/{modules → impl}/LslStreamInlet.test.js +28 -26
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -0
- package/build/__tests__/{modules → impl}/LslStreamOutlet.test.d.ts +3 -3
- package/build/__tests__/{modules → impl}/LslStreamOutlet.test.js +56 -60
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.d.ts +7 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.js +26 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -0
- package/build/assertions.d.ts +1 -1
- package/build/assertions.js +13 -20
- package/build/assertions.js.map +1 -1
- package/build/consts.js +2 -5
- package/build/consts.js.map +1 -1
- package/build/{modules → impl}/LiblslAdapter.d.ts +5 -4
- package/build/{modules → impl}/LiblslAdapter.js +60 -51
- package/build/impl/LiblslAdapter.js.map +1 -0
- package/build/impl/LslEventMarkerOutlet.d.ts +23 -0
- package/build/{modules/EventMarkerOutlet.js → impl/LslEventMarkerOutlet.js} +12 -14
- package/build/impl/LslEventMarkerOutlet.js.map +1 -0
- package/build/{modules → impl}/LslStreamInfo.d.ts +1 -1
- package/build/{modules → impl}/LslStreamInfo.js +19 -16
- package/build/impl/LslStreamInfo.js.map +1 -0
- package/build/impl/LslStreamInlet.d.ts +34 -0
- package/build/{modules → impl}/LslStreamInlet.js +19 -16
- package/build/impl/LslStreamInlet.js.map +1 -0
- package/build/{modules → impl}/LslStreamOutlet.d.ts +10 -10
- package/build/{modules → impl}/LslStreamOutlet.js +22 -23
- package/build/impl/LslStreamOutlet.js.map +1 -0
- package/build/impl/LslWebSocketBridge.d.ts +8 -0
- package/build/impl/LslWebSocketBridge.js +8 -0
- package/build/impl/LslWebSocketBridge.js.map +1 -0
- package/build/index.d.ts +34 -30
- package/build/index.js +39 -69
- package/build/index.js.map +1 -1
- package/build/scripts/{demoMarkerOutlet.js → runLslEventMarkerOutlet.js} +3 -8
- package/build/scripts/runLslEventMarkerOutlet.js.map +1 -0
- package/build/scripts/{demoStreamOutlet.js → runLslStreamOutlet.js} +3 -8
- package/build/scripts/runLslStreamOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/FakeMarkerOutlet.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +3 -3
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +26 -0
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.d.ts → EventMarkerOutlet/MockEventMarkerOutlet.d.ts} +3 -3
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +46 -0
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +9 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +19 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +10 -0
- package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +3 -6
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +4 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.js +23 -15
- package/build/testDoubles/Liblsl/FakeLiblsl.js.map +1 -1
- package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +2 -2
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -6
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +2 -2
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js +2 -8
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +12 -0
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js +18 -0
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +8 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js +16 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -0
- package/build/testDoubles/{LslOutlet/FakeLslOutlet.d.ts → StreamOutlet/FakeStreamOutlet.d.ts} +10 -11
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +57 -0
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.d.ts +6 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js +10 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js.map +1 -0
- package/build/testDoubles/consts.js +4 -7
- package/build/testDoubles/consts.js.map +1 -1
- package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
- package/build/testDoubles/generateRandomOutletOptions.js +14 -17
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
- package/build/types.d.ts +9 -4
- package/build/types.js +1 -2
- package/build/validations.js +4 -10
- package/build/validations.js.map +1 -1
- package/package.json +22 -12
- package/src/__tests__/AbstractPackageTest.ts +65 -0
- package/src/__tests__/{modules → impl}/LiblslAdapter.test.ts +71 -44
- package/src/__tests__/{modules/EventMarkerOutlet.test.ts → impl/LslEventMarkerOutlet.test.ts} +40 -28
- package/src/__tests__/{modules → impl}/LslStreamInfo.test.ts +10 -8
- package/src/__tests__/{modules → impl}/LslStreamInlet.test.ts +27 -14
- package/src/__tests__/{modules → impl}/LslStreamOutlet.test.ts +24 -17
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +25 -0
- package/src/assertions.ts +3 -3
- package/src/{modules → impl}/LiblslAdapter.ts +33 -21
- package/src/{modules/EventMarkerOutlet.ts → impl/LslEventMarkerOutlet.ts} +17 -12
- package/src/{modules → impl}/LslStreamInfo.ts +5 -4
- package/src/{modules → impl}/LslStreamInlet.ts +27 -16
- package/src/{modules → impl}/LslStreamOutlet.ts +19 -16
- package/src/impl/LslWebSocketBridge.ts +13 -0
- package/src/index.ts +43 -35
- package/src/scripts/{demoMarkerOutlet.ts → runLslEventMarkerOutlet.ts} +2 -2
- package/src/scripts/{demoStreamOutlet.ts → runLslStreamOutlet.ts} +1 -1
- package/src/testDoubles/{MarkerOutlet/FakeMarkerOutlet.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +7 -7
- package/src/testDoubles/{MarkerOutlet/MockMarkerOutlet.ts → EventMarkerOutlet/MockEventMarkerOutlet.ts} +5 -4
- package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +24 -0
- package/src/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +3 -3
- package/src/testDoubles/Liblsl/FakeLiblsl.ts +9 -1
- package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +2 -2
- package/src/testDoubles/StreamInfo/SpyStreamInfo.ts +1 -1
- package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +27 -0
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +22 -0
- package/src/testDoubles/{LslOutlet/FakeLslOutlet.ts → StreamOutlet/FakeStreamOutlet.ts} +22 -19
- package/src/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.ts +15 -0
- package/src/testDoubles/generateRandomOutletOptions.ts +5 -4
- package/src/types.ts +11 -4
- package/tsconfig.json +17 -28
- package/build/__tests__/AbstractLslTest.js +0 -87
- package/build/__tests__/AbstractLslTest.js.map +0 -1
- package/build/__tests__/modules/EventMarkerOutlet.test.js.map +0 -1
- package/build/__tests__/modules/LiblslAdapter.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamInfo.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamInlet.test.d.ts +0 -10
- package/build/__tests__/modules/LslStreamInlet.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamOutlet.test.js.map +0 -1
- package/build/modules/EventMarkerOutlet.d.ts +0 -23
- package/build/modules/EventMarkerOutlet.js.map +0 -1
- package/build/modules/LiblslAdapter.js.map +0 -1
- package/build/modules/LslStreamInfo.js.map +0 -1
- package/build/modules/LslStreamInlet.d.ts +0 -31
- package/build/modules/LslStreamInlet.js.map +0 -1
- package/build/modules/LslStreamOutlet.js.map +0 -1
- package/build/scripts/demoMarkerOutlet.js.map +0 -1
- package/build/scripts/demoStreamOutlet.js.map +0 -1
- package/build/testDoubles/LslInlet/FakeLslInlet.d.ts +0 -11
- package/build/testDoubles/LslInlet/FakeLslInlet.js +0 -16
- package/build/testDoubles/LslInlet/FakeLslInlet.js.map +0 -1
- package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +0 -7
- package/build/testDoubles/LslInlet/SpyLslInlet.js +0 -20
- package/build/testDoubles/LslInlet/SpyLslInlet.js.map +0 -1
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js +0 -59
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js +0 -29
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js +0 -49
- package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js +0 -24
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.d.ts +0 -10
- package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.js.map +0 -1
- package/src/__tests__/AbstractLslTest.ts +0 -59
- package/src/testDoubles/LslInlet/FakeLslInlet.ts +0 -22
- package/src/testDoubles/LslInlet/SpyLslInlet.ts +0 -16
- package/src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts +0 -24
- /package/build/scripts/{demoMarkerOutlet.d.ts → runLslEventMarkerOutlet.d.ts} +0 -0
- /package/build/scripts/{demoStreamOutlet.d.ts → runLslStreamOutlet.d.ts} +0 -0
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
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;
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const AbstractLslTest_1 = __importDefault(require("../AbstractLslTest"));
|
|
19
|
-
class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
7
|
+
import generateId from '@neurodevs/generate-id';
|
|
8
|
+
import { test, assert } from '@neurodevs/node-tdd';
|
|
9
|
+
import { CHANNEL_FORMATS } from '../../consts.js';
|
|
10
|
+
import LslStreamOutlet from '../../impl/LslStreamOutlet.js';
|
|
11
|
+
import { TEST_SUPPORTED_CHANNEL_FORMATS, TEST_UNSUPPORTED_CHANNEL_FORMATS, } from '../../testDoubles/consts.js';
|
|
12
|
+
import generateRandomOutletOptions from '../../testDoubles/generateRandomOutletOptions.js';
|
|
13
|
+
import FakeStreamInfo from '../../testDoubles/StreamInfo/FakeStreamInfo.js';
|
|
14
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
15
|
+
export default class LslStreamOutletTest extends AbstractPackageTest {
|
|
16
|
+
static randomOutletOptions;
|
|
20
17
|
static async beforeEach() {
|
|
21
18
|
await super.beforeEach();
|
|
22
|
-
delete
|
|
23
|
-
this.randomOutletOptions = (
|
|
19
|
+
delete LslStreamOutlet.Class;
|
|
20
|
+
this.randomOutletOptions = generateRandomOutletOptions();
|
|
24
21
|
this.setFakeLiblsl();
|
|
25
22
|
this.setFakeStreamInfo();
|
|
26
23
|
}
|
|
@@ -54,14 +51,14 @@ class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
|
54
51
|
await this.assertThrowsInvalidMaxBuffered(1.5);
|
|
55
52
|
}
|
|
56
53
|
static async throwsWithUnsupportedType() {
|
|
57
|
-
for (let unsupportedType of
|
|
58
|
-
await
|
|
54
|
+
for (let unsupportedType of TEST_UNSUPPORTED_CHANNEL_FORMATS) {
|
|
55
|
+
await assert.doesThrowAsync(async () => await this.LslStreamOutlet({
|
|
59
56
|
channelFormat: unsupportedType,
|
|
60
57
|
}), `This method currently does not support the ${unsupportedType} type! Please implement it.`);
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
60
|
static async supportsAllKnownChannelFormats() {
|
|
64
|
-
for (const format of
|
|
61
|
+
for (const format of TEST_SUPPORTED_CHANNEL_FORMATS) {
|
|
65
62
|
await this.LslStreamOutlet({
|
|
66
63
|
channelFormat: format,
|
|
67
64
|
});
|
|
@@ -70,37 +67,37 @@ class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
|
70
67
|
static async canPushFloatSampleToLsl(sample) {
|
|
71
68
|
const outlet = await this.FloatOutlet();
|
|
72
69
|
outlet.pushSample(sample);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
70
|
+
assert.isEqual(this.fakeLiblsl.lastPushSampleFloatTimestampOptions?.outlet, this.fakeLiblsl.outlet);
|
|
71
|
+
assert.isEqualDeep(this.fakeLiblsl.lastPushSampleFloatTimestampOptions?.sample, sample);
|
|
72
|
+
assert.isEqualDeep(this.fakeLiblsl.lastCreateOutletOptions, {
|
|
76
73
|
info: this.fakeLiblsl.streamInfo,
|
|
77
74
|
chunkSize: this.randomOutletOptions.chunkSize,
|
|
78
75
|
maxBuffered: this.randomOutletOptions.maxBuffered,
|
|
79
76
|
});
|
|
80
|
-
|
|
77
|
+
assert.isNumber(this.fakeLiblsl.lastPushSampleFloatTimestampOptions?.timestamp);
|
|
81
78
|
}
|
|
82
79
|
static async canPushStringSampleToLsl() {
|
|
83
|
-
const sample = [
|
|
80
|
+
const sample = [generateId()];
|
|
84
81
|
const outlet = await this.StringOutlet();
|
|
85
82
|
outlet.pushSample(sample);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
assert.isEqual(this.fakeLiblsl.lastPushSampleStringTimestampOptions?.outlet, this.fakeLiblsl.outlet);
|
|
84
|
+
assert.isEqualDeep(this.fakeLiblsl.lastPushSampleStringTimestampOptions?.sample, sample);
|
|
85
|
+
assert.isNumber(this.fakeLiblsl.lastPushSampleStringTimestampOptions?.timestamp);
|
|
89
86
|
}
|
|
90
87
|
static async pushingStringTwiceGivesDifferentTimestamps() {
|
|
91
88
|
const outlet = await this.StringOutlet();
|
|
92
|
-
const sample = [
|
|
89
|
+
const sample = [generateId()];
|
|
93
90
|
outlet.pushSample(sample);
|
|
94
91
|
const t1 = this.fakeLiblsl.lastPushSampleStringTimestampOptions?.timestamp;
|
|
95
92
|
await this.wait(10);
|
|
96
93
|
outlet.pushSample(sample);
|
|
97
94
|
const t2 = this.fakeLiblsl.lastPushSampleStringTimestampOptions?.timestamp;
|
|
98
|
-
|
|
99
|
-
|
|
95
|
+
assert.isNotEqual(t1, t2);
|
|
96
|
+
assert.isEqual(this.fakeLiblsl.localClockHitCount, 2);
|
|
100
97
|
}
|
|
101
98
|
static async constructionCreatesStreamInfo() {
|
|
102
99
|
await this.LslStreamOutlet();
|
|
103
|
-
|
|
100
|
+
assert.isEqualDeep(FakeStreamInfo.callsToConstructor[0], {
|
|
104
101
|
channelNames: this.randomOutletOptions.channelNames,
|
|
105
102
|
channelFormat: this.randomOutletOptions.channelFormat,
|
|
106
103
|
sampleRate: this.randomOutletOptions.sampleRate,
|
|
@@ -111,27 +108,27 @@ class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
|
111
108
|
});
|
|
112
109
|
}
|
|
113
110
|
static async canOverrideClassInstantiatedInFactory() {
|
|
114
|
-
|
|
111
|
+
LslStreamOutlet.Class = CheckingOutlet;
|
|
115
112
|
const instance = await this.LslStreamOutlet();
|
|
116
|
-
|
|
113
|
+
assert.isInstanceOf(instance, CheckingOutlet);
|
|
117
114
|
}
|
|
118
115
|
static async canDestroyOutlet() {
|
|
119
116
|
const outlet = await this.LslStreamOutlet();
|
|
120
117
|
outlet.destroy();
|
|
121
|
-
|
|
118
|
+
assert.isEqual(this.fakeLiblsl.destroyOutletHitCount, 1);
|
|
122
119
|
}
|
|
123
120
|
static async pushSampleShouldNotCreateMultipleOutlets() {
|
|
124
121
|
const outlet = await this.FloatOutlet();
|
|
125
122
|
outlet.pushSample([1.0]);
|
|
126
123
|
outlet.pushSample([2.0]);
|
|
127
124
|
outlet.pushSample([3.0]);
|
|
128
|
-
|
|
125
|
+
assert.isEqual(this.fakeLiblsl.createOutletHitCount, 1);
|
|
129
126
|
}
|
|
130
127
|
static async waitsForTenMsAfterConstructionBeforeReturning() {
|
|
131
128
|
const startMs = Date.now();
|
|
132
129
|
await this.LslStreamOutlet({ waitAfterConstructionMs: 10 });
|
|
133
130
|
const endMs = Date.now();
|
|
134
|
-
|
|
131
|
+
assert.isAbove(endMs - startMs, 10);
|
|
135
132
|
}
|
|
136
133
|
static async assertThrowsWithEmptyChannelNames() {
|
|
137
134
|
await this.createAndAssertThrows('channelNames', [], `Invalid channel count! Must be a positive integer, not: 0.`);
|
|
@@ -140,7 +137,7 @@ class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
|
140
137
|
await this.createAndAssertThrows('sampleRate', sampleRate, `Invalid sample rate! Must be a positive number or zero, not: ${sampleRate}`);
|
|
141
138
|
}
|
|
142
139
|
static async assertThrowsInvalidChannelFormat(channelFormat) {
|
|
143
|
-
await this.createAndAssertThrows('channelFormat', channelFormat, `Invalid channel format! Must be one of: ${
|
|
140
|
+
await this.createAndAssertThrows('channelFormat', channelFormat, `Invalid channel format! Must be one of: ${CHANNEL_FORMATS.join(', ')}, not ${channelFormat}.`);
|
|
144
141
|
}
|
|
145
142
|
static async assertThrowsInvalidMaxBuffered(maxBuffered) {
|
|
146
143
|
await this.createAndAssertThrows('maxBuffered', maxBuffered, `Invalid max buffered! Must be a positive integer or zero, not: ${maxBuffered}`);
|
|
@@ -149,8 +146,8 @@ class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
|
149
146
|
await this.createAndAssertThrows('chunkSize', chunkSize, `Invalid chunk size! Must be a positive integer or zero, not: ${chunkSize}`);
|
|
150
147
|
}
|
|
151
148
|
static async createAndAssertThrows(option, value, expectedMessage) {
|
|
152
|
-
const err = await
|
|
153
|
-
|
|
149
|
+
const err = await assert.doesThrowAsync(async () => await this.LslStreamOutlet({ [option]: value }));
|
|
150
|
+
assert.isTrue(err.message.includes(expectedMessage), 'Did not receive the expected error!');
|
|
154
151
|
}
|
|
155
152
|
static async StringOutlet() {
|
|
156
153
|
return await this.LslStreamOutlet({ channelFormat: 'string' });
|
|
@@ -159,69 +156,68 @@ class LslStreamOutletTest extends AbstractLslTest_1.default {
|
|
|
159
156
|
return await this.LslStreamOutlet({ channelFormat: 'float32' });
|
|
160
157
|
}
|
|
161
158
|
static async LslStreamOutlet(options) {
|
|
162
|
-
return await
|
|
159
|
+
return await LslStreamOutlet.Create({
|
|
163
160
|
...this.randomOutletOptions,
|
|
164
161
|
...options,
|
|
165
162
|
});
|
|
166
163
|
}
|
|
167
164
|
}
|
|
168
|
-
exports.default = LslStreamOutletTest;
|
|
169
165
|
__decorate([
|
|
170
|
-
|
|
166
|
+
test()
|
|
171
167
|
], LslStreamOutletTest, "throwsWithEmptyChannelNames", null);
|
|
172
168
|
__decorate([
|
|
173
|
-
|
|
169
|
+
test()
|
|
174
170
|
], LslStreamOutletTest, "allowsZeroSampleRate", null);
|
|
175
171
|
__decorate([
|
|
176
|
-
|
|
172
|
+
test()
|
|
177
173
|
], LslStreamOutletTest, "throwsWithInvalidSampleRate", null);
|
|
178
174
|
__decorate([
|
|
179
|
-
|
|
175
|
+
test()
|
|
180
176
|
], LslStreamOutletTest, "throwsWithInvalidChannelFormat", null);
|
|
181
177
|
__decorate([
|
|
182
|
-
|
|
178
|
+
test()
|
|
183
179
|
], LslStreamOutletTest, "allowsZeroChunkSize", null);
|
|
184
180
|
__decorate([
|
|
185
|
-
|
|
181
|
+
test()
|
|
186
182
|
], LslStreamOutletTest, "throwsWithInvalidChunkSize", null);
|
|
187
183
|
__decorate([
|
|
188
|
-
|
|
184
|
+
test()
|
|
189
185
|
], LslStreamOutletTest, "allowsZeroMaxBuffered", null);
|
|
190
186
|
__decorate([
|
|
191
|
-
|
|
187
|
+
test()
|
|
192
188
|
], LslStreamOutletTest, "throwsWithInvalidMaxBuffered", null);
|
|
193
189
|
__decorate([
|
|
194
|
-
|
|
190
|
+
test()
|
|
195
191
|
], LslStreamOutletTest, "throwsWithUnsupportedType", null);
|
|
196
192
|
__decorate([
|
|
197
|
-
|
|
193
|
+
test()
|
|
198
194
|
], LslStreamOutletTest, "supportsAllKnownChannelFormats", null);
|
|
199
195
|
__decorate([
|
|
200
|
-
|
|
201
|
-
|
|
196
|
+
test('pushing [1, 2] sample sends to LSL', [1.0, 2.0]),
|
|
197
|
+
test('pushing [1] sample sends to LSL', [1.0])
|
|
202
198
|
], LslStreamOutletTest, "canPushFloatSampleToLsl", null);
|
|
203
199
|
__decorate([
|
|
204
|
-
|
|
200
|
+
test()
|
|
205
201
|
], LslStreamOutletTest, "canPushStringSampleToLsl", null);
|
|
206
202
|
__decorate([
|
|
207
|
-
|
|
203
|
+
test()
|
|
208
204
|
], LslStreamOutletTest, "pushingStringTwiceGivesDifferentTimestamps", null);
|
|
209
205
|
__decorate([
|
|
210
|
-
|
|
206
|
+
test()
|
|
211
207
|
], LslStreamOutletTest, "constructionCreatesStreamInfo", null);
|
|
212
208
|
__decorate([
|
|
213
|
-
|
|
209
|
+
test()
|
|
214
210
|
], LslStreamOutletTest, "canOverrideClassInstantiatedInFactory", null);
|
|
215
211
|
__decorate([
|
|
216
|
-
|
|
212
|
+
test()
|
|
217
213
|
], LslStreamOutletTest, "canDestroyOutlet", null);
|
|
218
214
|
__decorate([
|
|
219
|
-
|
|
215
|
+
test()
|
|
220
216
|
], LslStreamOutletTest, "pushSampleShouldNotCreateMultipleOutlets", null);
|
|
221
217
|
__decorate([
|
|
222
|
-
|
|
218
|
+
test()
|
|
223
219
|
], LslStreamOutletTest, "waitsForTenMsAfterConstructionBeforeReturning", null);
|
|
224
|
-
class CheckingOutlet extends
|
|
220
|
+
class CheckingOutlet extends LslStreamOutlet {
|
|
225
221
|
constructor(info, options) {
|
|
226
222
|
super(info, options);
|
|
227
223
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LslStreamOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslStreamOutlet.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
2
|
+
export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
3
|
+
private static instance;
|
|
4
|
+
protected static beforeEach(): Promise<void>;
|
|
5
|
+
protected static createsInstance(): Promise<void>;
|
|
6
|
+
private static LslWebSocketBridge;
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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 LslWebSocketBridge from '../../impl/LslWebSocketBridge.js';
|
|
9
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
10
|
+
export default class LslWebSocketBridgeTest extends AbstractPackageTest {
|
|
11
|
+
static instance;
|
|
12
|
+
static async beforeEach() {
|
|
13
|
+
await super.beforeEach();
|
|
14
|
+
this.instance = this.LslWebSocketBridge();
|
|
15
|
+
}
|
|
16
|
+
static async createsInstance() {
|
|
17
|
+
assert.isTruthy(this.instance, 'Failed to create instance!');
|
|
18
|
+
}
|
|
19
|
+
static LslWebSocketBridge() {
|
|
20
|
+
return LslWebSocketBridge.Create();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
__decorate([
|
|
24
|
+
test()
|
|
25
|
+
], LslWebSocketBridgeTest, "createsInstance", null);
|
|
26
|
+
//# sourceMappingURL=LslWebSocketBridge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LslWebSocketBridge.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LslWebSocketBridge.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,kBAEN,MAAM,kCAAkC,CAAA;AACzC,OAAO,mBAAmB,MAAM,2BAA2B,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,sBAAuB,SAAQ,mBAAmB;IAC3D,MAAM,CAAC,QAAQ,CAAuB;IAEpC,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7C,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAEO,MAAM,CAAC,kBAAkB;QAC7B,OAAO,kBAAkB,CAAC,MAAM,EAAE,CAAA;IACtC,CAAC;CACJ;AAP0B;IADtB,IAAI,EAAE;mDAGN"}
|
package/build/assertions.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChannelFormat } from './types';
|
|
1
|
+
import { ChannelFormat } from './types.js';
|
|
2
2
|
export declare function assertValidChunkSize(chunkSize: number): void;
|
|
3
3
|
export declare function assertValidMaxBuffered(maxBuffered: number): void;
|
|
4
4
|
export declare function assertValidChannelFormat(channelFormat: ChannelFormat): void;
|
package/build/assertions.js
CHANGED
|
@@ -1,34 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.assertValidChannelFormat = assertValidChannelFormat;
|
|
6
|
-
exports.assertValidSampleRate = assertValidSampleRate;
|
|
7
|
-
exports.assertValidChannelCount = assertValidChannelCount;
|
|
8
|
-
const consts_1 = require("./consts");
|
|
9
|
-
const validations_1 = require("./validations");
|
|
10
|
-
function assertValidChunkSize(chunkSize) {
|
|
11
|
-
if (!(0, validations_1.isPositiveIntegerOrZero)(chunkSize)) {
|
|
1
|
+
import { CHANNEL_FORMATS } from './consts.js';
|
|
2
|
+
import { isGreaterThanOrEqualToZero, isPositiveInteger, isPositiveIntegerOrZero, isStringInArray, } from './validations.js';
|
|
3
|
+
export function assertValidChunkSize(chunkSize) {
|
|
4
|
+
if (!isPositiveIntegerOrZero(chunkSize)) {
|
|
12
5
|
throw new Error(`Invalid chunk size! Must be a positive integer or zero, not: ${chunkSize}.`);
|
|
13
6
|
}
|
|
14
7
|
}
|
|
15
|
-
function assertValidMaxBuffered(maxBuffered) {
|
|
16
|
-
if (!
|
|
8
|
+
export function assertValidMaxBuffered(maxBuffered) {
|
|
9
|
+
if (!isPositiveIntegerOrZero(maxBuffered)) {
|
|
17
10
|
throw new Error(`Invalid max buffered! Must be a positive integer or zero, not: ${maxBuffered}.`);
|
|
18
11
|
}
|
|
19
12
|
}
|
|
20
|
-
function assertValidChannelFormat(channelFormat) {
|
|
21
|
-
if (!
|
|
22
|
-
throw new Error(`Invalid channel format! Must be one of: ${
|
|
13
|
+
export function assertValidChannelFormat(channelFormat) {
|
|
14
|
+
if (!isStringInArray(channelFormat, CHANNEL_FORMATS)) {
|
|
15
|
+
throw new Error(`Invalid channel format! Must be one of: ${CHANNEL_FORMATS.join(', ')}, not ${channelFormat}.`);
|
|
23
16
|
}
|
|
24
17
|
}
|
|
25
|
-
function assertValidSampleRate(sampleRate) {
|
|
26
|
-
if (!
|
|
18
|
+
export function assertValidSampleRate(sampleRate) {
|
|
19
|
+
if (!isGreaterThanOrEqualToZero(sampleRate)) {
|
|
27
20
|
throw new Error(`Invalid sample rate! Must be a positive number or zero, not: ${sampleRate}.`);
|
|
28
21
|
}
|
|
29
22
|
}
|
|
30
|
-
function assertValidChannelCount(channelCount) {
|
|
31
|
-
if (!
|
|
23
|
+
export function assertValidChannelCount(channelCount) {
|
|
24
|
+
if (!isPositiveInteger(channelCount)) {
|
|
32
25
|
throw new Error(`Invalid channel count! Must be a positive integer, not: ${channelCount}.`);
|
|
33
26
|
}
|
|
34
27
|
}
|
package/build/assertions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../src/assertions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../src/assertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAClB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IAClD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACX,gEAAgE,SAAS,GAAG,CAC/E,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACtD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACX,kEAAkE,WAAW,GAAG,CACnF,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAA4B;IACjE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACX,2CAA2C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,aAAa,GAAG,CACjG,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACpD,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACX,gEAAgE,UAAU,GAAG,CAChF,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACX,2DAA2D,YAAY,GAAG,CAC7E,CAAA;IACL,CAAC;AACL,CAAC"}
|
package/build/consts.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CHANNEL_FORMATS_MAP = exports.CHANNEL_FORMATS = void 0;
|
|
4
|
-
exports.CHANNEL_FORMATS = [
|
|
1
|
+
export const CHANNEL_FORMATS = [
|
|
5
2
|
'undefined',
|
|
6
3
|
'float32',
|
|
7
4
|
'double64',
|
|
@@ -11,7 +8,7 @@ exports.CHANNEL_FORMATS = [
|
|
|
11
8
|
'int8',
|
|
12
9
|
'int64',
|
|
13
10
|
];
|
|
14
|
-
|
|
11
|
+
export const CHANNEL_FORMATS_MAP = {
|
|
15
12
|
undefined: 0,
|
|
16
13
|
float32: 1,
|
|
17
14
|
double64: 2,
|
package/build/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACD,CAAA;AAEV,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACX,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { define, open } from 'ffi-rs';
|
|
2
|
-
import { Liblsl, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, DestroyOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, CreateInletOptions, DestroyInletOptions } from '../types';
|
|
2
|
+
import { Liblsl, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, DestroyOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, CreateInletOptions, DestroyInletOptions, FlushInletOptions } from '../types.js';
|
|
3
3
|
export default class LiblslAdapter implements Liblsl {
|
|
4
4
|
static ffiRsOpen: typeof open;
|
|
5
5
|
static ffiRsDefine: typeof define;
|
|
@@ -13,13 +13,14 @@ export default class LiblslAdapter implements Liblsl {
|
|
|
13
13
|
static setInstance(instance: Liblsl): void;
|
|
14
14
|
static resetInstance(): void;
|
|
15
15
|
private loadBindings;
|
|
16
|
-
createStreamInfo(options: CreateStreamInfoOptions): import("../types").BoundStreamInfo;
|
|
16
|
+
createStreamInfo(options: CreateStreamInfoOptions): import("../types.js").BoundStreamInfo;
|
|
17
17
|
appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
|
|
18
|
-
createOutlet(options: CreateOutletOptions): import("../types").BoundOutlet;
|
|
18
|
+
createOutlet(options: CreateOutletOptions): import("../types.js").BoundOutlet;
|
|
19
19
|
pushSampleFloatTimestamp(options: PushSampleFloatTimestampOptions): void;
|
|
20
20
|
pushSampleStringTimestamp(options: PushSampleStringTimestampOptions): void;
|
|
21
21
|
destroyOutlet(options: DestroyOutletOptions): void;
|
|
22
|
-
createInlet(options: CreateInletOptions): import("../types").BoundInlet;
|
|
22
|
+
createInlet(options: CreateInletOptions): import("../types.js").BoundInlet;
|
|
23
|
+
flushInlet(options: FlushInletOptions): void;
|
|
23
24
|
destroyInlet(_options: DestroyInletOptions): void;
|
|
24
25
|
localClock(): number;
|
|
25
26
|
private readonly defaultMacOsPath;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { DataType, define, open } from 'ffi-rs';
|
|
2
|
+
export default class LiblslAdapter {
|
|
3
|
+
static ffiRsOpen = open;
|
|
4
|
+
static ffiRsDefine = define;
|
|
5
|
+
static instance;
|
|
6
|
+
path;
|
|
7
|
+
bindings;
|
|
5
8
|
constructor() {
|
|
6
|
-
this.defaultMacOsPath = '/opt/homebrew/Cellar/lsl/1.16.2/lib/liblsl.1.16.2.dylib';
|
|
7
9
|
this.path = process.env.LIBLSL_PATH ?? this.defaultMacOsPath;
|
|
8
10
|
this.tryToLoadBindings();
|
|
9
11
|
}
|
|
@@ -38,78 +40,83 @@ class LiblslAdapter {
|
|
|
38
40
|
return LiblslAdapter.ffiRsDefine({
|
|
39
41
|
lsl_create_streaminfo: {
|
|
40
42
|
library: 'lsl',
|
|
41
|
-
retType:
|
|
43
|
+
retType: DataType.External,
|
|
42
44
|
paramsType: [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
DataType.String,
|
|
46
|
+
DataType.String,
|
|
47
|
+
DataType.I32,
|
|
48
|
+
DataType.Double,
|
|
49
|
+
DataType.I32,
|
|
50
|
+
DataType.String,
|
|
49
51
|
],
|
|
50
52
|
},
|
|
51
53
|
lsl_create_outlet: {
|
|
52
54
|
library: 'lsl',
|
|
53
|
-
retType:
|
|
54
|
-
paramsType: [
|
|
55
|
+
retType: DataType.External,
|
|
56
|
+
paramsType: [DataType.External, DataType.I32, DataType.I32],
|
|
55
57
|
},
|
|
56
|
-
|
|
58
|
+
lsl_push_sample_ft: {
|
|
57
59
|
library: 'lsl',
|
|
58
|
-
retType:
|
|
59
|
-
paramsType: [
|
|
60
|
+
retType: DataType.Void,
|
|
61
|
+
paramsType: [
|
|
62
|
+
DataType.External,
|
|
63
|
+
DataType.FloatArray,
|
|
64
|
+
DataType.Double,
|
|
65
|
+
],
|
|
60
66
|
},
|
|
61
|
-
|
|
67
|
+
lsl_push_sample_strt: {
|
|
62
68
|
library: 'lsl',
|
|
63
|
-
retType:
|
|
64
|
-
paramsType: [
|
|
69
|
+
retType: DataType.Void,
|
|
70
|
+
paramsType: [
|
|
71
|
+
DataType.External,
|
|
72
|
+
DataType.StringArray,
|
|
73
|
+
DataType.Double,
|
|
74
|
+
],
|
|
65
75
|
},
|
|
66
|
-
|
|
76
|
+
lsl_destroy_outlet: {
|
|
67
77
|
library: 'lsl',
|
|
68
|
-
retType:
|
|
69
|
-
paramsType: [
|
|
78
|
+
retType: DataType.Void,
|
|
79
|
+
paramsType: [DataType.External],
|
|
70
80
|
},
|
|
71
|
-
|
|
81
|
+
lsl_create_inlet: {
|
|
72
82
|
library: 'lsl',
|
|
73
|
-
retType:
|
|
74
|
-
paramsType: [],
|
|
83
|
+
retType: DataType.External,
|
|
84
|
+
paramsType: [DataType.External, DataType.I32, DataType.I32],
|
|
75
85
|
},
|
|
76
|
-
|
|
86
|
+
lsl_flush_inlet: {
|
|
77
87
|
library: 'lsl',
|
|
78
|
-
retType:
|
|
79
|
-
paramsType: [
|
|
80
|
-
ffi_rs_1.DataType.External,
|
|
81
|
-
ffi_rs_1.DataType.FloatArray,
|
|
82
|
-
ffi_rs_1.DataType.Double,
|
|
83
|
-
],
|
|
88
|
+
retType: DataType.I32,
|
|
89
|
+
paramsType: [DataType.External],
|
|
84
90
|
},
|
|
85
|
-
|
|
91
|
+
lsl_destroy_inlet: {
|
|
86
92
|
library: 'lsl',
|
|
87
|
-
retType:
|
|
88
|
-
paramsType: [
|
|
89
|
-
ffi_rs_1.DataType.External,
|
|
90
|
-
ffi_rs_1.DataType.StringArray,
|
|
91
|
-
ffi_rs_1.DataType.Double,
|
|
92
|
-
],
|
|
93
|
+
retType: DataType.Void,
|
|
94
|
+
paramsType: [DataType.External],
|
|
93
95
|
},
|
|
94
96
|
lsl_get_desc: {
|
|
95
97
|
library: 'lsl',
|
|
96
|
-
retType:
|
|
97
|
-
paramsType: [
|
|
98
|
+
retType: DataType.External,
|
|
99
|
+
paramsType: [DataType.External],
|
|
98
100
|
},
|
|
99
101
|
lsl_append_child: {
|
|
100
102
|
library: 'lsl',
|
|
101
|
-
retType:
|
|
102
|
-
paramsType: [
|
|
103
|
+
retType: DataType.External,
|
|
104
|
+
paramsType: [DataType.External, DataType.String],
|
|
103
105
|
},
|
|
104
106
|
lsl_append_child_value: {
|
|
105
107
|
library: 'lsl',
|
|
106
|
-
retType:
|
|
108
|
+
retType: DataType.External,
|
|
107
109
|
paramsType: [
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
110
|
+
DataType.External,
|
|
111
|
+
DataType.String,
|
|
112
|
+
DataType.String,
|
|
111
113
|
],
|
|
112
114
|
},
|
|
115
|
+
lsl_local_clock: {
|
|
116
|
+
library: 'lsl',
|
|
117
|
+
retType: DataType.Double,
|
|
118
|
+
paramsType: [],
|
|
119
|
+
},
|
|
113
120
|
});
|
|
114
121
|
}
|
|
115
122
|
createStreamInfo(options) {
|
|
@@ -158,12 +165,14 @@ class LiblslAdapter {
|
|
|
158
165
|
const { info, chunkSize, maxBuffered } = options;
|
|
159
166
|
return this.bindings.lsl_create_inlet([info, chunkSize, maxBuffered]);
|
|
160
167
|
}
|
|
168
|
+
flushInlet(options) {
|
|
169
|
+
const { inlet } = options;
|
|
170
|
+
this.bindings.lsl_flush_inlet([inlet]);
|
|
171
|
+
}
|
|
161
172
|
destroyInlet(_options) { }
|
|
162
173
|
localClock() {
|
|
163
174
|
return this.bindings.lsl_local_clock([]);
|
|
164
175
|
}
|
|
176
|
+
defaultMacOsPath = '/opt/homebrew/Cellar/lsl/1.16.2/lib/liblsl.1.16.2.dylib';
|
|
165
177
|
}
|
|
166
|
-
LiblslAdapter.ffiRsOpen = ffi_rs_1.open;
|
|
167
|
-
LiblslAdapter.ffiRsDefine = ffi_rs_1.define;
|
|
168
|
-
exports.default = LiblslAdapter;
|
|
169
178
|
//# sourceMappingURL=LiblslAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiblslAdapter.js","sourceRoot":"","sources":["../../src/impl/LiblslAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DurationMarker } from '../types.js';
|
|
2
|
+
import { StreamOutletOptions, StreamOutlet } from './LslStreamOutlet.js';
|
|
3
|
+
export default class LslEventMarkerOutlet implements EventMarkerOutlet {
|
|
4
|
+
static Class?: EventMarkerOutletConstructor;
|
|
5
|
+
protected outlet: StreamOutlet;
|
|
6
|
+
private isPlaying;
|
|
7
|
+
private waitResolve?;
|
|
8
|
+
private timeout?;
|
|
9
|
+
protected constructor(outlet: StreamOutlet);
|
|
10
|
+
static Create(options?: Partial<StreamOutletOptions>): Promise<EventMarkerOutlet>;
|
|
11
|
+
pushMarker(markerName: string): void;
|
|
12
|
+
pushMarkers(markers: DurationMarker[]): Promise<void>;
|
|
13
|
+
private pushMarkerToOutlet;
|
|
14
|
+
protected wait(durationMs: number): Promise<unknown>;
|
|
15
|
+
private setTimeout;
|
|
16
|
+
stop(): void;
|
|
17
|
+
}
|
|
18
|
+
export interface EventMarkerOutlet {
|
|
19
|
+
pushMarker(markerName: string): void;
|
|
20
|
+
pushMarkers(markers: DurationMarker[]): Promise<void>;
|
|
21
|
+
stop(): void;
|
|
22
|
+
}
|
|
23
|
+
export type EventMarkerOutletConstructor = new (outlet: StreamOutlet) => EventMarkerOutlet;
|