@neurodevs/node-lsl 10.1.4 → 10.2.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/build/__tests__/AbstractNodeLslTest.d.ts +18 -0
- package/build/__tests__/AbstractNodeLslTest.js +80 -0
- package/build/__tests__/AbstractNodeLslTest.js.map +1 -0
- package/build/__tests__/{implementation/Liblsl.test.d.ts → Liblsl.test.d.ts} +6 -0
- package/build/__tests__/{implementation/Liblsl.test.js → Liblsl.test.js} +60 -14
- package/build/__tests__/Liblsl.test.js.map +1 -0
- package/build/__tests__/LslInlet.test.d.ts +11 -0
- package/build/__tests__/LslInlet.test.js +94 -0
- package/build/__tests__/LslInlet.test.js.map +1 -0
- package/build/__tests__/{behavioral/LslOutlet.test.d.ts → LslOutlet.test.d.ts} +3 -6
- package/build/__tests__/{behavioral/LslOutlet.test.js → LslOutlet.test.js} +24 -68
- package/build/__tests__/LslOutlet.test.js.map +1 -0
- package/build/__tests__/LslStreamInfo.test.d.ts +21 -0
- package/build/__tests__/LslStreamInfo.test.js +166 -0
- package/build/__tests__/LslStreamInfo.test.js.map +1 -0
- package/build/__tests__/SpyLslStreamInfo.d.ts +5 -0
- package/build/__tests__/SpyLslStreamInfo.js +17 -0
- package/build/__tests__/SpyLslStreamInfo.js.map +1 -0
- package/build/__tests__/{behavioral/TimeMarkerOutlet.test.d.ts → TimeMarkerOutlet.test.d.ts} +2 -3
- package/build/__tests__/{behavioral/TimeMarkerOutlet.test.js → TimeMarkerOutlet.test.js} +7 -33
- package/build/__tests__/TimeMarkerOutlet.test.js.map +1 -0
- package/build/{implementations → components}/Liblsl.d.ts +4 -2
- package/build/{implementations → components}/Liblsl.js +23 -4
- package/build/components/Liblsl.js.map +1 -0
- package/build/components/LslInlet.d.ts +31 -0
- package/build/components/LslInlet.js +51 -0
- package/build/components/LslInlet.js.map +1 -0
- package/build/{implementations → components}/LslOutlet.d.ts +20 -9
- package/build/components/LslOutlet.js +118 -0
- package/build/components/LslOutlet.js.map +1 -0
- package/build/components/LslStreamInfo.d.ts +38 -0
- package/build/components/LslStreamInfo.js +65 -0
- package/build/components/LslStreamInfo.js.map +1 -0
- package/build/{implementations → components}/TimeMarkerOutlet.d.ts +2 -1
- package/build/{implementations → components}/TimeMarkerOutlet.js +1 -1
- package/build/components/TimeMarkerOutlet.js.map +1 -0
- package/build/demo.d.ts +1 -0
- package/build/demo.js +42 -0
- package/build/demo.js.map +1 -0
- package/build/index.d.ts +12 -7
- package/build/index.js +16 -8
- package/build/index.js.map +1 -1
- package/build/nodeLsl.types.d.ts +34 -18
- package/build/testDoubles/FakeLiblsl.d.ts +11 -3
- package/build/testDoubles/FakeLiblsl.js +29 -5
- package/build/testDoubles/FakeLiblsl.js.map +1 -1
- package/build/testDoubles/FakeLslOutlet.d.ts +4 -2
- package/build/testDoubles/FakeLslOutlet.js +2 -1
- package/build/testDoubles/FakeLslOutlet.js.map +1 -1
- package/build/testDoubles/FakeLslStreamInfo.d.ts +5 -0
- package/build/testDoubles/FakeLslStreamInfo.js +10 -0
- package/build/testDoubles/FakeLslStreamInfo.js.map +1 -0
- package/build/testDoubles/FakeStreamInfo.d.ts +9 -0
- package/build/testDoubles/FakeStreamInfo.js +17 -0
- package/build/testDoubles/FakeStreamInfo.js.map +1 -0
- package/build/testDoubles/FakeTimeMarkerOutlet.d.ts +1 -1
- package/build/testDoubles/SpyLslInlet.d.ts +7 -0
- package/build/testDoubles/SpyLslInlet.js +20 -0
- package/build/testDoubles/SpyLslInlet.js.map +1 -0
- package/build/testDoubles/SpyLslStreamInfo.d.ts +9 -0
- package/build/testDoubles/SpyLslStreamInfo.js +28 -0
- package/build/testDoubles/SpyLslStreamInfo.js.map +1 -0
- package/build/testDoubles/SpyTimeMarkerOutlet.d.ts +4 -3
- package/build/testDoubles/SpyTimeMarkerOutlet.js +3 -3
- package/build/testDoubles/SpyTimeMarkerOutlet.js.map +1 -1
- package/build/testDoubles/consts.js.map +1 -0
- package/build/{__tests__/support → testDoubles}/generateRandomOutletOptions.d.ts +1 -1
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/AbstractNodeLslTest.ts +50 -0
- package/src/__tests__/{implementation/Liblsl.test.ts → Liblsl.test.ts} +49 -8
- package/src/__tests__/LslInlet.test.ts +99 -0
- package/src/__tests__/{behavioral/LslOutlet.test.ts → LslOutlet.test.ts} +29 -64
- package/src/__tests__/LslStreamInfo.test.ts +209 -0
- package/src/__tests__/{behavioral/TimeMarkerOutlet.test.ts → TimeMarkerOutlet.test.ts} +12 -17
- package/src/{implementations → components}/Liblsl.ts +29 -5
- package/src/components/LslInlet.ts +85 -0
- package/src/{implementations → components}/LslOutlet.ts +91 -64
- package/src/components/LslStreamInfo.ts +105 -0
- package/src/{implementations → components}/TimeMarkerOutlet.ts +3 -1
- package/src/demo.ts +43 -0
- package/src/index.ts +15 -7
- package/src/nodeLsl.types.ts +36 -23
- package/src/testDoubles/FakeLiblsl.ts +40 -7
- package/src/testDoubles/FakeLslOutlet.ts +5 -2
- package/src/testDoubles/FakeStreamInfo.ts +19 -0
- package/src/testDoubles/FakeTimeMarkerOutlet.ts +1 -1
- package/src/testDoubles/SpyLslInlet.ts +16 -0
- package/src/testDoubles/SpyLslStreamInfo.ts +27 -0
- package/src/testDoubles/SpyTimeMarkerOutlet.ts +5 -4
- package/src/{__tests__/support → testDoubles}/generateRandomOutletOptions.ts +1 -1
- package/build/__tests__/behavioral/LslOutlet.test.js.map +0 -1
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js.map +0 -1
- package/build/__tests__/implementation/Liblsl.test.js.map +0 -1
- package/build/__tests__/support/consts.js.map +0 -1
- package/build/__tests__/support/generateRandomOutletOptions.js.map +0 -1
- package/build/implementations/Liblsl.js.map +0 -1
- package/build/implementations/LslOutlet.js +0 -94
- package/build/implementations/LslOutlet.js.map +0 -1
- package/build/implementations/TimeMarkerOutlet.js.map +0 -1
- /package/build/{__tests__/support → testDoubles}/consts.d.ts +0 -0
- /package/build/{__tests__/support → testDoubles}/consts.js +0 -0
- /package/build/{__tests__/support → testDoubles}/generateRandomOutletOptions.js +0 -0
- /package/src/{__tests__/support → testDoubles}/consts.ts +0 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
var _a;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
14
|
+
const LslStreamInfo_1 = __importDefault(require("../components/LslStreamInfo"));
|
|
15
|
+
const consts_1 = require("../consts");
|
|
16
|
+
const AbstractNodeLslTest_1 = __importDefault(require("./AbstractNodeLslTest"));
|
|
17
|
+
class LslStreamInfoTest extends AbstractNodeLslTest_1.default {
|
|
18
|
+
static async beforeEach() {
|
|
19
|
+
await super.beforeEach();
|
|
20
|
+
this.setSpyLslStreamInfo();
|
|
21
|
+
this.instance = this.LslStreamInfo();
|
|
22
|
+
}
|
|
23
|
+
static async canCreateLslStreamInfo() {
|
|
24
|
+
test_utils_1.assert.isTruthy(this.instance, 'Instance should be created!');
|
|
25
|
+
}
|
|
26
|
+
static async throwsWithMissingRequiredOptions() {
|
|
27
|
+
const err = test_utils_1.assert.doesThrow(
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
() => LslStreamInfo_1.default.Create());
|
|
30
|
+
test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
|
|
31
|
+
parameters: ['channelNames', 'channelFormat', 'sampleRate'],
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static async generatesUniqueNameIfNotProvided() {
|
|
35
|
+
const instance1 = this.LslStreamInfo({ name: undefined });
|
|
36
|
+
const instance2 = this.LslStreamInfo({ name: undefined });
|
|
37
|
+
test_utils_1.assert.isNotEqual(instance1.getName(), instance2.getName(), 'Inlet names should be unique!');
|
|
38
|
+
}
|
|
39
|
+
static async uniqueNameHasSetPrefix() {
|
|
40
|
+
const instance = this.LslStreamInfo({ name: undefined });
|
|
41
|
+
test_utils_1.assert.doesInclude(instance.getName(), 'lsl-stream-info-', 'Name should have set prefix!');
|
|
42
|
+
}
|
|
43
|
+
static async canManuallySetName() {
|
|
44
|
+
const name = (0, test_utils_1.generateId)();
|
|
45
|
+
const instance = this.LslStreamInfo({ name });
|
|
46
|
+
test_utils_1.assert.isEqual(instance.getName(), name, 'Name should be set to provided value!');
|
|
47
|
+
}
|
|
48
|
+
static async generatesUniqueTypeIfNotProvided() {
|
|
49
|
+
const instance1 = this.LslStreamInfo({ type: undefined });
|
|
50
|
+
const instance2 = this.LslStreamInfo({ type: undefined });
|
|
51
|
+
test_utils_1.assert.isNotEqual(instance1.getType(), instance2.getType(), 'Inlet types should be unique!');
|
|
52
|
+
}
|
|
53
|
+
static async canManuallySetType() {
|
|
54
|
+
const type = (0, test_utils_1.generateId)();
|
|
55
|
+
const instance = this.LslStreamInfo({ type });
|
|
56
|
+
test_utils_1.assert.isEqual(instance.getType(), type, 'Type should be set to provided value!');
|
|
57
|
+
}
|
|
58
|
+
static async generatesUniqueSourceIdIfNotProvided() {
|
|
59
|
+
const instance1 = this.LslStreamInfo({ sourceId: undefined });
|
|
60
|
+
const instance2 = this.LslStreamInfo({ sourceId: undefined });
|
|
61
|
+
test_utils_1.assert.isNotEqual(instance1.getSourceId(), instance2.getSourceId(), 'Inlet sourceIds should be unique!');
|
|
62
|
+
}
|
|
63
|
+
static async canManuallySetSourceId() {
|
|
64
|
+
const sourceId = (0, test_utils_1.generateId)();
|
|
65
|
+
const instance = this.LslStreamInfo({ sourceId });
|
|
66
|
+
test_utils_1.assert.isEqual(instance.getSourceId(), sourceId, 'SourceId should be set to provided value!');
|
|
67
|
+
}
|
|
68
|
+
static async setsUnitsToNAIfNotProvided() {
|
|
69
|
+
test_utils_1.assert.isEqual(this.instance.getUnits(), 'N/A', 'Units should be set to "N/A"!');
|
|
70
|
+
}
|
|
71
|
+
static async canManuallySetUnits() {
|
|
72
|
+
const units = (0, test_utils_1.generateId)();
|
|
73
|
+
const instance = this.LslStreamInfo({ units });
|
|
74
|
+
test_utils_1.assert.isEqual(instance.getUnits(), units, 'Units should be set to provided value!');
|
|
75
|
+
}
|
|
76
|
+
static async callsBindingsToCreateStreamInfo() {
|
|
77
|
+
test_utils_1.assert.isEqual(this.fakeLiblsl.createStreamInfoHitCount, 1, 'Should have called createStreamInfo!');
|
|
78
|
+
}
|
|
79
|
+
static async passesOptionsToStreamInfo() {
|
|
80
|
+
const randomChannelIdx = Math.floor(Math.random() * consts_1.CHANNEL_FORMATS.length);
|
|
81
|
+
const options = {
|
|
82
|
+
name: (0, test_utils_1.generateId)(),
|
|
83
|
+
type: (0, test_utils_1.generateId)(),
|
|
84
|
+
sourceId: (0, test_utils_1.generateId)(),
|
|
85
|
+
channelCount: this.channelNames.length,
|
|
86
|
+
channelFormat: consts_1.CHANNEL_FORMATS[randomChannelIdx],
|
|
87
|
+
sampleRate: 100 * Math.random(),
|
|
88
|
+
};
|
|
89
|
+
this.LslStreamInfo(options);
|
|
90
|
+
const expected = {
|
|
91
|
+
...options,
|
|
92
|
+
channelFormat: randomChannelIdx,
|
|
93
|
+
};
|
|
94
|
+
test_utils_1.assert.isEqualDeep(this.fakeLiblsl.lastCreateStreamInfoOptions, expected, 'Should have passed options to createStreamInfo!');
|
|
95
|
+
}
|
|
96
|
+
static async appendsChannelsToStreamInfo() {
|
|
97
|
+
this.LslStreamInfo({ units: this.units, type: this.type });
|
|
98
|
+
test_utils_1.assert.isEqualDeep(this.fakeLiblsl.lastAppendChannelsToStreamInfoOptions, {
|
|
99
|
+
info: this.instance.getStreamInfo(),
|
|
100
|
+
channels: this.channelNames.map((label) => ({
|
|
101
|
+
label,
|
|
102
|
+
unit: this.units,
|
|
103
|
+
type: this.type,
|
|
104
|
+
})),
|
|
105
|
+
}, 'Should have called appendChannelsToStreamInfo!');
|
|
106
|
+
}
|
|
107
|
+
static LslStreamInfo(options) {
|
|
108
|
+
return LslStreamInfo_1.default.Create({
|
|
109
|
+
...this.defaultOptions,
|
|
110
|
+
...options,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
_a = LslStreamInfoTest;
|
|
115
|
+
LslStreamInfoTest.defaultOptions = {
|
|
116
|
+
name: (0, test_utils_1.generateId)(),
|
|
117
|
+
type: (0, test_utils_1.generateId)(),
|
|
118
|
+
sourceId: (0, test_utils_1.generateId)(),
|
|
119
|
+
channelNames: _a.channelNames,
|
|
120
|
+
channelFormat: 'float32',
|
|
121
|
+
sampleRate: 100 * Math.random(),
|
|
122
|
+
};
|
|
123
|
+
exports.default = LslStreamInfoTest;
|
|
124
|
+
__decorate([
|
|
125
|
+
(0, test_utils_1.test)()
|
|
126
|
+
], LslStreamInfoTest, "canCreateLslStreamInfo", null);
|
|
127
|
+
__decorate([
|
|
128
|
+
(0, test_utils_1.test)()
|
|
129
|
+
], LslStreamInfoTest, "throwsWithMissingRequiredOptions", null);
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, test_utils_1.test)()
|
|
132
|
+
], LslStreamInfoTest, "generatesUniqueNameIfNotProvided", null);
|
|
133
|
+
__decorate([
|
|
134
|
+
(0, test_utils_1.test)()
|
|
135
|
+
], LslStreamInfoTest, "uniqueNameHasSetPrefix", null);
|
|
136
|
+
__decorate([
|
|
137
|
+
(0, test_utils_1.test)()
|
|
138
|
+
], LslStreamInfoTest, "canManuallySetName", null);
|
|
139
|
+
__decorate([
|
|
140
|
+
(0, test_utils_1.test)()
|
|
141
|
+
], LslStreamInfoTest, "generatesUniqueTypeIfNotProvided", null);
|
|
142
|
+
__decorate([
|
|
143
|
+
(0, test_utils_1.test)()
|
|
144
|
+
], LslStreamInfoTest, "canManuallySetType", null);
|
|
145
|
+
__decorate([
|
|
146
|
+
(0, test_utils_1.test)()
|
|
147
|
+
], LslStreamInfoTest, "generatesUniqueSourceIdIfNotProvided", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
(0, test_utils_1.test)()
|
|
150
|
+
], LslStreamInfoTest, "canManuallySetSourceId", null);
|
|
151
|
+
__decorate([
|
|
152
|
+
(0, test_utils_1.test)()
|
|
153
|
+
], LslStreamInfoTest, "setsUnitsToNAIfNotProvided", null);
|
|
154
|
+
__decorate([
|
|
155
|
+
(0, test_utils_1.test)()
|
|
156
|
+
], LslStreamInfoTest, "canManuallySetUnits", null);
|
|
157
|
+
__decorate([
|
|
158
|
+
(0, test_utils_1.test)()
|
|
159
|
+
], LslStreamInfoTest, "callsBindingsToCreateStreamInfo", null);
|
|
160
|
+
__decorate([
|
|
161
|
+
(0, test_utils_1.test)()
|
|
162
|
+
], LslStreamInfoTest, "passesOptionsToStreamInfo", null);
|
|
163
|
+
__decorate([
|
|
164
|
+
(0, test_utils_1.test)()
|
|
165
|
+
], LslStreamInfoTest, "appendsChannelsToStreamInfo", null);
|
|
166
|
+
//# sourceMappingURL=LslStreamInfo.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LslStreamInfo.test.js","sourceRoot":"","sources":["../../src/__tests__/LslStreamInfo.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAA8E;AAC9E,gFAA8E;AAC9E,sCAA2C;AAE3C,gFAAuD;AAEvD,MAAqB,iBAAkB,SAAQ,6BAAmB;IAGpD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IACxC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB;QACzC,mBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAA;IACjE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS;QACxB,aAAa;QACb,GAAG,EAAE,CAAC,uBAAa,CAAC,MAAM,EAAE,CAC/B,CAAA;QACD,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAC/C,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC;SAC9D,CAAC,CAAA;IACN,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAEzD,mBAAM,CAAC,UAAU,CACb,SAAS,CAAC,OAAO,EAAE,EACnB,SAAS,CAAC,OAAO,EAAE,EACnB,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAExD,mBAAM,CAAC,WAAW,CACd,QAAQ,CAAC,OAAO,EAAE,EAClB,kBAAkB,EAClB,8BAA8B,CACjC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kBAAkB;QACrC,MAAM,IAAI,GAAG,IAAA,uBAAU,GAAE,CAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7C,mBAAM,CAAC,OAAO,CACV,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,uCAAuC,CAC1C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAEzD,mBAAM,CAAC,UAAU,CACb,SAAS,CAAC,OAAO,EAAE,EACnB,SAAS,CAAC,OAAO,EAAE,EACnB,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kBAAkB;QACrC,MAAM,IAAI,GAAG,IAAA,uBAAU,GAAE,CAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7C,mBAAM,CAAC,OAAO,CACV,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,uCAAuC,CAC1C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,oCAAoC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;QAE7D,mBAAM,CAAC,UAAU,CACb,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,WAAW,EAAE,EACvB,mCAAmC,CACtC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB;QACzC,MAAM,QAAQ,GAAG,IAAA,uBAAU,GAAE,CAAA;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;QAEjD,mBAAM,CAAC,OAAO,CACV,QAAQ,CAAC,WAAW,EAAE,EACtB,QAAQ,EACR,2CAA2C,CAC9C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,0BAA0B;QAC7C,mBAAM,CAAC,OAAO,CACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EACxB,KAAK,EACL,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,mBAAmB;QACtC,MAAM,KAAK,GAAG,IAAA,uBAAU,GAAE,CAAA;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QAE9C,mBAAM,CAAC,OAAO,CACV,QAAQ,CAAC,QAAQ,EAAE,EACnB,KAAK,EACL,wCAAwC,CAC3C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;QAClD,mBAAM,CAAC,OAAO,CACV,IAAI,CAAC,UAAU,CAAC,wBAAwB,EACxC,CAAC,EACD,sCAAsC,CACzC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,yBAAyB;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAC/B,IAAI,CAAC,MAAM,EAAE,GAAG,wBAAe,CAAC,MAAM,CACzC,CAAA;QAED,MAAM,OAAO,GAAG;YACZ,IAAI,EAAE,IAAA,uBAAU,GAAE;YAClB,IAAI,EAAE,IAAA,uBAAU,GAAE;YAClB,QAAQ,EAAE,IAAA,uBAAU,GAAE;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;YACtC,aAAa,EAAE,wBAAe,CAAC,gBAAgB,CAAC;YAChD,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;SAClC,CAAA;QAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE3B,MAAM,QAAQ,GAAG;YACb,GAAG,OAAO;YACV,aAAa,EAAE,gBAAgB;SAClC,CAAA;QAED,mBAAM,CAAC,WAAW,CACd,IAAI,CAAC,UAAU,CAAC,2BAA2B,EAC3C,QAAQ,EACR,iDAAiD,CACpD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,2BAA2B;QAC9C,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAE1D,mBAAM,CAAC,WAAW,CACd,IAAI,CAAC,UAAU,CAAC,qCAAqC,EACrD;YACI,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YACnC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;SACN,EACD,gDAAgD,CACnD,CAAA;IACL,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,OAAoC;QAC7D,OAAO,uBAAa,CAAC,MAAM,CAAC;YACxB,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,OAAO;SACb,CAAqB,CAAA;IAC1B,CAAC;;;AAEuB,gCAAc,GAAG;IACrC,IAAI,EAAE,IAAA,uBAAU,GAAE;IAClB,IAAI,EAAE,IAAA,uBAAU,GAAE;IAClB,QAAQ,EAAE,IAAA,uBAAU,GAAE;IACtB,YAAY,EAAE,EAAI,CAAC,YAAY;IAC/B,aAAa,EAAE,SAAS;IACxB,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;CACb,AAPgB,CAOhB;kBAzML,iBAAiB;AAYX;IADtB,IAAA,iBAAI,GAAE;qDAGN;AAGsB;IADtB,IAAA,iBAAI,GAAE;+DASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;+DAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;qDASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;iDAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;+DAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;iDAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;mEAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;qDAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;yDAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;kDAUN;AAGsB;IADtB,IAAA,iBAAI,GAAE;8DAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;wDA2BN;AAGsB;IADtB,IAAA,iBAAI,GAAE;0DAgBN"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SpyLslStreamInfo = void 0;
|
|
7
|
+
const LslStreamInfo_1 = __importDefault(require("../components/LslStreamInfo"));
|
|
8
|
+
class SpyLslStreamInfo extends LslStreamInfo_1.default {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
super(options);
|
|
11
|
+
}
|
|
12
|
+
getName() {
|
|
13
|
+
return this.name;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.SpyLslStreamInfo = SpyLslStreamInfo;
|
|
17
|
+
//# sourceMappingURL=SpyLslStreamInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyLslStreamInfo.js","sourceRoot":"","sources":["../../src/__tests__/SpyLslStreamInfo.ts"],"names":[],"mappings":";;;;;;AAAA,gFAA+E;AAE/E,MAAa,gBAAiB,SAAQ,uBAAa;IAC/C,YAAmB,OAA0B;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AARD,4CAQC"}
|
package/build/__tests__/{behavioral/TimeMarkerOutlet.test.d.ts → TimeMarkerOutlet.test.d.ts}
RENAMED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class TimeMarkerOutletTest extends
|
|
3
|
-
private static fakeLiblsl;
|
|
1
|
+
import AbstractNodeLslTest from './AbstractNodeLslTest';
|
|
2
|
+
export default class TimeMarkerOutletTest extends AbstractNodeLslTest {
|
|
4
3
|
private static outlet;
|
|
5
4
|
protected static beforeEach(): Promise<void>;
|
|
6
5
|
protected static loadsWithTimeMarkerSpecificOptions(): Promise<void>;
|
|
@@ -1,50 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
5
|
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;
|
|
22
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
7
|
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
-
if (mod && mod.__esModule) return mod;
|
|
26
|
-
var result = {};
|
|
27
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
-
__setModuleDefault(result, mod);
|
|
29
|
-
return result;
|
|
30
|
-
};
|
|
31
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
32
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
33
10
|
};
|
|
34
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
12
|
const crypto_1 = require("crypto");
|
|
36
|
-
const test_utils_1 =
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
const generateRandomOutletOptions_1 = __importDefault(require("../support/generateRandomOutletOptions"));
|
|
42
|
-
class TimeMarkerOutletTest extends test_utils_1.default {
|
|
13
|
+
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
14
|
+
const TimeMarkerOutlet_1 = __importDefault(require("../components/TimeMarkerOutlet"));
|
|
15
|
+
const generateRandomOutletOptions_1 = __importDefault(require("../testDoubles/generateRandomOutletOptions"));
|
|
16
|
+
const AbstractNodeLslTest_1 = __importDefault(require("./AbstractNodeLslTest"));
|
|
17
|
+
class TimeMarkerOutletTest extends AbstractNodeLslTest_1.default {
|
|
43
18
|
static async beforeEach() {
|
|
44
19
|
await super.beforeEach();
|
|
45
|
-
|
|
46
|
-
this.
|
|
47
|
-
Liblsl_1.default.setInstance(this.fakeLiblsl);
|
|
20
|
+
this.setSpyTimeMarkerOutlet();
|
|
21
|
+
this.setFakeLiblsl();
|
|
48
22
|
this.outlet = await this.Outlet();
|
|
49
23
|
}
|
|
50
24
|
static async loadsWithTimeMarkerSpecificOptions() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../src/__tests__/TimeMarkerOutlet.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { define, open } from 'ffi-rs';
|
|
2
|
-
import { Liblsl, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, DestroyOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions } from '../nodeLsl.types';
|
|
2
|
+
import { Liblsl, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, DestroyOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, CreateInletOptions, DestroyInletOptions } from '../nodeLsl.types';
|
|
3
3
|
export default class LiblslImpl implements Liblsl {
|
|
4
4
|
private static instance?;
|
|
5
5
|
static ffiRsOpen: typeof open;
|
|
@@ -14,9 +14,11 @@ export default class LiblslImpl implements Liblsl {
|
|
|
14
14
|
createStreamInfo(options: CreateStreamInfoOptions): import("../nodeLsl.types").BoundStreamInfo;
|
|
15
15
|
appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
|
|
16
16
|
createOutlet(options: CreateOutletOptions): import("../nodeLsl.types").BoundOutlet;
|
|
17
|
-
destroyOutlet(options: DestroyOutletOptions): void;
|
|
18
17
|
pushSampleFloatTimestamp(options: PushSampleFloatTimestampOptions): void;
|
|
19
18
|
pushSampleStringTimestamp(options: PushSampleStringTimestampOptions): void;
|
|
19
|
+
destroyOutlet(options: DestroyOutletOptions): void;
|
|
20
|
+
createInlet(options: CreateInletOptions): import("../nodeLsl.types").BoundInlet;
|
|
21
|
+
destroyInlet(_options: DestroyInletOptions): void;
|
|
20
22
|
localClock(): number;
|
|
21
23
|
private readonly defaultMacOsPath;
|
|
22
24
|
}
|
|
@@ -64,6 +64,16 @@ class LiblslImpl {
|
|
|
64
64
|
retType: 7 /* DataType.Void */,
|
|
65
65
|
paramsType: [11 /* DataType.External */],
|
|
66
66
|
},
|
|
67
|
+
lsl_create_inlet: {
|
|
68
|
+
library: 'lsl',
|
|
69
|
+
retType: 11 /* DataType.External */,
|
|
70
|
+
paramsType: [11 /* DataType.External */, 1 /* DataType.I32 */, 1 /* DataType.I32 */],
|
|
71
|
+
},
|
|
72
|
+
lsl_destroy_inlet: {
|
|
73
|
+
library: 'lsl',
|
|
74
|
+
retType: 7 /* DataType.Void */,
|
|
75
|
+
paramsType: [11 /* DataType.External */],
|
|
76
|
+
},
|
|
67
77
|
lsl_local_clock: {
|
|
68
78
|
library: 'lsl',
|
|
69
79
|
retType: 2 /* DataType.Double */,
|
|
@@ -149,10 +159,6 @@ class LiblslImpl {
|
|
|
149
159
|
]);
|
|
150
160
|
return this.bindings.lsl_create_outlet([info, chunkSize, maxBuffered]);
|
|
151
161
|
}
|
|
152
|
-
destroyOutlet(options) {
|
|
153
|
-
const { outlet } = (0, schema_1.assertOptions)(options, ['outlet']);
|
|
154
|
-
this.bindings.lsl_destroy_outlet([outlet]);
|
|
155
|
-
}
|
|
156
162
|
pushSampleFloatTimestamp(options) {
|
|
157
163
|
const { outlet, sample, timestamp } = (0, schema_1.assertOptions)(options, [
|
|
158
164
|
'outlet',
|
|
@@ -169,6 +175,19 @@ class LiblslImpl {
|
|
|
169
175
|
]);
|
|
170
176
|
this.bindings.lsl_push_sample_strt([outlet, sample, timestamp]);
|
|
171
177
|
}
|
|
178
|
+
destroyOutlet(options) {
|
|
179
|
+
const { outlet } = (0, schema_1.assertOptions)(options, ['outlet']);
|
|
180
|
+
this.bindings.lsl_destroy_outlet([outlet]);
|
|
181
|
+
}
|
|
182
|
+
createInlet(options) {
|
|
183
|
+
const { info, chunkSize, maxBuffered } = (0, schema_1.assertOptions)(options, [
|
|
184
|
+
'info',
|
|
185
|
+
'chunkSize',
|
|
186
|
+
'maxBuffered',
|
|
187
|
+
]);
|
|
188
|
+
return this.bindings.lsl_create_inlet([info, chunkSize, maxBuffered]);
|
|
189
|
+
}
|
|
190
|
+
destroyInlet(_options) { }
|
|
172
191
|
localClock() {
|
|
173
192
|
return this.bindings.lsl_local_clock([]);
|
|
174
193
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Liblsl.js","sourceRoot":"","sources":["../../src/components/Liblsl.ts"],"names":[],"mappings":";;;;;AAAA,+CAAkD;AAClD,mCAA+C;AAC/C,wEAA+C;AAc/C,MAAqB,UAAU;IAO3B;QAsNiB,qBAAgB,GAC7B,yDAAyD,CAAA;QAtNzD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAY,IAAI,IAAI,CAAC,gBAAgB,CAAA;QAC9D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEO,iBAAiB,CAAC,IAAY;QAClC,IAAI,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,qBAAW,CAAC;gBAClB,IAAI,EAAE,uBAAuB;gBAC7B,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,KAAY;aAC9B,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,QAAS,CAAA;IACzB,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,QAAgB;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,aAAa;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAA;IACxB,CAAC;IAEO,YAAY,CAAC,UAAkB;QACnC,UAAU,CAAC,SAAS,CAAC;YACjB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,UAAU;SACnB,CAAC,CAAA;QAEF,OAAO,UAAU,CAAC,WAAW,CAAC;YAC1B,qBAAqB,EAAE;gBACnB,OAAO,EAAE,KAAK;gBACd,OAAO,4BAAmB;gBAC1B,UAAU,EAAE;;;;;;;iBAOX;aACJ;YACD,iBAAiB,EAAE;gBACf,OAAO,EAAE,KAAK;gBACd,OAAO,4BAAmB;gBAC1B,UAAU,EAAE,wEAA+C;aAC9D;YACD,kBAAkB,EAAE;gBAChB,OAAO,EAAE,KAAK;gBACd,OAAO,uBAAe;gBACtB,UAAU,EAAE,4BAAmB;aAClC;YACD,gBAAgB,EAAE;gBACd,OAAO,EAAE,KAAK;gBACd,OAAO,4BAAmB;gBAC1B,UAAU,EAAE,wEAA+C;aAC9D;YACD,iBAAiB,EAAE;gBACf,OAAO,EAAE,KAAK;gBACd,OAAO,uBAAe;gBACtB,UAAU,EAAE,4BAAmB;aAClC;YACD,eAAe,EAAE;gBACb,OAAO,EAAE,KAAK;gBACd,OAAO,yBAAiB;gBACxB,UAAU,EAAE,EAAE;aACjB;YACD,kBAAkB,EAAE;gBAChB,OAAO,EAAE,KAAK;gBACd,OAAO,uBAAe;gBACtB,UAAU,EAAE;;;;iBAIX;aACJ;YACD,oBAAoB,EAAE;gBAClB,OAAO,EAAE,KAAK;gBACd,OAAO,uBAAe;gBACtB,UAAU,EAAE;;;;iBAIX;aACJ;YACD,YAAY,EAAE;gBACV,OAAO,EAAE,KAAK;gBACd,OAAO,4BAAmB;gBAC1B,UAAU,EAAE,4BAAmB;aAClC;YACD,gBAAgB,EAAE;gBACd,OAAO,EAAE,KAAK;gBACd,OAAO,4BAAmB;gBAC1B,UAAU,EAAE,qDAAoC;aACnD;YACD,sBAAsB,EAAE;gBACpB,OAAO,EAAE,KAAK;gBACd,OAAO,4BAAmB;gBAC1B,UAAU,EAAE;;;;iBAIX;aACJ;SACJ,CAA8B,CAAA;IACnC,CAAC;IAEM,gBAAgB,CAAC,OAAgC;QACpD,MAAM,EACF,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,QAAQ,GACX,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE;YACvB,MAAM;YACN,MAAM;YACN,cAAc;YACd,YAAY;YACZ,eAAe;YACf,UAAU;SACb,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,YAAY;YACZ,UAAU;YACV,aAAa;YACb,QAAQ;SACX,CAAC,CAAA;IACN,CAAC;IAEM,0BAA0B,CAC7B,OAA0C;QAE1C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;QAEvE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAA;QAExE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;YACjE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;gBACjC,KAAK;gBACL,OAAO;gBACP,OAAO,CAAC,KAAK;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YACnE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC5C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE;YAC5D,MAAM;YACN,WAAW;YACX,aAAa;SAChB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAC1E,CAAC;IAEM,wBAAwB,CAAC,OAAwC;QACpE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE;YACzD,QAAQ;YACR,QAAQ;YACR,WAAW;SACd,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IACjE,CAAC;IAEM,yBAAyB,CAC5B,OAAyC;QAEzC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE;YACzD,QAAQ;YACR,QAAQ;YACR,WAAW;SACd,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IACnE,CAAC;IAEM,aAAa,CAAC,OAA6B;QAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9C,CAAC;IAEM,WAAW,CAAC,OAA2B;QAC1C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE;YAC5D,MAAM;YACN,WAAW;YACX,aAAa;SAChB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IACzE,CAAC;IAEM,YAAY,CAAC,QAA6B,IAAG,CAAC;IAE9C,UAAU;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAC5C,CAAC;;AAzNa,oBAAS,GAAG,aAAI,AAAP,CAAO;AAChB,sBAAW,GAAG,eAAM,AAAT,CAAS;kBAHjB,UAAU"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ChannelFormat } from '../nodeLsl.types';
|
|
2
|
+
import { StreamInfo } from './LslStreamInfo';
|
|
3
|
+
export default class LslInlet implements StreamInlet {
|
|
4
|
+
static Class?: LslInletConstructor;
|
|
5
|
+
protected name: string;
|
|
6
|
+
protected info: StreamInfo;
|
|
7
|
+
private chunkSize;
|
|
8
|
+
private maxBuffered;
|
|
9
|
+
protected constructor(info: StreamInfo, options: LslInletOptions);
|
|
10
|
+
static Create(options: LslInletOptions): StreamInlet;
|
|
11
|
+
private createLslInlet;
|
|
12
|
+
private get boundStreamInfo();
|
|
13
|
+
private get lsl();
|
|
14
|
+
private readonly defaultName;
|
|
15
|
+
private static LslStreamInfo;
|
|
16
|
+
}
|
|
17
|
+
export interface StreamInlet {
|
|
18
|
+
}
|
|
19
|
+
export type LslInletConstructor = new (info: StreamInfo, options: LslInletOptions) => StreamInlet;
|
|
20
|
+
export interface LslInletOptions {
|
|
21
|
+
sampleRate: number;
|
|
22
|
+
channelNames: string[];
|
|
23
|
+
channelFormat: ChannelFormat;
|
|
24
|
+
chunkSize: number;
|
|
25
|
+
maxBuffered: number;
|
|
26
|
+
name?: string;
|
|
27
|
+
type?: string;
|
|
28
|
+
sourceId?: string;
|
|
29
|
+
manufacturer?: string;
|
|
30
|
+
units?: string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const schema_1 = require("@sprucelabs/schema");
|
|
7
|
+
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
8
|
+
const Liblsl_1 = __importDefault(require("./Liblsl"));
|
|
9
|
+
const LslStreamInfo_1 = __importDefault(require("./LslStreamInfo"));
|
|
10
|
+
class LslInlet {
|
|
11
|
+
constructor(info, options) {
|
|
12
|
+
this.defaultName = `lsl-inlet-${(0, test_utils_1.generateId)()}`;
|
|
13
|
+
const { name = this.defaultName, chunkSize, maxBuffered, } = options ?? {};
|
|
14
|
+
this.info = info;
|
|
15
|
+
this.chunkSize = chunkSize;
|
|
16
|
+
this.maxBuffered = maxBuffered;
|
|
17
|
+
this.name = name;
|
|
18
|
+
this.createLslInlet();
|
|
19
|
+
}
|
|
20
|
+
static Create(options) {
|
|
21
|
+
(0, schema_1.assertOptions)(options, [
|
|
22
|
+
'channelNames',
|
|
23
|
+
'channelFormat',
|
|
24
|
+
'sampleRate',
|
|
25
|
+
'chunkSize',
|
|
26
|
+
'maxBuffered',
|
|
27
|
+
]);
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
29
|
+
const { maxBuffered, chunkSize, ...streamInfoOptions } = options;
|
|
30
|
+
const info = this.LslStreamInfo(streamInfoOptions);
|
|
31
|
+
return new (this.Class ?? this)(info, options);
|
|
32
|
+
}
|
|
33
|
+
createLslInlet() {
|
|
34
|
+
this.lsl.createInlet({
|
|
35
|
+
info: this.boundStreamInfo,
|
|
36
|
+
chunkSize: this.chunkSize,
|
|
37
|
+
maxBuffered: this.maxBuffered,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
get boundStreamInfo() {
|
|
41
|
+
return this.info.boundStreamInfo;
|
|
42
|
+
}
|
|
43
|
+
get lsl() {
|
|
44
|
+
return Liblsl_1.default.getInstance();
|
|
45
|
+
}
|
|
46
|
+
static LslStreamInfo(options) {
|
|
47
|
+
return LslStreamInfo_1.default.Create(options);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.default = LslInlet;
|
|
51
|
+
//# sourceMappingURL=LslInlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LslInlet.js","sourceRoot":"","sources":["../../src/components/LslInlet.ts"],"names":[],"mappings":";;;;;AAAA,+CAAkD;AAClD,uDAAmD;AAEnD,sDAAiC;AACjC,oEAA8E;AAE9E,MAAqB,QAAQ;IAQzB,YAAsB,IAAgB,EAAE,OAAwB;QA6C/C,gBAAW,GAAG,aAAa,IAAA,uBAAU,GAAE,EAAE,CAAA;QA5CtD,MAAM,EACF,IAAI,GAAG,IAAI,CAAC,WAAW,EACvB,SAAS,EACT,WAAW,GACd,GAAG,OAAO,IAAI,EAAE,CAAA;QAEjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAEhB,IAAI,CAAC,cAAc,EAAE,CAAA;IACzB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAwB;QACzC,IAAA,sBAAa,EAAC,OAAO,EAAE;YACnB,cAAc;YACd,eAAe;YACf,YAAY;YACZ,WAAW;YACX,aAAa;SAChB,CAAC,CAAA;QACF,6DAA6D;QAC7D,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,iBAAiB,EAAE,GAAG,OAAO,CAAA;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,eAAe;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC,CAAA;IACN,CAAC;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAA;IACpC,CAAC;IAED,IAAY,GAAG;QACX,OAAO,gBAAU,CAAC,WAAW,EAAE,CAAA;IACnC,CAAC;IAIO,MAAM,CAAC,aAAa,CAAC,OAA0B;QACnD,OAAO,uBAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;CACJ;AA1DD,2BA0DC"}
|
|
@@ -1,34 +1,45 @@
|
|
|
1
1
|
import { ChannelFormat, LslSample } from '../nodeLsl.types';
|
|
2
|
+
import { StreamInfo } from './LslStreamInfo';
|
|
2
3
|
export default class LslOutletImpl implements LslOutlet {
|
|
3
4
|
static Class?: LslOutletConstructor;
|
|
5
|
+
private info;
|
|
4
6
|
private options;
|
|
5
|
-
private streamInfo;
|
|
6
7
|
private outlet;
|
|
7
8
|
private pushSampleByType;
|
|
8
|
-
protected constructor(options: LslOutletOptions);
|
|
9
|
+
protected constructor(info: StreamInfo, options: LslOutletOptions);
|
|
9
10
|
static Create(options: LslOutletOptions): Promise<LslOutlet>;
|
|
10
|
-
private
|
|
11
|
+
private validateOptions;
|
|
12
|
+
private createLslOutlet;
|
|
13
|
+
private setPushSampleType;
|
|
11
14
|
destroy(): void;
|
|
12
15
|
pushSample(sample: LslSample): void;
|
|
13
16
|
private getPushMethod;
|
|
14
|
-
private
|
|
17
|
+
private get channelNames();
|
|
18
|
+
private get channelCount();
|
|
19
|
+
private get channelFormat();
|
|
20
|
+
private get sampleRate();
|
|
21
|
+
private get chunkSize();
|
|
22
|
+
private get maxBuffered();
|
|
23
|
+
private get boundStreamInfo();
|
|
15
24
|
private get lsl();
|
|
25
|
+
private static wait;
|
|
26
|
+
private static LslStreamInfo;
|
|
16
27
|
}
|
|
17
28
|
export interface LslOutlet {
|
|
18
29
|
destroy(): void;
|
|
19
30
|
pushSample(sample: LslSample): void;
|
|
20
31
|
}
|
|
21
|
-
export type LslOutletConstructor = new (options: LslOutletOptions) => LslOutlet;
|
|
32
|
+
export type LslOutletConstructor = new (info: StreamInfo, options: LslOutletOptions) => LslOutlet;
|
|
22
33
|
export interface LslOutletOptions {
|
|
23
34
|
name: string;
|
|
24
35
|
type: string;
|
|
36
|
+
sourceId: string;
|
|
25
37
|
channelNames: string[];
|
|
26
|
-
sampleRate: number;
|
|
27
38
|
channelFormat: ChannelFormat;
|
|
28
|
-
|
|
29
|
-
manufacturer: string;
|
|
30
|
-
unit: string;
|
|
39
|
+
sampleRate: number;
|
|
31
40
|
chunkSize: number;
|
|
32
41
|
maxBuffered: number;
|
|
42
|
+
manufacturer: string;
|
|
43
|
+
unit: string;
|
|
33
44
|
waitAfterConstructionMs?: number;
|
|
34
45
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const schema_1 = require("@sprucelabs/schema");
|
|
7
|
+
const assertions_1 = require("../assertions");
|
|
8
|
+
const Liblsl_1 = __importDefault(require("./Liblsl"));
|
|
9
|
+
const LslStreamInfo_1 = __importDefault(require("./LslStreamInfo"));
|
|
10
|
+
class LslOutletImpl {
|
|
11
|
+
constructor(info, options) {
|
|
12
|
+
this.info = info;
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.validateOptions();
|
|
15
|
+
this.createLslOutlet();
|
|
16
|
+
this.setPushSampleType();
|
|
17
|
+
}
|
|
18
|
+
static async Create(options) {
|
|
19
|
+
(0, schema_1.assertOptions)(options, [
|
|
20
|
+
'name',
|
|
21
|
+
'type',
|
|
22
|
+
'sourceId',
|
|
23
|
+
'channelNames',
|
|
24
|
+
'channelFormat',
|
|
25
|
+
'sampleRate',
|
|
26
|
+
'chunkSize',
|
|
27
|
+
'maxBuffered',
|
|
28
|
+
'manufacturer',
|
|
29
|
+
'unit',
|
|
30
|
+
]);
|
|
31
|
+
const { waitAfterConstructionMs = 10 } = options ?? {};
|
|
32
|
+
const streamInfoOptions = {
|
|
33
|
+
channelNames: options.channelNames,
|
|
34
|
+
channelFormat: options.channelFormat,
|
|
35
|
+
sampleRate: options.sampleRate,
|
|
36
|
+
name: options.name,
|
|
37
|
+
type: options.type,
|
|
38
|
+
sourceId: options.sourceId,
|
|
39
|
+
units: options.unit,
|
|
40
|
+
};
|
|
41
|
+
const info = this.LslStreamInfo(streamInfoOptions);
|
|
42
|
+
const instance = new (this.Class ?? this)(info, options);
|
|
43
|
+
await this.wait(waitAfterConstructionMs);
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
validateOptions() {
|
|
47
|
+
(0, assertions_1.assertValidChannelCount)(this.channelCount);
|
|
48
|
+
(0, assertions_1.assertValidSampleRate)(this.sampleRate);
|
|
49
|
+
(0, assertions_1.assertValidChannelFormat)(this.channelFormat);
|
|
50
|
+
(0, assertions_1.assertValidChunkSize)(this.chunkSize);
|
|
51
|
+
(0, assertions_1.assertValidMaxBuffered)(this.maxBuffered);
|
|
52
|
+
}
|
|
53
|
+
createLslOutlet() {
|
|
54
|
+
this.outlet = this.lsl.createOutlet({
|
|
55
|
+
info: this.boundStreamInfo,
|
|
56
|
+
chunkSize: this.chunkSize,
|
|
57
|
+
maxBuffered: this.maxBuffered,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
setPushSampleType() {
|
|
61
|
+
const pushMethod = this.getPushMethod();
|
|
62
|
+
this.pushSampleByType = this.lsl[pushMethod].bind(this.lsl);
|
|
63
|
+
}
|
|
64
|
+
destroy() {
|
|
65
|
+
this.lsl.destroyOutlet({ outlet: this.outlet });
|
|
66
|
+
}
|
|
67
|
+
pushSample(sample) {
|
|
68
|
+
const timestamp = this.lsl.localClock();
|
|
69
|
+
this.pushSampleByType({
|
|
70
|
+
outlet: this.outlet,
|
|
71
|
+
sample,
|
|
72
|
+
timestamp,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
getPushMethod() {
|
|
76
|
+
const channelFormat = this.channelFormat;
|
|
77
|
+
const methodMap = {
|
|
78
|
+
float32: 'pushSampleFloatTimestamp',
|
|
79
|
+
string: 'pushSampleStringTimestamp',
|
|
80
|
+
};
|
|
81
|
+
if (!(channelFormat in methodMap)) {
|
|
82
|
+
throw new Error(`This method currently does not support the ${channelFormat} type! Please implement it.`);
|
|
83
|
+
}
|
|
84
|
+
return methodMap[channelFormat];
|
|
85
|
+
}
|
|
86
|
+
get channelNames() {
|
|
87
|
+
return this.options.channelNames;
|
|
88
|
+
}
|
|
89
|
+
get channelCount() {
|
|
90
|
+
return this.channelNames.length;
|
|
91
|
+
}
|
|
92
|
+
get channelFormat() {
|
|
93
|
+
return this.options.channelFormat;
|
|
94
|
+
}
|
|
95
|
+
get sampleRate() {
|
|
96
|
+
return this.options.sampleRate;
|
|
97
|
+
}
|
|
98
|
+
get chunkSize() {
|
|
99
|
+
return this.options.chunkSize;
|
|
100
|
+
}
|
|
101
|
+
get maxBuffered() {
|
|
102
|
+
return this.options.maxBuffered;
|
|
103
|
+
}
|
|
104
|
+
get boundStreamInfo() {
|
|
105
|
+
return this.info.boundStreamInfo;
|
|
106
|
+
}
|
|
107
|
+
get lsl() {
|
|
108
|
+
return Liblsl_1.default.getInstance();
|
|
109
|
+
}
|
|
110
|
+
static async wait(waitMs) {
|
|
111
|
+
return new Promise((resolve) => setTimeout(resolve, waitMs));
|
|
112
|
+
}
|
|
113
|
+
static LslStreamInfo(options) {
|
|
114
|
+
return LslStreamInfo_1.default.Create(options);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.default = LslOutletImpl;
|
|
118
|
+
//# sourceMappingURL=LslOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/components/LslOutlet.ts"],"names":[],"mappings":"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"}
|