@neurodevs/node-lsl 11.3.0 → 11.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,27 +11,42 @@ export default class LslStreamOutlet implements LslOutlet {
11
11
  private validateOptions;
12
12
  private createLslOutlet;
13
13
  private setPushSampleType;
14
- destroy(): void;
15
- pushSample(sample: LslSample): void;
16
- private get pushMethod();
17
14
  private validateChannelFormat;
18
15
  private throwUnsupportedChannelFormat;
19
16
  private get unsupportedChannelMessage();
17
+ private get pushMethod();
20
18
  private readonly methodMap;
21
- private get channelNames();
22
- private get channelCount();
23
- private get channelFormat();
24
- private get sampleRate();
25
- private get chunkSize();
26
- private get maxBuffered();
19
+ pushSample(sample: LslSample): void;
20
+ destroy(): void;
21
+ get name(): string;
22
+ get type(): string;
23
+ get sourceId(): string;
24
+ get channelNames(): string[];
25
+ get channelCount(): number;
26
+ get channelFormat(): "string" | "undefined" | "float32" | "double64" | "int32" | "int16" | "int8" | "int64";
27
+ get sampleRate(): number;
28
+ get chunkSize(): number;
29
+ get maxBuffered(): number;
30
+ get manufacturer(): string;
31
+ get unit(): string;
27
32
  private get boundStreamInfo();
28
33
  private get lsl();
29
34
  private static wait;
30
35
  private static LslStreamInfo;
31
36
  }
32
37
  export interface LslOutlet {
33
- destroy(): void;
34
38
  pushSample(sample: LslSample): void;
39
+ destroy(): void;
40
+ readonly name: string;
41
+ readonly type: string;
42
+ readonly sourceId: string;
43
+ readonly channelNames: string[];
44
+ readonly channelFormat: ChannelFormat;
45
+ readonly sampleRate: number;
46
+ readonly chunkSize: number;
47
+ readonly maxBuffered: number;
48
+ readonly manufacturer: string;
49
+ readonly unit: string;
35
50
  }
36
51
  export type LslOutletConstructor = new (info: StreamInfo, options: LslOutletOptions) => LslOutlet;
37
52
  export interface LslOutletOptions {
@@ -65,8 +65,19 @@ class LslStreamOutlet {
65
65
  this.validateChannelFormat();
66
66
  this.pushSampleByType = this.lsl[this.pushMethod].bind(this.lsl);
67
67
  }
68
- destroy() {
69
- this.lsl.destroyOutlet({ outlet: this.outlet });
68
+ validateChannelFormat() {
69
+ if (!(this.channelFormat in this.methodMap)) {
70
+ this.throwUnsupportedChannelFormat();
71
+ }
72
+ }
73
+ throwUnsupportedChannelFormat() {
74
+ throw new Error(this.unsupportedChannelMessage);
75
+ }
76
+ get unsupportedChannelMessage() {
77
+ return `This method currently does not support the ${this.channelFormat} type! Please implement it.`;
78
+ }
79
+ get pushMethod() {
80
+ return this.methodMap[this.channelFormat];
70
81
  }
71
82
  pushSample(sample) {
72
83
  const timestamp = this.lsl.localClock();
@@ -76,19 +87,17 @@ class LslStreamOutlet {
76
87
  timestamp,
77
88
  });
78
89
  }
79
- get pushMethod() {
80
- return this.methodMap[this.channelFormat];
90
+ destroy() {
91
+ this.lsl.destroyOutlet({ outlet: this.outlet });
81
92
  }
82
- validateChannelFormat() {
83
- if (!(this.channelFormat in this.methodMap)) {
84
- this.throwUnsupportedChannelFormat();
85
- }
93
+ get name() {
94
+ return this.options.name;
86
95
  }
87
- throwUnsupportedChannelFormat() {
88
- throw new Error(this.unsupportedChannelMessage);
96
+ get type() {
97
+ return this.options.type;
89
98
  }
90
- get unsupportedChannelMessage() {
91
- return `This method currently does not support the ${this.channelFormat} type! Please implement it.`;
99
+ get sourceId() {
100
+ return this.options.sourceId;
92
101
  }
93
102
  get channelNames() {
94
103
  return this.options.channelNames;
@@ -108,6 +117,12 @@ class LslStreamOutlet {
108
117
  get maxBuffered() {
109
118
  return this.options.maxBuffered;
110
119
  }
120
+ get manufacturer() {
121
+ return this.options.manufacturer;
122
+ }
123
+ get unit() {
124
+ return this.options.unit;
125
+ }
111
126
  get boundStreamInfo() {
112
127
  return this.info.boundStreamInfo;
113
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/modules/LslStreamOutlet.ts"],"names":[],"mappings":";;;;;AAAA,+CAAkD;AAClD,8CAMsB;AAEtB,oEAA2C;AAC3C,oEAA8E;AAE9E,MAAqB,eAAe;IAQhC,YAAsB,IAAgB,EAAE,OAAyB;QAiGhD,cAAS,GAAiC;YACvD,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,2BAA2B;SACtC,CAAA;QAnGG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAyB;QAChD,IAAA,sBAAa,EAAC,OAAO,EAAE;YACnB,MAAM;YACN,MAAM;YACN,UAAU;YACV,cAAc;YACd,eAAe;YACf,YAAY;YACZ,WAAW;YACX,aAAa;YACb,cAAc;YACd,MAAM;SACT,CAAC,CAAA;QAEF,MAAM,EAAE,uBAAuB,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAEtD,MAAM,iBAAiB,GAAG;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,IAAI;SACtB,CAAA;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAExD,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAExC,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,eAAe;QACnB,IAAA,oCAAuB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1C,IAAA,kCAAqB,EAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACtC,IAAA,qCAAwB,EAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC5C,IAAA,iCAAoB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpC,IAAA,mCAAsB,EAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC5C,CAAC;IAEO,eAAe;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,eAAe;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC,CAAA;IACN,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAE5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpE,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACnD,CAAC;IAEM,UAAU,CAAC,MAAiB;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QAEvC,IAAI,CAAC,gBAAgB,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM;YACN,SAAS;SACZ,CAAC,CAAA;IACN,CAAC;IAED,IAAY,UAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,6BAA6B,EAAE,CAAA;QACxC,CAAC;IACL,CAAC;IAEO,6BAA6B;QACjC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACnD,CAAC;IAED,IAAY,yBAAyB;QACjC,OAAO,8CAA8C,IAAI,CAAC,aAAa,6BAA6B,CAAA;IACxG,CAAC;IAOD,IAAY,YAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;IACpC,CAAC;IAED,IAAY,YAAY;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAY,aAAa;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAA;IACrC,CAAC;IAED,IAAY,UAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;IAClC,CAAC;IAED,IAAY,SAAS;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;IACjC,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAA;IACnC,CAAC;IAED,IAAY,eAAe;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAA;IACpC,CAAC;IAED,IAAY,GAAG;QACX,OAAO,uBAAa,CAAC,WAAW,EAAE,CAAA;IACtC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAc;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAChE,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,OAA0B;QACnD,OAAO,uBAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;CACJ;AArJD,kCAqJC"}
1
+ {"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/modules/LslStreamOutlet.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,24 @@ export default class FakeLslOutlet implements LslOutlet {
5
5
  static callsToConstructor: CallToOutletConstructor[];
6
6
  static callsToPushSample: LslSample[];
7
7
  static numCallsToDestroy: number;
8
- constructor(info: StreamInfo, options: LslOutletOptions);
8
+ options?: LslOutletOptions;
9
+ constructor(info?: StreamInfo, options?: LslOutletOptions);
9
10
  destroy(): void;
10
11
  pushSample(sample: LslSample): void;
12
+ get name(): string;
13
+ get type(): string;
14
+ get sourceId(): string;
15
+ get channelNames(): string[];
16
+ get channelCount(): number;
17
+ get channelFormat(): "string" | "undefined" | "float32" | "double64" | "int32" | "int16" | "int8" | "int64";
18
+ get sampleRate(): number;
19
+ get chunkSize(): number;
20
+ get maxBuffered(): number;
21
+ get manufacturer(): string;
22
+ get unit(): string;
11
23
  static resetTestDouble(): void;
12
24
  }
13
25
  export interface CallToOutletConstructor {
14
- info: StreamInfo;
15
- options: LslOutletOptions;
26
+ info?: StreamInfo;
27
+ options?: LslOutletOptions;
16
28
  }
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const crypto_1 = require("crypto");
4
+ const test_utils_1 = require("@sprucelabs/test-utils");
3
5
  class FakeLslOutlet {
4
6
  constructor(info, options) {
5
7
  FakeLslOutlet.callsToConstructor.push({ info, options });
8
+ this.options = options;
6
9
  }
7
10
  destroy() {
8
11
  FakeLslOutlet.numCallsToDestroy++;
@@ -10,6 +13,39 @@ class FakeLslOutlet {
10
13
  pushSample(sample) {
11
14
  FakeLslOutlet.callsToPushSample.push(sample);
12
15
  }
16
+ get name() {
17
+ return this.options?.name ?? (0, test_utils_1.generateId)();
18
+ }
19
+ get type() {
20
+ return this.options?.type ?? (0, test_utils_1.generateId)();
21
+ }
22
+ get sourceId() {
23
+ return this.options?.sourceId ?? (0, test_utils_1.generateId)();
24
+ }
25
+ get channelNames() {
26
+ return this.options?.channelNames ?? [(0, test_utils_1.generateId)()];
27
+ }
28
+ get channelCount() {
29
+ return this.channelNames.length;
30
+ }
31
+ get channelFormat() {
32
+ return this.options?.channelFormat ?? 'float32';
33
+ }
34
+ get sampleRate() {
35
+ return this.options?.sampleRate ?? (0, crypto_1.randomInt)(1, 1000);
36
+ }
37
+ get chunkSize() {
38
+ return this.options?.chunkSize ?? (0, crypto_1.randomInt)(1, 1000);
39
+ }
40
+ get maxBuffered() {
41
+ return this.options?.maxBuffered ?? (0, crypto_1.randomInt)(1, 1000);
42
+ }
43
+ get manufacturer() {
44
+ return this.options?.manufacturer ?? (0, test_utils_1.generateId)();
45
+ }
46
+ get unit() {
47
+ return this.options?.unit ?? (0, test_utils_1.generateId)();
48
+ }
13
49
  static resetTestDouble() {
14
50
  FakeLslOutlet.callsToConstructor = [];
15
51
  FakeLslOutlet.callsToPushSample = [];
@@ -1 +1 @@
1
- {"version":3,"file":"FakeLslOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslOutlet/FakeLslOutlet.ts"],"names":[],"mappings":";;AAIA,MAAqB,aAAa;IAK9B,YAAmB,IAAgB,EAAE,OAAyB;QAC1D,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC5D,CAAC;IAEM,OAAO;QACV,aAAa,CAAC,iBAAiB,EAAE,CAAA;IACrC,CAAC;IAEM,UAAU,CAAC,MAAiB;QAC/B,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,aAAa,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACrC,aAAa,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACpC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACvC,CAAC;;AApBa,gCAAkB,GAA8B,EAAE,CAAA;AAClD,+BAAiB,GAAgB,EAAE,CAAA;AACnC,+BAAiB,GAAG,CAAC,CAAA;kBAHlB,aAAa"}
1
+ {"version":3,"file":"FakeLslOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslOutlet/FakeLslOutlet.ts"],"names":[],"mappings":";;AAAA,mCAAkC;AAClC,uDAAmD;AAKnD,MAAqB,aAAa;IAO9B,YAAmB,IAAiB,EAAE,OAA0B;QAC5D,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,aAAa,CAAC,iBAAiB,EAAE,CAAA;IACrC,CAAC;IAEM,UAAU,CAAC,MAAiB;QAC/B,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAA,uBAAU,GAAE,CAAA;IAC7C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAA,uBAAU,GAAE,CAAA;IAC7C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAA,uBAAU,GAAE,CAAA;IACjD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,IAAA,uBAAU,GAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IACnD,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAA,kBAAS,EAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACzD,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,IAAA,kBAAS,EAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,IAAA,kBAAS,EAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC1D,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,IAAA,uBAAU,GAAE,CAAA;IACrD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAA,uBAAU,GAAE,CAAA;IAC7C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,aAAa,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACrC,aAAa,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACpC,aAAa,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACvC,CAAC;;AAnEa,gCAAkB,GAA8B,EAAE,CAAA;AAClD,+BAAiB,GAAgB,EAAE,CAAA;AACnC,+BAAiB,GAAG,CAAC,CAAA;kBAHlB,aAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "11.3.0",
3
+ "version": "11.4.1",
4
4
  "main": "build/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -83,8 +83,27 @@ export default class LslStreamOutlet implements LslOutlet {
83
83
  this.pushSampleByType = this.lsl[this.pushMethod].bind(this.lsl)
84
84
  }
85
85
 
86
- public destroy() {
87
- this.lsl.destroyOutlet({ outlet: this.outlet })
86
+ private validateChannelFormat() {
87
+ if (!(this.channelFormat in this.methodMap)) {
88
+ this.throwUnsupportedChannelFormat()
89
+ }
90
+ }
91
+
92
+ private throwUnsupportedChannelFormat() {
93
+ throw new Error(this.unsupportedChannelMessage)
94
+ }
95
+
96
+ private get unsupportedChannelMessage() {
97
+ return `This method currently does not support the ${this.channelFormat} type! Please implement it.`
98
+ }
99
+
100
+ private get pushMethod() {
101
+ return this.methodMap[this.channelFormat]
102
+ }
103
+
104
+ private readonly methodMap: Record<string, keyof Liblsl> = {
105
+ float32: 'pushSampleFloatTimestamp',
106
+ string: 'pushSampleStringTimestamp',
88
107
  }
89
108
 
90
109
  public pushSample(sample: LslSample) {
@@ -97,53 +116,54 @@ export default class LslStreamOutlet implements LslOutlet {
97
116
  })
98
117
  }
99
118
 
100
- private get pushMethod() {
101
- return this.methodMap[this.channelFormat]
119
+ public destroy() {
120
+ this.lsl.destroyOutlet({ outlet: this.outlet })
102
121
  }
103
122
 
104
- private validateChannelFormat() {
105
- if (!(this.channelFormat in this.methodMap)) {
106
- this.throwUnsupportedChannelFormat()
107
- }
123
+ public get name() {
124
+ return this.options.name
108
125
  }
109
126
 
110
- private throwUnsupportedChannelFormat() {
111
- throw new Error(this.unsupportedChannelMessage)
127
+ public get type() {
128
+ return this.options.type
112
129
  }
113
130
 
114
- private get unsupportedChannelMessage() {
115
- return `This method currently does not support the ${this.channelFormat} type! Please implement it.`
131
+ public get sourceId() {
132
+ return this.options.sourceId
116
133
  }
117
134
 
118
- private readonly methodMap: Record<string, keyof Liblsl> = {
119
- float32: 'pushSampleFloatTimestamp',
120
- string: 'pushSampleStringTimestamp',
121
- }
122
-
123
- private get channelNames() {
135
+ public get channelNames() {
124
136
  return this.options.channelNames
125
137
  }
126
138
 
127
- private get channelCount() {
139
+ public get channelCount() {
128
140
  return this.channelNames.length
129
141
  }
130
142
 
131
- private get channelFormat() {
143
+ public get channelFormat() {
132
144
  return this.options.channelFormat
133
145
  }
134
146
 
135
- private get sampleRate() {
147
+ public get sampleRate() {
136
148
  return this.options.sampleRate
137
149
  }
138
150
 
139
- private get chunkSize() {
151
+ public get chunkSize() {
140
152
  return this.options.chunkSize
141
153
  }
142
154
 
143
- private get maxBuffered() {
155
+ public get maxBuffered() {
144
156
  return this.options.maxBuffered
145
157
  }
146
158
 
159
+ public get manufacturer() {
160
+ return this.options.manufacturer
161
+ }
162
+
163
+ public get unit() {
164
+ return this.options.unit
165
+ }
166
+
147
167
  private get boundStreamInfo() {
148
168
  return this.info.boundStreamInfo
149
169
  }
@@ -162,8 +182,18 @@ export default class LslStreamOutlet implements LslOutlet {
162
182
  }
163
183
 
164
184
  export interface LslOutlet {
165
- destroy(): void
166
185
  pushSample(sample: LslSample): void
186
+ destroy(): void
187
+ readonly name: string
188
+ readonly type: string
189
+ readonly sourceId: string
190
+ readonly channelNames: string[]
191
+ readonly channelFormat: ChannelFormat
192
+ readonly sampleRate: number
193
+ readonly chunkSize: number
194
+ readonly maxBuffered: number
195
+ readonly manufacturer: string
196
+ readonly unit: string
167
197
  }
168
198
 
169
199
  export type LslOutletConstructor = new (
@@ -1,3 +1,5 @@
1
+ import { randomInt } from 'crypto'
2
+ import { generateId } from '@sprucelabs/test-utils'
1
3
  import { StreamInfo } from '../../modules/LslStreamInfo'
2
4
  import { LslOutlet, LslOutletOptions } from '../../modules/LslStreamOutlet'
3
5
  import { LslSample } from '../../types'
@@ -7,8 +9,11 @@ export default class FakeLslOutlet implements LslOutlet {
7
9
  public static callsToPushSample: LslSample[] = []
8
10
  public static numCallsToDestroy = 0
9
11
 
10
- public constructor(info: StreamInfo, options: LslOutletOptions) {
12
+ public options?: LslOutletOptions
13
+
14
+ public constructor(info?: StreamInfo, options?: LslOutletOptions) {
11
15
  FakeLslOutlet.callsToConstructor.push({ info, options })
16
+ this.options = options
12
17
  }
13
18
 
14
19
  public destroy() {
@@ -19,6 +24,50 @@ export default class FakeLslOutlet implements LslOutlet {
19
24
  FakeLslOutlet.callsToPushSample.push(sample)
20
25
  }
21
26
 
27
+ public get name() {
28
+ return this.options?.name ?? generateId()
29
+ }
30
+
31
+ public get type() {
32
+ return this.options?.type ?? generateId()
33
+ }
34
+
35
+ public get sourceId() {
36
+ return this.options?.sourceId ?? generateId()
37
+ }
38
+
39
+ public get channelNames() {
40
+ return this.options?.channelNames ?? [generateId()]
41
+ }
42
+
43
+ public get channelCount() {
44
+ return this.channelNames.length
45
+ }
46
+
47
+ public get channelFormat() {
48
+ return this.options?.channelFormat ?? 'float32'
49
+ }
50
+
51
+ public get sampleRate() {
52
+ return this.options?.sampleRate ?? randomInt(1, 1000)
53
+ }
54
+
55
+ public get chunkSize() {
56
+ return this.options?.chunkSize ?? randomInt(1, 1000)
57
+ }
58
+
59
+ public get maxBuffered() {
60
+ return this.options?.maxBuffered ?? randomInt(1, 1000)
61
+ }
62
+
63
+ public get manufacturer() {
64
+ return this.options?.manufacturer ?? generateId()
65
+ }
66
+
67
+ public get unit() {
68
+ return this.options?.unit ?? generateId()
69
+ }
70
+
22
71
  public static resetTestDouble() {
23
72
  FakeLslOutlet.callsToConstructor = []
24
73
  FakeLslOutlet.callsToPushSample = []
@@ -27,6 +76,6 @@ export default class FakeLslOutlet implements LslOutlet {
27
76
  }
28
77
 
29
78
  export interface CallToOutletConstructor {
30
- info: StreamInfo
31
- options: LslOutletOptions
79
+ info?: StreamInfo
80
+ options?: LslOutletOptions
32
81
  }