@neurodevs/node-lsl 9.0.0 → 10.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.
@@ -5,8 +5,9 @@ export default class LslOutletTest extends AbstractSpruceTest {
5
5
  private static randomOutletOptions;
6
6
  private static channelFormatIdx;
7
7
  protected static beforeEach(): Promise<void>;
8
- protected static throwsWhenMissingRequiredParams(): Promise<void>;
8
+ protected static throwsWithMissingRequiredParams(): Promise<void>;
9
9
  protected static throwsWithInvalidChannelNames(): Promise<void>;
10
+ protected static allowsZeroSampleRate(): Promise<void>;
10
11
  protected static throwsWithInvalidSampleRate(): Promise<void>;
11
12
  protected static throwsWithInvalidChannelFormat(): Promise<void>;
12
13
  protected static throwsWithInvalidChunkSize(): Promise<void>;
@@ -21,12 +22,13 @@ export default class LslOutletTest extends AbstractSpruceTest {
21
22
  protected static appendsChannelsBasedOnCount(labels: string[]): Promise<void>;
22
23
  protected static canDestroyOutlet(): Promise<void>;
23
24
  protected static pushSampleShouldNotCreateMultipleOutlets(): Promise<void>;
25
+ protected static waitsForTenMsAfterConstructionBeforeReturning(): Promise<void>;
24
26
  private static assertThrowsInvalidMaxBuffered;
25
27
  private static assertThrowsInvalidChunkSize;
26
28
  private static assertThrowsInvalidSampleRate;
27
29
  private static assertThrowsInvalidChannelNames;
28
30
  private static assertDoesThrowInvalidParameters;
29
- private static Outlet;
30
31
  private static StringOutlet;
31
32
  private static FloatOutlet;
33
+ private static Outlet;
32
34
  }
@@ -48,9 +48,10 @@ class LslOutletTest extends test_utils_1.default {
48
48
  this.fakeLiblsl = new FakeLiblsl_1.default();
49
49
  Liblsl_1.default.setInstance(this.fakeLiblsl);
50
50
  }
51
- static async throwsWhenMissingRequiredParams() {
51
+ static async throwsWithMissingRequiredParams() {
52
+ const err = await test_utils_1.assert.doesThrowAsync(
52
53
  //@ts-ignore
53
- const err = test_utils_1.assert.doesThrow(() => new LslOutlet_1.default());
54
+ async () => await LslOutlet_1.default.Create());
54
55
  test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
55
56
  parameters: [
56
57
  'name',
@@ -67,44 +68,45 @@ class LslOutletTest extends test_utils_1.default {
67
68
  });
68
69
  }
69
70
  static async throwsWithInvalidChannelNames() {
70
- this.assertThrowsInvalidChannelNames(0);
71
+ await this.assertThrowsInvalidChannelNames(0);
72
+ }
73
+ static async allowsZeroSampleRate() {
74
+ await this.Outlet({ sampleRate: 0 });
71
75
  }
72
76
  static async throwsWithInvalidSampleRate() {
73
- this.Outlet({ sampleRate: 0 });
74
- this.assertThrowsInvalidSampleRate(-1);
75
- this.assertThrowsInvalidSampleRate(-1.5);
77
+ await this.assertThrowsInvalidSampleRate(-1);
78
+ await this.assertThrowsInvalidSampleRate(-1.5);
76
79
  }
77
80
  static async throwsWithInvalidChannelFormat() {
81
+ await this.assertDoesThrowInvalidParameters(
78
82
  //@ts-ignore
79
- this.assertDoesThrowInvalidParameters({ channelFormat: (0, test_utils_1.generateId)() }, [
80
- 'channelFormat',
81
- ]);
83
+ { channelFormat: (0, test_utils_1.generateId)() }, ['channelFormat']);
82
84
  }
83
85
  static async throwsWithInvalidChunkSize() {
84
- this.Outlet({ chunkSize: 0 });
85
- this.assertThrowsInvalidChunkSize(-1);
86
- this.assertThrowsInvalidChunkSize(-1.5);
87
- this.assertThrowsInvalidChunkSize(1.5);
86
+ await this.Outlet({ chunkSize: 0 });
87
+ await this.assertThrowsInvalidChunkSize(-1);
88
+ await this.assertThrowsInvalidChunkSize(-1.5);
89
+ await this.assertThrowsInvalidChunkSize(1.5);
88
90
  }
89
91
  static async throwsWithInvalidMaxBuffered() {
90
- this.Outlet({ maxBuffered: 0 });
91
- this.assertThrowsInvalidMaxBuffered(-1);
92
- this.assertThrowsInvalidMaxBuffered(-1.5);
93
- this.assertThrowsInvalidMaxBuffered(1.5);
92
+ await this.Outlet({ maxBuffered: 0 });
93
+ await this.assertThrowsInvalidMaxBuffered(-1);
94
+ await this.assertThrowsInvalidMaxBuffered(-1.5);
95
+ await this.assertThrowsInvalidMaxBuffered(1.5);
94
96
  }
95
97
  static async throwsWithUnsupportedType() {
96
98
  for (let unsupportedType of consts_1.TEST_UNSUPPORTED_CHANNEL_FORMATS) {
97
- test_utils_1.assert.doesThrow(() => this.Outlet({ channelFormat: unsupportedType }), `This method currently does not support the ${unsupportedType} type! Please implement it.`);
99
+ await test_utils_1.assert.doesThrowAsync(async () => await this.Outlet({ channelFormat: unsupportedType }), `This method currently does not support the ${unsupportedType} type! Please implement it.`);
98
100
  }
99
101
  }
100
102
  static async supportsAllKnownChannelFormats() {
101
103
  for (const format of consts_1.TEST_SUPPORTED_CHANNEL_FORMATS) {
102
- this.Outlet({ channelFormat: format });
104
+ await this.Outlet({ channelFormat: format });
103
105
  }
104
106
  }
105
107
  static async canPushFloatSampleToLsl(sample) {
106
108
  var _a, _b, _c;
107
- const outlet = this.FloatOutlet();
109
+ const outlet = await this.FloatOutlet();
108
110
  outlet.pushSample(sample);
109
111
  test_utils_1.assert.isEqual((_a = this.fakeLiblsl.lastPushSampleFloatTimestampOptions) === null || _a === void 0 ? void 0 : _a.outlet, this.fakeLiblsl.outlet);
110
112
  test_utils_1.assert.isEqualDeep((_b = this.fakeLiblsl.lastPushSampleFloatTimestampOptions) === null || _b === void 0 ? void 0 : _b.sample, sample);
@@ -118,7 +120,7 @@ class LslOutletTest extends test_utils_1.default {
118
120
  static async canPushStringSampleToLsl() {
119
121
  var _a, _b, _c;
120
122
  const sample = [(0, test_utils_1.generateId)()];
121
- const outlet = this.StringOutlet();
123
+ const outlet = await this.StringOutlet();
122
124
  outlet.pushSample(sample);
123
125
  test_utils_1.assert.isEqual((_a = this.fakeLiblsl.lastPushSampleStringTimestampOptions) === null || _a === void 0 ? void 0 : _a.outlet, this.fakeLiblsl.outlet);
124
126
  test_utils_1.assert.isEqualDeep((_b = this.fakeLiblsl.lastPushSampleStringTimestampOptions) === null || _b === void 0 ? void 0 : _b.sample, sample);
@@ -126,7 +128,7 @@ class LslOutletTest extends test_utils_1.default {
126
128
  }
127
129
  static async pushingStringTwiceGivesDifferentTimestamps() {
128
130
  var _a, _b;
129
- const outlet = this.StringOutlet();
131
+ const outlet = await this.StringOutlet();
130
132
  const sample = [(0, test_utils_1.generateId)()];
131
133
  outlet.pushSample(sample);
132
134
  const t1 = (_a = this.fakeLiblsl.lastPushSampleStringTimestampOptions) === null || _a === void 0 ? void 0 : _a.timestamp;
@@ -137,7 +139,7 @@ class LslOutletTest extends test_utils_1.default {
137
139
  test_utils_1.assert.isEqual(this.fakeLiblsl.localClockHitCount, 2);
138
140
  }
139
141
  static async constructionCreatesStreamInfo() {
140
- this.Outlet();
142
+ await this.Outlet();
141
143
  const { ...options } = this.randomOutletOptions;
142
144
  options.channelCount = options.channelNames.length;
143
145
  delete options.manufacturer;
@@ -152,13 +154,13 @@ class LslOutletTest extends test_utils_1.default {
152
154
  }
153
155
  static async canOverrideClassInstantiatedInFactory() {
154
156
  LslOutlet_1.default.Class = CheckingOutlet;
155
- const instance = this.Outlet();
157
+ const instance = await this.Outlet();
156
158
  test_utils_1.assert.isInstanceOf(instance, CheckingOutlet);
157
159
  }
158
160
  static async appendsChannelsBasedOnCount(labels) {
159
161
  const type = (0, test_utils_1.generateId)();
160
162
  const unit = (0, test_utils_1.generateId)();
161
- this.Outlet({ channelNames: labels, type, unit });
163
+ await this.Outlet({ channelNames: labels, type, unit });
162
164
  test_utils_1.assert.isEqualDeep(this.fakeLiblsl.lastAppendChannelsToStreamInfoOptions, {
163
165
  info: this.fakeLiblsl.streamInfo,
164
166
  channels: labels.map((label) => ({
@@ -169,55 +171,70 @@ class LslOutletTest extends test_utils_1.default {
169
171
  });
170
172
  }
171
173
  static async canDestroyOutlet() {
172
- const outlet = this.Outlet();
174
+ const outlet = await this.Outlet();
173
175
  outlet.destroy();
174
176
  test_utils_1.assert.isEqual(this.fakeLiblsl.destroyOutletHitCount, 1);
175
177
  }
176
178
  static async pushSampleShouldNotCreateMultipleOutlets() {
177
- const outlet = this.FloatOutlet();
179
+ const outlet = await this.FloatOutlet();
178
180
  outlet.pushSample([1.0]);
179
181
  outlet.pushSample([2.0]);
180
182
  outlet.pushSample([3.0]);
181
183
  test_utils_1.assert.isEqual(this.fakeLiblsl.createStreamInfoHitCount, 1);
182
184
  }
183
- static assertThrowsInvalidMaxBuffered(maxBuffered) {
184
- this.assertDoesThrowInvalidParameters({ maxBuffered }, ['maxBuffered']);
185
+ static async waitsForTenMsAfterConstructionBeforeReturning() {
186
+ const startMs = Date.now();
187
+ await this.Outlet({ waitAfterConstructionMs: 10 });
188
+ const endMs = Date.now();
189
+ test_utils_1.assert.isAbove(endMs - startMs, 10);
185
190
  }
186
- static assertThrowsInvalidChunkSize(chunkSize) {
187
- this.assertDoesThrowInvalidParameters({ chunkSize }, ['chunkSize']);
191
+ static async assertThrowsInvalidMaxBuffered(maxBuffered) {
192
+ await this.assertDoesThrowInvalidParameters({ maxBuffered }, [
193
+ 'maxBuffered',
194
+ ]);
188
195
  }
189
- static assertThrowsInvalidSampleRate(sampleRate) {
190
- this.assertDoesThrowInvalidParameters({ sampleRate }, ['sampleRate']);
196
+ static async assertThrowsInvalidChunkSize(chunkSize) {
197
+ await this.assertDoesThrowInvalidParameters({ chunkSize }, [
198
+ 'chunkSize',
199
+ ]);
191
200
  }
192
- static assertThrowsInvalidChannelNames(count) {
193
- this.assertDoesThrowInvalidParameters({ channelNames: new Array(count).fill((0, test_utils_1.generateId)()) }, ['channelNames']);
201
+ static async assertThrowsInvalidSampleRate(sampleRate) {
202
+ await this.assertDoesThrowInvalidParameters({ sampleRate }, [
203
+ 'sampleRate',
204
+ ]);
205
+ }
206
+ static async assertThrowsInvalidChannelNames(count) {
207
+ await this.assertDoesThrowInvalidParameters({ channelNames: new Array(count).fill((0, test_utils_1.generateId)()) }, ['channelNames']);
194
208
  }
195
- static assertDoesThrowInvalidParameters(options, parameters) {
196
- const err = test_utils_1.assert.doesThrow(() => this.Outlet(options));
209
+ static async assertDoesThrowInvalidParameters(options, parameters) {
210
+ const err = await test_utils_1.assert.doesThrowAsync(async () => await this.Outlet(options));
197
211
  test_utils_1.errorAssert.assertError(err, 'INVALID_PARAMETERS', {
198
212
  parameters,
199
213
  });
200
214
  }
201
- static Outlet(options) {
202
- return LslOutlet_1.default.Outlet({
215
+ static async StringOutlet() {
216
+ return await this.Outlet({ channelFormat: 'string' });
217
+ }
218
+ static async FloatOutlet() {
219
+ return await this.Outlet({ channelFormat: 'float32' });
220
+ }
221
+ static async Outlet(options) {
222
+ return await LslOutlet_1.default.Create({
203
223
  ...this.randomOutletOptions,
204
224
  ...options,
205
225
  });
206
226
  }
207
- static StringOutlet() {
208
- return this.Outlet({ channelFormat: 'string' });
209
- }
210
- static FloatOutlet() {
211
- return this.Outlet({ channelFormat: 'float32' });
212
- }
213
227
  }
214
228
  exports.default = LslOutletTest;
215
229
  __decorate([
216
230
  (0, test_utils_1.test)()
217
- ], LslOutletTest, "throwsWhenMissingRequiredParams", null);
231
+ ], LslOutletTest, "throwsWithMissingRequiredParams", null);
218
232
  __decorate([
219
233
  (0, test_utils_1.test)()
220
234
  ], LslOutletTest, "throwsWithInvalidChannelNames", null);
235
+ __decorate([
236
+ (0, test_utils_1.test)()
237
+ ], LslOutletTest, "allowsZeroSampleRate", null);
221
238
  __decorate([
222
239
  (0, test_utils_1.test)()
223
240
  ], LslOutletTest, "throwsWithInvalidSampleRate", null);
@@ -262,6 +279,9 @@ __decorate([
262
279
  __decorate([
263
280
  (0, test_utils_1.test)()
264
281
  ], LslOutletTest, "pushSampleShouldNotCreateMultipleOutlets", null);
282
+ __decorate([
283
+ (0, test_utils_1.test)()
284
+ ], LslOutletTest, "waitsForTenMsAfterConstructionBeforeReturning", null);
265
285
  class CheckingOutlet extends LslOutlet_1.default {
266
286
  constructor(options) {
267
287
  super(options);
@@ -1 +1 @@
1
- {"version":3,"file":"LslOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/LslOutlet.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/LslOutlet.test.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ class TimeMarkerOutletTest extends test_utils_1.default {
45
45
  TimeMarkerOutlet_1.default.Class = SpyTimeMarkerOutlet_1.default;
46
46
  this.fakeLiblsl = new FakeLiblsl_1.default();
47
47
  Liblsl_1.default.setInstance(this.fakeLiblsl);
48
- this.outlet = this.Outlet();
48
+ this.outlet = await this.Outlet();
49
49
  }
50
50
  static async loadsWithTimeMarkerSpecificOptions() {
51
51
  test_utils_1.assert.isEqualDeep(this.outlet.passedOptions, {
@@ -63,7 +63,7 @@ class TimeMarkerOutletTest extends test_utils_1.default {
63
63
  }
64
64
  static async canOverrideDefaultOptions() {
65
65
  const options = (0, generateRandomOutletOptions_1.default)();
66
- const outlet = this.Outlet(options);
66
+ const outlet = await this.Outlet(options);
67
67
  test_utils_1.assert.isEqualDeep(outlet.passedOptions, options);
68
68
  }
69
69
  static async pushingSingleMarkerIncrementsHitCountAndWaitTime() {
@@ -98,7 +98,7 @@ class TimeMarkerOutletTest extends test_utils_1.default {
98
98
  test_utils_1.assert.isEqual(hitCount, 10);
99
99
  }
100
100
  static async doesNotWaitIfStopped() {
101
- this.setupTimeMarkerImpl();
101
+ await this.setupTimeMarkerImpl();
102
102
  const startMs = Date.now();
103
103
  const promise = this.pushTotalMarkers(2, 1000);
104
104
  this.outlet.stop();
@@ -107,16 +107,16 @@ class TimeMarkerOutletTest extends test_utils_1.default {
107
107
  test_utils_1.assert.isBelow(endMs - startMs, 10);
108
108
  }
109
109
  static async clearsTheTimeoutOnStop() {
110
- this.setupTimeMarkerImpl();
110
+ await this.setupTimeMarkerImpl();
111
111
  const promise = this.pushTotalMarkers(2, 100);
112
112
  this.outlet.stop();
113
113
  this.outlet.pushSample = () => test_utils_1.assert.fail('Should not have been called');
114
114
  await promise;
115
115
  await this.wait(100);
116
116
  }
117
- static setupTimeMarkerImpl() {
117
+ static async setupTimeMarkerImpl() {
118
118
  TimeMarkerOutlet_1.default.Class = TimeMarkerOutlet_1.default;
119
- this.outlet = this.Outlet();
119
+ this.outlet = await this.Outlet();
120
120
  }
121
121
  static async pushTotalMarkers(total, durationMs) {
122
122
  const markers = new Array(total)
@@ -131,8 +131,8 @@ class TimeMarkerOutletTest extends test_utils_1.default {
131
131
  durationMs: durationMs !== null && durationMs !== void 0 ? durationMs : (0, crypto_1.randomInt)(100, 1000),
132
132
  };
133
133
  }
134
- static Outlet(options) {
135
- return TimeMarkerOutlet_1.default.Outlet(options);
134
+ static async Outlet(options) {
135
+ return (await TimeMarkerOutlet_1.default.Create(options));
136
136
  }
137
137
  }
138
138
  exports.default = TimeMarkerOutletTest;
@@ -1 +1 @@
1
- {"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/TimeMarkerOutlet.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/TimeMarkerOutlet.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,8 @@ export default class LslOutletImpl implements LslOutlet {
6
6
  private outlet;
7
7
  private pushSampleByType;
8
8
  protected constructor(options: LslOutletOptions);
9
- static Outlet(options: LslOutletOptions): LslOutlet;
9
+ static Create(options: LslOutletOptions): Promise<LslOutlet>;
10
+ private static wait;
10
11
  destroy(): void;
11
12
  pushSample(sample: LslSample): void;
12
13
  private getPushMethod;
@@ -29,4 +30,5 @@ export interface LslOutletOptions {
29
30
  unit: string;
30
31
  chunkSize: number;
31
32
  maxBuffered: number;
33
+ waitAfterConstructionMs?: number;
32
34
  }
@@ -52,9 +52,15 @@ class LslOutletImpl {
52
52
  const pushMethod = this.getPushMethod();
53
53
  this.pushSampleByType = this.lsl[pushMethod].bind(this.lsl);
54
54
  }
55
- static Outlet(options) {
55
+ static async Create(options) {
56
56
  var _a;
57
- return new ((_a = this.Class) !== null && _a !== void 0 ? _a : this)(options);
57
+ const { waitAfterConstructionMs = 10 } = options !== null && options !== void 0 ? options : {};
58
+ const instance = new ((_a = this.Class) !== null && _a !== void 0 ? _a : this)(options);
59
+ await this.wait(waitAfterConstructionMs);
60
+ return instance;
61
+ }
62
+ static wait(waitMs) {
63
+ return new Promise((resolve) => setTimeout(resolve, waitMs));
58
64
  }
59
65
  destroy() {
60
66
  this.lsl.destroyOutlet({ outlet: this.outlet });
@@ -1 +1 @@
1
- {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/implementations/LslOutlet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/implementations/LslOutlet.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ export default class TimeMarkerOutletImpl extends LslOutletImpl implements TimeM
5
5
  private isPlaying;
6
6
  private waitResolve?;
7
7
  private timeout?;
8
- static Outlet(options?: Partial<LslOutletOptions>): TimeMarkerOutlet;
8
+ static Create(options?: Partial<LslOutletOptions>): Promise<TimeMarkerOutlet>;
9
9
  pushMarkers(markers: DurationMarker[]): Promise<void>;
10
10
  protected wait(durationMs: number): Promise<unknown>;
11
11
  private setTimeout;
@@ -9,7 +9,7 @@ class TimeMarkerOutletImpl extends LslOutlet_1.default {
9
9
  super(...arguments);
10
10
  this.isPlaying = false;
11
11
  }
12
- static Outlet(options) {
12
+ static async Create(options) {
13
13
  var _a;
14
14
  const defaultOptions = {
15
15
  name: 'Time markers',
@@ -1 +1 @@
1
- {"version":3,"file":"TimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/implementations/TimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AACA,4DAAwE;AAExE,MAAqB,oBACjB,SAAQ,mBAAa;IADzB;;QAMY,cAAS,GAAG,KAAK,CAAA;IAoD7B,CAAC;IAhDU,MAAM,CAAC,MAAM,CAAC,OAAmC;;QACpD,MAAM,cAAc,GAAG;YACnB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;SACG,CAAA;QAErB,OAAO,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,CAAC;YAC5B,GAAG,cAAc;YACjB,GAAG,OAAO;SACb,CAAqB,CAAA;IAC1B,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAElC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;IACzE,CAAC;IAEO,UAAU,CAAC,OAAiC,EAAE,UAAkB;QACpE,IAAI,CAAC,WAAW,GAAG,OAAc,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAEM,IAAI;;QACP,MAAA,IAAI,CAAC,WAAW,oDAAI,CAAA;QACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;CACJ;AA1DD,uCA0DC"}
1
+ {"version":3,"file":"TimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/implementations/TimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AACA,4DAAwE;AAExE,MAAqB,oBACjB,SAAQ,mBAAa;IADzB;;QAMY,cAAS,GAAG,KAAK,CAAA;IAoD7B,CAAC;IAhDU,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAmC;;QAC1D,MAAM,cAAc,GAAG;YACnB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,cAAc;YACxB,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;SACG,CAAA;QAErB,OAAO,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,CAAC;YAC5B,GAAG,cAAc;YACjB,GAAG,OAAO;SACb,CAAqB,CAAA;IAC1B,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAElC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;IACzE,CAAC;IAEO,UAAU,CAAC,OAAiC,EAAE,UAAkB;QACpE,IAAI,CAAC,WAAW,GAAG,OAAc,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAEM,IAAI;;QACP,MAAA,IAAI,CAAC,WAAW,oDAAI,CAAA;QACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;CACJ;AA1DD,uCA0DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "9.0.0",
3
+ "version": "10.0.0",
4
4
  "main": "build/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -5,7 +5,9 @@ import AbstractSpruceTest, {
5
5
  generateId,
6
6
  } from '@sprucelabs/test-utils'
7
7
  import LiblslImpl from '../../implementations/Liblsl'
8
- import LslOutlet, { LslOutletOptions } from '../../implementations/LslOutlet'
8
+ import LslOutletImpl, {
9
+ LslOutletOptions,
10
+ } from '../../implementations/LslOutlet'
9
11
  import { LslSample } from '../../nodeLsl.types'
10
12
  import FakeLiblsl from '../../testDoubles/FakeLiblsl'
11
13
  import {
@@ -23,19 +25,22 @@ export default class LslOutletTest extends AbstractSpruceTest {
23
25
 
24
26
  protected static async beforeEach() {
25
27
  await super.beforeEach()
26
- delete LslOutlet.Class
28
+ delete LslOutletImpl.Class
27
29
  this.randomOutletOptions = generateRandomOutletOptions()
28
30
 
29
31
  const channelFormat = this.randomOutletOptions.channelFormat
30
32
  this.channelFormatIdx = TEST_CHANNEL_FORMATS_MAP[channelFormat]
31
33
  this.fakeLiblsl = new FakeLiblsl()
34
+
32
35
  LiblslImpl.setInstance(this.fakeLiblsl)
33
36
  }
34
37
 
35
38
  @test()
36
- protected static async throwsWhenMissingRequiredParams() {
37
- //@ts-ignore
38
- const err = assert.doesThrow(() => new LslOutlet())
39
+ protected static async throwsWithMissingRequiredParams() {
40
+ const err = await assert.doesThrowAsync(
41
+ //@ts-ignore
42
+ async () => await LslOutletImpl.Create()
43
+ )
39
44
  errorAssert.assertError(err, 'MISSING_PARAMETERS', {
40
45
  parameters: [
41
46
  'name',
@@ -54,45 +59,51 @@ export default class LslOutletTest extends AbstractSpruceTest {
54
59
 
55
60
  @test()
56
61
  protected static async throwsWithInvalidChannelNames() {
57
- this.assertThrowsInvalidChannelNames(0)
62
+ await this.assertThrowsInvalidChannelNames(0)
63
+ }
64
+
65
+ @test()
66
+ protected static async allowsZeroSampleRate() {
67
+ await this.Outlet({ sampleRate: 0 })
58
68
  }
59
69
 
60
70
  @test()
61
71
  protected static async throwsWithInvalidSampleRate() {
62
- this.Outlet({ sampleRate: 0 })
63
- this.assertThrowsInvalidSampleRate(-1)
64
- this.assertThrowsInvalidSampleRate(-1.5)
72
+ await this.assertThrowsInvalidSampleRate(-1)
73
+ await this.assertThrowsInvalidSampleRate(-1.5)
65
74
  }
66
75
 
67
76
  @test()
68
77
  protected static async throwsWithInvalidChannelFormat() {
69
- //@ts-ignore
70
- this.assertDoesThrowInvalidParameters({ channelFormat: generateId() }, [
71
- 'channelFormat',
72
- ])
78
+ await this.assertDoesThrowInvalidParameters(
79
+ //@ts-ignore
80
+ { channelFormat: generateId() },
81
+ ['channelFormat']
82
+ )
73
83
  }
74
84
 
75
85
  @test()
76
86
  protected static async throwsWithInvalidChunkSize() {
77
- this.Outlet({ chunkSize: 0 })
78
- this.assertThrowsInvalidChunkSize(-1)
79
- this.assertThrowsInvalidChunkSize(-1.5)
80
- this.assertThrowsInvalidChunkSize(1.5)
87
+ await this.Outlet({ chunkSize: 0 })
88
+ await this.assertThrowsInvalidChunkSize(-1)
89
+ await this.assertThrowsInvalidChunkSize(-1.5)
90
+ await this.assertThrowsInvalidChunkSize(1.5)
81
91
  }
82
92
 
83
93
  @test()
84
94
  protected static async throwsWithInvalidMaxBuffered() {
85
- this.Outlet({ maxBuffered: 0 })
86
- this.assertThrowsInvalidMaxBuffered(-1)
87
- this.assertThrowsInvalidMaxBuffered(-1.5)
88
- this.assertThrowsInvalidMaxBuffered(1.5)
95
+ await this.Outlet({ maxBuffered: 0 })
96
+ await this.assertThrowsInvalidMaxBuffered(-1)
97
+ await this.assertThrowsInvalidMaxBuffered(-1.5)
98
+ await this.assertThrowsInvalidMaxBuffered(1.5)
89
99
  }
90
100
 
91
101
  @test()
92
102
  protected static async throwsWithUnsupportedType() {
93
103
  for (let unsupportedType of TEST_UNSUPPORTED_CHANNEL_FORMATS) {
94
- assert.doesThrow(
95
- () => this.Outlet({ channelFormat: unsupportedType }),
104
+ await assert.doesThrowAsync(
105
+ async () =>
106
+ await this.Outlet({ channelFormat: unsupportedType }),
96
107
  `This method currently does not support the ${unsupportedType} type! Please implement it.`
97
108
  )
98
109
  }
@@ -101,14 +112,14 @@ export default class LslOutletTest extends AbstractSpruceTest {
101
112
  @test()
102
113
  protected static async supportsAllKnownChannelFormats() {
103
114
  for (const format of TEST_SUPPORTED_CHANNEL_FORMATS) {
104
- this.Outlet({ channelFormat: format as TestChannelFormat })
115
+ await this.Outlet({ channelFormat: format as TestChannelFormat })
105
116
  }
106
117
  }
107
118
 
108
119
  @test('pushing [1, 2] sample sends to LSL', [1.0, 2.0])
109
120
  @test('pushing [1] sample sends to LSL', [1.0])
110
121
  protected static async canPushFloatSampleToLsl(sample: LslSample) {
111
- const outlet = this.FloatOutlet()
122
+ const outlet = await this.FloatOutlet()
112
123
  outlet.pushSample(sample)
113
124
 
114
125
  assert.isEqual(
@@ -132,7 +143,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
132
143
  @test()
133
144
  protected static async canPushStringSampleToLsl() {
134
145
  const sample = [generateId()]
135
- const outlet = this.StringOutlet()
146
+ const outlet = await this.StringOutlet()
136
147
 
137
148
  outlet.pushSample(sample)
138
149
 
@@ -151,7 +162,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
151
162
 
152
163
  @test()
153
164
  protected static async pushingStringTwiceGivesDifferentTimestamps() {
154
- const outlet = this.StringOutlet()
165
+ const outlet = await this.StringOutlet()
155
166
  const sample = [generateId()]
156
167
 
157
168
  outlet.pushSample(sample)
@@ -170,7 +181,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
170
181
 
171
182
  @test()
172
183
  protected static async constructionCreatesStreamInfo() {
173
- this.Outlet()
184
+ await this.Outlet()
174
185
 
175
186
  const { ...options } = this.randomOutletOptions as any
176
187
 
@@ -190,8 +201,8 @@ export default class LslOutletTest extends AbstractSpruceTest {
190
201
 
191
202
  @test()
192
203
  protected static async canOverrideClassInstantiatedInFactory() {
193
- LslOutlet.Class = CheckingOutlet
194
- const instance = this.Outlet()
204
+ LslOutletImpl.Class = CheckingOutlet
205
+ const instance = await this.Outlet()
195
206
 
196
207
  assert.isInstanceOf(instance, CheckingOutlet)
197
208
  }
@@ -202,7 +213,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
202
213
  const type = generateId()
203
214
  const unit = generateId()
204
215
 
205
- this.Outlet({ channelNames: labels, type, unit })
216
+ await this.Outlet({ channelNames: labels, type, unit })
206
217
 
207
218
  assert.isEqualDeep(
208
219
  this.fakeLiblsl.lastAppendChannelsToStreamInfoOptions,
@@ -219,7 +230,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
219
230
 
220
231
  @test()
221
232
  protected static async canDestroyOutlet() {
222
- const outlet = this.Outlet()
233
+ const outlet = await this.Outlet()
223
234
  outlet.destroy()
224
235
 
225
236
  assert.isEqual(this.fakeLiblsl.destroyOutletHitCount, 1)
@@ -227,7 +238,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
227
238
 
228
239
  @test()
229
240
  protected static async pushSampleShouldNotCreateMultipleOutlets() {
230
- const outlet = this.FloatOutlet()
241
+ const outlet = await this.FloatOutlet()
231
242
  outlet.pushSample([1.0])
232
243
  outlet.pushSample([2.0])
233
244
  outlet.pushSample([3.0])
@@ -235,52 +246,69 @@ export default class LslOutletTest extends AbstractSpruceTest {
235
246
  assert.isEqual(this.fakeLiblsl.createStreamInfoHitCount, 1)
236
247
  }
237
248
 
238
- private static assertThrowsInvalidMaxBuffered(maxBuffered: number) {
239
- this.assertDoesThrowInvalidParameters({ maxBuffered }, ['maxBuffered'])
249
+ @test()
250
+ protected static async waitsForTenMsAfterConstructionBeforeReturning() {
251
+ const startMs = Date.now()
252
+ await this.Outlet({ waitAfterConstructionMs: 10 })
253
+ const endMs = Date.now()
254
+
255
+ assert.isAbove(endMs - startMs, 10)
240
256
  }
241
257
 
242
- private static assertThrowsInvalidChunkSize(chunkSize: number) {
243
- this.assertDoesThrowInvalidParameters({ chunkSize }, ['chunkSize'])
258
+ private static async assertThrowsInvalidMaxBuffered(maxBuffered: number) {
259
+ await this.assertDoesThrowInvalidParameters({ maxBuffered }, [
260
+ 'maxBuffered',
261
+ ])
244
262
  }
245
263
 
246
- private static assertThrowsInvalidSampleRate(sampleRate: number) {
247
- this.assertDoesThrowInvalidParameters({ sampleRate }, ['sampleRate'])
264
+ private static async assertThrowsInvalidChunkSize(chunkSize: number) {
265
+ await this.assertDoesThrowInvalidParameters({ chunkSize }, [
266
+ 'chunkSize',
267
+ ])
248
268
  }
249
269
 
250
- private static assertThrowsInvalidChannelNames(count: number) {
251
- this.assertDoesThrowInvalidParameters(
270
+ private static async assertThrowsInvalidSampleRate(sampleRate: number) {
271
+ await this.assertDoesThrowInvalidParameters({ sampleRate }, [
272
+ 'sampleRate',
273
+ ])
274
+ }
275
+
276
+ private static async assertThrowsInvalidChannelNames(count: number) {
277
+ await this.assertDoesThrowInvalidParameters(
252
278
  { channelNames: new Array(count).fill(generateId()) },
253
279
  ['channelNames']
254
280
  )
255
281
  }
256
282
 
257
- private static assertDoesThrowInvalidParameters(
283
+ private static async assertDoesThrowInvalidParameters(
258
284
  options: Partial<LslOutletOptions>,
259
285
  parameters: string[]
260
286
  ) {
261
- const err = assert.doesThrow(() => this.Outlet(options))
287
+ const err = await assert.doesThrowAsync(
288
+ async () => await this.Outlet(options)
289
+ )
262
290
  errorAssert.assertError(err, 'INVALID_PARAMETERS', {
263
291
  parameters,
264
292
  })
265
293
  }
266
294
 
267
- private static Outlet(options?: Partial<LslOutletOptions>) {
268
- return LslOutlet.Outlet({
269
- ...this.randomOutletOptions,
270
- ...options,
271
- })
295
+ private static async StringOutlet() {
296
+ return await this.Outlet({ channelFormat: 'string' })
272
297
  }
273
298
 
274
- private static StringOutlet() {
275
- return this.Outlet({ channelFormat: 'string' })
299
+ private static async FloatOutlet() {
300
+ return await this.Outlet({ channelFormat: 'float32' })
276
301
  }
277
302
 
278
- private static FloatOutlet() {
279
- return this.Outlet({ channelFormat: 'float32' })
303
+ private static async Outlet(options?: Partial<LslOutletOptions>) {
304
+ return await LslOutletImpl.Create({
305
+ ...this.randomOutletOptions,
306
+ ...options,
307
+ })
280
308
  }
281
309
  }
282
310
 
283
- class CheckingOutlet extends LslOutlet {
311
+ class CheckingOutlet extends LslOutletImpl {
284
312
  public constructor(options: LslOutletOptions) {
285
313
  super(options)
286
314
  }
@@ -20,7 +20,7 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
20
20
  TimeMarkerOutletImpl.Class = SpyTimeMarkerOutlet
21
21
  this.fakeLiblsl = new FakeLiblsl()
22
22
  LiblslImpl.setInstance(this.fakeLiblsl)
23
- this.outlet = this.Outlet()
23
+ this.outlet = await this.Outlet()
24
24
  }
25
25
 
26
26
  @test()
@@ -42,7 +42,7 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
42
42
  @test()
43
43
  protected static async canOverrideDefaultOptions() {
44
44
  const options = generateRandomOutletOptions()
45
- const outlet = this.Outlet(options)
45
+ const outlet = await this.Outlet(options)
46
46
  assert.isEqualDeep(outlet.passedOptions, options)
47
47
  }
48
48
 
@@ -101,7 +101,7 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
101
101
 
102
102
  @test()
103
103
  protected static async doesNotWaitIfStopped() {
104
- this.setupTimeMarkerImpl()
104
+ await this.setupTimeMarkerImpl()
105
105
 
106
106
  const startMs = Date.now()
107
107
  const promise = this.pushTotalMarkers(2, 1000)
@@ -114,7 +114,7 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
114
114
 
115
115
  @test()
116
116
  protected static async clearsTheTimeoutOnStop() {
117
- this.setupTimeMarkerImpl()
117
+ await this.setupTimeMarkerImpl()
118
118
 
119
119
  const promise = this.pushTotalMarkers(2, 100)
120
120
 
@@ -126,9 +126,9 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
126
126
  await this.wait(100)
127
127
  }
128
128
 
129
- private static setupTimeMarkerImpl() {
129
+ private static async setupTimeMarkerImpl() {
130
130
  TimeMarkerOutletImpl.Class = TimeMarkerOutletImpl as any
131
- this.outlet = this.Outlet()
131
+ this.outlet = await this.Outlet()
132
132
  }
133
133
 
134
134
  private static async pushTotalMarkers(total: number, durationMs?: number) {
@@ -148,7 +148,9 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
148
148
  }
149
149
  }
150
150
 
151
- private static Outlet(options?: Partial<LslOutletOptions>) {
152
- return TimeMarkerOutletImpl.Outlet(options) as SpyTimeMarkerOutlet
151
+ private static async Outlet(options?: Partial<LslOutletOptions>) {
152
+ return (await TimeMarkerOutletImpl.Create(
153
+ options
154
+ )) as SpyTimeMarkerOutlet
153
155
  }
154
156
  }
@@ -79,8 +79,15 @@ export default class LslOutletImpl implements LslOutlet {
79
79
  this.pushSampleByType = this.lsl[pushMethod].bind(this.lsl)
80
80
  }
81
81
 
82
- public static Outlet(options: LslOutletOptions) {
83
- return new (this.Class ?? this)(options)
82
+ public static async Create(options: LslOutletOptions) {
83
+ const { waitAfterConstructionMs = 10 } = options ?? {}
84
+ const instance = new (this.Class ?? this)(options)
85
+ await this.wait(waitAfterConstructionMs)
86
+ return instance
87
+ }
88
+
89
+ private static wait(waitMs: number) {
90
+ return new Promise((resolve) => setTimeout(resolve, waitMs))
84
91
  }
85
92
 
86
93
  public destroy() {
@@ -140,4 +147,5 @@ export interface LslOutletOptions {
140
147
  unit: string
141
148
  chunkSize: number
142
149
  maxBuffered: number
150
+ waitAfterConstructionMs?: number
143
151
  }
@@ -11,7 +11,7 @@ export default class TimeMarkerOutletImpl
11
11
  private waitResolve?: () => void
12
12
  private timeout?: any
13
13
 
14
- public static Outlet(options?: Partial<LslOutletOptions>) {
14
+ public static async Create(options?: Partial<LslOutletOptions>) {
15
15
  const defaultOptions = {
16
16
  name: 'Time markers',
17
17
  type: 'Markers',