@neurodevs/node-lsl 19.0.0 → 22.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 (227) hide show
  1. package/README.md +6 -6
  2. package/build/__tests__/AbstractPackageTest.d.ts +12 -11
  3. package/build/__tests__/AbstractPackageTest.js +32 -34
  4. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  5. package/build/__tests__/impl/{BleDeviceController.test.d.ts → BleGattController.test.d.ts} +3 -3
  6. package/build/__tests__/impl/{BleDeviceController.test.js → BleGattController.test.js} +68 -70
  7. package/build/__tests__/impl/BleGattController.test.js.map +1 -0
  8. package/build/__tests__/impl/BleObserverController.test.d.ts +12 -0
  9. package/build/__tests__/impl/BleObserverController.test.js +62 -0
  10. package/build/__tests__/impl/BleObserverController.test.js.map +1 -0
  11. package/build/__tests__/impl/{LslEventMarkerEmitter.test.d.ts → LslEventMarkerOutlet.test.d.ts} +3 -3
  12. package/build/__tests__/impl/{LslEventMarkerEmitter.test.js → LslEventMarkerOutlet.test.js} +45 -46
  13. package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
  14. package/build/__tests__/impl/LslJsonOutlet.test.d.ts +14 -0
  15. package/build/__tests__/impl/LslJsonOutlet.test.js +118 -0
  16. package/build/__tests__/impl/LslJsonOutlet.test.js.map +1 -0
  17. package/build/__tests__/impl/LslStreamInfo.test.js +2 -3
  18. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
  19. package/build/__tests__/impl/LslStreamInlet.test.d.ts +3 -5
  20. package/build/__tests__/impl/LslStreamInlet.test.js +13 -47
  21. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  22. package/build/__tests__/impl/LslStreamOutlet.test.js +7 -13
  23. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  24. package/build/__tests__/impl/LslWebSocketBridge.test.js +9 -11
  25. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  26. package/build/__tests__/impl/UsbDeviceController.test.js.map +1 -1
  27. package/build/__tests__/impl/WindowedClockRegressor.test.js +1 -1
  28. package/build/__tests__/impl/WindowedClockRegressor.test.js.map +1 -1
  29. package/build/assertions.js +1 -1
  30. package/build/assertions.js.map +1 -1
  31. package/build/impl/LslEventMarkerOutlet.d.ts +35 -0
  32. package/build/impl/{LslEventMarkerEmitter.js → LslEventMarkerOutlet.js} +2 -2
  33. package/build/impl/LslEventMarkerOutlet.js.map +1 -0
  34. package/build/impl/LslJsonOutlet.d.ts +33 -0
  35. package/build/impl/LslJsonOutlet.js +44 -0
  36. package/build/impl/LslJsonOutlet.js.map +1 -0
  37. package/build/impl/LslStreamInfo.d.ts +7 -7
  38. package/build/impl/LslStreamInfo.js.map +1 -1
  39. package/build/impl/LslStreamInlet.d.ts +63 -21
  40. package/build/impl/LslStreamInlet.js +221 -65
  41. package/build/impl/LslStreamInlet.js.map +1 -1
  42. package/build/impl/LslStreamOutlet.d.ts +16 -16
  43. package/build/impl/LslStreamOutlet.js +32 -36
  44. package/build/impl/LslStreamOutlet.js.map +1 -1
  45. package/build/impl/LslWebSocketBridge.d.ts +10 -10
  46. package/build/impl/LslWebSocketBridge.js.map +1 -1
  47. package/build/impl/clocks/WindowedClockRegressor.js.map +1 -0
  48. package/build/impl/controllers/{BleDeviceController.d.ts → BleGattController.d.ts} +10 -10
  49. package/build/impl/controllers/{BleDeviceController.js → BleGattController.js} +19 -19
  50. package/build/impl/controllers/BleGattController.js.map +1 -0
  51. package/build/impl/controllers/BleObserverController.d.ts +20 -0
  52. package/build/impl/controllers/BleObserverController.js +37 -0
  53. package/build/impl/controllers/BleObserverController.js.map +1 -0
  54. package/build/impl/controllers/UsbDeviceController.d.ts +9 -9
  55. package/build/impl/controllers/UsbDeviceController.js +7 -7
  56. package/build/impl/controllers/UsbDeviceController.js.map +1 -1
  57. package/build/index.d.ts +43 -31
  58. package/build/index.js +52 -39
  59. package/build/index.js.map +1 -1
  60. package/build/scripts/{runLslEventMarkerEmitter.js → runEventMarkerOutlet.js} +4 -3
  61. package/build/scripts/runEventMarkerOutlet.js.map +1 -0
  62. package/build/scripts/{runLslStreamOutlet.js → runLslOutlet.js} +1 -1
  63. package/build/scripts/runLslOutlet.js.map +1 -0
  64. package/build/scripts/runMuse.js +2 -2
  65. package/build/scripts/runMuse.js.map +1 -1
  66. package/build/testDoubles/{BleController/FakeBleController.d.ts → BleGatt/FakeBleGatt.d.ts} +6 -6
  67. package/build/testDoubles/{BleController/FakeBleController.js → BleGatt/FakeBleGatt.js} +8 -8
  68. package/build/testDoubles/BleGatt/FakeBleGatt.js.map +1 -0
  69. package/build/testDoubles/{BleController/SpyBleController.d.ts → BleGatt/SpyBleGatt.d.ts} +4 -4
  70. package/build/testDoubles/{BleController/SpyBleController.js → BleGatt/SpyBleGatt.js} +3 -3
  71. package/build/testDoubles/BleGatt/SpyBleGatt.js.map +1 -0
  72. package/build/testDoubles/BleObserver/FakeBleObserver.d.ts +10 -0
  73. package/build/testDoubles/BleObserver/FakeBleObserver.js +20 -0
  74. package/build/testDoubles/BleObserver/FakeBleObserver.js.map +1 -0
  75. package/build/testDoubles/ClockRegressor/FakeClockRegressor.d.ts +1 -1
  76. package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +4 -4
  77. package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.js → EventMarkerOutlet/FakeEventMarkerOutlet.js} +7 -7
  78. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
  79. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +10 -0
  80. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +23 -0
  81. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
  82. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +9 -0
  83. package/build/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +2 -2
  84. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
  85. package/build/testDoubles/JsonOutlet/FakeJsonOutlet.d.ts +10 -0
  86. package/build/testDoubles/JsonOutlet/FakeJsonOutlet.js +20 -0
  87. package/build/testDoubles/JsonOutlet/FakeJsonOutlet.js.map +1 -0
  88. package/build/testDoubles/{StreamInfo/FakeStreamInfo.d.ts → LslInfo/FakeLslInfo.d.ts} +4 -4
  89. package/build/testDoubles/{StreamInfo/FakeStreamInfo.js → LslInfo/FakeLslInfo.js} +7 -7
  90. package/build/testDoubles/LslInfo/FakeLslInfo.js.map +1 -0
  91. package/build/testDoubles/LslInfo/SpyLslInfo.d.ts +10 -0
  92. package/build/testDoubles/{StreamInfo/SpyStreamInfo.js → LslInfo/SpyLslInfo.js} +4 -4
  93. package/build/testDoubles/LslInfo/SpyLslInfo.js.map +1 -0
  94. package/build/testDoubles/{StreamInlet/FakeStreamInlet.d.ts → LslInlet/FakeLslInlet.d.ts} +4 -4
  95. package/build/testDoubles/{StreamInlet/FakeStreamInlet.js → LslInlet/FakeLslInlet.js} +12 -11
  96. package/build/testDoubles/LslInlet/FakeLslInlet.js.map +1 -0
  97. package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +4 -0
  98. package/build/testDoubles/{StreamInlet/SpyStreamInlet.js → LslInlet/SpyLslInlet.js} +2 -2
  99. package/build/testDoubles/LslInlet/SpyLslInlet.js.map +1 -0
  100. package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts} +5 -5
  101. package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.js → LslOutlet/FakeLslOutlet.js} +8 -8
  102. package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -0
  103. package/build/testDoubles/LslWsBridge/FakeLslWsBridge.d.ts +14 -0
  104. package/build/testDoubles/{WebSocketBridge/FakeWebSocketBridge.js → LslWsBridge/FakeLslWsBridge.js} +14 -14
  105. package/build/testDoubles/LslWsBridge/FakeLslWsBridge.js.map +1 -0
  106. package/build/testDoubles/LslWsBridge/SpyLslWsBridge.d.ts +4 -0
  107. package/build/testDoubles/{WebSocketBridge/SpyLslWebSocketBridge.js → LslWsBridge/SpyLslWsBridge.js} +2 -2
  108. package/build/testDoubles/LslWsBridge/SpyLslWsBridge.js.map +1 -0
  109. package/build/testDoubles/UsbDevice/FakeUsbDevice.d.ts +12 -0
  110. package/build/testDoubles/UsbDevice/FakeUsbDevice.js +25 -0
  111. package/build/testDoubles/UsbDevice/FakeUsbDevice.js.map +1 -0
  112. package/build/testDoubles/consts.d.ts +2 -12
  113. package/build/testDoubles/consts.js +0 -20
  114. package/build/testDoubles/consts.js.map +1 -1
  115. package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
  116. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  117. package/package.json +5 -4
  118. package/src/__tests__/AbstractPackageTest.ts +35 -42
  119. package/src/__tests__/impl/{BleDeviceController.test.ts → BleGattController.test.ts} +45 -47
  120. package/src/__tests__/impl/BleObserverController.test.ts +72 -0
  121. package/src/__tests__/impl/{LslEventMarkerEmitter.test.ts → LslEventMarkerOutlet.test.ts} +33 -37
  122. package/src/__tests__/impl/LslJsonOutlet.test.ts +135 -0
  123. package/src/__tests__/impl/LslStreamInfo.test.ts +8 -9
  124. package/src/__tests__/impl/LslStreamInlet.test.ts +21 -79
  125. package/src/__tests__/impl/LslStreamOutlet.test.ts +17 -25
  126. package/src/__tests__/impl/LslWebSocketBridge.test.ts +15 -19
  127. package/src/__tests__/impl/UsbDeviceController.test.ts +2 -2
  128. package/src/__tests__/impl/WindowedClockRegressor.test.ts +1 -1
  129. package/src/assertions.ts +1 -2
  130. package/src/impl/{LslEventMarkerEmitter.ts → LslEventMarkerOutlet.ts} +17 -17
  131. package/src/impl/LslJsonOutlet.ts +87 -0
  132. package/src/impl/LslStreamInfo.ts +7 -9
  133. package/src/impl/LslStreamInlet.ts +305 -81
  134. package/src/impl/LslStreamOutlet.ts +62 -59
  135. package/src/impl/LslWebSocketBridge.ts +15 -18
  136. package/src/impl/controllers/{BleDeviceController.ts → BleGattController.ts} +23 -28
  137. package/src/impl/controllers/BleObserverController.ts +62 -0
  138. package/src/impl/controllers/UsbDeviceController.ts +14 -16
  139. package/src/index.ts +64 -44
  140. package/src/scripts/{runLslEventMarkerEmitter.ts → runEventMarkerOutlet.ts} +3 -2
  141. package/src/scripts/runMuse.ts +2 -2
  142. package/src/testDoubles/{BleController/FakeBleController.ts → BleGatt/FakeBleGatt.ts} +14 -14
  143. package/src/testDoubles/{BleController/SpyBleController.ts → BleGatt/SpyBleGatt.ts} +5 -5
  144. package/src/testDoubles/BleObserver/FakeBleObserver.ts +28 -0
  145. package/src/testDoubles/ClockRegressor/FakeClockRegressor.ts +1 -1
  146. package/src/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +11 -11
  147. package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +31 -0
  148. package/src/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +5 -5
  149. package/src/testDoubles/JsonOutlet/FakeJsonOutlet.ts +25 -0
  150. package/src/testDoubles/{StreamInfo/FakeStreamInfo.ts → LslInfo/FakeLslInfo.ts} +9 -9
  151. package/src/testDoubles/{StreamInfo/SpyStreamInfo.ts → LslInfo/SpyLslInfo.ts} +5 -5
  152. package/src/testDoubles/{StreamInlet/FakeStreamInlet.ts → LslInlet/FakeLslInlet.ts} +15 -14
  153. package/src/testDoubles/LslInlet/SpyLslInlet.ts +10 -0
  154. package/src/testDoubles/{StreamOutlet/FakeStreamOutlet.ts → LslOutlet/FakeLslOutlet.ts} +11 -14
  155. package/src/testDoubles/{WebSocketBridge/FakeWebSocketBridge.ts → LslWsBridge/FakeLslWsBridge.ts} +19 -19
  156. package/src/testDoubles/LslWsBridge/SpyLslWsBridge.ts +9 -0
  157. package/src/testDoubles/UsbDevice/FakeUsbDevice.ts +34 -0
  158. package/src/testDoubles/consts.ts +3 -23
  159. package/src/testDoubles/generateRandomOutletOptions.ts +2 -2
  160. package/build/__tests__/impl/BleDeviceController.test.js.map +0 -1
  161. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +0 -1
  162. package/build/consts.d.ts +0 -11
  163. package/build/consts.js +0 -21
  164. package/build/consts.js.map +0 -1
  165. package/build/impl/LslEventMarkerEmitter.d.ts +0 -35
  166. package/build/impl/LslEventMarkerEmitter.js.map +0 -1
  167. package/build/impl/WindowedClockRegressor.js.map +0 -1
  168. package/build/impl/controllers/BleDeviceController.js.map +0 -1
  169. package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +0 -22
  170. package/build/impl/workers/inlet/LslStreamInlet.worker.js +0 -42
  171. package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +0 -1
  172. package/build/impl/workers/inlet/StreamInletWorker.d.ts +0 -73
  173. package/build/impl/workers/inlet/StreamInletWorker.js +0 -253
  174. package/build/impl/workers/inlet/StreamInletWorker.js.map +0 -1
  175. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +0 -32
  176. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +0 -82
  177. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +0 -1
  178. package/build/scripts/discoverMuse.js +0 -40
  179. package/build/scripts/discoverMuse.js.map +0 -1
  180. package/build/scripts/runLslEventMarkerEmitter.js.map +0 -1
  181. package/build/scripts/runLslStreamOutlet.d.ts +0 -1
  182. package/build/scripts/runLslStreamOutlet.js.map +0 -1
  183. package/build/scripts/testDestroyOutlet.d.ts +0 -1
  184. package/build/scripts/testDestroyOutlet.js +0 -4
  185. package/build/scripts/testDestroyOutlet.js.map +0 -1
  186. package/build/testDoubles/BleController/FakeBleController.js.map +0 -1
  187. package/build/testDoubles/BleController/SpyBleController.js.map +0 -1
  188. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +0 -1
  189. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +0 -10
  190. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +0 -23
  191. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +0 -1
  192. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +0 -9
  193. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +0 -1
  194. package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +0 -1
  195. package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +0 -10
  196. package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +0 -1
  197. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +0 -1
  198. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +0 -4
  199. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +0 -1
  200. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +0 -1
  201. package/build/testDoubles/UsbController/FakeUsbController.d.ts +0 -12
  202. package/build/testDoubles/UsbController/FakeUsbController.js +0 -25
  203. package/build/testDoubles/UsbController/FakeUsbController.js.map +0 -1
  204. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +0 -14
  205. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +0 -1
  206. package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.d.ts +0 -4
  207. package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.js.map +0 -1
  208. package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +0 -27
  209. package/build/testDoubles/WorkerThreads/FakeWorker.js +0 -67
  210. package/build/testDoubles/WorkerThreads/FakeWorker.js.map +0 -1
  211. package/src/consts.ts +0 -21
  212. package/src/impl/workers/inlet/LslStreamInlet.worker.ts +0 -74
  213. package/src/impl/workers/inlet/StreamInletWorker.ts +0 -348
  214. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +0 -144
  215. package/src/scripts/discoverMuse.ts +0 -50
  216. package/src/scripts/testDestroyOutlet.ts +0 -5
  217. package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +0 -31
  218. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +0 -10
  219. package/src/testDoubles/UsbController/FakeUsbController.ts +0 -34
  220. package/src/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.ts +0 -9
  221. package/src/testDoubles/WorkerThreads/FakeWorker.ts +0 -99
  222. /package/build/impl/{WindowedClockRegressor.d.ts → clocks/WindowedClockRegressor.d.ts} +0 -0
  223. /package/build/impl/{WindowedClockRegressor.js → clocks/WindowedClockRegressor.js} +0 -0
  224. /package/build/scripts/{discoverMuse.d.ts → runEventMarkerOutlet.d.ts} +0 -0
  225. /package/build/scripts/{runLslEventMarkerEmitter.d.ts → runLslOutlet.d.ts} +0 -0
  226. /package/src/impl/{WindowedClockRegressor.ts → clocks/WindowedClockRegressor.ts} +0 -0
  227. /package/src/scripts/{runLslStreamOutlet.ts → runLslOutlet.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { ChannelFormat, InfoHandle } from '@neurodevs/ndx-native';
2
- export default class LslStreamInfo implements StreamInfo {
3
- static Class?: StreamInfoConstructor;
2
+ export default class LslStreamInfo implements LslInfo {
3
+ static Class?: LslInfoConstructor;
4
4
  readonly name: string;
5
5
  readonly type: string;
6
6
  readonly sourceId: string;
@@ -11,14 +11,14 @@ export default class LslStreamInfo implements StreamInfo {
11
11
  readonly units: string;
12
12
  readonly infoHandle: InfoHandle;
13
13
  private lsl;
14
- protected constructor(options: StreamInfoOptions);
15
- static Create(options: StreamInfoOptions): StreamInfo;
14
+ protected constructor(options: LslInfoOptions);
15
+ static Create(options: LslInfoOptions): LslInfo;
16
16
  private createStreamInfo;
17
17
  private get lslChannelFormat();
18
18
  private appendChannelsToStreamInfo;
19
19
  destroy(): void;
20
20
  }
21
- export interface StreamInfo {
21
+ export interface LslInfo {
22
22
  destroy(): void;
23
23
  readonly name: string;
24
24
  readonly type: string;
@@ -30,8 +30,8 @@ export interface StreamInfo {
30
30
  readonly sampleRateHz: number;
31
31
  readonly infoHandle: InfoHandle;
32
32
  }
33
- export type StreamInfoConstructor = new (options: StreamInfoOptions) => StreamInfo;
34
- export interface StreamInfoOptions {
33
+ export type LslInfoConstructor = new (options: LslInfoOptions) => LslInfo;
34
+ export interface LslInfoOptions {
35
35
  channelNames: string[];
36
36
  channelFormat: ChannelFormat;
37
37
  sampleRateHz: number;
@@ -1 +1 @@
1
- {"version":3,"file":"LslStreamInfo.js","sourceRoot":"","sources":["../../src/impl/LslStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAGH,aAAa,EACb,mBAAmB,GACtB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,CAAC,OAAO,OAAO,aAAa;IACvB,MAAM,CAAC,KAAK,CAAwB;IAE3B,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACZ,QAAQ,CAAQ;IAChB,YAAY,CAAU;IACtB,YAAY,CAAQ;IACpB,aAAa,CAAe;IAC5B,YAAY,CAAQ;IACpB,KAAK,CAAQ;IAEb,UAAU,CAAY;IAE9B,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IAEzC,YAAsB,OAA0B;QAC5C,MAAM,EACF,IAAI,GAAG,mBAAmB,UAAU,EAAE,EAAE,EACxC,IAAI,GAAG,UAAU,EAAE,EACnB,QAAQ,GAAG,UAAU,EAAE,EACvB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,KAAK,GAAG,KAAK,GAChB,GAAG,OAAO,CAAA;QAEX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzC,IAAI,CAAC,0BAA0B,EAAE,CAAA;IACrC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAA0B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAEO,gBAAgB;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,gBAAgB;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC,CAAA;IACN,CAAC;IAED,IAAY,gBAAgB;QACxB,OAAO,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAEO,0BAA0B;QAC9B,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;SACN,CAAC,CAAA;IACN,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC/D,CAAC;CACJ"}
1
+ {"version":3,"file":"LslStreamInfo.js","sourceRoot":"","sources":["../../src/impl/LslStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAGH,aAAa,EACb,mBAAmB,GACtB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,CAAC,OAAO,OAAO,aAAa;IACvB,MAAM,CAAC,KAAK,CAAqB;IAExB,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACZ,QAAQ,CAAQ;IAChB,YAAY,CAAU;IACtB,YAAY,CAAQ;IACpB,aAAa,CAAe;IAC5B,YAAY,CAAQ;IACpB,KAAK,CAAQ;IAEb,UAAU,CAAY;IAE9B,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IAEzC,YAAsB,OAAuB;QACzC,MAAM,EACF,IAAI,GAAG,mBAAmB,UAAU,EAAE,EAAE,EACxC,IAAI,GAAG,UAAU,EAAE,EACnB,QAAQ,GAAG,UAAU,EAAE,EACvB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,KAAK,GAAG,KAAK,GAChB,GAAG,OAAO,CAAA;QAEX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzC,IAAI,CAAC,0BAA0B,EAAE,CAAA;IACrC,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAuB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAEO,gBAAgB;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,gBAAgB;YACpC,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC,CAAA;IACN,CAAC;IAED,IAAY,gBAAgB;QACxB,OAAO,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAClD,CAAC;IAEO,0BAA0B;QAC9B,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;gBAChD,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC;SACN,CAAC,CAAA;IACN,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC/D,CAAC;CACJ"}
@@ -1,49 +1,91 @@
1
- import { Worker } from 'node:worker_threads';
2
- export default class LslStreamInlet implements StreamInlet {
3
- static Class?: StreamInletConstructor;
4
- static Worker: typeof Worker;
1
+ import { handleLslError } from '@neurodevs/ndx-native';
2
+ import { freePointer } from 'ffi-rs';
3
+ export default class LslStreamInlet implements LslInlet {
4
+ static Class?: LslInletConstructor;
5
5
  static waitAfterOpenStreamMs: number;
6
- static setTimeout: typeof setTimeout;
6
+ static lsl: import("@neurodevs/ndx-native").Liblsl;
7
+ static handleLslError: typeof handleLslError;
8
+ static freePointer: typeof freePointer;
9
+ isRunning: boolean;
7
10
  private sourceId;
8
11
  private chunkSize;
9
12
  private maxBufferedMs;
10
13
  private pullTimeoutMs;
11
14
  private openStreamTimeoutMs;
12
- private waitAfterOpenStreamMs;
13
15
  private waitBetweenPullsMs;
14
16
  private flushInletOnStop;
15
17
  private onData;
16
- private worker;
17
- private workerReady;
18
+ private infoHandle;
19
+ private inletHandle;
20
+ private channelCount;
21
+ private pullMethod;
22
+ private sampleBuffer;
23
+ private sampleBufferRef;
24
+ private sampleBufferPtr;
25
+ private timestampBuffer;
26
+ private timestampBufferRef;
27
+ private timestampBufferPtr;
28
+ private pullErrorBuffer;
29
+ private pullErrorBufferRef;
30
+ private pullErrorBufferPtr;
31
+ private openStreamErrorBuffer;
32
+ private openStreamErrorBufferRef;
33
+ private openStreamErrorBufferPtr;
18
34
  private readonly sixMinutesInMs;
19
35
  private readonly aboutOneYearInMs;
20
- isRunning: boolean;
21
- protected constructor(options: StreamInletOptions, onData: OnDataCallback);
22
- static Create(options: StreamInletOptions, onData: OnDataCallback): Promise<StreamInlet>;
23
- private createWorkerThread;
36
+ private readonly bytesPerFloat;
37
+ private readonly bytesPerDouble;
38
+ private readonly bytesPerI32;
39
+ protected constructor(options: LslInletOptions, onData: OnDataCallback);
40
+ static Create(options: LslInletOptions, onData: OnDataCallback): Promise<LslInlet>;
24
41
  startPulling(): Promise<void>;
25
- private postCreate;
26
- private postStartPulling;
27
- stopPulling(): void;
42
+ private createInlet;
43
+ private resolveInfoHandle;
44
+ private resolveByProp;
45
+ private throwNoStreamFound;
46
+ private warnMultipleStreamsFound;
47
+ private doCreateInlet;
48
+ private getChannelCount;
49
+ private allocateWritableBuffers;
50
+ private allocateDataBuffer;
51
+ private allocateTimestampBuffer;
52
+ private allocatePullErrorBuffer;
53
+ private allocateOpenStreamErrorBuffer;
54
+ private setPullMethod;
55
+ private pullSample;
56
+ private doPullsample;
57
+ private readSamplesFromBuffer;
58
+ private pullChunk;
59
+ private doPullChunk;
60
+ private readTimestampsFromBuffer;
61
+ private openStream;
62
+ private pullLoop;
63
+ private pullDataOnce;
64
+ private handleLslErrorIfPresent;
65
+ private waitBetweenPulls;
28
66
  flushInlet(): void;
67
+ stopPulling(): void;
68
+ private closeStream;
29
69
  destroy(): void;
30
- private get defaultWaitMs();
31
- private get Worker();
70
+ private doDestroyInlet;
71
+ private freeNativePointers;
72
+ private get lsl();
73
+ private get handleLslError();
74
+ private get freePointer();
32
75
  }
33
- export interface StreamInlet {
76
+ export interface LslInlet {
34
77
  startPulling(): Promise<void>;
35
78
  stopPulling(): void;
36
79
  flushInlet(): void;
37
80
  destroy(): void;
38
81
  readonly isRunning: boolean;
39
82
  }
40
- export type StreamInletConstructor = new (options: StreamInletOptions, onData: OnDataCallback) => StreamInlet;
41
- export interface StreamInletOptions {
83
+ export type LslInletConstructor = new (options: LslInletOptions, onData: OnDataCallback) => LslInlet;
84
+ export interface LslInletOptions {
42
85
  sourceId: string;
43
86
  chunkSize: number;
44
87
  maxBufferedMs?: number;
45
88
  openStreamTimeoutMs?: number;
46
- waitAfterOpenStreamMs?: number;
47
89
  pullTimeoutMs?: number;
48
90
  waitBetweenPullsMs?: number;
49
91
  flushInletOnStop?: boolean;
@@ -1,112 +1,268 @@
1
- import { Worker } from 'node:worker_threads';
1
+ import { handleLslError, LiblslAdapter, } from '@neurodevs/ndx-native';
2
+ import { unwrapPointer, createPointer, DataType, freePointer, PointerType, } from 'ffi-rs';
2
3
  export default class LslStreamInlet {
3
4
  static Class;
4
- static Worker = Worker;
5
5
  static waitAfterOpenStreamMs = 100;
6
- static setTimeout = setTimeout;
6
+ static lsl = LiblslAdapter.getInstance();
7
+ static handleLslError = handleLslError;
8
+ static freePointer = freePointer;
9
+ isRunning = false;
7
10
  sourceId;
8
11
  chunkSize;
9
12
  maxBufferedMs;
10
13
  pullTimeoutMs;
11
14
  openStreamTimeoutMs;
12
- waitAfterOpenStreamMs;
13
15
  waitBetweenPullsMs;
14
16
  flushInletOnStop;
15
17
  onData;
16
- worker;
17
- workerReady = false;
18
+ infoHandle;
19
+ inletHandle;
20
+ channelCount;
21
+ pullMethod;
22
+ sampleBuffer;
23
+ sampleBufferRef;
24
+ sampleBufferPtr;
25
+ timestampBuffer;
26
+ timestampBufferRef;
27
+ timestampBufferPtr;
28
+ pullErrorBuffer;
29
+ pullErrorBufferRef;
30
+ pullErrorBufferPtr;
31
+ openStreamErrorBuffer;
32
+ openStreamErrorBufferRef;
33
+ openStreamErrorBufferPtr;
18
34
  sixMinutesInMs = 360 * 1000;
19
35
  aboutOneYearInMs = 32000000 * 1000;
20
- isRunning = false;
36
+ bytesPerFloat = 4;
37
+ bytesPerDouble = 8;
38
+ bytesPerI32 = 4;
21
39
  constructor(options, onData) {
22
- const { sourceId, chunkSize, maxBufferedMs, pullTimeoutMs, openStreamTimeoutMs, waitAfterOpenStreamMs, waitBetweenPullsMs, flushInletOnStop, } = options ?? {};
40
+ const { sourceId, chunkSize, maxBufferedMs, pullTimeoutMs, openStreamTimeoutMs, waitBetweenPullsMs, flushInletOnStop, } = options ?? {};
23
41
  this.sourceId = sourceId;
24
42
  this.chunkSize = chunkSize;
25
43
  this.maxBufferedMs = maxBufferedMs ?? this.sixMinutesInMs;
26
44
  this.pullTimeoutMs = pullTimeoutMs ?? 0;
27
45
  this.openStreamTimeoutMs = openStreamTimeoutMs ?? this.aboutOneYearInMs;
28
- this.waitAfterOpenStreamMs = waitAfterOpenStreamMs ?? this.defaultWaitMs;
29
46
  this.waitBetweenPullsMs = waitBetweenPullsMs ?? 1;
30
47
  this.flushInletOnStop = flushInletOnStop ?? true;
31
48
  this.onData = onData;
32
- this.createWorkerThread();
33
49
  }
34
50
  static async Create(options, onData) {
35
51
  return new (this.Class ?? this)(options, onData);
36
52
  }
37
- createWorkerThread() {
38
- this.worker = new this.Worker(new URL('./workers/inlet/LslStreamInlet.worker.js', import.meta.url));
39
- this.worker.on('message', (msg) => {
40
- const { type } = msg;
41
- switch (type) {
42
- case 'ready': {
43
- this.workerReady = true;
44
- break;
45
- }
46
- case 'data': {
47
- const { payload } = msg;
48
- const { samples, timestamps } = payload;
49
- this.onData(samples, timestamps);
50
- break;
51
- }
52
- case 'error': {
53
- const { error } = msg;
54
- throw new Error(error);
55
- }
56
- default:
57
- throw new Error(`Unknown message type: ${type}`);
58
- }
53
+ async startPulling() {
54
+ if (this.isRunning) {
55
+ console.warn('Skipping startPulling: inlet is already running!');
56
+ return;
57
+ }
58
+ this.isRunning = true;
59
+ await this.createInlet();
60
+ void this.pullLoop();
61
+ }
62
+ async createInlet() {
63
+ this.infoHandle = this.resolveInfoHandle();
64
+ this.inletHandle = this.doCreateInlet();
65
+ this.channelCount = this.getChannelCount();
66
+ this.allocateWritableBuffers();
67
+ this.setPullMethod();
68
+ this.openStream();
69
+ }
70
+ resolveInfoHandle() {
71
+ const handles = this.resolveByProp();
72
+ if (handles.length === 0) {
73
+ this.throwNoStreamFound();
74
+ }
75
+ else if (handles.length > 1) {
76
+ this.warnMultipleStreamsFound();
77
+ }
78
+ return handles[0];
79
+ }
80
+ resolveByProp() {
81
+ return this.lsl.resolveByProp({
82
+ prop: 'source_id',
83
+ value: this.sourceId,
59
84
  });
60
85
  }
61
- async startPulling() {
62
- if (!this.isRunning) {
63
- this.isRunning = true;
64
- this.postCreate();
65
- while (!this.workerReady) {
66
- await new Promise((resolve) => LslStreamInlet.setTimeout(resolve, 10));
67
- }
68
- this.postStartPulling();
86
+ throwNoStreamFound() {
87
+ throw new Error(`No stream info for sourceId "${this.sourceId}"`);
88
+ }
89
+ warnMultipleStreamsFound() {
90
+ console.warn(`Multiple stream infos for sourceId "${this.sourceId}", using the first one.`);
91
+ }
92
+ doCreateInlet() {
93
+ return this.lsl.createInlet({
94
+ infoHandle: this.infoHandle,
95
+ maxBufferedMs: this.maxBufferedMs,
96
+ });
97
+ }
98
+ getChannelCount() {
99
+ return this.lsl.getChannelCount({ infoHandle: this.infoHandle });
100
+ }
101
+ allocateWritableBuffers() {
102
+ this.allocateDataBuffer();
103
+ this.allocateTimestampBuffer();
104
+ this.allocatePullErrorBuffer();
105
+ this.allocateOpenStreamErrorBuffer();
106
+ }
107
+ allocateDataBuffer() {
108
+ this.sampleBuffer = Buffer.alloc(this.channelCount * this.chunkSize * this.bytesPerFloat);
109
+ this.sampleBufferRef = createPointer({
110
+ paramsType: [DataType.U8Array],
111
+ paramsValue: [this.sampleBuffer],
112
+ });
113
+ this.sampleBufferPtr = unwrapPointer(this.sampleBufferRef)[0];
114
+ }
115
+ allocateTimestampBuffer() {
116
+ this.timestampBuffer = Buffer.alloc(this.chunkSize * this.bytesPerDouble);
117
+ this.timestampBufferRef = createPointer({
118
+ paramsType: [DataType.U8Array],
119
+ paramsValue: [this.timestampBuffer],
120
+ });
121
+ this.timestampBufferPtr = unwrapPointer(this.timestampBufferRef)[0];
122
+ }
123
+ allocatePullErrorBuffer() {
124
+ this.pullErrorBuffer = Buffer.alloc(this.bytesPerI32);
125
+ this.pullErrorBufferRef = createPointer({
126
+ paramsType: [DataType.U8Array],
127
+ paramsValue: [this.pullErrorBuffer],
128
+ });
129
+ this.pullErrorBufferPtr = unwrapPointer(this.pullErrorBufferRef)[0];
130
+ }
131
+ allocateOpenStreamErrorBuffer() {
132
+ this.openStreamErrorBuffer = Buffer.alloc(this.bytesPerI32);
133
+ this.openStreamErrorBufferRef = createPointer({
134
+ paramsType: [DataType.U8Array],
135
+ paramsValue: [this.openStreamErrorBuffer],
136
+ });
137
+ this.openStreamErrorBufferPtr = unwrapPointer(this.openStreamErrorBufferRef)[0];
138
+ }
139
+ setPullMethod() {
140
+ this.pullMethod =
141
+ this.chunkSize === 1 ? this.pullSample : this.pullChunk;
142
+ }
143
+ pullSample = () => {
144
+ const timestampSec = this.doPullsample();
145
+ if (timestampSec > 0) {
146
+ return {
147
+ samples: this.readSamplesFromBuffer(),
148
+ timestamps: [timestampSec],
149
+ };
69
150
  }
70
- else {
71
- console.warn('Skipping startPulling: inlet is already running!');
151
+ return { samples: undefined, timestamps: undefined };
152
+ };
153
+ doPullsample() {
154
+ return this.lsl.pullSample({
155
+ inletHandle: this.inletHandle,
156
+ sampleBufferPtr: this.sampleBufferPtr,
157
+ sampleBufferElements: this.channelCount,
158
+ timeoutMs: this.pullTimeoutMs,
159
+ errorCodePtr: this.pullErrorBufferPtr,
160
+ });
161
+ }
162
+ readSamplesFromBuffer() {
163
+ const floats = new Float32Array(this.sampleBuffer.buffer, this.sampleBuffer.byteOffset, this.chunkSize * this.channelCount);
164
+ return Array.from(floats);
165
+ }
166
+ pullChunk = () => {
167
+ const firstTimestampSec = this.doPullChunk();
168
+ if (firstTimestampSec > 0) {
169
+ return {
170
+ samples: this.readSamplesFromBuffer(),
171
+ timestamps: this.readTimestampsFromBuffer(),
172
+ };
72
173
  }
174
+ return { samples: undefined, timestamps: undefined };
175
+ };
176
+ doPullChunk() {
177
+ return this.lsl.pullChunk({
178
+ inletHandle: this.inletHandle,
179
+ sampleBufferPtr: this.sampleBufferPtr,
180
+ sampleBufferElements: this.chunkSize * this.channelCount,
181
+ timestampBufferPtr: this.timestampBufferPtr,
182
+ timestampBufferElements: this.chunkSize,
183
+ timeoutMs: this.pullTimeoutMs,
184
+ errorCodePtr: this.pullErrorBufferPtr,
185
+ });
73
186
  }
74
- postCreate() {
75
- this.worker.postMessage({
76
- type: 'createInlet',
77
- payload: {
78
- sourceId: this.sourceId,
79
- chunkSize: this.chunkSize,
80
- maxBufferedMs: this.maxBufferedMs,
81
- openStreamTimeoutMs: this.openStreamTimeoutMs,
82
- waitAfterOpenStreamMs: this.waitAfterOpenStreamMs,
83
- pullTimeoutMs: this.pullTimeoutMs,
84
- waitBetweenPullsMs: this.waitBetweenPullsMs,
85
- flushInletOnStop: this.flushInletOnStop,
86
- },
187
+ readTimestampsFromBuffer() {
188
+ const doubles = new Float64Array(this.timestampBuffer.buffer, this.timestampBuffer.byteOffset, this.chunkSize);
189
+ return Array.from(doubles);
190
+ }
191
+ openStream() {
192
+ this.lsl.openStream({
193
+ inletHandle: this.inletHandle,
194
+ timeoutMs: this.openStreamTimeoutMs,
195
+ errorCodePtr: this.openStreamErrorBufferPtr,
87
196
  });
88
197
  }
89
- postStartPulling() {
90
- this.worker.postMessage({ type: 'startPulling' });
198
+ async pullLoop() {
199
+ while (this.isRunning) {
200
+ await this.pullDataOnce();
201
+ await this.waitBetweenPulls();
202
+ }
203
+ }
204
+ async pullDataOnce() {
205
+ const { samples, timestamps } = this.pullMethod();
206
+ this.handleLslErrorIfPresent();
207
+ if (samples && timestamps) {
208
+ this.onData(samples, timestamps);
209
+ }
210
+ }
211
+ handleLslErrorIfPresent() {
212
+ const errorCode = this.pullErrorBuffer.readInt32LE();
213
+ this.handleLslError(errorCode);
214
+ }
215
+ async waitBetweenPulls() {
216
+ await new Promise((r) => setTimeout(r, this.waitBetweenPullsMs));
217
+ }
218
+ flushInlet() {
219
+ this.lsl.flushInlet({ inletHandle: this.inletHandle });
91
220
  }
92
221
  stopPulling() {
93
222
  this.isRunning = false;
94
- this.worker.postMessage({ type: 'stopPulling' });
223
+ this.closeStream();
224
+ if (this.flushInletOnStop) {
225
+ this.flushInlet();
226
+ }
95
227
  }
96
- flushInlet() {
97
- this.worker.postMessage({ type: 'flushInlet' });
228
+ closeStream() {
229
+ this.lsl.closeStream({ inletHandle: this.inletHandle });
98
230
  }
99
231
  destroy() {
100
232
  if (this.isRunning) {
101
233
  this.stopPulling();
102
234
  }
103
- this.worker.postMessage({ type: 'destroyInlet' });
235
+ this.doDestroyInlet();
236
+ this.freeNativePointers();
237
+ }
238
+ doDestroyInlet() {
239
+ this.lsl.destroyInlet({ inletHandle: this.inletHandle });
240
+ }
241
+ freeNativePointers() {
242
+ this.freePointer({
243
+ paramsType: [
244
+ DataType.U8Array,
245
+ DataType.U8Array,
246
+ DataType.U8Array,
247
+ DataType.U8Array,
248
+ ],
249
+ paramsValue: [
250
+ this.openStreamErrorBufferPtr,
251
+ this.sampleBufferPtr,
252
+ this.timestampBufferPtr,
253
+ this.pullErrorBufferPtr,
254
+ ],
255
+ pointerType: PointerType.CPointer,
256
+ });
257
+ }
258
+ get lsl() {
259
+ return LslStreamInlet.lsl;
104
260
  }
105
- get defaultWaitMs() {
106
- return LslStreamInlet.waitAfterOpenStreamMs;
261
+ get handleLslError() {
262
+ return LslStreamInlet.handleLslError;
107
263
  }
108
- get Worker() {
109
- return LslStreamInlet.Worker;
264
+ get freePointer() {
265
+ return LslStreamInlet.freePointer;
110
266
  }
111
267
  }
112
268
  //# sourceMappingURL=LslStreamInlet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LslStreamInlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamInlet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslStreamInlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamInlet.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { Worker } from 'node:worker_threads';
2
- import { ChannelFormat, LslSample } from '@neurodevs/ndx-native';
3
- export default class LslStreamOutlet implements StreamOutlet {
4
- static Class?: StreamOutletConstructor;
5
- static Worker: typeof Worker;
1
+ import { ChannelFormat, LslSample, handleLslError } from '@neurodevs/ndx-native';
2
+ export default class LslStreamOutlet implements LslOutlet {
3
+ static Class?: LslOutletConstructor;
6
4
  static setTimeout: typeof setTimeout;
5
+ static lsl: import("@neurodevs/ndx-native").Liblsl;
6
+ static handleLslError: typeof handleLslError;
7
7
  readonly name: string;
8
8
  readonly type: string;
9
9
  readonly sourceId: string;
@@ -15,23 +15,24 @@ export default class LslStreamOutlet implements StreamOutlet {
15
15
  readonly maxBufferedMs: number;
16
16
  readonly manufacturer: string;
17
17
  readonly units: string;
18
- private worker;
19
- protected constructor(options: StreamOutletOptions);
20
- static Create(options: StreamOutletOptions): Promise<StreamOutlet>;
18
+ private info;
19
+ private handle;
20
+ private pushSampleToLsl;
21
+ protected constructor(options: LslOutletOptions);
22
+ static Create(options: LslOutletOptions): Promise<LslOutlet>;
21
23
  private validateOptions;
22
24
  private validateChannelFormat;
23
25
  private get isChannelFormatSupported();
24
26
  private throwUnsupportedChannelFormat;
25
- private createWorkerThread;
26
27
  private createStreamOutlet;
28
+ private get lsl();
27
29
  private get pushMethod();
28
30
  private readonly methodMap;
29
31
  pushSample(sample: LslSample, timestampSec?: number): void;
30
32
  destroy(): void;
31
- private get Worker();
32
33
  private static waitForSetup;
33
34
  }
34
- export interface StreamOutlet {
35
+ export interface LslOutlet {
35
36
  pushSample(sample: LslSample, timestampSec?: number): void;
36
37
  destroy(): void;
37
38
  readonly name: string;
@@ -46,11 +47,8 @@ export interface StreamOutlet {
46
47
  readonly maxBufferedMs: number;
47
48
  readonly manufacturer: string;
48
49
  }
49
- export type StreamOutletConstructor = new (options: StreamOutletOptions) => StreamOutlet;
50
- export interface StreamOutletOptions extends StreamOutletConstructorOptions {
51
- waitAfterConstructionMs?: number;
52
- }
53
- export interface StreamOutletConstructorOptions {
50
+ export type LslOutletConstructor = new (options: LslOutletOptions) => LslOutlet;
51
+ export interface LslOutletOptions {
54
52
  name: string;
55
53
  type: string;
56
54
  sourceId: string;
@@ -61,4 +59,6 @@ export interface StreamOutletConstructorOptions {
61
59
  maxBufferedMs?: number;
62
60
  manufacturer?: string;
63
61
  units?: string;
62
+ waitAfterConstructionMs?: number;
64
63
  }
64
+ export type LslOutletConstructorOptions = Omit<LslOutletOptions, 'waitAfterConstructionMs'>;