@neurodevs/node-lsl 7.1.3 → 7.1.5

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 (32) hide show
  1. package/build/__tests__/behavioral/LslOutlet.test.js +8 -8
  2. package/build/__tests__/behavioral/LslOutlet.test.js.map +1 -1
  3. package/build/__tests__/behavioral/TimeMarkerOutlet.test.js +2 -2
  4. package/build/__tests__/behavioral/TimeMarkerOutlet.test.js.map +1 -1
  5. package/build/__tests__/implementation/Liblsl.test.d.ts +8 -5
  6. package/build/__tests__/implementation/Liblsl.test.js +92 -48
  7. package/build/__tests__/implementation/Liblsl.test.js.map +1 -1
  8. package/build/implementations/Liblsl.d.ts +8 -7
  9. package/build/implementations/Liblsl.js +65 -22
  10. package/build/implementations/Liblsl.js.map +1 -1
  11. package/build/implementations/LslOutlet.js +2 -2
  12. package/build/implementations/LslOutlet.js.map +1 -1
  13. package/build/nodeLsl.types.d.ts +9 -14
  14. package/build/nodeLsl.types.js +0 -11
  15. package/build/nodeLsl.types.js.map +1 -1
  16. package/build/testDoubles/FakeLiblsl.d.ts +6 -6
  17. package/build/testDoubles/FakeLiblsl.js +6 -6
  18. package/build/testDoubles/FakeLiblsl.js.map +1 -1
  19. package/build/testDoubles/MockTimeMarkerOutlet.js.map +1 -1
  20. package/build/validations.js +2 -0
  21. package/build/validations.js.map +1 -1
  22. package/package.json +8 -5
  23. package/src/__tests__/behavioral/LslOutlet.test.ts +15 -8
  24. package/src/__tests__/behavioral/TimeMarkerOutlet.test.ts +2 -2
  25. package/src/__tests__/implementation/Liblsl.test.ts +100 -59
  26. package/src/assertions.ts +5 -5
  27. package/src/implementations/Liblsl.ts +78 -39
  28. package/src/implementations/LslOutlet.ts +8 -8
  29. package/src/nodeLsl.types.ts +13 -14
  30. package/src/testDoubles/FakeLiblsl.ts +12 -12
  31. package/src/testDoubles/MockTimeMarkerOutlet.ts +4 -4
  32. package/src/validations.ts +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Liblsl.js","sourceRoot":"","sources":["../../src/implementations/Liblsl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Liblsl.js","sourceRoot":"","sources":["../../src/implementations/Liblsl.ts"],"names":[],"mappings":"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"}
@@ -78,8 +78,8 @@ class LslOutletImpl {
78
78
  getPushMethod() {
79
79
  const channelFormat = this.options.channelFormat;
80
80
  const methodMap = {
81
- float32: 'pushSampleFt',
82
- string: 'pushSampleStrt',
81
+ float32: 'pushSampleFloatTimestamp',
82
+ string: 'pushSampleStringTimestamp',
83
83
  };
84
84
  if (!(channelFormat in methodMap)) {
85
85
  throw new Error(`This method currently does not support the ${channelFormat} type! Please implement it.`);
@@ -1 +1 @@
1
- {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/implementations/LslOutlet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslOutlet.js","sourceRoot":"","sources":["../../src/implementations/LslOutlet.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import ArrayType from 'ref-array-napi';
2
- import ref from 'ref-napi';
1
+ import { FFIParams } from 'ffi-rs';
3
2
  import { CHANNEL_FORMATS } from './consts';
4
3
  export interface LslOutlet {
5
4
  destroy(): void;
@@ -32,8 +31,8 @@ export interface Liblsl {
32
31
  appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
33
32
  createOutlet(options: CreateOutletOptions): BoundOutlet;
34
33
  destroyOutlet(options: DestroyOutletOptions): void;
35
- pushSampleFt(options: PushSampleFtOptions): void;
36
- pushSampleStrt(options: PushSampleStrtOptions): void;
34
+ pushSampleFloatTimestamp(options: PushSampleFloatTimestampOptions): void;
35
+ pushSampleStringTimestamp(options: PushSampleStringTimestampOptions): void;
37
36
  localClock(): number;
38
37
  }
39
38
  export interface CreateStreamInfoOptions {
@@ -58,12 +57,12 @@ export interface CreateOutletOptions {
58
57
  export interface DestroyOutletOptions {
59
58
  outlet: BoundOutlet;
60
59
  }
61
- export interface PushSampleFtOptions {
60
+ export interface PushSampleFloatTimestampOptions {
62
61
  outlet: BoundOutlet;
63
62
  sample: number[];
64
63
  timestamp: number;
65
64
  }
66
- export interface PushSampleStrtOptions {
65
+ export interface PushSampleStringTimestampOptions {
67
66
  outlet: BoundOutlet;
68
67
  sample: string[];
69
68
  timestamp: number;
@@ -81,20 +80,16 @@ export interface LiblslBindings {
81
80
  lsl_push_sample_ft(outlet: BoundOutlet, sample: LslSample, timestamp: number): void;
82
81
  lsl_push_sample_strt(outlet: BoundOutlet, sample: LslSample, timestamp: number): void;
83
82
  lsl_local_clock(): number;
84
- lsl_get_desc(info: BoundStreamInfo): BoundDesc;
85
- lsl_append_child(desc: BoundDesc, name: string): BoundChild;
83
+ lsl_get_desc(info: BoundStreamInfo): BoundDescription;
84
+ lsl_append_child(desc: BoundDescription, name: string): BoundChild;
86
85
  lsl_append_child_value(child: BoundChild, name: string, value: string): void;
87
86
  }
88
87
  export interface BoundStreamInfo {
89
88
  }
90
89
  export interface BoundOutlet {
91
90
  }
92
- export interface BoundDesc {
91
+ export interface BoundDescription {
93
92
  }
94
93
  export interface BoundChild {
95
94
  }
96
- export declare const streamInfo: ref.Type<ref.Pointer<void>>;
97
- export declare const outletType: ref.Type<ref.Pointer<void>>;
98
- export declare const FloatArray: ArrayType<unknown>;
99
- export declare const StringArray: ArrayType<unknown>;
100
- export declare const xmlPtr: ref.Type<ref.Pointer<void>>;
95
+ export type FfiRsDefineOptions = Record<string, Omit<FFIParams<any>, 'funcName' | 'paramsValue'>>;
@@ -1,14 +1,3 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.xmlPtr = exports.StringArray = exports.FloatArray = exports.outletType = exports.streamInfo = void 0;
7
- const ref_array_napi_1 = __importDefault(require("ref-array-napi"));
8
- const ref_napi_1 = __importDefault(require("ref-napi"));
9
- exports.streamInfo = ref_napi_1.default.refType(ref_napi_1.default.types.void);
10
- exports.outletType = ref_napi_1.default.refType(ref_napi_1.default.types.void);
11
- exports.FloatArray = (0, ref_array_napi_1.default)(ref_napi_1.default.types.float);
12
- exports.StringArray = (0, ref_array_napi_1.default)(ref_napi_1.default.types.CString);
13
- exports.xmlPtr = ref_napi_1.default.refType(ref_napi_1.default.types.void);
14
3
  //# sourceMappingURL=nodeLsl.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeLsl.types.js","sourceRoot":"","sources":["../src/nodeLsl.types.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AACtC,wDAA0B;AAqIb,QAAA,UAAU,GAAG,kBAAG,CAAC,OAAO,CAAC,kBAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,UAAU,GAAG,kBAAG,CAAC,OAAO,CAAC,kBAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxC,QAAA,UAAU,GAAG,IAAA,wBAAS,EAAC,kBAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACvC,QAAA,WAAW,GAAG,IAAA,wBAAS,EAAC,kBAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1C,QAAA,MAAM,GAAG,kBAAG,CAAC,OAAO,CAAC,kBAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"nodeLsl.types.js","sourceRoot":"","sources":["../src/nodeLsl.types.ts"],"names":[],"mappings":""}
@@ -1,21 +1,21 @@
1
- import { BoundOutlet, BoundStreamInfo, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, PushSampleFtOptions, PushSampleStrtOptions, Liblsl } from '../nodeLsl.types';
1
+ import { BoundOutlet, BoundStreamInfo, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions, Liblsl } from '../nodeLsl.types';
2
2
  export default class FakeLiblsl implements Liblsl {
3
3
  outlet: BoundOutlet;
4
4
  streamInfo: BoundStreamInfo;
5
5
  lastCreateStreamInfoOptions?: CreateStreamInfoOptions;
6
6
  lastAppendChannelsToStreamInfoOptions?: AppendChannelsToStreamInfoOptions;
7
7
  lastCreateOutletOptions?: CreateOutletOptions;
8
- lastPushSampleFtOptions?: PushSampleFtOptions;
9
- lastPushSampleStrtOptions?: PushSampleStrtOptions;
8
+ lastPushSampleFloatTimestampOptions?: PushSampleFloatTimestampOptions;
9
+ lastPushSampleStringTimestampOptions?: PushSampleStringTimestampOptions;
10
10
  createStreamInfoHitCount: number;
11
11
  destroyOutletHitCount: number;
12
12
  localClockHitCount: number;
13
- pushSampleStrtHitCount: number;
13
+ pushSampleStringTimestampHitCount: number;
14
14
  createStreamInfo(options: CreateStreamInfoOptions): BoundStreamInfo;
15
15
  appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
16
16
  createOutlet(options: CreateOutletOptions): BoundOutlet;
17
17
  destroyOutlet(): void;
18
- pushSampleFt(options: PushSampleFtOptions): void;
19
- pushSampleStrt(options: PushSampleStrtOptions): void;
18
+ pushSampleFloatTimestamp(options: PushSampleFloatTimestampOptions): void;
19
+ pushSampleStringTimestamp(options: PushSampleStringTimestampOptions): void;
20
20
  localClock(): number;
21
21
  }
@@ -7,7 +7,7 @@ class FakeLiblsl {
7
7
  this.createStreamInfoHitCount = 0;
8
8
  this.destroyOutletHitCount = 0;
9
9
  this.localClockHitCount = 0;
10
- this.pushSampleStrtHitCount = 0;
10
+ this.pushSampleStringTimestampHitCount = 0;
11
11
  }
12
12
  createStreamInfo(options) {
13
13
  this.createStreamInfoHitCount++;
@@ -24,12 +24,12 @@ class FakeLiblsl {
24
24
  destroyOutlet() {
25
25
  this.destroyOutletHitCount++;
26
26
  }
27
- pushSampleFt(options) {
28
- this.lastPushSampleFtOptions = options;
27
+ pushSampleFloatTimestamp(options) {
28
+ this.lastPushSampleFloatTimestampOptions = options;
29
29
  }
30
- pushSampleStrt(options) {
31
- this.lastPushSampleStrtOptions = options;
32
- this.pushSampleStrtHitCount++;
30
+ pushSampleStringTimestamp(options) {
31
+ this.lastPushSampleStringTimestampOptions = options;
32
+ this.pushSampleStringTimestampHitCount++;
33
33
  }
34
34
  localClock() {
35
35
  this.localClockHitCount++;
@@ -1 +1 @@
1
- {"version":3,"file":"FakeLiblsl.js","sourceRoot":"","sources":["../../src/testDoubles/FakeLiblsl.ts"],"names":[],"mappings":";;AAWA,MAAqB,UAAU;IAA/B;QACQ,WAAM,GAAgB,EAAiB,CAAA;QACvC,eAAU,GAAoB,EAAqB,CAAA;QAQnD,6BAAwB,GAAG,CAAC,CAAA;QAC5B,0BAAqB,GAAG,CAAC,CAAA;QACzB,uBAAkB,GAAG,CAAC,CAAA;QACtB,2BAAsB,GAAG,CAAC,CAAA;IAoClC,CAAC;IAlCO,gBAAgB,CAAC,OAAgC;QACvD,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAA;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAA;IACvB,CAAC;IAEM,0BAA0B,CAChC,OAA0C;QAE1C,IAAI,CAAC,qCAAqC,GAAG,OAAO,CAAA;IACrD,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC/C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;QACtC,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAEM,aAAa;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC7B,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC/C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;IACvC,CAAC;IAEM,cAAc,CAAC,OAA8B;QACnD,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAA;QACxC,IAAI,CAAC,sBAAsB,EAAE,CAAA;IAC9B,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;CACD;AAjDD,6BAiDC"}
1
+ {"version":3,"file":"FakeLiblsl.js","sourceRoot":"","sources":["../../src/testDoubles/FakeLiblsl.ts"],"names":[],"mappings":";;AAWA,MAAqB,UAAU;IAA/B;QACQ,WAAM,GAAgB,EAAiB,CAAA;QACvC,eAAU,GAAoB,EAAqB,CAAA;QAQnD,6BAAwB,GAAG,CAAC,CAAA;QAC5B,0BAAqB,GAAG,CAAC,CAAA;QACzB,uBAAkB,GAAG,CAAC,CAAA;QACtB,sCAAiC,GAAG,CAAC,CAAA;IAoC7C,CAAC;IAlCO,gBAAgB,CAAC,OAAgC;QACvD,IAAI,CAAC,wBAAwB,EAAE,CAAA;QAC/B,IAAI,CAAC,2BAA2B,GAAG,OAAO,CAAA;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAA;IACvB,CAAC;IAEM,0BAA0B,CAChC,OAA0C;QAE1C,IAAI,CAAC,qCAAqC,GAAG,OAAO,CAAA;IACrD,CAAC;IAEM,YAAY,CAAC,OAA4B;QAC/C,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAA;QACtC,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAEM,aAAa;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC7B,CAAC;IAEM,wBAAwB,CAAC,OAAwC;QACvE,IAAI,CAAC,mCAAmC,GAAG,OAAO,CAAA;IACnD,CAAC;IAEM,yBAAyB,CAAC,OAAyC;QACzE,IAAI,CAAC,oCAAoC,GAAG,OAAO,CAAA;QACnD,IAAI,CAAC,iCAAiC,EAAE,CAAA;IACzC,CAAC;IAEM,UAAU;QAChB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;CACD;AAjDD,6BAiDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MockTimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/testDoubles/MockTimeMarkerOutlet.ts"],"names":[],"mappings":";;AAAA,uDAA+C;AAG/C,MAAqB,oBAAoB;IAAzC;QACS,mBAAc,GAAG,KAAK,CAAA;QAEtB,mBAAc,GAAG,KAAK,CAAA;IAsD/B,CAAC;IAnDO,IAAI,KAAU,CAAC;IACf,OAAO,KAAU,CAAC;IAElB,UAAU,CAAC,MAAiB;;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACxB,CAAC;QACD,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;IAC7B,CAAC;IAEM,oBAAoB,CAAC,OAAqB;QAChD,mBAAM,CAAC,MAAM,CACZ,IAAI,CAAC,cAAc,EACnB,0EAA0E,CAC1E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACb,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;IACF,CAAC;IAEM,uBAAuB;QAC7B,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC3E,CAAA;IACF,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,aAAa,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;IACF,CAAC;IAEM,uBAAuB;QAC7B,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,cAAc,EACnB,4EAA4E,CAC5E,CAAA;IACF,CAAC;CACD;AAzDD,uCAyDC"}
1
+ {"version":3,"file":"MockTimeMarkerOutlet.js","sourceRoot":"","sources":["../../src/testDoubles/MockTimeMarkerOutlet.ts"],"names":[],"mappings":";;AAAA,uDAA+C;AAG/C,MAAqB,oBAAoB;IAAzC;QACS,mBAAc,GAAG,KAAK,CAAA;QAEtB,mBAAc,GAAG,KAAK,CAAA;IAsD/B,CAAC;IAnDO,IAAI,KAAI,CAAC;IACT,OAAO,KAAI,CAAC;IAEZ,UAAU,CAAC,MAAiB;;QAClC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACxB,CAAC;QACD,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAyB;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;IAC7B,CAAC;IAEM,oBAAoB,CAAC,OAAqB;QAChD,mBAAM,CAAC,MAAM,CACZ,IAAI,CAAC,cAAc,EACnB,0EAA0E,CAC1E,CAAA;QAED,IAAI,OAAO,EAAE,CAAC;YACb,mBAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;IACF,CAAC;IAEM,uBAAuB;QAC7B,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,cAAc,EACnB,2EAA2E,CAC3E,CAAA;IACF,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,aAAa,EAAE,OAAO,CAAC,CAAA;QAChD,CAAC;IACF,CAAC;IAEM,uBAAuB;QAC7B,mBAAM,CAAC,OAAO,CACb,IAAI,CAAC,cAAc,EACnB,4EAA4E,CAC5E,CAAA;IACF,CAAC;CACD;AAzDD,uCAyDC"}
@@ -10,10 +10,12 @@ function isGreaterThanOrEqualToZero(value) {
10
10
  }
11
11
  exports.isGreaterThanOrEqualToZero = isGreaterThanOrEqualToZero;
12
12
  function isPositiveInteger(value) {
13
+ //@ts-ignore
13
14
  return Number.isInteger(value) && value > 0;
14
15
  }
15
16
  exports.isPositiveInteger = isPositiveInteger;
16
17
  function isPositiveIntegerOrZero(value) {
18
+ //@ts-ignore
17
19
  return Number.isInteger(value) && value >= 0;
18
20
  }
19
21
  exports.isPositiveIntegerOrZero = isPositiveIntegerOrZero;
@@ -1 +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"}
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,YAAY;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAC5C,CAAC;AAHD,8CAGC;AAED,SAAgB,uBAAuB,CAAC,KAAa;IACpD,YAAY;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAC7C,CAAC;AAHD,0DAGC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "7.1.3",
3
+ "version": "7.1.5",
4
4
  "main": "build/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -27,12 +27,12 @@
27
27
  "watch.build.dev": "tsc-watch --sourceMap --onCompilationComplete 'yarn post.watch.build'",
28
28
  "watch.lint": "concurrently 'yarn lint' \"chokidar 'src/**/*' -c 'yarn lint.tsc'\"",
29
29
  "watch.rebuild": "yarn clean.all && yarn && yarn watch.build.dev",
30
- "watch.tsc": "tsc -w"
30
+ "watch.tsc": "tsc -w",
31
+ "test.rs": "node build/test.js"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@sprucelabs/jest-json-reporter": "^7.0.197",
34
35
  "@sprucelabs/resolve-path-aliases": "^1.1.298",
35
- "@sprucelabs/spruce-test-fixtures": "^61.1.13",
36
36
  "@sprucelabs/test": "^8.0.49",
37
37
  "@sprucelabs/test-utils": "^4.0.141",
38
38
  "@types/ffi-napi": "^4.0.10",
@@ -50,7 +50,10 @@
50
50
  },
51
51
  "description": "Lab Streaming Layer (LSL) bindings for Node",
52
52
  "skill": {
53
- "namespace": "node-lsl"
53
+ "namespace": "node-lsl",
54
+ "upgradeIgnoreList": [
55
+ "@sprucelabs/spruce-test-fixtures"
56
+ ]
54
57
  },
55
58
  "jest": {
56
59
  "testRunner": "jest-circus/runner",
@@ -75,7 +78,7 @@
75
78
  "@sprucelabs/schema": "^29.4.43",
76
79
  "@sprucelabs/spruce-core-schemas": "^39.0.277",
77
80
  "@sprucelabs/spruce-skill-utils": "^30.4.10",
78
- "ffi-napi": "^4.0.3",
81
+ "ffi-rs": "^1.0.62",
79
82
  "node-gyp": "^10.1.0",
80
83
  "ref-array-napi": "^1.2.2",
81
84
  "ref-napi": "^3.0.3"
@@ -112,16 +112,21 @@ export default class LslOutletTest extends AbstractSpruceTest {
112
112
  outlet.pushSample(sample)
113
113
 
114
114
  assert.isEqual(
115
- this.fakeLiblsl.lastPushSampleFtOptions?.outlet,
115
+ this.fakeLiblsl.lastPushSampleFloatTimestampOptions?.outlet,
116
116
  this.fakeLiblsl.outlet
117
117
  )
118
- assert.isEqualDeep(this.fakeLiblsl.lastPushSampleFtOptions?.sample, sample)
118
+ assert.isEqualDeep(
119
+ this.fakeLiblsl.lastPushSampleFloatTimestampOptions?.sample,
120
+ sample
121
+ )
119
122
  assert.isEqualDeep(this.fakeLiblsl.lastCreateOutletOptions, {
120
123
  info: this.fakeLiblsl.streamInfo,
121
124
  chunkSize: this.randomOutletOptions.chunkSize,
122
125
  maxBuffered: this.randomOutletOptions.maxBuffered,
123
126
  })
124
- assert.isNumber(this.fakeLiblsl.lastPushSampleFtOptions?.timestamp)
127
+ assert.isNumber(
128
+ this.fakeLiblsl.lastPushSampleFloatTimestampOptions?.timestamp
129
+ )
125
130
  }
126
131
 
127
132
  @test()
@@ -132,14 +137,16 @@ export default class LslOutletTest extends AbstractSpruceTest {
132
137
  outlet.pushSample(sample)
133
138
 
134
139
  assert.isEqual(
135
- this.fakeLiblsl.lastPushSampleStrtOptions?.outlet,
140
+ this.fakeLiblsl.lastPushSampleStringTimestampOptions?.outlet,
136
141
  this.fakeLiblsl.outlet
137
142
  )
138
143
  assert.isEqualDeep(
139
- this.fakeLiblsl.lastPushSampleStrtOptions?.sample,
144
+ this.fakeLiblsl.lastPushSampleStringTimestampOptions?.sample,
140
145
  sample
141
146
  )
142
- assert.isNumber(this.fakeLiblsl.lastPushSampleStrtOptions?.timestamp)
147
+ assert.isNumber(
148
+ this.fakeLiblsl.lastPushSampleStringTimestampOptions?.timestamp
149
+ )
143
150
  }
144
151
 
145
152
  @test()
@@ -148,12 +155,12 @@ export default class LslOutletTest extends AbstractSpruceTest {
148
155
  const sample = [generateId()]
149
156
 
150
157
  outlet.pushSample(sample)
151
- const t1 = this.fakeLiblsl.lastPushSampleStrtOptions?.timestamp
158
+ const t1 = this.fakeLiblsl.lastPushSampleStringTimestampOptions?.timestamp
152
159
 
153
160
  await this.wait(10)
154
161
 
155
162
  outlet.pushSample(sample)
156
- const t2 = this.fakeLiblsl.lastPushSampleStrtOptions?.timestamp
163
+ const t2 = this.fakeLiblsl.lastPushSampleStringTimestampOptions?.timestamp
157
164
 
158
165
  assert.isNotEqual(t1, t2)
159
166
  assert.isEqual(this.fakeLiblsl.localClockHitCount, 2)
@@ -51,7 +51,7 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
51
51
  const markers = [this.generateDurationMarkerValues()]
52
52
  await this.outlet.pushMarkers(markers)
53
53
 
54
- assert.isEqual(this.fakeLiblsl.pushSampleStrtHitCount, 1)
54
+ assert.isEqual(this.fakeLiblsl.pushSampleStringTimestampHitCount, 1)
55
55
  assert.isEqual(this.outlet.totalWaitTimeMs, markers[0].durationMs)
56
56
  }
57
57
 
@@ -59,7 +59,7 @@ export default class TimeMarkerOutletTest extends AbstractSpruceTest {
59
59
  protected static async pushingTwoMarkersIncrementsHitCountAndWaitTimeTwice() {
60
60
  const markers = await this.pushTotalMarkers(2)
61
61
 
62
- assert.isEqual(this.fakeLiblsl.pushSampleStrtHitCount, 2)
62
+ assert.isEqual(this.fakeLiblsl.pushSampleStringTimestampHitCount, 2)
63
63
  assert.isEqual(
64
64
  this.outlet.totalWaitTimeMs,
65
65
  markers[0].durationMs + markers[1].durationMs
@@ -5,20 +5,17 @@ import AbstractSpruceTest, {
5
5
  errorAssert,
6
6
  generateId,
7
7
  } from '@sprucelabs/test-utils'
8
+ import { DataType, OpenParams } from 'ffi-rs'
8
9
  import LiblslImpl from '../../implementations/Liblsl'
9
10
  import {
10
11
  BoundChild,
11
- BoundDesc,
12
+ BoundDescription,
12
13
  BoundOutlet,
13
14
  BoundStreamInfo,
14
- FloatArray,
15
+ FfiRsDefineOptions,
15
16
  Liblsl,
16
17
  LiblslBindings,
17
18
  LslChannel,
18
- StringArray,
19
- outletType,
20
- streamInfo,
21
- xmlPtr,
22
19
  } from '../../nodeLsl.types'
23
20
  import FakeLiblsl from '../../testDoubles/FakeLiblsl'
24
21
 
@@ -29,21 +26,23 @@ export default class LiblslTest extends AbstractSpruceTest {
29
26
  private static fakeBindings: LiblslBindings
30
27
  private static fakeStreamInfo: BoundStreamInfo
31
28
  private static fakeOutlet: BoundOutlet
32
- private static fakeDesc: BoundDesc
29
+ private static fakeDesc: BoundDescription
33
30
  private static fakeChildNamedChannels: BoundChild
34
31
  private static createStreamInfoParams?: any[]
35
32
  private static appendChildParams: any[] = []
36
33
  private static createOutletParams?: any[]
37
34
  private static destroyOutletParams?: any[]
38
- private static pushSampleFtParams?: any[]
39
- private static pushSampleStrtParams?: any[]
35
+ private static pushSampleFloatTimestampParams?: any[]
36
+ private static pushSampleStringTimestampParams?: any[]
40
37
  private static appendChildValueParams: any[]
41
38
  private static shouldThrowWhenCreatingBindings: boolean
42
39
  private static getDescriptionParams?: [BoundStreamInfo]
43
40
  private static fakeChildNamedChannel: BoundChild
44
41
  private static appendChildHitCount: number
42
+ private static ffiRsOpenOptions?: OpenParams
43
+ private static ffiRsDefineOptions: FfiRsDefineOptions
45
44
 
46
- protected static async beforeEach(): Promise<void> {
45
+ protected static async beforeEach() {
47
46
  await super.beforeEach()
48
47
 
49
48
  delete this.libraryPath
@@ -51,7 +50,7 @@ export default class LiblslTest extends AbstractSpruceTest {
51
50
  delete this.createStreamInfoParams
52
51
  delete this.createOutletParams
53
52
  delete this.destroyOutletParams
54
- delete this.pushSampleFtParams
53
+ delete this.pushSampleFloatTimestampParams
55
54
  delete this.getDescriptionParams
56
55
  this.appendChildParams = []
57
56
  this.appendChildValueParams = []
@@ -69,16 +68,17 @@ export default class LiblslTest extends AbstractSpruceTest {
69
68
 
70
69
  this.appendChildHitCount = 0
71
70
 
72
- LiblslImpl.ffi = {
73
- //@ts-ignore
74
- Library: (path: string, options: Record<string, any>) => {
75
- this.libraryPath = path
76
- this.libraryOptions = options
77
- if (this.shouldThrowWhenCreatingBindings) {
78
- throw new Error('Failed to create bindings!')
79
- }
80
- return this.fakeBindings
81
- },
71
+ delete this.ffiRsOpenOptions
72
+ LiblslImpl.ffiRsOpen = (options) => {
73
+ this.ffiRsOpenOptions = options
74
+ }
75
+
76
+ LiblslImpl.ffiRsDefine = (options) => {
77
+ this.ffiRsDefineOptions = options
78
+ if (this.shouldThrowWhenCreatingBindings) {
79
+ throw new Error('Failed to create bindings!')
80
+ }
81
+ return this.fakeBindings as any
82
82
  }
83
83
 
84
84
  LiblslImpl.resetInstance()
@@ -103,6 +103,14 @@ export default class LiblslTest extends AbstractSpruceTest {
103
103
  })
104
104
  }
105
105
 
106
+ @test()
107
+ protected static async callsOpenOnFfRs() {
108
+ assert.isEqualDeep(this.ffiRsOpenOptions, {
109
+ library: 'lsl',
110
+ path: process.env.LIBLSL_PATH,
111
+ })
112
+ }
113
+
106
114
  @test()
107
115
  protected static throwsWhenCreateStreamInfoIsMissingRequiredParams() {
108
116
  //@ts-ignore
@@ -138,18 +146,18 @@ export default class LiblslTest extends AbstractSpruceTest {
138
146
  }
139
147
 
140
148
  @test()
141
- protected static async throwsWhenPushSampleFtIsMissingRequiredParams() {
149
+ protected static async throwsWhenPushSampleFloatTimestampIsMissingRequiredParams() {
142
150
  //@ts-ignore
143
- const err = assert.doesThrow(() => this.lsl.pushSampleFt())
151
+ const err = assert.doesThrow(() => this.lsl.pushSampleFloatTimestamp())
144
152
  errorAssert.assertError(err, 'MISSING_PARAMETERS', {
145
153
  parameters: ['outlet', 'sample', 'timestamp'],
146
154
  })
147
155
  }
148
156
 
149
157
  @test()
150
- protected static async throwsWhenPushSampleStrtIsMissingRequiredParams() {
158
+ protected static async throwsWhenPushSampleStringTimestampIsMissingRequiredParams() {
151
159
  //@ts-ignore
152
- const err = assert.doesThrow(() => this.lsl.pushSampleFt())
160
+ const err = assert.doesThrow(() => this.lsl.pushSampleFloatTimestamp())
153
161
  errorAssert.assertError(err, 'MISSING_PARAMETERS', {
154
162
  parameters: ['outlet', 'sample', 'timestamp'],
155
163
  })
@@ -174,28 +182,61 @@ export default class LiblslTest extends AbstractSpruceTest {
174
182
  }
175
183
 
176
184
  @test()
177
- protected static async createsExpectedBindingsToLiblsl() {
178
- process.env.LIBLSL_PATH = generateId()
179
- new LiblslImpl()
180
- assert.isEqual(this.libraryPath, process.env.LIBLSL_PATH)
181
- const expected = {
182
- lsl_create_streaminfo: [
183
- streamInfo,
184
- ['string', 'string', 'int', 'double', 'int', 'string'],
185
- ],
186
- lsl_create_outlet: [outletType, [streamInfo, 'int', 'int']],
187
- lsl_destroy_outlet: ['void', [outletType]],
188
- lsl_local_clock: ['double', []],
189
- lsl_push_sample_ft: ['void', [outletType, FloatArray, 'double']],
190
- lsl_push_sample_strt: ['void', [outletType, StringArray, 'double']],
191
- lsl_get_desc: [xmlPtr, [streamInfo]],
192
- lsl_append_child: [xmlPtr, [xmlPtr, 'string']],
193
- lsl_append_child_value: [xmlPtr, [xmlPtr, 'string', 'string']],
194
- }
195
- assert.isEqual(
196
- JSON.stringify(this.libraryOptions),
197
- JSON.stringify(expected)
198
- )
185
+ protected static async createsExpectedBindingsWithFfiRs() {
186
+ assert.isEqualDeep(this.ffiRsDefineOptions, {
187
+ lsl_create_streaminfo: {
188
+ library: 'lsl',
189
+ retType: DataType.External,
190
+ paramsType: [
191
+ DataType.String,
192
+ DataType.String,
193
+ DataType.I32,
194
+ DataType.Double,
195
+ DataType.I32,
196
+ DataType.String,
197
+ ],
198
+ },
199
+ lsl_create_outlet: {
200
+ library: 'lsl',
201
+ retType: DataType.External,
202
+ paramsType: [DataType.External, DataType.I32, DataType.I32],
203
+ },
204
+ lsl_destroy_outlet: {
205
+ library: 'lsl',
206
+ retType: DataType.Void,
207
+ paramsType: [DataType.External],
208
+ },
209
+ lsl_local_clock: {
210
+ library: 'lsl',
211
+ retType: DataType.Double,
212
+ paramsType: [],
213
+ },
214
+ lsl_push_sample_ft: {
215
+ library: 'lsl',
216
+ retType: DataType.Void,
217
+ paramsType: [DataType.External, DataType.DoubleArray, DataType.Double],
218
+ },
219
+ lsl_push_sample_strt: {
220
+ library: 'lsl',
221
+ retType: DataType.Void,
222
+ paramsType: [DataType.External, DataType.StringArray, DataType.Double],
223
+ },
224
+ lsl_get_desc: {
225
+ library: 'lsl',
226
+ retType: DataType.External,
227
+ paramsType: [DataType.External],
228
+ },
229
+ lsl_append_child: {
230
+ library: 'lsl',
231
+ retType: DataType.External,
232
+ paramsType: [DataType.External, DataType.String],
233
+ },
234
+ lsl_append_child_value: {
235
+ library: 'lsl',
236
+ retType: DataType.External,
237
+ paramsType: [DataType.External, DataType.String, DataType.String],
238
+ },
239
+ })
199
240
  }
200
241
 
201
242
  @test()
@@ -223,10 +264,10 @@ export default class LiblslTest extends AbstractSpruceTest {
223
264
  sample: expected,
224
265
  timestamp,
225
266
  }
226
- this.lsl.pushSampleFt(options)
227
- assert.isEqual(this.pushSampleFtParams?.[0], this.fakeOutlet)
228
- assert.isEqual(this.pushSampleFtParams?.[1], expected)
229
- assert.isEqual(this.pushSampleFtParams?.[2], timestamp)
267
+ this.lsl.pushSampleFloatTimestamp(options)
268
+ assert.isEqual(this.pushSampleFloatTimestampParams?.[0], this.fakeOutlet)
269
+ assert.isEqual(this.pushSampleFloatTimestampParams?.[1], expected)
270
+ assert.isEqual(this.pushSampleFloatTimestampParams?.[2], timestamp)
230
271
  }
231
272
 
232
273
  @test()
@@ -238,10 +279,10 @@ export default class LiblslTest extends AbstractSpruceTest {
238
279
  sample: expected,
239
280
  timestamp,
240
281
  }
241
- this.lsl.pushSampleStrt(options)
242
- assert.isEqual(this.pushSampleStrtParams?.[0], this.fakeOutlet)
243
- assert.isEqualDeep(this.pushSampleStrtParams?.[1], expected)
244
- assert.isEqual(this.pushSampleStrtParams?.[2], timestamp)
282
+ this.lsl.pushSampleStringTimestamp(options)
283
+ assert.isEqual(this.pushSampleStringTimestampParams?.[0], this.fakeOutlet)
284
+ assert.isEqualDeep(this.pushSampleStringTimestampParams?.[1], expected)
285
+ assert.isEqual(this.pushSampleStringTimestampParams?.[2], timestamp)
245
286
  }
246
287
 
247
288
  @test()
@@ -330,7 +371,7 @@ export default class LiblslTest extends AbstractSpruceTest {
330
371
  return { options, outlet }
331
372
  }
332
373
 
333
- private static generateRandomChannelValues(): LslChannel {
374
+ private static generateRandomChannelValues() {
334
375
  return {
335
376
  label: generateId(),
336
377
  type: generateId(),
@@ -349,7 +390,7 @@ export default class LiblslTest extends AbstractSpruceTest {
349
390
  }
350
391
  }
351
392
 
352
- private static FakeBindings(): LiblslBindings {
393
+ private static FakeBindings() {
353
394
  return {
354
395
  lsl_create_streaminfo: (...params: any[]) => {
355
396
  this.createStreamInfoParams = params
@@ -363,10 +404,10 @@ export default class LiblslTest extends AbstractSpruceTest {
363
404
  this.destroyOutletParams = params
364
405
  },
365
406
  lsl_push_sample_ft: (...params: any[]) => {
366
- this.pushSampleFtParams = params
407
+ this.pushSampleFloatTimestampParams = params
367
408
  },
368
409
  lsl_push_sample_strt: (...params: any[]) => {
369
- this.pushSampleStrtParams = params
410
+ this.pushSampleStringTimestampParams = params
370
411
  },
371
412
  lsl_local_clock: () => new Date().getTime(),
372
413
  lsl_get_desc: (info: BoundStreamInfo) => {