@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
@@ -0,0 +1,172 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { randomInt } from 'node:crypto';
8
+ import { test, assert } from '@neurodevs/node-tdd';
9
+ import WindowedClockRegressor from '../../impl/clocks/WindowedClockRegressor.js';
10
+ import AbstractPackageTest from '../AbstractPackageTest.js';
11
+ export default class WindowedClockRegressorTest extends AbstractPackageTest {
12
+ static instance;
13
+ static chunkSize = randomInt(10, 20);
14
+ static nominalHz = 50 + Math.random() * 50;
15
+ static deviceTime = Math.random();
16
+ static earliestLslTime = Math.random();
17
+ static async beforeEach() {
18
+ await super.beforeEach();
19
+ this.instance = this.WindowedClockRegressor();
20
+ }
21
+ static async createsInstance() {
22
+ assert.isTruthy(this.instance, 'Failed to create instance!');
23
+ }
24
+ static async deriveReturnsChunkSizeEntries() {
25
+ const timestamps = this.deriveTimestamps();
26
+ assert.isEqual(timestamps.length, this.chunkSize, 'Should return an array with chunkSize entries!');
27
+ }
28
+ static async deriveAnchorsLastTimestampOnRegressionLine() {
29
+ const nominalChunkStep = this.chunkSize / this.nominalHz;
30
+ let deviceTime = this.deviceTime;
31
+ let lslTime = this.earliestLslTime;
32
+ for (let i = 0; i < 100; i++) {
33
+ deviceTime += nominalChunkStep;
34
+ lslTime += nominalChunkStep;
35
+ this.deriveTimestamps(deviceTime, lslTime);
36
+ }
37
+ deviceTime += nominalChunkStep;
38
+ lslTime += nominalChunkStep;
39
+ const jitter = nominalChunkStep * Math.random();
40
+ const timestamps = this.deriveTimestamps(deviceTime, lslTime + jitter);
41
+ for (let i = 0; i < timestamps.length; i++) {
42
+ const stepsFromLast = timestamps.length - 1 - i;
43
+ const expected = lslTime - stepsFromLast / this.nominalHz;
44
+ assert.isBetweenInclusive(timestamps[i], expected - jitter * 0.1, expected + jitter * 0.1, `Timestamp at index ${i} should be anchored on the fitted regression line, not the jittery arrival time!`);
45
+ }
46
+ }
47
+ static async deriveSpacesEntriesByNominalHz() {
48
+ const timestamps = this.deriveTimestamps();
49
+ const expected = Array(this.chunkSize)
50
+ .fill(0)
51
+ .map((_, i) => {
52
+ return (this.earliestLslTime -
53
+ (this.chunkSize - 1 - i) / this.nominalHz);
54
+ });
55
+ assert.isEqualDeep(timestamps, expected, 'Entries should be spaced 1/nominalHz apart, working backward from earliestLslTime!');
56
+ }
57
+ static async deriveUsesFittedSlopeOnceHistoryAccumulates() {
58
+ const trueSlope = 2;
59
+ const nominalStep = this.chunkSize / this.nominalHz;
60
+ const lslStep = nominalStep * trueSlope;
61
+ let deviceTime = this.deviceTime;
62
+ let earliestLslTime = this.earliestLslTime;
63
+ for (let i = 0; i < 50; i++) {
64
+ deviceTime += nominalStep;
65
+ earliestLslTime += lslStep;
66
+ this.deriveTimestamps(deviceTime, earliestLslTime);
67
+ }
68
+ deviceTime += nominalStep;
69
+ earliestLslTime += lslStep;
70
+ const timestamps = this.deriveTimestamps(deviceTime, earliestLslTime);
71
+ const expectedSpacing = trueSlope / this.nominalHz;
72
+ for (let i = 1; i < timestamps.length; i++) {
73
+ const actualSpacing = timestamps[i] - timestamps[i - 1];
74
+ assert.isBetweenInclusive(actualSpacing, expectedSpacing * 0.99, expectedSpacing * 1.01, `Spacing at index ${i} should reflect the fitted slope once history has accumulated!`);
75
+ }
76
+ }
77
+ static async deriveThrowsWhenDeviceTimeDoesNotIncreaseMonotonically() {
78
+ this.deriveTimestamps();
79
+ assert.doesThrow(() => this.deriveTimestamps(this.deviceTime, this.earliestLslTime + Math.random()), `\nDevice time (${this.deviceTime}) did not increase from the previous device time (${this.deviceTime})! Device time is expected to always increase between calls, so this likely indicates a bug in the calling code.\n`);
80
+ }
81
+ static async deriveForgetsHistoryOutsideWindowLenSec() {
82
+ const nominalChunkStep = this.chunkSize / this.nominalHz;
83
+ // With chunkSize in [10, 20) and nominalHz in [50, 100), nominalChunkStep
84
+ // stays within [0.1, 0.4). A fixed 700 iterations always spans at least
85
+ // 70 device-seconds — comfortably more than 2x the 30s windowLenSec.
86
+ const oldPhaseCount = 700;
87
+ const newPhaseCount = 700;
88
+ let deviceTime = this.deviceTime;
89
+ let earliestLslTime = this.earliestLslTime;
90
+ const oldSlope = 2;
91
+ for (let i = 0; i < oldPhaseCount; i++) {
92
+ deviceTime += nominalChunkStep;
93
+ earliestLslTime += nominalChunkStep * oldSlope;
94
+ this.deriveTimestamps(deviceTime, earliestLslTime);
95
+ }
96
+ const newSlope = 5;
97
+ let timestamps = [];
98
+ for (let i = 0; i < newPhaseCount; i++) {
99
+ deviceTime += nominalChunkStep;
100
+ earliestLslTime += nominalChunkStep * newSlope;
101
+ timestamps = this.deriveTimestamps(deviceTime, earliestLslTime);
102
+ }
103
+ const expectedSpacing = newSlope / this.nominalHz;
104
+ for (let i = 1; i < timestamps.length; i++) {
105
+ const actualSpacing = timestamps[i] - timestamps[i - 1];
106
+ assert.isBetweenInclusive(actualSpacing, expectedSpacing * 0.99, expectedSpacing * 1.01, `Spacing at index ${i} should reflect the new slope once old history falls outside windowLenSec!`);
107
+ }
108
+ }
109
+ static async deriveAllowsOverridingWindowLenSec() {
110
+ const nominalChunkStep = this.chunkSize / this.nominalHz;
111
+ const customWindowLenSec = 5;
112
+ // With nominalChunkStep in [0.1, 0.4), 150 iterations always spans at
113
+ // least 15 device-seconds — more than 2x the 5s customWindowLenSec,
114
+ // but well short of 2x the 30s default, so this only passes if the
115
+ // override actually takes effect.
116
+ const phaseCount = 150;
117
+ const instance = WindowedClockRegressor.Create(this.nominalHz, {
118
+ windowLenSec: customWindowLenSec,
119
+ });
120
+ let deviceTime = this.deviceTime;
121
+ let earliestLslTime = this.earliestLslTime;
122
+ const oldSlope = 2;
123
+ for (let i = 0; i < phaseCount; i++) {
124
+ deviceTime += nominalChunkStep;
125
+ earliestLslTime += nominalChunkStep * oldSlope;
126
+ instance.deriveTimestamps(deviceTime, earliestLslTime, this.chunkSize);
127
+ }
128
+ const newSlope = 5;
129
+ let timestamps = [];
130
+ for (let i = 0; i < phaseCount; i++) {
131
+ deviceTime += nominalChunkStep;
132
+ earliestLslTime += nominalChunkStep * newSlope;
133
+ timestamps = instance.deriveTimestamps(deviceTime, earliestLslTime, this.chunkSize);
134
+ }
135
+ const expectedSpacing = newSlope / this.nominalHz;
136
+ for (let i = 1; i < timestamps.length; i++) {
137
+ const actualSpacing = timestamps[i] - timestamps[i - 1];
138
+ assert.isBetweenInclusive(actualSpacing, expectedSpacing * 0.99, expectedSpacing * 1.01, `Spacing at index ${i} should reflect the new slope once old history falls outside the custom windowLenSec!`);
139
+ }
140
+ }
141
+ static deriveTimestamps(deviceTime = this.deviceTime, earliestLslTime = this.earliestLslTime) {
142
+ return this.instance.deriveTimestamps(deviceTime, earliestLslTime, this.chunkSize);
143
+ }
144
+ static WindowedClockRegressor() {
145
+ return WindowedClockRegressor.Create(this.nominalHz);
146
+ }
147
+ }
148
+ __decorate([
149
+ test()
150
+ ], WindowedClockRegressorTest, "createsInstance", null);
151
+ __decorate([
152
+ test()
153
+ ], WindowedClockRegressorTest, "deriveReturnsChunkSizeEntries", null);
154
+ __decorate([
155
+ test()
156
+ ], WindowedClockRegressorTest, "deriveAnchorsLastTimestampOnRegressionLine", null);
157
+ __decorate([
158
+ test()
159
+ ], WindowedClockRegressorTest, "deriveSpacesEntriesByNominalHz", null);
160
+ __decorate([
161
+ test()
162
+ ], WindowedClockRegressorTest, "deriveUsesFittedSlopeOnceHistoryAccumulates", null);
163
+ __decorate([
164
+ test()
165
+ ], WindowedClockRegressorTest, "deriveThrowsWhenDeviceTimeDoesNotIncreaseMonotonically", null);
166
+ __decorate([
167
+ test()
168
+ ], WindowedClockRegressorTest, "deriveForgetsHistoryOutsideWindowLenSec", null);
169
+ __decorate([
170
+ test()
171
+ ], WindowedClockRegressorTest, "deriveAllowsOverridingWindowLenSec", null);
172
+ //# sourceMappingURL=WindowedClockRegressor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowedClockRegressor.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/WindowedClockRegressor.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CHANNEL_FORMATS } from './consts.js';
1
+ import { CHANNEL_FORMATS } from '@neurodevs/ndx-native';
2
2
  import { isGreaterThanOrEqualToZero, isPositiveInteger, isPositiveIntegerOrZero, isStringInArray, } from './validations.js';
3
3
  export function assertValidChunkSize(chunkSize) {
4
4
  if (!isPositiveIntegerOrZero(chunkSize)) {
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../src/assertions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAClB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IAClD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACX,gEAAgE,SAAS,GAAG,CAC/E,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC1D,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACX,kEAAkE,aAAa,GAAG,CACrF,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAA4B;IACjE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACX,2CAA2C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,aAAa,GAAG,CACjG,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IACxD,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACX,gEAAgE,YAAY,GAAG,CAClF,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACX,2DAA2D,YAAY,GAAG,CAC7E,CAAA;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../src/assertions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EACH,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAClB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IAClD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACX,gEAAgE,SAAS,GAAG,CAC/E,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC1D,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACX,kEAAkE,aAAa,GAAG,CACrF,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,aAA4B;IACjE,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACX,2CAA2C,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,aAAa,GAAG,CACjG,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IACxD,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACX,gEAAgE,YAAY,GAAG,CAClF,CAAA;IACL,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAoB;IACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACX,2DAA2D,YAAY,GAAG,CAC7E,CAAA;IACL,CAAC;AACL,CAAC"}
@@ -1,13 +1,13 @@
1
- import { StreamOutletOptions, StreamOutlet } from './LslStreamOutlet.js';
2
- export default class LslEventMarkerEmitter implements EventMarkerEmitter {
3
- static Class?: EventMarkerEmitterConstructor;
4
- protected outlet: StreamOutlet;
1
+ import { LslOutletOptions, LslOutlet } from './LslStreamOutlet.js';
2
+ export default class LslEventMarkerEmitter implements LslEmitter {
3
+ static Class?: LslEmitterConstructor;
4
+ protected outlet: LslOutlet;
5
5
  private isRunning;
6
6
  private waitResolve?;
7
7
  private timeout?;
8
- protected constructor(outlet: StreamOutlet);
9
- static Create(options?: EventMarkerEmitterOptions): Promise<EventMarkerEmitter>;
10
- emit(markerName: string, options?: EventMarkerOptions): Promise<void>;
8
+ protected constructor(outlet: LslOutlet);
9
+ static Create(options?: LslEmitterOptions): Promise<LslEmitter>;
10
+ emit(markerName: string, options?: EmitOptions): Promise<void>;
11
11
  private throwIfAlreadyRunning;
12
12
  emitMany(markers: TimedEventMarker[]): Promise<void>;
13
13
  private pushMarkerToOutlet;
@@ -18,15 +18,15 @@ export default class LslEventMarkerEmitter implements EventMarkerEmitter {
18
18
  private static generateDefaultOutletOptions;
19
19
  private static LslStreamOutlet;
20
20
  }
21
- export interface EventMarkerEmitter {
22
- emit(markerName: string, options?: EventMarkerOptions): Promise<void>;
21
+ export interface LslEmitter {
22
+ emit(markerName: string, options?: EmitOptions): Promise<void>;
23
23
  emitMany(markers: TimedEventMarker[]): Promise<void>;
24
24
  interrupt(): void;
25
25
  destroy(): void;
26
26
  }
27
- export type EventMarkerEmitterOptions = Partial<StreamOutletOptions>;
28
- export type EventMarkerEmitterConstructor = new (outlet: StreamOutlet) => EventMarkerEmitter;
29
- export interface EventMarkerOptions {
27
+ export type LslEmitterOptions = Partial<LslOutletOptions>;
28
+ export type LslEmitterConstructor = new (outlet: LslOutlet) => LslEmitter;
29
+ export interface EmitOptions {
30
30
  waitAfterMs?: number;
31
31
  }
32
32
  export interface TimedEventMarker {
@@ -1 +1 @@
1
- {"version":3,"file":"LslEventMarkerEmitter.js","sourceRoot":"","sources":["../../src/impl/LslEventMarkerEmitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslEventMarkerEmitter.js","sourceRoot":"","sources":["../../src/impl/LslEventMarkerEmitter.ts"],"names":[],"mappings":"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"}
@@ -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,48 +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 lsl: import("@neurodevs/ndx-native").Liblsl;
7
+ static handleLslError: typeof handleLslError;
8
+ static freePointer: typeof freePointer;
9
+ isRunning: boolean;
6
10
  private sourceId;
7
11
  private chunkSize;
8
12
  private maxBufferedMs;
9
13
  private pullTimeoutMs;
10
14
  private openStreamTimeoutMs;
11
- private waitAfterOpenStreamMs;
12
15
  private waitBetweenPullsMs;
13
16
  private flushInletOnStop;
14
17
  private onData;
15
- private worker;
16
- 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;
17
34
  private readonly sixMinutesInMs;
18
35
  private readonly aboutOneYearInMs;
19
- isRunning: boolean;
20
- protected constructor(options: StreamInletOptions, onData: OnDataCallback);
21
- static Create(options: StreamInletOptions, onData: OnDataCallback): Promise<StreamInlet>;
22
- 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>;
23
41
  startPulling(): Promise<void>;
24
- private postCreate;
25
- private postStartPulling;
26
- 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;
27
66
  flushInlet(): void;
67
+ stopPulling(): void;
68
+ private closeStream;
28
69
  destroy(): void;
29
- private get defaultWaitMs();
30
- private get Worker();
70
+ private doDestroyInlet;
71
+ private freeNativePointers;
72
+ private get lsl();
73
+ private get handleLslError();
74
+ private get freePointer();
31
75
  }
32
- export interface StreamInlet {
76
+ export interface LslInlet {
33
77
  startPulling(): Promise<void>;
34
78
  stopPulling(): void;
35
79
  flushInlet(): void;
36
80
  destroy(): void;
37
81
  readonly isRunning: boolean;
38
82
  }
39
- export type StreamInletConstructor = new (options: StreamInletOptions, onData: OnDataCallback) => StreamInlet;
40
- export interface StreamInletOptions {
83
+ export type LslInletConstructor = new (options: LslInletOptions, onData: OnDataCallback) => LslInlet;
84
+ export interface LslInletOptions {
41
85
  sourceId: string;
42
86
  chunkSize: number;
43
87
  maxBufferedMs?: number;
44
88
  openStreamTimeoutMs?: number;
45
- waitAfterOpenStreamMs?: number;
46
89
  pullTimeoutMs?: number;
47
90
  waitBetweenPullsMs?: number;
48
91
  flushInletOnStop?: boolean;