@neurodevs/node-lsl 18.1.0 → 20.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.
Files changed (189) hide show
  1. package/build/__tests__/AbstractPackageTest.d.ts +19 -17
  2. package/build/__tests__/AbstractPackageTest.js +54 -39
  3. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  4. package/build/__tests__/impl/BleDeviceController.test.d.ts +6 -1
  5. package/build/__tests__/impl/BleDeviceController.test.js +44 -15
  6. package/build/__tests__/impl/BleDeviceController.test.js.map +1 -1
  7. package/build/__tests__/impl/LslEventMarkerEmitter.test.js +13 -13
  8. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -1
  9. package/build/__tests__/impl/LslStreamInfo.test.js +2 -2
  10. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
  11. package/build/__tests__/impl/LslStreamInlet.test.d.ts +3 -5
  12. package/build/__tests__/impl/LslStreamInlet.test.js +13 -46
  13. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  14. package/build/__tests__/impl/LslStreamOutlet.test.js +9 -16
  15. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  16. package/build/__tests__/impl/LslWebSocketBridge.test.js +9 -10
  17. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  18. package/build/__tests__/impl/UsbDeviceController.test.d.ts +17 -0
  19. package/build/__tests__/impl/UsbDeviceController.test.js +81 -0
  20. package/build/__tests__/impl/UsbDeviceController.test.js.map +1 -0
  21. package/build/__tests__/impl/WindowedClockRegressor.test.d.ts +19 -0
  22. package/build/__tests__/impl/WindowedClockRegressor.test.js +172 -0
  23. package/build/__tests__/impl/WindowedClockRegressor.test.js.map +1 -0
  24. package/build/assertions.js +1 -1
  25. package/build/assertions.js.map +1 -1
  26. package/build/impl/LslEventMarkerEmitter.d.ts +12 -12
  27. package/build/impl/LslEventMarkerEmitter.js.map +1 -1
  28. package/build/impl/LslStreamInfo.d.ts +7 -7
  29. package/build/impl/LslStreamInfo.js.map +1 -1
  30. package/build/impl/LslStreamInlet.d.ts +63 -20
  31. package/build/impl/LslStreamInlet.js +221 -64
  32. package/build/impl/LslStreamInlet.js.map +1 -1
  33. package/build/impl/LslStreamOutlet.d.ts +16 -14
  34. package/build/impl/LslStreamOutlet.js +34 -37
  35. package/build/impl/LslStreamOutlet.js.map +1 -1
  36. package/build/impl/LslWebSocketBridge.d.ts +10 -10
  37. package/build/impl/LslWebSocketBridge.js.map +1 -1
  38. package/build/impl/clocks/WindowedClockRegressor.d.ts +24 -0
  39. package/build/impl/clocks/WindowedClockRegressor.js +73 -0
  40. package/build/impl/clocks/WindowedClockRegressor.js.map +1 -0
  41. package/build/impl/controllers/BleDeviceController.d.ts +3 -1
  42. package/build/impl/controllers/BleDeviceController.js +9 -1
  43. package/build/impl/controllers/BleDeviceController.js.map +1 -1
  44. package/build/impl/controllers/UsbDeviceController.d.ts +23 -0
  45. package/build/impl/controllers/UsbDeviceController.js +40 -0
  46. package/build/impl/controllers/UsbDeviceController.js.map +1 -0
  47. package/build/index.d.ts +32 -20
  48. package/build/index.js +39 -26
  49. package/build/index.js.map +1 -1
  50. package/build/scripts/{runLslEventMarkerEmitter.js → runLslEmitter.js} +5 -4
  51. package/build/scripts/runLslEmitter.js.map +1 -0
  52. package/build/scripts/{runLslStreamOutlet.js → runLslOutlet.js} +1 -1
  53. package/build/scripts/runLslOutlet.js.map +1 -0
  54. package/build/scripts/runMuse.js +1 -1
  55. package/build/scripts/runMuse.js.map +1 -1
  56. package/build/scripts/runUsb.js +14 -0
  57. package/build/scripts/runUsb.js.map +1 -0
  58. package/build/testDoubles/BleController/FakeBleController.d.ts +3 -1
  59. package/build/testDoubles/BleController/FakeBleController.js +5 -0
  60. package/build/testDoubles/BleController/FakeBleController.js.map +1 -1
  61. package/build/testDoubles/ClockRegressor/FakeClockRegressor.d.ts +17 -0
  62. package/build/testDoubles/ClockRegressor/FakeClockRegressor.js +23 -0
  63. package/build/testDoubles/ClockRegressor/FakeClockRegressor.js.map +1 -0
  64. package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.d.ts → LslEmitter/FakeLslEmitter.d.ts} +4 -4
  65. package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.js → LslEmitter/FakeLslEmitter.js} +7 -7
  66. package/build/testDoubles/LslEmitter/FakeLslEmitter.js.map +1 -0
  67. package/build/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.d.ts → LslEmitter/SpyLslEmitter.d.ts} +4 -4
  68. package/build/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.js → LslEmitter/SpyLslEmitter.js} +3 -3
  69. package/build/testDoubles/LslEmitter/SpyLslEmitter.js.map +1 -0
  70. package/build/testDoubles/LslEmitter/ThrowingLslEmitter.d.ts +9 -0
  71. package/build/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.js → LslEmitter/ThrowingLslEmitter.js} +2 -2
  72. package/build/testDoubles/LslEmitter/ThrowingLslEmitter.js.map +1 -0
  73. package/build/testDoubles/{StreamInfo/FakeStreamInfo.d.ts → LslInfo/FakeLslInfo.d.ts} +4 -4
  74. package/build/testDoubles/{StreamInfo/FakeStreamInfo.js → LslInfo/FakeLslInfo.js} +7 -7
  75. package/build/testDoubles/LslInfo/FakeLslInfo.js.map +1 -0
  76. package/build/testDoubles/LslInfo/SpyLslInfo.d.ts +10 -0
  77. package/build/testDoubles/{StreamInfo/SpyStreamInfo.js → LslInfo/SpyLslInfo.js} +4 -4
  78. package/build/testDoubles/LslInfo/SpyLslInfo.js.map +1 -0
  79. package/build/testDoubles/{StreamInlet/FakeStreamInlet.d.ts → LslInlet/FakeLslInlet.d.ts} +4 -4
  80. package/build/testDoubles/{StreamInlet/FakeStreamInlet.js → LslInlet/FakeLslInlet.js} +12 -11
  81. package/build/testDoubles/LslInlet/FakeLslInlet.js.map +1 -0
  82. package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +4 -0
  83. package/build/testDoubles/{StreamInlet/SpyStreamInlet.js → LslInlet/SpyLslInlet.js} +2 -2
  84. package/build/testDoubles/LslInlet/SpyLslInlet.js.map +1 -0
  85. package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts} +5 -5
  86. package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.js → LslOutlet/FakeLslOutlet.js} +8 -8
  87. package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -0
  88. package/build/testDoubles/LslWsBridge/FakeLslWsBridge.d.ts +14 -0
  89. package/build/testDoubles/{WebSocketBridge/FakeWebSocketBridge.js → LslWsBridge/FakeLslWsBridge.js} +14 -14
  90. package/build/testDoubles/LslWsBridge/FakeLslWsBridge.js.map +1 -0
  91. package/build/testDoubles/LslWsBridge/SpyLslWsBridge.d.ts +4 -0
  92. package/build/testDoubles/{WebSocketBridge/SpyLslWebSocketBridge.js → LslWsBridge/SpyLslWsBridge.js} +2 -2
  93. package/build/testDoubles/LslWsBridge/SpyLslWsBridge.js.map +1 -0
  94. package/build/testDoubles/UsbController/FakeUsbController.d.ts +12 -0
  95. package/build/testDoubles/UsbController/FakeUsbController.js +25 -0
  96. package/build/testDoubles/UsbController/FakeUsbController.js.map +1 -0
  97. package/build/testDoubles/consts.d.ts +2 -12
  98. package/build/testDoubles/consts.js +0 -20
  99. package/build/testDoubles/consts.js.map +1 -1
  100. package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
  101. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  102. package/package.json +6 -5
  103. package/src/__tests__/AbstractPackageTest.ts +78 -49
  104. package/src/__tests__/impl/BleDeviceController.test.ts +59 -18
  105. package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +19 -24
  106. package/src/__tests__/impl/LslStreamInfo.test.ts +8 -8
  107. package/src/__tests__/impl/LslStreamInlet.test.ts +21 -78
  108. package/src/__tests__/impl/LslStreamOutlet.test.ts +22 -28
  109. package/src/__tests__/impl/LslWebSocketBridge.test.ts +15 -18
  110. package/src/__tests__/impl/UsbDeviceController.test.ts +109 -0
  111. package/src/__tests__/impl/WindowedClockRegressor.test.ts +262 -0
  112. package/src/assertions.ts +1 -2
  113. package/src/impl/LslEventMarkerEmitter.ts +15 -17
  114. package/src/impl/LslStreamInfo.ts +7 -9
  115. package/src/impl/LslStreamInlet.ts +304 -77
  116. package/src/impl/LslStreamOutlet.ts +59 -57
  117. package/src/impl/LslWebSocketBridge.ts +15 -18
  118. package/src/impl/clocks/WindowedClockRegressor.ts +136 -0
  119. package/src/impl/controllers/BleDeviceController.ts +18 -1
  120. package/src/impl/controllers/UsbDeviceController.ts +65 -0
  121. package/src/index.ts +48 -28
  122. package/src/scripts/{runLslEventMarkerEmitter.ts → runLslEmitter.ts} +4 -3
  123. package/src/scripts/runMuse.ts +1 -1
  124. package/src/scripts/runUsb.ts +20 -0
  125. package/src/testDoubles/BleController/FakeBleController.ts +11 -0
  126. package/src/testDoubles/ClockRegressor/FakeClockRegressor.ts +46 -0
  127. package/src/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.ts → LslEmitter/FakeLslEmitter.ts} +10 -10
  128. package/src/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.ts → LslEmitter/SpyLslEmitter.ts} +4 -4
  129. package/src/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.ts → LslEmitter/ThrowingLslEmitter.ts} +4 -4
  130. package/src/testDoubles/{StreamInfo/FakeStreamInfo.ts → LslInfo/FakeLslInfo.ts} +9 -9
  131. package/src/testDoubles/{StreamInfo/SpyStreamInfo.ts → LslInfo/SpyLslInfo.ts} +5 -5
  132. package/src/testDoubles/{StreamInlet/FakeStreamInlet.ts → LslInlet/FakeLslInlet.ts} +15 -14
  133. package/src/testDoubles/LslInlet/SpyLslInlet.ts +10 -0
  134. package/src/testDoubles/{StreamOutlet/FakeStreamOutlet.ts → LslOutlet/FakeLslOutlet.ts} +11 -14
  135. package/src/testDoubles/{WebSocketBridge/FakeWebSocketBridge.ts → LslWsBridge/FakeLslWsBridge.ts} +19 -20
  136. package/src/testDoubles/LslWsBridge/SpyLslWsBridge.ts +9 -0
  137. package/src/testDoubles/UsbController/FakeUsbController.ts +34 -0
  138. package/src/testDoubles/consts.ts +3 -23
  139. package/src/testDoubles/generateRandomOutletOptions.ts +2 -2
  140. package/build/consts.d.ts +0 -11
  141. package/build/consts.js +0 -21
  142. package/build/consts.js.map +0 -1
  143. package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +0 -22
  144. package/build/impl/workers/inlet/LslStreamInlet.worker.js +0 -42
  145. package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +0 -1
  146. package/build/impl/workers/inlet/StreamInletWorker.d.ts +0 -73
  147. package/build/impl/workers/inlet/StreamInletWorker.js +0 -253
  148. package/build/impl/workers/inlet/StreamInletWorker.js.map +0 -1
  149. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +0 -32
  150. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +0 -82
  151. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +0 -1
  152. package/build/scripts/discoverMuse.js +0 -40
  153. package/build/scripts/discoverMuse.js.map +0 -1
  154. package/build/scripts/runLslEventMarkerEmitter.js.map +0 -1
  155. package/build/scripts/runLslStreamOutlet.js.map +0 -1
  156. package/build/scripts/testDestroyOutlet.d.ts +0 -1
  157. package/build/scripts/testDestroyOutlet.js +0 -4
  158. package/build/scripts/testDestroyOutlet.js.map +0 -1
  159. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +0 -1
  160. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +0 -1
  161. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +0 -9
  162. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +0 -1
  163. package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +0 -1
  164. package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +0 -10
  165. package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +0 -1
  166. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +0 -1
  167. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +0 -4
  168. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +0 -1
  169. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +0 -1
  170. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +0 -14
  171. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +0 -1
  172. package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.d.ts +0 -4
  173. package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.js.map +0 -1
  174. package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +0 -27
  175. package/build/testDoubles/WorkerThreads/FakeWorker.js +0 -67
  176. package/build/testDoubles/WorkerThreads/FakeWorker.js.map +0 -1
  177. package/src/consts.ts +0 -21
  178. package/src/impl/workers/inlet/LslStreamInlet.worker.ts +0 -74
  179. package/src/impl/workers/inlet/StreamInletWorker.ts +0 -348
  180. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +0 -144
  181. package/src/scripts/discoverMuse.ts +0 -50
  182. package/src/scripts/testDestroyOutlet.ts +0 -5
  183. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +0 -10
  184. package/src/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.ts +0 -9
  185. package/src/testDoubles/WorkerThreads/FakeWorker.ts +0 -99
  186. /package/build/scripts/{discoverMuse.d.ts → runLslEmitter.d.ts} +0 -0
  187. /package/build/scripts/{runLslEventMarkerEmitter.d.ts → runLslOutlet.d.ts} +0 -0
  188. /package/build/scripts/{runLslStreamOutlet.d.ts → runUsb.d.ts} +0 -0
  189. /package/src/scripts/{runLslStreamOutlet.ts → runLslOutlet.ts} +0 -0
@@ -1,10 +1,10 @@
1
1
  import generateId from '@neurodevs/generate-id'
2
2
  import { InfoHandle } from '@neurodevs/ndx-native'
3
3
 
4
- import { StreamInfo, StreamInfoOptions } from '../../impl/LslStreamInfo.js'
4
+ import { LslInfo, LslInfoOptions } from '../../impl/LslStreamInfo.js'
5
5
 
6
- export default class FakeStreamInfo implements StreamInfo {
7
- public static callsToConstructor: (StreamInfoOptions | undefined)[] = []
6
+ export default class FakeLslInfo implements LslInfo {
7
+ public static callsToConstructor: (LslInfoOptions | undefined)[] = []
8
8
  public static numCallsToDestroy = 0
9
9
 
10
10
  public static infoHandle = {} as InfoHandle
@@ -17,12 +17,12 @@ export default class FakeStreamInfo implements StreamInfo {
17
17
  public sampleRateHz = 0
18
18
  public units = 'N/A'
19
19
 
20
- public constructor(options?: StreamInfoOptions) {
21
- FakeStreamInfo.callsToConstructor.push(options)
20
+ public constructor(options?: LslInfoOptions) {
21
+ FakeLslInfo.callsToConstructor.push(options)
22
22
  }
23
23
 
24
24
  public destroy() {
25
- FakeStreamInfo.numCallsToDestroy++
25
+ FakeLslInfo.numCallsToDestroy++
26
26
  }
27
27
 
28
28
  public get channelCount() {
@@ -30,11 +30,11 @@ export default class FakeStreamInfo implements StreamInfo {
30
30
  }
31
31
 
32
32
  public get infoHandle() {
33
- return FakeStreamInfo.infoHandle
33
+ return FakeLslInfo.infoHandle
34
34
  }
35
35
 
36
36
  public static resetTestDouble() {
37
- FakeStreamInfo.callsToConstructor = []
38
- FakeStreamInfo.numCallsToDestroy = 0
37
+ FakeLslInfo.callsToConstructor = []
38
+ FakeLslInfo.numCallsToDestroy = 0
39
39
  }
40
40
  }
@@ -1,11 +1,11 @@
1
- import LslStreamInfo, { StreamInfoOptions } from '../../impl/LslStreamInfo.js'
1
+ import LslStreamInfo, { LslInfoOptions } from '../../impl/LslStreamInfo.js'
2
2
 
3
- export default class SpyStreamInfo extends LslStreamInfo {
3
+ export default class SpyLslInfo extends LslStreamInfo {
4
4
  public static numCallsToConstructor = 0
5
5
 
6
- public constructor(options: StreamInfoOptions) {
6
+ public constructor(options: LslInfoOptions) {
7
7
  super(options)
8
- SpyStreamInfo.numCallsToConstructor++
8
+ SpyLslInfo.numCallsToConstructor++
9
9
  }
10
10
 
11
11
  public getName() {
@@ -25,6 +25,6 @@ export default class SpyStreamInfo extends LslStreamInfo {
25
25
  }
26
26
 
27
27
  public static resetTestDouble() {
28
- SpyStreamInfo.numCallsToConstructor = 0
28
+ SpyLslInfo.numCallsToConstructor = 0
29
29
  }
30
30
  }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  OnDataCallback,
3
- StreamInlet,
4
- StreamInletOptions,
3
+ LslInlet,
4
+ LslInletOptions,
5
5
  } from '../../impl/LslStreamInlet.js'
6
6
 
7
- export default class FakeStreamInlet implements StreamInlet {
7
+ export default class FakeLslInlet implements LslInlet {
8
8
  public static callsToConstructor: {
9
- options?: StreamInletOptions
9
+ options?: LslInletOptions
10
10
  onData?: OnDataCallback
11
11
  }[] = []
12
12
 
@@ -19,37 +19,38 @@ export default class FakeStreamInlet implements StreamInlet {
19
19
 
20
20
  protected onData!: OnDataCallback
21
21
 
22
- public constructor(options?: StreamInletOptions, onData?: OnDataCallback) {
22
+ public constructor(options?: LslInletOptions, onData?: OnDataCallback) {
23
23
  this.onData = onData ?? (() => {})
24
24
 
25
- FakeStreamInlet.callsToConstructor.push({
25
+ FakeLslInlet.callsToConstructor.push({
26
26
  options,
27
27
  onData: this.onData,
28
28
  })
29
29
  }
30
30
 
31
31
  public async startPulling() {
32
- FakeStreamInlet.numCallsToStartPulling++
32
+ FakeLslInlet.numCallsToStartPulling++
33
33
  this.isRunning = true
34
34
  }
35
35
 
36
36
  public stopPulling() {
37
- FakeStreamInlet.numCallsToStopPulling++
37
+ FakeLslInlet.numCallsToStopPulling++
38
38
  this.isRunning = false
39
39
  }
40
40
 
41
41
  public flushInlet() {
42
- FakeStreamInlet.numCallsToFlushInlet++
42
+ FakeLslInlet.numCallsToFlushInlet++
43
43
  }
44
44
 
45
45
  public destroy() {
46
- FakeStreamInlet.numCallsToDestroy++
46
+ FakeLslInlet.numCallsToDestroy++
47
47
  }
48
48
 
49
49
  public static resetTestDouble() {
50
- FakeStreamInlet.callsToConstructor = []
51
- FakeStreamInlet.numCallsToStartPulling = 0
52
- FakeStreamInlet.numCallsToFlushInlet = 0
53
- FakeStreamInlet.numCallsToDestroy = 0
50
+ this.callsToConstructor = []
51
+ this.numCallsToStartPulling = 0
52
+ this.numCallsToStopPulling = 0
53
+ this.numCallsToFlushInlet = 0
54
+ this.numCallsToDestroy = 0
54
55
  }
55
56
  }
@@ -0,0 +1,10 @@
1
+ import LslStreamInlet, {
2
+ OnDataCallback,
3
+ LslInletOptions,
4
+ } from '../../impl/LslStreamInlet.js'
5
+
6
+ export default class SpyLslInlet extends LslStreamInlet {
7
+ public constructor(options: LslInletOptions, onData: OnDataCallback) {
8
+ super(options, onData)
9
+ }
10
+ }
@@ -3,13 +3,10 @@ import { randomInt } from 'node:crypto'
3
3
  import generateId from '@neurodevs/generate-id'
4
4
  import { LslSample } from '@neurodevs/ndx-native'
5
5
 
6
- import {
7
- StreamOutlet,
8
- StreamOutletOptions,
9
- } from '../../impl/LslStreamOutlet.js'
6
+ import { LslOutlet, LslOutletOptions } from '../../impl/LslStreamOutlet.js'
10
7
 
11
- export default class FakeStreamOutlet implements StreamOutlet {
12
- public static callsToConstructor: (StreamOutletOptions | undefined)[] = []
8
+ export default class FakeLslOutlet implements LslOutlet {
9
+ public static callsToConstructor: (LslOutletOptions | undefined)[] = []
13
10
 
14
11
  public static callsToPushSample: {
15
12
  sample: LslSample
@@ -18,19 +15,19 @@ export default class FakeStreamOutlet implements StreamOutlet {
18
15
 
19
16
  public static numCallsToDestroy = 0
20
17
 
21
- public options?: StreamOutletOptions
18
+ public options?: LslOutletOptions
22
19
 
23
- public constructor(options?: StreamOutletOptions) {
24
- FakeStreamOutlet.callsToConstructor.push(options)
20
+ public constructor(options?: LslOutletOptions) {
21
+ FakeLslOutlet.callsToConstructor.push(options)
25
22
  this.options = options
26
23
  }
27
24
 
28
25
  public destroy() {
29
- FakeStreamOutlet.numCallsToDestroy++
26
+ FakeLslOutlet.numCallsToDestroy++
30
27
  }
31
28
 
32
29
  public pushSample(sample: LslSample, timestampSec?: number) {
33
- FakeStreamOutlet.callsToPushSample.push({
30
+ FakeLslOutlet.callsToPushSample.push({
34
31
  sample,
35
32
  timestampSec,
36
33
  })
@@ -81,8 +78,8 @@ export default class FakeStreamOutlet implements StreamOutlet {
81
78
  }
82
79
 
83
80
  public static resetTestDouble() {
84
- FakeStreamOutlet.callsToConstructor = []
85
- FakeStreamOutlet.callsToPushSample = []
86
- FakeStreamOutlet.numCallsToDestroy = 0
81
+ FakeLslOutlet.callsToConstructor = []
82
+ FakeLslOutlet.callsToPushSample = []
83
+ FakeLslOutlet.numCallsToDestroy = 0
87
84
  }
88
85
  }
@@ -1,45 +1,34 @@
1
1
  import WebSocket, { WebSocketServer } from 'ws'
2
2
  import LslWebSocketBridge, {
3
- WebSocketBridge,
4
- WebSocketBridgeConstructorOptions,
3
+ LslWsBridge,
4
+ LslWsBridgeConstructorOptions,
5
5
  } from '../../impl/LslWebSocketBridge.js'
6
6
  import FakeWebSocket from '../WebSockets/FakeWebSocket.js'
7
7
  import FakeWebSocketServer from '../WebSockets/FakeWebSocketServer.js'
8
8
 
9
- export default class FakeWebSocketBridge implements WebSocketBridge {
9
+ export default class FakeLslWsBridge implements LslWsBridge {
10
10
  public static callsToConstructor: (
11
- | WebSocketBridgeConstructorOptions
12
- | undefined
11
+ LslWsBridgeConstructorOptions | undefined
13
12
  )[] = []
14
13
 
15
14
  public static numCallsToActivate = 0
16
15
  public static numCallsToDeactivate = 0
17
16
  public static numCallsToDestroy = 0
18
17
 
19
- public constructor(options?: WebSocketBridgeConstructorOptions) {
20
- FakeWebSocketBridge.callsToConstructor.push(options)
18
+ public constructor(options?: LslWsBridgeConstructorOptions) {
19
+ FakeLslWsBridge.callsToConstructor.push(options)
21
20
  }
22
21
 
23
22
  public async activate() {
24
- FakeWebSocketBridge.numCallsToActivate++
23
+ FakeLslWsBridge.numCallsToActivate++
25
24
  }
26
25
 
27
26
  public deactivate() {
28
- FakeWebSocketBridge.numCallsToDeactivate++
27
+ FakeLslWsBridge.numCallsToDeactivate++
29
28
  }
30
29
 
31
30
  public destroy() {
32
- FakeWebSocketBridge.numCallsToDestroy++
33
- }
34
-
35
- public static resetTestDouble() {
36
- this.callsToConstructor = []
37
- this.numCallsToActivate = 0
38
- this.numCallsToDeactivate = 0
39
- this.numCallsToDestroy = 0
40
-
41
- this.setFakeWebSocket()
42
- this.setFakeWebSocketServer()
31
+ FakeLslWsBridge.numCallsToDestroy++
43
32
  }
44
33
 
45
34
  private static setFakeWebSocket() {
@@ -52,4 +41,14 @@ export default class FakeWebSocketBridge implements WebSocketBridge {
52
41
  FakeWebSocketServer as unknown as typeof WebSocketServer
53
42
  FakeWebSocketServer.resetTestDouble()
54
43
  }
44
+
45
+ public static resetTestDouble() {
46
+ this.callsToConstructor = []
47
+ this.numCallsToActivate = 0
48
+ this.numCallsToDeactivate = 0
49
+ this.numCallsToDestroy = 0
50
+
51
+ this.setFakeWebSocket()
52
+ this.setFakeWebSocketServer()
53
+ }
55
54
  }
@@ -0,0 +1,9 @@
1
+ import LslWebSocketBridge, {
2
+ LslWsBridgeConstructorOptions,
3
+ } from '../../impl/LslWebSocketBridge.js'
4
+
5
+ export default class SpyLslWsBridge extends LslWebSocketBridge {
6
+ public constructor(options: LslWsBridgeConstructorOptions) {
7
+ super(options)
8
+ }
9
+ }
@@ -0,0 +1,34 @@
1
+ import {
2
+ UsbController,
3
+ UsbControllerOptions,
4
+ } from '../../impl/controllers/UsbDeviceController.js'
5
+
6
+ export default class FakeUsbController implements UsbController {
7
+ public static callsToConstructor: (UsbControllerOptions | undefined)[] = []
8
+ public static numCallsToConnect = 0
9
+ public static callsToWriteUsb: string[] = []
10
+ public static numCallsToDisconnect = 0
11
+
12
+ public constructor(options?: UsbControllerOptions) {
13
+ FakeUsbController.callsToConstructor.push(options)
14
+ }
15
+
16
+ public async connect() {
17
+ FakeUsbController.numCallsToConnect++
18
+ }
19
+
20
+ public async writeUsb(value: string) {
21
+ FakeUsbController.callsToWriteUsb.push(value)
22
+ }
23
+
24
+ public async disconnect() {
25
+ FakeUsbController.numCallsToDisconnect++
26
+ }
27
+
28
+ public static resetTestDouble() {
29
+ FakeUsbController.callsToConstructor.length = 0
30
+ FakeUsbController.numCallsToConnect = 0
31
+ FakeUsbController.callsToWriteUsb.length = 0
32
+ FakeUsbController.numCallsToDisconnect = 0
33
+ }
34
+ }
@@ -1,3 +1,5 @@
1
+ import { ChannelFormat } from '@neurodevs/ndx-native'
2
+
1
3
  export const TEST_SUPPORTED_CHANNEL_FORMATS = ['float32', 'string'] as const
2
4
 
3
5
  export const TEST_UNSUPPORTED_CHANNEL_FORMATS = [
@@ -9,26 +11,4 @@ export const TEST_UNSUPPORTED_CHANNEL_FORMATS = [
9
11
  'int64',
10
12
  ] as const
11
13
 
12
- export const TEST_CHANNEL_FORMATS = [
13
- 'undefined',
14
- 'float32',
15
- 'double64',
16
- 'string',
17
- 'int32',
18
- 'int16',
19
- 'int8',
20
- 'int64',
21
- ] as const
22
-
23
- export const TEST_CHANNEL_FORMATS_MAP = {
24
- undefined: 0,
25
- float32: 1,
26
- double64: 2,
27
- string: 3,
28
- int32: 4,
29
- int16: 5,
30
- int8: 6,
31
- int64: 7,
32
- }
33
-
34
- export type TestChannelFormat = (typeof TEST_CHANNEL_FORMATS)[number]
14
+ export type TestChannelFormat = ChannelFormat
@@ -2,7 +2,7 @@ import { randomInt } from 'node:crypto'
2
2
 
3
3
  import generateId from '@neurodevs/generate-id'
4
4
 
5
- import { StreamOutletOptions } from '../impl/LslStreamOutlet.js'
5
+ import { LslOutletOptions } from '../impl/LslStreamOutlet.js'
6
6
  import { TEST_SUPPORTED_CHANNEL_FORMATS } from './consts.js'
7
7
 
8
8
  export default function generateRandomOutletOptions() {
@@ -19,5 +19,5 @@ export default function generateRandomOutletOptions() {
19
19
  units: generateId(),
20
20
  chunkSize: randomInt(0, 10),
21
21
  maxBufferedMs: randomInt(0, 10),
22
- } as StreamOutletOptions
22
+ } as LslOutletOptions
23
23
  }
package/build/consts.d.ts DELETED
@@ -1,11 +0,0 @@
1
- export declare const CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
2
- export declare const CHANNEL_FORMATS_MAP: {
3
- undefined: number;
4
- float32: number;
5
- double64: number;
6
- string: number;
7
- int32: number;
8
- int16: number;
9
- int8: number;
10
- int64: number;
11
- };
package/build/consts.js DELETED
@@ -1,21 +0,0 @@
1
- export const CHANNEL_FORMATS = [
2
- 'undefined',
3
- 'float32',
4
- 'double64',
5
- 'string',
6
- 'int32',
7
- 'int16',
8
- 'int8',
9
- 'int64',
10
- ];
11
- export const CHANNEL_FORMATS_MAP = {
12
- undefined: 0,
13
- float32: 1,
14
- double64: 2,
15
- string: 3,
16
- int32: 4,
17
- int16: 5,
18
- int8: 6,
19
- int64: 7,
20
- };
21
- //# sourceMappingURL=consts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACD,CAAA;AAEV,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACX,CAAA"}
@@ -1,22 +0,0 @@
1
- export type InletMessage = {
2
- type: 'createInlet';
3
- payload: CreateInletPayload;
4
- } | {
5
- type: 'startPulling';
6
- } | {
7
- type: 'flushInlet';
8
- } | {
9
- type: 'stopPulling';
10
- } | {
11
- type: 'destroyInlet';
12
- };
13
- export interface CreateInletPayload {
14
- sourceId: string;
15
- chunkSize: number;
16
- maxBufferedMs: number;
17
- openStreamTimeoutMs: number;
18
- waitAfterOpenStreamMs: number;
19
- pullTimeoutMs: number;
20
- waitBetweenPullsMs: number;
21
- flushInletOnStop: boolean;
22
- }
@@ -1,42 +0,0 @@
1
- import { parentPort } from 'node:worker_threads';
2
- import StreamInletWorker from './StreamInletWorker.js';
3
- const worker = new StreamInletWorker();
4
- parentPort?.on('message', async (msg) => {
5
- try {
6
- switch (msg.type) {
7
- case 'createInlet':
8
- const { payload } = msg;
9
- await worker.createInlet(payload);
10
- parentPort?.postMessage({ type: 'ready' });
11
- break;
12
- case 'startPulling':
13
- worker.startPulling((samples, timestamps) => {
14
- parentPort?.postMessage({
15
- type: 'data',
16
- payload: {
17
- samples,
18
- timestamps,
19
- },
20
- });
21
- });
22
- break;
23
- case 'stopPulling':
24
- worker.stopPulling();
25
- break;
26
- case 'flushInlet':
27
- worker.flushInlet();
28
- break;
29
- case 'destroyInlet':
30
- worker.destroyInlet();
31
- parentPort?.close();
32
- break;
33
- }
34
- }
35
- catch (err) {
36
- parentPort?.postMessage({
37
- type: 'error',
38
- error: err instanceof Error ? err.message : String(err),
39
- });
40
- }
41
- });
42
- //# sourceMappingURL=LslStreamInlet.worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LslStreamInlet.worker.js","sourceRoot":"","sources":["../../../../src/impl/workers/inlet/LslStreamInlet.worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,iBAAiB,MAAM,wBAAwB,CAAA;AAEtD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAA;AAEtC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAiB,EAAE,EAAE;IAClD,IAAI,CAAC;QACD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,aAAa;gBACd,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;gBACvB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBACjC,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC1C,MAAK;YAET,KAAK,cAAc;gBACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;oBACxC,UAAU,EAAE,WAAW,CAAC;wBACpB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACL,OAAO;4BACP,UAAU;yBACb;qBACJ,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;gBACF,MAAK;YAET,KAAK,aAAa;gBACd,MAAM,CAAC,WAAW,EAAE,CAAA;gBACpB,MAAK;YACT,KAAK,YAAY;gBACb,MAAM,CAAC,UAAU,EAAE,CAAA;gBACnB,MAAK;YAET,KAAK,cAAc;gBACf,MAAM,CAAC,YAAY,EAAE,CAAA;gBACrB,UAAU,EAAE,KAAK,EAAE,CAAA;gBACnB,MAAK;QACb,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,UAAU,EAAE,WAAW,CAAC;YACpB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC1D,CAAC,CAAA;IACN,CAAC;AACL,CAAC,CAAC,CAAA"}
@@ -1,73 +0,0 @@
1
- import { handleLslError, InfoHandle, InletHandle } from '@neurodevs/ndx-native';
2
- import { freePointer } from 'ffi-rs';
3
- import { OnDataCallback } from '../../LslStreamInlet.js';
4
- import { CreateInletPayload } from './LslStreamInlet.worker.js';
5
- export default class StreamInletWorker {
6
- static lsl: import("@neurodevs/ndx-native").Liblsl;
7
- static handleLslError: typeof handleLslError;
8
- static freePointer: typeof freePointer;
9
- private sourceId;
10
- private chunkSize;
11
- private maxBufferedMs;
12
- private openStreamTimeoutMs;
13
- private waitAfterOpenStreamMs;
14
- private waitBetweenPullsMs;
15
- private pullTimeoutMs;
16
- private flushInletOnStop;
17
- private pullMethod;
18
- protected infoHandle: InfoHandle;
19
- protected inletHandle: InletHandle;
20
- private channelCount;
21
- private sampleBuffer;
22
- private sampleBufferRef;
23
- private sampleBufferPtr;
24
- private timestampBuffer;
25
- private timestampBufferRef;
26
- private timestampBufferPtr;
27
- private pullErrorBuffer;
28
- private pullErrorBufferRef;
29
- private pullErrorBufferPtr;
30
- private openStreamErrorBuffer;
31
- private openStreamErrorBufferRef;
32
- private openStreamErrorBufferPtr;
33
- private onData;
34
- private readonly bytesPerFloat;
35
- private readonly bytesPerDouble;
36
- private readonly bytesPerI32;
37
- private isRunning;
38
- createInlet(payload: CreateInletPayload): Promise<void>;
39
- private resolveInfoHandle;
40
- private resolveByProp;
41
- private throwNoStreamFound;
42
- private warnMultipleStreamsFound;
43
- private doCreateInlet;
44
- private getChannelCount;
45
- private allocateWritableBuffers;
46
- private allocateDataBuffer;
47
- private allocateTimestampBuffer;
48
- private allocatePullErrorBuffer;
49
- private allocateOpenStreamErrorBuffer;
50
- private setPullMethod;
51
- private pullSample;
52
- private doPullsample;
53
- private readSamplesFromBuffer;
54
- private pullChunk;
55
- private doPullChunk;
56
- private readTimestampsFromBuffer;
57
- private openStream;
58
- private waitForSetup;
59
- startPulling(onData: OnDataCallback): void;
60
- private pullLoop;
61
- private pullDataOnce;
62
- private handleLslErrorIfPresent;
63
- private waitBetweenPulls;
64
- flushInlet(): void;
65
- stopPulling(): void;
66
- private closeStream;
67
- destroyInlet(): void;
68
- private doDestroyInlet;
69
- private freeNativePointers;
70
- private get lsl();
71
- private get handleLslError();
72
- private get freePointer();
73
- }