@neurodevs/node-lsl 4.1.0 → 4.1.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.
@@ -1,3 +1,4 @@
1
+ import { ChannelFormat } from './consts';
1
2
  import { LslSample } from './Liblsl';
2
3
  export default class LslOutletImpl implements LslOutlet {
3
4
  static Class?: new (options: LslOutletOptions) => LslOutlet;
@@ -8,19 +9,10 @@ export default class LslOutletImpl implements LslOutlet {
8
9
  static Outlet(options: LslOutletOptions): LslOutlet;
9
10
  destroy(): void;
10
11
  pushSample(sample: LslSample): void;
12
+ private getPushMethod;
11
13
  private lookupChannelFormat;
12
- private assertValidMaxBufferred;
13
- private assertValidChunkSize;
14
- private assertValidChannelFormat;
15
- private assertValidSampleRate;
16
- private assertValidChannelCount;
17
- private isGreaterThanZero;
18
- private isPositiveInteger;
19
- private isPositiveIntegerOrZero;
20
14
  private get lsl();
21
15
  }
22
- declare const CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
23
- export type ChannelFormat = (typeof CHANNEL_FORMATS)[number];
24
16
  export interface LslOutlet {
25
17
  destroy(): void;
26
18
  pushSample(sample: LslSample): void;
@@ -37,4 +29,3 @@ export interface LslOutletOptions {
37
29
  chunkSize: number;
38
30
  maxBuffered: number;
39
31
  }
40
- export {};
@@ -15,6 +15,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  const schema_1 = require("@sprucelabs/schema");
18
+ const assertions_1 = require("./assertions");
19
+ const consts_1 = require("./consts");
18
20
  const Liblsl_1 = __importDefault(require("./Liblsl"));
19
21
  class LslOutletImpl {
20
22
  constructor(options) {
@@ -34,11 +36,11 @@ class LslOutletImpl {
34
36
  const _a = this
35
37
  .options, { chunkSize, maxBuffered, channelNames } = _a, streamInfoOptions = __rest(_a, ["chunkSize", "maxBuffered", "channelNames"]);
36
38
  const channelCount = channelNames.length;
37
- this.assertValidChannelCount(channelCount);
38
- this.assertValidSampleRate(sampleRate);
39
- this.assertValidChannelFormat(channelFormat);
40
- this.assertValidChunkSize(chunkSize);
41
- this.assertValidMaxBufferred(maxBuffered);
39
+ (0, assertions_1.assertValidChannelCount)(channelCount);
40
+ (0, assertions_1.assertValidSampleRate)(sampleRate);
41
+ (0, assertions_1.assertValidChannelFormat)(channelFormat);
42
+ (0, assertions_1.assertValidChunkSize)(chunkSize);
43
+ (0, assertions_1.assertValidMaxBufferred)(maxBuffered);
42
44
  delete streamInfoOptions.manufacturer;
43
45
  delete streamInfoOptions.unit;
44
46
  this.streamInfo = this.lsl.createStreamInfo(Object.assign(Object.assign({}, streamInfoOptions), { channelCount, channelFormat: this.lookupChannelFormat(channelFormat) }));
@@ -65,95 +67,31 @@ class LslOutletImpl {
65
67
  }
66
68
  pushSample(sample) {
67
69
  const timestamp = this.lsl.localClock();
68
- if (this.options.channelFormat === 'float32') {
69
- this.lsl.pushSampleFt({
70
- outlet: this.outlet,
71
- sample: sample,
72
- timestamp,
73
- });
74
- }
75
- else if (this.options.channelFormat === 'string') {
76
- this.lsl.pushSampleStrt({
77
- outlet: this.outlet,
78
- sample: sample,
79
- timestamp,
80
- });
81
- }
82
- else {
70
+ const method = this.getPushMethod();
71
+ this.lsl[method]({
72
+ outlet: this.outlet,
73
+ sample,
74
+ timestamp,
75
+ });
76
+ }
77
+ getPushMethod() {
78
+ const channelFormat = this.options.channelFormat;
79
+ const methodMap = {
80
+ float32: 'pushSampleFt',
81
+ string: 'pushSampleStrt',
82
+ };
83
+ const method = methodMap[channelFormat];
84
+ if (!this.lsl[method]) {
83
85
  throw new Error(`This method currently does not support the ${this.options.channelFormat} type! Please implement it.`);
84
86
  }
87
+ return method;
85
88
  }
86
89
  lookupChannelFormat(channelFormat) {
87
- return CHANNEL_FORMATS.indexOf(channelFormat);
88
- }
89
- assertValidMaxBufferred(maxBuffered) {
90
- if (!this.isPositiveIntegerOrZero(maxBuffered)) {
91
- throw new schema_1.SchemaError({
92
- code: 'INVALID_PARAMETERS',
93
- parameters: ['maxBuffered'],
94
- friendlyMessage: 'Max buffered must be a positive integer or zero.',
95
- });
96
- }
97
- }
98
- assertValidChunkSize(chunkSize) {
99
- if (!this.isPositiveIntegerOrZero(chunkSize)) {
100
- throw new schema_1.SchemaError({
101
- code: 'INVALID_PARAMETERS',
102
- parameters: ['chunkSize'],
103
- friendlyMessage: 'Chunk size must be a positive integer or zero.',
104
- });
105
- }
106
- }
107
- assertValidChannelFormat(channelFormat) {
108
- const validFormats = CHANNEL_FORMATS;
109
- if (validFormats.indexOf(channelFormat) === -1) {
110
- throw new schema_1.SchemaError({
111
- code: 'INVALID_PARAMETERS',
112
- parameters: ['channelFormat'],
113
- friendlyMessage: 'Channel format must be a valid format.',
114
- });
115
- }
116
- }
117
- assertValidSampleRate(sampleRate) {
118
- if (!this.isGreaterThanZero(sampleRate)) {
119
- throw new schema_1.SchemaError({
120
- code: 'INVALID_PARAMETERS',
121
- parameters: ['sampleRate'],
122
- friendlyMessage: 'Sample rate must be a positive number or zero.',
123
- });
124
- }
125
- }
126
- assertValidChannelCount(channelCount) {
127
- if (!this.isPositiveInteger(channelCount)) {
128
- throw new schema_1.SchemaError({
129
- code: 'INVALID_PARAMETERS',
130
- parameters: ['channelNames'],
131
- friendlyMessage: 'channelNames must have 1 or more labels.',
132
- });
133
- }
134
- }
135
- isGreaterThanZero(value) {
136
- return value >= 0;
137
- }
138
- isPositiveInteger(value) {
139
- return Number.isInteger(value) && value > 0;
140
- }
141
- isPositiveIntegerOrZero(value) {
142
- return Number.isInteger(value) && value >= 0;
90
+ return consts_1.CHANNEL_FORMATS.indexOf(channelFormat);
143
91
  }
144
92
  get lsl() {
145
93
  return Liblsl_1.default.getInstance();
146
94
  }
147
95
  }
148
96
  exports.default = LslOutletImpl;
149
- const CHANNEL_FORMATS = [
150
- 'undefined',
151
- 'float32',
152
- 'double64',
153
- 'string',
154
- 'int32',
155
- 'int16',
156
- 'int8',
157
- 'int64',
158
- ];
159
97
  //# sourceMappingURL=LslOutlet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../src/LslOutlet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA+D;AAC/D,sDAKiB;AAEjB,MAAqB,aAAa;IAMjC,YAAsB,OAAyB;QAC9C,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,IAAA,sBAAa,EAAC,OAAO,EAAE;YAC5D,MAAM;YACN,MAAM;YACN,cAAc;YACd,YAAY;YACZ,eAAe;YACf,UAAU;YACV,cAAc;YACd,MAAM;YACN,WAAW;YACX,aAAa;SACb,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,MAAM,KAAiE,IAAI;aACzE,OAAc,EADV,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,OAC5B,EADiC,iBAAiB,cAA5D,4CAA8D,CACpD,CAAA;QAEhB,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAA;QAExC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAA;QAC1C,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;QACtC,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAA;QAC5C,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;QAEzC,OAAO,iBAAiB,CAAC,YAAY,CAAA;QACrC,OAAO,iBAAiB,CAAC,IAAI,CAAA;QAE7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,iCACvC,iBAAiB,KACpB,YAAY,EACZ,aAAa,EAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IACrD,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;gBAC9C,KAAK;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;aACvB,CAAC,CAAC;SACH,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YACnC,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;SACrC,CAAC,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,OAAyB;;QAC7C,OAAO,IAAI,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IAEM,OAAO;QACb,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAChD,CAAC;IAEM,UAAU,CAAC,MAAiB;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAA;QAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,MAAkB;gBAC1B,SAAS;aACT,CAAC,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,MAAkB;gBAC1B,SAAS;aACT,CAAC,CAAA;QACH,CAAC;aAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACd,8CAA8C,IAAI,CAAC,OAAO,CAAC,aAAa,6BAA6B,CACrG,CAAA;QACF,CAAC;IACF,CAAC;IAEO,mBAAmB,CAAC,aAA4B;QACvD,OAAO,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IAC9C,CAAC;IAEO,uBAAuB,CAAC,WAAmB;QAClD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,oBAAW,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,CAAC,aAAa,CAAC;gBAC3B,eAAe,EAAE,kDAAkD;aACnE,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAEO,oBAAoB,CAAC,SAAiB;QAC7C,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,oBAAW,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,CAAC,WAAW,CAAC;gBACzB,eAAe,EAAE,gDAAgD;aACjE,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAEO,wBAAwB,CAAC,aAA4B;QAC5D,MAAM,YAAY,GAAG,eAAe,CAAA;QACpC,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,oBAAW,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,CAAC,eAAe,CAAC;gBAC7B,eAAe,EAAE,wCAAwC;aACzD,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAEO,qBAAqB,CAAC,UAAkB;QAC/C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,oBAAW,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,CAAC,YAAY,CAAC;gBAC1B,eAAe,EAAE,gDAAgD;aACjE,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAEO,uBAAuB,CAAC,YAAoB;QACnD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,oBAAW,CAAC;gBACrB,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,CAAC,cAAc,CAAC;gBAC5B,eAAe,EAAE,0CAA0C;aAC3D,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACtC,OAAO,KAAK,IAAI,CAAC,CAAA;IAClB,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACtC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;IAC5C,CAAC;IAEO,uBAAuB,CAAC,KAAa;QAC5C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,IAAY,GAAG;QACd,OAAO,gBAAU,CAAC,WAAW,EAAE,CAAA;IAChC,CAAC;CACD;AA9JD,gCA8JC;AAED,MAAM,eAAe,GAAG;IACvB,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACE,CAAA"}
1
+ {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../src/LslOutlet.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LslOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/LslOutlet.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslOutlet.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/LslOutlet.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const TEST_CHANNEL_FORMATS: string[];
1
+ export declare const TEST_CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
2
2
  export type TestChannelFormat = (typeof TEST_CHANNEL_FORMATS)[number];
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/__tests__/support/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IACnC,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACP,CAAA"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/__tests__/support/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IACnC,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { ChannelFormat } from './consts';
2
+ export declare function assertValidMaxBufferred(maxBuffered: number): void;
3
+ export declare function assertValidChunkSize(chunkSize: number): void;
4
+ export declare function assertValidChannelFormat(channelFormat: ChannelFormat): void;
5
+ export declare function assertValidSampleRate(sampleRate: number): void;
6
+ export declare function assertValidChannelCount(channelCount: number): void;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertValidChannelCount = exports.assertValidSampleRate = exports.assertValidChannelFormat = exports.assertValidChunkSize = exports.assertValidMaxBufferred = void 0;
4
+ const schema_1 = require("@sprucelabs/schema");
5
+ const consts_1 = require("./consts");
6
+ const validations_1 = require("./validations");
7
+ function assertValidMaxBufferred(maxBuffered) {
8
+ if (!(0, validations_1.isPositiveIntegerOrZero)(maxBuffered)) {
9
+ throw new schema_1.SchemaError({
10
+ code: 'INVALID_PARAMETERS',
11
+ parameters: ['maxBuffered'],
12
+ friendlyMessage: 'Max buffered must be a positive integer or zero.',
13
+ });
14
+ }
15
+ }
16
+ exports.assertValidMaxBufferred = assertValidMaxBufferred;
17
+ function assertValidChunkSize(chunkSize) {
18
+ if (!(0, validations_1.isPositiveIntegerOrZero)(chunkSize)) {
19
+ throw new schema_1.SchemaError({
20
+ code: 'INVALID_PARAMETERS',
21
+ parameters: ['chunkSize'],
22
+ friendlyMessage: 'Chunk size must be a positive integer or zero.',
23
+ });
24
+ }
25
+ }
26
+ exports.assertValidChunkSize = assertValidChunkSize;
27
+ function assertValidChannelFormat(channelFormat) {
28
+ if (!(0, validations_1.isStringInArray)(channelFormat, consts_1.CHANNEL_FORMATS)) {
29
+ throw new schema_1.SchemaError({
30
+ code: 'INVALID_PARAMETERS',
31
+ parameters: ['channelFormat'],
32
+ friendlyMessage: `Invalid `,
33
+ });
34
+ }
35
+ }
36
+ exports.assertValidChannelFormat = assertValidChannelFormat;
37
+ function assertValidSampleRate(sampleRate) {
38
+ if (!(0, validations_1.isGreaterThanOrEqualToZero)(sampleRate)) {
39
+ throw new schema_1.SchemaError({
40
+ code: 'INVALID_PARAMETERS',
41
+ parameters: ['sampleRate'],
42
+ friendlyMessage: 'Sample rate must be a positive number or zero.',
43
+ });
44
+ }
45
+ }
46
+ exports.assertValidSampleRate = assertValidSampleRate;
47
+ function assertValidChannelCount(channelCount) {
48
+ if (!(0, validations_1.isPositiveInteger)(channelCount)) {
49
+ throw new schema_1.SchemaError({
50
+ code: 'INVALID_PARAMETERS',
51
+ parameters: ['channelNames'],
52
+ friendlyMessage: 'channelNames must have 1 or more labels.',
53
+ });
54
+ }
55
+ }
56
+ exports.assertValidChannelCount = assertValidChannelCount;
57
+ //# sourceMappingURL=assertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["../src/assertions.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAChD,qCAAyD;AACzD,+CAKsB;AAEtB,SAAgB,uBAAuB,CAAC,WAAmB;IAC1D,IAAI,CAAC,IAAA,qCAAuB,EAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,oBAAW,CAAC;YACrB,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,CAAC,aAAa,CAAC;YAC3B,eAAe,EAAE,kDAAkD;SACnE,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AARD,0DAQC;AAED,SAAgB,oBAAoB,CAAC,SAAiB;IACrD,IAAI,CAAC,IAAA,qCAAuB,EAAC,SAAS,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,oBAAW,CAAC;YACrB,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,CAAC,WAAW,CAAC;YACzB,eAAe,EAAE,gDAAgD;SACjE,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AARD,oDAQC;AAED,SAAgB,wBAAwB,CAAC,aAA4B;IACpE,IAAI,CAAC,IAAA,6BAAe,EAAC,aAAa,EAAE,wBAAe,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,oBAAW,CAAC;YACrB,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,CAAC,eAAe,CAAC;YAC7B,eAAe,EAAE,UAAU;SAC3B,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AARD,4DAQC;AAED,SAAgB,qBAAqB,CAAC,UAAkB;IACvD,IAAI,CAAC,IAAA,wCAA0B,EAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,oBAAW,CAAC;YACrB,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,CAAC,YAAY,CAAC;YAC1B,eAAe,EAAE,gDAAgD;SACjE,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AARD,sDAQC;AAED,SAAgB,uBAAuB,CAAC,YAAoB;IAC3D,IAAI,CAAC,IAAA,+BAAiB,EAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAW,CAAC;YACrB,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,CAAC,cAAc,CAAC;YAC5B,eAAe,EAAE,0CAA0C;SAC3D,CAAC,CAAA;IACH,CAAC;AACF,CAAC;AARD,0DAQC"}
@@ -0,0 +1,2 @@
1
+ export declare const CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
2
+ export type ChannelFormat = (typeof CHANNEL_FORMATS)[number];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHANNEL_FORMATS = void 0;
4
+ exports.CHANNEL_FORMATS = [
5
+ 'undefined',
6
+ 'float32',
7
+ 'double64',
8
+ 'string',
9
+ 'int32',
10
+ 'int16',
11
+ 'int8',
12
+ 'int64',
13
+ ];
14
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG;IAC9B,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACE,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare function isStringInArray(value: string, array: readonly string[]): boolean;
2
+ export declare function isGreaterThanOrEqualToZero(value: number): boolean;
3
+ export declare function isPositiveInteger(value: number): boolean;
4
+ export declare function isPositiveIntegerOrZero(value: number): boolean;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPositiveIntegerOrZero = exports.isPositiveInteger = exports.isGreaterThanOrEqualToZero = exports.isStringInArray = void 0;
4
+ function isStringInArray(value, array) {
5
+ return array.indexOf(value) !== -1;
6
+ }
7
+ exports.isStringInArray = isStringInArray;
8
+ function isGreaterThanOrEqualToZero(value) {
9
+ return value >= 0;
10
+ }
11
+ exports.isGreaterThanOrEqualToZero = isGreaterThanOrEqualToZero;
12
+ function isPositiveInteger(value) {
13
+ return Number.isInteger(value) && value > 0;
14
+ }
15
+ exports.isPositiveInteger = isPositiveInteger;
16
+ function isPositiveIntegerOrZero(value) {
17
+ return Number.isInteger(value) && value >= 0;
18
+ }
19
+ exports.isPositiveIntegerOrZero = isPositiveIntegerOrZero;
20
+ //# sourceMappingURL=validations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../src/validations.ts"],"names":[],"mappings":";;;AAAA,SAAgB,eAAe,CAAC,KAAa,EAAE,KAAwB;IACtE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACnC,CAAC;AAFD,0CAEC;AAED,SAAgB,0BAA0B,CAAC,KAAa;IACvD,OAAO,KAAK,IAAI,CAAC,CAAA;AAClB,CAAC;AAFD,gEAEC;AAED,SAAgB,iBAAiB,CAAC,KAAa;IAC9C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAC5C,CAAC;AAFD,8CAEC;AAED,SAAgB,uBAAuB,CAAC,KAAa;IACpD,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAC7C,CAAC;AAFD,0DAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "main": "build/index.js",
5
5
  "repository": {
6
6
  "type": "git",
package/src/LslOutlet.ts CHANGED
@@ -1,4 +1,12 @@
1
- import { SchemaError, assertOptions } from '@sprucelabs/schema'
1
+ import { assertOptions } from '@sprucelabs/schema'
2
+ import {
3
+ assertValidChannelCount,
4
+ assertValidChannelFormat,
5
+ assertValidChunkSize,
6
+ assertValidMaxBufferred,
7
+ assertValidSampleRate,
8
+ } from './assertions'
9
+ import { CHANNEL_FORMATS, ChannelFormat } from './consts'
2
10
  import LiblslImpl, {
3
11
  BoundOutlet,
4
12
  BoundStreamInfo,
@@ -33,11 +41,11 @@ export default class LslOutletImpl implements LslOutlet {
33
41
 
34
42
  const channelCount = channelNames.length
35
43
 
36
- this.assertValidChannelCount(channelCount)
37
- this.assertValidSampleRate(sampleRate)
38
- this.assertValidChannelFormat(channelFormat)
39
- this.assertValidChunkSize(chunkSize)
40
- this.assertValidMaxBufferred(maxBuffered)
44
+ assertValidChannelCount(channelCount)
45
+ assertValidSampleRate(sampleRate)
46
+ assertValidChannelFormat(channelFormat)
47
+ assertValidChunkSize(chunkSize)
48
+ assertValidMaxBufferred(maxBuffered)
41
49
 
42
50
  delete streamInfoOptions.manufacturer
43
51
  delete streamInfoOptions.unit
@@ -74,91 +82,35 @@ export default class LslOutletImpl implements LslOutlet {
74
82
 
75
83
  public pushSample(sample: LslSample): void {
76
84
  const timestamp = this.lsl.localClock()
85
+ const method = this.getPushMethod()
77
86
 
78
- if (this.options.channelFormat === 'float32') {
79
- this.lsl.pushSampleFt({
80
- outlet: this.outlet,
81
- sample: sample as number[],
82
- timestamp,
83
- })
84
- } else if (this.options.channelFormat === 'string') {
85
- this.lsl.pushSampleStrt({
86
- outlet: this.outlet,
87
- sample: sample as string[],
88
- timestamp,
89
- })
90
- } else {
91
- throw new Error(
92
- `This method currently does not support the ${this.options.channelFormat} type! Please implement it.`
93
- )
94
- }
87
+ this.lsl[method]({
88
+ outlet: this.outlet,
89
+ sample,
90
+ timestamp,
91
+ } as any)
95
92
  }
96
93
 
97
- private lookupChannelFormat(channelFormat: ChannelFormat): number {
98
- return CHANNEL_FORMATS.indexOf(channelFormat)
99
- }
100
-
101
- private assertValidMaxBufferred(maxBuffered: number): void {
102
- if (!this.isPositiveIntegerOrZero(maxBuffered)) {
103
- throw new SchemaError({
104
- code: 'INVALID_PARAMETERS',
105
- parameters: ['maxBuffered'],
106
- friendlyMessage: 'Max buffered must be a positive integer or zero.',
107
- })
108
- }
109
- }
110
-
111
- private assertValidChunkSize(chunkSize: number): void {
112
- if (!this.isPositiveIntegerOrZero(chunkSize)) {
113
- throw new SchemaError({
114
- code: 'INVALID_PARAMETERS',
115
- parameters: ['chunkSize'],
116
- friendlyMessage: 'Chunk size must be a positive integer or zero.',
117
- })
118
- }
119
- }
94
+ private getPushMethod() {
95
+ const channelFormat = this.options.channelFormat
120
96
 
121
- private assertValidChannelFormat(channelFormat: ChannelFormat): void {
122
- const validFormats = CHANNEL_FORMATS
123
- if (validFormats.indexOf(channelFormat) === -1) {
124
- throw new SchemaError({
125
- code: 'INVALID_PARAMETERS',
126
- parameters: ['channelFormat'],
127
- friendlyMessage: 'Channel format must be a valid format.',
128
- })
97
+ const methodMap: Record<string, keyof Liblsl> = {
98
+ float32: 'pushSampleFt',
99
+ string: 'pushSampleStrt',
129
100
  }
130
- }
131
101
 
132
- private assertValidSampleRate(sampleRate: number): void {
133
- if (!this.isGreaterThanZero(sampleRate)) {
134
- throw new SchemaError({
135
- code: 'INVALID_PARAMETERS',
136
- parameters: ['sampleRate'],
137
- friendlyMessage: 'Sample rate must be a positive number or zero.',
138
- })
139
- }
140
- }
102
+ const method = methodMap[channelFormat]
141
103
 
142
- private assertValidChannelCount(channelCount: number): void {
143
- if (!this.isPositiveInteger(channelCount)) {
144
- throw new SchemaError({
145
- code: 'INVALID_PARAMETERS',
146
- parameters: ['channelNames'],
147
- friendlyMessage: 'channelNames must have 1 or more labels.',
148
- })
104
+ if (!this.lsl[method]) {
105
+ throw new Error(
106
+ `This method currently does not support the ${this.options.channelFormat} type! Please implement it.`
107
+ )
149
108
  }
109
+ return method
150
110
  }
151
111
 
152
- private isGreaterThanZero(value: number): boolean {
153
- return value >= 0
154
- }
155
-
156
- private isPositiveInteger(value: number): boolean {
157
- return Number.isInteger(value) && value > 0
158
- }
159
-
160
- private isPositiveIntegerOrZero(value: number): boolean {
161
- return Number.isInteger(value) && value >= 0
112
+ private lookupChannelFormat(channelFormat: ChannelFormat): number {
113
+ return CHANNEL_FORMATS.indexOf(channelFormat)
162
114
  }
163
115
 
164
116
  private get lsl(): Liblsl {
@@ -166,19 +118,6 @@ export default class LslOutletImpl implements LslOutlet {
166
118
  }
167
119
  }
168
120
 
169
- const CHANNEL_FORMATS = [
170
- 'undefined',
171
- 'float32',
172
- 'double64',
173
- 'string',
174
- 'int32',
175
- 'int16',
176
- 'int8',
177
- 'int64',
178
- ] as const
179
-
180
- export type ChannelFormat = (typeof CHANNEL_FORMATS)[number]
181
-
182
121
  export interface LslOutlet {
183
122
  destroy(): void
184
123
  pushSample(sample: LslSample): void
@@ -6,8 +6,8 @@ import AbstractSpruceTest, {
6
6
  generateId,
7
7
  } from '@sprucelabs/test-utils'
8
8
  import LiblslImpl, { LslSample } from '../../Liblsl'
9
- import LslOutlet, { ChannelFormat, LslOutletOptions } from '../../LslOutlet'
10
- import { TEST_CHANNEL_FORMATS } from '../support/consts'
9
+ import LslOutlet, { LslOutletOptions } from '../../LslOutlet'
10
+ import { TEST_CHANNEL_FORMATS, TestChannelFormat } from '../support/consts'
11
11
  import generateRandomOutletOptions from '../support/generateRandomOutletOptions'
12
12
  import { SpyLiblsl } from '../support/SpyLiblsl'
13
13
 
@@ -86,7 +86,7 @@ export default class LslOutletTest extends AbstractSpruceTest {
86
86
  @test()
87
87
  protected static async supportsAllKnownChannelFormats() {
88
88
  for (const format of TEST_CHANNEL_FORMATS) {
89
- this.Outlet({ channelFormat: format as ChannelFormat })
89
+ this.Outlet({ channelFormat: format as TestChannelFormat })
90
90
  }
91
91
  }
92
92
 
@@ -7,6 +7,6 @@ export const TEST_CHANNEL_FORMATS = [
7
7
  'int16',
8
8
  'int8',
9
9
  'int64',
10
- ]
10
+ ] as const
11
11
 
12
12
  export type TestChannelFormat = (typeof TEST_CHANNEL_FORMATS)[number]
@@ -0,0 +1,58 @@
1
+ import { SchemaError } from '@sprucelabs/schema'
2
+ import { CHANNEL_FORMATS, ChannelFormat } from './consts'
3
+ import {
4
+ isGreaterThanOrEqualToZero,
5
+ isPositiveInteger,
6
+ isPositiveIntegerOrZero,
7
+ isStringInArray,
8
+ } from './validations'
9
+
10
+ export function assertValidMaxBufferred(maxBuffered: number): void {
11
+ if (!isPositiveIntegerOrZero(maxBuffered)) {
12
+ throw new SchemaError({
13
+ code: 'INVALID_PARAMETERS',
14
+ parameters: ['maxBuffered'],
15
+ friendlyMessage: 'Max buffered must be a positive integer or zero.',
16
+ })
17
+ }
18
+ }
19
+
20
+ export function assertValidChunkSize(chunkSize: number): void {
21
+ if (!isPositiveIntegerOrZero(chunkSize)) {
22
+ throw new SchemaError({
23
+ code: 'INVALID_PARAMETERS',
24
+ parameters: ['chunkSize'],
25
+ friendlyMessage: 'Chunk size must be a positive integer or zero.',
26
+ })
27
+ }
28
+ }
29
+
30
+ export function assertValidChannelFormat(channelFormat: ChannelFormat): void {
31
+ if (!isStringInArray(channelFormat, CHANNEL_FORMATS)) {
32
+ throw new SchemaError({
33
+ code: 'INVALID_PARAMETERS',
34
+ parameters: ['channelFormat'],
35
+ friendlyMessage: `Invalid `,
36
+ })
37
+ }
38
+ }
39
+
40
+ export function assertValidSampleRate(sampleRate: number): void {
41
+ if (!isGreaterThanOrEqualToZero(sampleRate)) {
42
+ throw new SchemaError({
43
+ code: 'INVALID_PARAMETERS',
44
+ parameters: ['sampleRate'],
45
+ friendlyMessage: 'Sample rate must be a positive number or zero.',
46
+ })
47
+ }
48
+ }
49
+
50
+ export function assertValidChannelCount(channelCount: number): void {
51
+ if (!isPositiveInteger(channelCount)) {
52
+ throw new SchemaError({
53
+ code: 'INVALID_PARAMETERS',
54
+ parameters: ['channelNames'],
55
+ friendlyMessage: 'channelNames must have 1 or more labels.',
56
+ })
57
+ }
58
+ }
package/src/consts.ts ADDED
@@ -0,0 +1,12 @@
1
+ export const CHANNEL_FORMATS = [
2
+ 'undefined',
3
+ 'float32',
4
+ 'double64',
5
+ 'string',
6
+ 'int32',
7
+ 'int16',
8
+ 'int8',
9
+ 'int64',
10
+ ] as const
11
+
12
+ export type ChannelFormat = (typeof CHANNEL_FORMATS)[number]
@@ -0,0 +1,15 @@
1
+ export function isStringInArray(value: string, array: readonly string[]) {
2
+ return array.indexOf(value) !== -1
3
+ }
4
+
5
+ export function isGreaterThanOrEqualToZero(value: number): boolean {
6
+ return value >= 0
7
+ }
8
+
9
+ export function isPositiveInteger(value: number): boolean {
10
+ return Number.isInteger(value) && value > 0
11
+ }
12
+
13
+ export function isPositiveIntegerOrZero(value: number): boolean {
14
+ return Number.isInteger(value) && value >= 0
15
+ }