@neurodevs/node-lsl 17.1.1 → 18.1.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 (198) hide show
  1. package/.claude/settings.local.json +10 -0
  2. package/.vscode/launch.json +54 -57
  3. package/.vscode/settings.json +61 -66
  4. package/.vscode/tasks.json +98 -129
  5. package/README.md +20 -44
  6. package/build/__tests__/AbstractPackageTest.d.ts +7 -5
  7. package/build/__tests__/AbstractPackageTest.js +22 -15
  8. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  9. package/build/__tests__/impl/BleDeviceController.test.d.ts +54 -0
  10. package/build/__tests__/impl/BleDeviceController.test.js +333 -0
  11. package/build/__tests__/impl/BleDeviceController.test.js.map +1 -0
  12. package/build/__tests__/impl/LslEventMarkerEmitter.test.d.ts +34 -0
  13. package/build/__tests__/impl/LslEventMarkerEmitter.test.js +243 -0
  14. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -0
  15. package/build/__tests__/impl/LslStreamInfo.test.d.ts +0 -3
  16. package/build/__tests__/impl/LslStreamInfo.test.js +2 -27
  17. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
  18. package/build/__tests__/impl/LslStreamInlet.test.d.ts +20 -8
  19. package/build/__tests__/impl/LslStreamInlet.test.js +224 -69
  20. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  21. package/build/__tests__/impl/LslStreamOutlet.test.d.ts +3 -7
  22. package/build/__tests__/impl/LslStreamOutlet.test.js +40 -50
  23. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  24. package/build/__tests__/impl/LslWebSocketBridge.test.js +19 -20
  25. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  26. package/build/assertions.d.ts +1 -1
  27. package/build/assertions.js.map +1 -1
  28. package/build/impl/LslEventMarkerEmitter.d.ts +35 -0
  29. package/build/impl/LslEventMarkerEmitter.js +86 -0
  30. package/build/impl/LslEventMarkerEmitter.js.map +1 -0
  31. package/build/impl/LslStreamInfo.d.ts +4 -8
  32. package/build/impl/LslStreamInfo.js +8 -21
  33. package/build/impl/LslStreamInfo.js.map +1 -1
  34. package/build/impl/LslStreamInlet.d.ts +31 -50
  35. package/build/impl/LslStreamInlet.js +79 -149
  36. package/build/impl/LslStreamInlet.js.map +1 -1
  37. package/build/impl/LslStreamOutlet.d.ts +15 -18
  38. package/build/impl/LslStreamOutlet.js +39 -47
  39. package/build/impl/LslStreamOutlet.js.map +1 -1
  40. package/build/impl/LslWebSocketBridge.d.ts +4 -5
  41. package/build/impl/LslWebSocketBridge.js +10 -10
  42. package/build/impl/LslWebSocketBridge.js.map +1 -1
  43. package/build/impl/controllers/BleDeviceController.d.ts +58 -0
  44. package/build/impl/controllers/BleDeviceController.js +145 -0
  45. package/build/impl/controllers/BleDeviceController.js.map +1 -0
  46. package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +22 -0
  47. package/build/impl/workers/inlet/LslStreamInlet.worker.js +42 -0
  48. package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +1 -0
  49. package/build/impl/workers/inlet/StreamInletWorker.d.ts +73 -0
  50. package/build/impl/workers/inlet/StreamInletWorker.js +253 -0
  51. package/build/impl/workers/inlet/StreamInletWorker.js.map +1 -0
  52. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +32 -0
  53. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +82 -0
  54. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +1 -0
  55. package/build/index.d.ts +14 -14
  56. package/build/index.js +16 -16
  57. package/build/index.js.map +1 -1
  58. package/build/scripts/discoverMuse.js +40 -0
  59. package/build/scripts/discoverMuse.js.map +1 -0
  60. package/build/scripts/finalizeHandles.d.ts +2 -0
  61. package/build/scripts/finalizeHandles.js +48 -0
  62. package/build/scripts/finalizeHandles.js.map +1 -0
  63. package/build/scripts/runLslEventMarkerEmitter.d.ts +1 -0
  64. package/build/scripts/runLslEventMarkerEmitter.js +11 -0
  65. package/build/scripts/runLslEventMarkerEmitter.js.map +1 -0
  66. package/build/scripts/runMuse.d.ts +1 -0
  67. package/build/scripts/runMuse.js +40 -0
  68. package/build/scripts/runMuse.js.map +1 -0
  69. package/build/scripts/runOutletToInlet.js +7 -6
  70. package/build/scripts/runOutletToInlet.js.map +1 -1
  71. package/build/scripts/testDestroyOutlet.d.ts +1 -0
  72. package/build/scripts/testDestroyOutlet.js +4 -0
  73. package/build/scripts/testDestroyOutlet.js.map +1 -0
  74. package/build/testDoubles/BleController/FakeBleController.d.ts +24 -0
  75. package/build/testDoubles/BleController/FakeBleController.js +42 -0
  76. package/build/testDoubles/BleController/FakeBleController.js.map +1 -0
  77. package/build/testDoubles/BleController/SpyBleController.d.ts +14 -0
  78. package/build/testDoubles/BleController/SpyBleController.js +48 -0
  79. package/build/testDoubles/BleController/SpyBleController.js.map +1 -0
  80. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.d.ts +17 -0
  81. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js +30 -0
  82. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +1 -0
  83. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +10 -0
  84. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +23 -0
  85. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +1 -0
  86. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +9 -0
  87. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js +19 -0
  88. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +1 -0
  89. package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +3 -3
  90. package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -3
  91. package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
  92. package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +8 -10
  93. package/build/testDoubles/StreamInlet/FakeStreamInlet.js +6 -7
  94. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -1
  95. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +2 -5
  96. package/build/testDoubles/StreamInlet/SpyStreamInlet.js +2 -8
  97. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -1
  98. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.d.ts +7 -9
  99. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +8 -8
  100. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -1
  101. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +1 -1
  102. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js +1 -1
  103. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +1 -1
  104. package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +27 -0
  105. package/build/testDoubles/WorkerThreads/FakeWorker.js +67 -0
  106. package/build/testDoubles/WorkerThreads/FakeWorker.js.map +1 -0
  107. package/build/testDoubles/generateRandomOutletOptions.js +1 -1
  108. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  109. package/build/validations.js +0 -2
  110. package/build/validations.js.map +1 -1
  111. package/eslint.config.js +3 -0
  112. package/package.json +27 -49
  113. package/prettier.config.js +3 -0
  114. package/src/__tests__/AbstractPackageTest.ts +38 -21
  115. package/src/__tests__/impl/BleDeviceController.test.ts +492 -0
  116. package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +323 -0
  117. package/src/__tests__/impl/LslStreamInfo.test.ts +3 -40
  118. package/src/__tests__/impl/LslStreamInlet.test.ts +344 -97
  119. package/src/__tests__/impl/LslStreamOutlet.test.ts +65 -73
  120. package/src/__tests__/impl/LslWebSocketBridge.test.ts +22 -21
  121. package/src/assertions.ts +2 -1
  122. package/src/impl/LslEventMarkerEmitter.ts +133 -0
  123. package/src/impl/LslStreamInfo.ts +17 -29
  124. package/src/impl/LslStreamInlet.ts +102 -215
  125. package/src/impl/LslStreamOutlet.ts +54 -78
  126. package/src/impl/LslWebSocketBridge.ts +14 -14
  127. package/src/impl/controllers/BleDeviceController.ts +223 -0
  128. package/src/impl/workers/inlet/LslStreamInlet.worker.ts +74 -0
  129. package/src/impl/workers/inlet/StreamInletWorker.ts +348 -0
  130. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +144 -0
  131. package/src/index.ts +16 -16
  132. package/src/scripts/discoverMuse.ts +50 -0
  133. package/src/scripts/finalizeHandles.ts +63 -0
  134. package/src/scripts/runLslEventMarkerEmitter.ts +15 -0
  135. package/src/scripts/runMuse.ts +50 -0
  136. package/src/scripts/runOutletToInlet.ts +10 -8
  137. package/src/scripts/testDestroyOutlet.ts +5 -0
  138. package/src/testDoubles/BleController/FakeBleController.ts +70 -0
  139. package/src/testDoubles/BleController/SpyBleController.ts +61 -0
  140. package/src/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.ts +46 -0
  141. package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +31 -0
  142. package/src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts +29 -0
  143. package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +4 -4
  144. package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +11 -17
  145. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +3 -16
  146. package/src/testDoubles/StreamOutlet/FakeStreamOutlet.ts +15 -15
  147. package/src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts +1 -1
  148. package/src/testDoubles/WorkerThreads/FakeWorker.ts +99 -0
  149. package/src/testDoubles/generateRandomOutletOptions.ts +2 -1
  150. package/src/validations.ts +0 -2
  151. package/tsconfig.json +23 -27
  152. package/build/.spruce/settings.json +0 -11
  153. package/build/__tests__/impl/LiblslAdapter.test.d.ts +0 -79
  154. package/build/__tests__/impl/LiblslAdapter.test.js +0 -688
  155. package/build/__tests__/impl/LiblslAdapter.test.js.map +0 -1
  156. package/build/__tests__/impl/LslEventMarkerOutlet.test.d.ts +0 -21
  157. package/build/__tests__/impl/LslEventMarkerOutlet.test.js +0 -160
  158. package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +0 -1
  159. package/build/handleError.d.ts +0 -8
  160. package/build/handleError.js +0 -25
  161. package/build/handleError.js.map +0 -1
  162. package/build/impl/LiblslAdapter.d.ts +0 -154
  163. package/build/impl/LiblslAdapter.js +0 -317
  164. package/build/impl/LiblslAdapter.js.map +0 -1
  165. package/build/impl/LslEventMarkerOutlet.d.ts +0 -28
  166. package/build/impl/LslEventMarkerOutlet.js +0 -63
  167. package/build/impl/LslEventMarkerOutlet.js.map +0 -1
  168. package/build/scripts/runLslEventMarkerOutlet.js +0 -18
  169. package/build/scripts/runLslEventMarkerOutlet.js.map +0 -1
  170. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.d.ts +0 -13
  171. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +0 -26
  172. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +0 -1
  173. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.d.ts +0 -17
  174. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +0 -46
  175. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +0 -1
  176. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +0 -9
  177. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +0 -19
  178. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +0 -1
  179. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +0 -9
  180. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js +0 -19
  181. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +0 -1
  182. package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +0 -50
  183. package/build/testDoubles/Liblsl/FakeLiblsl.js +0 -126
  184. package/build/testDoubles/Liblsl/FakeLiblsl.js.map +0 -1
  185. package/eslint.config.mjs +0 -3
  186. package/src/.spruce/settings.json +0 -11
  187. package/src/__tests__/impl/LiblslAdapter.test.ts +0 -817
  188. package/src/__tests__/impl/LslEventMarkerOutlet.test.ts +0 -195
  189. package/src/handleError.ts +0 -24
  190. package/src/impl/LiblslAdapter.ts +0 -543
  191. package/src/impl/LslEventMarkerOutlet.ts +0 -97
  192. package/src/scripts/runLslEventMarkerOutlet.ts +0 -23
  193. package/src/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.ts +0 -36
  194. package/src/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.ts +0 -75
  195. package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +0 -24
  196. package/src/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.ts +0 -28
  197. package/src/testDoubles/Liblsl/FakeLiblsl.ts +0 -182
  198. /package/build/scripts/{runLslEventMarkerOutlet.d.ts → discoverMuse.d.ts} +0 -0
@@ -0,0 +1,23 @@
1
+ import LslEventMarkerEmitter from '../../impl/LslEventMarkerEmitter.js';
2
+ export default class SpyEventMarkerEmitter extends LslEventMarkerEmitter {
3
+ static shouldCallWaitOnSuper = false;
4
+ totalwaitAfterMs;
5
+ constructor(outlet) {
6
+ super(outlet);
7
+ this.totalwaitAfterMs = 0;
8
+ }
9
+ async wait(waitAfterMs) {
10
+ this.totalwaitAfterMs += waitAfterMs;
11
+ if (SpyEventMarkerEmitter.shouldCallWaitOnSuper) {
12
+ return super.wait(waitAfterMs);
13
+ }
14
+ return Promise.resolve();
15
+ }
16
+ getStreamOutlet() {
17
+ return this.outlet;
18
+ }
19
+ resetTestDouble() {
20
+ this.totalwaitAfterMs = 0;
21
+ }
22
+ }
23
+ //# sourceMappingURL=SpyEventMarkerEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpyEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,qCAAqC,CAAA;AAGvE,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,qBAAqB;IAC7D,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAA;IAEpC,gBAAgB,CAAQ;IAE/B,YAAmB,MAAoB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEb,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC7B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAmB;QACjC,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAA;QAEpC,IAAI,qBAAqB,CAAC,qBAAqB,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { EventMarkerEmitter, EventMarkerOptions, TimedEventMarker } from '../../impl/LslEventMarkerEmitter.js';
2
+ export default class ThrowingEventMarkerEmitter implements EventMarkerEmitter {
3
+ private errorMsg;
4
+ constructor();
5
+ emit(_markerName: string, _options?: EventMarkerOptions): Promise<void>;
6
+ emitMany(_markers: TimedEventMarker[]): Promise<void>;
7
+ interrupt(): void;
8
+ destroy(): void;
9
+ }
@@ -0,0 +1,19 @@
1
+ export default class ThrowingEventMarkerEmitter {
2
+ errorMsg = 'Intentional throwing: ';
3
+ constructor() {
4
+ throw new Error(this.errorMsg + 'constructor');
5
+ }
6
+ async emit(_markerName, _options) {
7
+ throw new Error(this.errorMsg + 'emit');
8
+ }
9
+ async emitMany(_markers) {
10
+ throw new Error(this.errorMsg + 'emitMany');
11
+ }
12
+ interrupt() {
13
+ throw new Error(this.errorMsg + 'interrupt');
14
+ }
15
+ destroy() {
16
+ throw new Error(this.errorMsg + 'destroy');
17
+ }
18
+ }
19
+ //# sourceMappingURL=ThrowingEventMarkerEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThrowingEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,0BAA0B;IACnC,QAAQ,GAAG,wBAAwB,CAAA;IAE3C;QACI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAmB,EAAE,QAA6B;QAChE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;IAC3C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAA4B;QAC9C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAA;IAC/C,CAAC;IAEM,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAA;IAChD,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IAC9C,CAAC;CACJ"}
@@ -1,9 +1,9 @@
1
- import { BoundStreamInfo } from 'impl/LiblslAdapter.js';
1
+ import { InfoHandle } from '@neurodevs/ndx-native';
2
2
  import { StreamInfo, StreamInfoOptions } from '../../impl/LslStreamInfo.js';
3
3
  export default class FakeStreamInfo implements StreamInfo {
4
4
  static callsToConstructor: (StreamInfoOptions | undefined)[];
5
5
  static numCallsToDestroy: number;
6
- static boundInfo: BoundStreamInfo;
6
+ static infoHandle: InfoHandle;
7
7
  name: string;
8
8
  type: string;
9
9
  sourceId: string;
@@ -14,6 +14,6 @@ export default class FakeStreamInfo implements StreamInfo {
14
14
  constructor(options?: StreamInfoOptions);
15
15
  destroy(): void;
16
16
  get channelCount(): number;
17
- get boundInfo(): BoundStreamInfo;
17
+ get infoHandle(): InfoHandle;
18
18
  static resetTestDouble(): void;
19
19
  }
@@ -2,7 +2,7 @@ import generateId from '@neurodevs/generate-id';
2
2
  export default class FakeStreamInfo {
3
3
  static callsToConstructor = [];
4
4
  static numCallsToDestroy = 0;
5
- static boundInfo = {};
5
+ static infoHandle = {};
6
6
  name = generateId();
7
7
  type = generateId();
8
8
  sourceId = generateId();
@@ -19,8 +19,8 @@ export default class FakeStreamInfo {
19
19
  get channelCount() {
20
20
  return this.channelNames.length;
21
21
  }
22
- get boundInfo() {
23
- return FakeStreamInfo.boundInfo;
22
+ get infoHandle() {
23
+ return FakeStreamInfo.infoHandle;
24
24
  }
25
25
  static resetTestDouble() {
26
26
  FakeStreamInfo.callsToConstructor = [];
@@ -1 +1 @@
1
- {"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAsC,EAAE,CAAA;IACjE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,SAAS,GAAG,EAAqB,CAAA;IAExC,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,QAAQ,GAAG,UAAU,EAAE,CAAA;IACvB,YAAY,GAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,aAAa,GAAG,SAAkB,CAAA;IAClC,YAAY,GAAG,CAAC,CAAA;IAChB,KAAK,GAAG,KAAK,CAAA;IAEpB,YAAmB,OAA2B;QAC1C,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAEM,OAAO;QACV,cAAc,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,cAAc,CAAC,SAAS,CAAA;IACnC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,cAAc,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACtC,cAAc,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACxC,CAAC"}
1
+ {"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAsC,EAAE,CAAA;IACjE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,UAAU,GAAG,EAAgB,CAAA;IAEpC,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,QAAQ,GAAG,UAAU,EAAE,CAAA;IACvB,YAAY,GAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,aAAa,GAAG,SAAkB,CAAA;IAClC,YAAY,GAAG,CAAC,CAAA;IAChB,KAAK,GAAG,KAAK,CAAA;IAEpB,YAAmB,OAA2B;QAC1C,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAEM,OAAO;QACV,cAAc,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,cAAc,CAAC,UAAU,CAAA;IACpC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,cAAc,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACtC,cAAc,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACxC,CAAC"}
@@ -1,21 +1,19 @@
1
- import { StreamInfo } from '../../impl/LslStreamInfo.js';
2
- import { StreamInlet, StreamInletConstructorOptions } from '../../impl/LslStreamInlet.js';
1
+ import { OnDataCallback, StreamInlet, StreamInletOptions } from '../../impl/LslStreamInlet.js';
3
2
  export default class FakeStreamInlet implements StreamInlet {
4
3
  static callsToConstructor: {
5
- info?: StreamInfo;
6
- options?: StreamInletConstructorOptions;
7
- onData?: (samples: Float32Array, timestamps: Float64Array) => void;
4
+ options?: StreamInletOptions;
5
+ onData?: OnDataCallback;
8
6
  }[];
9
7
  static numCallsToStartPulling: number;
10
8
  static numCallsToStopPulling: number;
11
- static numCallsToFlushQueue: number;
9
+ static numCallsToFlushInlet: number;
12
10
  static numCallsToDestroy: number;
13
11
  isRunning: boolean;
14
- protected onData: (samples: Float32Array, timestamps: Float64Array) => void;
15
- constructor(info?: StreamInfo, options?: StreamInletConstructorOptions, onData?: (samples: Float32Array, timestamps: Float64Array) => void);
16
- startPulling(): void;
12
+ protected onData: OnDataCallback;
13
+ constructor(options?: StreamInletOptions, onData?: OnDataCallback);
14
+ startPulling(): Promise<void>;
17
15
  stopPulling(): void;
18
- flushQueue(): void;
16
+ flushInlet(): void;
19
17
  destroy(): void;
20
18
  static resetTestDouble(): void;
21
19
  }
@@ -2,19 +2,18 @@ export default class FakeStreamInlet {
2
2
  static callsToConstructor = [];
3
3
  static numCallsToStartPulling = 0;
4
4
  static numCallsToStopPulling = 0;
5
- static numCallsToFlushQueue = 0;
5
+ static numCallsToFlushInlet = 0;
6
6
  static numCallsToDestroy = 0;
7
7
  isRunning = false;
8
8
  onData;
9
- constructor(info, options, onData) {
9
+ constructor(options, onData) {
10
10
  this.onData = onData ?? (() => { });
11
11
  FakeStreamInlet.callsToConstructor.push({
12
- info,
13
12
  options,
14
13
  onData: this.onData,
15
14
  });
16
15
  }
17
- startPulling() {
16
+ async startPulling() {
18
17
  FakeStreamInlet.numCallsToStartPulling++;
19
18
  this.isRunning = true;
20
19
  }
@@ -22,8 +21,8 @@ export default class FakeStreamInlet {
22
21
  FakeStreamInlet.numCallsToStopPulling++;
23
22
  this.isRunning = false;
24
23
  }
25
- flushQueue() {
26
- FakeStreamInlet.numCallsToFlushQueue++;
24
+ flushInlet() {
25
+ FakeStreamInlet.numCallsToFlushInlet++;
27
26
  }
28
27
  destroy() {
29
28
  FakeStreamInlet.numCallsToDestroy++;
@@ -31,7 +30,7 @@ export default class FakeStreamInlet {
31
30
  static resetTestDouble() {
32
31
  FakeStreamInlet.callsToConstructor = [];
33
32
  FakeStreamInlet.numCallsToStartPulling = 0;
34
- FakeStreamInlet.numCallsToFlushQueue = 0;
33
+ FakeStreamInlet.numCallsToFlushInlet = 0;
35
34
  FakeStreamInlet.numCallsToDestroy = 0;
36
35
  }
37
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FakeStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/FakeStreamInlet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,GAI1B,EAAE,CAAA;IAED,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAA;IAChC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,SAAS,GAAG,KAAK,CAAA;IAEd,MAAM,CAA4D;IAE5E,YACI,IAAiB,EACjB,OAAuC,EACvC,MAAkE;QAElE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAElC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACpC,IAAI;YACJ,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;IACN,CAAC;IAEM,YAAY;QACf,eAAe,CAAC,sBAAsB,EAAE,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,CAAC;IAEM,WAAW;QACd,eAAe,CAAC,qBAAqB,EAAE,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAEM,UAAU;QACb,eAAe,CAAC,oBAAoB,EAAE,CAAA;IAC1C,CAAC;IAEM,OAAO;QACV,eAAe,CAAC,iBAAiB,EAAE,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,eAAe,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACvC,eAAe,CAAC,sBAAsB,GAAG,CAAC,CAAA;QAC1C,eAAe,CAAC,oBAAoB,GAAG,CAAC,CAAA;QACxC,eAAe,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACzC,CAAC"}
1
+ {"version":3,"file":"FakeStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/FakeStreamInlet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAA;IAChC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,SAAS,GAAG,KAAK,CAAA;IAEd,MAAM,CAAiB;IAEjC,YAAmB,OAA4B,EAAE,MAAuB;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAElC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACpC,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,eAAe,CAAC,sBAAsB,EAAE,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,CAAC;IAEM,WAAW;QACd,eAAe,CAAC,qBAAqB,EAAE,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAEM,UAAU;QACb,eAAe,CAAC,oBAAoB,EAAE,CAAA;IAC1C,CAAC;IAEM,OAAO;QACV,eAAe,CAAC,iBAAiB,EAAE,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,eAAe,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACvC,eAAe,CAAC,sBAAsB,GAAG,CAAC,CAAA;QAC1C,eAAe,CAAC,oBAAoB,GAAG,CAAC,CAAA;QACxC,eAAe,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACzC,CAAC"}
@@ -1,7 +1,4 @@
1
- import { StreamInfo } from '../../impl/LslStreamInfo.js';
2
- import LslStreamInlet, { OnDataCallback, StreamInletConstructorOptions } from '../../impl/LslStreamInlet.js';
1
+ import LslStreamInlet, { OnDataCallback, StreamInletOptions } from '../../impl/LslStreamInlet.js';
3
2
  export declare class SpyStreamInlet extends LslStreamInlet {
4
- constructor(info: StreamInfo, options: StreamInletConstructorOptions, onData: OnDataCallback);
5
- getStreamInfo(): StreamInfo;
6
- getBoundInlet(): import("../../index.js").BoundInlet;
3
+ constructor(options: StreamInletOptions, onData: OnDataCallback);
7
4
  }
@@ -1,13 +1,7 @@
1
1
  import LslStreamInlet from '../../impl/LslStreamInlet.js';
2
2
  export class SpyStreamInlet extends LslStreamInlet {
3
- constructor(info, options, onData) {
4
- super(info, options, onData);
5
- }
6
- getStreamInfo() {
7
- return this.info;
8
- }
9
- getBoundInlet() {
10
- return this.inlet;
3
+ constructor(options, onData) {
4
+ super(options, onData);
11
5
  }
12
6
  }
13
7
  //# sourceMappingURL=SpyStreamInlet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"AACA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YACI,IAAgB,EAChB,OAAsC,EACtC,MAAsB;QAEtB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;CACJ"}
1
+ {"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YAAmB,OAA2B,EAAE,MAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,CAAC;CACJ"}
@@ -1,18 +1,16 @@
1
- import { LslSample } from 'impl/LiblslAdapter.js';
2
- import { StreamInfo } from '../../impl/LslStreamInfo.js';
1
+ import { LslSample } from '@neurodevs/ndx-native';
3
2
  import { StreamOutlet, StreamOutletOptions } from '../../impl/LslStreamOutlet.js';
4
3
  export default class FakeStreamOutlet implements StreamOutlet {
5
- static callsToConstructor: {
6
- info?: StreamInfo;
7
- options?: StreamOutletOptions;
4
+ static callsToConstructor: (StreamOutletOptions | undefined)[];
5
+ static callsToPushSample: {
6
+ sample: LslSample;
7
+ timestampSec?: number;
8
8
  }[];
9
- static callsToPushSample: LslSample[];
10
9
  static numCallsToDestroy: number;
11
- info: StreamInfo;
12
10
  options?: StreamOutletOptions;
13
- constructor(info?: StreamInfo, options?: StreamOutletOptions);
11
+ constructor(options?: StreamOutletOptions);
14
12
  destroy(): void;
15
- pushSample(sample: LslSample): void;
13
+ pushSample(sample: LslSample, timestampSec?: number): void;
16
14
  get name(): string;
17
15
  get type(): string;
18
16
  get sourceId(): string;
@@ -1,22 +1,22 @@
1
- import { randomInt } from 'crypto';
1
+ import { randomInt } from 'node:crypto';
2
2
  import generateId from '@neurodevs/generate-id';
3
- import FakeStreamInfo from '../StreamInfo/FakeStreamInfo.js';
4
3
  export default class FakeStreamOutlet {
5
4
  static callsToConstructor = [];
6
5
  static callsToPushSample = [];
7
6
  static numCallsToDestroy = 0;
8
- info;
9
7
  options;
10
- constructor(info, options) {
11
- FakeStreamOutlet.callsToConstructor.push({ info, options });
12
- this.info = info ?? new FakeStreamInfo();
8
+ constructor(options) {
9
+ FakeStreamOutlet.callsToConstructor.push(options);
13
10
  this.options = options;
14
11
  }
15
12
  destroy() {
16
13
  FakeStreamOutlet.numCallsToDestroy++;
17
14
  }
18
- pushSample(sample) {
19
- FakeStreamOutlet.callsToPushSample.push(sample);
15
+ pushSample(sample, timestampSec) {
16
+ FakeStreamOutlet.callsToPushSample.push({
17
+ sample,
18
+ timestampSec,
19
+ });
20
20
  }
21
21
  get name() {
22
22
  return this.options?.name ?? generateId();
@@ -1 +1 @@
1
- {"version":3,"file":"FakeStreamOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamOutlet/FakeStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAQ/C,OAAO,cAAc,MAAM,iCAAiC,CAAA;AAE5D,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAC1B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,iBAAiB,GAAgB,EAAE,CAAA;IAC1C,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,IAAI,CAAY;IAChB,OAAO,CAAsB;IAEpC,YAAmB,IAAiB,EAAE,OAA6B;QAC/D,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAE3D,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,cAAc,EAAE,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,gBAAgB,CAAC,iBAAiB,EAAE,CAAA;IACxC,CAAC;IAEM,UAAU,CAAC,MAAiB;QAC/B,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAA;IACjD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IACnD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,CAAA;IACrD,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACxC,gBAAgB,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACvC,gBAAgB,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC1C,CAAC"}
1
+ {"version":3,"file":"FakeStreamOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamOutlet/FakeStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAQ/C,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAC1B,MAAM,CAAC,kBAAkB,GAAwC,EAAE,CAAA;IAEnE,MAAM,CAAC,iBAAiB,GAGzB,EAAE,CAAA;IAED,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,OAAO,CAAsB;IAEpC,YAAmB,OAA6B;QAC5C,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,gBAAgB,CAAC,iBAAiB,EAAE,CAAA;IACxC,CAAC;IAEM,UAAU,CAAC,MAAiB,EAAE,YAAqB;QACtD,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACpC,MAAM;YACN,YAAY;SACf,CAAC,CAAA;IACN,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAA;IACjD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IACnD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,CAAA;IACrD,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACxC,gBAAgB,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACvC,gBAAgB,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC1C,CAAC"}
@@ -5,7 +5,7 @@ export default class FakeWebSocketBridge implements WebSocketBridge {
5
5
  static numCallsToDeactivate: number;
6
6
  static numCallsToDestroy: number;
7
7
  constructor(options?: WebSocketBridgeConstructorOptions);
8
- activate(): void;
8
+ activate(): Promise<void>;
9
9
  deactivate(): void;
10
10
  destroy(): void;
11
11
  static resetTestDouble(): void;
@@ -9,7 +9,7 @@ export default class FakeWebSocketBridge {
9
9
  constructor(options) {
10
10
  FakeWebSocketBridge.callsToConstructor.push(options);
11
11
  }
12
- activate() {
12
+ async activate() {
13
13
  FakeWebSocketBridge.numCallsToActivate++;
14
14
  }
15
15
  deactivate() {
@@ -1 +1 @@
1
- {"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,QAAQ;QACX,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;IAC5C,CAAC;IAEM,UAAU;QACb,mBAAmB,CAAC,oBAAoB,EAAE,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAC3C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,kBAAkB,CAAC,GAAG;YAClB,mBAAwD,CAAA;QAC5D,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC"}
1
+ {"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;IAC5C,CAAC;IAEM,UAAU;QACb,mBAAmB,CAAC,oBAAoB,EAAE,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAC3C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,kBAAkB,CAAC,GAAG;YAClB,mBAAwD,CAAA;QAC5D,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { WorkerOptions } from 'node:worker_threads';
2
+ import { OnDataCallback } from '../../impl/LslStreamInlet.js';
3
+ import StreamInletWorker from '../../impl/workers/inlet/StreamInletWorker.js';
4
+ export default class FakeWorker {
5
+ static callsToConstructor: {
6
+ filename: string | URL;
7
+ options?: WorkerOptions;
8
+ }[];
9
+ static callsToPostMessage: WorkerMessage[];
10
+ static callsToOn: {
11
+ type: string;
12
+ listener: (...args: unknown[]) => void;
13
+ }[];
14
+ static inletWorker: StreamInletWorker;
15
+ static fakeOnData: OnDataCallback;
16
+ createInletPromise?: Promise<void>;
17
+ constructor(filename: string | URL, options?: WorkerOptions);
18
+ postMessage(msg: WorkerMessage): void;
19
+ on(type: string, listener: (...args: unknown[]) => void): void;
20
+ private get inletWorker();
21
+ private get fakeOnData();
22
+ static resetTestDoubles(): void;
23
+ }
24
+ export interface WorkerMessage {
25
+ type: string;
26
+ payload?: Record<string, unknown>[];
27
+ }
@@ -0,0 +1,67 @@
1
+ import StreamInletWorker from '../../impl/workers/inlet/StreamInletWorker.js';
2
+ import { createOutlet, destroyOutlet, pushSample, } from '../../impl/workers/outlet/LslStreamOutlet.worker.js';
3
+ export default class FakeWorker {
4
+ static callsToConstructor = [];
5
+ static callsToPostMessage = [];
6
+ static callsToOn = [];
7
+ static inletWorker = new StreamInletWorker();
8
+ static fakeOnData;
9
+ createInletPromise;
10
+ constructor(filename, options) {
11
+ FakeWorker.callsToConstructor.push({ filename, options });
12
+ }
13
+ postMessage(msg) {
14
+ FakeWorker.callsToPostMessage.push(msg);
15
+ const { type } = msg;
16
+ switch (type) {
17
+ case 'createOutlet': {
18
+ createOutlet(msg);
19
+ break;
20
+ }
21
+ case 'pushSample': {
22
+ pushSample(msg);
23
+ break;
24
+ }
25
+ case 'destroyOutlet': {
26
+ destroyOutlet();
27
+ break;
28
+ }
29
+ case 'createInlet': {
30
+ const { payload } = msg;
31
+ this.createInletPromise = this.inletWorker.createInlet(payload);
32
+ break;
33
+ }
34
+ case 'startPulling': {
35
+ this.inletWorker.startPulling(this.fakeOnData);
36
+ break;
37
+ }
38
+ case 'flushInlet': {
39
+ this.inletWorker.flushInlet();
40
+ break;
41
+ }
42
+ case 'stopPulling': {
43
+ this.inletWorker.stopPulling();
44
+ break;
45
+ }
46
+ case 'destroyInlet': {
47
+ this.inletWorker.destroyInlet();
48
+ break;
49
+ }
50
+ }
51
+ }
52
+ on(type, listener) {
53
+ FakeWorker.callsToOn.push({ type, listener });
54
+ }
55
+ get inletWorker() {
56
+ return FakeWorker.inletWorker;
57
+ }
58
+ get fakeOnData() {
59
+ return FakeWorker.fakeOnData;
60
+ }
61
+ static resetTestDoubles() {
62
+ this.callsToConstructor = [];
63
+ this.callsToPostMessage = [];
64
+ this.callsToOn = [];
65
+ }
66
+ }
67
+ //# sourceMappingURL=FakeWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeWorker.js","sourceRoot":"","sources":["../../../src/testDoubles/WorkerThreads/FakeWorker.ts"],"names":[],"mappings":"AAGA,OAAO,iBAAiB,MAAM,+CAA+C,CAAA;AAC7E,OAAO,EACH,YAAY,EACZ,aAAa,EACb,UAAU,GACb,MAAM,qDAAqD,CAAA;AAE5D,MAAM,CAAC,OAAO,OAAO,UAAU;IACpB,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAoB,EAAE,CAAA;IAE/C,MAAM,CAAC,SAAS,GAGjB,EAAE,CAAA;IAED,MAAM,CAAC,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;IAC5C,MAAM,CAAC,UAAU,CAAgB;IAEjC,kBAAkB,CAAgB;IAEzC,YAAmB,QAAsB,EAAE,OAAuB;QAC9D,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7D,CAAC;IAEM,WAAW,CAAC,GAAkB;QACjC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvC,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;QAEpB,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,YAAY,CAAC,GAAU,CAAC,CAAA;gBACxB,MAAK;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,UAAU,CAAC,GAAU,CAAC,CAAA;gBACtB,MAAK;YACT,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACnB,aAAa,EAAE,CAAA;gBACf,MAAK;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;gBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAClD,OAAc,CACjB,CAAA;gBACD,MAAK;YACT,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC9C,MAAK;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;gBAC7B,MAAK;YACT,CAAC;YACD,KAAK,aAAa,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAA;gBAC9B,MAAK;YACT,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;gBAC/B,MAAK;YACT,CAAC;QACL,CAAC;IACL,CAAC;IAEM,EAAE,CAAC,IAAY,EAAE,QAAsC;QAC1D,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,UAAU,CAAC,WAAW,CAAA;IACjC,CAAC;IAED,IAAY,UAAU;QAClB,OAAO,UAAU,CAAC,UAAU,CAAA;IAChC,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC1B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;IACvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { randomInt } from 'crypto';
1
+ import { randomInt } from 'node:crypto';
2
2
  import generateId from '@neurodevs/generate-id';
3
3
  import { TEST_SUPPORTED_CHANNEL_FORMATS } from './consts.js';
4
4
  export default function generateRandomOutletOptions() {
@@ -1 +1 @@
1
- {"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,UAAU,EAAE;QAClB,IAAI,EAAE,UAAU,EAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAChC,aAAa,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,UAAU,EAAE;QACtB,YAAY,EAAE,UAAU,EAAE;QAC1B,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KACX,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAG/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,CAAC,OAAO,UAAU,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,SAAS,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,UAAU,EAAE;QAClB,IAAI,EAAE,UAAU,EAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5D,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAChC,aAAa,EAAE,8BAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,UAAU,EAAE;QACtB,YAAY,EAAE,UAAU,EAAE;QAC1B,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,aAAa,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KACX,CAAA;AAC5B,CAAC"}
@@ -5,11 +5,9 @@ export function isGreaterThanOrEqualToZero(value) {
5
5
  return value >= 0;
6
6
  }
7
7
  export function isPositiveInteger(value) {
8
- //@ts-ignore
9
8
  return Number.isInteger(value) && value > 0;
10
9
  }
11
10
  export function isPositiveIntegerOrZero(value) {
12
- //@ts-ignore
13
11
  return Number.isInteger(value) && value >= 0;
14
12
  }
15
13
  //# sourceMappingURL=validations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAwB;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACpD,OAAO,KAAK,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,YAAY;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACjD,YAAY;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAwB;IACnE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACpD,OAAO,KAAK,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACjD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import eslintConfigNdx from '@neurodevs/eslint-config-ndx'
2
+
3
+ export default eslintConfigNdx
package/package.json CHANGED
@@ -1,15 +1,20 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "17.1.1",
3
+ "version": "18.1.0",
4
4
  "description": "Lab Streaming Layer (LSL) bindings for Node",
5
5
  "type": "module",
6
6
  "keywords": [
7
7
  "nodejs",
8
8
  "typescript",
9
- "tdd"
9
+ "tdd",
10
+ "lsl",
11
+ "lab streaming layer",
12
+ "neurotech",
13
+ "bci",
14
+ "brain-computer interface"
10
15
  ],
11
16
  "license": "MIT",
12
- "author": "Eric Yates <hello@ericthecurious.com>",
17
+ "author": "Eric Yates <hello@ericyates.me>",
13
18
  "homepage": "https://github.com/neurodevs/node-lsl",
14
19
  "repository": {
15
20
  "type": "git",
@@ -20,10 +25,9 @@
20
25
  },
21
26
  "main": "build/index.js",
22
27
  "scripts": {
23
- "build.ci": "yarn run build.tsc && yarn run build.resolve-paths && yarn run lint",
24
- "build.dev": "yarn run build.tsc --sourceMap ; yarn run resolve-paths.lint",
28
+ "build.ci": "yarn run build.tsc && yarn run lint",
29
+ "build.dev": "yarn run build.tsc --sourceMap ; yarn run fix.lint ; prettier --write . --log-level warn",
25
30
  "build.copy-files": "mkdir -p build && rsync -avzq --exclude='*.ts' ./src/ ./build/",
26
- "build.resolve-paths": "resolve-path-aliases --target build --patterns '**/*.js,**/*.d.ts'",
27
31
  "build.tsc": "yarn run build.copy-files && tsc",
28
32
  "clean": "yarn run clean.build",
29
33
  "clean.all": "yarn run clean.dependencies && yarn run clean.build",
@@ -31,64 +35,38 @@
31
35
  "clean.dependencies": "rm -rf node_modules/ package-lock.json yarn.lock",
32
36
  "fix.lint": "eslint --fix --cache '**/*.ts'",
33
37
  "lint": "eslint --cache '**/*.ts'",
34
- "lint.tsc": "tsc -p . --noEmit",
35
- "post.watch.build": "yarn run build.copy-files && yarn run build.resolve-paths",
36
38
  "rebuild": "yarn run clean.all && yarn install && yarn run build.dev",
37
39
  "update.dependencies": "yarn run clean.dependencies && yarn",
38
- "resolve-paths.lint": "yarn run build.resolve-paths ; yarn run lint",
39
- "test": "jest",
40
- "watch.build.dev": "tsc-watch --sourceMap --onCompilationComplete 'yarn run post.watch.build'",
41
- "watch.lint": "concurrently 'yarn lint' \"chokidar 'src/**/*' -c 'yarn lint.tsc'\"",
42
- "watch.rebuild": "yarn run clean.all && yarn install && yarn run watch.build.dev",
43
- "watch.tsc": "tsc -w",
44
- "test.rs": "node build/test.js"
40
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest",
41
+ "watch.build.dev": "tsc-watch --sourceMap --onCompilationComplete 'yarn run build.copy-files'"
45
42
  },
46
43
  "dependencies": {
47
- "@neurodevs/generate-id": "^1.0.9",
44
+ "@neurodevs/generate-id": "^1.1.2",
45
+ "@neurodevs/ndx-native": "^7.0.1",
48
46
  "ffi-rs": "^1.3.1",
49
- "node-gyp": "^12.1.0",
50
- "ref-array-napi": "^1.2.2",
51
- "ref-napi": "^3.0.3",
52
47
  "ws": "^8.18.3"
53
48
  },
54
49
  "devDependencies": {
55
- "@neurodevs/node-tdd": "^0.2.3",
56
- "@types/ffi-napi": "^4.0.10",
57
- "@types/node": "^25.0.2",
50
+ "@neurodevs/eslint-config-ndx": "^1.0.2",
51
+ "@neurodevs/node-tdd": "^3.0.1",
52
+ "@neurodevs/prettier-config-ndx": "^1.0.2",
58
53
  "@types/ws": "^8.18.1",
59
- "chokidar-cli": "^3.0.0",
60
- "concurrently": "^9.2.1",
61
- "eslint": "^9.39.2",
62
- "eslint-config-spruce": "^11.2.26",
63
- "jest": "^30.2.0",
64
- "jest-circus": "^30.2.0",
65
- "prettier": "^3.7.4",
66
- "ts-node": "^10.9.2",
67
- "tsc-watch": "^7.2.0",
54
+ "prettier": "^3.8.3",
68
55
  "typescript": "^5.9.3"
69
56
  },
57
+ "resolutions": {
58
+ "glob": "^13.0.0"
59
+ },
70
60
  "jest": {
71
- "testRunner": "jest-circus/runner",
72
- "maxWorkers": 4,
73
- "testTimeout": 120000,
74
61
  "testEnvironment": "node",
75
- "testPathIgnorePatterns": [
76
- "<rootDir>/tmp/",
77
- "<rootDir>/src/",
78
- "<rootDir>/node_modules/",
79
- "<rootDir>/build/__tests__/testDirsAndFiles/"
80
- ],
62
+ "testRunner": "jest-circus/runner",
81
63
  "testMatch": [
82
- "**/__tests__/**/*.test.js?(x)"
64
+ "<rootDir>/build/__tests__/**/*.test.js?(x)"
83
65
  ],
84
- "moduleNameMapper": {
85
- "^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
86
- }
87
- },
88
- "skill": {
89
- "namespace": "node-lsl",
90
- "upgradeIgnoreList": [
91
- "@sprucelabs/spruce-test-fixtures"
66
+ "testTimeout": 5000,
67
+ "maxWorkers": 4,
68
+ "reporters": [
69
+ "default"
92
70
  ]
93
71
  }
94
72
  }
@@ -0,0 +1,3 @@
1
+ import prettierConfigNdx from '@neurodevs/prettier-config-ndx'
2
+
3
+ export default prettierConfigNdx