@neurodevs/node-lsl 11.4.1 → 12.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 (175) hide show
  1. package/.vscode/tasks.json +19 -1
  2. package/README.md +44 -34
  3. package/build/.spruce/settings.json +1 -3
  4. package/build/__tests__/{AbstractLslTest.d.ts → AbstractPackageTest.d.ts} +6 -4
  5. package/build/__tests__/AbstractPackageTest.js +58 -0
  6. package/build/__tests__/AbstractPackageTest.js.map +1 -0
  7. package/build/__tests__/{modules → impl}/LiblslAdapter.test.d.ts +5 -8
  8. package/build/__tests__/{modules → impl}/LiblslAdapter.test.js +37 -86
  9. package/build/__tests__/impl/LiblslAdapter.test.js.map +1 -0
  10. package/build/__tests__/{modules/EventMarkerOutlet.test.d.ts → impl/LslEventMarkerOutlet.test.d.ts} +5 -4
  11. package/build/__tests__/{modules/EventMarkerOutlet.test.js → impl/LslEventMarkerOutlet.test.js} +32 -25
  12. package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
  13. package/build/__tests__/{modules → impl}/LslStreamInfo.test.d.ts +3 -4
  14. package/build/__tests__/{modules → impl}/LslStreamInfo.test.js +17 -27
  15. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -0
  16. package/build/__tests__/impl/LslStreamInlet.test.d.ts +10 -0
  17. package/build/__tests__/{modules → impl}/LslStreamInlet.test.js +9 -26
  18. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -0
  19. package/build/__tests__/{modules → impl}/LslStreamOutlet.test.d.ts +9 -7
  20. package/build/__tests__/{modules → impl}/LslStreamOutlet.test.js +40 -57
  21. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -0
  22. package/build/__tests__/impl/LslWebSocketBridge.test.d.ts +7 -0
  23. package/build/__tests__/impl/LslWebSocketBridge.test.js +63 -0
  24. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -0
  25. package/build/assertions.d.ts +1 -1
  26. package/build/assertions.js +10 -31
  27. package/build/assertions.js.map +1 -1
  28. package/build/{modules → impl}/LiblslAdapter.d.ts +3 -1
  29. package/build/{modules → impl}/LiblslAdapter.js +15 -44
  30. package/build/impl/LiblslAdapter.js.map +1 -0
  31. package/build/impl/LslEventMarkerOutlet.d.ts +23 -0
  32. package/build/{modules/EventMarkerOutlet.js → impl/LslEventMarkerOutlet.js} +6 -6
  33. package/build/impl/LslEventMarkerOutlet.js.map +1 -0
  34. package/build/{modules → impl}/LslStreamInfo.js +4 -6
  35. package/build/impl/LslStreamInfo.js.map +1 -0
  36. package/build/{modules → impl}/LslStreamInlet.d.ts +8 -8
  37. package/build/{modules → impl}/LslStreamInlet.js +6 -14
  38. package/build/impl/LslStreamInlet.js.map +1 -0
  39. package/build/{modules → impl}/LslStreamOutlet.d.ts +8 -8
  40. package/build/{modules → impl}/LslStreamOutlet.js +2 -15
  41. package/build/impl/LslStreamOutlet.js.map +1 -0
  42. package/build/impl/LslWebSocketBridge.d.ts +8 -0
  43. package/build/impl/LslWebSocketBridge.js +10 -0
  44. package/build/impl/LslWebSocketBridge.js.map +1 -0
  45. package/build/index.d.ts +26 -22
  46. package/build/index.js +41 -34
  47. package/build/index.js.map +1 -1
  48. package/build/scripts/runLslEventMarkerOutlet.d.ts +1 -0
  49. package/build/scripts/runLslEventMarkerOutlet.js +23 -0
  50. package/build/scripts/runLslEventMarkerOutlet.js.map +1 -0
  51. package/build/scripts/runLslStreamOutlet.d.ts +1 -0
  52. package/build/scripts/runLslStreamOutlet.js +25 -0
  53. package/build/scripts/runLslStreamOutlet.js.map +1 -0
  54. package/build/testDoubles/{MarkerOutlet/FakeMarkerOutlet.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +2 -2
  55. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +29 -0
  56. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
  57. package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.d.ts → EventMarkerOutlet/MockEventMarkerOutlet.d.ts} +2 -2
  58. package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.js → EventMarkerOutlet/MockEventMarkerOutlet.js} +3 -3
  59. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +1 -0
  60. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +9 -0
  61. package/build/testDoubles/{MarkerOutlet/SpyMarkerOutlet.js → EventMarkerOutlet/SpyEventMarkerOutlet.js} +8 -8
  62. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
  63. package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.d.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts} +2 -2
  64. package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +3 -3
  65. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
  66. package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +1 -1
  67. package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +1 -1
  68. package/build/testDoubles/StreamInfo/SpyStreamInfo.js +1 -1
  69. package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +1 -1
  70. package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +10 -0
  71. package/build/testDoubles/StreamInlet/FakeStreamInlet.js +16 -0
  72. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -0
  73. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +7 -0
  74. package/build/testDoubles/{LslInlet/SpyLslInlet.js → StreamInlet/SpyStreamInlet.js} +5 -5
  75. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -0
  76. package/build/testDoubles/{LslOutlet/FakeLslOutlet.d.ts → StreamOutlet/FakeStreamOutlet.d.ts} +9 -10
  77. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +62 -0
  78. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -0
  79. package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.d.ts +6 -0
  80. package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js +13 -0
  81. package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js.map +1 -0
  82. package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
  83. package/build/testDoubles/generateRandomOutletOptions.js +10 -7
  84. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  85. package/build/types.d.ts +3 -3
  86. package/package.json +26 -18
  87. package/src/.spruce/settings.json +1 -3
  88. package/src/__tests__/{AbstractLslTest.ts → AbstractPackageTest.ts} +23 -17
  89. package/src/__tests__/{modules → impl}/LiblslAdapter.test.ts +36 -76
  90. package/src/__tests__/{modules/EventMarkerOutlet.test.ts → impl/LslEventMarkerOutlet.test.ts} +38 -27
  91. package/src/__tests__/{modules → impl}/LslStreamInfo.test.ts +7 -17
  92. package/src/__tests__/{modules → impl}/LslStreamInlet.test.ts +13 -30
  93. package/src/__tests__/{modules → impl}/LslStreamOutlet.test.ts +71 -63
  94. package/src/__tests__/impl/LslWebSocketBridge.test.ts +23 -0
  95. package/src/assertions.ts +19 -30
  96. package/src/{modules → impl}/LiblslAdapter.ts +18 -44
  97. package/src/{modules/EventMarkerOutlet.ts → impl/LslEventMarkerOutlet.ts} +16 -11
  98. package/src/{modules → impl}/LslStreamInfo.ts +1 -3
  99. package/src/{modules → impl}/LslStreamInlet.ts +14 -22
  100. package/src/{modules → impl}/LslStreamOutlet.ts +12 -26
  101. package/src/impl/LslWebSocketBridge.ts +13 -0
  102. package/src/index.ts +37 -29
  103. package/src/scripts/runLslEventMarkerOutlet.ts +23 -0
  104. package/src/scripts/runLslStreamOutlet.ts +22 -0
  105. package/src/testDoubles/{MarkerOutlet/FakeMarkerOutlet.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +6 -6
  106. package/src/testDoubles/{MarkerOutlet/MockMarkerOutlet.ts → EventMarkerOutlet/MockEventMarkerOutlet.ts} +2 -2
  107. package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +24 -0
  108. package/src/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +2 -2
  109. package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +1 -1
  110. package/src/testDoubles/StreamInfo/SpyStreamInfo.ts +1 -1
  111. package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +20 -0
  112. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +16 -0
  113. package/src/testDoubles/{LslOutlet/FakeLslOutlet.ts → StreamOutlet/FakeStreamOutlet.ts} +17 -18
  114. package/src/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.ts +15 -0
  115. package/src/testDoubles/generateRandomOutletOptions.ts +3 -3
  116. package/src/types.ts +3 -3
  117. package/build/.spruce/errors/errors.types.d.ts +0 -21
  118. package/build/.spruce/errors/errors.types.js +0 -3
  119. package/build/.spruce/errors/errors.types.js.map +0 -1
  120. package/build/.spruce/errors/nodeLsl/failedToLoadLiblsl.schema.d.ts +0 -3
  121. package/build/.spruce/errors/nodeLsl/failedToLoadLiblsl.schema.js +0 -19
  122. package/build/.spruce/errors/nodeLsl/failedToLoadLiblsl.schema.js.map +0 -1
  123. package/build/.spruce/errors/options.types.d.ts +0 -7
  124. package/build/.spruce/errors/options.types.js +0 -3
  125. package/build/.spruce/errors/options.types.js.map +0 -1
  126. package/build/.spruce/schemas/fields/fieldClassMap.d.ts +0 -2
  127. package/build/.spruce/schemas/fields/fieldClassMap.js +0 -5
  128. package/build/.spruce/schemas/fields/fieldClassMap.js.map +0 -1
  129. package/build/.spruce/schemas/fields/fields.types.d.ts +0 -1
  130. package/build/.spruce/schemas/fields/fields.types.js +0 -3
  131. package/build/.spruce/schemas/fields/fields.types.js.map +0 -1
  132. package/build/__tests__/AbstractLslTest.js +0 -86
  133. package/build/__tests__/AbstractLslTest.js.map +0 -1
  134. package/build/__tests__/modules/EventMarkerOutlet.test.js.map +0 -1
  135. package/build/__tests__/modules/LiblslAdapter.test.js.map +0 -1
  136. package/build/__tests__/modules/LslStreamInfo.test.js.map +0 -1
  137. package/build/__tests__/modules/LslStreamInlet.test.d.ts +0 -11
  138. package/build/__tests__/modules/LslStreamInlet.test.js.map +0 -1
  139. package/build/__tests__/modules/LslStreamOutlet.test.js.map +0 -1
  140. package/build/errors/SpruceError.d.ts +0 -6
  141. package/build/errors/SpruceError.js +0 -26
  142. package/build/errors/SpruceError.js.map +0 -1
  143. package/build/errors/failedToLoadLiblsl.builder.d.ts +0 -11
  144. package/build/errors/failedToLoadLiblsl.builder.js +0 -14
  145. package/build/errors/failedToLoadLiblsl.builder.js.map +0 -1
  146. package/build/modules/EventMarkerOutlet.d.ts +0 -23
  147. package/build/modules/EventMarkerOutlet.js.map +0 -1
  148. package/build/modules/LiblslAdapter.js.map +0 -1
  149. package/build/modules/LslStreamInfo.js.map +0 -1
  150. package/build/modules/LslStreamInlet.js.map +0 -1
  151. package/build/modules/LslStreamOutlet.js.map +0 -1
  152. package/build/testDoubles/LslInlet/FakeLslInlet.d.ts +0 -11
  153. package/build/testDoubles/LslInlet/FakeLslInlet.js +0 -16
  154. package/build/testDoubles/LslInlet/FakeLslInlet.js.map +0 -1
  155. package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +0 -7
  156. package/build/testDoubles/LslInlet/SpyLslInlet.js.map +0 -1
  157. package/build/testDoubles/LslOutlet/FakeLslOutlet.js +0 -59
  158. package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +0 -1
  159. package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js +0 -29
  160. package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js.map +0 -1
  161. package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js.map +0 -1
  162. package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.d.ts +0 -9
  163. package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js.map +0 -1
  164. package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.js.map +0 -1
  165. package/src/.spruce/errors/errors.types.ts +0 -37
  166. package/src/.spruce/errors/nodeLsl/failedToLoadLiblsl.schema.ts +0 -22
  167. package/src/.spruce/errors/options.types.ts +0 -10
  168. package/src/.spruce/schemas/fields/fieldClassMap.ts +0 -6
  169. package/src/.spruce/schemas/fields/fields.types.ts +0 -1
  170. package/src/errors/SpruceError.ts +0 -23
  171. package/src/errors/failedToLoadLiblsl.builder.ts +0 -12
  172. package/src/testDoubles/LslInlet/FakeLslInlet.ts +0 -22
  173. package/src/testDoubles/LslInlet/SpyLslInlet.ts +0 -16
  174. package/src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts +0 -24
  175. /package/build/{modules → impl}/LslStreamInfo.d.ts +0 -0
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "presentation": {
41
41
  "reveal": "always",
42
- "panel": "dedicated",
42
+ "panel": "dedicated"
43
43
  },
44
44
  "problemMatcher": []
45
45
  },
@@ -87,6 +87,18 @@
87
87
  "panel": "new",
88
88
  "clear": false
89
89
  }
90
+ },
91
+ {
92
+ "label": "ndx",
93
+ "type": "shell",
94
+ "command": "ndx ${input:ndxCommand}",
95
+ "problemMatcher": [],
96
+ "presentation": {
97
+ "reveal": "always",
98
+ "focus": true,
99
+ "panel": "new",
100
+ "clear": false
101
+ }
90
102
  }
91
103
  ],
92
104
  "inputs": [
@@ -107,6 +119,12 @@
107
119
  "description": "optionsCommand",
108
120
  "default": "add",
109
121
  "type": "promptString"
122
+ },
123
+ {
124
+ "id": "ndxCommand",
125
+ "description": "ndx command",
126
+ "default": "create.module",
127
+ "type": "promptString"
110
128
  }
111
129
  ]
112
130
  }
package/README.md CHANGED
@@ -6,7 +6,7 @@ Lab Streaming Layer (LSL) for synchronized streaming of multi-modal, time-series
6
6
  - [Installation](#installation)
7
7
  - [Usage](#usage)
8
8
  - [LslStreamOutlet](#lslstreamoutlet)
9
- - [EventMarkerOutlet](#eventmarkeroutlet)
9
+ - [LslEventMarkerOutlet](#lsleventmarkeroutlet)
10
10
  - [Test Doubles](#test-doubles)
11
11
 
12
12
  ## Overview
@@ -44,62 +44,72 @@ LSL is often used to stream EEG data over a network. For example, to instantiate
44
44
  ```typescript
45
45
  import { LslStreamOutlet } from '@neurodevs/node-lsl'
46
46
 
47
- const instance = LslStreamOutlet.Create({
48
- name: 'Muse S (2nd gen)',
49
- type: 'EEG',
50
- channelNames: ['TP9', 'AF7', 'AF8', 'TP10', 'AUX'],
51
- sampleRate: 256,
52
- channelFormat: 'float32',
53
- sourceId: 'muse-s-eeg',
54
- manufacturer: 'Interaxon Inc.',
55
- unit: 'microvolt',
56
- chunkSize: 12,
57
- maxBuffered: 360,
47
+ async function main() {
48
+ const outlet = await LslStreamOutlet.Create({
49
+ name: 'Muse S (2nd gen)',
50
+ type: 'EEG',
51
+ channelNames: ['TP9', 'AF7', 'AF8', 'TP10', 'AUX'],
52
+ sampleRate: 256,
53
+ channelFormat: 'float32',
54
+ sourceId: 'muse-s-eeg',
55
+ manufacturer: 'Interaxon Inc.',
56
+ unit: 'microvolt',
57
+ chunkSize: 12,
58
+ maxBuffered: 360,
59
+ })
60
+
61
+ outlet.pushSample([1, 2, 3, 4, 5])
62
+ }
63
+
64
+ main().catch((error) => {
65
+ console.error('Error in main:', error)
58
66
  })
59
-
60
- // Must be in async function
61
- await instance.pushSample(...)
62
67
  ```
63
68
 
64
- ### EventMarkerOutlet
69
+ ### LslEventMarkerOutlet
65
70
 
66
71
  LSL is also often used to push event markers that mark different phases of an experiment or session. The `pushMarkers` method pushes an event marker, waits for a specified duration, then pushes the next marker. I recommend that each event marker has a duration of at least 100 ms so that LSL receives the markers in the right order.
67
72
 
68
73
  ```typescript
69
- import { EventMarkerOutlet } from '@neurodevs/node-lsl'
74
+ import { LslEventMarkerOutlet } from '@neurodevs/node-lsl'
70
75
 
71
- const instance = EventMarkerOutlet.Create()
76
+ async function main() {
77
+ const outlet = await LslEventMarkerOutlet.Create()
72
78
 
73
- const markers = [
74
- { name: 'phase-1-begin', durationMs: 30 * 1000 },
75
- { name: 'phase-1-end', durationMs: 0.1 * 1000 },
76
- { name: 'phase-2-begin', durationMs: 60 * 1000 },
77
- ...
78
- ]
79
+ const markers = [
80
+ { name: 'phase-1-begin', durationMs: 1000 },
81
+ { name: 'phase-1-end', durationMs: 100 },
82
+ ]
79
83
 
80
- // Must be in async function, hangs until complete
81
- await instance.pushMarkers(markers)
82
- ```
84
+ // Hangs until complete
85
+ await outlet.pushMarkers(markers)
83
86
 
84
- If you then want to stop the `EventMarkerOutlet` early, you simply do:
87
+ // Void promise, does not hang
88
+ void outlet.pushMarkers(markers)
85
89
 
86
- ```typescript
87
- instance.stop()
90
+ // Interrupts the above pushMarkers process
91
+ outlet.stop()
92
+ }
93
+
94
+ main().catch((error) => {
95
+ console.error('Error in main:', error)
96
+ })
88
97
  ```
89
98
 
90
99
  ## Test Doubles
91
100
 
92
101
  This package was developed using test-driven development (TDD). If you also follow TDD, you'll likely want test doubles to fake or mock certain behaviors for these classes.
93
102
 
94
- For example, the `MockMarkerOutlet` class lets you test whether your application appropriately calls its methods without actually doing anything. Set this mock in your test code like this:
103
+ For example, the `MockEventMarkerOutlet` class lets you test whether your application appropriately calls its methods without actually doing anything. Set this mock in your test code like this:
95
104
 
96
105
  ```typescript
97
- import { EventMarkerOutlet, MockMarkerOutlet } from '@neurodevs/node-lsl'
106
+ import { LslEventMarkerOutlet, MockEventMarkerOutlet } from '@neurodevs/node-lsl'
98
107
 
99
108
  // In your tests / beforeEach
100
- EventMarkerOutlet.Class = MockMarkerOutlet
109
+ LslEventMarkerOutlet.Class = MockEventMarkerOutlet
101
110
 
102
- const mock = EventMarkerOutlet.Create()
111
+ // Must be in async
112
+ const mock = await LslEventMarkerOutlet.Create()
103
113
 
104
114
  // Do something in your application that should start the outlet
105
115
 
@@ -6,8 +6,6 @@
6
6
  "skill"
7
7
  ],
8
8
  "installed": [
9
- "test",
10
- "schema",
11
- "error"
9
+ "test"
12
10
  ]
13
11
  }
@@ -1,14 +1,15 @@
1
1
  import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  import FakeLiblsl from '../testDoubles/Liblsl/FakeLiblsl';
3
- export default class AbstractLslTest extends AbstractSpruceTest {
3
+ export default class AbstractPackageTest extends AbstractSpruceTest {
4
4
  protected static fakeLiblsl: FakeLiblsl;
5
5
  protected static beforeEach(): Promise<void>;
6
6
  protected static setFakeLiblsl(): void;
7
7
  protected static setSpyStreamInfo(): void;
8
8
  protected static setFakeStreamInfo(): void;
9
- protected static setSpyLslInlet(): void;
10
- protected static setFakeLslOutlet(): void;
11
- protected static setSpyMarkerOutlet(): void;
9
+ protected static setSpyStreamInlet(): void;
10
+ protected static setFakeStreamOutlet(): void;
11
+ protected static setSpyEventMarkerOutlet(): void;
12
+ protected static generateId(): string;
12
13
  protected static readonly name_: string;
13
14
  protected static readonly type: string;
14
15
  protected static readonly sourceId: string;
@@ -16,4 +17,5 @@ export default class AbstractLslTest extends AbstractSpruceTest {
16
17
  protected static readonly channelNames: string[];
17
18
  protected static readonly chunkSize: number;
18
19
  protected static readonly maxBuffered: number;
20
+ protected static readonly sampleRate: number;
19
21
  }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const test_utils_1 = __importDefault(require("@sprucelabs/test-utils"));
7
+ const generate_id_1 = __importDefault(require("@neurodevs/generate-id"));
8
+ const LiblslAdapter_1 = __importDefault(require("../impl/LiblslAdapter"));
9
+ const LslEventMarkerOutlet_1 = __importDefault(require("../impl/LslEventMarkerOutlet"));
10
+ const LslStreamInfo_1 = __importDefault(require("../impl/LslStreamInfo"));
11
+ const LslStreamInlet_1 = __importDefault(require("../impl/LslStreamInlet"));
12
+ const LslStreamOutlet_1 = __importDefault(require("../impl/LslStreamOutlet"));
13
+ const SpyEventMarkerOutlet_1 = __importDefault(require("../testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet"));
14
+ const FakeLiblsl_1 = __importDefault(require("../testDoubles/Liblsl/FakeLiblsl"));
15
+ const FakeStreamInfo_1 = __importDefault(require("../testDoubles/StreamInfo/FakeStreamInfo"));
16
+ const SpyStreamInfo_1 = __importDefault(require("../testDoubles/StreamInfo/SpyStreamInfo"));
17
+ const SpyStreamInlet_1 = require("../testDoubles/StreamInlet/SpyStreamInlet");
18
+ const FakeStreamOutlet_1 = __importDefault(require("../testDoubles/StreamOutlet/FakeStreamOutlet"));
19
+ class AbstractPackageTest extends test_utils_1.default {
20
+ static async beforeEach() {
21
+ await super.beforeEach();
22
+ this.setFakeLiblsl();
23
+ }
24
+ static setFakeLiblsl() {
25
+ this.fakeLiblsl = new FakeLiblsl_1.default();
26
+ LiblslAdapter_1.default.setInstance(this.fakeLiblsl);
27
+ }
28
+ static setSpyStreamInfo() {
29
+ LslStreamInfo_1.default.Class = SpyStreamInfo_1.default;
30
+ }
31
+ static setFakeStreamInfo() {
32
+ LslStreamInfo_1.default.Class = FakeStreamInfo_1.default;
33
+ FakeStreamInfo_1.default.resetTestDouble();
34
+ }
35
+ static setSpyStreamInlet() {
36
+ LslStreamInlet_1.default.Class = SpyStreamInlet_1.SpyStreamInlet;
37
+ }
38
+ static setFakeStreamOutlet() {
39
+ LslStreamOutlet_1.default.Class = FakeStreamOutlet_1.default;
40
+ FakeStreamOutlet_1.default.resetTestDouble();
41
+ }
42
+ static setSpyEventMarkerOutlet() {
43
+ LslEventMarkerOutlet_1.default.Class = SpyEventMarkerOutlet_1.default;
44
+ }
45
+ static generateId() {
46
+ return (0, generate_id_1.default)();
47
+ }
48
+ }
49
+ AbstractPackageTest.name_ = (0, generate_id_1.default)();
50
+ AbstractPackageTest.type = (0, generate_id_1.default)();
51
+ AbstractPackageTest.sourceId = (0, generate_id_1.default)();
52
+ AbstractPackageTest.units = (0, generate_id_1.default)();
53
+ AbstractPackageTest.channelNames = [(0, generate_id_1.default)(), (0, generate_id_1.default)()];
54
+ AbstractPackageTest.chunkSize = Math.floor(Math.random() * 100);
55
+ AbstractPackageTest.maxBuffered = Math.floor(Math.random() * 100);
56
+ AbstractPackageTest.sampleRate = Math.floor(Math.random() * 100);
57
+ exports.default = AbstractPackageTest;
58
+ //# sourceMappingURL=AbstractPackageTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":";;;;;AAAA,wEAAuD;AACvD,yEAA+C;AAC/C,0EAAiD;AACjD,wFAA+D;AAC/D,0EAAiD;AACjD,4EAAmD;AAEnD,8EAAqD;AACrD,iHAAwF;AACxF,kFAAyD;AACzD,8FAAqE;AACrE,4FAAmE;AACnE,8EAA0E;AAC1E,oGAA2E;AAE3E,MAAqB,mBAAoB,SAAQ,oBAAkB;IAGrD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,aAAa,EAAE,CAAA;IACxB,CAAC;IAES,MAAM,CAAC,aAAa;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAU,EAAE,CAAA;QAClC,uBAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC9C,CAAC;IAES,MAAM,CAAC,gBAAgB;QAC7B,uBAAa,CAAC,KAAK,GAAG,uBAAa,CAAA;IACvC,CAAC;IAES,MAAM,CAAC,iBAAiB;QAC9B,uBAAa,CAAC,KAAK,GAAG,wBAAc,CAAA;QACpC,wBAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAES,MAAM,CAAC,iBAAiB;QAC9B,wBAAc,CAAC,KAAK,GAAG,+BAAc,CAAA;IACzC,CAAC;IAES,MAAM,CAAC,mBAAmB;QAChC,yBAAe,CAAC,KAAK,GAAG,0BAAgB,CAAA;QACxC,0BAAgB,CAAC,eAAe,EAAE,CAAA;IACtC,CAAC;IAES,MAAM,CAAC,uBAAuB;QACpC,8BAAoB,CAAC,KAAK,GAAG,8BAAoB,CAAA;IACrD,CAAC;IAES,MAAM,CAAC,UAAU;QACvB,OAAO,IAAA,qBAAU,GAAE,CAAA;IACvB,CAAC;;AAEyB,yBAAK,GAAG,IAAA,qBAAU,GAAE,CAAA;AACpB,wBAAI,GAAG,IAAA,qBAAU,GAAE,CAAA;AACnB,4BAAQ,GAAG,IAAA,qBAAU,GAAE,CAAA;AACvB,yBAAK,GAAG,IAAA,qBAAU,GAAE,CAAA;AACpB,gCAAY,GAAG,CAAC,IAAA,qBAAU,GAAE,EAAE,IAAA,qBAAU,GAAE,CAAC,CAAA;AAC3C,6BAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;AAC3C,+BAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;AAC7C,8BAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;kBA/CrD,mBAAmB"}
@@ -1,6 +1,6 @@
1
- import AbstractLslTest from '../AbstractLslTest';
2
- export default class LiblslAdapterTest extends AbstractLslTest {
3
- private static lsl;
1
+ import AbstractPackageTest from '../AbstractPackageTest';
2
+ export default class LiblslAdapterTest extends AbstractPackageTest {
3
+ private static instance;
4
4
  private static libraryPath?;
5
5
  private static libraryOptions?;
6
6
  private static fakeBindings;
@@ -26,13 +26,9 @@ export default class LiblslAdapterTest extends AbstractLslTest {
26
26
  private static ffiRsOpenOptions?;
27
27
  private static ffiRsDefineOptions;
28
28
  protected static beforeEach(): Promise<void>;
29
+ protected static createsInstance(): Promise<void>;
29
30
  protected static throwsWhenBindingsFailToLoad(): Promise<void>;
30
31
  protected static callsOpenOnFfiRs(): Promise<void>;
31
- protected static throwsWhenCreateStreamInfoIsMissingRequiredParams(): void;
32
- protected static throwsWhenAppendChannelsIsMissingRequiredParams(): Promise<void>;
33
- protected static throwsWhenCreateOutletIsMissingRequiredParams(): Promise<void>;
34
- protected static throwsWhenPushSampleFloatTimestampIsMissingRequiredParams(): Promise<void>;
35
- protected static throwsWhenPushSampleStringTimestampIsMissingRequiredParams(): Promise<void>;
36
32
  protected static worksAsASingleton(): Promise<void>;
37
33
  protected static singletonIsTheSame(): Promise<void>;
38
34
  protected static canSetInstance(): void;
@@ -54,5 +50,6 @@ export default class LiblslAdapterTest extends AbstractLslTest {
54
50
  private static createRandomOptions;
55
51
  private static generateRandomChannelValues;
56
52
  private static generateRandomCreateStreamInfoOptions;
53
+ private static generateFailedMessage;
57
54
  private static FakeBindings;
58
55
  }
@@ -11,11 +11,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const crypto_1 = require("crypto");
13
13
  const test_utils_1 = require("@sprucelabs/test-utils");
14
+ const generate_id_1 = __importDefault(require("@neurodevs/generate-id"));
14
15
  const ffi_rs_1 = require("ffi-rs");
15
- const LiblslAdapter_1 = __importDefault(require("../../modules/LiblslAdapter"));
16
+ const LiblslAdapter_1 = __importDefault(require("../../impl/LiblslAdapter"));
16
17
  const FakeLiblsl_1 = __importDefault(require("../../testDoubles/Liblsl/FakeLiblsl"));
17
- const AbstractLslTest_1 = __importDefault(require("../AbstractLslTest"));
18
- class LiblslAdapterTest extends AbstractLslTest_1.default {
18
+ const AbstractPackageTest_1 = __importDefault(require("../AbstractPackageTest"));
19
+ class LiblslAdapterTest extends AbstractPackageTest_1.default {
19
20
  static async beforeEach() {
20
21
  await super.beforeEach();
21
22
  delete this.libraryPath;
@@ -29,7 +30,7 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
29
30
  delete this.getDescriptionParams;
30
31
  this.appendChildParams = [];
31
32
  this.appendChildValueParams = [];
32
- process.env.LIBLSL_PATH = (0, test_utils_1.generateId)();
33
+ process.env.LIBLSL_PATH = (0, generate_id_1.default)();
33
34
  this.fakeStreamInfo = {};
34
35
  this.fakeDesc = {};
35
36
  this.fakeOutlet = {};
@@ -50,15 +51,17 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
50
51
  return this.fakeBindings;
51
52
  };
52
53
  LiblslAdapter_1.default.resetInstance();
53
- this.lsl = LiblslAdapter_1.default.getInstance();
54
+ this.instance = LiblslAdapter_1.default.getInstance();
55
+ }
56
+ static async createsInstance() {
57
+ test_utils_1.assert.isTruthy(this.instance, 'Failed to create instance!');
54
58
  }
55
59
  static async throwsWhenBindingsFailToLoad() {
56
60
  this.shouldThrowWhenCreatingBindings = true;
57
61
  LiblslAdapter_1.default.resetInstance();
58
62
  const err = test_utils_1.assert.doesThrow(() => LiblslAdapter_1.default.getInstance());
59
- test_utils_1.errorAssert.assertError(err, 'FAILED_TO_LOAD_LIBLSL', {
60
- liblslPath: process.env.LIBLSL_PATH,
61
- });
63
+ debugger;
64
+ test_utils_1.assert.isTrue(err.message.includes(this.generateFailedMessage()), 'Did not receive the expected error!');
62
65
  }
63
66
  static async callsOpenOnFfiRs() {
64
67
  test_utils_1.assert.isEqualDeep(this.ffiRsOpenOptions, {
@@ -66,49 +69,6 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
66
69
  path: process.env.LIBLSL_PATH,
67
70
  });
68
71
  }
69
- static throwsWhenCreateStreamInfoIsMissingRequiredParams() {
70
- //@ts-ignore
71
- const err = test_utils_1.assert.doesThrow(() => this.lsl.createStreamInfo());
72
- test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
73
- parameters: [
74
- 'name',
75
- 'type',
76
- 'channelCount',
77
- 'sampleRate',
78
- 'channelFormat',
79
- 'sourceId',
80
- ],
81
- });
82
- }
83
- static async throwsWhenAppendChannelsIsMissingRequiredParams() {
84
- const err = test_utils_1.assert.doesThrow(() =>
85
- //@ts-ignore
86
- this.lsl.appendChannelsToStreamInfo({}));
87
- test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
88
- parameters: ['info', 'channels'],
89
- });
90
- }
91
- static async throwsWhenCreateOutletIsMissingRequiredParams() {
92
- //@ts-ignore
93
- const err = test_utils_1.assert.doesThrow(() => this.lsl.createOutlet({}));
94
- test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
95
- parameters: ['info', 'chunkSize', 'maxBuffered'],
96
- });
97
- }
98
- static async throwsWhenPushSampleFloatTimestampIsMissingRequiredParams() {
99
- //@ts-ignore
100
- const err = test_utils_1.assert.doesThrow(() => this.lsl.pushSampleFloatTimestamp());
101
- test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
102
- parameters: ['outlet', 'sample', 'timestamp'],
103
- });
104
- }
105
- static async throwsWhenPushSampleStringTimestampIsMissingRequiredParams() {
106
- //@ts-ignore
107
- const err = test_utils_1.assert.doesThrow(() => this.lsl.pushSampleFloatTimestamp());
108
- test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
109
- parameters: ['outlet', 'sample', 'timestamp'],
110
- });
111
- }
112
72
  static async worksAsASingleton() {
113
73
  const liblsl = LiblslAdapter_1.default.getInstance();
114
74
  //@ts-ignore
@@ -202,7 +162,7 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
202
162
  }
203
163
  static async canCreateStreamInfoWithRequiredParams() {
204
164
  const options = this.generateRandomCreateStreamInfoOptions();
205
- const actual = this.lsl.createStreamInfo(options);
165
+ const actual = this.instance.createStreamInfo(options);
206
166
  test_utils_1.assert.isEqual(actual, this.fakeStreamInfo);
207
167
  test_utils_1.assert.isEqualDeep(this.createStreamInfoParams, Object.values(options));
208
168
  }
@@ -219,7 +179,7 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
219
179
  sample: expected,
220
180
  timestamp,
221
181
  };
222
- this.lsl.pushSampleFloatTimestamp(options);
182
+ this.instance.pushSampleFloatTimestamp(options);
223
183
  test_utils_1.assert.isEqualDeep(this.pushSampleFloatTimestampParams, [
224
184
  this.fakeOutlet,
225
185
  expected,
@@ -227,14 +187,14 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
227
187
  ]);
228
188
  }
229
189
  static async canPushStringSample() {
230
- const expected = [(0, test_utils_1.generateId)()];
190
+ const expected = [(0, generate_id_1.default)()];
231
191
  const timestamp = (0, crypto_1.randomInt)(100);
232
192
  const options = {
233
193
  outlet: this.fakeOutlet,
234
194
  sample: expected,
235
195
  timestamp,
236
196
  };
237
- this.lsl.pushSampleStringTimestamp(options);
197
+ this.instance.pushSampleStringTimestamp(options);
238
198
  test_utils_1.assert.isEqual(this.pushSampleStringTimestampParams?.[0], this.fakeOutlet);
239
199
  test_utils_1.assert.isEqualDeep(this.pushSampleStringTimestampParams?.[1], expected);
240
200
  test_utils_1.assert.isEqual(this.pushSampleStringTimestampParams?.[2], timestamp);
@@ -242,7 +202,7 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
242
202
  static async addingSingleChannelGetsDescription() {
243
203
  const info = this.createRandomStreamInfo();
244
204
  const channel = this.generateRandomChannelValues();
245
- this.lsl.appendChannelsToStreamInfo({
205
+ this.instance.appendChannelsToStreamInfo({
246
206
  info,
247
207
  channels: [channel],
248
208
  });
@@ -267,7 +227,7 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
267
227
  const info = this.createRandomStreamInfo();
268
228
  const channel1 = this.generateRandomChannelValues();
269
229
  const channel2 = this.generateRandomChannelValues();
270
- this.lsl.appendChannelsToStreamInfo({
230
+ this.instance.appendChannelsToStreamInfo({
271
231
  info,
272
232
  channels: [channel1, channel2],
273
233
  });
@@ -280,24 +240,24 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
280
240
  static async canDestroyOutlet() {
281
241
  const outlet = this.createRandomOutlet();
282
242
  const options = { outlet };
283
- this.lsl.destroyOutlet(options);
243
+ this.instance.destroyOutlet(options);
284
244
  test_utils_1.assert.isEqualDeep(this.destroyOutletParams, Object.values(options));
285
245
  }
286
246
  static async callingLocalClockTwiceReturnsDifferentTimestamps() {
287
- const t1 = this.lsl.localClock();
247
+ const t1 = this.instance.localClock();
288
248
  await this.wait(10);
289
- const t2 = this.lsl.localClock();
249
+ const t2 = this.instance.localClock();
290
250
  test_utils_1.assert.isNotEqual(t1, t2);
291
251
  }
292
252
  static async localClockBindingReceivesEmptyArray() {
293
253
  delete this.localClockParams;
294
- this.lsl.localClock();
254
+ this.instance.localClock();
295
255
  test_utils_1.assert.isEqualDeep(this.localClockParams, []);
296
256
  }
297
257
  static async defaultsToMacOsPath() {
298
258
  delete process.env.LIBLSL_PATH;
299
259
  LiblslAdapter_1.default.resetInstance();
300
- this.lsl = LiblslAdapter_1.default.getInstance();
260
+ this.instance = LiblslAdapter_1.default.getInstance();
301
261
  test_utils_1.assert.isEqual(this.ffiRsOpenOptions?.path, '/opt/homebrew/Cellar/lsl/1.16.2/lib/liblsl.1.16.2.dylib');
302
262
  }
303
263
  static async canCreateInletWithRequiredParams() {
@@ -306,16 +266,16 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
306
266
  test_utils_1.assert.isEqual(inlet, this.fakeInlet);
307
267
  }
308
268
  static createRandomStreamInfo() {
309
- return this.lsl.createStreamInfo(this.generateRandomCreateStreamInfoOptions());
269
+ return this.instance.createStreamInfo(this.generateRandomCreateStreamInfoOptions());
310
270
  }
311
271
  static createRandomOutlet() {
312
272
  const options = this.createRandomOptions();
313
- const outlet = this.lsl.createOutlet(options);
273
+ const outlet = this.instance.createOutlet(options);
314
274
  return { options, outlet };
315
275
  }
316
276
  static createRandomInlet() {
317
277
  const options = this.createRandomOptions();
318
- const inlet = this.lsl.createInlet(options);
278
+ const inlet = this.instance.createInlet(options);
319
279
  return { options, inlet };
320
280
  }
321
281
  static createRandomOptions() {
@@ -329,21 +289,24 @@ class LiblslAdapterTest extends AbstractLslTest_1.default {
329
289
  }
330
290
  static generateRandomChannelValues() {
331
291
  return {
332
- label: (0, test_utils_1.generateId)(),
333
- type: (0, test_utils_1.generateId)(),
334
- unit: (0, test_utils_1.generateId)(),
292
+ label: (0, generate_id_1.default)(),
293
+ type: (0, generate_id_1.default)(),
294
+ unit: (0, generate_id_1.default)(),
335
295
  };
336
296
  }
337
297
  static generateRandomCreateStreamInfoOptions() {
338
298
  return {
339
- name: (0, test_utils_1.generateId)(),
340
- type: (0, test_utils_1.generateId)(),
299
+ name: (0, generate_id_1.default)(),
300
+ type: (0, generate_id_1.default)(),
341
301
  channelCount: (0, crypto_1.randomInt)(1, 10),
342
302
  sampleRate: (0, crypto_1.randomInt)(100),
343
303
  channelFormat: (0, crypto_1.randomInt)(7),
344
- sourceId: (0, test_utils_1.generateId)(),
304
+ sourceId: (0, generate_id_1.default)(),
345
305
  };
346
306
  }
307
+ static generateFailedMessage() {
308
+ return `Loading the liblsl dylib failed! I tried to load it from ${process.env.LIBLSL_PATH}.`;
309
+ }
347
310
  static FakeBindings() {
348
311
  return {
349
312
  lsl_create_streaminfo: (params) => {
@@ -396,25 +359,13 @@ LiblslAdapterTest.appendChildParams = [];
396
359
  exports.default = LiblslAdapterTest;
397
360
  __decorate([
398
361
  (0, test_utils_1.test)()
399
- ], LiblslAdapterTest, "throwsWhenBindingsFailToLoad", null);
400
- __decorate([
401
- (0, test_utils_1.test)()
402
- ], LiblslAdapterTest, "callsOpenOnFfiRs", null);
362
+ ], LiblslAdapterTest, "createsInstance", null);
403
363
  __decorate([
404
364
  (0, test_utils_1.test)()
405
- ], LiblslAdapterTest, "throwsWhenCreateStreamInfoIsMissingRequiredParams", null);
406
- __decorate([
407
- (0, test_utils_1.test)()
408
- ], LiblslAdapterTest, "throwsWhenAppendChannelsIsMissingRequiredParams", null);
409
- __decorate([
410
- (0, test_utils_1.test)()
411
- ], LiblslAdapterTest, "throwsWhenCreateOutletIsMissingRequiredParams", null);
412
- __decorate([
413
- (0, test_utils_1.test)()
414
- ], LiblslAdapterTest, "throwsWhenPushSampleFloatTimestampIsMissingRequiredParams", null);
365
+ ], LiblslAdapterTest, "throwsWhenBindingsFailToLoad", null);
415
366
  __decorate([
416
367
  (0, test_utils_1.test)()
417
- ], LiblslAdapterTest, "throwsWhenPushSampleStringTimestampIsMissingRequiredParams", null);
368
+ ], LiblslAdapterTest, "callsOpenOnFfiRs", null);
418
369
  __decorate([
419
370
  (0, test_utils_1.test)()
420
371
  ], LiblslAdapterTest, "worksAsASingleton", null);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiblslAdapter.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LiblslAdapter.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import AbstractLslTest from '../AbstractLslTest';
2
- export default class EventMarkerOutletTest extends AbstractLslTest {
1
+ import AbstractPackageTest from '../AbstractPackageTest';
2
+ export default class EventMarkerOutletTest extends AbstractPackageTest {
3
3
  private static instance;
4
4
  protected static beforeEach(): Promise<void>;
5
+ protected static createsInstance(): Promise<void>;
5
6
  protected static loadsWithEventMarkerSpecificOptions(): Promise<void>;
6
7
  protected static canOverrideDefaultOptions(): Promise<void>;
7
8
  protected static pushingSingleMarkerIncrementsHitCountAndWaitTime(): Promise<void>;
@@ -11,9 +12,9 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
11
12
  protected static doesNotWaitIfStopped(): Promise<void>;
12
13
  protected static clearsTheTimeoutOnStop(): Promise<void>;
13
14
  protected static pushMarkerCallsPushSampleOnMarkerOutlet(): Promise<void>;
14
- private static get lslOutlet();
15
+ private static get streamOutlet();
15
16
  private static setupOutlet;
16
17
  private static pushTotalMarkers;
17
18
  private static generateDurationMarker;
18
- private static EventMarkerOutlet;
19
+ private static LslEventMarkerOutlet;
19
20
  }