@neurodevs/node-lsl 11.2.1 → 11.4.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/index.d.ts CHANGED
@@ -9,6 +9,10 @@ export { default as SpyStreamInfo } from './testDoubles/StreamInfo/SpyStreamInfo
9
9
  export * from './testDoubles/StreamInfo/SpyStreamInfo';
10
10
  export { default as FakeStreamInfo } from './testDoubles/StreamInfo/FakeStreamInfo';
11
11
  export * from './testDoubles/StreamInfo/FakeStreamInfo';
12
+ export { default as LslStreamInlet } from './modules/LslStreamInlet';
13
+ export * from './modules/LslStreamInlet';
14
+ export { default as FakeLslInlet } from './testDoubles/LslInlet/FakeLslInlet';
15
+ export * from './testDoubles/LslInlet/FakeLslInlet';
12
16
  export { default as LslStreamOutlet } from './modules/LslStreamOutlet';
13
17
  export * from './modules/LslStreamOutlet';
14
18
  export { default as FakeLslOutlet } from './testDoubles/LslOutlet/FakeLslOutlet';
package/build/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.generateRandomOutletOptions = exports.ThrowingMarkerOutlet = exports.SpyMarkerOutlet = exports.MockMarkerOutlet = exports.FakeMarkerOutlet = exports.EventMarkerOutlet = exports.FakeLslOutlet = exports.LslStreamOutlet = exports.FakeStreamInfo = exports.SpyStreamInfo = exports.LslStreamInfo = exports.FakeLiblsl = exports.LiblslAdapter = void 0;
20
+ exports.generateRandomOutletOptions = exports.ThrowingMarkerOutlet = exports.SpyMarkerOutlet = exports.MockMarkerOutlet = exports.FakeMarkerOutlet = exports.EventMarkerOutlet = exports.FakeLslOutlet = exports.LslStreamOutlet = exports.FakeLslInlet = exports.LslStreamInlet = exports.FakeStreamInfo = exports.SpyStreamInfo = exports.LslStreamInfo = exports.FakeLiblsl = exports.LiblslAdapter = void 0;
21
21
  __exportStar(require("./types"), exports);
22
22
  // Liblsl
23
23
  var LiblslAdapter_1 = require("./modules/LiblslAdapter");
@@ -36,6 +36,13 @@ __exportStar(require("./testDoubles/StreamInfo/SpyStreamInfo"), exports);
36
36
  var FakeStreamInfo_1 = require("./testDoubles/StreamInfo/FakeStreamInfo");
37
37
  Object.defineProperty(exports, "FakeStreamInfo", { enumerable: true, get: function () { return __importDefault(FakeStreamInfo_1).default; } });
38
38
  __exportStar(require("./testDoubles/StreamInfo/FakeStreamInfo"), exports);
39
+ // LslStreamInlet
40
+ var LslStreamInlet_1 = require("./modules/LslStreamInlet");
41
+ Object.defineProperty(exports, "LslStreamInlet", { enumerable: true, get: function () { return __importDefault(LslStreamInlet_1).default; } });
42
+ __exportStar(require("./modules/LslStreamInlet"), exports);
43
+ var FakeLslInlet_1 = require("./testDoubles/LslInlet/FakeLslInlet");
44
+ Object.defineProperty(exports, "FakeLslInlet", { enumerable: true, get: function () { return __importDefault(FakeLslInlet_1).default; } });
45
+ __exportStar(require("./testDoubles/LslInlet/FakeLslInlet"), exports);
39
46
  // LslStreamOutlet
40
47
  var LslStreamOutlet_1 = require("./modules/LslStreamOutlet");
41
48
  Object.defineProperty(exports, "LslStreamOutlet", { enumerable: true, get: function () { return __importDefault(LslStreamOutlet_1).default; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0CAAuB;AAEvB,SAAS;AAET,yDAAkE;AAAzD,+HAAA,OAAO,OAAiB;AACjC,0DAAuC;AAEvC,8DAAuE;AAA9D,yHAAA,OAAO,OAAc;AAC9B,kEAA+C;AAE/C,gBAAgB;AAEhB,yDAAkE;AAAzD,+HAAA,OAAO,OAAiB;AACjC,0DAAuC;AAEvC,wEAAiF;AAAxE,+HAAA,OAAO,OAAiB;AACjC,yEAAsD;AAEtD,0EAAmF;AAA1E,iIAAA,OAAO,OAAkB;AAClC,0EAAuD;AAEvD,kBAAkB;AAElB,6DAAsE;AAA7D,mIAAA,OAAO,OAAmB;AACnC,4DAAyC;AAEzC,uEAAgF;AAAvE,+HAAA,OAAO,OAAiB;AACjC,wEAAqD;AAErD,oBAAoB;AAEpB,iEAA0E;AAAjE,uIAAA,OAAO,OAAqB;AACrC,8DAA2C;AAE3C,gFAAyF;AAAhF,qIAAA,OAAO,OAAoB;AACpC,8EAA2D;AAE3D,gFAAyF;AAAhF,qIAAA,OAAO,OAAoB;AACpC,8EAA2D;AAE3D,8EAAuF;AAA9E,mIAAA,OAAO,OAAmB;AACnC,6EAA0D;AAE1D,wFAAiG;AAAxF,6IAAA,OAAO,OAAwB;AACxC,kFAA+D;AAE/D,QAAQ;AAER,yFAAkG;AAAzF,2JAAA,OAAO,OAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0CAAuB;AAEvB,SAAS;AAET,yDAAkE;AAAzD,+HAAA,OAAO,OAAiB;AACjC,0DAAuC;AAEvC,8DAAuE;AAA9D,yHAAA,OAAO,OAAc;AAC9B,kEAA+C;AAE/C,gBAAgB;AAEhB,yDAAkE;AAAzD,+HAAA,OAAO,OAAiB;AACjC,0DAAuC;AAEvC,wEAAiF;AAAxE,+HAAA,OAAO,OAAiB;AACjC,yEAAsD;AAEtD,0EAAmF;AAA1E,iIAAA,OAAO,OAAkB;AAClC,0EAAuD;AAEvD,iBAAiB;AAEjB,2DAAoE;AAA3D,iIAAA,OAAO,OAAkB;AAClC,2DAAwC;AAExC,oEAA6E;AAApE,6HAAA,OAAO,OAAgB;AAChC,sEAAmD;AAEnD,kBAAkB;AAElB,6DAAsE;AAA7D,mIAAA,OAAO,OAAmB;AACnC,4DAAyC;AAEzC,uEAAgF;AAAvE,+HAAA,OAAO,OAAiB;AACjC,wEAAqD;AAErD,oBAAoB;AAEpB,iEAA0E;AAAjE,uIAAA,OAAO,OAAqB;AACrC,8DAA2C;AAE3C,gFAAyF;AAAhF,qIAAA,OAAO,OAAoB;AACpC,8EAA2D;AAE3D,gFAAyF;AAAhF,qIAAA,OAAO,OAAoB;AACpC,8EAA2D;AAE3D,8EAAuF;AAA9E,mIAAA,OAAO,OAAmB;AACnC,6EAA0D;AAE1D,wFAAiG;AAAxF,6IAAA,OAAO,OAAwB;AACxC,kFAA+D;AAE/D,QAAQ;AAER,yFAAkG;AAAzF,2JAAA,OAAO,OAA+B"}
@@ -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":"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"}
1
+ {"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/modules/LslStreamOutlet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { StreamInfo } from '../../modules/LslStreamInfo';
2
+ import { LslInlet, LslInletOptions } from '../../modules/LslStreamInlet';
3
+ export default class FakeLslInlet implements LslInlet {
4
+ static callsToConstructor: CallToInletConstructor[];
5
+ constructor(info?: StreamInfo, options?: LslInletOptions);
6
+ static resetTestDouble(): void;
7
+ }
8
+ export interface CallToInletConstructor {
9
+ info?: StreamInfo;
10
+ options?: LslInletOptions;
11
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class FakeLslInlet {
4
+ constructor(info, options) {
5
+ FakeLslInlet.callsToConstructor.push({
6
+ info,
7
+ options,
8
+ });
9
+ }
10
+ static resetTestDouble() {
11
+ FakeLslInlet.callsToConstructor = [];
12
+ }
13
+ }
14
+ FakeLslInlet.callsToConstructor = [];
15
+ exports.default = FakeLslInlet;
16
+ //# sourceMappingURL=FakeLslInlet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeLslInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/LslInlet/FakeLslInlet.ts"],"names":[],"mappings":";;AAGA,MAAqB,YAAY;IAG7B,YAAmB,IAAiB,EAAE,OAAyB;QAC3D,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACjC,IAAI;YACJ,OAAO;SACV,CAAC,CAAA;IACN,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,YAAY,CAAC,kBAAkB,GAAG,EAAE,CAAA;IACxC,CAAC;;AAXa,+BAAkB,GAA6B,EAAE,CAAA;kBAD9C,YAAY"}
@@ -2,15 +2,27 @@ import { StreamInfo } from '../../modules/LslStreamInfo';
2
2
  import { LslOutlet, LslOutletOptions } from '../../modules/LslStreamOutlet';
3
3
  import { LslSample } from '../../types';
4
4
  export default class FakeLslOutlet implements LslOutlet {
5
- static callsToConstructor: CallToConstructor[];
5
+ static callsToConstructor: CallToOutletConstructor[];
6
6
  static callsToPushSample: LslSample[];
7
7
  static numCallsToDestroy: number;
8
+ options: LslOutletOptions;
8
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
- export interface CallToConstructor {
25
+ export interface CallToOutletConstructor {
14
26
  info: StreamInfo;
15
27
  options: LslOutletOptions;
16
28
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class FakeLslOutlet {
4
4
  constructor(info, options) {
5
5
  FakeLslOutlet.callsToConstructor.push({ info, options });
6
+ this.options = options;
6
7
  }
7
8
  destroy() {
8
9
  FakeLslOutlet.numCallsToDestroy++;
@@ -10,6 +11,39 @@ class FakeLslOutlet {
10
11
  pushSample(sample) {
11
12
  FakeLslOutlet.callsToPushSample.push(sample);
12
13
  }
14
+ get name() {
15
+ return this.options.name;
16
+ }
17
+ get type() {
18
+ return this.options.type;
19
+ }
20
+ get sourceId() {
21
+ return this.options.sourceId;
22
+ }
23
+ get channelNames() {
24
+ return this.options.channelNames;
25
+ }
26
+ get channelCount() {
27
+ return this.channelNames.length;
28
+ }
29
+ get channelFormat() {
30
+ return this.options.channelFormat;
31
+ }
32
+ get sampleRate() {
33
+ return this.options.sampleRate;
34
+ }
35
+ get chunkSize() {
36
+ return this.options.chunkSize;
37
+ }
38
+ get maxBuffered() {
39
+ return this.options.maxBuffered;
40
+ }
41
+ get manufacturer() {
42
+ return this.options.manufacturer;
43
+ }
44
+ get unit() {
45
+ return this.options.unit;
46
+ }
13
47
  static resetTestDouble() {
14
48
  FakeLslOutlet.callsToConstructor = [];
15
49
  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,GAAwB,EAAE,CAAA;AAC5C,+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":";;AAIA,MAAqB,aAAa;IAO9B,YAAmB,IAAgB,EAAE,OAAyB;QAC1D,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,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;IAChC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;IACpC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAA;IACrC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;IAClC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAA;IACjC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAA;IACnC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAA;IACpC,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC5B,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.2.1",
3
+ "version": "11.4.0",
4
4
  "main": "build/index.js",
5
5
  "repository": {
6
6
  "type": "git",
package/src/index.ts CHANGED
@@ -19,6 +19,14 @@ export * from './testDoubles/StreamInfo/SpyStreamInfo'
19
19
  export { default as FakeStreamInfo } from './testDoubles/StreamInfo/FakeStreamInfo'
20
20
  export * from './testDoubles/StreamInfo/FakeStreamInfo'
21
21
 
22
+ // LslStreamInlet
23
+
24
+ export { default as LslStreamInlet } from './modules/LslStreamInlet'
25
+ export * from './modules/LslStreamInlet'
26
+
27
+ export { default as FakeLslInlet } from './testDoubles/LslInlet/FakeLslInlet'
28
+ export * from './testDoubles/LslInlet/FakeLslInlet'
29
+
22
30
  // LslStreamOutlet
23
31
 
24
32
  export { default as LslStreamOutlet } from './modules/LslStreamOutlet'
@@ -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 (
@@ -0,0 +1,22 @@
1
+ import { StreamInfo } from '../../modules/LslStreamInfo'
2
+ import { LslInlet, LslInletOptions } from '../../modules/LslStreamInlet'
3
+
4
+ export default class FakeLslInlet implements LslInlet {
5
+ public static callsToConstructor: CallToInletConstructor[] = []
6
+
7
+ public constructor(info?: StreamInfo, options?: LslInletOptions) {
8
+ FakeLslInlet.callsToConstructor.push({
9
+ info,
10
+ options,
11
+ })
12
+ }
13
+
14
+ public static resetTestDouble() {
15
+ FakeLslInlet.callsToConstructor = []
16
+ }
17
+ }
18
+
19
+ export interface CallToInletConstructor {
20
+ info?: StreamInfo
21
+ options?: LslInletOptions
22
+ }
@@ -3,12 +3,15 @@ import { LslOutlet, LslOutletOptions } from '../../modules/LslStreamOutlet'
3
3
  import { LslSample } from '../../types'
4
4
 
5
5
  export default class FakeLslOutlet implements LslOutlet {
6
- public static callsToConstructor: CallToConstructor[] = []
6
+ public static callsToConstructor: CallToOutletConstructor[] = []
7
7
  public static callsToPushSample: LslSample[] = []
8
8
  public static numCallsToDestroy = 0
9
9
 
10
+ public options: LslOutletOptions
11
+
10
12
  public constructor(info: StreamInfo, options: LslOutletOptions) {
11
13
  FakeLslOutlet.callsToConstructor.push({ info, options })
14
+ this.options = options
12
15
  }
13
16
 
14
17
  public destroy() {
@@ -19,6 +22,50 @@ export default class FakeLslOutlet implements LslOutlet {
19
22
  FakeLslOutlet.callsToPushSample.push(sample)
20
23
  }
21
24
 
25
+ public get name() {
26
+ return this.options.name
27
+ }
28
+
29
+ public get type() {
30
+ return this.options.type
31
+ }
32
+
33
+ public get sourceId() {
34
+ return this.options.sourceId
35
+ }
36
+
37
+ public get channelNames() {
38
+ return this.options.channelNames
39
+ }
40
+
41
+ public get channelCount() {
42
+ return this.channelNames.length
43
+ }
44
+
45
+ public get channelFormat() {
46
+ return this.options.channelFormat
47
+ }
48
+
49
+ public get sampleRate() {
50
+ return this.options.sampleRate
51
+ }
52
+
53
+ public get chunkSize() {
54
+ return this.options.chunkSize
55
+ }
56
+
57
+ public get maxBuffered() {
58
+ return this.options.maxBuffered
59
+ }
60
+
61
+ public get manufacturer() {
62
+ return this.options.manufacturer
63
+ }
64
+
65
+ public get unit() {
66
+ return this.options.unit
67
+ }
68
+
22
69
  public static resetTestDouble() {
23
70
  FakeLslOutlet.callsToConstructor = []
24
71
  FakeLslOutlet.callsToPushSample = []
@@ -26,7 +73,7 @@ export default class FakeLslOutlet implements LslOutlet {
26
73
  }
27
74
  }
28
75
 
29
- export interface CallToConstructor {
76
+ export interface CallToOutletConstructor {
30
77
  info: StreamInfo
31
78
  options: LslOutletOptions
32
79
  }