@neurodevs/node-lsl 7.1.4 → 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.
@@ -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,16 +57,16 @@ 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();
@@ -86,6 +85,12 @@ class LiblslTest extends test_utils_1.default {
86
85
  liblslPath: process.env.LIBLSL_PATH,
87
86
  });
88
87
  }
88
+ static async callsOpenOnFfRs() {
89
+ test_utils_1.assert.isEqualDeep(this.ffiRsOpenOptions, {
90
+ library: 'lsl',
91
+ path: process.env.LIBLSL_PATH,
92
+ });
93
+ }
89
94
  static throwsWhenCreateStreamInfoIsMissingRequiredParams() {
90
95
  //@ts-ignore
91
96
  const err = test_utils_1.assert.doesThrow(() => this.lsl.createStreamInfo());
@@ -140,25 +145,61 @@ class LiblslTest extends test_utils_1.default {
140
145
  Liblsl_1.default.setInstance(fake);
141
146
  test_utils_1.assert.isEqual(Liblsl_1.default.getInstance(), fake);
142
147
  }
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));
148
+ static async createsExpectedBindingsWithFfiRs() {
149
+ test_utils_1.assert.isEqualDeep(this.ffiRsDefineOptions, {
150
+ lsl_create_streaminfo: {
151
+ library: 'lsl',
152
+ retType: 11 /* DataType.External */,
153
+ paramsType: [
154
+ 0 /* DataType.String */,
155
+ 0 /* DataType.String */,
156
+ 1 /* DataType.I32 */,
157
+ 2 /* DataType.Double */,
158
+ 1 /* DataType.I32 */,
159
+ 0 /* DataType.String */,
160
+ ],
161
+ },
162
+ lsl_create_outlet: {
163
+ library: 'lsl',
164
+ retType: 11 /* DataType.External */,
165
+ paramsType: [11 /* DataType.External */, 1 /* DataType.I32 */, 1 /* DataType.I32 */],
166
+ },
167
+ lsl_destroy_outlet: {
168
+ library: 'lsl',
169
+ retType: 7 /* DataType.Void */,
170
+ paramsType: [11 /* DataType.External */],
171
+ },
172
+ lsl_local_clock: {
173
+ library: 'lsl',
174
+ retType: 2 /* DataType.Double */,
175
+ paramsType: [],
176
+ },
177
+ lsl_push_sample_ft: {
178
+ library: 'lsl',
179
+ retType: 7 /* DataType.Void */,
180
+ paramsType: [11 /* DataType.External */, 5 /* DataType.DoubleArray */, 2 /* DataType.Double */],
181
+ },
182
+ lsl_push_sample_strt: {
183
+ library: 'lsl',
184
+ retType: 7 /* DataType.Void */,
185
+ paramsType: [11 /* DataType.External */, 4 /* DataType.StringArray */, 2 /* DataType.Double */],
186
+ },
187
+ lsl_get_desc: {
188
+ library: 'lsl',
189
+ retType: 11 /* DataType.External */,
190
+ paramsType: [11 /* DataType.External */],
191
+ },
192
+ lsl_append_child: {
193
+ library: 'lsl',
194
+ retType: 11 /* DataType.External */,
195
+ paramsType: [11 /* DataType.External */, 0 /* DataType.String */],
196
+ },
197
+ lsl_append_child_value: {
198
+ library: 'lsl',
199
+ retType: 11 /* DataType.External */,
200
+ paramsType: [11 /* DataType.External */, 0 /* DataType.String */, 0 /* DataType.String */],
201
+ },
202
+ });
162
203
  }
163
204
  static async canCreateStreamInfoWithRequiredParams() {
164
205
  const options = this.generateRandomCreateStreamInfoOptions();
@@ -327,6 +368,9 @@ __decorate([
327
368
  __decorate([
328
369
  (0, test_utils_1.test)()
329
370
  ], LiblslTest, "throwsWhenBindingsFailToLoad", null);
371
+ __decorate([
372
+ (0, test_utils_1.test)()
373
+ ], LiblslTest, "callsOpenOnFfRs", null);
330
374
  __decorate([
331
375
  (0, test_utils_1.test)()
332
376
  ], LiblslTest, "throwsWhenCreateStreamInfoIsMissingRequiredParams", null);
@@ -353,7 +397,7 @@ __decorate([
353
397
  ], LiblslTest, "canSetInstance", null);
354
398
  __decorate([
355
399
  (0, test_utils_1.test)()
356
- ], LiblslTest, "createsExpectedBindingsToLiblsl", null);
400
+ ], LiblslTest, "createsExpectedBindingsWithFfiRs", null);
357
401
  __decorate([
358
402
  (0, test_utils_1.test)()
359
403
  ], 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,8 +1,9 @@
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;
@@ -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": "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"
@@ -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()
@@ -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
@@ -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()
@@ -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() {
@@ -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
+ >