@neurodevs/node-lsl 3.3.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Liblsl.d.ts +15 -4
- package/build/Liblsl.js +20 -4
- package/build/Liblsl.js.map +1 -1
- package/build/LslOutlet.d.ts +1 -1
- package/build/LslOutlet.js +24 -7
- package/build/LslOutlet.js.map +1 -1
- package/build/__tests__/behavioral/LslOutlet.test.d.ts +6 -2
- package/build/__tests__/behavioral/LslOutlet.test.js +63 -15
- package/build/__tests__/behavioral/LslOutlet.test.js.map +1 -1
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js +3 -3
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js.map +1 -1
- package/build/__tests__/implementation/Liblsl.test.d.ts +8 -4
- package/build/__tests__/implementation/Liblsl.test.js +93 -60
- package/build/__tests__/implementation/Liblsl.test.js.map +1 -1
- package/build/__tests__/support/SpyLiblsl.d.ts +9 -5
- package/build/__tests__/support/SpyLiblsl.js +10 -2
- package/build/__tests__/support/SpyLiblsl.js.map +1 -1
- package/package.json +1 -1
- package/src/Liblsl.ts +43 -11
- package/src/LslOutlet.ts +44 -21
- package/src/__tests__/behavioral/LslOutlet.test.ts +70 -13
- package/src/__tests__/behavioral/TimeMarkerOutlet.test.ts +4 -4
- package/src/__tests__/implementation/Liblsl.test.ts +88 -71
- package/src/__tests__/support/SpyLiblsl.ts +22 -9
|
@@ -37,6 +37,7 @@ const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
|
37
37
|
const ref_array_napi_1 = __importDefault(require("ref-array-napi"));
|
|
38
38
|
const ref_napi_1 = __importDefault(require("ref-napi"));
|
|
39
39
|
const Liblsl_1 = __importDefault(require("../../Liblsl"));
|
|
40
|
+
const SpyLiblsl_1 = require("../support/SpyLiblsl");
|
|
40
41
|
class LiblslTest extends test_utils_1.default {
|
|
41
42
|
static async beforeEach() {
|
|
42
43
|
await super.beforeEach();
|
|
@@ -45,7 +46,7 @@ class LiblslTest extends test_utils_1.default {
|
|
|
45
46
|
delete this.createStreamInfoParams;
|
|
46
47
|
delete this.createOutletParams;
|
|
47
48
|
delete this.destroyOutletParams;
|
|
48
|
-
delete this.
|
|
49
|
+
delete this.pushSampleFtParams;
|
|
49
50
|
delete this.getDescriptionParams;
|
|
50
51
|
this.appendChildParams = [];
|
|
51
52
|
this.appendChildValueParams = [];
|
|
@@ -55,50 +56,16 @@ class LiblslTest extends test_utils_1.default {
|
|
|
55
56
|
this.fakeOutlet = {};
|
|
56
57
|
this.fakeChildNamedChannels = {};
|
|
57
58
|
this.fakeChildNamedChannel = {};
|
|
58
|
-
this.
|
|
59
|
+
this.fakeBindings = this.FakeBindings();
|
|
59
60
|
this.shouldThrowWhenCreatingBindings = false;
|
|
60
61
|
this.appendChildHitCount = 0;
|
|
61
|
-
this.fakeBindings = {
|
|
62
|
-
lsl_create_streaminfo: (...params) => {
|
|
63
|
-
this.createStreamInfoParams = params;
|
|
64
|
-
return this.fakeStreamInfo;
|
|
65
|
-
},
|
|
66
|
-
lsl_create_outlet: (...params) => {
|
|
67
|
-
this.createOutletParams = params;
|
|
68
|
-
return this.fakeOutlet;
|
|
69
|
-
},
|
|
70
|
-
lsl_destroy_outlet: (...params) => {
|
|
71
|
-
this.destroyOutletParams = params;
|
|
72
|
-
return;
|
|
73
|
-
},
|
|
74
|
-
lsl_push_sample_ft: (...params) => {
|
|
75
|
-
this.pushSampleParams = params;
|
|
76
|
-
return 0;
|
|
77
|
-
},
|
|
78
|
-
lsl_local_clock: () => this.localClock,
|
|
79
|
-
lsl_get_desc: (info) => {
|
|
80
|
-
this.getDescriptionParams = [info];
|
|
81
|
-
return this.fakeDesc;
|
|
82
|
-
},
|
|
83
|
-
lsl_append_child: (...params) => {
|
|
84
|
-
this.appendChildParams.push(params);
|
|
85
|
-
if (this.appendChildHitCount === 0) {
|
|
86
|
-
this.appendChildHitCount++;
|
|
87
|
-
return this.fakeChildNamedChannels;
|
|
88
|
-
}
|
|
89
|
-
return this.fakeChildNamedChannel;
|
|
90
|
-
},
|
|
91
|
-
lsl_append_child_value: (...params) => {
|
|
92
|
-
this.appendChildValueParams.push(params);
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
62
|
Liblsl_1.default.ffi = {
|
|
96
63
|
//@ts-ignore
|
|
97
64
|
Library: (path, options) => {
|
|
98
65
|
this.libraryPath = path;
|
|
99
66
|
this.libraryOptions = options;
|
|
100
67
|
if (this.shouldThrowWhenCreatingBindings) {
|
|
101
|
-
throw new Error('Failed to create bindings');
|
|
68
|
+
throw new Error('Failed to create bindings!');
|
|
102
69
|
}
|
|
103
70
|
return this.fakeBindings;
|
|
104
71
|
},
|
|
@@ -148,11 +115,18 @@ class LiblslTest extends test_utils_1.default {
|
|
|
148
115
|
parameters: ['info', 'chunkSize', 'maxBuffered'],
|
|
149
116
|
});
|
|
150
117
|
}
|
|
151
|
-
static async
|
|
118
|
+
static async throwsWhenPushSampleFtIsMissingRequiredParams() {
|
|
119
|
+
//@ts-ignore
|
|
120
|
+
const err = test_utils_1.assert.doesThrow(() => this.lsl.pushSampleFt());
|
|
121
|
+
test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
|
|
122
|
+
parameters: ['outlet', 'sample', 'timestamp'],
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
static async throwsWhenPushSampleStrtIsMissingRequiredParams() {
|
|
152
126
|
//@ts-ignore
|
|
153
|
-
const err = test_utils_1.assert.doesThrow(() => this.lsl.
|
|
127
|
+
const err = test_utils_1.assert.doesThrow(() => this.lsl.pushSampleFt());
|
|
154
128
|
test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
|
|
155
|
-
parameters: ['outlet', 'sample'],
|
|
129
|
+
parameters: ['outlet', 'sample', 'timestamp'],
|
|
156
130
|
});
|
|
157
131
|
}
|
|
158
132
|
static async worksAsASingleton() {
|
|
@@ -163,7 +137,7 @@ class LiblslTest extends test_utils_1.default {
|
|
|
163
137
|
test_utils_1.assert.isEqual(Liblsl_1.default.getInstance(), Liblsl_1.default.getInstance());
|
|
164
138
|
}
|
|
165
139
|
static canSetInstance() {
|
|
166
|
-
const fake = new
|
|
140
|
+
const fake = new SpyLiblsl_1.SpyLiblsl();
|
|
167
141
|
Liblsl_1.default.setInstance(fake);
|
|
168
142
|
test_utils_1.assert.isEqual(Liblsl_1.default.getInstance(), fake);
|
|
169
143
|
}
|
|
@@ -180,6 +154,7 @@ class LiblslTest extends test_utils_1.default {
|
|
|
180
154
|
lsl_destroy_outlet: ['void', [outletType]],
|
|
181
155
|
lsl_local_clock: ['double', []],
|
|
182
156
|
lsl_push_sample_ft: ['void', [outletType, FloatArray, 'double']],
|
|
157
|
+
lsl_push_sample_strt: ['void', [outletType, StringArray, 'double']],
|
|
183
158
|
lsl_get_desc: [xmlPtr, [streamInfo]],
|
|
184
159
|
lsl_append_child: [xmlPtr, [xmlPtr, 'string']],
|
|
185
160
|
lsl_append_child_value: [xmlPtr, [xmlPtr, 'string', 'string']],
|
|
@@ -197,17 +172,33 @@ class LiblslTest extends test_utils_1.default {
|
|
|
197
172
|
test_utils_1.assert.isEqualDeep(this.createOutletParams, Object.values(options));
|
|
198
173
|
test_utils_1.assert.isEqual(outlet, this.fakeOutlet);
|
|
199
174
|
}
|
|
200
|
-
static async
|
|
175
|
+
static async canPushFloatSample() {
|
|
176
|
+
var _a, _b, _c;
|
|
177
|
+
const expected = [1.0, 2.0, 3.0];
|
|
178
|
+
const timestamp = (0, crypto_1.randomInt)(100);
|
|
179
|
+
const options = {
|
|
180
|
+
outlet: this.fakeOutlet,
|
|
181
|
+
sample: expected,
|
|
182
|
+
timestamp,
|
|
183
|
+
};
|
|
184
|
+
this.lsl.pushSampleFt(options);
|
|
185
|
+
test_utils_1.assert.isEqual((_a = this.pushSampleFtParams) === null || _a === void 0 ? void 0 : _a[0], this.fakeOutlet);
|
|
186
|
+
test_utils_1.assert.isEqual((_b = this.pushSampleFtParams) === null || _b === void 0 ? void 0 : _b[1], expected);
|
|
187
|
+
test_utils_1.assert.isEqual((_c = this.pushSampleFtParams) === null || _c === void 0 ? void 0 : _c[2], timestamp);
|
|
188
|
+
}
|
|
189
|
+
static async canPushStringSample() {
|
|
201
190
|
var _a, _b, _c;
|
|
202
|
-
const expected = [
|
|
191
|
+
const expected = [(0, test_utils_1.generateId)()];
|
|
192
|
+
const timestamp = (0, crypto_1.randomInt)(100);
|
|
203
193
|
const options = {
|
|
204
194
|
outlet: this.fakeOutlet,
|
|
205
195
|
sample: expected,
|
|
196
|
+
timestamp,
|
|
206
197
|
};
|
|
207
|
-
this.lsl.
|
|
208
|
-
test_utils_1.assert.isEqual((_a = this.
|
|
209
|
-
test_utils_1.assert.
|
|
210
|
-
test_utils_1.assert.isEqual((_c = this.
|
|
198
|
+
this.lsl.pushSampleStrt(options);
|
|
199
|
+
test_utils_1.assert.isEqual((_a = this.pushSampleStrtParams) === null || _a === void 0 ? void 0 : _a[0], this.fakeOutlet);
|
|
200
|
+
test_utils_1.assert.isEqualDeep((_b = this.pushSampleStrtParams) === null || _b === void 0 ? void 0 : _b[1], expected);
|
|
201
|
+
test_utils_1.assert.isEqual((_c = this.pushSampleStrtParams) === null || _c === void 0 ? void 0 : _c[2], timestamp);
|
|
211
202
|
}
|
|
212
203
|
static async addingSingleChannelGetsDescription() {
|
|
213
204
|
var _a, _b, _c, _d, _e;
|
|
@@ -255,6 +246,12 @@ class LiblslTest extends test_utils_1.default {
|
|
|
255
246
|
this.lsl.destroyOutlet(options);
|
|
256
247
|
test_utils_1.assert.isEqualDeep(this.destroyOutletParams, Object.values(options));
|
|
257
248
|
}
|
|
249
|
+
static async callingLocalClockTwiceReturnsDifferentTimestamps() {
|
|
250
|
+
const t1 = this.lsl.localClock();
|
|
251
|
+
await this.wait(10);
|
|
252
|
+
const t2 = this.lsl.localClock();
|
|
253
|
+
test_utils_1.assert.isNotEqual(t1, t2);
|
|
254
|
+
}
|
|
258
255
|
static createRandomStreamInfo() {
|
|
259
256
|
return this.lsl.createStreamInfo(this.generateRandomCreateStreamInfoOptions());
|
|
260
257
|
}
|
|
@@ -285,6 +282,43 @@ class LiblslTest extends test_utils_1.default {
|
|
|
285
282
|
sourceId: (0, test_utils_1.generateId)(),
|
|
286
283
|
};
|
|
287
284
|
}
|
|
285
|
+
static FakeBindings() {
|
|
286
|
+
return {
|
|
287
|
+
lsl_create_streaminfo: (...params) => {
|
|
288
|
+
this.createStreamInfoParams = params;
|
|
289
|
+
return this.fakeStreamInfo;
|
|
290
|
+
},
|
|
291
|
+
lsl_create_outlet: (...params) => {
|
|
292
|
+
this.createOutletParams = params;
|
|
293
|
+
return this.fakeOutlet;
|
|
294
|
+
},
|
|
295
|
+
lsl_destroy_outlet: (...params) => {
|
|
296
|
+
this.destroyOutletParams = params;
|
|
297
|
+
},
|
|
298
|
+
lsl_push_sample_ft: (...params) => {
|
|
299
|
+
this.pushSampleFtParams = params;
|
|
300
|
+
},
|
|
301
|
+
lsl_push_sample_strt: (...params) => {
|
|
302
|
+
this.pushSampleStrtParams = params;
|
|
303
|
+
},
|
|
304
|
+
lsl_local_clock: () => new Date().getTime(),
|
|
305
|
+
lsl_get_desc: (info) => {
|
|
306
|
+
this.getDescriptionParams = [info];
|
|
307
|
+
return this.fakeDesc;
|
|
308
|
+
},
|
|
309
|
+
lsl_append_child: (...params) => {
|
|
310
|
+
this.appendChildParams.push(params);
|
|
311
|
+
if (this.appendChildHitCount === 0) {
|
|
312
|
+
this.appendChildHitCount++;
|
|
313
|
+
return this.fakeChildNamedChannels;
|
|
314
|
+
}
|
|
315
|
+
return this.fakeChildNamedChannel;
|
|
316
|
+
},
|
|
317
|
+
lsl_append_child_value: (...params) => {
|
|
318
|
+
this.appendChildValueParams.push(params);
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
}
|
|
288
322
|
}
|
|
289
323
|
LiblslTest.appendChildParams = [];
|
|
290
324
|
exports.default = LiblslTest;
|
|
@@ -305,7 +339,10 @@ __decorate([
|
|
|
305
339
|
], LiblslTest, "throwsWhenCreateOutletIsMissingRequiredParams", null);
|
|
306
340
|
__decorate([
|
|
307
341
|
(0, test_utils_1.test)()
|
|
308
|
-
], LiblslTest, "
|
|
342
|
+
], LiblslTest, "throwsWhenPushSampleFtIsMissingRequiredParams", null);
|
|
343
|
+
__decorate([
|
|
344
|
+
(0, test_utils_1.test)()
|
|
345
|
+
], LiblslTest, "throwsWhenPushSampleStrtIsMissingRequiredParams", null);
|
|
309
346
|
__decorate([
|
|
310
347
|
(0, test_utils_1.test)()
|
|
311
348
|
], LiblslTest, "worksAsASingleton", null);
|
|
@@ -326,7 +363,10 @@ __decorate([
|
|
|
326
363
|
], LiblslTest, "canCreateOutletWithRequiredParams", null);
|
|
327
364
|
__decorate([
|
|
328
365
|
(0, test_utils_1.test)()
|
|
329
|
-
], LiblslTest, "
|
|
366
|
+
], LiblslTest, "canPushFloatSample", null);
|
|
367
|
+
__decorate([
|
|
368
|
+
(0, test_utils_1.test)()
|
|
369
|
+
], LiblslTest, "canPushStringSample", null);
|
|
330
370
|
__decorate([
|
|
331
371
|
(0, test_utils_1.test)()
|
|
332
372
|
], LiblslTest, "addingSingleChannelGetsDescription", null);
|
|
@@ -336,19 +376,12 @@ __decorate([
|
|
|
336
376
|
__decorate([
|
|
337
377
|
(0, test_utils_1.test)()
|
|
338
378
|
], LiblslTest, "canDestroyOutlet", null);
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
}
|
|
343
|
-
appendChannelsToStreamInfo(_options) { }
|
|
344
|
-
createOutlet(_options) {
|
|
345
|
-
return {};
|
|
346
|
-
}
|
|
347
|
-
destroyOutlet(_options) { }
|
|
348
|
-
pushSample(_options) { }
|
|
349
|
-
}
|
|
379
|
+
__decorate([
|
|
380
|
+
(0, test_utils_1.test)()
|
|
381
|
+
], LiblslTest, "callingLocalClockTwiceReturnsDifferentTimestamps", null);
|
|
350
382
|
const streamInfo = ref_napi_1.default.refType(ref_napi_1.default.types.void);
|
|
351
383
|
const outletType = ref_napi_1.default.refType(ref_napi_1.default.types.void);
|
|
352
384
|
const FloatArray = (0, ref_array_napi_1.default)(ref_napi_1.default.types.float);
|
|
385
|
+
const StringArray = (0, ref_array_napi_1.default)(ref_napi_1.default.types.CString);
|
|
353
386
|
const xmlPtr = ref_napi_1.default.refType(ref_napi_1.default.types.void);
|
|
354
387
|
//# sourceMappingURL=Liblsl.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Liblsl.test.js","sourceRoot":"","sources":["../../../src/__tests__/implementation/Liblsl.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkC;AAClC,qEAK+B;AAC/B,oEAAsC;AACtC,wDAA0B;AAC1B,0DAaqB;AAErB,MAAqB,UAAW,SAAQ,oBAAkB;IAqB/C,MAAM,CAAC,KAAK,CAAC,UAAU;QAChC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,OAAO,IAAI,CAAC,WAAW,CAAA;QACvB,OAAO,IAAI,CAAC,cAAc,CAAA;QAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAA;QAClC,OAAO,IAAI,CAAC,kBAAkB,CAAA;QAC9B,OAAO,IAAI,CAAC,mBAAmB,CAAA;QAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAA;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAA;QAChC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAA;QAC3B,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAA;QAEhC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;QAEtC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAClB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;QAE/B,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QACtC,IAAI,CAAC,+BAA+B,GAAG,KAAK,CAAA;QAE5C,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAA;QAE5B,IAAI,CAAC,YAAY,GAAG;YACnB,qBAAqB,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;gBAC3C,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAA;gBACpC,OAAO,IAAI,CAAC,cAAc,CAAA;YAC3B,CAAC;YACD,iBAAiB,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;gBACvC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAA;gBAChC,OAAO,IAAI,CAAC,UAAU,CAAA;YACvB,CAAC;YACD,kBAAkB,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;gBACxC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAA;gBACjC,OAAM;YACP,CAAC;YACD,kBAAkB,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;gBACxC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAA;gBAC9B,OAAO,CAAC,CAAA;YACT,CAAC;YACD,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;YACtC,YAAY,EAAE,CAAC,IAAqB,EAAE,EAAE;gBACvC,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAA;gBAClC,OAAO,IAAI,CAAC,QAAQ,CAAA;YACrB,CAAC;YACD,gBAAgB,EAAE,CAAC,GAAG,MAAW,EAAE,EAAE;gBACpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACnC,IAAI,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,mBAAmB,EAAE,CAAA;oBAC1B,OAAO,IAAI,CAAC,sBAAsB,CAAA;gBACnC,CAAC;gBACD,OAAO,IAAI,CAAC,qBAAqB,CAAA;YAClC,CAAC;YACD,sBAAsB,EAAE,CAAC,GAAG,MAAa,EAAE,EAAE;gBAC5C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzC,CAAC;SACD,CAAA;QAED,gBAAU,CAAC,GAAG,GAAG;YAChB,YAAY;YACZ,OAAO,EAAE,CAAC,IAAY,EAAE,OAA4B,EAAE,EAAE;gBACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;gBAC7B,IAAI,IAAI,CAAC,+BAA+B,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;gBAC7C,CAAC;gBACD,OAAO,IAAI,CAAC,YAAY,CAAA;YACzB,CAAC;SACD,CAAA;QAED,gBAAU,CAAC,aAAa,EAAE,CAAA;QAC1B,IAAI,CAAC,GAAG,GAAG,gBAAU,CAAC,WAAW,EAAE,CAAA;IACpC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,oBAAoB;QAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;QAC9B,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAU,EAAE,CAAC,CAAA;QACpD,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAClD,UAAU,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,4BAA4B;QAClD,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAA;QAC3C,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAU,EAAE,CAAC,CAAA;QACpD,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,uBAAuB,EAAE;YACrD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;SACnC,CAAC,CAAA;IACH,CAAC;IAGgB,AAAP,MAAM,CAAC,iDAAiD;QACjE,YAAY;QACZ,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAC/D,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAClD,UAAU,EAAE;gBACX,MAAM;gBACN,MAAM;gBACN,cAAc;gBACd,YAAY;gBACZ,eAAe;gBACf,UAAU;aACV;SACD,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+CAA+C;QACrE,YAAY;QACZ,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3E,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAClD,UAAU,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;SAChC,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,6CAA6C;QACnE,YAAY;QACZ,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7D,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAClD,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC;SAChD,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,2CAA2C;QACjE,YAAY;QACZ,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QACzD,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAClD,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAChC,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACvC,MAAM,MAAM,GAAG,gBAAU,CAAC,WAAW,EAAE,CAAA;QACvC,mBAAM,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAU,CAAC,CAAA;IACxC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kBAAkB;QACxC,mBAAM,CAAC,OAAO,CAAC,gBAAU,CAAC,WAAW,EAAE,EAAE,gBAAU,CAAC,WAAW,EAAE,CAAC,CAAA;IACnE,CAAC;IAGgB,AAAP,MAAM,CAAC,cAAc;QAC9B,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAA;QAC7B,gBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC5B,mBAAM,CAAC,OAAO,CAAC,gBAAU,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/C,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;QACrD,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;QACtC,IAAI,gBAAU,EAAE,CAAA;QAChB,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QACzD,MAAM,QAAQ,GAAG;YAChB,qBAAqB,EAAE;gBACtB,UAAU;gBACV,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;aACtD;YACD,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3D,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;YAC1C,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/B,kBAAkB,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YAChE,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC;YACpC,gBAAgB,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC9C,sBAAsB,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC9D,CAAA;QACD,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACxB,CAAA;IACF,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,qCAAqC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,qCAAqC,EAAE,CAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAEjD,mBAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3C,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACxE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iCAAiC;QACvD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACrD,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QACnE,mBAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACxC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG;YACf,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,MAAM,EAAE,QAAQ;SAChB,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC5B,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,gBAAgB,0CAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3D,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,gBAAgB,0CAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;QACpD,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,gBAAgB,0CAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC5D,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kCAAkC;;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC1C,MAAM,OAAO,GAAe,IAAI,CAAC,2BAA2B,EAAE,CAAA;QAE9D,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;YACnC,IAAI;YACJ,QAAQ,EAAE,CAAC,OAAO,CAAC;SACnB,CAAC,CAAA;QACF,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,oBAAoB,0CAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAEpD,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,iBAAiB,0CAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7D,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,iBAAiB,0CAAG,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QAE1D,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,iBAAiB,0CAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAC3E,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,iBAAiB,0CAAG,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAEzD,mBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAA;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;YAC5C,mBAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACrD,CAAC;QAED,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1D,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACzD,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAEzD,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAChE,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/D,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gDAAgD;;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAA;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAA;QAEnD,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;YACnC,IAAI;YACJ,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAC9B,CAAC,CAAA;QAEF,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,iBAAiB,0CAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAC3E,mBAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,iBAAiB,0CAAG,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAEzD,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjE,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QAChE,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACjE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gBAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,CAAA;QAC1B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAE/B,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACrE,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAC/B,IAAI,CAAC,qCAAqC,EAAE,CAC5C,CAAA;IACF,CAAC;IAEO,MAAM,CAAC,kBAAkB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC1C,MAAM,OAAO,GAAG;YACf,IAAI;YACJ,SAAS,EAAE,IAAA,kBAAS,EAAC,EAAE,CAAC;YACxB,WAAW,EAAE,IAAA,kBAAS,EAAC,EAAE,CAAC;SAC1B,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IAC3B,CAAC;IAEO,MAAM,CAAC,2BAA2B;QACzC,OAAO;YACN,KAAK,EAAE,IAAA,uBAAU,GAAE;YACnB,IAAI,EAAE,IAAA,uBAAU,GAAE;YAClB,IAAI,EAAE,IAAA,uBAAU,GAAE;SAClB,CAAA;IACF,CAAC;IAEO,MAAM,CAAC,qCAAqC;QACnD,OAAO;YACN,IAAI,EAAE,IAAA,uBAAU,GAAE;YAClB,IAAI,EAAE,IAAA,uBAAU,GAAE;YAClB,YAAY,EAAE,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC;YAC9B,UAAU,EAAE,IAAA,kBAAS,EAAC,GAAG,CAAC;YAC1B,aAAa,EAAE,IAAA,kBAAS,EAAC,CAAC,CAAC;YAC3B,QAAQ,EAAE,IAAA,uBAAU,GAAE;SACtB,CAAA;IACF,CAAC;;AA3Tc,4BAAiB,GAAU,EAAE,CAAA;kBAVxB,UAAU;AAmGP;IADtB,IAAA,iBAAI,GAAE;4CAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;oDAON;AAGgB;IADhB,IAAA,iBAAI,GAAE;yEAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;uEAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;qEAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;mEAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;yCAIN;AAGsB;IADtB,IAAA,iBAAI,GAAE;0CAGN;AAGgB;IADhB,IAAA,iBAAI,GAAE;sCAKN;AAGsB;IADtB,IAAA,iBAAI,GAAE;uDAsBN;AAGsB;IADtB,IAAA,iBAAI,GAAE;6DAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;yDAKN;AAGsB;IADtB,IAAA,iBAAI,GAAE;uDAWN;AAGsB;IADtB,IAAA,iBAAI,GAAE;0DA+BN;AAGsB;IADtB,IAAA,iBAAI,GAAE;wEAiBN;AAGsB;IADtB,IAAA,iBAAI,GAAE;wCAON;AAuCF,MAAM,UAAU;IACR,gBAAgB,CAAC,QAAiC;QACxD,OAAO,EAAqB,CAAA;IAC7B,CAAC;IAEM,0BAA0B,CAChC,QAA2C,IACnC,CAAC;IAEH,YAAY,CAAC,QAA6B;QAChD,OAAO,EAAiB,CAAA;IACzB,CAAC;IAEM,aAAa,CAAC,QAA8B,IAAS,CAAC;IAEtD,UAAU,CAAC,QAA2B,IAAS,CAAC;CACvD;AAED,MAAM,UAAU,GAAG,kBAAG,CAAC,OAAO,CAAC,kBAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC9C,MAAM,UAAU,GAAG,kBAAG,CAAC,OAAO,CAAC,kBAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC9C,MAAM,UAAU,GAAG,IAAA,wBAAS,EAAC,kBAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC7C,MAAM,MAAM,GAAG,kBAAG,CAAC,OAAO,CAAC,kBAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"Liblsl.test.js","sourceRoot":"","sources":["../../../src/__tests__/implementation/Liblsl.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Liblsl, BoundOutlet, BoundStreamInfo, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, PushSampleFtOptions as PushSampleFtOptions, PushSampleStrtOptions } from '../../Liblsl';
|
|
2
2
|
export declare class SpyLiblsl implements Liblsl {
|
|
3
|
+
outlet: BoundOutlet;
|
|
4
|
+
streamInfo: BoundStreamInfo;
|
|
3
5
|
lastCreateStreamInfoOptions?: CreateStreamInfoOptions;
|
|
4
6
|
lastAppendChannelsToStreamInfoOptions?: AppendChannelsToStreamInfoOptions;
|
|
5
7
|
lastCreateOutletOptions?: CreateOutletOptions;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
streamInfo: BoundStreamInfo;
|
|
8
|
+
lastPushSampleFtOptions?: PushSampleFtOptions;
|
|
9
|
+
lastPushSampleStrtOptions?: PushSampleStrtOptions;
|
|
9
10
|
createStreamInfoHitCount: number;
|
|
10
11
|
destroyOutletHitCount: number;
|
|
12
|
+
localClockHitCount: number;
|
|
11
13
|
createStreamInfo(options: CreateStreamInfoOptions): BoundStreamInfo;
|
|
12
14
|
appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
|
|
13
15
|
createOutlet(options: CreateOutletOptions): BoundOutlet;
|
|
14
16
|
destroyOutlet(): void;
|
|
15
|
-
|
|
17
|
+
pushSampleFt(options: PushSampleFtOptions): void;
|
|
18
|
+
pushSampleStrt(options: PushSampleStrtOptions): void;
|
|
19
|
+
localClock(): number;
|
|
16
20
|
}
|
|
@@ -7,6 +7,7 @@ class SpyLiblsl {
|
|
|
7
7
|
this.streamInfo = {};
|
|
8
8
|
this.createStreamInfoHitCount = 0;
|
|
9
9
|
this.destroyOutletHitCount = 0;
|
|
10
|
+
this.localClockHitCount = 0;
|
|
10
11
|
}
|
|
11
12
|
createStreamInfo(options) {
|
|
12
13
|
this.createStreamInfoHitCount++;
|
|
@@ -23,8 +24,15 @@ class SpyLiblsl {
|
|
|
23
24
|
destroyOutlet() {
|
|
24
25
|
this.destroyOutletHitCount++;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
this.
|
|
27
|
+
pushSampleFt(options) {
|
|
28
|
+
this.lastPushSampleFtOptions = options;
|
|
29
|
+
}
|
|
30
|
+
pushSampleStrt(options) {
|
|
31
|
+
this.lastPushSampleStrtOptions = options;
|
|
32
|
+
}
|
|
33
|
+
localClock() {
|
|
34
|
+
this.localClockHitCount++;
|
|
35
|
+
return new Date().getTime();
|
|
28
36
|
}
|
|
29
37
|
}
|
|
30
38
|
exports.SpyLiblsl = SpyLiblsl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpyLiblsl.js","sourceRoot":"","sources":["../../../src/__tests__/support/SpyLiblsl.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SpyLiblsl.js","sourceRoot":"","sources":["../../../src/__tests__/support/SpyLiblsl.ts"],"names":[],"mappings":";;;AAWA,MAAa,SAAS;IAAtB;QACQ,WAAM,GAAgB,EAAiB,CAAA;QACvC,eAAU,GAAoB,EAAqB,CAAA;QAQnD,6BAAwB,GAAG,CAAC,CAAA;QAC5B,0BAAqB,GAAG,CAAC,CAAA;QACzB,uBAAkB,GAAG,CAAC,CAAA;IAmC9B,CAAC;IAjCO,gBAAgB,CAAC,OAAgC;QACvD,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAA;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAA;IACvB,CAAC;IAEM,0BAA0B,CAChC,OAA0C;QAE1C,IAAI,CAAC,qCAAqC,GAAG,OAAO,CAAA;IACrD,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC/C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;QACtC,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAEM,aAAa;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC7B,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC/C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;IACvC,CAAC;IAEM,cAAc,CAAC,OAA8B;QACnD,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAA;IACzC,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;CACD;AA/CD,8BA+CC"}
|
package/package.json
CHANGED
package/src/Liblsl.ts
CHANGED
|
@@ -9,18 +9,18 @@ export default class LiblslImpl implements Liblsl {
|
|
|
9
9
|
public static ffi = ffi
|
|
10
10
|
private bindings: LiblslBindings
|
|
11
11
|
|
|
12
|
-
public static getInstance() {
|
|
12
|
+
public static getInstance(): Liblsl {
|
|
13
13
|
if (!this.instance) {
|
|
14
14
|
this.setInstance(new this())
|
|
15
15
|
}
|
|
16
16
|
return this.instance!
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
public static setInstance(instance: Liblsl) {
|
|
19
|
+
public static setInstance(instance: Liblsl): void {
|
|
20
20
|
this.instance = instance
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
public static resetInstance() {
|
|
23
|
+
public static resetInstance(): void {
|
|
24
24
|
delete this.instance
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -52,6 +52,7 @@ export default class LiblslImpl implements Liblsl {
|
|
|
52
52
|
lsl_destroy_outlet: ['void', [outletType]],
|
|
53
53
|
lsl_local_clock: ['double', []],
|
|
54
54
|
lsl_push_sample_ft: ['void', [outletType, FloatArray, 'double']],
|
|
55
|
+
lsl_push_sample_strt: ['void', [outletType, StringArray, 'double']],
|
|
55
56
|
lsl_get_desc: [xmlPtr, [streamInfo]],
|
|
56
57
|
lsl_append_child: [xmlPtr, [xmlPtr, 'string']],
|
|
57
58
|
lsl_append_child_value: [xmlPtr, [xmlPtr, 'string', 'string']],
|
|
@@ -96,7 +97,7 @@ export default class LiblslImpl implements Liblsl {
|
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
|
|
99
|
-
public createOutlet(options: CreateOutletOptions) {
|
|
100
|
+
public createOutlet(options: CreateOutletOptions): BoundOutlet {
|
|
100
101
|
const { info, chunkSize, maxBuffered } = assertOptions(options, [
|
|
101
102
|
'info',
|
|
102
103
|
'chunkSize',
|
|
@@ -111,11 +112,26 @@ export default class LiblslImpl implements Liblsl {
|
|
|
111
112
|
this.bindings.lsl_destroy_outlet(outlet)
|
|
112
113
|
}
|
|
113
114
|
|
|
114
|
-
public
|
|
115
|
-
const { outlet, sample } = assertOptions(options, [
|
|
115
|
+
public pushSampleFt(options: PushSampleFtOptions): void {
|
|
116
|
+
const { outlet, sample, timestamp } = assertOptions(options, [
|
|
117
|
+
'outlet',
|
|
118
|
+
'sample',
|
|
119
|
+
'timestamp',
|
|
120
|
+
])
|
|
121
|
+
this.bindings.lsl_push_sample_ft(outlet, sample, timestamp)
|
|
122
|
+
}
|
|
116
123
|
|
|
117
|
-
|
|
118
|
-
|
|
124
|
+
public pushSampleStrt(options: PushSampleStrtOptions): void {
|
|
125
|
+
const { outlet, sample, timestamp } = assertOptions(options, [
|
|
126
|
+
'outlet',
|
|
127
|
+
'sample',
|
|
128
|
+
'timestamp',
|
|
129
|
+
])
|
|
130
|
+
this.bindings.lsl_push_sample_strt(outlet, sample, timestamp)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
public localClock(): number {
|
|
134
|
+
return this.bindings.lsl_local_clock()
|
|
119
135
|
}
|
|
120
136
|
}
|
|
121
137
|
|
|
@@ -124,7 +140,9 @@ export interface Liblsl {
|
|
|
124
140
|
appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void
|
|
125
141
|
createOutlet(options: CreateOutletOptions): BoundOutlet
|
|
126
142
|
destroyOutlet(options: DestroyOutletOptions): void
|
|
127
|
-
|
|
143
|
+
pushSampleFt(options: PushSampleFtOptions): void
|
|
144
|
+
pushSampleStrt(options: PushSampleStrtOptions): void
|
|
145
|
+
localClock(): number
|
|
128
146
|
}
|
|
129
147
|
|
|
130
148
|
export interface CreateStreamInfoOptions {
|
|
@@ -153,9 +171,16 @@ export interface DestroyOutletOptions {
|
|
|
153
171
|
outlet: BoundOutlet
|
|
154
172
|
}
|
|
155
173
|
|
|
156
|
-
export interface
|
|
174
|
+
export interface PushSampleFtOptions {
|
|
157
175
|
outlet: BoundOutlet
|
|
158
|
-
sample:
|
|
176
|
+
sample: number[]
|
|
177
|
+
timestamp: number
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface PushSampleStrtOptions {
|
|
181
|
+
outlet: BoundOutlet
|
|
182
|
+
sample: string[]
|
|
183
|
+
timestamp: number
|
|
159
184
|
}
|
|
160
185
|
|
|
161
186
|
export interface LslChannel {
|
|
@@ -189,6 +214,12 @@ export interface LiblslBindings {
|
|
|
189
214
|
timestamp: number
|
|
190
215
|
): void
|
|
191
216
|
|
|
217
|
+
lsl_push_sample_strt(
|
|
218
|
+
outlet: BoundOutlet,
|
|
219
|
+
sample: LslSample,
|
|
220
|
+
timestamp: number
|
|
221
|
+
): void
|
|
222
|
+
|
|
192
223
|
lsl_local_clock(): number
|
|
193
224
|
lsl_get_desc(info: BoundStreamInfo): BoundDesc
|
|
194
225
|
lsl_append_child(desc: BoundDesc, name: string): BoundChild
|
|
@@ -203,4 +234,5 @@ export interface BoundChild {}
|
|
|
203
234
|
const streamInfo = ref.refType(ref.types.void)
|
|
204
235
|
const outletType = ref.refType(ref.types.void)
|
|
205
236
|
const FloatArray = ArrayType(ref.types.float)
|
|
237
|
+
const StringArray = ArrayType(ref.types.CString)
|
|
206
238
|
const xmlPtr = ref.refType(ref.types.void)
|
package/src/LslOutlet.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { SchemaError, assertOptions } from '@sprucelabs/schema'
|
|
2
|
-
import LiblslImpl, {
|
|
2
|
+
import LiblslImpl, {
|
|
3
|
+
BoundOutlet,
|
|
4
|
+
BoundStreamInfo,
|
|
5
|
+
Liblsl,
|
|
6
|
+
LslSample,
|
|
7
|
+
} from './Liblsl'
|
|
3
8
|
|
|
4
9
|
export default class LslOutletImpl implements LslOutlet {
|
|
5
|
-
private outletOptions: LslOutletOptions
|
|
6
10
|
public static Class?: new (options: LslOutletOptions) => LslOutlet
|
|
11
|
+
private options: LslOutletOptions
|
|
7
12
|
private streamInfo: BoundStreamInfo
|
|
8
13
|
private outlet: BoundOutlet
|
|
9
14
|
|
|
@@ -21,10 +26,10 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
21
26
|
'maxBuffered',
|
|
22
27
|
])
|
|
23
28
|
|
|
24
|
-
this.
|
|
29
|
+
this.options = options
|
|
25
30
|
|
|
26
31
|
const { chunkSize, maxBuffered, channelNames, ...streamInfoOptions } = this
|
|
27
|
-
.
|
|
32
|
+
.options as any
|
|
28
33
|
|
|
29
34
|
const channelCount = channelNames.length
|
|
30
35
|
|
|
@@ -47,35 +52,53 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
47
52
|
info: this.streamInfo,
|
|
48
53
|
channels: channelNames.map((label: string) => ({
|
|
49
54
|
label,
|
|
50
|
-
unit: this.
|
|
51
|
-
type: this.
|
|
55
|
+
unit: this.options.unit,
|
|
56
|
+
type: this.options.type,
|
|
52
57
|
})),
|
|
53
58
|
})
|
|
54
59
|
|
|
55
60
|
this.outlet = this.lsl.createOutlet({
|
|
56
61
|
info: this.streamInfo,
|
|
57
|
-
chunkSize: this.
|
|
58
|
-
maxBuffered: this.
|
|
62
|
+
chunkSize: this.options.chunkSize,
|
|
63
|
+
maxBuffered: this.options.maxBuffered,
|
|
59
64
|
})
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
public static Outlet(options: LslOutletOptions) {
|
|
67
|
+
public static Outlet(options: LslOutletOptions): LslOutlet {
|
|
63
68
|
return new (this.Class ?? this)(options)
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
public destroy() {
|
|
71
|
+
public destroy(): void {
|
|
67
72
|
this.lsl.destroyOutlet({ outlet: this.outlet })
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
public pushSample(sample: LslSample) {
|
|
71
|
-
this.lsl.
|
|
75
|
+
public pushSample(sample: LslSample): void {
|
|
76
|
+
const timestamp = this.lsl.localClock()
|
|
77
|
+
|
|
78
|
+
if (this.options.channelFormat === 'float32') {
|
|
79
|
+
this.lsl.pushSampleFt({
|
|
80
|
+
outlet: this.outlet,
|
|
81
|
+
sample: sample as number[],
|
|
82
|
+
timestamp,
|
|
83
|
+
})
|
|
84
|
+
} else if (this.options.channelFormat === 'string') {
|
|
85
|
+
this.lsl.pushSampleStrt({
|
|
86
|
+
outlet: this.outlet,
|
|
87
|
+
sample: sample as string[],
|
|
88
|
+
timestamp,
|
|
89
|
+
})
|
|
90
|
+
} else {
|
|
91
|
+
throw new Error(
|
|
92
|
+
`This method currently does not support the ${this.options.channelFormat} type! Please implement it.`
|
|
93
|
+
)
|
|
94
|
+
}
|
|
72
95
|
}
|
|
73
96
|
|
|
74
97
|
private lookupChannelFormat(channelFormat: ChannelFormat): number {
|
|
75
98
|
return CHANNEL_FORMATS.indexOf(channelFormat)
|
|
76
99
|
}
|
|
77
100
|
|
|
78
|
-
private assertValidMaxBufferred(maxBuffered: number) {
|
|
101
|
+
private assertValidMaxBufferred(maxBuffered: number): void {
|
|
79
102
|
if (!this.isPositiveIntegerOrZero(maxBuffered)) {
|
|
80
103
|
throw new SchemaError({
|
|
81
104
|
code: 'INVALID_PARAMETERS',
|
|
@@ -85,7 +108,7 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
85
108
|
}
|
|
86
109
|
}
|
|
87
110
|
|
|
88
|
-
private assertValidChunkSize(chunkSize: number) {
|
|
111
|
+
private assertValidChunkSize(chunkSize: number): void {
|
|
89
112
|
if (!this.isPositiveIntegerOrZero(chunkSize)) {
|
|
90
113
|
throw new SchemaError({
|
|
91
114
|
code: 'INVALID_PARAMETERS',
|
|
@@ -95,7 +118,7 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
95
118
|
}
|
|
96
119
|
}
|
|
97
120
|
|
|
98
|
-
private assertValidChannelFormat(channelFormat: ChannelFormat) {
|
|
121
|
+
private assertValidChannelFormat(channelFormat: ChannelFormat): void {
|
|
99
122
|
const validFormats = CHANNEL_FORMATS
|
|
100
123
|
if (validFormats.indexOf(channelFormat) === -1) {
|
|
101
124
|
throw new SchemaError({
|
|
@@ -106,7 +129,7 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
106
129
|
}
|
|
107
130
|
}
|
|
108
131
|
|
|
109
|
-
private assertValidSampleRate(sampleRate: number) {
|
|
132
|
+
private assertValidSampleRate(sampleRate: number): void {
|
|
110
133
|
if (!this.isGreaterThanZero(sampleRate)) {
|
|
111
134
|
throw new SchemaError({
|
|
112
135
|
code: 'INVALID_PARAMETERS',
|
|
@@ -116,7 +139,7 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
116
139
|
}
|
|
117
140
|
}
|
|
118
141
|
|
|
119
|
-
private assertValidChannelCount(channelCount: number) {
|
|
142
|
+
private assertValidChannelCount(channelCount: number): void {
|
|
120
143
|
if (!this.isPositiveInteger(channelCount)) {
|
|
121
144
|
throw new SchemaError({
|
|
122
145
|
code: 'INVALID_PARAMETERS',
|
|
@@ -126,19 +149,19 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
126
149
|
}
|
|
127
150
|
}
|
|
128
151
|
|
|
129
|
-
private isGreaterThanZero(value: number) {
|
|
152
|
+
private isGreaterThanZero(value: number): boolean {
|
|
130
153
|
return value >= 0
|
|
131
154
|
}
|
|
132
155
|
|
|
133
|
-
private isPositiveInteger(value: number) {
|
|
156
|
+
private isPositiveInteger(value: number): boolean {
|
|
134
157
|
return Number.isInteger(value) && value > 0
|
|
135
158
|
}
|
|
136
159
|
|
|
137
|
-
private isPositiveIntegerOrZero(value: number) {
|
|
160
|
+
private isPositiveIntegerOrZero(value: number): boolean {
|
|
138
161
|
return Number.isInteger(value) && value >= 0
|
|
139
162
|
}
|
|
140
163
|
|
|
141
|
-
private get lsl() {
|
|
164
|
+
private get lsl(): Liblsl {
|
|
142
165
|
return LiblslImpl.getInstance()
|
|
143
166
|
}
|
|
144
167
|
}
|