@neurodevs/node-lsl 7.1.4 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,9 +19,12 @@ export default class LiblslTest extends AbstractSpruceTest {
19
19
  private static getDescriptionParams?;
20
20
  private static fakeChildNamedChannel;
21
21
  private static appendChildHitCount;
22
+ private static ffiRsOpenOptions?;
23
+ private static ffiRsDefineOptions;
22
24
  protected static beforeEach(): Promise<void>;
23
25
  protected static throwsWithMissingEnv(): Promise<void>;
24
26
  protected static throwsWhenBindingsFailToLoad(): Promise<void>;
27
+ protected static callsOpenOnFfRs(): Promise<void>;
25
28
  protected static throwsWhenCreateStreamInfoIsMissingRequiredParams(): void;
26
29
  protected static throwsWhenAppendChannelsIsMissingRequiredParams(): Promise<void>;
27
30
  protected static throwsWhenCreateOutletIsMissingRequiredParams(): Promise<void>;
@@ -30,7 +33,7 @@ export default class LiblslTest extends AbstractSpruceTest {
30
33
  protected static worksAsASingleton(): Promise<void>;
31
34
  protected static singletonIsTheSame(): Promise<void>;
32
35
  protected static canSetInstance(): void;
33
- protected static createsExpectedBindingsToLiblsl(): Promise<void>;
36
+ protected static createsExpectedBindingsWithFfiRs(): Promise<void>;
34
37
  protected static canCreateStreamInfoWithRequiredParams(): Promise<void>;
35
38
  protected static canCreateOutletWithRequiredParams(): Promise<void>;
36
39
  protected static canPushFloatSample(): Promise<void>;
@@ -35,7 +35,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
35
35
  const crypto_1 = require("crypto");
36
36
  const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
37
37
  const Liblsl_1 = __importDefault(require("../../implementations/Liblsl"));
38
- const nodeLsl_types_1 = require("../../nodeLsl.types");
39
38
  const FakeLiblsl_1 = __importDefault(require("../../testDoubles/FakeLiblsl"));
40
39
  class LiblslTest extends test_utils_1.default {
41
40
  static async beforeEach() {
@@ -58,34 +57,42 @@ class LiblslTest extends test_utils_1.default {
58
57
  this.fakeBindings = this.FakeBindings();
59
58
  this.shouldThrowWhenCreatingBindings = false;
60
59
  this.appendChildHitCount = 0;
61
- Liblsl_1.default.ffi = {
62
- //@ts-ignore
63
- Library: (path, options) => {
64
- this.libraryPath = path;
65
- this.libraryOptions = options;
66
- if (this.shouldThrowWhenCreatingBindings) {
67
- throw new Error('Failed to create bindings!');
68
- }
69
- return this.fakeBindings;
70
- },
60
+ delete this.ffiRsOpenOptions;
61
+ Liblsl_1.default.ffiRsOpen = (options) => {
62
+ this.ffiRsOpenOptions = options;
63
+ };
64
+ Liblsl_1.default.ffiRsDefine = (options) => {
65
+ this.ffiRsDefineOptions = options;
66
+ if (this.shouldThrowWhenCreatingBindings) {
67
+ throw new Error('Failed to create bindings!');
68
+ }
69
+ return this.fakeBindings;
71
70
  };
72
71
  Liblsl_1.default.resetInstance();
73
72
  this.lsl = Liblsl_1.default.getInstance();
74
73
  }
75
74
  static async throwsWithMissingEnv() {
76
75
  delete process.env.LIBLSL_PATH;
77
- const err = test_utils_1.assert.doesThrow(() => new Liblsl_1.default());
76
+ Liblsl_1.default.resetInstance();
77
+ const err = test_utils_1.assert.doesThrow(() => Liblsl_1.default.getInstance());
78
78
  test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
79
79
  parameters: ['env.LIBLSL_PATH'],
80
80
  });
81
81
  }
82
82
  static async throwsWhenBindingsFailToLoad() {
83
83
  this.shouldThrowWhenCreatingBindings = true;
84
- const err = test_utils_1.assert.doesThrow(() => new Liblsl_1.default());
84
+ Liblsl_1.default.resetInstance();
85
+ const err = test_utils_1.assert.doesThrow(() => Liblsl_1.default.getInstance());
85
86
  test_utils_1.errorAssert.assertError(err, 'FAILED_TO_LOAD_LIBLSL', {
86
87
  liblslPath: process.env.LIBLSL_PATH,
87
88
  });
88
89
  }
90
+ static async callsOpenOnFfRs() {
91
+ test_utils_1.assert.isEqualDeep(this.ffiRsOpenOptions, {
92
+ library: 'lsl',
93
+ path: process.env.LIBLSL_PATH,
94
+ });
95
+ }
89
96
  static throwsWhenCreateStreamInfoIsMissingRequiredParams() {
90
97
  //@ts-ignore
91
98
  const err = test_utils_1.assert.doesThrow(() => this.lsl.createStreamInfo());
@@ -130,6 +137,7 @@ class LiblslTest extends test_utils_1.default {
130
137
  }
131
138
  static async worksAsASingleton() {
132
139
  const liblsl = Liblsl_1.default.getInstance();
140
+ //@ts-ignore
133
141
  test_utils_1.assert.isInstanceOf(liblsl, Liblsl_1.default);
134
142
  }
135
143
  static async singletonIsTheSame() {
@@ -140,25 +148,61 @@ class LiblslTest extends test_utils_1.default {
140
148
  Liblsl_1.default.setInstance(fake);
141
149
  test_utils_1.assert.isEqual(Liblsl_1.default.getInstance(), fake);
142
150
  }
143
- static async createsExpectedBindingsToLiblsl() {
144
- process.env.LIBLSL_PATH = (0, test_utils_1.generateId)();
145
- new Liblsl_1.default();
146
- test_utils_1.assert.isEqual(this.libraryPath, process.env.LIBLSL_PATH);
147
- const expected = {
148
- lsl_create_streaminfo: [
149
- nodeLsl_types_1.streamInfo,
150
- ['string', 'string', 'int', 'double', 'int', 'string'],
151
- ],
152
- lsl_create_outlet: [nodeLsl_types_1.outletType, [nodeLsl_types_1.streamInfo, 'int', 'int']],
153
- lsl_destroy_outlet: ['void', [nodeLsl_types_1.outletType]],
154
- lsl_local_clock: ['double', []],
155
- lsl_push_sample_ft: ['void', [nodeLsl_types_1.outletType, nodeLsl_types_1.FloatArray, 'double']],
156
- lsl_push_sample_strt: ['void', [nodeLsl_types_1.outletType, nodeLsl_types_1.StringArray, 'double']],
157
- lsl_get_desc: [nodeLsl_types_1.xmlPtr, [nodeLsl_types_1.streamInfo]],
158
- lsl_append_child: [nodeLsl_types_1.xmlPtr, [nodeLsl_types_1.xmlPtr, 'string']],
159
- lsl_append_child_value: [nodeLsl_types_1.xmlPtr, [nodeLsl_types_1.xmlPtr, 'string', 'string']],
160
- };
161
- test_utils_1.assert.isEqual(JSON.stringify(this.libraryOptions), JSON.stringify(expected));
151
+ static async createsExpectedBindingsWithFfiRs() {
152
+ test_utils_1.assert.isEqualDeep(this.ffiRsDefineOptions, {
153
+ lsl_create_streaminfo: {
154
+ library: 'lsl',
155
+ retType: 11 /* DataType.External */,
156
+ paramsType: [
157
+ 0 /* DataType.String */,
158
+ 0 /* DataType.String */,
159
+ 1 /* DataType.I32 */,
160
+ 2 /* DataType.Double */,
161
+ 1 /* DataType.I32 */,
162
+ 0 /* DataType.String */,
163
+ ],
164
+ },
165
+ lsl_create_outlet: {
166
+ library: 'lsl',
167
+ retType: 11 /* DataType.External */,
168
+ paramsType: [11 /* DataType.External */, 1 /* DataType.I32 */, 1 /* DataType.I32 */],
169
+ },
170
+ lsl_destroy_outlet: {
171
+ library: 'lsl',
172
+ retType: 7 /* DataType.Void */,
173
+ paramsType: [11 /* DataType.External */],
174
+ },
175
+ lsl_local_clock: {
176
+ library: 'lsl',
177
+ retType: 2 /* DataType.Double */,
178
+ paramsType: [],
179
+ },
180
+ lsl_push_sample_ft: {
181
+ library: 'lsl',
182
+ retType: 7 /* DataType.Void */,
183
+ paramsType: [11 /* DataType.External */, 5 /* DataType.DoubleArray */, 2 /* DataType.Double */],
184
+ },
185
+ lsl_push_sample_strt: {
186
+ library: 'lsl',
187
+ retType: 7 /* DataType.Void */,
188
+ paramsType: [11 /* DataType.External */, 4 /* DataType.StringArray */, 2 /* DataType.Double */],
189
+ },
190
+ lsl_get_desc: {
191
+ library: 'lsl',
192
+ retType: 11 /* DataType.External */,
193
+ paramsType: [11 /* DataType.External */],
194
+ },
195
+ lsl_append_child: {
196
+ library: 'lsl',
197
+ retType: 11 /* DataType.External */,
198
+ paramsType: [11 /* DataType.External */, 0 /* DataType.String */],
199
+ },
200
+ lsl_append_child_value: {
201
+ library: 'lsl',
202
+ retType: 11 /* DataType.External */,
203
+ paramsType: [11 /* DataType.External */, 0 /* DataType.String */, 0 /* DataType.String */],
204
+ },
205
+ });
162
206
  }
163
207
  static async canCreateStreamInfoWithRequiredParams() {
164
208
  const options = this.generateRandomCreateStreamInfoOptions();
@@ -327,6 +371,9 @@ __decorate([
327
371
  __decorate([
328
372
  (0, test_utils_1.test)()
329
373
  ], LiblslTest, "throwsWhenBindingsFailToLoad", null);
374
+ __decorate([
375
+ (0, test_utils_1.test)()
376
+ ], LiblslTest, "callsOpenOnFfRs", null);
330
377
  __decorate([
331
378
  (0, test_utils_1.test)()
332
379
  ], LiblslTest, "throwsWhenCreateStreamInfoIsMissingRequiredParams", null);
@@ -353,7 +400,7 @@ __decorate([
353
400
  ], LiblslTest, "canSetInstance", null);
354
401
  __decorate([
355
402
  (0, test_utils_1.test)()
356
- ], LiblslTest, "createsExpectedBindingsToLiblsl", null);
403
+ ], LiblslTest, "createsExpectedBindingsWithFfiRs", null);
357
404
  __decorate([
358
405
  (0, test_utils_1.test)()
359
406
  ], LiblslTest, "canCreateStreamInfoWithRequiredParams", null);
@@ -1 +1 @@
1
- {"version":3,"file":"Liblsl.test.js","sourceRoot":"","sources":["../../../src/__tests__/implementation/Liblsl.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Liblsl.test.js","sourceRoot":"","sources":["../../../src/__tests__/implementation/Liblsl.test.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
- import ffi from 'ffi-napi';
1
+ import { define, open } from 'ffi-rs';
2
2
  import { Liblsl, CreateStreamInfoOptions, AppendChannelsToStreamInfoOptions, CreateOutletOptions, DestroyOutletOptions, PushSampleFloatTimestampOptions, PushSampleStringTimestampOptions } from '../nodeLsl.types';
3
3
  export default class LiblslImpl implements Liblsl {
4
4
  private static instance?;
5
- static ffi: typeof ffi;
5
+ static ffiRsOpen: typeof open;
6
+ static ffiRsDefine: typeof define;
6
7
  private bindings;
7
8
  static getInstance(): Liblsl;
8
9
  static setInstance(instance: Liblsl): void;
9
10
  static resetInstance(): void;
10
- constructor();
11
+ protected constructor();
11
12
  private loadBindings;
12
13
  createStreamInfo(options: CreateStreamInfoOptions): import("../nodeLsl.types").BoundStreamInfo;
13
14
  appendChannelsToStreamInfo(options: AppendChannelsToStreamInfoOptions): void;
@@ -4,9 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const schema_1 = require("@sprucelabs/schema");
7
- const ffi_napi_1 = __importDefault(require("ffi-napi"));
7
+ const ffi_rs_1 = require("ffi-rs");
8
8
  const SpruceError_1 = __importDefault(require("../errors/SpruceError"));
9
- const nodeLsl_types_1 = require("../nodeLsl.types");
10
9
  class LiblslImpl {
11
10
  static getInstance() {
12
11
  if (!this.instance) {
@@ -35,20 +34,64 @@ class LiblslImpl {
35
34
  });
36
35
  }
37
36
  }
38
- loadBindings(path) {
39
- return LiblslImpl.ffi.Library(path, {
40
- lsl_create_streaminfo: [
41
- nodeLsl_types_1.streamInfo,
42
- ['string', 'string', 'int', 'double', 'int', 'string'],
43
- ],
44
- lsl_create_outlet: [nodeLsl_types_1.outletType, [nodeLsl_types_1.streamInfo, 'int', 'int']],
45
- lsl_destroy_outlet: ['void', [nodeLsl_types_1.outletType]],
46
- lsl_local_clock: ['double', []],
47
- lsl_push_sample_ft: ['void', [nodeLsl_types_1.outletType, nodeLsl_types_1.FloatArray, 'double']],
48
- lsl_push_sample_strt: ['void', [nodeLsl_types_1.outletType, nodeLsl_types_1.StringArray, 'double']],
49
- lsl_get_desc: [nodeLsl_types_1.xmlPtr, [nodeLsl_types_1.streamInfo]],
50
- lsl_append_child: [nodeLsl_types_1.xmlPtr, [nodeLsl_types_1.xmlPtr, 'string']],
51
- lsl_append_child_value: [nodeLsl_types_1.xmlPtr, [nodeLsl_types_1.xmlPtr, 'string', 'string']],
37
+ loadBindings(liblslPath) {
38
+ LiblslImpl.ffiRsOpen({
39
+ library: 'lsl',
40
+ path: liblslPath,
41
+ });
42
+ return LiblslImpl.ffiRsDefine({
43
+ lsl_create_streaminfo: {
44
+ library: 'lsl',
45
+ retType: 11 /* DataType.External */,
46
+ paramsType: [
47
+ 0 /* DataType.String */,
48
+ 0 /* DataType.String */,
49
+ 1 /* DataType.I32 */,
50
+ 2 /* DataType.Double */,
51
+ 1 /* DataType.I32 */,
52
+ 0 /* DataType.String */,
53
+ ],
54
+ },
55
+ lsl_create_outlet: {
56
+ library: 'lsl',
57
+ retType: 11 /* DataType.External */,
58
+ paramsType: [11 /* DataType.External */, 1 /* DataType.I32 */, 1 /* DataType.I32 */],
59
+ },
60
+ lsl_destroy_outlet: {
61
+ library: 'lsl',
62
+ retType: 7 /* DataType.Void */,
63
+ paramsType: [11 /* DataType.External */],
64
+ },
65
+ lsl_local_clock: {
66
+ library: 'lsl',
67
+ retType: 2 /* DataType.Double */,
68
+ paramsType: [],
69
+ },
70
+ lsl_push_sample_ft: {
71
+ library: 'lsl',
72
+ retType: 7 /* DataType.Void */,
73
+ paramsType: [11 /* DataType.External */, 5 /* DataType.DoubleArray */, 2 /* DataType.Double */],
74
+ },
75
+ lsl_push_sample_strt: {
76
+ library: 'lsl',
77
+ retType: 7 /* DataType.Void */,
78
+ paramsType: [11 /* DataType.External */, 4 /* DataType.StringArray */, 2 /* DataType.Double */],
79
+ },
80
+ lsl_get_desc: {
81
+ library: 'lsl',
82
+ retType: 11 /* DataType.External */,
83
+ paramsType: [11 /* DataType.External */],
84
+ },
85
+ lsl_append_child: {
86
+ library: 'lsl',
87
+ retType: 11 /* DataType.External */,
88
+ paramsType: [11 /* DataType.External */, 0 /* DataType.String */],
89
+ },
90
+ lsl_append_child_value: {
91
+ library: 'lsl',
92
+ retType: 11 /* DataType.External */,
93
+ paramsType: [11 /* DataType.External */, 0 /* DataType.String */, 0 /* DataType.String */],
94
+ },
52
95
  });
53
96
  }
54
97
  createStreamInfo(options) {
@@ -105,6 +148,7 @@ class LiblslImpl {
105
148
  return this.bindings.lsl_local_clock();
106
149
  }
107
150
  }
108
- LiblslImpl.ffi = ffi_napi_1.default;
151
+ LiblslImpl.ffiRsOpen = ffi_rs_1.open;
152
+ LiblslImpl.ffiRsDefine = ffi_rs_1.define;
109
153
  exports.default = LiblslImpl;
110
154
  //# sourceMappingURL=Liblsl.js.map
@@ -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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"}
@@ -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;
@@ -93,8 +92,4 @@ 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;AAsIb,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":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neurodevs/node-lsl",
3
- "version": "7.1.4",
3
+ "version": "8.0.0",
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"
@@ -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
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
 
@@ -42,6 +39,8 @@ export default class LiblslTest extends AbstractSpruceTest {
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
45
  protected static async beforeEach() {
47
46
  await super.beforeEach()
@@ -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()
@@ -88,7 +88,9 @@ export default class LiblslTest extends AbstractSpruceTest {
88
88
  @test()
89
89
  protected static async throwsWithMissingEnv() {
90
90
  delete process.env.LIBLSL_PATH
91
- const err = assert.doesThrow(() => new LiblslImpl())
91
+ LiblslImpl.resetInstance()
92
+
93
+ const err = assert.doesThrow(() => LiblslImpl.getInstance())
92
94
  errorAssert.assertError(err, 'MISSING_PARAMETERS', {
93
95
  parameters: ['env.LIBLSL_PATH'],
94
96
  })
@@ -97,12 +99,22 @@ export default class LiblslTest extends AbstractSpruceTest {
97
99
  @test()
98
100
  protected static async throwsWhenBindingsFailToLoad() {
99
101
  this.shouldThrowWhenCreatingBindings = true
100
- const err = assert.doesThrow(() => new LiblslImpl())
102
+ LiblslImpl.resetInstance()
103
+
104
+ const err = assert.doesThrow(() => LiblslImpl.getInstance())
101
105
  errorAssert.assertError(err, 'FAILED_TO_LOAD_LIBLSL', {
102
106
  liblslPath: process.env.LIBLSL_PATH,
103
107
  })
104
108
  }
105
109
 
110
+ @test()
111
+ protected static async callsOpenOnFfRs() {
112
+ assert.isEqualDeep(this.ffiRsOpenOptions, {
113
+ library: 'lsl',
114
+ path: process.env.LIBLSL_PATH,
115
+ })
116
+ }
117
+
106
118
  @test()
107
119
  protected static throwsWhenCreateStreamInfoIsMissingRequiredParams() {
108
120
  //@ts-ignore
@@ -158,6 +170,7 @@ export default class LiblslTest extends AbstractSpruceTest {
158
170
  @test()
159
171
  protected static async worksAsASingleton() {
160
172
  const liblsl = LiblslImpl.getInstance()
173
+ //@ts-ignore
161
174
  assert.isInstanceOf(liblsl, LiblslImpl)
162
175
  }
163
176
 
@@ -174,28 +187,61 @@ export default class LiblslTest extends AbstractSpruceTest {
174
187
  }
175
188
 
176
189
  @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
- )
190
+ protected static async createsExpectedBindingsWithFfiRs() {
191
+ assert.isEqualDeep(this.ffiRsDefineOptions, {
192
+ lsl_create_streaminfo: {
193
+ library: 'lsl',
194
+ retType: DataType.External,
195
+ paramsType: [
196
+ DataType.String,
197
+ DataType.String,
198
+ DataType.I32,
199
+ DataType.Double,
200
+ DataType.I32,
201
+ DataType.String,
202
+ ],
203
+ },
204
+ lsl_create_outlet: {
205
+ library: 'lsl',
206
+ retType: DataType.External,
207
+ paramsType: [DataType.External, DataType.I32, DataType.I32],
208
+ },
209
+ lsl_destroy_outlet: {
210
+ library: 'lsl',
211
+ retType: DataType.Void,
212
+ paramsType: [DataType.External],
213
+ },
214
+ lsl_local_clock: {
215
+ library: 'lsl',
216
+ retType: DataType.Double,
217
+ paramsType: [],
218
+ },
219
+ lsl_push_sample_ft: {
220
+ library: 'lsl',
221
+ retType: DataType.Void,
222
+ paramsType: [DataType.External, DataType.DoubleArray, DataType.Double],
223
+ },
224
+ lsl_push_sample_strt: {
225
+ library: 'lsl',
226
+ retType: DataType.Void,
227
+ paramsType: [DataType.External, DataType.StringArray, DataType.Double],
228
+ },
229
+ lsl_get_desc: {
230
+ library: 'lsl',
231
+ retType: DataType.External,
232
+ paramsType: [DataType.External],
233
+ },
234
+ lsl_append_child: {
235
+ library: 'lsl',
236
+ retType: DataType.External,
237
+ paramsType: [DataType.External, DataType.String],
238
+ },
239
+ lsl_append_child_value: {
240
+ library: 'lsl',
241
+ retType: DataType.External,
242
+ paramsType: [DataType.External, DataType.String, DataType.String],
243
+ },
244
+ })
199
245
  }
200
246
 
201
247
  @test()
@@ -1,14 +1,9 @@
1
1
  import { assertOptions } from '@sprucelabs/schema'
2
- import ffi from 'ffi-napi'
2
+ import { DataType, define, open } from 'ffi-rs'
3
3
  import SpruceError from '../errors/SpruceError'
4
4
  import {
5
5
  Liblsl,
6
6
  LiblslBindings,
7
- streamInfo,
8
- outletType,
9
- FloatArray,
10
- StringArray,
11
- xmlPtr,
12
7
  CreateStreamInfoOptions,
13
8
  AppendChannelsToStreamInfoOptions,
14
9
  CreateOutletOptions,
@@ -19,7 +14,9 @@ import {
19
14
 
20
15
  export default class LiblslImpl implements Liblsl {
21
16
  private static instance?: Liblsl
22
- public static ffi = ffi
17
+ public static ffiRsOpen = open
18
+ public static ffiRsDefine = define
19
+
23
20
  private bindings: LiblslBindings
24
21
 
25
22
  public static getInstance() {
@@ -37,7 +34,7 @@ export default class LiblslImpl implements Liblsl {
37
34
  delete this.instance
38
35
  }
39
36
 
40
- public constructor() {
37
+ protected constructor() {
41
38
  const path = process.env.LIBLSL_PATH!
42
39
 
43
40
  if (!path) {
@@ -54,21 +51,66 @@ export default class LiblslImpl implements Liblsl {
54
51
  }
55
52
  }
56
53
 
57
- private loadBindings(path: string) {
58
- return LiblslImpl.ffi.Library(path!, {
59
- lsl_create_streaminfo: [
60
- streamInfo,
61
- ['string', 'string', 'int', 'double', 'int', 'string'],
62
- ],
63
- lsl_create_outlet: [outletType, [streamInfo, 'int', 'int']],
64
- lsl_destroy_outlet: ['void', [outletType]],
65
- lsl_local_clock: ['double', []],
66
- lsl_push_sample_ft: ['void', [outletType, FloatArray, 'double']],
67
- lsl_push_sample_strt: ['void', [outletType, StringArray, 'double']],
68
- lsl_get_desc: [xmlPtr, [streamInfo]],
69
- lsl_append_child: [xmlPtr, [xmlPtr, 'string']],
70
- lsl_append_child_value: [xmlPtr, [xmlPtr, 'string', 'string']],
71
- }) as LiblslBindings
54
+ private loadBindings(liblslPath: string) {
55
+ LiblslImpl.ffiRsOpen({
56
+ library: 'lsl',
57
+ path: liblslPath,
58
+ })
59
+
60
+ return LiblslImpl.ffiRsDefine({
61
+ lsl_create_streaminfo: {
62
+ library: 'lsl',
63
+ retType: DataType.External,
64
+ paramsType: [
65
+ DataType.String,
66
+ DataType.String,
67
+ DataType.I32,
68
+ DataType.Double,
69
+ DataType.I32,
70
+ DataType.String,
71
+ ],
72
+ },
73
+ lsl_create_outlet: {
74
+ library: 'lsl',
75
+ retType: DataType.External,
76
+ paramsType: [DataType.External, DataType.I32, DataType.I32],
77
+ },
78
+ lsl_destroy_outlet: {
79
+ library: 'lsl',
80
+ retType: DataType.Void,
81
+ paramsType: [DataType.External],
82
+ },
83
+ lsl_local_clock: {
84
+ library: 'lsl',
85
+ retType: DataType.Double,
86
+ paramsType: [],
87
+ },
88
+ lsl_push_sample_ft: {
89
+ library: 'lsl',
90
+ retType: DataType.Void,
91
+ paramsType: [DataType.External, DataType.DoubleArray, DataType.Double],
92
+ },
93
+ lsl_push_sample_strt: {
94
+ library: 'lsl',
95
+ retType: DataType.Void,
96
+ paramsType: [DataType.External, DataType.StringArray, DataType.Double],
97
+ },
98
+ lsl_get_desc: {
99
+ library: 'lsl',
100
+ retType: DataType.External,
101
+ paramsType: [DataType.External],
102
+ },
103
+ lsl_append_child: {
104
+ library: 'lsl',
105
+ retType: DataType.External,
106
+ paramsType: [DataType.External, DataType.String],
107
+ },
108
+ lsl_append_child_value: {
109
+ library: 'lsl',
110
+ retType: DataType.External,
111
+ paramsType: [DataType.External, DataType.String, DataType.String],
112
+ },
113
+ }) as unknown as LiblslBindings
72
114
  }
73
115
 
74
116
  public createStreamInfo(options: CreateStreamInfoOptions) {
@@ -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
 
5
4
  export interface LslOutlet {
@@ -133,8 +132,7 @@ export interface BoundOutlet {}
133
132
  export interface BoundDescription {}
134
133
  export interface BoundChild {}
135
134
 
136
- export const streamInfo = ref.refType(ref.types.void)
137
- export const outletType = ref.refType(ref.types.void)
138
- export const FloatArray = ArrayType(ref.types.float)
139
- export const StringArray = ArrayType(ref.types.CString)
140
- export const xmlPtr = ref.refType(ref.types.void)
135
+ export type FfiRsDefineOptions = Record<
136
+ string,
137
+ Omit<FFIParams<any>, 'funcName' | 'paramsValue'>
138
+ >