@neurodevs/node-lsl 10.2.1 → 10.2.2
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.
- package/build/__tests__/AbstractNodeLslTest.d.ts +2 -2
- package/build/__tests__/AbstractNodeLslTest.js +2 -2
- package/build/__tests__/AbstractNodeLslTest.js.map +1 -1
- package/build/__tests__/LslInlet.test.js +2 -2
- package/build/__tests__/LslInlet.test.js.map +1 -1
- package/build/__tests__/TimeMarkerOutlet.test.d.ts +11 -0
- package/build/__tests__/TimeMarkerOutlet.test.js +36 -10
- package/build/__tests__/TimeMarkerOutlet.test.js.map +1 -1
- package/build/components/TimeMarkerOutlet.js +16 -9
- package/build/components/TimeMarkerOutlet.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/AbstractNodeLslTest.ts +2 -2
- package/src/__tests__/LslInlet.test.ts +2 -2
- package/src/__tests__/TimeMarkerOutlet.test.ts +40 -10
- package/src/components/TimeMarkerOutlet.ts +20 -10
|
@@ -8,11 +8,11 @@ export default class AbstractNodeLslTest extends AbstractSpruceTest {
|
|
|
8
8
|
protected static setFakeStreamInfo(): void;
|
|
9
9
|
protected static setSpyLslInlet(): void;
|
|
10
10
|
protected static setSpyTimeMarkerOutlet(): void;
|
|
11
|
-
protected static readonly
|
|
12
|
-
protected static readonly infoName: string;
|
|
11
|
+
protected static readonly name_: string;
|
|
13
12
|
protected static readonly type: string;
|
|
14
13
|
protected static readonly sourceId: string;
|
|
15
14
|
protected static readonly units: string;
|
|
15
|
+
protected static readonly channelNames: string[];
|
|
16
16
|
protected static readonly chunkSize: number;
|
|
17
17
|
protected static readonly maxBuffered: number;
|
|
18
18
|
}
|
|
@@ -69,11 +69,11 @@ class AbstractNodeLslTest extends test_utils_1.default {
|
|
|
69
69
|
TimeMarkerOutlet_1.default.Class = SpyTimeMarkerOutlet_1.default;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
AbstractNodeLslTest.
|
|
73
|
-
AbstractNodeLslTest.infoName = (0, test_utils_1.generateId)();
|
|
72
|
+
AbstractNodeLslTest.name_ = (0, test_utils_1.generateId)();
|
|
74
73
|
AbstractNodeLslTest.type = (0, test_utils_1.generateId)();
|
|
75
74
|
AbstractNodeLslTest.sourceId = (0, test_utils_1.generateId)();
|
|
76
75
|
AbstractNodeLslTest.units = (0, test_utils_1.generateId)();
|
|
76
|
+
AbstractNodeLslTest.channelNames = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
|
|
77
77
|
AbstractNodeLslTest.chunkSize = Math.floor(Math.random() * 100);
|
|
78
78
|
AbstractNodeLslTest.maxBuffered = Math.floor(Math.random() * 100);
|
|
79
79
|
exports.default = AbstractNodeLslTest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractNodeLslTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractNodeLslTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuE;AACvE,kEAA6C;AAC7C,sEAA6C;AAC7C,gFAAuD;AACvD,sFAAiE;AACjE,2EAAkD;AAClD,mFAA0D;AAC1D,4DAAwD;AACxD,uFAA8D;AAC9D,6FAAoE;AAEpE,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,gBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAES,MAAM,CAAC,mBAAmB;QAChC,uBAAa,CAAC,KAAK,GAAG,0BAAgB,CAAA;IAC1C,CAAC;IAES,MAAM,CAAC,iBAAiB;QAC9B,uBAAa,CAAC,KAAK,GAAG,wBAAc,CAAA;QACpC,wBAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAES,MAAM,CAAC,cAAc;QAC3B,kBAAQ,CAAC,KAAK,GAAG,yBAAW,CAAA;IAChC,CAAC;IAES,MAAM,CAAC,sBAAsB;QACnC,0BAAoB,CAAC,KAAK,GAAG,6BAAmB,CAAA;IACpD,CAAC;;AAEyB,
|
|
1
|
+
{"version":3,"file":"AbstractNodeLslTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractNodeLslTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuE;AACvE,kEAA6C;AAC7C,sEAA6C;AAC7C,gFAAuD;AACvD,sFAAiE;AACjE,2EAAkD;AAClD,mFAA0D;AAC1D,4DAAwD;AACxD,uFAA8D;AAC9D,6FAAoE;AAEpE,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,gBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAES,MAAM,CAAC,mBAAmB;QAChC,uBAAa,CAAC,KAAK,GAAG,0BAAgB,CAAA;IAC1C,CAAC;IAES,MAAM,CAAC,iBAAiB;QAC9B,uBAAa,CAAC,KAAK,GAAG,wBAAc,CAAA;QACpC,wBAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAES,MAAM,CAAC,cAAc;QAC3B,kBAAQ,CAAC,KAAK,GAAG,yBAAW,CAAA;IAChC,CAAC;IAES,MAAM,CAAC,sBAAsB;QACnC,0BAAoB,CAAC,KAAK,GAAG,6BAAmB,CAAA;IACpD,CAAC;;AAEyB,yBAAK,GAAG,IAAA,uBAAU,GAAE,CAAA;AACpB,wBAAI,GAAG,IAAA,uBAAU,GAAE,CAAA;AACnB,4BAAQ,GAAG,IAAA,uBAAU,GAAE,CAAA;AACvB,yBAAK,GAAG,IAAA,uBAAU,GAAE,CAAA;AACpB,gCAAY,GAAG,CAAC,IAAA,uBAAU,GAAE,EAAE,IAAA,uBAAU,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;kBArCtD,mBAAmB"}
|
|
@@ -42,7 +42,7 @@ class LslInletTest extends AbstractNodeLslTest_1.default {
|
|
|
42
42
|
channelNames: this.channelNames,
|
|
43
43
|
channelFormat: 'float32',
|
|
44
44
|
sampleRate: 0,
|
|
45
|
-
name: this.
|
|
45
|
+
name: this.name_,
|
|
46
46
|
type: this.type,
|
|
47
47
|
sourceId: this.sourceId,
|
|
48
48
|
}, 'Stream info should have expected options!');
|
|
@@ -65,7 +65,7 @@ class LslInletTest extends AbstractNodeLslTest_1.default {
|
|
|
65
65
|
channelNames: this.channelNames,
|
|
66
66
|
channelFormat: 'float32',
|
|
67
67
|
sampleRate: 0,
|
|
68
|
-
name: this.
|
|
68
|
+
name: this.name_,
|
|
69
69
|
type: this.type,
|
|
70
70
|
sourceId: this.sourceId,
|
|
71
71
|
chunkSize: this.chunkSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslInlet.test.js","sourceRoot":"","sources":["../../src/__tests__/LslInlet.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uDAAkE;AAClE,sEAAkE;AAClE,mFAA0D;AAE1D,gFAAuD;AAEvD,MAAqB,YAAa,SAAQ,6BAAmB;IAG/C,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACpC,mBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAA;IACjE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS;QACxB,aAAa;QACb,GAAG,EAAE,CAAC,kBAAQ,CAAC,MAAM,EAAE,CAC1B,CAAA;QACD,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAC/C,UAAU,EAAE;gBACR,cAAc;gBACd,eAAe;gBACf,YAAY;gBACZ,WAAW;gBACX,aAAa;aAChB;SACJ,CAAC,CAAA;IACN,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,oCAAoC;QACvD,mBAAM,CAAC,WAAW,CACd,wBAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACpC;YACI,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"LslInlet.test.js","sourceRoot":"","sources":["../../src/__tests__/LslInlet.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uDAAkE;AAClE,sEAAkE;AAClE,mFAA0D;AAE1D,gFAAuD;AAEvD,MAAqB,YAAa,SAAQ,6BAAmB;IAG/C,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iBAAiB;QACpC,mBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAA;IACjE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,GAAG,GAAG,mBAAM,CAAC,SAAS;QACxB,aAAa;QACb,GAAG,EAAE,CAAC,kBAAQ,CAAC,MAAM,EAAE,CAC1B,CAAA;QACD,wBAAW,CAAC,WAAW,CAAC,GAAG,EAAE,oBAAoB,EAAE;YAC/C,UAAU,EAAE;gBACR,cAAc;gBACd,eAAe;gBACf,YAAY;gBACZ,WAAW;gBACX,aAAa;aAChB;SACJ,CAAC,CAAA;IACN,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,oCAAoC;QACvD,mBAAM,CAAC,WAAW,CACd,wBAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACpC;YACI,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,EACD,2CAA2C,CAC9C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAEnD,mBAAM,CAAC,WAAW,CACd,QAAQ,CAAC,OAAO,EAAE,EAClB,YAAY,EACZ,8BAA8B,CACjC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,6BAA6B;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;QAE9C,mBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,kCAAkC,CAAC,CAAA;QAE7D,mBAAM,CAAC,WAAW,CACd,IAAI,CAAC,UAAU,CAAC,sBAAsB,EACtC;YACI,IAAI,EAAE,QAAQ,CAAC,eAAe;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,EACD,iCAAiC,CACpC,CAAA;IACL,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,OAAkC;QACtD,MAAM,cAAc,GAAG;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,SAAS;YACxB,UAAU,EAAE,CAAC;YACb,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,OAAO;SACM,CAAA;QACpB,OAAO,kBAAQ,CAAC,MAAM,CAAC,cAAc,CAAgB,CAAA;IACzD,CAAC;CACJ;AA5FD,+BA4FC;AA/E0B;IADtB,IAAA,iBAAI,GAAE;2CAGN;AAGsB;IADtB,IAAA,iBAAI,GAAE;0DAeN;AAGsB;IADtB,IAAA,iBAAI,GAAE;8DAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;gDASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;uDAeN"}
|
|
@@ -10,8 +10,19 @@ export default class TimeMarkerOutletTest extends AbstractNodeLslTest {
|
|
|
10
10
|
protected static canStartAgainAfterStopping(): Promise<void>;
|
|
11
11
|
protected static doesNotWaitIfStopped(): Promise<void>;
|
|
12
12
|
protected static clearsTheTimeoutOnStop(): Promise<void>;
|
|
13
|
+
protected static createsStreamInfoWithCorrectOptions(): Promise<void>;
|
|
13
14
|
private static setupTimeMarkerImpl;
|
|
14
15
|
private static pushTotalMarkers;
|
|
15
16
|
private static generateDurationMarkerValues;
|
|
17
|
+
protected static readonly name_ = "Time markers";
|
|
18
|
+
protected static readonly type = "Markers";
|
|
19
|
+
protected static readonly channelNames: string[];
|
|
20
|
+
protected static readonly channelFormat = "string";
|
|
21
|
+
protected static readonly sourceId = "time-markers";
|
|
22
|
+
protected static readonly manufacturer = "N/A";
|
|
23
|
+
protected static readonly unit = "N/A";
|
|
24
|
+
protected static readonly sampleRate = 0;
|
|
25
|
+
protected static readonly chunkSize = 0;
|
|
26
|
+
protected static readonly maxBuffered = 0;
|
|
16
27
|
private static Outlet;
|
|
17
28
|
}
|
|
@@ -12,27 +12,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const crypto_1 = require("crypto");
|
|
13
13
|
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
14
14
|
const TimeMarkerOutlet_1 = __importDefault(require("../components/TimeMarkerOutlet"));
|
|
15
|
+
const FakeStreamInfo_1 = __importDefault(require("../testDoubles/FakeStreamInfo"));
|
|
15
16
|
const generateRandomOutletOptions_1 = __importDefault(require("../testDoubles/generateRandomOutletOptions"));
|
|
16
17
|
const AbstractNodeLslTest_1 = __importDefault(require("./AbstractNodeLslTest"));
|
|
17
18
|
class TimeMarkerOutletTest extends AbstractNodeLslTest_1.default {
|
|
18
19
|
static async beforeEach() {
|
|
19
20
|
await super.beforeEach();
|
|
21
|
+
this.setFakeStreamInfo();
|
|
20
22
|
this.setSpyTimeMarkerOutlet();
|
|
21
23
|
this.setFakeLiblsl();
|
|
22
24
|
this.outlet = await this.Outlet();
|
|
23
25
|
}
|
|
24
26
|
static async loadsWithTimeMarkerSpecificOptions() {
|
|
25
27
|
test_utils_1.assert.isEqualDeep(this.outlet.passedOptions, {
|
|
26
|
-
name:
|
|
27
|
-
type:
|
|
28
|
-
channelNames:
|
|
29
|
-
sampleRate:
|
|
30
|
-
channelFormat:
|
|
31
|
-
sourceId:
|
|
32
|
-
manufacturer:
|
|
33
|
-
unit:
|
|
34
|
-
chunkSize:
|
|
35
|
-
maxBuffered:
|
|
28
|
+
name: this.name_,
|
|
29
|
+
type: this.type,
|
|
30
|
+
channelNames: this.channelNames,
|
|
31
|
+
sampleRate: this.sampleRate,
|
|
32
|
+
channelFormat: this.channelFormat,
|
|
33
|
+
sourceId: this.sourceId,
|
|
34
|
+
manufacturer: this.manufacturer,
|
|
35
|
+
unit: this.unit,
|
|
36
|
+
chunkSize: this.chunkSize,
|
|
37
|
+
maxBuffered: this.maxBuffered,
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
40
|
static async canOverrideDefaultOptions() {
|
|
@@ -88,6 +90,17 @@ class TimeMarkerOutletTest extends AbstractNodeLslTest_1.default {
|
|
|
88
90
|
await promise;
|
|
89
91
|
await this.wait(100);
|
|
90
92
|
}
|
|
93
|
+
static async createsStreamInfoWithCorrectOptions() {
|
|
94
|
+
test_utils_1.assert.isEqualDeep(FakeStreamInfo_1.default.callsToConstructor[0], {
|
|
95
|
+
channelNames: this.channelNames,
|
|
96
|
+
channelFormat: this.channelFormat,
|
|
97
|
+
sampleRate: this.sampleRate,
|
|
98
|
+
name: this.name_,
|
|
99
|
+
type: this.type,
|
|
100
|
+
sourceId: this.sourceId,
|
|
101
|
+
units: this.unit,
|
|
102
|
+
}, 'Should create stream info!');
|
|
103
|
+
}
|
|
91
104
|
static async setupTimeMarkerImpl() {
|
|
92
105
|
TimeMarkerOutlet_1.default.Class = TimeMarkerOutlet_1.default;
|
|
93
106
|
this.outlet = await this.Outlet();
|
|
@@ -109,6 +122,16 @@ class TimeMarkerOutletTest extends AbstractNodeLslTest_1.default {
|
|
|
109
122
|
return (await TimeMarkerOutlet_1.default.Create(options));
|
|
110
123
|
}
|
|
111
124
|
}
|
|
125
|
+
TimeMarkerOutletTest.name_ = 'Time markers';
|
|
126
|
+
TimeMarkerOutletTest.type = 'Markers';
|
|
127
|
+
TimeMarkerOutletTest.channelNames = ['Markers'];
|
|
128
|
+
TimeMarkerOutletTest.channelFormat = 'string';
|
|
129
|
+
TimeMarkerOutletTest.sourceId = 'time-markers';
|
|
130
|
+
TimeMarkerOutletTest.manufacturer = 'N/A';
|
|
131
|
+
TimeMarkerOutletTest.unit = 'N/A';
|
|
132
|
+
TimeMarkerOutletTest.sampleRate = 0;
|
|
133
|
+
TimeMarkerOutletTest.chunkSize = 0;
|
|
134
|
+
TimeMarkerOutletTest.maxBuffered = 0;
|
|
112
135
|
exports.default = TimeMarkerOutletTest;
|
|
113
136
|
__decorate([
|
|
114
137
|
(0, test_utils_1.test)()
|
|
@@ -136,4 +159,7 @@ __decorate([
|
|
|
136
159
|
__decorate([
|
|
137
160
|
(0, test_utils_1.test)()
|
|
138
161
|
], TimeMarkerOutletTest, "clearsTheTimeoutOnStop", null);
|
|
162
|
+
__decorate([
|
|
163
|
+
(0, test_utils_1.test)()
|
|
164
|
+
], TimeMarkerOutletTest, "createsStreamInfoWithCorrectOptions", null);
|
|
139
165
|
//# sourceMappingURL=TimeMarkerOutlet.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../src/__tests__/TimeMarkerOutlet.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAkC;AAClC,uDAAiE;AAEjE,sFAAiE;AACjE,6GAAoF;AAEpF,gFAAuD;AAEvD,MAAqB,oBAAqB,SAAQ,6BAAmB;IAGvD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;IACrC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kCAAkC;QACrD,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YAC1C,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../src/__tests__/TimeMarkerOutlet.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,28 +4,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const LslOutlet_1 = __importDefault(require("./LslOutlet"));
|
|
7
|
+
const LslStreamInfo_1 = __importDefault(require("./LslStreamInfo"));
|
|
7
8
|
class TimeMarkerOutletImpl extends LslOutlet_1.default {
|
|
8
9
|
constructor() {
|
|
9
10
|
super(...arguments);
|
|
10
11
|
this.isPlaying = false;
|
|
11
12
|
}
|
|
12
13
|
static async Create(options) {
|
|
13
|
-
const
|
|
14
|
+
const { unit, manufacturer, maxBuffered, chunkSize } = options ?? {};
|
|
15
|
+
const infoOptions = {
|
|
14
16
|
name: 'Time markers',
|
|
15
17
|
type: 'Markers',
|
|
16
18
|
channelNames: ['Markers'],
|
|
17
19
|
sampleRate: 0,
|
|
18
20
|
channelFormat: 'string',
|
|
19
21
|
sourceId: 'time-markers',
|
|
20
|
-
|
|
21
|
-
unit: 'N/A',
|
|
22
|
-
chunkSize: 0,
|
|
23
|
-
maxBuffered: 0,
|
|
24
|
-
};
|
|
25
|
-
return new (this.Class ?? this)({}, {
|
|
26
|
-
...defaultOptions,
|
|
22
|
+
units: unit ?? 'N/A',
|
|
27
23
|
...options,
|
|
28
|
-
}
|
|
24
|
+
};
|
|
25
|
+
const info = LslStreamInfo_1.default.Create(infoOptions);
|
|
26
|
+
const outletOptions = {
|
|
27
|
+
...infoOptions,
|
|
28
|
+
manufacturer: manufacturer ?? 'N/A',
|
|
29
|
+
chunkSize: chunkSize ?? 0,
|
|
30
|
+
maxBuffered: maxBuffered ?? 0,
|
|
31
|
+
unit: unit ?? 'N/A',
|
|
32
|
+
};
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
delete outletOptions.units;
|
|
35
|
+
return new (this.Class ?? this)(info, outletOptions);
|
|
29
36
|
}
|
|
30
37
|
async pushMarkers(markers) {
|
|
31
38
|
this.isPlaying = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/components/TimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AACA,4DAAwE;
|
|
1
|
+
{"version":3,"file":"TimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/components/TimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AACA,4DAAwE;AACxE,oEAA2D;AAE3D,MAAqB,oBACjB,SAAQ,mBAAa;IADzB;;QAMY,cAAS,GAAG,KAAK,CAAA;IA8D7B,CAAC;IA1DU,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAmC;QAC1D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAEpE,MAAM,WAAW,GAAG;YAChB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,SAAS;YACf,YAAY,EAAE,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,cAAc;YACxB,KAAK,EAAE,IAAI,IAAI,KAAK;YACpB,GAAG,OAAO;SACO,CAAA;QAErB,MAAM,IAAI,GAAG,uBAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAE9C,MAAM,aAAa,GAAG;YAClB,GAAG,WAAW;YACd,YAAY,EAAE,YAAY,IAAI,KAAK;YACnC,SAAS,EAAE,SAAS,IAAI,CAAC;YACzB,WAAW,EAAE,WAAW,IAAI,CAAC;YAC7B,IAAI,EAAE,IAAI,IAAI,KAAK;SACtB,CAAA;QAED,aAAa;QACb,OAAO,aAAa,CAAC,KAAK,CAAA;QAE1B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,aAAa,CAAqB,CAAA;IAC5E,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAErB,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAElC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAES,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;IACzE,CAAC;IAEO,UAAU,CAAC,OAAiC,EAAE,UAAkB;QACpE,IAAI,CAAC,WAAW,GAAG,OAAc,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,WAAW,EAAE,EAAE,CAAA;QACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;CACJ;AApED,uCAoEC"}
|
package/package.json
CHANGED
|
@@ -40,11 +40,11 @@ export default class AbstractNodeLslTest extends AbstractSpruceTest {
|
|
|
40
40
|
TimeMarkerOutletImpl.Class = SpyTimeMarkerOutlet
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
protected static readonly
|
|
44
|
-
protected static readonly infoName = generateId()
|
|
43
|
+
protected static readonly name_ = generateId()
|
|
45
44
|
protected static readonly type = generateId()
|
|
46
45
|
protected static readonly sourceId = generateId()
|
|
47
46
|
protected static readonly units = generateId()
|
|
47
|
+
protected static readonly channelNames = [generateId(), generateId()]
|
|
48
48
|
protected static readonly chunkSize = Math.floor(Math.random() * 100)
|
|
49
49
|
protected static readonly maxBuffered = Math.floor(Math.random() * 100)
|
|
50
50
|
}
|
|
@@ -46,7 +46,7 @@ export default class LslInletTest extends AbstractNodeLslTest {
|
|
|
46
46
|
channelNames: this.channelNames,
|
|
47
47
|
channelFormat: 'float32',
|
|
48
48
|
sampleRate: 0,
|
|
49
|
-
name: this.
|
|
49
|
+
name: this.name_,
|
|
50
50
|
type: this.type,
|
|
51
51
|
sourceId: this.sourceId,
|
|
52
52
|
},
|
|
@@ -87,7 +87,7 @@ export default class LslInletTest extends AbstractNodeLslTest {
|
|
|
87
87
|
channelNames: this.channelNames,
|
|
88
88
|
channelFormat: 'float32',
|
|
89
89
|
sampleRate: 0,
|
|
90
|
-
name: this.
|
|
90
|
+
name: this.name_,
|
|
91
91
|
type: this.type,
|
|
92
92
|
sourceId: this.sourceId,
|
|
93
93
|
chunkSize: this.chunkSize,
|
|
@@ -2,6 +2,7 @@ import { randomInt } from 'crypto'
|
|
|
2
2
|
import { assert, generateId, test } from '@sprucelabs/test-utils'
|
|
3
3
|
import { LslOutletOptions } from '../components/LslOutlet'
|
|
4
4
|
import TimeMarkerOutletImpl from '../components/TimeMarkerOutlet'
|
|
5
|
+
import FakeStreamInfo from '../testDoubles/FakeStreamInfo'
|
|
5
6
|
import generateRandomOutletOptions from '../testDoubles/generateRandomOutletOptions'
|
|
6
7
|
import SpyTimeMarkerOutlet from '../testDoubles/SpyTimeMarkerOutlet'
|
|
7
8
|
import AbstractNodeLslTest from './AbstractNodeLslTest'
|
|
@@ -12,6 +13,7 @@ export default class TimeMarkerOutletTest extends AbstractNodeLslTest {
|
|
|
12
13
|
protected static async beforeEach() {
|
|
13
14
|
await super.beforeEach()
|
|
14
15
|
|
|
16
|
+
this.setFakeStreamInfo()
|
|
15
17
|
this.setSpyTimeMarkerOutlet()
|
|
16
18
|
this.setFakeLiblsl()
|
|
17
19
|
|
|
@@ -21,16 +23,16 @@ export default class TimeMarkerOutletTest extends AbstractNodeLslTest {
|
|
|
21
23
|
@test()
|
|
22
24
|
protected static async loadsWithTimeMarkerSpecificOptions() {
|
|
23
25
|
assert.isEqualDeep(this.outlet.passedOptions, {
|
|
24
|
-
name:
|
|
25
|
-
type:
|
|
26
|
-
channelNames:
|
|
27
|
-
sampleRate:
|
|
28
|
-
channelFormat:
|
|
29
|
-
sourceId:
|
|
30
|
-
manufacturer:
|
|
31
|
-
unit:
|
|
32
|
-
chunkSize:
|
|
33
|
-
maxBuffered:
|
|
26
|
+
name: this.name_,
|
|
27
|
+
type: this.type,
|
|
28
|
+
channelNames: this.channelNames,
|
|
29
|
+
sampleRate: this.sampleRate,
|
|
30
|
+
channelFormat: this.channelFormat,
|
|
31
|
+
sourceId: this.sourceId,
|
|
32
|
+
manufacturer: this.manufacturer,
|
|
33
|
+
unit: this.unit,
|
|
34
|
+
chunkSize: this.chunkSize,
|
|
35
|
+
maxBuffered: this.maxBuffered,
|
|
34
36
|
})
|
|
35
37
|
}
|
|
36
38
|
|
|
@@ -121,6 +123,23 @@ export default class TimeMarkerOutletTest extends AbstractNodeLslTest {
|
|
|
121
123
|
await this.wait(100)
|
|
122
124
|
}
|
|
123
125
|
|
|
126
|
+
@test()
|
|
127
|
+
protected static async createsStreamInfoWithCorrectOptions() {
|
|
128
|
+
assert.isEqualDeep(
|
|
129
|
+
FakeStreamInfo.callsToConstructor[0],
|
|
130
|
+
{
|
|
131
|
+
channelNames: this.channelNames,
|
|
132
|
+
channelFormat: this.channelFormat,
|
|
133
|
+
sampleRate: this.sampleRate,
|
|
134
|
+
name: this.name_,
|
|
135
|
+
type: this.type,
|
|
136
|
+
sourceId: this.sourceId,
|
|
137
|
+
units: this.unit,
|
|
138
|
+
},
|
|
139
|
+
'Should create stream info!'
|
|
140
|
+
)
|
|
141
|
+
}
|
|
142
|
+
|
|
124
143
|
private static async setupTimeMarkerImpl() {
|
|
125
144
|
TimeMarkerOutletImpl.Class = TimeMarkerOutletImpl as any
|
|
126
145
|
this.outlet = await this.Outlet()
|
|
@@ -143,6 +162,17 @@ export default class TimeMarkerOutletTest extends AbstractNodeLslTest {
|
|
|
143
162
|
}
|
|
144
163
|
}
|
|
145
164
|
|
|
165
|
+
protected static readonly name_ = 'Time markers'
|
|
166
|
+
protected static readonly type = 'Markers'
|
|
167
|
+
protected static readonly channelNames = ['Markers']
|
|
168
|
+
protected static readonly channelFormat = 'string'
|
|
169
|
+
protected static readonly sourceId = 'time-markers'
|
|
170
|
+
protected static readonly manufacturer = 'N/A'
|
|
171
|
+
protected static readonly unit = 'N/A'
|
|
172
|
+
protected static readonly sampleRate = 0
|
|
173
|
+
protected static readonly chunkSize = 0
|
|
174
|
+
protected static readonly maxBuffered = 0
|
|
175
|
+
|
|
146
176
|
private static async Outlet(options?: Partial<LslOutletOptions>) {
|
|
147
177
|
return (await TimeMarkerOutletImpl.Create(
|
|
148
178
|
options
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DurationMarker } from '../nodeLsl.types'
|
|
2
2
|
import LslOutletImpl, { LslOutlet, LslOutletOptions } from './LslOutlet'
|
|
3
|
-
import { StreamInfo } from './LslStreamInfo'
|
|
3
|
+
import LslStreamInfo, { StreamInfo } from './LslStreamInfo'
|
|
4
4
|
|
|
5
5
|
export default class TimeMarkerOutletImpl
|
|
6
6
|
extends LslOutletImpl
|
|
@@ -13,23 +13,33 @@ export default class TimeMarkerOutletImpl
|
|
|
13
13
|
private timeout?: any
|
|
14
14
|
|
|
15
15
|
public static async Create(options?: Partial<LslOutletOptions>) {
|
|
16
|
-
const
|
|
16
|
+
const { unit, manufacturer, maxBuffered, chunkSize } = options ?? {}
|
|
17
|
+
|
|
18
|
+
const infoOptions = {
|
|
17
19
|
name: 'Time markers',
|
|
18
20
|
type: 'Markers',
|
|
19
21
|
channelNames: ['Markers'],
|
|
20
22
|
sampleRate: 0,
|
|
21
23
|
channelFormat: 'string',
|
|
22
24
|
sourceId: 'time-markers',
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
chunkSize: 0,
|
|
26
|
-
maxBuffered: 0,
|
|
25
|
+
units: unit ?? 'N/A',
|
|
26
|
+
...options,
|
|
27
27
|
} as LslOutletOptions
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
const info = LslStreamInfo.Create(infoOptions)
|
|
30
|
+
|
|
31
|
+
const outletOptions = {
|
|
32
|
+
...infoOptions,
|
|
33
|
+
manufacturer: manufacturer ?? 'N/A',
|
|
34
|
+
chunkSize: chunkSize ?? 0,
|
|
35
|
+
maxBuffered: maxBuffered ?? 0,
|
|
36
|
+
unit: unit ?? 'N/A',
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
delete outletOptions.units
|
|
41
|
+
|
|
42
|
+
return new (this.Class ?? this)(info, outletOptions) as TimeMarkerOutlet
|
|
33
43
|
}
|
|
34
44
|
|
|
35
45
|
public async pushMarkers(markers: DurationMarker[]) {
|