@neurodevs/node-lsl 11.4.2 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/tasks.json +19 -1
- package/README.md +8 -9
- package/build/__tests__/{AbstractLslTest.d.ts → AbstractPackageTest.d.ts} +5 -4
- package/build/__tests__/AbstractPackageTest.js +58 -0
- package/build/__tests__/AbstractPackageTest.js.map +1 -0
- package/build/__tests__/{modules → impl}/LiblslAdapter.test.d.ts +4 -3
- package/build/__tests__/{modules → impl}/LiblslAdapter.test.js +32 -25
- package/build/__tests__/impl/LiblslAdapter.test.js.map +1 -0
- package/build/__tests__/{modules/EventMarkerOutlet.test.d.ts → impl/LslEventMarkerOutlet.test.d.ts} +5 -4
- package/build/__tests__/{modules/EventMarkerOutlet.test.js → impl/LslEventMarkerOutlet.test.js} +32 -25
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
- package/build/__tests__/{modules → impl}/LslStreamInfo.test.d.ts +3 -3
- package/build/__tests__/{modules → impl}/LslStreamInfo.test.js +17 -16
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -0
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +10 -0
- package/build/__tests__/{modules → impl}/LslStreamInlet.test.js +9 -9
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -0
- package/build/__tests__/{modules → impl}/LslStreamOutlet.test.d.ts +2 -2
- package/build/__tests__/{modules → impl}/LslStreamOutlet.test.js +7 -6
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.d.ts +7 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.js +63 -0
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -0
- package/build/impl/LiblslAdapter.js.map +1 -0
- package/build/impl/LslEventMarkerOutlet.d.ts +23 -0
- package/build/{modules/EventMarkerOutlet.js → impl/LslEventMarkerOutlet.js} +6 -6
- package/build/impl/LslEventMarkerOutlet.js.map +1 -0
- package/build/{modules → impl}/LslStreamInfo.js +4 -4
- package/build/impl/LslStreamInfo.js.map +1 -0
- package/build/{modules → impl}/LslStreamInlet.d.ts +8 -8
- package/build/{modules → impl}/LslStreamInlet.js +4 -4
- package/build/impl/LslStreamInlet.js.map +1 -0
- package/build/{modules → impl}/LslStreamOutlet.d.ts +8 -8
- package/build/{modules → impl}/LslStreamOutlet.js +2 -2
- package/build/impl/LslStreamOutlet.js.map +1 -0
- package/build/impl/LslWebSocketBridge.d.ts +8 -0
- package/build/impl/LslWebSocketBridge.js +10 -0
- package/build/impl/LslWebSocketBridge.js.map +1 -0
- package/build/index.d.ts +26 -22
- package/build/index.js +41 -34
- package/build/index.js.map +1 -1
- package/build/scripts/{demoMarkerOutlet.js → runLslEventMarkerOutlet.js} +3 -3
- package/build/scripts/runLslEventMarkerOutlet.js.map +1 -0
- package/build/scripts/{demoStreamOutlet.js → runLslStreamOutlet.js} +2 -2
- package/build/scripts/runLslStreamOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/FakeMarkerOutlet.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +2 -2
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +29 -0
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.d.ts → EventMarkerOutlet/MockEventMarkerOutlet.d.ts} +2 -2
- package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.js → EventMarkerOutlet/MockEventMarkerOutlet.js} +3 -3
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +9 -0
- package/build/testDoubles/{MarkerOutlet/SpyMarkerOutlet.js → EventMarkerOutlet/SpyEventMarkerOutlet.js} +8 -8
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.d.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts} +2 -2
- package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +3 -3
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
- package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +1 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +1 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js +1 -1
- package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +10 -0
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js +16 -0
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -0
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +7 -0
- package/build/testDoubles/{LslInlet/SpyLslInlet.js → StreamInlet/SpyStreamInlet.js} +5 -5
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -0
- package/build/testDoubles/{LslOutlet/FakeLslOutlet.d.ts → StreamOutlet/FakeStreamOutlet.d.ts} +9 -10
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +62 -0
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.d.ts +6 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js +13 -0
- package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js.map +1 -0
- package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
- package/build/testDoubles/generateRandomOutletOptions.js +10 -7
- package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
- package/build/types.d.ts +3 -3
- package/package.json +20 -8
- package/src/__tests__/{AbstractLslTest.ts → AbstractPackageTest.ts} +22 -17
- package/src/__tests__/{modules → impl}/LiblslAdapter.test.ts +25 -19
- package/src/__tests__/{modules/EventMarkerOutlet.test.ts → impl/LslEventMarkerOutlet.test.ts} +38 -27
- package/src/__tests__/{modules → impl}/LslStreamInfo.test.ts +7 -6
- package/src/__tests__/{modules → impl}/LslStreamInlet.test.ts +12 -12
- package/src/__tests__/{modules → impl}/LslStreamOutlet.test.ts +18 -11
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +23 -0
- package/src/{modules/EventMarkerOutlet.ts → impl/LslEventMarkerOutlet.ts} +16 -11
- package/src/{modules → impl}/LslStreamInfo.ts +1 -1
- package/src/{modules → impl}/LslStreamInlet.ts +12 -12
- package/src/{modules → impl}/LslStreamOutlet.ts +12 -12
- package/src/impl/LslWebSocketBridge.ts +13 -0
- package/src/index.ts +37 -29
- package/src/scripts/{demoMarkerOutlet.ts → runLslEventMarkerOutlet.ts} +2 -2
- package/src/scripts/{demoStreamOutlet.ts → runLslStreamOutlet.ts} +1 -1
- package/src/testDoubles/{MarkerOutlet/FakeMarkerOutlet.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +6 -6
- package/src/testDoubles/{MarkerOutlet/MockMarkerOutlet.ts → EventMarkerOutlet/MockEventMarkerOutlet.ts} +2 -2
- package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +24 -0
- package/src/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +2 -2
- package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +1 -1
- package/src/testDoubles/StreamInfo/SpyStreamInfo.ts +1 -1
- package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +20 -0
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +16 -0
- package/src/testDoubles/{LslOutlet/FakeLslOutlet.ts → StreamOutlet/FakeStreamOutlet.ts} +17 -18
- package/src/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.ts +15 -0
- package/src/testDoubles/generateRandomOutletOptions.ts +3 -3
- package/src/types.ts +3 -3
- package/build/__tests__/AbstractLslTest.js +0 -87
- package/build/__tests__/AbstractLslTest.js.map +0 -1
- package/build/__tests__/modules/EventMarkerOutlet.test.js.map +0 -1
- package/build/__tests__/modules/LiblslAdapter.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamInfo.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamInlet.test.d.ts +0 -10
- package/build/__tests__/modules/LslStreamInlet.test.js.map +0 -1
- package/build/__tests__/modules/LslStreamOutlet.test.js.map +0 -1
- package/build/modules/EventMarkerOutlet.d.ts +0 -23
- package/build/modules/EventMarkerOutlet.js.map +0 -1
- package/build/modules/LiblslAdapter.js.map +0 -1
- package/build/modules/LslStreamInfo.js.map +0 -1
- package/build/modules/LslStreamInlet.js.map +0 -1
- package/build/modules/LslStreamOutlet.js.map +0 -1
- package/build/scripts/demoMarkerOutlet.js.map +0 -1
- package/build/scripts/demoStreamOutlet.js.map +0 -1
- package/build/testDoubles/LslInlet/FakeLslInlet.d.ts +0 -11
- package/build/testDoubles/LslInlet/FakeLslInlet.js +0 -16
- package/build/testDoubles/LslInlet/FakeLslInlet.js.map +0 -1
- package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +0 -7
- package/build/testDoubles/LslInlet/SpyLslInlet.js.map +0 -1
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js +0 -59
- package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js +0 -29
- package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js.map +0 -1
- package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.js.map +0 -1
- package/src/testDoubles/LslInlet/FakeLslInlet.ts +0 -22
- package/src/testDoubles/LslInlet/SpyLslInlet.ts +0 -16
- package/src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts +0 -24
- /package/build/{modules → impl}/LiblslAdapter.d.ts +0 -0
- /package/build/{modules → impl}/LiblslAdapter.js +0 -0
- /package/build/{modules → impl}/LslStreamInfo.d.ts +0 -0
- /package/build/scripts/{demoMarkerOutlet.d.ts → runLslEventMarkerOutlet.d.ts} +0 -0
- /package/build/scripts/{demoStreamOutlet.d.ts → runLslStreamOutlet.d.ts} +0 -0
- /package/src/{modules → impl}/LiblslAdapter.ts +0 -0
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { DurationMarker } from '../types'
|
|
2
|
-
import LslStreamOutlet, {
|
|
2
|
+
import LslStreamOutlet, {
|
|
3
|
+
StreamOutletOptions,
|
|
4
|
+
StreamOutlet,
|
|
5
|
+
} from './LslStreamOutlet'
|
|
3
6
|
|
|
4
|
-
export default class
|
|
5
|
-
public static Class?:
|
|
7
|
+
export default class LslEventMarkerOutlet implements EventMarkerOutlet {
|
|
8
|
+
public static Class?: EventMarkerOutletConstructor
|
|
6
9
|
|
|
7
|
-
protected
|
|
10
|
+
protected streamOutlet: StreamOutlet
|
|
8
11
|
private isPlaying = false
|
|
9
12
|
private waitResolve?: () => void
|
|
10
13
|
private timeout?: any
|
|
11
14
|
|
|
12
|
-
protected constructor(
|
|
13
|
-
this.
|
|
15
|
+
protected constructor(outlet: StreamOutlet) {
|
|
16
|
+
this.streamOutlet = outlet
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
public static async Create(options?: Partial<
|
|
19
|
+
public static async Create(options?: Partial<StreamOutletOptions>) {
|
|
17
20
|
const defaultOptions = {
|
|
18
21
|
name: 'Event markers',
|
|
19
22
|
type: 'Markers',
|
|
@@ -25,7 +28,7 @@ export default class EventMarkerOutlet implements MarkerOutlet {
|
|
|
25
28
|
unit: 'N/A',
|
|
26
29
|
chunkSize: 0,
|
|
27
30
|
maxBuffered: 0,
|
|
28
|
-
} as
|
|
31
|
+
} as StreamOutletOptions
|
|
29
32
|
|
|
30
33
|
const outlet = await LslStreamOutlet.Create({
|
|
31
34
|
...defaultOptions,
|
|
@@ -55,7 +58,7 @@ export default class EventMarkerOutlet implements MarkerOutlet {
|
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
private pushMarkerToOutlet(markerName: string) {
|
|
58
|
-
this.
|
|
61
|
+
this.streamOutlet.pushSample([markerName])
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
protected async wait(durationMs: number) {
|
|
@@ -74,10 +77,12 @@ export default class EventMarkerOutlet implements MarkerOutlet {
|
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
|
|
77
|
-
export interface
|
|
80
|
+
export interface EventMarkerOutlet {
|
|
78
81
|
pushMarker(markerName: string): void
|
|
79
82
|
pushMarkers(markers: DurationMarker[]): Promise<void>
|
|
80
83
|
stop(): void
|
|
81
84
|
}
|
|
82
85
|
|
|
83
|
-
export type
|
|
86
|
+
export type EventMarkerOutletConstructor = new (
|
|
87
|
+
outlet: StreamOutlet
|
|
88
|
+
) => EventMarkerOutlet
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import generateId from '@neurodevs/generate-id'
|
|
2
2
|
import { ChannelFormat } from '../types'
|
|
3
3
|
import LiblslAdapter from './LiblslAdapter'
|
|
4
4
|
import LslStreamInfo, { StreamInfo, StreamInfoOptions } from './LslStreamInfo'
|
|
5
5
|
|
|
6
|
-
export default class LslStreamInlet implements
|
|
7
|
-
public static Class?:
|
|
6
|
+
export default class LslStreamInlet implements StreamInlet {
|
|
7
|
+
public static Class?: StreamInletConstructor
|
|
8
8
|
|
|
9
9
|
protected name: string
|
|
10
10
|
protected info: StreamInfo
|
|
11
11
|
private chunkSize: number
|
|
12
12
|
private maxBuffered: number
|
|
13
13
|
|
|
14
|
-
protected constructor(info: StreamInfo, options:
|
|
14
|
+
protected constructor(info: StreamInfo, options: StreamInletOptions) {
|
|
15
15
|
const {
|
|
16
16
|
name = this.defaultName,
|
|
17
17
|
chunkSize,
|
|
@@ -23,17 +23,17 @@ export default class LslStreamInlet implements LslInlet {
|
|
|
23
23
|
this.maxBuffered = maxBuffered
|
|
24
24
|
this.name = name
|
|
25
25
|
|
|
26
|
-
this.
|
|
26
|
+
this.createStreamInlet()
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public static Create(options:
|
|
29
|
+
public static Create(options: StreamInletOptions) {
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
31
31
|
const { maxBuffered, chunkSize, ...infoOptions } = options
|
|
32
32
|
const info = this.LslStreamInfo(infoOptions)
|
|
33
33
|
return new (this.Class ?? this)(info, options)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
private
|
|
36
|
+
private createStreamInlet() {
|
|
37
37
|
this.lsl.createInlet({
|
|
38
38
|
info: this.boundStreamInfo,
|
|
39
39
|
chunkSize: this.chunkSize,
|
|
@@ -56,14 +56,14 @@ export default class LslStreamInlet implements LslInlet {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
export interface
|
|
59
|
+
export interface StreamInlet {}
|
|
60
60
|
|
|
61
|
-
export type
|
|
61
|
+
export type StreamInletConstructor = new (
|
|
62
62
|
info: StreamInfo,
|
|
63
|
-
options:
|
|
64
|
-
) =>
|
|
63
|
+
options: StreamInletOptions
|
|
64
|
+
) => StreamInlet
|
|
65
65
|
|
|
66
|
-
export interface
|
|
66
|
+
export interface StreamInletOptions {
|
|
67
67
|
sampleRate: number
|
|
68
68
|
channelNames: string[]
|
|
69
69
|
channelFormat: ChannelFormat
|
|
@@ -9,24 +9,24 @@ import { ChannelFormat, BoundOutlet, Liblsl, LslSample } from '../types'
|
|
|
9
9
|
import LiblslAdapter from './LiblslAdapter'
|
|
10
10
|
import LslStreamInfo, { StreamInfo, StreamInfoOptions } from './LslStreamInfo'
|
|
11
11
|
|
|
12
|
-
export default class LslStreamOutlet implements
|
|
13
|
-
public static Class?:
|
|
12
|
+
export default class LslStreamOutlet implements StreamOutlet {
|
|
13
|
+
public static Class?: StreamOutletConstructor
|
|
14
14
|
|
|
15
15
|
private info: StreamInfo
|
|
16
|
-
private options:
|
|
16
|
+
private options: StreamOutletOptions
|
|
17
17
|
private outlet!: BoundOutlet
|
|
18
18
|
private pushSampleByType!: (options: any) => void
|
|
19
19
|
|
|
20
|
-
protected constructor(info: StreamInfo, options:
|
|
20
|
+
protected constructor(info: StreamInfo, options: StreamOutletOptions) {
|
|
21
21
|
this.info = info
|
|
22
22
|
this.options = options
|
|
23
23
|
|
|
24
24
|
this.validateOptions()
|
|
25
|
-
this.
|
|
25
|
+
this.createStreamOutlet()
|
|
26
26
|
this.setPushSampleType()
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public static async Create(options:
|
|
29
|
+
public static async Create(options: StreamOutletOptions) {
|
|
30
30
|
const { waitAfterConstructionMs = 10 } = options ?? {}
|
|
31
31
|
|
|
32
32
|
const streamInfoOptions = {
|
|
@@ -55,7 +55,7 @@ export default class LslStreamOutlet implements LslOutlet {
|
|
|
55
55
|
assertValidMaxBuffered(this.maxBuffered)
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
private
|
|
58
|
+
private createStreamOutlet() {
|
|
59
59
|
this.outlet = this.lsl.createOutlet({
|
|
60
60
|
info: this.boundStreamInfo,
|
|
61
61
|
chunkSize: this.chunkSize,
|
|
@@ -167,7 +167,7 @@ export default class LslStreamOutlet implements LslOutlet {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
export interface
|
|
170
|
+
export interface StreamOutlet {
|
|
171
171
|
pushSample(sample: LslSample): void
|
|
172
172
|
destroy(): void
|
|
173
173
|
readonly name: string
|
|
@@ -182,12 +182,12 @@ export interface LslOutlet {
|
|
|
182
182
|
readonly unit: string
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
export type
|
|
185
|
+
export type StreamOutletConstructor = new (
|
|
186
186
|
info: StreamInfo,
|
|
187
|
-
options:
|
|
188
|
-
) =>
|
|
187
|
+
options: StreamOutletOptions
|
|
188
|
+
) => StreamOutlet
|
|
189
189
|
|
|
190
|
-
export interface
|
|
190
|
+
export interface StreamOutletOptions {
|
|
191
191
|
name: string
|
|
192
192
|
type: string
|
|
193
193
|
sourceId: string
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export default class LslWebSocketBridge implements StreamTransportBridge {
|
|
2
|
+
public static Class?: StreamTransportBridgeConstructor
|
|
3
|
+
|
|
4
|
+
protected constructor() {}
|
|
5
|
+
|
|
6
|
+
public static Create() {
|
|
7
|
+
return new (this.Class ?? this)()
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface StreamTransportBridge {}
|
|
12
|
+
|
|
13
|
+
export type StreamTransportBridgeConstructor = new () => StreamTransportBridge
|
package/src/index.ts
CHANGED
|
@@ -1,17 +1,34 @@
|
|
|
1
1
|
export * from './types'
|
|
2
2
|
|
|
3
|
+
// EventMarkerOutlet
|
|
4
|
+
|
|
5
|
+
export { default as EventMarkerOutlet } from './impl/LslEventMarkerOutlet'
|
|
6
|
+
export * from './impl/LslEventMarkerOutlet'
|
|
7
|
+
|
|
8
|
+
export { default as FakeMarkerOutlet } from './testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet'
|
|
9
|
+
export * from './testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet'
|
|
10
|
+
|
|
11
|
+
export { default as MockMarkerOutlet } from './testDoubles/EventMarkerOutlet/MockEventMarkerOutlet'
|
|
12
|
+
export * from './testDoubles/EventMarkerOutlet/MockEventMarkerOutlet'
|
|
13
|
+
|
|
14
|
+
export { default as SpyMarkerOutlet } from './testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet'
|
|
15
|
+
export * from './testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet'
|
|
16
|
+
|
|
17
|
+
export { default as ThrowingMarkerOutlet } from './testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet'
|
|
18
|
+
export * from './testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet'
|
|
19
|
+
|
|
3
20
|
// Liblsl
|
|
4
21
|
|
|
5
|
-
export { default as LiblslAdapter } from './
|
|
6
|
-
export * from './
|
|
22
|
+
export { default as LiblslAdapter } from './impl/LiblslAdapter'
|
|
23
|
+
export * from './impl/LiblslAdapter'
|
|
7
24
|
|
|
8
25
|
export { default as FakeLiblsl } from './testDoubles/Liblsl/FakeLiblsl'
|
|
9
26
|
export * from './testDoubles/Liblsl/FakeLiblsl'
|
|
10
27
|
|
|
11
|
-
//
|
|
28
|
+
// StreamInfo
|
|
12
29
|
|
|
13
|
-
export { default as LslStreamInfo } from './
|
|
14
|
-
export * from './
|
|
30
|
+
export { default as LslStreamInfo } from './impl/LslStreamInfo'
|
|
31
|
+
export * from './impl/LslStreamInfo'
|
|
15
32
|
|
|
16
33
|
export { default as SpyStreamInfo } from './testDoubles/StreamInfo/SpyStreamInfo'
|
|
17
34
|
export * from './testDoubles/StreamInfo/SpyStreamInfo'
|
|
@@ -19,38 +36,29 @@ export * from './testDoubles/StreamInfo/SpyStreamInfo'
|
|
|
19
36
|
export { default as FakeStreamInfo } from './testDoubles/StreamInfo/FakeStreamInfo'
|
|
20
37
|
export * from './testDoubles/StreamInfo/FakeStreamInfo'
|
|
21
38
|
|
|
22
|
-
//
|
|
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'
|
|
39
|
+
// StreamInlet
|
|
29
40
|
|
|
30
|
-
|
|
41
|
+
export { default as LslStreamInlet } from './impl/LslStreamInlet'
|
|
42
|
+
export * from './impl/LslStreamInlet'
|
|
31
43
|
|
|
32
|
-
export { default as
|
|
33
|
-
export * from './
|
|
44
|
+
export { default as FakeStreamInlet } from './testDoubles/StreamInlet/FakeStreamInlet'
|
|
45
|
+
export * from './testDoubles/StreamInlet/FakeStreamInlet'
|
|
34
46
|
|
|
35
|
-
|
|
36
|
-
export * from './testDoubles/LslOutlet/FakeLslOutlet'
|
|
37
|
-
|
|
38
|
-
// EventMarkerOutlet
|
|
47
|
+
// StreamOutlet
|
|
39
48
|
|
|
40
|
-
export { default as
|
|
41
|
-
export * from './
|
|
49
|
+
export { default as LslStreamOutlet } from './impl/LslStreamOutlet'
|
|
50
|
+
export * from './impl/LslStreamOutlet'
|
|
42
51
|
|
|
43
|
-
export { default as
|
|
44
|
-
export * from './testDoubles/
|
|
52
|
+
export { default as FakeStreamOutlet } from './testDoubles/StreamOutlet/FakeStreamOutlet'
|
|
53
|
+
export * from './testDoubles/StreamOutlet/FakeStreamOutlet'
|
|
45
54
|
|
|
46
|
-
|
|
47
|
-
export * from './testDoubles/MarkerOutlet/MockMarkerOutlet'
|
|
55
|
+
// StreamTransportBridge
|
|
48
56
|
|
|
49
|
-
export { default as
|
|
50
|
-
export * from './
|
|
57
|
+
export { default as LslWebSocketBridge } from './impl/LslWebSocketBridge'
|
|
58
|
+
export * from './impl/LslWebSocketBridge'
|
|
51
59
|
|
|
52
|
-
export { default as
|
|
53
|
-
export * from './testDoubles/
|
|
60
|
+
export { default as FakeStreamTransportBridge } from './testDoubles/StreamTransportBridge/FakeStreamTransportBridge'
|
|
61
|
+
export * from './testDoubles/StreamTransportBridge/FakeStreamTransportBridge'
|
|
54
62
|
|
|
55
63
|
// Utils
|
|
56
64
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import LslEventMarkerOutlet from '../impl/LslEventMarkerOutlet'
|
|
2
2
|
|
|
3
3
|
async function main() {
|
|
4
|
-
const outlet = await
|
|
4
|
+
const outlet = await LslEventMarkerOutlet.Create()
|
|
5
5
|
|
|
6
6
|
const markers = [
|
|
7
7
|
{ name: 'phase-1-begin', durationMs: 100 },
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventMarkerOutlet } from '../../impl/LslEventMarkerOutlet'
|
|
2
2
|
import { DurationMarker } from '../../types'
|
|
3
3
|
|
|
4
|
-
export default class
|
|
4
|
+
export default class FakeEventMarkerOutlet implements EventMarkerOutlet {
|
|
5
5
|
public static callsToPushMarker: string[] = []
|
|
6
6
|
public static callsToPushMarkers: DurationMarker[][] = []
|
|
7
7
|
public static numCallsToStop = 0
|
|
@@ -10,19 +10,19 @@ export default class FakeMarkerOutlet implements MarkerOutlet {
|
|
|
10
10
|
public constructor() {}
|
|
11
11
|
|
|
12
12
|
public pushMarker(markerName: string) {
|
|
13
|
-
|
|
13
|
+
FakeEventMarkerOutlet.callsToPushMarker.push(markerName)
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
public async pushMarkers(markers: DurationMarker[]) {
|
|
17
|
-
|
|
17
|
+
FakeEventMarkerOutlet.callsToPushMarkers.push(markers)
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
public stop() {
|
|
21
|
-
|
|
21
|
+
FakeEventMarkerOutlet.numCallsToStop++
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
public destroy() {
|
|
25
|
-
|
|
25
|
+
FakeEventMarkerOutlet.numCallsToDestroy++
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
public static resetTestDouble() {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { assert } from '@sprucelabs/test-utils'
|
|
2
|
-
import {
|
|
2
|
+
import { EventMarkerOutlet } from '../../impl/LslEventMarkerOutlet'
|
|
3
3
|
import { DurationMarker, LslSample } from '../../types'
|
|
4
4
|
|
|
5
|
-
export default class
|
|
5
|
+
export default class MockEventMarkerOutlet implements EventMarkerOutlet {
|
|
6
6
|
private didPushMarkers = false
|
|
7
7
|
private pushedMarkers?: DurationMarker[]
|
|
8
8
|
private didPushSamples = false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import LslEventMarkerOutlet from '../../impl/LslEventMarkerOutlet'
|
|
2
|
+
import { StreamOutlet } from '../../impl/LslStreamOutlet'
|
|
3
|
+
|
|
4
|
+
export default class SpyEventMarkerOutlet extends LslEventMarkerOutlet {
|
|
5
|
+
public totalWaitTimeMs: number
|
|
6
|
+
|
|
7
|
+
public constructor(outlet: StreamOutlet) {
|
|
8
|
+
super(outlet)
|
|
9
|
+
this.totalWaitTimeMs = 0
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public async wait(durationMs: number) {
|
|
13
|
+
this.totalWaitTimeMs += durationMs
|
|
14
|
+
return Promise.resolve()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public getStreamOutlet() {
|
|
18
|
+
return this.streamOutlet
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public resetTestDouble() {
|
|
22
|
+
this.totalWaitTimeMs = 0
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventMarkerOutlet } from '../../impl/LslEventMarkerOutlet'
|
|
2
2
|
import { DurationMarker } from '../../types'
|
|
3
3
|
|
|
4
|
-
export default class
|
|
4
|
+
export default class ThrowingEventMarkerOutlet implements EventMarkerOutlet {
|
|
5
5
|
private errorMsg = 'Intentional throwing: '
|
|
6
6
|
|
|
7
7
|
public constructor() {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { StreamInfo } from '../../impl/LslStreamInfo'
|
|
2
|
+
import { StreamInlet, StreamInletOptions } from '../../impl/LslStreamInlet'
|
|
3
|
+
|
|
4
|
+
export default class FakeStreamInlet implements StreamInlet {
|
|
5
|
+
public static callsToConstructor: {
|
|
6
|
+
info?: StreamInfo
|
|
7
|
+
options?: StreamInletOptions
|
|
8
|
+
}[] = []
|
|
9
|
+
|
|
10
|
+
public constructor(info?: StreamInfo, options?: StreamInletOptions) {
|
|
11
|
+
FakeStreamInlet.callsToConstructor.push({
|
|
12
|
+
info,
|
|
13
|
+
options,
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public static resetTestDouble() {
|
|
18
|
+
FakeStreamInlet.callsToConstructor = []
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { StreamInfo } from '../../impl/LslStreamInfo'
|
|
2
|
+
import LslStreamInlet, { StreamInletOptions } from '../../impl/LslStreamInlet'
|
|
3
|
+
|
|
4
|
+
export class SpyStreamInlet extends LslStreamInlet {
|
|
5
|
+
public constructor(info: StreamInfo, options: StreamInletOptions) {
|
|
6
|
+
super(info, options)
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
public getName() {
|
|
10
|
+
return this.name
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public getStreamInfo() {
|
|
14
|
+
return this.info
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
import { randomInt } from 'crypto'
|
|
2
|
-
import
|
|
3
|
-
import { StreamInfo } from '../../
|
|
4
|
-
import {
|
|
2
|
+
import generateId from '@neurodevs/generate-id'
|
|
3
|
+
import { StreamInfo } from '../../impl/LslStreamInfo'
|
|
4
|
+
import { StreamOutlet, StreamOutletOptions } from '../../impl/LslStreamOutlet'
|
|
5
5
|
import { LslSample } from '../../types'
|
|
6
6
|
|
|
7
|
-
export default class
|
|
8
|
-
public static callsToConstructor:
|
|
7
|
+
export default class FakeStreamOutlet implements StreamOutlet {
|
|
8
|
+
public static callsToConstructor: {
|
|
9
|
+
info?: StreamInfo
|
|
10
|
+
options?: StreamOutletOptions
|
|
11
|
+
}[] = []
|
|
12
|
+
|
|
9
13
|
public static callsToPushSample: LslSample[] = []
|
|
10
14
|
public static numCallsToDestroy = 0
|
|
11
15
|
|
|
12
|
-
public options?:
|
|
16
|
+
public options?: StreamOutletOptions
|
|
13
17
|
|
|
14
|
-
public constructor(info?: StreamInfo, options?:
|
|
15
|
-
|
|
18
|
+
public constructor(info?: StreamInfo, options?: StreamOutletOptions) {
|
|
19
|
+
FakeStreamOutlet.callsToConstructor.push({ info, options })
|
|
16
20
|
this.options = options
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
public destroy() {
|
|
20
|
-
|
|
24
|
+
FakeStreamOutlet.numCallsToDestroy++
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
public pushSample(sample: LslSample) {
|
|
24
|
-
|
|
28
|
+
FakeStreamOutlet.callsToPushSample.push(sample)
|
|
25
29
|
}
|
|
26
30
|
|
|
27
31
|
public get name() {
|
|
@@ -69,13 +73,8 @@ export default class FakeLslOutlet implements LslOutlet {
|
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
public static resetTestDouble() {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
FakeStreamOutlet.callsToConstructor = []
|
|
77
|
+
FakeStreamOutlet.callsToPushSample = []
|
|
78
|
+
FakeStreamOutlet.numCallsToDestroy = 0
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
|
-
|
|
78
|
-
export interface CallToOutletConstructor {
|
|
79
|
-
info?: StreamInfo
|
|
80
|
-
options?: LslOutletOptions
|
|
81
|
-
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { StreamTransportBridge } from '../../impl/LslWebSocketBridge'
|
|
2
|
+
|
|
3
|
+
export default class FakeStreamTransportBridge
|
|
4
|
+
implements StreamTransportBridge
|
|
5
|
+
{
|
|
6
|
+
public static numCallsToConstructor = 0
|
|
7
|
+
|
|
8
|
+
public constructor() {
|
|
9
|
+
FakeStreamTransportBridge.numCallsToConstructor++
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public static resetTestDouble() {
|
|
13
|
+
FakeStreamTransportBridge.numCallsToConstructor = 0
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomInt } from 'crypto'
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import generateId from '@neurodevs/generate-id'
|
|
3
|
+
import { StreamOutletOptions } from '../impl/LslStreamOutlet'
|
|
4
4
|
import { TEST_SUPPORTED_CHANNEL_FORMATS } from './consts'
|
|
5
5
|
|
|
6
6
|
export default function generateRandomOutletOptions() {
|
|
@@ -17,5 +17,5 @@ export default function generateRandomOutletOptions() {
|
|
|
17
17
|
unit: generateId(),
|
|
18
18
|
chunkSize: randomInt(0, 10),
|
|
19
19
|
maxBuffered: randomInt(0, 10),
|
|
20
|
-
} as
|
|
20
|
+
} as StreamOutletOptions
|
|
21
21
|
}
|
package/src/types.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FuncObj, FieldType } from 'ffi-rs'
|
|
2
2
|
import { CHANNEL_FORMATS } from './consts'
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { StreamInlet } from './impl/LslStreamInlet'
|
|
4
|
+
import { StreamOutlet } from './impl/LslStreamOutlet'
|
|
5
5
|
|
|
6
|
-
export type StreamFixuture =
|
|
6
|
+
export type StreamFixuture = StreamOutlet | StreamInlet
|
|
7
7
|
|
|
8
8
|
export type ChannelFormat = (typeof CHANNEL_FORMATS)[number]
|
|
9
9
|
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
40
|
-
const EventMarkerOutlet_1 = __importDefault(require("../modules/EventMarkerOutlet"));
|
|
41
|
-
const LiblslAdapter_1 = __importDefault(require("../modules/LiblslAdapter"));
|
|
42
|
-
const LslStreamInfo_1 = __importDefault(require("../modules/LslStreamInfo"));
|
|
43
|
-
const LslStreamInlet_1 = __importDefault(require("../modules/LslStreamInlet"));
|
|
44
|
-
const LslStreamOutlet_1 = __importDefault(require("../modules/LslStreamOutlet"));
|
|
45
|
-
const FakeLiblsl_1 = __importDefault(require("../testDoubles/Liblsl/FakeLiblsl"));
|
|
46
|
-
const SpyLslInlet_1 = require("../testDoubles/LslInlet/SpyLslInlet");
|
|
47
|
-
const FakeLslOutlet_1 = __importDefault(require("../testDoubles/LslOutlet/FakeLslOutlet"));
|
|
48
|
-
const SpyMarkerOutlet_1 = __importDefault(require("../testDoubles/MarkerOutlet/SpyMarkerOutlet"));
|
|
49
|
-
const FakeStreamInfo_1 = __importDefault(require("../testDoubles/StreamInfo/FakeStreamInfo"));
|
|
50
|
-
const SpyStreamInfo_1 = __importDefault(require("../testDoubles/StreamInfo/SpyStreamInfo"));
|
|
51
|
-
class AbstractLslTest extends test_utils_1.default {
|
|
52
|
-
static async beforeEach() {
|
|
53
|
-
await super.beforeEach();
|
|
54
|
-
this.setFakeLiblsl();
|
|
55
|
-
}
|
|
56
|
-
static setFakeLiblsl() {
|
|
57
|
-
this.fakeLiblsl = new FakeLiblsl_1.default();
|
|
58
|
-
LiblslAdapter_1.default.setInstance(this.fakeLiblsl);
|
|
59
|
-
}
|
|
60
|
-
static setSpyStreamInfo() {
|
|
61
|
-
LslStreamInfo_1.default.Class = SpyStreamInfo_1.default;
|
|
62
|
-
}
|
|
63
|
-
static setFakeStreamInfo() {
|
|
64
|
-
LslStreamInfo_1.default.Class = FakeStreamInfo_1.default;
|
|
65
|
-
FakeStreamInfo_1.default.resetTestDouble();
|
|
66
|
-
}
|
|
67
|
-
static setSpyLslInlet() {
|
|
68
|
-
LslStreamInlet_1.default.Class = SpyLslInlet_1.SpyLslInlet;
|
|
69
|
-
}
|
|
70
|
-
static setFakeLslOutlet() {
|
|
71
|
-
LslStreamOutlet_1.default.Class = FakeLslOutlet_1.default;
|
|
72
|
-
FakeLslOutlet_1.default.resetTestDouble();
|
|
73
|
-
}
|
|
74
|
-
static setSpyMarkerOutlet() {
|
|
75
|
-
EventMarkerOutlet_1.default.Class = SpyMarkerOutlet_1.default;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
AbstractLslTest.name_ = (0, test_utils_1.generateId)();
|
|
79
|
-
AbstractLslTest.type = (0, test_utils_1.generateId)();
|
|
80
|
-
AbstractLslTest.sourceId = (0, test_utils_1.generateId)();
|
|
81
|
-
AbstractLslTest.units = (0, test_utils_1.generateId)();
|
|
82
|
-
AbstractLslTest.channelNames = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
|
|
83
|
-
AbstractLslTest.chunkSize = Math.floor(Math.random() * 100);
|
|
84
|
-
AbstractLslTest.maxBuffered = Math.floor(Math.random() * 100);
|
|
85
|
-
AbstractLslTest.sampleRate = Math.floor(Math.random() * 100);
|
|
86
|
-
exports.default = AbstractLslTest;
|
|
87
|
-
//# sourceMappingURL=AbstractLslTest.js.map
|