@neurodevs/node-lsl 11.4.2 → 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 (143) hide show
  1. package/.vscode/tasks.json +19 -1
  2. package/README.md +8 -9
  3. package/build/__tests__/{AbstractLslTest.d.ts → AbstractPackageTest.d.ts} +5 -4
  4. package/build/__tests__/AbstractPackageTest.js +58 -0
  5. package/build/__tests__/AbstractPackageTest.js.map +1 -0
  6. package/build/__tests__/{modules → impl}/LiblslAdapter.test.d.ts +4 -3
  7. package/build/__tests__/{modules → impl}/LiblslAdapter.test.js +32 -25
  8. package/build/__tests__/impl/LiblslAdapter.test.js.map +1 -0
  9. package/build/__tests__/{modules/EventMarkerOutlet.test.d.ts → impl/LslEventMarkerOutlet.test.d.ts} +5 -4
  10. package/build/__tests__/{modules/EventMarkerOutlet.test.js → impl/LslEventMarkerOutlet.test.js} +32 -25
  11. package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +1 -0
  12. package/build/__tests__/{modules → impl}/LslStreamInfo.test.d.ts +3 -3
  13. package/build/__tests__/{modules → impl}/LslStreamInfo.test.js +17 -16
  14. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -0
  15. package/build/__tests__/impl/LslStreamInlet.test.d.ts +10 -0
  16. package/build/__tests__/{modules → impl}/LslStreamInlet.test.js +9 -9
  17. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -0
  18. package/build/__tests__/{modules → impl}/LslStreamOutlet.test.d.ts +2 -2
  19. package/build/__tests__/{modules → impl}/LslStreamOutlet.test.js +7 -6
  20. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -0
  21. package/build/__tests__/impl/LslWebSocketBridge.test.d.ts +7 -0
  22. package/build/__tests__/impl/LslWebSocketBridge.test.js +63 -0
  23. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -0
  24. package/build/impl/LiblslAdapter.js.map +1 -0
  25. package/build/impl/LslEventMarkerOutlet.d.ts +23 -0
  26. package/build/{modules/EventMarkerOutlet.js → impl/LslEventMarkerOutlet.js} +6 -6
  27. package/build/impl/LslEventMarkerOutlet.js.map +1 -0
  28. package/build/{modules → impl}/LslStreamInfo.js +4 -4
  29. package/build/impl/LslStreamInfo.js.map +1 -0
  30. package/build/{modules → impl}/LslStreamInlet.d.ts +8 -8
  31. package/build/{modules → impl}/LslStreamInlet.js +4 -4
  32. package/build/impl/LslStreamInlet.js.map +1 -0
  33. package/build/{modules → impl}/LslStreamOutlet.d.ts +8 -8
  34. package/build/{modules → impl}/LslStreamOutlet.js +2 -2
  35. package/build/impl/LslStreamOutlet.js.map +1 -0
  36. package/build/impl/LslWebSocketBridge.d.ts +8 -0
  37. package/build/impl/LslWebSocketBridge.js +10 -0
  38. package/build/impl/LslWebSocketBridge.js.map +1 -0
  39. package/build/index.d.ts +26 -22
  40. package/build/index.js +41 -34
  41. package/build/index.js.map +1 -1
  42. package/build/scripts/{demoMarkerOutlet.js → runLslEventMarkerOutlet.js} +3 -3
  43. package/build/scripts/runLslEventMarkerOutlet.js.map +1 -0
  44. package/build/scripts/{demoStreamOutlet.js → runLslStreamOutlet.js} +2 -2
  45. package/build/scripts/runLslStreamOutlet.js.map +1 -0
  46. package/build/testDoubles/{MarkerOutlet/FakeMarkerOutlet.d.ts → EventMarkerOutlet/FakeEventMarkerOutlet.d.ts} +2 -2
  47. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +29 -0
  48. package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +1 -0
  49. package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.d.ts → EventMarkerOutlet/MockEventMarkerOutlet.d.ts} +2 -2
  50. package/build/testDoubles/{MarkerOutlet/MockMarkerOutlet.js → EventMarkerOutlet/MockEventMarkerOutlet.js} +3 -3
  51. package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +1 -0
  52. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +9 -0
  53. package/build/testDoubles/{MarkerOutlet/SpyMarkerOutlet.js → EventMarkerOutlet/SpyEventMarkerOutlet.js} +8 -8
  54. package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +1 -0
  55. package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.d.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts} +2 -2
  56. package/build/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.js → EventMarkerOutlet/ThrowingEventMarkerOutlet.js} +3 -3
  57. package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +1 -0
  58. package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +1 -1
  59. package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +1 -1
  60. package/build/testDoubles/StreamInfo/SpyStreamInfo.js +1 -1
  61. package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +1 -1
  62. package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +10 -0
  63. package/build/testDoubles/StreamInlet/FakeStreamInlet.js +16 -0
  64. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -0
  65. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +7 -0
  66. package/build/testDoubles/{LslInlet/SpyLslInlet.js → StreamInlet/SpyStreamInlet.js} +5 -5
  67. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -0
  68. package/build/testDoubles/{LslOutlet/FakeLslOutlet.d.ts → StreamOutlet/FakeStreamOutlet.d.ts} +9 -10
  69. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +62 -0
  70. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -0
  71. package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.d.ts +6 -0
  72. package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js +13 -0
  73. package/build/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.js.map +1 -0
  74. package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
  75. package/build/testDoubles/generateRandomOutletOptions.js +10 -7
  76. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  77. package/build/types.d.ts +3 -3
  78. package/package.json +20 -8
  79. package/src/__tests__/{AbstractLslTest.ts → AbstractPackageTest.ts} +22 -17
  80. package/src/__tests__/{modules → impl}/LiblslAdapter.test.ts +25 -19
  81. package/src/__tests__/{modules/EventMarkerOutlet.test.ts → impl/LslEventMarkerOutlet.test.ts} +38 -27
  82. package/src/__tests__/{modules → impl}/LslStreamInfo.test.ts +7 -6
  83. package/src/__tests__/{modules → impl}/LslStreamInlet.test.ts +12 -12
  84. package/src/__tests__/{modules → impl}/LslStreamOutlet.test.ts +18 -11
  85. package/src/__tests__/impl/LslWebSocketBridge.test.ts +23 -0
  86. package/src/{modules/EventMarkerOutlet.ts → impl/LslEventMarkerOutlet.ts} +16 -11
  87. package/src/{modules → impl}/LslStreamInfo.ts +1 -1
  88. package/src/{modules → impl}/LslStreamInlet.ts +12 -12
  89. package/src/{modules → impl}/LslStreamOutlet.ts +12 -12
  90. package/src/impl/LslWebSocketBridge.ts +13 -0
  91. package/src/index.ts +37 -29
  92. package/src/scripts/{demoMarkerOutlet.ts → runLslEventMarkerOutlet.ts} +2 -2
  93. package/src/scripts/{demoStreamOutlet.ts → runLslStreamOutlet.ts} +1 -1
  94. package/src/testDoubles/{MarkerOutlet/FakeMarkerOutlet.ts → EventMarkerOutlet/FakeEventMarkerOutlet.ts} +6 -6
  95. package/src/testDoubles/{MarkerOutlet/MockMarkerOutlet.ts → EventMarkerOutlet/MockEventMarkerOutlet.ts} +2 -2
  96. package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +24 -0
  97. package/src/testDoubles/{MarkerOutlet/ThrowingMarkerOutlet.ts → EventMarkerOutlet/ThrowingEventMarkerOutlet.ts} +2 -2
  98. package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +1 -1
  99. package/src/testDoubles/StreamInfo/SpyStreamInfo.ts +1 -1
  100. package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +20 -0
  101. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +16 -0
  102. package/src/testDoubles/{LslOutlet/FakeLslOutlet.ts → StreamOutlet/FakeStreamOutlet.ts} +17 -18
  103. package/src/testDoubles/StreamTransportBridge/FakeStreamTransportBridge.ts +15 -0
  104. package/src/testDoubles/generateRandomOutletOptions.ts +3 -3
  105. package/src/types.ts +3 -3
  106. package/build/__tests__/AbstractLslTest.js +0 -87
  107. package/build/__tests__/AbstractLslTest.js.map +0 -1
  108. package/build/__tests__/modules/EventMarkerOutlet.test.js.map +0 -1
  109. package/build/__tests__/modules/LiblslAdapter.test.js.map +0 -1
  110. package/build/__tests__/modules/LslStreamInfo.test.js.map +0 -1
  111. package/build/__tests__/modules/LslStreamInlet.test.d.ts +0 -10
  112. package/build/__tests__/modules/LslStreamInlet.test.js.map +0 -1
  113. package/build/__tests__/modules/LslStreamOutlet.test.js.map +0 -1
  114. package/build/modules/EventMarkerOutlet.d.ts +0 -23
  115. package/build/modules/EventMarkerOutlet.js.map +0 -1
  116. package/build/modules/LiblslAdapter.js.map +0 -1
  117. package/build/modules/LslStreamInfo.js.map +0 -1
  118. package/build/modules/LslStreamInlet.js.map +0 -1
  119. package/build/modules/LslStreamOutlet.js.map +0 -1
  120. package/build/scripts/demoMarkerOutlet.js.map +0 -1
  121. package/build/scripts/demoStreamOutlet.js.map +0 -1
  122. package/build/testDoubles/LslInlet/FakeLslInlet.d.ts +0 -11
  123. package/build/testDoubles/LslInlet/FakeLslInlet.js +0 -16
  124. package/build/testDoubles/LslInlet/FakeLslInlet.js.map +0 -1
  125. package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +0 -7
  126. package/build/testDoubles/LslInlet/SpyLslInlet.js.map +0 -1
  127. package/build/testDoubles/LslOutlet/FakeLslOutlet.js +0 -59
  128. package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +0 -1
  129. package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js +0 -29
  130. package/build/testDoubles/MarkerOutlet/FakeMarkerOutlet.js.map +0 -1
  131. package/build/testDoubles/MarkerOutlet/MockMarkerOutlet.js.map +0 -1
  132. package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.d.ts +0 -9
  133. package/build/testDoubles/MarkerOutlet/SpyMarkerOutlet.js.map +0 -1
  134. package/build/testDoubles/MarkerOutlet/ThrowingMarkerOutlet.js.map +0 -1
  135. package/src/testDoubles/LslInlet/FakeLslInlet.ts +0 -22
  136. package/src/testDoubles/LslInlet/SpyLslInlet.ts +0 -16
  137. package/src/testDoubles/MarkerOutlet/SpyMarkerOutlet.ts +0 -24
  138. /package/build/{modules → impl}/LiblslAdapter.d.ts +0 -0
  139. /package/build/{modules → impl}/LiblslAdapter.js +0 -0
  140. /package/build/{modules → impl}/LslStreamInfo.d.ts +0 -0
  141. /package/build/scripts/{demoMarkerOutlet.d.ts → runLslEventMarkerOutlet.d.ts} +0 -0
  142. /package/build/scripts/{demoStreamOutlet.d.ts → runLslStreamOutlet.d.ts} +0 -0
  143. /package/src/{modules → impl}/LiblslAdapter.ts +0 -0
@@ -1,20 +1,23 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.default = generateRandomOutletOptions;
4
7
  const crypto_1 = require("crypto");
5
- const test_utils_1 = require("@sprucelabs/test-utils");
8
+ const generate_id_1 = __importDefault(require("@neurodevs/generate-id"));
6
9
  const consts_1 = require("./consts");
7
10
  function generateRandomOutletOptions() {
8
11
  const randomChannelIdx = (0, crypto_1.randomInt)(consts_1.TEST_SUPPORTED_CHANNEL_FORMATS.length);
9
12
  return {
10
- name: (0, test_utils_1.generateId)(),
11
- type: (0, test_utils_1.generateId)(),
12
- channelNames: new Array((0, crypto_1.randomInt)(1, 10)).fill((0, test_utils_1.generateId)()),
13
+ name: (0, generate_id_1.default)(),
14
+ type: (0, generate_id_1.default)(),
15
+ channelNames: new Array((0, crypto_1.randomInt)(1, 10)).fill((0, generate_id_1.default)()),
13
16
  sampleRate: Math.random() * 10,
14
17
  channelFormat: consts_1.TEST_SUPPORTED_CHANNEL_FORMATS[randomChannelIdx],
15
- sourceId: (0, test_utils_1.generateId)(),
16
- manufacturer: (0, test_utils_1.generateId)(),
17
- unit: (0, test_utils_1.generateId)(),
18
+ sourceId: (0, generate_id_1.default)(),
19
+ manufacturer: (0, generate_id_1.default)(),
20
+ unit: (0, generate_id_1.default)(),
18
21
  chunkSize: (0, crypto_1.randomInt)(0, 10),
19
22
  maxBuffered: (0, crypto_1.randomInt)(0, 10),
20
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":";;AAKA,8CAeC;AApBD,mCAAkC;AAClC,uDAAmD;AAEnD,qCAAyD;AAEzD,SAAwB,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,IAAA,kBAAS,EAAC,uCAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,IAAA,uBAAU,GAAE;QAClB,IAAI,EAAE,IAAA,uBAAU,GAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,uBAAU,GAAE,CAAC;QAC5D,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAC9B,aAAa,EAAE,uCAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,IAAA,uBAAU,GAAE;QACtB,YAAY,EAAE,IAAA,uBAAU,GAAE;QAC1B,IAAI,EAAE,IAAA,uBAAU,GAAE;QAClB,SAAS,EAAE,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,WAAW,EAAE,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC;KACZ,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"generateRandomOutletOptions.js","sourceRoot":"","sources":["../../src/testDoubles/generateRandomOutletOptions.ts"],"names":[],"mappings":";;;;;AAKA,8CAeC;AApBD,mCAAkC;AAClC,yEAA+C;AAE/C,qCAAyD;AAEzD,SAAwB,2BAA2B;IAC/C,MAAM,gBAAgB,GAAG,IAAA,kBAAS,EAAC,uCAA8B,CAAC,MAAM,CAAC,CAAA;IAEzE,OAAO;QACH,IAAI,EAAE,IAAA,qBAAU,GAAE;QAClB,IAAI,EAAE,IAAA,qBAAU,GAAE;QAClB,YAAY,EAAE,IAAI,KAAK,CAAC,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAA,qBAAU,GAAE,CAAC;QAC5D,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;QAC9B,aAAa,EAAE,uCAA8B,CAAC,gBAAgB,CAAC;QAC/D,QAAQ,EAAE,IAAA,qBAAU,GAAE;QACtB,YAAY,EAAE,IAAA,qBAAU,GAAE;QAC1B,IAAI,EAAE,IAAA,qBAAU,GAAE;QAClB,SAAS,EAAE,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,WAAW,EAAE,IAAA,kBAAS,EAAC,CAAC,EAAE,EAAE,CAAC;KACT,CAAA;AAC5B,CAAC"}
package/build/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { FuncObj, FieldType } from 'ffi-rs';
2
2
  import { CHANNEL_FORMATS } from './consts';
3
- import { LslInlet } from './modules/LslStreamInlet';
4
- import { LslOutlet } from './modules/LslStreamOutlet';
5
- export type StreamFixuture = LslOutlet | LslInlet;
3
+ import { StreamInlet } from './impl/LslStreamInlet';
4
+ import { StreamOutlet } from './impl/LslStreamOutlet';
5
+ export type StreamFixuture = StreamOutlet | StreamInlet;
6
6
  export type ChannelFormat = (typeof CHANNEL_FORMATS)[number];
7
7
  export interface DurationMarker {
8
8
  name: string;
package/package.json CHANGED
@@ -1,12 +1,23 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "11.4.2",
3
+ "version": "12.0.0",
4
4
  "description": "Lab Streaming Layer (LSL) bindings for Node",
5
- "main": "build/index.js",
5
+ "keywords": [
6
+ "nodejs",
7
+ "typescript",
8
+ "tdd"
9
+ ],
10
+ "license": "MIT",
11
+ "author": "Eric Yates <hello@ericthecurious.com>",
12
+ "homepage": "https://github.com/neurodevs/node-lsl",
6
13
  "repository": {
7
14
  "type": "git",
8
15
  "url": "git+https://github.com/neurodevs/node-lsl.git"
9
16
  },
17
+ "bugs": {
18
+ "url": "https://github.com/neurodevs/node-lsl/issues"
19
+ },
20
+ "main": "build/index.js",
10
21
  "scripts": {
11
22
  "build.ci": "yarn run build.tsc && yarn run build.resolve-paths && yarn run lint",
12
23
  "build.dev": "yarn run build.tsc --sourceMap ; yarn run resolve-paths.lint",
@@ -38,6 +49,7 @@
38
49
  "ref-napi": "^3.0.3"
39
50
  },
40
51
  "devDependencies": {
52
+ "@neurodevs/generate-id": "^1.0.0",
41
53
  "@sprucelabs/jest-json-reporter": "^8.0.542",
42
54
  "@sprucelabs/resolve-path-aliases": "^2.0.516",
43
55
  "@sprucelabs/test": "^9.0.59",
@@ -55,12 +67,6 @@
55
67
  "tsc-watch": "^6.2.1",
56
68
  "typescript": "^5.6.3"
57
69
  },
58
- "skill": {
59
- "namespace": "node-lsl",
60
- "upgradeIgnoreList": [
61
- "@sprucelabs/spruce-test-fixtures"
62
- ]
63
- },
64
70
  "jest": {
65
71
  "testRunner": "jest-circus/runner",
66
72
  "maxWorkers": 4,
@@ -78,5 +84,11 @@
78
84
  "moduleNameMapper": {
79
85
  "^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
80
86
  }
87
+ },
88
+ "skill": {
89
+ "namespace": "node-lsl",
90
+ "upgradeIgnoreList": [
91
+ "@sprucelabs/spruce-test-fixtures"
92
+ ]
81
93
  }
82
94
  }
@@ -1,18 +1,19 @@
1
- import AbstractSpruceTest, { generateId } from '@sprucelabs/test-utils'
2
- import EventMarkerOutlet from '../modules/EventMarkerOutlet'
3
- import LiblslAdapter from '../modules/LiblslAdapter'
4
- import LslStreamInfo from '../modules/LslStreamInfo'
5
- import LslStreamInlet from '../modules/LslStreamInlet'
1
+ import AbstractSpruceTest from '@sprucelabs/test-utils'
2
+ import generateId from '@neurodevs/generate-id'
3
+ import LiblslAdapter from '../impl/LiblslAdapter'
4
+ import LslEventMarkerOutlet from '../impl/LslEventMarkerOutlet'
5
+ import LslStreamInfo from '../impl/LslStreamInfo'
6
+ import LslStreamInlet from '../impl/LslStreamInlet'
6
7
 
7
- import LslStreamOutlet from '../modules/LslStreamOutlet'
8
+ import LslStreamOutlet from '../impl/LslStreamOutlet'
9
+ import SpyEventMarkerOutlet from '../testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet'
8
10
  import FakeLiblsl from '../testDoubles/Liblsl/FakeLiblsl'
9
- import { SpyLslInlet } from '../testDoubles/LslInlet/SpyLslInlet'
10
- import FakeLslOutlet from '../testDoubles/LslOutlet/FakeLslOutlet'
11
- import SpyMarkerOutlet from '../testDoubles/MarkerOutlet/SpyMarkerOutlet'
12
11
  import FakeStreamInfo from '../testDoubles/StreamInfo/FakeStreamInfo'
13
12
  import SpyStreamInfo from '../testDoubles/StreamInfo/SpyStreamInfo'
13
+ import { SpyStreamInlet } from '../testDoubles/StreamInlet/SpyStreamInlet'
14
+ import FakeStreamOutlet from '../testDoubles/StreamOutlet/FakeStreamOutlet'
14
15
 
15
- export default class AbstractLslTest extends AbstractSpruceTest {
16
+ export default class AbstractPackageTest extends AbstractSpruceTest {
16
17
  protected static fakeLiblsl: FakeLiblsl
17
18
 
18
19
  protected static async beforeEach() {
@@ -35,17 +36,21 @@ export default class AbstractLslTest extends AbstractSpruceTest {
35
36
  FakeStreamInfo.resetTestDouble()
36
37
  }
37
38
 
38
- protected static setSpyLslInlet() {
39
- LslStreamInlet.Class = SpyLslInlet
39
+ protected static setSpyStreamInlet() {
40
+ LslStreamInlet.Class = SpyStreamInlet
40
41
  }
41
42
 
42
- protected static setFakeLslOutlet() {
43
- LslStreamOutlet.Class = FakeLslOutlet
44
- FakeLslOutlet.resetTestDouble()
43
+ protected static setFakeStreamOutlet() {
44
+ LslStreamOutlet.Class = FakeStreamOutlet
45
+ FakeStreamOutlet.resetTestDouble()
45
46
  }
46
47
 
47
- protected static setSpyMarkerOutlet() {
48
- EventMarkerOutlet.Class = SpyMarkerOutlet
48
+ protected static setSpyEventMarkerOutlet() {
49
+ LslEventMarkerOutlet.Class = SpyEventMarkerOutlet
50
+ }
51
+
52
+ protected static generateId() {
53
+ return generateId()
49
54
  }
50
55
 
51
56
  protected static readonly name_ = generateId()
@@ -1,7 +1,8 @@
1
1
  import { randomInt } from 'crypto'
2
- import { test, assert, generateId } from '@sprucelabs/test-utils'
2
+ import { test, assert } from '@sprucelabs/test-utils'
3
+ import generateId from '@neurodevs/generate-id'
3
4
  import { DataType, OpenParams } from 'ffi-rs'
4
- import LiblslAdapter from '../../modules/LiblslAdapter'
5
+ import LiblslAdapter from '../../impl/LiblslAdapter'
5
6
  import FakeLiblsl from '../../testDoubles/Liblsl/FakeLiblsl'
6
7
  import {
7
8
  BoundChild,
@@ -14,10 +15,10 @@ import {
14
15
  LiblslBindings,
15
16
  LslChannel,
16
17
  } from '../../types'
17
- import AbstractLslTest from '../AbstractLslTest'
18
+ import AbstractPackageTest from '../AbstractPackageTest'
18
19
 
19
- export default class LiblslAdapterTest extends AbstractLslTest {
20
- private static lsl: Liblsl
20
+ export default class LiblslAdapterTest extends AbstractPackageTest {
21
+ private static instance: Liblsl
21
22
  private static libraryPath?: string
22
23
  private static libraryOptions?: Record<string, any>
23
24
  private static fakeBindings: LiblslBindings
@@ -85,7 +86,12 @@ export default class LiblslAdapterTest extends AbstractLslTest {
85
86
  }
86
87
 
87
88
  LiblslAdapter.resetInstance()
88
- this.lsl = LiblslAdapter.getInstance()
89
+ this.instance = LiblslAdapter.getInstance()
90
+ }
91
+
92
+ @test()
93
+ protected static async createsInstance() {
94
+ assert.isTruthy(this.instance, 'Failed to create instance!')
89
95
  }
90
96
 
91
97
  @test()
@@ -213,7 +219,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
213
219
  @test()
214
220
  protected static async canCreateStreamInfoWithRequiredParams() {
215
221
  const options = this.generateRandomCreateStreamInfoOptions()
216
- const actual = this.lsl.createStreamInfo(options)
222
+ const actual = this.instance.createStreamInfo(options)
217
223
 
218
224
  assert.isEqual(actual, this.fakeStreamInfo)
219
225
  assert.isEqualDeep(this.createStreamInfoParams, Object.values(options))
@@ -235,7 +241,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
235
241
  sample: expected,
236
242
  timestamp,
237
243
  }
238
- this.lsl.pushSampleFloatTimestamp(options)
244
+ this.instance.pushSampleFloatTimestamp(options)
239
245
 
240
246
  assert.isEqualDeep(this.pushSampleFloatTimestampParams, [
241
247
  this.fakeOutlet,
@@ -253,7 +259,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
253
259
  sample: expected,
254
260
  timestamp,
255
261
  }
256
- this.lsl.pushSampleStringTimestamp(options)
262
+ this.instance.pushSampleStringTimestamp(options)
257
263
  assert.isEqual(
258
264
  this.pushSampleStringTimestampParams?.[0],
259
265
  this.fakeOutlet
@@ -267,7 +273,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
267
273
  const info = this.createRandomStreamInfo()
268
274
  const channel: LslChannel = this.generateRandomChannelValues()
269
275
 
270
- this.lsl.appendChannelsToStreamInfo({
276
+ this.instance.appendChannelsToStreamInfo({
271
277
  info,
272
278
  channels: [channel],
273
279
  })
@@ -304,7 +310,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
304
310
  const channel1 = this.generateRandomChannelValues()
305
311
  const channel2 = this.generateRandomChannelValues()
306
312
 
307
- this.lsl.appendChannelsToStreamInfo({
313
+ this.instance.appendChannelsToStreamInfo({
308
314
  info,
309
315
  channels: [channel1, channel2],
310
316
  })
@@ -324,23 +330,23 @@ export default class LiblslAdapterTest extends AbstractLslTest {
324
330
  protected static async canDestroyOutlet() {
325
331
  const outlet = this.createRandomOutlet()
326
332
  const options = { outlet }
327
- this.lsl.destroyOutlet(options)
333
+ this.instance.destroyOutlet(options)
328
334
 
329
335
  assert.isEqualDeep(this.destroyOutletParams, Object.values(options))
330
336
  }
331
337
 
332
338
  @test()
333
339
  protected static async callingLocalClockTwiceReturnsDifferentTimestamps() {
334
- const t1 = this.lsl.localClock()
340
+ const t1 = this.instance.localClock()
335
341
  await this.wait(10)
336
- const t2 = this.lsl.localClock()
342
+ const t2 = this.instance.localClock()
337
343
  assert.isNotEqual(t1, t2)
338
344
  }
339
345
 
340
346
  @test()
341
347
  protected static async localClockBindingReceivesEmptyArray() {
342
348
  delete this.localClockParams
343
- this.lsl.localClock()
349
+ this.instance.localClock()
344
350
  assert.isEqualDeep(this.localClockParams, [])
345
351
  }
346
352
 
@@ -349,7 +355,7 @@ export default class LiblslAdapterTest extends AbstractLslTest {
349
355
  delete process.env.LIBLSL_PATH
350
356
 
351
357
  LiblslAdapter.resetInstance()
352
- this.lsl = LiblslAdapter.getInstance()
358
+ this.instance = LiblslAdapter.getInstance()
353
359
 
354
360
  assert.isEqual(
355
361
  this.ffiRsOpenOptions?.path,
@@ -365,20 +371,20 @@ export default class LiblslAdapterTest extends AbstractLslTest {
365
371
  }
366
372
 
367
373
  private static createRandomStreamInfo() {
368
- return this.lsl.createStreamInfo(
374
+ return this.instance.createStreamInfo(
369
375
  this.generateRandomCreateStreamInfoOptions()
370
376
  )
371
377
  }
372
378
 
373
379
  private static createRandomOutlet() {
374
380
  const options = this.createRandomOptions()
375
- const outlet = this.lsl.createOutlet(options)
381
+ const outlet = this.instance.createOutlet(options)
376
382
  return { options, outlet }
377
383
  }
378
384
 
379
385
  private static createRandomInlet() {
380
386
  const options = this.createRandomOptions()
381
- const inlet = this.lsl.createInlet(options)
387
+ const inlet = this.instance.createInlet(options)
382
388
  return { options, inlet }
383
389
  }
384
390
 
@@ -1,28 +1,34 @@
1
1
  import { randomInt } from 'crypto'
2
- import { assert, generateId, test } from '@sprucelabs/test-utils'
3
- import EventMarkerOutlet from '../../modules/EventMarkerOutlet'
4
- import { LslOutletOptions } from '../../modules/LslStreamOutlet'
2
+ import { assert, test } from '@sprucelabs/test-utils'
3
+ import generateId from '@neurodevs/generate-id'
4
+ import LslEventMarkerOutlet from '../../impl/LslEventMarkerOutlet'
5
+ import { StreamOutletOptions } from '../../impl/LslStreamOutlet'
6
+ import SpyEventMarkerOutlet from '../../testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet'
5
7
  import generateRandomOutletOptions from '../../testDoubles/generateRandomOutletOptions'
6
- import FakeLslOutlet from '../../testDoubles/LslOutlet/FakeLslOutlet'
7
- import SpyMarkerOutlet from '../../testDoubles/MarkerOutlet/SpyMarkerOutlet'
8
- import AbstractLslTest from '../AbstractLslTest'
8
+ import FakeStreamOutlet from '../../testDoubles/StreamOutlet/FakeStreamOutlet'
9
+ import AbstractPackageTest from '../AbstractPackageTest'
9
10
 
10
- export default class EventMarkerOutletTest extends AbstractLslTest {
11
- private static instance: SpyMarkerOutlet
11
+ export default class EventMarkerOutletTest extends AbstractPackageTest {
12
+ private static instance: SpyEventMarkerOutlet
12
13
 
13
14
  protected static async beforeEach() {
14
15
  await super.beforeEach()
15
16
 
16
17
  this.setFakeLiblsl()
17
- this.setFakeLslOutlet()
18
- this.setSpyMarkerOutlet()
18
+ this.setFakeStreamOutlet()
19
+ this.setSpyEventMarkerOutlet()
19
20
 
20
- this.instance = await this.EventMarkerOutlet()
21
+ this.instance = await this.LslEventMarkerOutlet()
22
+ }
23
+
24
+ @test()
25
+ protected static async createsInstance() {
26
+ assert.isTruthy(this.instance, 'Failed to create instance!')
21
27
  }
22
28
 
23
29
  @test()
24
30
  protected static async loadsWithEventMarkerSpecificOptions() {
25
- assert.isEqualDeep(FakeLslOutlet.callsToConstructor[0].options, {
31
+ assert.isEqualDeep(FakeStreamOutlet.callsToConstructor[0].options, {
26
32
  name: 'Event markers',
27
33
  type: 'Markers',
28
34
  channelNames: ['Markers'],
@@ -39,9 +45,12 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
39
45
  @test()
40
46
  protected static async canOverrideDefaultOptions() {
41
47
  const options = generateRandomOutletOptions()
42
- await this.EventMarkerOutlet(options)
48
+ await this.LslEventMarkerOutlet(options)
43
49
 
44
- assert.isEqualDeep(FakeLslOutlet.callsToConstructor[1].options, options)
50
+ assert.isEqualDeep(
51
+ FakeStreamOutlet.callsToConstructor[1].options,
52
+ options
53
+ )
45
54
  }
46
55
 
47
56
  @test()
@@ -52,7 +61,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
52
61
  const marker = markers[0]
53
62
 
54
63
  assert.isEqual(
55
- FakeLslOutlet.callsToPushSample[0][0],
64
+ FakeStreamOutlet.callsToPushSample[0][0],
56
65
  marker.name,
57
66
  'Pushed the wrong marker!'
58
67
  )
@@ -64,7 +73,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
64
73
  protected static async pushingTwoMarkersIncrementsHitCountAndWaitTimeTwice() {
65
74
  const markers = await this.pushTotalMarkers(2)
66
75
 
67
- assert.isEqual(FakeLslOutlet.callsToPushSample.length, 2)
76
+ assert.isEqual(FakeStreamOutlet.callsToPushSample.length, 2)
68
77
 
69
78
  assert.isEqual(
70
79
  this.instance.totalWaitTimeMs,
@@ -78,7 +87,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
78
87
  protected static async canStopEventMarkersMidPush(bailIdx: number) {
79
88
  let hitCount = 0
80
89
 
81
- const outlet = this.instance.getLslOutlet()
90
+ const outlet = this.instance.getStreamOutlet()
82
91
 
83
92
  outlet.pushSample = () => {
84
93
  hitCount += 1
@@ -98,7 +107,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
98
107
 
99
108
  let hitCount = 0
100
109
 
101
- const outlet = this.instance.getLslOutlet()
110
+ const outlet = this.instance.getStreamOutlet()
102
111
 
103
112
  outlet.pushSample = () => {
104
113
  hitCount++
@@ -127,7 +136,7 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
127
136
  void this.pushTotalMarkers(2, 100)
128
137
  this.instance.stop()
129
138
 
130
- this.lslOutlet.pushSample = () =>
139
+ this.streamOutlet.pushSample = () =>
131
140
  assert.fail('Should not have been called')
132
141
  }
133
142
 
@@ -136,16 +145,16 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
136
145
  const markerName = generateId()
137
146
  this.instance.pushMarker(markerName)
138
147
 
139
- assert.isEqual(FakeLslOutlet.callsToPushSample[0][0], markerName)
148
+ assert.isEqual(FakeStreamOutlet.callsToPushSample[0][0], markerName)
140
149
  }
141
150
 
142
- private static get lslOutlet() {
143
- return this.instance.getLslOutlet()
151
+ private static get streamOutlet() {
152
+ return this.instance.getStreamOutlet()
144
153
  }
145
154
 
146
155
  private static async setupOutlet() {
147
- EventMarkerOutlet.Class = EventMarkerOutlet as any
148
- this.instance = await this.EventMarkerOutlet()
156
+ LslEventMarkerOutlet.Class = LslEventMarkerOutlet as any
157
+ this.instance = await this.LslEventMarkerOutlet()
149
158
  }
150
159
 
151
160
  private static async pushTotalMarkers(total: number, durationMs?: number) {
@@ -165,9 +174,11 @@ export default class EventMarkerOutletTest extends AbstractLslTest {
165
174
  }
166
175
  }
167
176
 
168
- private static async EventMarkerOutlet(
169
- options?: Partial<LslOutletOptions>
177
+ private static async LslEventMarkerOutlet(
178
+ options?: Partial<StreamOutletOptions>
170
179
  ) {
171
- return (await EventMarkerOutlet.Create(options)) as SpyMarkerOutlet
180
+ return (await LslEventMarkerOutlet.Create(
181
+ options
182
+ )) as SpyEventMarkerOutlet
172
183
  }
173
184
  }
@@ -1,10 +1,11 @@
1
- import { test, assert, generateId } from '@sprucelabs/test-utils'
1
+ import { test, assert } from '@sprucelabs/test-utils'
2
+ import generateId from '@neurodevs/generate-id'
2
3
  import { CHANNEL_FORMATS } from '../../consts'
3
- import LslStreamInfo, { StreamInfoOptions } from '../../modules/LslStreamInfo'
4
+ import LslStreamInfo, { StreamInfoOptions } from '../../impl/LslStreamInfo'
4
5
  import SpyStreamInfo from '../../testDoubles/StreamInfo/SpyStreamInfo'
5
- import AbstractLslTest from '../AbstractLslTest'
6
+ import AbstractPackageTest from '../AbstractPackageTest'
6
7
 
7
- export default class LslStreamInfoTest extends AbstractLslTest {
8
+ export default class LslStreamInfoTest extends AbstractPackageTest {
8
9
  private static instance: SpyStreamInfo
9
10
 
10
11
  protected static async beforeEach() {
@@ -16,8 +17,8 @@ export default class LslStreamInfoTest extends AbstractLslTest {
16
17
  }
17
18
 
18
19
  @test()
19
- protected static async canCreateLslStreamInfo() {
20
- assert.isTruthy(this.instance, 'Instance should be created!')
20
+ protected static async createsInstance() {
21
+ assert.isTruthy(this.instance, 'Failed to create instance!')
21
22
  }
22
23
 
23
24
  @test()
@@ -1,24 +1,24 @@
1
1
  import { test, assert } from '@sprucelabs/test-utils'
2
- import LslStreamInlet, { LslInletOptions } from '../../modules/LslStreamInlet'
3
- import { SpyLslInlet } from '../../testDoubles/LslInlet/SpyLslInlet'
2
+ import LslStreamInlet, { StreamInletOptions } from '../../impl/LslStreamInlet'
4
3
  import FakeStreamInfo from '../../testDoubles/StreamInfo/FakeStreamInfo'
5
- import AbstractLslTest from '../AbstractLslTest'
4
+ import { SpyStreamInlet } from '../../testDoubles/StreamInlet/SpyStreamInlet'
5
+ import AbstractPackageTest from '../AbstractPackageTest'
6
6
 
7
- export default class LslStreamInletTest extends AbstractLslTest {
8
- private static instance: SpyLslInlet
7
+ export default class LslStreamInletTest extends AbstractPackageTest {
8
+ private static instance: SpyStreamInlet
9
9
 
10
10
  protected static async beforeEach() {
11
11
  await super.beforeEach()
12
12
 
13
- this.setSpyLslInlet()
13
+ this.setSpyStreamInlet()
14
14
  this.setFakeStreamInfo()
15
15
 
16
16
  this.instance = this.LslStreamInlet()
17
17
  }
18
18
 
19
19
  @test()
20
- protected static async canCreateLslStreamInlet() {
21
- assert.isTruthy(this.instance, 'Instance should be created!')
20
+ protected static async createsInstance() {
21
+ assert.isTruthy(this.instance, 'Failed to create instance!')
22
22
  }
23
23
 
24
24
  @test()
@@ -49,7 +49,7 @@ export default class LslStreamInletTest extends AbstractLslTest {
49
49
  }
50
50
 
51
51
  @test()
52
- protected static async callsBindingsToCreateLslInlet() {
52
+ protected static async callsBindingsToCreateStreamInlet() {
53
53
  const fakeInfo = this.instance.getStreamInfo()
54
54
 
55
55
  assert.isTruthy(fakeInfo, 'Should have created stream info!')
@@ -65,7 +65,7 @@ export default class LslStreamInletTest extends AbstractLslTest {
65
65
  )
66
66
  }
67
67
 
68
- private static LslStreamInlet(options?: Partial<LslInletOptions>) {
68
+ private static LslStreamInlet(options?: Partial<StreamInletOptions>) {
69
69
  const defaultOptions = {
70
70
  channelNames: this.channelNames,
71
71
  channelFormat: 'float32',
@@ -76,7 +76,7 @@ export default class LslStreamInletTest extends AbstractLslTest {
76
76
  chunkSize: this.chunkSize,
77
77
  maxBuffered: this.maxBuffered,
78
78
  ...options,
79
- } as LslInletOptions
80
- return LslStreamInlet.Create(defaultOptions) as SpyLslInlet
79
+ } as StreamInletOptions
80
+ return LslStreamInlet.Create(defaultOptions) as SpyStreamInlet
81
81
  }
82
82
  }
@@ -1,9 +1,10 @@
1
- import { test, assert, generateId } from '@sprucelabs/test-utils'
1
+ import { test, assert } from '@sprucelabs/test-utils'
2
+ import generateId from '@neurodevs/generate-id'
2
3
  import { CHANNEL_FORMATS } from '../../consts'
3
- import { StreamInfo } from '../../modules/LslStreamInfo'
4
+ import { StreamInfo } from '../../impl/LslStreamInfo'
4
5
  import LslStreamOutlet, {
5
- LslOutletOptions,
6
- } from '../../modules/LslStreamOutlet'
6
+ StreamOutletOptions,
7
+ } from '../../impl/LslStreamOutlet'
7
8
  import {
8
9
  TEST_SUPPORTED_CHANNEL_FORMATS,
9
10
  TEST_UNSUPPORTED_CHANNEL_FORMATS,
@@ -13,10 +14,10 @@ import {
13
14
  import generateRandomOutletOptions from '../../testDoubles/generateRandomOutletOptions'
14
15
  import FakeStreamInfo from '../../testDoubles/StreamInfo/FakeStreamInfo'
15
16
  import { ChannelFormat, LslSample } from '../../types'
16
- import AbstractLslTest from '../AbstractLslTest'
17
+ import AbstractPackageTest from '../AbstractPackageTest'
17
18
 
18
- export default class LslStreamOutletTest extends AbstractLslTest {
19
- private static randomOutletOptions: LslOutletOptions
19
+ export default class LslStreamOutletTest extends AbstractPackageTest {
20
+ private static randomOutletOptions: StreamOutletOptions
20
21
 
21
22
  protected static async beforeEach() {
22
23
  await super.beforeEach()
@@ -254,14 +255,18 @@ export default class LslStreamOutletTest extends AbstractLslTest {
254
255
  }
255
256
 
256
257
  private static async createAndAssertThrows(
257
- option: keyof LslOutletOptions,
258
+ option: keyof StreamOutletOptions,
258
259
  value: number | string[] | ChannelFormat,
259
260
  expectedMessage: string
260
261
  ) {
261
262
  const err = await assert.doesThrowAsync(
262
263
  async () => await this.LslStreamOutlet({ [option]: value })
263
264
  )
264
- assert.isTrue(err.message.includes(expectedMessage))
265
+
266
+ assert.isTrue(
267
+ err.message.includes(expectedMessage),
268
+ 'Did not receive the expected error!'
269
+ )
265
270
  }
266
271
 
267
272
  private static async StringOutlet() {
@@ -272,7 +277,9 @@ export default class LslStreamOutletTest extends AbstractLslTest {
272
277
  return await this.LslStreamOutlet({ channelFormat: 'float32' })
273
278
  }
274
279
 
275
- private static async LslStreamOutlet(options?: Partial<LslOutletOptions>) {
280
+ private static async LslStreamOutlet(
281
+ options?: Partial<StreamOutletOptions>
282
+ ) {
276
283
  return await LslStreamOutlet.Create({
277
284
  ...this.randomOutletOptions,
278
285
  ...options,
@@ -281,7 +288,7 @@ export default class LslStreamOutletTest extends AbstractLslTest {
281
288
  }
282
289
 
283
290
  class CheckingOutlet extends LslStreamOutlet {
284
- public constructor(info: StreamInfo, options: LslOutletOptions) {
291
+ public constructor(info: StreamInfo, options: StreamOutletOptions) {
285
292
  super(info, options)
286
293
  }
287
294
  }
@@ -0,0 +1,23 @@
1
+ import AbstractSpruceTest, { test, assert } from '@sprucelabs/test-utils'
2
+ import LslWebSocketBridge, {
3
+ StreamTransportBridge,
4
+ } from '../../impl/LslWebSocketBridge'
5
+
6
+ export default class LslWebSocketBridgeTest extends AbstractSpruceTest {
7
+ private static instance: StreamTransportBridge
8
+
9
+ protected static async beforeEach() {
10
+ await super.beforeEach()
11
+
12
+ this.instance = this.LslWebSocketBridge()
13
+ }
14
+
15
+ @test()
16
+ protected static async createsInstance() {
17
+ assert.isTruthy(this.instance, 'Failed to create instance!')
18
+ }
19
+
20
+ private static LslWebSocketBridge() {
21
+ return LslWebSocketBridge.Create()
22
+ }
23
+ }