@neurodevs/node-lsl 18.0.0 → 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 (90) hide show
  1. package/.vscode/launch.json +54 -58
  2. package/.vscode/settings.json +61 -66
  3. package/.vscode/tasks.json +98 -129
  4. package/README.md +14 -12
  5. package/build/__tests__/AbstractPackageTest.d.ts +4 -2
  6. package/build/__tests__/AbstractPackageTest.js +15 -6
  7. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  8. package/build/__tests__/impl/BleDeviceController.test.d.ts +54 -0
  9. package/build/__tests__/impl/BleDeviceController.test.js +333 -0
  10. package/build/__tests__/impl/BleDeviceController.test.js.map +1 -0
  11. package/build/__tests__/impl/LslEventMarkerEmitter.test.js +1 -1
  12. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -1
  13. package/build/__tests__/impl/LslStreamInlet.test.js +2 -2
  14. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  15. package/build/__tests__/impl/LslStreamOutlet.test.js +9 -9
  16. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  17. package/build/__tests__/impl/LslWebSocketBridge.test.js +3 -3
  18. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  19. package/build/impl/LslStreamOutlet.d.ts +2 -2
  20. package/build/impl/LslStreamOutlet.js +2 -2
  21. package/build/impl/LslStreamOutlet.js.map +1 -1
  22. package/build/impl/LslWebSocketBridge.js +2 -2
  23. package/build/impl/LslWebSocketBridge.js.map +1 -1
  24. package/build/impl/controllers/BleDeviceController.d.ts +58 -0
  25. package/build/impl/controllers/BleDeviceController.js +145 -0
  26. package/build/impl/controllers/BleDeviceController.js.map +1 -0
  27. package/build/impl/workers/inlet/StreamInletWorker.d.ts +4 -4
  28. package/build/impl/workers/inlet/StreamInletWorker.js +12 -12
  29. package/build/impl/workers/inlet/StreamInletWorker.js.map +1 -1
  30. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +3 -3
  31. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +7 -7
  32. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +1 -1
  33. package/build/index.d.ts +6 -4
  34. package/build/index.js +7 -5
  35. package/build/index.js.map +1 -1
  36. package/build/scripts/discoverMuse.d.ts +1 -0
  37. package/build/scripts/discoverMuse.js +40 -0
  38. package/build/scripts/discoverMuse.js.map +1 -0
  39. package/build/scripts/runMuse.d.ts +1 -0
  40. package/build/scripts/runMuse.js +40 -0
  41. package/build/scripts/runMuse.js.map +1 -0
  42. package/build/testDoubles/BleController/FakeBleController.d.ts +24 -0
  43. package/build/testDoubles/BleController/FakeBleController.js +42 -0
  44. package/build/testDoubles/BleController/FakeBleController.js.map +1 -0
  45. package/build/testDoubles/BleController/SpyBleController.d.ts +14 -0
  46. package/build/testDoubles/BleController/SpyBleController.js +48 -0
  47. package/build/testDoubles/BleController/SpyBleController.js.map +1 -0
  48. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.d.ts +2 -2
  49. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +5 -2
  50. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -1
  51. package/build/testDoubles/generateRandomOutletOptions.js +1 -1
  52. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  53. package/eslint.config.js +3 -0
  54. package/package.json +18 -56
  55. package/prettier.config.js +3 -0
  56. package/src/__tests__/AbstractPackageTest.ts +28 -9
  57. package/src/__tests__/impl/BleDeviceController.test.ts +492 -0
  58. package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +2 -1
  59. package/src/__tests__/impl/LslStreamInlet.test.ts +2 -2
  60. package/src/__tests__/impl/LslStreamOutlet.test.ts +10 -10
  61. package/src/__tests__/impl/LslWebSocketBridge.test.ts +4 -3
  62. package/src/impl/LslStreamOutlet.ts +3 -3
  63. package/src/impl/LslWebSocketBridge.ts +2 -2
  64. package/src/impl/controllers/BleDeviceController.ts +223 -0
  65. package/src/impl/workers/inlet/StreamInletWorker.ts +12 -12
  66. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +8 -8
  67. package/src/index.ts +8 -5
  68. package/src/scripts/discoverMuse.ts +50 -0
  69. package/src/scripts/runMuse.ts +50 -0
  70. package/src/testDoubles/BleController/FakeBleController.ts +70 -0
  71. package/src/testDoubles/BleController/SpyBleController.ts +61 -0
  72. package/src/testDoubles/StreamOutlet/FakeStreamOutlet.ts +6 -3
  73. package/src/testDoubles/generateRandomOutletOptions.ts +2 -1
  74. package/tsconfig.json +23 -27
  75. package/.regressionproof.json +0 -7
  76. package/build/.spruce/settings.json +0 -15
  77. package/build/__tests__/impl/LslBackpressureMonitor.test.d.ts +0 -7
  78. package/build/__tests__/impl/LslBackpressureMonitor.test.js +0 -26
  79. package/build/__tests__/impl/LslBackpressureMonitor.test.js.map +0 -1
  80. package/build/impl/LslBackpressureMonitor.d.ts +0 -8
  81. package/build/impl/LslBackpressureMonitor.js +0 -8
  82. package/build/impl/LslBackpressureMonitor.js.map +0 -1
  83. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.d.ts +0 -6
  84. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js +0 -10
  85. package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js.map +0 -1
  86. package/eslint.config.mjs +0 -3
  87. package/src/.spruce/settings.json +0 -15
  88. package/src/__tests__/impl/LslBackpressureMonitor.test.ts +0 -25
  89. package/src/impl/LslBackpressureMonitor.ts +0 -13
  90. package/src/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.ts +0 -13
@@ -1,59 +1,55 @@
1
1
  {
2
- "version": "0.2.0",
3
- "configurations": [
4
- {
5
- "type": "node",
6
- "request": "attach",
7
- "name": "attach.tests",
8
- "port": 5200,
9
- "restart": true,
10
- "timeout": 10000
11
- },
12
- {
13
- "type": "node",
14
- "request": "launch",
15
- "name": "test.file",
16
- "runtimeExecutable": "node",
17
- "runtimeArgs": [
18
- "--inspect-brk",
19
- "--trace-warnings",
20
- "--experimental-vm-modules",
21
- "${workspaceFolder}/node_modules/jest/bin/jest.js",
22
- "${fileBasenameNoExtension}",
23
- "--detectOpenHandles"
24
- ],
25
- "cwd": "${workspaceFolder}",
26
- "console": "integratedTerminal",
27
- "internalConsoleOptions": "neverOpen"
28
- },
29
- {
30
- "type": "node",
31
- "request": "launch",
32
- "name": "test.all",
33
- "runtimeExecutable": "node",
34
- "runtimeArgs": [
35
- "--inspect-brk",
36
- "--trace-warnings",
37
- "${workspaceFolder}/node_modules/jest/bin/jest.js"
38
- ],
39
- "cwd": "${workspaceFolder}",
40
- "console": "integratedTerminal",
41
- "internalConsoleOptions": "neverOpen"
42
- },
43
- {
44
- "type": "node",
45
- "request": "launch",
46
- "name": "boot",
47
- "runtimeExecutable": "yarn",
48
- "runtimeArgs": [
49
- "run",
50
- "--inspect-brk",
51
- "--trace-warnings",
52
- "boot"
53
- ],
54
- "cwd": "${workspaceFolder}",
55
- "console": "integratedTerminal",
56
- "internalConsoleOptions": "neverOpen"
57
- }
58
- ]
59
- }
2
+ "version": "1.0.0",
3
+ "configurations": [
4
+ {
5
+ "type": "node",
6
+ "request": "attach",
7
+ "name": "attach.tests",
8
+ "port": 5200,
9
+ "restart": true,
10
+ "timeout": 10000
11
+ },
12
+ {
13
+ "type": "node",
14
+ "request": "launch",
15
+ "name": "test.file",
16
+ "runtimeExecutable": "node",
17
+ "runtimeArgs": [
18
+ "--inspect-brk",
19
+ "--trace-warnings",
20
+ "--experimental-vm-modules",
21
+ "${workspaceFolder}/node_modules/.bin/jest",
22
+ "${fileBasenameNoExtension}",
23
+ "--detectOpenHandles"
24
+ ],
25
+ "cwd": "${workspaceFolder}",
26
+ "console": "integratedTerminal",
27
+ "internalConsoleOptions": "neverOpen"
28
+ },
29
+ {
30
+ "type": "node",
31
+ "request": "launch",
32
+ "name": "test.all",
33
+ "runtimeExecutable": "node",
34
+ "runtimeArgs": [
35
+ "--inspect-brk",
36
+ "--trace-warnings",
37
+ "--experimental-vm-modules",
38
+ "${workspaceFolder}/node_modules/.bin/jest"
39
+ ],
40
+ "cwd": "${workspaceFolder}",
41
+ "console": "integratedTerminal",
42
+ "internalConsoleOptions": "neverOpen"
43
+ },
44
+ {
45
+ "type": "node",
46
+ "request": "launch",
47
+ "name": "boot",
48
+ "runtimeExecutable": "yarn",
49
+ "runtimeArgs": ["run", "--inspect-brk", "--trace-warnings", "boot"],
50
+ "cwd": "${workspaceFolder}",
51
+ "console": "integratedTerminal",
52
+ "internalConsoleOptions": "neverOpen"
53
+ }
54
+ ]
55
+ }
@@ -1,67 +1,62 @@
1
1
  {
2
- "debug.node.autoAttach": "on",
3
- "git.ignoreLimitWarning": true,
4
- "javascript.validate.enable": false,
5
- "files.watcherExclude": {
6
- "**/.git/objects/**": true,
7
- "**/.git/subtree-cache/**": true,
8
- "**/build/**": true,
9
- "**/node_modules/**": true,
10
- },
11
- "search.exclude": {
12
- "**/build/**": true,
13
- "**/node_modules/**": true,
14
- "**/.next/**": true
15
- },
16
- "editor.maxTokenizationLineLength": 20000000,
17
- "[javascript]": {
18
- "editor.formatOnSave": false
19
- },
20
- "[javascriptreact]": {
21
- "editor.formatOnSave": false
22
- },
23
- "[typescript]": {
24
- "editor.formatOnSave": false
25
- },
26
- "[typescriptreact]": {
27
- "editor.formatOnSave": false
28
- },
29
- "[handlebars]": {
30
- "editor.formatOnSave": false
31
- },
32
- "typescript.tsdk": "node_modules/typescript/lib",
33
- "cSpell.ignorePaths": [
34
- "**/package-lock.json",
35
- "**/node_modules/**",
36
- "**/build/**",
37
- "**/vscode-extension/**",
38
- "**/.git/objects/**",
39
- ".vscode",
40
- ".spruce"
41
- ],
42
- "cSpell.words": [
43
- "arkit",
44
- "autogenerated",
45
- "scrollable",
46
- "serializable"
47
- ],
48
- "debug.javascript.unmapMissingSources": true,
49
- "javascript.preferences.importModuleSpecifier": "relative",
50
- "typescript.preferences.importModuleSpecifier": "relative",
51
- "eslint.experimental.useFlatConfig": true,
52
- "eslint.enable": true,
53
- "eslint.validate": [
54
- "javascript",
55
- "javascriptreact",
56
- "typescript",
57
- "typescriptreact"
58
- ],
59
- "eslint.workingDirectories": [
60
- "./"
61
- ],
62
- "typescript.validate.enable": true,
63
- "editor.formatOnSave": false,
64
- "editor.codeActionsOnSave": {
65
- "source.fixAll.eslint": "always"
66
- }
67
- }
2
+ "debug.node.autoAttach": "on",
3
+ "git.ignoreLimitWarning": true,
4
+ "javascript.validate.enable": false,
5
+ "files.watcherExclude": {
6
+ "**/.git/objects/**": true,
7
+ "**/.git/subtree-cache/**": true,
8
+ "**/build/**": true,
9
+ "**/node_modules/**": true
10
+ },
11
+ "search.exclude": {
12
+ "**/build/**": true,
13
+ "**/node_modules/**": true,
14
+ "**/.next/**": true
15
+ },
16
+ "editor.codeActionsOnSave": {
17
+ "source.fixAll.eslint": "always"
18
+ },
19
+ "editor.formatOnSave": true,
20
+ "editor.formatOnSaveMode": "file",
21
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
22
+ "editor.maxTokenizationLineLength": 20000000,
23
+ "[javascript]": {
24
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
25
+ "editor.formatOnSave": true
26
+ },
27
+ "[javascriptreact]": {
28
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
29
+ "editor.formatOnSave": true
30
+ },
31
+ "[typescript]": {
32
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
33
+ "editor.formatOnSave": true
34
+ },
35
+ "[typescriptreact]": {
36
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
37
+ "editor.formatOnSave": true
38
+ },
39
+ "eslint.enable": true,
40
+ "eslint.useFlatConfig": true,
41
+ "eslint.validate": [
42
+ "javascript",
43
+ "javascriptreact",
44
+ "typescript",
45
+ "typescriptreact"
46
+ ],
47
+ "eslint.workingDirectories": ["./"],
48
+ "debug.javascript.unmapMissingSources": true,
49
+ "javascript.preferences.importModuleSpecifier": "relative",
50
+ "typescript.preferences.importModuleSpecifier": "relative",
51
+ "typescript.tsdk": "node_modules/typescript/lib",
52
+ "typescript.validate.enable": true,
53
+ "cSpell.ignorePaths": [
54
+ "**/package-lock.json",
55
+ "**/node_modules/**",
56
+ "**/build/**",
57
+ "**/vscode-extension/**",
58
+ "**/.git/objects/**",
59
+ ".vscode"
60
+ ],
61
+ "cSpell.words": ["arkit", "autogenerated", "scrollable", "serializable"]
62
+ }
@@ -1,130 +1,99 @@
1
1
  {
2
- "version": "2.0.0",
3
- "tasks": [
4
- {
5
- "type": "npm",
6
- "script": "watch.build.dev",
7
- "group": "build",
8
- "label": "watch.build.dev & problem.watcher",
9
- "isBackground": true,
10
- "runOptions": {
11
- "runOn": "folderOpen"
12
- },
13
- "promptOnClose": false,
14
- "presentation": {
15
- "focus": false,
16
- "reveal": "never"
17
- },
18
- "problemMatcher": {
19
- "base": "$tsc-watch",
20
- "applyTo": "allDocuments"
21
- }
22
- },
23
- {
24
- "label": "test.file",
25
- "command": "spruce",
26
- "args": [
27
- "test",
28
- "--inspect",
29
- "5200",
30
- "--pattern",
31
- "${fileBasenameNoExtension}",
32
- "--watchMode",
33
- "standard"
34
- ],
35
- "promptOnClose": false,
36
- "group": {
37
- "kind": "test",
38
- "isDefault": true
39
- },
40
- "presentation": {
41
- "reveal": "always",
42
- "panel": "dedicated"
43
- },
44
- "problemMatcher": []
45
- },
46
- {
47
- "label": "test.reporter",
48
- "command": "spruce",
49
- "args": [
50
- "test",
51
- "--shouldHoldAtStart",
52
- "true",
53
- "--watchMode",
54
- "smart"
55
- ],
56
- "promptOnClose": false,
57
- "group": "test",
58
- "runOptions": {
59
- "runOn": "folderOpen"
60
- },
61
- "presentation": {
62
- "panel": "shared",
63
- "focus": true,
64
- "reveal": "always"
65
- }
66
- },
67
- {
68
- "label": "spruce",
69
- "type": "shell",
70
- "command": "spruce ${input:spruceCommand}",
71
- "problemMatcher": [],
72
- "presentation": {
73
- "reveal": "always",
74
- "focus": true,
75
- "panel": "new",
76
- "clear": false
77
- }
78
- },
79
- {
80
- "label": "shell",
81
- "type": "shell",
82
- "command": "${input:command} ${input:optionsCommand}",
83
- "problemMatcher": [],
84
- "presentation": {
85
- "reveal": "always",
86
- "focus": true,
87
- "panel": "new",
88
- "clear": false
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
- }
102
- }
103
- ],
104
- "inputs": [
105
- {
106
- "id": "spruceCommand",
107
- "description": "spruce command",
108
- "default": "create.test",
109
- "type": "promptString"
110
- },
111
- {
112
- "id": "command",
113
- "description": "command",
114
- "default": "yarn",
115
- "type": "promptString"
116
- },
117
- {
118
- "id": "optionsCommand",
119
- "description": "optionsCommand",
120
- "default": "add",
121
- "type": "promptString"
122
- },
123
- {
124
- "id": "ndxCommand",
125
- "description": "ndx command",
126
- "default": "create.module",
127
- "type": "promptString"
128
- }
129
- ]
130
- }
2
+ "version": "2.0.0",
3
+ "tasks": [
4
+ {
5
+ "type": "npm",
6
+ "script": "watch.build.dev",
7
+ "group": "build",
8
+ "label": "watch.build.dev & problem.watcher",
9
+ "isBackground": true,
10
+ "runOptions": {
11
+ "runOn": "folderOpen"
12
+ },
13
+ "promptOnClose": false,
14
+ "presentation": {
15
+ "focus": false,
16
+ "reveal": "never"
17
+ },
18
+ "problemMatcher": {
19
+ "base": "$tsc-watch",
20
+ "applyTo": "allDocuments"
21
+ }
22
+ },
23
+ {
24
+ "label": "test.file",
25
+ "type": "shell",
26
+ "command": "node node_modules/@neurodevs/node-tdd/build/workspace/testRunner.cli.js --pattern \"${fileBasenameNoExtension}\" --watchMode standard --inspect 5200",
27
+ "promptOnClose": false,
28
+ "group": {
29
+ "kind": "test",
30
+ "isDefault": true
31
+ },
32
+ "presentation": {
33
+ "reveal": "always",
34
+ "panel": "dedicated"
35
+ },
36
+ "problemMatcher": []
37
+ },
38
+ {
39
+ "label": "test.reporter",
40
+ "type": "shell",
41
+ "command": "node node_modules/@neurodevs/node-tdd/build/workspace/testRunner.cli.js --watchMode standard",
42
+ "promptOnClose": false,
43
+ "group": "test",
44
+ "runOptions": {
45
+ "runOn": "folderOpen"
46
+ },
47
+ "presentation": {
48
+ "panel": "shared",
49
+ "focus": true,
50
+ "reveal": "always"
51
+ },
52
+ "problemMatcher": []
53
+ },
54
+ {
55
+ "label": "shell",
56
+ "type": "shell",
57
+ "command": "${input:command} ${input:optionsCommand}",
58
+ "problemMatcher": [],
59
+ "presentation": {
60
+ "reveal": "always",
61
+ "focus": true,
62
+ "panel": "new",
63
+ "clear": false
64
+ }
65
+ },
66
+ {
67
+ "label": "ndx",
68
+ "type": "shell",
69
+ "command": "ndx ${input:ndxCommand}",
70
+ "problemMatcher": [],
71
+ "presentation": {
72
+ "reveal": "always",
73
+ "focus": true,
74
+ "panel": "new",
75
+ "clear": false
76
+ }
77
+ }
78
+ ],
79
+ "inputs": [
80
+ {
81
+ "id": "command",
82
+ "description": "command",
83
+ "default": "yarn",
84
+ "type": "promptString"
85
+ },
86
+ {
87
+ "id": "optionsCommand",
88
+ "description": "optionsCommand",
89
+ "default": "add",
90
+ "type": "promptString"
91
+ },
92
+ {
93
+ "id": "ndxCommand",
94
+ "description": "ndx command",
95
+ "default": "create.module",
96
+ "type": "promptString"
97
+ }
98
+ ]
99
+ }
package/README.md CHANGED
@@ -1,12 +1,14 @@
1
1
  # node-lsl
2
+
2
3
  Lab Streaming Layer (LSL) for synchronized streaming of multi-modal, time-series data over a network.
3
4
 
4
5
  ## Table of Contents
6
+
5
7
  - [Overview](#overview)
6
8
  - [Installation](#installation)
7
9
  - [Usage](#usage)
8
10
  - [LslStreamOutlet](#lslstreamoutlet)
9
- - [LslEventMarkerEmitter](#LslEventMarkerEmitter)
11
+ - [LslEventMarkerEmitter](#LslEventMarkerEmitter)
10
12
  - [Test Doubles](#test-doubles)
11
13
 
12
14
  ## Overview
@@ -23,9 +25,9 @@ First, you need to install the C++ [liblsl](https://github.com/sccn/liblsl) libr
23
25
 
24
26
  Then, install the package with your preferred package manager (make sure to be in the right directory for your Node project):
25
27
 
26
- `npm install @neurodevs/node-lsl`
28
+ `npm install @neurodevs/node-lsl`
27
29
 
28
- or
30
+ or
29
31
 
30
32
  `yarn add @neurodevs/node-lsl`
31
33
 
@@ -45,13 +47,13 @@ LSL is often used to stream EEG data over a network. For example, to instantiate
45
47
  import { LslStreamOutlet } from '@neurodevs/node-lsl'
46
48
 
47
49
  const outlet = await LslStreamOutlet.Create({
48
- name: 'Muse S (2nd gen)',
49
- type: 'EEG',
50
- sourceId: 'muse-s-eeg',
51
- channelNames: ['TP9', 'AF7', 'AF8', 'TP10', 'AUX'],
52
- channelFormat: 'float32',
53
- sampleRateHz: 256,
54
- chunkSize: 12,
50
+ name: 'Muse S (2nd gen)',
51
+ type: 'EEG',
52
+ sourceId: 'muse-s-eeg',
53
+ channelNames: ['TP9', 'AF7', 'AF8', 'TP10', 'AUX'],
54
+ channelFormat: 'float32',
55
+ sampleRateHz: 256,
56
+ chunkSize: 12,
55
57
  })
56
58
 
57
59
  outlet.pushSample([1, 2, 3, 4, 5])
@@ -67,8 +69,8 @@ import { LslEventMarkerEmitter } from '@neurodevs/node-lsl'
67
69
  const emitter = await LslEventMarkerEmitter.Create()
68
70
 
69
71
  const markers = [
70
- { name: 'phase-1-begin', waitAfterMs: 5000 },
71
- { name: 'phase-1-end', waitAfterMs: 100 },
72
+ { name: 'phase-1-begin', waitAfterMs: 5000 },
73
+ { name: 'phase-1-end', waitAfterMs: 100 },
72
74
  ]
73
75
 
74
76
  const promise = emitter.emitMany(markers)
@@ -1,11 +1,13 @@
1
- import { FakeLiblsl } from '@neurodevs/ndx-native';
1
+ import { FakeLiblsl, FakeLibndx } from '@neurodevs/ndx-native';
2
2
  import AbstractModuleTest from '@neurodevs/node-tdd';
3
- import { OnDataCallback, StreamInletOptions } from '../impl/LslStreamInlet.js';
4
3
  import FakeStreamInfo from '../testDoubles/StreamInfo/FakeStreamInfo.js';
4
+ import { OnDataCallback, StreamInletOptions } from '../impl/LslStreamInlet.js';
5
5
  export default class AbstractPackageTest extends AbstractModuleTest {
6
6
  protected static fakeLiblsl: FakeLiblsl;
7
+ protected static fakeLibndx: FakeLibndx;
7
8
  protected static beforeEach(): Promise<void>;
8
9
  protected static setFakeLiblsl(): void;
10
+ protected static setFakeLibndx(): void;
9
11
  protected static setSpyStreamInfo(): void;
10
12
  protected static setFakeStreamInfo(): void;
11
13
  protected static setSpyStreamInlet(): void;
@@ -1,10 +1,5 @@
1
- import { FakeLiblsl, LiblslAdapter } from '@neurodevs/ndx-native';
1
+ import { FakeLiblsl, FakeLibndx, LiblslAdapter, LibndxAdapter, } from '@neurodevs/ndx-native';
2
2
  import AbstractModuleTest from '@neurodevs/node-tdd';
3
- import LslEventMarkerEmitter from '../impl/LslEventMarkerEmitter.js';
4
- import LslStreamInfo from '../impl/LslStreamInfo.js';
5
- import LslStreamInlet from '../impl/LslStreamInlet.js';
6
- import LslStreamOutlet from '../impl/LslStreamOutlet.js';
7
- import LslWebSocketBridge from '../impl/LslWebSocketBridge.js';
8
3
  import SpyEventMarkerEmitter from '../testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js';
9
4
  import FakeStreamInfo from '../testDoubles/StreamInfo/FakeStreamInfo.js';
10
5
  import SpyStreamInfo from '../testDoubles/StreamInfo/SpyStreamInfo.js';
@@ -14,8 +9,15 @@ import FakeStreamOutlet from '../testDoubles/StreamOutlet/FakeStreamOutlet.js';
14
9
  import SpyLslWebSocketBridge from '../testDoubles/WebSocketBridge/SpyLslWebSocketBridge.js';
15
10
  import FakeWebSocket from '../testDoubles/WebSockets/FakeWebSocket.js';
16
11
  import FakeWebSocketServer from '../testDoubles/WebSockets/FakeWebSocketServer.js';
12
+ import LslWebSocketBridge from '../impl/LslWebSocketBridge.js';
13
+ import BleDeviceController from '../impl/controllers/BleDeviceController.js';
14
+ import LslEventMarkerEmitter from '../impl/LslEventMarkerEmitter.js';
15
+ import LslStreamInfo from '../impl/LslStreamInfo.js';
16
+ import LslStreamInlet from '../impl/LslStreamInlet.js';
17
+ import LslStreamOutlet from '../impl/LslStreamOutlet.js';
17
18
  export default class AbstractPackageTest extends AbstractModuleTest {
18
19
  static fakeLiblsl;
20
+ static fakeLibndx;
19
21
  static async beforeEach() {
20
22
  await super.beforeEach();
21
23
  }
@@ -25,6 +27,13 @@ export default class AbstractPackageTest extends AbstractModuleTest {
25
27
  FakeLiblsl.fakeErrorCode = 0;
26
28
  FakeLiblsl.fakeInfoHandles = [{}];
27
29
  }
30
+ static setFakeLibndx() {
31
+ this.fakeLibndx = new FakeLibndx();
32
+ LibndxAdapter.setInstance(this.fakeLibndx);
33
+ FakeLibndx.resetTestDouble();
34
+ FakeLibndx.fakeResult = { status: 200 };
35
+ BleDeviceController.ndx = this.fakeLibndx;
36
+ }
28
37
  static setSpyStreamInfo() {
29
38
  LslStreamInfo.Class = SpyStreamInfo;
30
39
  SpyStreamInfo.resetTestDouble();
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAc,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,kBAAkB,MAAM,qBAAqB,CAAA;AAGpD,OAAO,qBAAqB,MAAM,kCAAkC,CAAA;AACpE,OAAO,aAAa,MAAM,0BAA0B,CAAA;AACpD,OAAO,cAGN,MAAM,2BAA2B,CAAA;AAClC,OAAO,eAAe,MAAM,4BAA4B,CAAA;AACxD,OAAO,kBAAkB,MAAM,+BAA+B,CAAA;AAC9D,OAAO,qBAAqB,MAAM,4DAA4D,CAAA;AAC9F,OAAO,cAAc,MAAM,6CAA6C,CAAA;AACxE,OAAO,aAAa,MAAM,4CAA4C,CAAA;AACtE,OAAO,eAAe,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,gBAAgB,MAAM,iDAAiD,CAAA;AAC9E,OAAO,qBAAqB,MAAM,yDAAyD,CAAA;AAC3F,OAAO,aAAa,MAAM,4CAA4C,CAAA;AACtE,OAAO,mBAAmB,MAAM,kDAAkD,CAAA;AAElF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,kBAAkB;IACrD,MAAM,CAAC,UAAU,CAAY;IAE7B,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IAES,MAAM,CAAC,aAAa;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;QAClC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE1C,UAAU,CAAC,aAAa,GAAG,CAAC,CAAA;QAC5B,UAAU,CAAC,eAAe,GAAG,CAAC,EAAgB,CAAC,CAAA;IACnD,CAAC;IAES,MAAM,CAAC,gBAAgB;QAC7B,aAAa,CAAC,KAAK,GAAG,aAAa,CAAA;QACnC,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAES,MAAM,CAAC,iBAAiB;QAC9B,aAAa,CAAC,KAAK,GAAG,cAAc,CAAA;QACpC,cAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAES,MAAM,CAAC,iBAAiB;QAC9B,cAAc,CAAC,KAAK,GAAG,cAAc,CAAA;IACzC,CAAC;IAES,MAAM,CAAC,kBAAkB;QAC/B,cAAc,CAAC,KAAK,GAAG,eAAe,CAAA;QACtC,eAAe,CAAC,eAAe,EAAE,CAAA;IACrC,CAAC;IAES,MAAM,CAAC,mBAAmB;QAChC,eAAe,CAAC,KAAK,GAAG,gBAAgB,CAAA;QACxC,gBAAgB,CAAC,eAAe,EAAE,CAAA;IACtC,CAAC;IAES,MAAM,CAAC,wBAAwB;QACrC,qBAAqB,CAAC,KAAK,GAAG,qBAAqB,CAAA;IACvD,CAAC;IAES,MAAM,CAAC,wBAAwB;QACrC,kBAAkB,CAAC,KAAK,GAAG,qBAAqB,CAAA;IACpD,CAAC;IAES,MAAM,CAAC,gBAAgB;QAC7B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAES,MAAM,CAAC,sBAAsB;QACnC,kBAAkB,CAAC,GAAG,GAAG,mBAA+C,CAAA;QACxE,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC;IAES,MAAM,CAAU,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;IAErD,MAAM,CAAU,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACzC,MAAM,CAAU,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACxC,MAAM,CAAU,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAC5C,MAAM,CAAU,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IAEzC,MAAM,CAAU,YAAY,GAAG;QACrC,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;KACpB,CAAA;IAES,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IAEvD,MAAM,CAAU,SAAS,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAU,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;IAC9D,MAAM,CAAU,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAEhE,MAAM,CAAC,KAAK,CAAC,cAAc,CACjC,OAAoC,EACpC,MAAsB;QAEtB,MAAM,cAAc,GAAuB;YACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,GAAG,OAAO;SACb,CAAA;QAED,OAAO,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;IACxD,CAAC"}
1
+ {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":"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"}