@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
@@ -1,40 +1,34 @@
1
- import { StreamInfo } from '../../impl/LslStreamInfo.js'
2
1
  import {
2
+ OnDataCallback,
3
3
  StreamInlet,
4
- StreamInletConstructorOptions,
4
+ StreamInletOptions,
5
5
  } from '../../impl/LslStreamInlet.js'
6
6
 
7
7
  export default class FakeStreamInlet implements StreamInlet {
8
8
  public static callsToConstructor: {
9
- info?: StreamInfo
10
- options?: StreamInletConstructorOptions
11
- onData?: (samples: Float32Array, timestamps: Float64Array) => void
9
+ options?: StreamInletOptions
10
+ onData?: OnDataCallback
12
11
  }[] = []
13
12
 
14
13
  public static numCallsToStartPulling = 0
15
14
  public static numCallsToStopPulling = 0
16
- public static numCallsToFlushQueue = 0
15
+ public static numCallsToFlushInlet = 0
17
16
  public static numCallsToDestroy = 0
18
17
 
19
18
  public isRunning = false
20
19
 
21
- protected onData!: (samples: Float32Array, timestamps: Float64Array) => void
20
+ protected onData!: OnDataCallback
22
21
 
23
- public constructor(
24
- info?: StreamInfo,
25
- options?: StreamInletConstructorOptions,
26
- onData?: (samples: Float32Array, timestamps: Float64Array) => void
27
- ) {
22
+ public constructor(options?: StreamInletOptions, onData?: OnDataCallback) {
28
23
  this.onData = onData ?? (() => {})
29
24
 
30
25
  FakeStreamInlet.callsToConstructor.push({
31
- info,
32
26
  options,
33
27
  onData: this.onData,
34
28
  })
35
29
  }
36
30
 
37
- public startPulling() {
31
+ public async startPulling() {
38
32
  FakeStreamInlet.numCallsToStartPulling++
39
33
  this.isRunning = true
40
34
  }
@@ -44,8 +38,8 @@ export default class FakeStreamInlet implements StreamInlet {
44
38
  this.isRunning = false
45
39
  }
46
40
 
47
- public flushQueue() {
48
- FakeStreamInlet.numCallsToFlushQueue++
41
+ public flushInlet() {
42
+ FakeStreamInlet.numCallsToFlushInlet++
49
43
  }
50
44
 
51
45
  public destroy() {
@@ -55,7 +49,7 @@ export default class FakeStreamInlet implements StreamInlet {
55
49
  public static resetTestDouble() {
56
50
  FakeStreamInlet.callsToConstructor = []
57
51
  FakeStreamInlet.numCallsToStartPulling = 0
58
- FakeStreamInlet.numCallsToFlushQueue = 0
52
+ FakeStreamInlet.numCallsToFlushInlet = 0
59
53
  FakeStreamInlet.numCallsToDestroy = 0
60
54
  }
61
55
  }
@@ -1,23 +1,10 @@
1
- import { StreamInfo } from '../../impl/LslStreamInfo.js'
2
1
  import LslStreamInlet, {
3
2
  OnDataCallback,
4
- StreamInletConstructorOptions,
3
+ StreamInletOptions,
5
4
  } from '../../impl/LslStreamInlet.js'
6
5
 
7
6
  export class SpyStreamInlet extends LslStreamInlet {
8
- public constructor(
9
- info: StreamInfo,
10
- options: StreamInletConstructorOptions,
11
- onData: OnDataCallback
12
- ) {
13
- super(info, options, onData)
14
- }
15
-
16
- public getStreamInfo() {
17
- return this.info
18
- }
19
-
20
- public getBoundInlet() {
21
- return this.inlet
7
+ public constructor(options: StreamInletOptions, onData: OnDataCallback) {
8
+ super(options, onData)
22
9
  }
23
10
  }
@@ -1,30 +1,27 @@
1
- import { randomInt } from 'crypto'
1
+ import { randomInt } from 'node:crypto'
2
+
2
3
  import generateId from '@neurodevs/generate-id'
4
+ import { LslSample } from '@neurodevs/ndx-native'
3
5
 
4
- import { LslSample } from 'impl/LiblslAdapter.js'
5
- import { StreamInfo } from '../../impl/LslStreamInfo.js'
6
6
  import {
7
7
  StreamOutlet,
8
8
  StreamOutletOptions,
9
9
  } from '../../impl/LslStreamOutlet.js'
10
- import FakeStreamInfo from '../StreamInfo/FakeStreamInfo.js'
11
10
 
12
11
  export default class FakeStreamOutlet implements StreamOutlet {
13
- public static callsToConstructor: {
14
- info?: StreamInfo
15
- options?: StreamOutletOptions
12
+ public static callsToConstructor: (StreamOutletOptions | undefined)[] = []
13
+
14
+ public static callsToPushSample: {
15
+ sample: LslSample
16
+ timestampSec?: number
16
17
  }[] = []
17
18
 
18
- public static callsToPushSample: LslSample[] = []
19
19
  public static numCallsToDestroy = 0
20
20
 
21
- public info: StreamInfo
22
21
  public options?: StreamOutletOptions
23
22
 
24
- public constructor(info?: StreamInfo, options?: StreamOutletOptions) {
25
- FakeStreamOutlet.callsToConstructor.push({ info, options })
26
-
27
- this.info = info ?? new FakeStreamInfo()
23
+ public constructor(options?: StreamOutletOptions) {
24
+ FakeStreamOutlet.callsToConstructor.push(options)
28
25
  this.options = options
29
26
  }
30
27
 
@@ -32,8 +29,11 @@ export default class FakeStreamOutlet implements StreamOutlet {
32
29
  FakeStreamOutlet.numCallsToDestroy++
33
30
  }
34
31
 
35
- public pushSample(sample: LslSample) {
36
- FakeStreamOutlet.callsToPushSample.push(sample)
32
+ public pushSample(sample: LslSample, timestampSec?: number) {
33
+ FakeStreamOutlet.callsToPushSample.push({
34
+ sample,
35
+ timestampSec,
36
+ })
37
37
  }
38
38
 
39
39
  public get name() {
@@ -20,7 +20,7 @@ export default class FakeWebSocketBridge implements WebSocketBridge {
20
20
  FakeWebSocketBridge.callsToConstructor.push(options)
21
21
  }
22
22
 
23
- public activate() {
23
+ public async activate() {
24
24
  FakeWebSocketBridge.numCallsToActivate++
25
25
  }
26
26
 
@@ -0,0 +1,99 @@
1
+ import { WorkerOptions } from 'node:worker_threads'
2
+
3
+ import { OnDataCallback } from '../../impl/LslStreamInlet.js'
4
+ import StreamInletWorker from '../../impl/workers/inlet/StreamInletWorker.js'
5
+ import {
6
+ createOutlet,
7
+ destroyOutlet,
8
+ pushSample,
9
+ } from '../../impl/workers/outlet/LslStreamOutlet.worker.js'
10
+
11
+ export default class FakeWorker {
12
+ public static callsToConstructor: {
13
+ filename: string | URL
14
+ options?: WorkerOptions
15
+ }[] = []
16
+
17
+ public static callsToPostMessage: WorkerMessage[] = []
18
+
19
+ public static callsToOn: {
20
+ type: string
21
+ listener: (...args: unknown[]) => void
22
+ }[] = []
23
+
24
+ public static inletWorker = new StreamInletWorker()
25
+ public static fakeOnData: OnDataCallback
26
+
27
+ public createInletPromise?: Promise<void>
28
+
29
+ public constructor(filename: string | URL, options?: WorkerOptions) {
30
+ FakeWorker.callsToConstructor.push({ filename, options })
31
+ }
32
+
33
+ public postMessage(msg: WorkerMessage) {
34
+ FakeWorker.callsToPostMessage.push(msg)
35
+
36
+ const { type } = msg
37
+
38
+ switch (type) {
39
+ case 'createOutlet': {
40
+ createOutlet(msg as any)
41
+ break
42
+ }
43
+ case 'pushSample': {
44
+ pushSample(msg as any)
45
+ break
46
+ }
47
+ case 'destroyOutlet': {
48
+ destroyOutlet()
49
+ break
50
+ }
51
+ case 'createInlet': {
52
+ const { payload } = msg
53
+ this.createInletPromise = this.inletWorker.createInlet(
54
+ payload as any
55
+ )
56
+ break
57
+ }
58
+ case 'startPulling': {
59
+ this.inletWorker.startPulling(this.fakeOnData)
60
+ break
61
+ }
62
+ case 'flushInlet': {
63
+ this.inletWorker.flushInlet()
64
+ break
65
+ }
66
+ case 'stopPulling': {
67
+ this.inletWorker.stopPulling()
68
+ break
69
+ }
70
+ case 'destroyInlet': {
71
+ this.inletWorker.destroyInlet()
72
+ break
73
+ }
74
+ }
75
+ }
76
+
77
+ public on(type: string, listener: (...args: unknown[]) => void) {
78
+ FakeWorker.callsToOn.push({ type, listener })
79
+ }
80
+
81
+ private get inletWorker() {
82
+ return FakeWorker.inletWorker
83
+ }
84
+
85
+ private get fakeOnData() {
86
+ return FakeWorker.fakeOnData
87
+ }
88
+
89
+ public static resetTestDoubles() {
90
+ this.callsToConstructor = []
91
+ this.callsToPostMessage = []
92
+ this.callsToOn = []
93
+ }
94
+ }
95
+
96
+ export interface WorkerMessage {
97
+ type: string
98
+ payload?: Record<string, unknown>[]
99
+ }
@@ -1,4 +1,5 @@
1
- import { randomInt } from 'crypto'
1
+ import { randomInt } from 'node:crypto'
2
+
2
3
  import generateId from '@neurodevs/generate-id'
3
4
 
4
5
  import { StreamOutletOptions } from '../impl/LslStreamOutlet.js'
@@ -7,11 +7,9 @@ export function isGreaterThanOrEqualToZero(value: number) {
7
7
  }
8
8
 
9
9
  export function isPositiveInteger(value: number) {
10
- //@ts-ignore
11
10
  return Number.isInteger(value) && value > 0
12
11
  }
13
12
 
14
13
  export function isPositiveIntegerOrZero(value: number) {
15
- //@ts-ignore
16
14
  return Number.isInteger(value) && value >= 0
17
15
  }
package/tsconfig.json CHANGED
@@ -1,28 +1,24 @@
1
1
  {
2
- "compilerOptions": {
3
- "module": "nodenext",
4
- "moduleResolution": "nodenext",
5
- "target": "ES2022",
6
- "lib": ["ES2022"],
7
- "types": ["node"],
8
- "baseUrl": "src",
9
- "outDir": "build",
10
- "sourceMap": false,
11
- "strict": true,
12
- "noImplicitAny": true,
13
- "noImplicitReturns": true,
14
- "noUnusedLocals": true,
15
- "forceConsistentCasingInFileNames": true,
16
- "declaration": true,
17
- "skipLibCheck": true,
18
- "esModuleInterop": true,
19
- "moduleDetection": "force",
20
- "allowJs": true,
21
- "resolveJsonModule": true,
22
- "experimentalDecorators": true
23
- },
24
- "include": [
25
- "./src/*.ts",
26
- "./src/**/*.ts"
27
- ]
28
- }
2
+ "compilerOptions": {
3
+ "module": "nodenext",
4
+ "target": "esnext",
5
+ "lib": ["esnext"],
6
+ "types": ["node"],
7
+ "rootDir": "src",
8
+ "outDir": "build",
9
+ "sourceMap": false,
10
+ "strict": true,
11
+ "noImplicitAny": true,
12
+ "noImplicitReturns": true,
13
+ "noUnusedLocals": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "declaration": true,
16
+ "skipLibCheck": true,
17
+ "esModuleInterop": true,
18
+ "moduleDetection": "force",
19
+ "allowJs": true,
20
+ "resolveJsonModule": true,
21
+ "experimentalDecorators": true
22
+ },
23
+ "include": ["./src/*.ts", "./src/**/*.ts"]
24
+ }
@@ -1,11 +0,0 @@
1
- {
2
- "scriptUpdater": {
3
- "skipped": []
4
- },
5
- "skipped": [
6
- "skill"
7
- ],
8
- "installed": [
9
- "test"
10
- ]
11
- }
@@ -1,79 +0,0 @@
1
- import { FieldType, FuncObj } from 'ffi-rs';
2
- import AbstractPackageTest from '../AbstractPackageTest.js';
3
- export default class LiblslAdapterTest extends AbstractPackageTest {
4
- private static instance;
5
- private static libraryPath?;
6
- private static libraryOptions?;
7
- private static fakeBindings;
8
- private static fakeStreamInfo;
9
- private static fakeOutlet;
10
- private static fakeInlet;
11
- private static fakeDesc;
12
- private static fakeChildNamedChannels;
13
- private static createStreamInfoParams?;
14
- private static destroyStreamInfoParams?;
15
- private static appendChildParams;
16
- private static createOutletParams?;
17
- private static destroyOutletParams?;
18
- private static createInletParams?;
19
- private static flushInletParams?;
20
- private static destroyInletParams?;
21
- private static localClockParams?;
22
- private static pushSampleFloatTimestampParams?;
23
- private static pushSampleStringTimestampParams?;
24
- private static appendChildValueParams;
25
- private static shouldThrowWhenCreatingBindings;
26
- private static getDescriptionParams?;
27
- private static fakeChildNamedChannel;
28
- private static appendChildHitCount;
29
- private static ffiRsOpenOptions?;
30
- private static ffiRsDefineOptions;
31
- private static ffiRsLoadOptions?;
32
- protected static beforeEach(): Promise<void>;
33
- protected static createsInstance(): Promise<void>;
34
- protected static throwsWhenBindingsFailToLoad(): Promise<void>;
35
- protected static callsOpenOnFfiRs(): Promise<void>;
36
- protected static worksAsASingleton(): Promise<void>;
37
- protected static singletonIsTheSame(): Promise<void>;
38
- protected static canSetInstance(): void;
39
- protected static createsExpectedBindingsWithFfiRs(): Promise<void>;
40
- protected static createsStreamInfoWithRequiredParams(): Promise<void>;
41
- protected static destroysStreamInfoWithBoundInfo(): Promise<void>;
42
- protected static resolvesStreamInfoByProp(): Promise<void>;
43
- protected static resolveByPropAcceptsOptionalArgs(): Promise<void>;
44
- protected static returnsHandlesForResolvedStreamInfos(): Promise<void>;
45
- protected static createsOutletWithRequiredParams(): Promise<void>;
46
- protected static pushesFloatSample(): Promise<void>;
47
- protected static pushesStringSample(): Promise<void>;
48
- protected static addingSingleChannelGetsDescription(): Promise<void>;
49
- protected static addingMultpleChannelsAddsChildrenToChannelsChild(): Promise<void>;
50
- protected static canDestroyOutlet(): Promise<void>;
51
- protected static callingLocalClockTwiceReturnsDifferentTimestamps(): Promise<void>;
52
- protected static localClockBindingReceivesEmptyArray(): Promise<void>;
53
- protected static defaultsToMacOsPath(): Promise<void>;
54
- protected static createInletWithRequiredParams(): Promise<void>;
55
- protected static pullSampleCallsBinding(): Promise<void>;
56
- protected static pullChunkCallsBinding(): Promise<void>;
57
- protected static flushInletCallsBinding(): Promise<void>;
58
- protected static destroyInletCallsBinding(): Promise<void>;
59
- private static createRandomStreamInfo;
60
- private static resolveByProp;
61
- private static createRandomOutlet;
62
- private static createRandomOutletOptions;
63
- private static createRandomInlet;
64
- private static createRandomInletOptions;
65
- private static generateRandomChannelValues;
66
- private static generateRandomCreateStreamInfoOptions;
67
- private static readonly maxResults;
68
- private static readonly bytesPerPointer;
69
- private static readonly minResults;
70
- private static readonly timeoutMs;
71
- private static readonly prop;
72
- private static readonly value;
73
- private static readonly fakeNumResolveResults;
74
- private static readonly resultsBuffer;
75
- private static readonly resultsBufferPtr;
76
- private static generateFailedMessage;
77
- private static FakeBindings;
78
- }
79
- export type FfiRsDefineOptions = FuncObj<FieldType, boolean | undefined>;