@neurodevs/node-lsl 6.2.0 → 6.4.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.
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js +2 -2
- package/build/__tests__/behavioral/TimeMarkerOutlet.test.js.map +1 -1
- package/build/implementations/LslOutlet.d.ts +1 -1
- package/build/implementations/LslOutlet.js +4 -4
- package/build/implementations/LslOutlet.js.map +1 -1
- package/build/index.d.ts +6 -2
- package/build/index.js +10 -4
- package/build/index.js.map +1 -1
- package/build/testDoubles/MockTimeMarkerOutlet.d.ts +11 -0
- package/build/testDoubles/MockTimeMarkerOutlet.js +25 -0
- package/build/testDoubles/MockTimeMarkerOutlet.js.map +1 -0
- package/build/testDoubles/{SpyTimeMarkerOutlet.d.ts → SpyExtendsTimeMarkerOutlet.d.ts} +1 -1
- package/build/testDoubles/{SpyTimeMarkerOutlet.js → SpyExtendsTimeMarkerOutlet.js} +3 -3
- package/build/testDoubles/SpyExtendsTimeMarkerOutlet.js.map +1 -0
- package/build/testDoubles/SpyImplementsTimeMarkerOutlet.d.ts +14 -0
- package/build/testDoubles/SpyImplementsTimeMarkerOutlet.js +33 -0
- package/build/testDoubles/SpyImplementsTimeMarkerOutlet.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/behavioral/TimeMarkerOutlet.test.ts +6 -4
- package/src/implementations/LslOutlet.ts +4 -4
- package/src/index.ts +8 -2
- package/src/testDoubles/MockTimeMarkerOutlet.ts +36 -0
- package/src/testDoubles/{SpyTimeMarkerOutlet.ts → SpyExtendsTimeMarkerOutlet.ts} +1 -1
- package/src/testDoubles/SpyImplementsTimeMarkerOutlet.ts +42 -0
- package/tsconfig.json +1 -1
- package/build/testDoubles/SpyTimeMarkerOutlet.js.map +0 -1
|
@@ -37,12 +37,12 @@ const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
|
37
37
|
const Liblsl_1 = __importDefault(require("../../implementations/Liblsl"));
|
|
38
38
|
const TimeMarkerOutlet_1 = __importDefault(require("../../implementations/TimeMarkerOutlet"));
|
|
39
39
|
const FakeLiblsl_1 = __importDefault(require("../../testDoubles/FakeLiblsl"));
|
|
40
|
-
const
|
|
40
|
+
const SpyExtendsTimeMarkerOutlet_1 = __importDefault(require("../../testDoubles/SpyExtendsTimeMarkerOutlet"));
|
|
41
41
|
const generateRandomOutletOptions_1 = __importDefault(require("../support/generateRandomOutletOptions"));
|
|
42
42
|
class TimeMarkerOutletTest extends test_utils_1.default {
|
|
43
43
|
static async beforeEach() {
|
|
44
44
|
await super.beforeEach();
|
|
45
|
-
TimeMarkerOutlet_1.default.Class =
|
|
45
|
+
TimeMarkerOutlet_1.default.Class = SpyExtendsTimeMarkerOutlet_1.default;
|
|
46
46
|
this.fakeLiblsl = new FakeLiblsl_1.default();
|
|
47
47
|
Liblsl_1.default.setInstance(this.fakeLiblsl);
|
|
48
48
|
this.outlet = this.Outlet();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/TimeMarkerOutlet.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkC;AAClC,qEAI+B;AAC/B,0EAAqD;AACrD,8FAAyE;AAEzE,8EAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"TimeMarkerOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/TimeMarkerOutlet.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkC;AAClC,qEAI+B;AAC/B,0EAAqD;AACrD,8FAAyE;AAEzE,8EAAqD;AACrD,8GAAqF;AACrF,yGAAgF;AAEhF,MAAqB,oBAAqB,SAAQ,oBAAkB;IAIzD,MAAM,CAAC,KAAK,CAAC,UAAU;QAChC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QACxB,0BAAoB,CAAC,KAAK,GAAG,oCAA0B,CAAA;QACvD,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAU,EAAE,CAAA;QAClC,gBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC5B,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kCAAkC;QACxD,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC1C,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,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;SACd,CAAC,CAAA;IACH,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,yBAAyB;QAC/C,MAAM,OAAO,GAAG,IAAA,qCAA2B,GAAE,CAAA;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACnC,mBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gDAAgD;QACtE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAA;QACrD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAEtC,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAA;QACzD,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACnE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,mDAAmD;QACzE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAE9C,mBAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAA;QACzD,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,MAAM,CAAC,eAAe,EAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAC7C,CAAA;IACF,CAAC;IAKsB,AAAb,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,OAAe;QAC/D,IAAI,QAAQ,GAAG,CAAC,CAAA;QAEhB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YAC7B,QAAQ,IAAI,CAAC,CAAA;YACb,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACnB,CAAC;QACF,CAAC,CAAA;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAE/B,mBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,0BAA0B;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAElB,IAAI,QAAQ,GAAG,CAAC,CAAA;QAEhB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE;YAC7B,QAAQ,EAAE,CAAA;QACX,CAAC,CAAA;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QAE/B,mBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC7B,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,oBAAoB;QAC1C,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAE9C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAElB,MAAM,OAAO,CAAA;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,mBAAM,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;IACpC,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAE7C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAClB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,mBAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAEzE,MAAM,OAAO,CAAA;QACb,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC;IAEO,MAAM,CAAC,mBAAmB;QACjC,0BAAoB,CAAC,KAAK,GAAG,0BAA2B,CAAA;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;IAC5B,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAa,EAAE,UAAmB;QACvE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC;aACV,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,CAAA;QAE1D,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAEtC,OAAO,OAAO,CAAA;IACf,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,UAAmB;QAC9D,OAAO;YACN,IAAI,EAAE,IAAA,uBAAU,GAAE;YAClB,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,IAAA,kBAAS,EAAC,GAAG,EAAE,IAAI,CAAC;SAC9C,CAAA;IACF,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,OAAmC;QACxD,OAAO,0BAAoB,CAAC,gBAAgB,CAC3C,OAAO,CACuB,CAAA;IAChC,CAAC;CACD;AAhJD,uCAgJC;AAnIuB;IADtB,IAAA,iBAAI,GAAE;oEAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;2DAKN;AAGsB;IADtB,IAAA,iBAAI,GAAE;kFAON;AAGsB;IADtB,IAAA,iBAAI,GAAE;qFASN;AAKsB;IAHtB,IAAA,iBAAI,EAAC,8BAA8B,EAAE,CAAC,CAAC;IACvC,IAAA,iBAAI,EAAC,+BAA+B,EAAE,CAAC,CAAC;IACxC,IAAA,iBAAI,EAAC,8BAA8B,EAAE,CAAC,CAAC;2DAcvC;AAGsB;IADtB,IAAA,iBAAI,GAAE;4DAaN;AAGsB;IADtB,IAAA,iBAAI,GAAE;sDAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;wDAWN"}
|
|
@@ -5,8 +5,8 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
5
5
|
private streamInfo;
|
|
6
6
|
private outlet;
|
|
7
7
|
private pushSampleByType;
|
|
8
|
-
protected constructor(options: LslOutletOptions);
|
|
9
8
|
static Outlet(options: LslOutletOptions): LslOutlet;
|
|
9
|
+
protected constructor(options: LslOutletOptions);
|
|
10
10
|
destroy(): void;
|
|
11
11
|
pushSample(sample: LslSample): void;
|
|
12
12
|
private getPushMethod;
|
|
@@ -19,6 +19,10 @@ const assertions_1 = require("../assertions");
|
|
|
19
19
|
const consts_1 = require("../consts");
|
|
20
20
|
const Liblsl_1 = __importDefault(require("./Liblsl"));
|
|
21
21
|
class LslOutletImpl {
|
|
22
|
+
static Outlet(options) {
|
|
23
|
+
var _a;
|
|
24
|
+
return new ((_a = this.Class) !== null && _a !== void 0 ? _a : this)(options);
|
|
25
|
+
}
|
|
22
26
|
constructor(options) {
|
|
23
27
|
const { sampleRate, channelFormat } = (0, schema_1.assertOptions)(options, [
|
|
24
28
|
'name',
|
|
@@ -60,10 +64,6 @@ class LslOutletImpl {
|
|
|
60
64
|
const pushMethod = this.getPushMethod();
|
|
61
65
|
this.pushSampleByType = this.lsl[pushMethod].bind(this.lsl);
|
|
62
66
|
}
|
|
63
|
-
static Outlet(options) {
|
|
64
|
-
var _a;
|
|
65
|
-
return new ((_a = this.Class) !== null && _a !== void 0 ? _a : this)(options);
|
|
66
|
-
}
|
|
67
67
|
destroy() {
|
|
68
68
|
this.lsl.destroyOutlet({ outlet: this.outlet });
|
|
69
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/implementations/LslOutlet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAAkD;AAClD,8CAMsB;AACtB,sCAA+C;AAU/C,sDAAiC;AAEjC,MAAqB,aAAa;
|
|
1
|
+
{"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/implementations/LslOutlet.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export { default as TimeMarkerOutletImpl } from './implementations/TimeMarkerOut
|
|
|
6
6
|
export * from './implementations/TimeMarkerOutlet';
|
|
7
7
|
export { default as FakeLiblsl } from './testDoubles/FakeLiblsl';
|
|
8
8
|
export * from './testDoubles/FakeLiblsl';
|
|
9
|
-
export { default as
|
|
10
|
-
export * from './testDoubles/
|
|
9
|
+
export { default as SpyExtendsTimeMarkerOutlet } from './testDoubles/SpyExtendsTimeMarkerOutlet';
|
|
10
|
+
export * from './testDoubles/SpyExtendsTimeMarkerOutlet';
|
|
11
|
+
export { default as SpyImplementsTimeMarkerOutlet } from './testDoubles/SpyImplementsTimeMarkerOutlet';
|
|
12
|
+
export * from './testDoubles/SpyImplementsTimeMarkerOutlet';
|
|
13
|
+
export { default as MockTimeMarkerOutlet } from './testDoubles/MockTimeMarkerOutlet';
|
|
14
|
+
export * from './testDoubles/MockTimeMarkerOutlet';
|
|
11
15
|
export * from './nodeLsl.types';
|
package/build/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
20
|
+
exports.MockTimeMarkerOutlet = exports.SpyImplementsTimeMarkerOutlet = exports.SpyExtendsTimeMarkerOutlet = exports.FakeLiblsl = exports.TimeMarkerOutletImpl = exports.LslOutletImpl = exports.LiblslImpl = void 0;
|
|
21
21
|
var Liblsl_1 = require("./implementations/Liblsl");
|
|
22
22
|
Object.defineProperty(exports, "LiblslImpl", { enumerable: true, get: function () { return __importDefault(Liblsl_1).default; } });
|
|
23
23
|
__exportStar(require("./implementations/Liblsl"), exports);
|
|
@@ -30,8 +30,14 @@ __exportStar(require("./implementations/TimeMarkerOutlet"), exports);
|
|
|
30
30
|
var FakeLiblsl_1 = require("./testDoubles/FakeLiblsl");
|
|
31
31
|
Object.defineProperty(exports, "FakeLiblsl", { enumerable: true, get: function () { return __importDefault(FakeLiblsl_1).default; } });
|
|
32
32
|
__exportStar(require("./testDoubles/FakeLiblsl"), exports);
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
__exportStar(require("./testDoubles/
|
|
33
|
+
var SpyExtendsTimeMarkerOutlet_1 = require("./testDoubles/SpyExtendsTimeMarkerOutlet");
|
|
34
|
+
Object.defineProperty(exports, "SpyExtendsTimeMarkerOutlet", { enumerable: true, get: function () { return __importDefault(SpyExtendsTimeMarkerOutlet_1).default; } });
|
|
35
|
+
__exportStar(require("./testDoubles/SpyExtendsTimeMarkerOutlet"), exports);
|
|
36
|
+
var SpyImplementsTimeMarkerOutlet_1 = require("./testDoubles/SpyImplementsTimeMarkerOutlet");
|
|
37
|
+
Object.defineProperty(exports, "SpyImplementsTimeMarkerOutlet", { enumerable: true, get: function () { return __importDefault(SpyImplementsTimeMarkerOutlet_1).default; } });
|
|
38
|
+
__exportStar(require("./testDoubles/SpyImplementsTimeMarkerOutlet"), exports);
|
|
39
|
+
var MockTimeMarkerOutlet_1 = require("./testDoubles/MockTimeMarkerOutlet");
|
|
40
|
+
Object.defineProperty(exports, "MockTimeMarkerOutlet", { enumerable: true, get: function () { return __importDefault(MockTimeMarkerOutlet_1).default; } });
|
|
41
|
+
__exportStar(require("./testDoubles/MockTimeMarkerOutlet"), exports);
|
|
36
42
|
__exportStar(require("./nodeLsl.types"), exports);
|
|
37
43
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mDAAgE;AAAvD,qHAAA,OAAO,OAAc;AAC9B,2DAAwC;AAExC,yDAAsE;AAA7D,2HAAA,OAAO,OAAiB;AACjC,8DAA2C;AAE3C,uEAAoF;AAA3E,yIAAA,OAAO,OAAwB;AACxC,qEAAkD;AAElD,uDAAgE;AAAvD,yHAAA,OAAO,OAAc;AAC9B,2DAAwC;AAExC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mDAAgE;AAAvD,qHAAA,OAAO,OAAc;AAC9B,2DAAwC;AAExC,yDAAsE;AAA7D,2HAAA,OAAO,OAAiB;AACjC,8DAA2C;AAE3C,uEAAoF;AAA3E,yIAAA,OAAO,OAAwB;AACxC,qEAAkD;AAElD,uDAAgE;AAAvD,yHAAA,OAAO,OAAc;AAC9B,2DAAwC;AAExC,uFAAgG;AAAvF,yJAAA,OAAO,OAA8B;AAC9C,2EAAwD;AAExD,6FAAsG;AAA7F,+JAAA,OAAO,OAAiC;AACjD,8EAA2D;AAE3D,2EAAoF;AAA3E,6IAAA,OAAO,OAAwB;AACxC,qEAAkD;AAElD,kDAA+B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DurationMarker, TimeMarkerOutlet } from '..';
|
|
2
|
+
export default class MockTimeMarkerOutlet implements TimeMarkerOutlet {
|
|
3
|
+
static instance: MockTimeMarkerOutlet;
|
|
4
|
+
private didPushMarkers;
|
|
5
|
+
private markers?;
|
|
6
|
+
constructor();
|
|
7
|
+
stop(): void;
|
|
8
|
+
pushMarkers(markers: DurationMarker[]): Promise<void>;
|
|
9
|
+
assertDidPushMarkers(markers?: DurationMarker[]): void;
|
|
10
|
+
assertDidNotPushMarkers(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
4
|
+
class MockTimeMarkerOutlet {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.didPushMarkers = false;
|
|
7
|
+
MockTimeMarkerOutlet.instance = this;
|
|
8
|
+
}
|
|
9
|
+
stop() { }
|
|
10
|
+
async pushMarkers(markers) {
|
|
11
|
+
this.didPushMarkers = true;
|
|
12
|
+
this.markers = markers;
|
|
13
|
+
}
|
|
14
|
+
assertDidPushMarkers(markers) {
|
|
15
|
+
test_utils_1.assert.isTrue(this.didPushMarkers, `Expected to have pushed markers but didn't. Try 'outlet.pushMarkers(...)'`);
|
|
16
|
+
if (markers) {
|
|
17
|
+
test_utils_1.assert.isEqualDeep(this.markers, markers);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
assertDidNotPushMarkers() {
|
|
21
|
+
test_utils_1.assert.isFalse(this.didPushMarkers, `Expected to NOT have pushed markers but did. Try 'outlet.pushMarkers(...)'`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.default = MockTimeMarkerOutlet;
|
|
25
|
+
//# sourceMappingURL=MockTimeMarkerOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockTimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/testDoubles/MockTimeMarkerOutlet.ts"],"names":[],"mappings":";;AAAA,uDAA+C;AAG/C,MAAqB,oBAAoB;IAKxC;QAHQ,mBAAc,GAAG,KAAK,CAAA;QAI7B,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAA;IACrC,CAAC;IACM,IAAI,KAAU,CAAC;IAEf,KAAK,CAAC,WAAW,CAAC,OAAyB;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;IAEM,oBAAoB,CAAC,OAA0B;QACrD,mBAAM,CAAC,MAAM,CACZ,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC3E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACb,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;IACF,CAAC;IAEM,uBAAuB;QAC7B,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,cAAc,EACnB,4EAA4E,CAC5E,CAAA;IACF,CAAC;CACD;AAhCD,uCAgCC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import TimeMarkerOutletImpl from '../implementations/TimeMarkerOutlet';
|
|
2
2
|
import { LslOutletOptions } from '../nodeLsl.types';
|
|
3
|
-
export default class
|
|
3
|
+
export default class SpyExtendsTimeMarkerOutlet extends TimeMarkerOutletImpl {
|
|
4
4
|
spyOptions: LslOutletOptions;
|
|
5
5
|
totalWaitTimeMs: number;
|
|
6
6
|
constructor(options: LslOutletOptions);
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const TimeMarkerOutlet_1 = __importDefault(require("../implementations/TimeMarkerOutlet"));
|
|
7
|
-
class
|
|
7
|
+
class SpyExtendsTimeMarkerOutlet extends TimeMarkerOutlet_1.default {
|
|
8
8
|
constructor(options) {
|
|
9
9
|
super(options);
|
|
10
10
|
this.spyOptions = options;
|
|
@@ -15,5 +15,5 @@ class SpyTimeMarkerOutlet extends TimeMarkerOutlet_1.default {
|
|
|
15
15
|
return Promise.resolve();
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
-
exports.default =
|
|
19
|
-
//# sourceMappingURL=
|
|
18
|
+
exports.default = SpyExtendsTimeMarkerOutlet;
|
|
19
|
+
//# sourceMappingURL=SpyExtendsTimeMarkerOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyExtendsTimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/testDoubles/SpyExtendsTimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AAAA,2FAAsE;AAGtE,MAAqB,0BAA2B,SAAQ,0BAAoB;IAI3E,YAAmB,OAAyB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,UAAU,GAAG,OAAO,CAAA;QACzB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,IAAI,CAAC,eAAe,IAAI,UAAU,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IACzB,CAAC;CACD;AAdD,6CAcC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DurationMarker, TimeMarkerOutlet } from '../nodeLsl.types';
|
|
2
|
+
export default class SpyImplementsTimeMarkerOutlet implements TimeMarkerOutlet {
|
|
3
|
+
pushMarkersCalls: DurationMarker[][];
|
|
4
|
+
pushSampleCalls: string[][];
|
|
5
|
+
numStopCalls: number;
|
|
6
|
+
numDestroyCalls: number;
|
|
7
|
+
static TimeMarkerOutlet(): SpyImplementsTimeMarkerOutlet;
|
|
8
|
+
protected constructor();
|
|
9
|
+
pushMarkers(markers: DurationMarker[]): Promise<void>;
|
|
10
|
+
pushSample(sample: string[]): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
destroy(): void;
|
|
13
|
+
resetMock(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class SpyImplementsTimeMarkerOutlet {
|
|
4
|
+
static TimeMarkerOutlet() {
|
|
5
|
+
return new this();
|
|
6
|
+
}
|
|
7
|
+
constructor() {
|
|
8
|
+
this.pushMarkersCalls = [];
|
|
9
|
+
this.pushSampleCalls = [];
|
|
10
|
+
this.numStopCalls = 0;
|
|
11
|
+
this.numDestroyCalls = 0;
|
|
12
|
+
}
|
|
13
|
+
async pushMarkers(markers) {
|
|
14
|
+
this.pushMarkersCalls.push(markers);
|
|
15
|
+
}
|
|
16
|
+
pushSample(sample) {
|
|
17
|
+
this.pushSampleCalls.push(sample);
|
|
18
|
+
}
|
|
19
|
+
stop() {
|
|
20
|
+
this.numStopCalls++;
|
|
21
|
+
}
|
|
22
|
+
destroy() {
|
|
23
|
+
this.numDestroyCalls++;
|
|
24
|
+
}
|
|
25
|
+
resetMock() {
|
|
26
|
+
this.pushMarkersCalls = [];
|
|
27
|
+
this.pushSampleCalls = [];
|
|
28
|
+
this.numStopCalls = 0;
|
|
29
|
+
this.numDestroyCalls = 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.default = SpyImplementsTimeMarkerOutlet;
|
|
33
|
+
//# sourceMappingURL=SpyImplementsTimeMarkerOutlet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyImplementsTimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/testDoubles/SpyImplementsTimeMarkerOutlet.ts"],"names":[],"mappings":";;AAEA,MAAqB,6BAA6B;IAM1C,MAAM,CAAC,gBAAgB;QAC7B,OAAO,IAAI,IAAI,EAAE,CAAA;IAClB,CAAC;IAED;QACC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAEM,UAAU,CAAC,MAAgB;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,YAAY,EAAE,CAAA;IACpB,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,eAAe,EAAE,CAAA;IACvB,CAAC;IAEM,SAAS;QACf,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAC1B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IACzB,CAAC;CACD;AAvCD,gDAuCC"}
|
package/package.json
CHANGED
|
@@ -8,16 +8,16 @@ import LiblslImpl from '../../implementations/Liblsl'
|
|
|
8
8
|
import TimeMarkerOutletImpl from '../../implementations/TimeMarkerOutlet'
|
|
9
9
|
import { LslOutletOptions } from '../../nodeLsl.types'
|
|
10
10
|
import FakeLiblsl from '../../testDoubles/FakeLiblsl'
|
|
11
|
-
import
|
|
11
|
+
import SpyExtendsTimeMarkerOutlet from '../../testDoubles/SpyExtendsTimeMarkerOutlet'
|
|
12
12
|
import generateRandomOutletOptions from '../support/generateRandomOutletOptions'
|
|
13
13
|
|
|
14
14
|
export default class TimeMarkerOutletTest extends AbstractSpruceTest {
|
|
15
15
|
private static fakeLiblsl: FakeLiblsl
|
|
16
|
-
private static outlet:
|
|
16
|
+
private static outlet: SpyExtendsTimeMarkerOutlet
|
|
17
17
|
|
|
18
18
|
protected static async beforeEach() {
|
|
19
19
|
await super.beforeEach()
|
|
20
|
-
TimeMarkerOutletImpl.Class =
|
|
20
|
+
TimeMarkerOutletImpl.Class = SpyExtendsTimeMarkerOutlet
|
|
21
21
|
this.fakeLiblsl = new FakeLiblsl()
|
|
22
22
|
LiblslImpl.setInstance(this.fakeLiblsl)
|
|
23
23
|
this.outlet = this.Outlet()
|
|
@@ -151,6 +151,8 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
private static Outlet(options?: Partial<LslOutletOptions>) {
|
|
154
|
-
return TimeMarkerOutletImpl.TimeMarkerOutlet(
|
|
154
|
+
return TimeMarkerOutletImpl.TimeMarkerOutlet(
|
|
155
|
+
options
|
|
156
|
+
) as SpyExtendsTimeMarkerOutlet
|
|
155
157
|
}
|
|
156
158
|
}
|
|
@@ -25,6 +25,10 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
25
25
|
private outlet: BoundOutlet
|
|
26
26
|
private pushSampleByType: (options: any) => void
|
|
27
27
|
|
|
28
|
+
public static Outlet(options: LslOutletOptions): LslOutlet {
|
|
29
|
+
return new (this.Class ?? this)(options)
|
|
30
|
+
}
|
|
31
|
+
|
|
28
32
|
protected constructor(options: LslOutletOptions) {
|
|
29
33
|
const { sampleRate, channelFormat } = assertOptions(options, [
|
|
30
34
|
'name',
|
|
@@ -80,10 +84,6 @@ export default class LslOutletImpl implements LslOutlet {
|
|
|
80
84
|
this.pushSampleByType = this.lsl[pushMethod].bind(this.lsl)
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
public static Outlet(options: LslOutletOptions): LslOutlet {
|
|
84
|
-
return new (this.Class ?? this)(options)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
87
|
public destroy(): void {
|
|
88
88
|
this.lsl.destroyOutlet({ outlet: this.outlet })
|
|
89
89
|
}
|
package/src/index.ts
CHANGED
|
@@ -10,7 +10,13 @@ export * from './implementations/TimeMarkerOutlet'
|
|
|
10
10
|
export { default as FakeLiblsl } from './testDoubles/FakeLiblsl'
|
|
11
11
|
export * from './testDoubles/FakeLiblsl'
|
|
12
12
|
|
|
13
|
-
export { default as
|
|
14
|
-
export * from './testDoubles/
|
|
13
|
+
export { default as SpyExtendsTimeMarkerOutlet } from './testDoubles/SpyExtendsTimeMarkerOutlet'
|
|
14
|
+
export * from './testDoubles/SpyExtendsTimeMarkerOutlet'
|
|
15
|
+
|
|
16
|
+
export { default as SpyImplementsTimeMarkerOutlet } from './testDoubles/SpyImplementsTimeMarkerOutlet'
|
|
17
|
+
export * from './testDoubles/SpyImplementsTimeMarkerOutlet'
|
|
18
|
+
|
|
19
|
+
export { default as MockTimeMarkerOutlet } from './testDoubles/MockTimeMarkerOutlet'
|
|
20
|
+
export * from './testDoubles/MockTimeMarkerOutlet'
|
|
15
21
|
|
|
16
22
|
export * from './nodeLsl.types'
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { assert } from '@sprucelabs/test-utils'
|
|
2
|
+
import { DurationMarker, TimeMarkerOutlet } from '..'
|
|
3
|
+
|
|
4
|
+
export default class MockTimeMarkerOutlet implements TimeMarkerOutlet {
|
|
5
|
+
public static instance: MockTimeMarkerOutlet
|
|
6
|
+
private didPushMarkers = false
|
|
7
|
+
private markers?: DurationMarker[]
|
|
8
|
+
|
|
9
|
+
public constructor() {
|
|
10
|
+
MockTimeMarkerOutlet.instance = this
|
|
11
|
+
}
|
|
12
|
+
public stop(): void {}
|
|
13
|
+
|
|
14
|
+
public async pushMarkers(markers: DurationMarker[]): Promise<void> {
|
|
15
|
+
this.didPushMarkers = true
|
|
16
|
+
this.markers = markers
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public assertDidPushMarkers(markers?: DurationMarker[]) {
|
|
20
|
+
assert.isTrue(
|
|
21
|
+
this.didPushMarkers,
|
|
22
|
+
`Expected to have pushed markers but didn't. Try 'outlet.pushMarkers(...)'`
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
if (markers) {
|
|
26
|
+
assert.isEqualDeep(this.markers, markers)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public assertDidNotPushMarkers() {
|
|
31
|
+
assert.isFalse(
|
|
32
|
+
this.didPushMarkers,
|
|
33
|
+
`Expected to NOT have pushed markers but did. Try 'outlet.pushMarkers(...)'`
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import TimeMarkerOutletImpl from '../implementations/TimeMarkerOutlet'
|
|
2
2
|
import { LslOutletOptions } from '../nodeLsl.types'
|
|
3
3
|
|
|
4
|
-
export default class
|
|
4
|
+
export default class SpyExtendsTimeMarkerOutlet extends TimeMarkerOutletImpl {
|
|
5
5
|
public spyOptions: LslOutletOptions
|
|
6
6
|
public totalWaitTimeMs: number
|
|
7
7
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { DurationMarker, TimeMarkerOutlet } from '../nodeLsl.types'
|
|
2
|
+
|
|
3
|
+
export default class SpyImplementsTimeMarkerOutlet implements TimeMarkerOutlet {
|
|
4
|
+
public pushMarkersCalls: DurationMarker[][]
|
|
5
|
+
public pushSampleCalls: string[][]
|
|
6
|
+
public numStopCalls: number
|
|
7
|
+
public numDestroyCalls: number
|
|
8
|
+
|
|
9
|
+
public static TimeMarkerOutlet() {
|
|
10
|
+
return new this()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
protected constructor() {
|
|
14
|
+
this.pushMarkersCalls = []
|
|
15
|
+
this.pushSampleCalls = []
|
|
16
|
+
this.numStopCalls = 0
|
|
17
|
+
this.numDestroyCalls = 0
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public async pushMarkers(markers: DurationMarker[]) {
|
|
21
|
+
this.pushMarkersCalls.push(markers)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public pushSample(sample: string[]) {
|
|
25
|
+
this.pushSampleCalls.push(sample)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public stop() {
|
|
29
|
+
this.numStopCalls++
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public destroy() {
|
|
33
|
+
this.numDestroyCalls++
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public resetMock() {
|
|
37
|
+
this.pushMarkersCalls = []
|
|
38
|
+
this.pushSampleCalls = []
|
|
39
|
+
this.numStopCalls = 0
|
|
40
|
+
this.numDestroyCalls = 0
|
|
41
|
+
}
|
|
42
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpyTimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/testDoubles/SpyTimeMarkerOutlet.ts"],"names":[],"mappings":";;;;;AAAA,2FAAsE;AAGtE,MAAqB,mBAAoB,SAAQ,0BAAoB;IAIpE,YAAmB,OAAyB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,UAAU,GAAG,OAAO,CAAA;QACzB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAkB;QACnC,IAAI,CAAC,eAAe,IAAI,UAAU,CAAA;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IACzB,CAAC;CACD;AAdD,sCAcC"}
|