@neurodevs/node-lsl 11.3.0 → 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/modules/LslStreamOutlet.d.ts +25 -10
- package/build/modules/LslStreamOutlet.js +27 -12
- package/build/modules/LslStreamOutlet.js.map +1 -1
- package/build/testDoubles/LslOutlet/FakeLslOutlet.d.ts +12 -0
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js +34 -0
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -1
- package/package.json +1 -1
- package/src/modules/LslStreamOutlet.ts +54 -24
- package/src/testDoubles/LslOutlet/FakeLslOutlet.ts +47 -0
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
69
|
-
this.
|
|
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
|
-
|
|
80
|
-
|
|
90
|
+
destroy() {
|
|
91
|
+
this.lsl.destroyOutlet({ outlet: this.outlet });
|
|
81
92
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.throwUnsupportedChannelFormat();
|
|
85
|
-
}
|
|
93
|
+
get name() {
|
|
94
|
+
return this.options.name;
|
|
86
95
|
}
|
|
87
|
-
|
|
88
|
-
|
|
96
|
+
get type() {
|
|
97
|
+
return this.options.type;
|
|
89
98
|
}
|
|
90
|
-
get
|
|
91
|
-
return
|
|
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;
|
|
1
|
+
{"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/modules/LslStreamOutlet.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,21 @@ export default class FakeLslOutlet implements LslOutlet {
|
|
|
5
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
25
|
export interface CallToOutletConstructor {
|
|
@@ -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;
|
|
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
|
@@ -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
|
-
|
|
87
|
-
this.
|
|
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
|
-
|
|
101
|
-
|
|
119
|
+
public destroy() {
|
|
120
|
+
this.lsl.destroyOutlet({ outlet: this.outlet })
|
|
102
121
|
}
|
|
103
122
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
this.throwUnsupportedChannelFormat()
|
|
107
|
-
}
|
|
123
|
+
public get name() {
|
|
124
|
+
return this.options.name
|
|
108
125
|
}
|
|
109
126
|
|
|
110
|
-
|
|
111
|
-
|
|
127
|
+
public get type() {
|
|
128
|
+
return this.options.type
|
|
112
129
|
}
|
|
113
130
|
|
|
114
|
-
|
|
115
|
-
return
|
|
131
|
+
public get sourceId() {
|
|
132
|
+
return this.options.sourceId
|
|
116
133
|
}
|
|
117
134
|
|
|
118
|
-
|
|
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
|
-
|
|
139
|
+
public get channelCount() {
|
|
128
140
|
return this.channelNames.length
|
|
129
141
|
}
|
|
130
142
|
|
|
131
|
-
|
|
143
|
+
public get channelFormat() {
|
|
132
144
|
return this.options.channelFormat
|
|
133
145
|
}
|
|
134
146
|
|
|
135
|
-
|
|
147
|
+
public get sampleRate() {
|
|
136
148
|
return this.options.sampleRate
|
|
137
149
|
}
|
|
138
150
|
|
|
139
|
-
|
|
151
|
+
public get chunkSize() {
|
|
140
152
|
return this.options.chunkSize
|
|
141
153
|
}
|
|
142
154
|
|
|
143
|
-
|
|
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 (
|
|
@@ -7,8 +7,11 @@ export default class FakeLslOutlet implements LslOutlet {
|
|
|
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 = []
|