@neurodevs/ndx-native 0.0.1

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 (67) hide show
  1. package/.nvmrc +1 -0
  2. package/.vscode/launch.json +58 -0
  3. package/.vscode/settings.json +67 -0
  4. package/.vscode/tasks.json +130 -0
  5. package/LICENSE +21 -0
  6. package/README.md +2 -0
  7. package/build/.spruce/settings.json +11 -0
  8. package/build/__tests__/AbstractPackageTest.d.ts +7 -0
  9. package/build/__tests__/AbstractPackageTest.js +14 -0
  10. package/build/__tests__/AbstractPackageTest.js.map +1 -0
  11. package/build/__tests__/impl/LabrecorderAdapter.test.d.ts +30 -0
  12. package/build/__tests__/impl/LabrecorderAdapter.test.js +164 -0
  13. package/build/__tests__/impl/LabrecorderAdapter.test.js.map +1 -0
  14. package/build/__tests__/impl/LiblslAdapter.test.d.ts +84 -0
  15. package/build/__tests__/impl/LiblslAdapter.test.js +750 -0
  16. package/build/__tests__/impl/LiblslAdapter.test.js.map +1 -0
  17. package/build/__tests__/impl/LibxdfAdapter.test.d.ts +45 -0
  18. package/build/__tests__/impl/LibxdfAdapter.test.js +243 -0
  19. package/build/__tests__/impl/LibxdfAdapter.test.js.map +1 -0
  20. package/build/consts.d.ts +11 -0
  21. package/build/consts.js +21 -0
  22. package/build/consts.js.map +1 -0
  23. package/build/impl/LabrecorderAdapter.d.ts +30 -0
  24. package/build/impl/LabrecorderAdapter.js +69 -0
  25. package/build/impl/LabrecorderAdapter.js.map +1 -0
  26. package/build/impl/LiblslAdapter.d.ts +172 -0
  27. package/build/impl/LiblslAdapter.js +360 -0
  28. package/build/impl/LiblslAdapter.js.map +1 -0
  29. package/build/impl/LibxdfAdapter.d.ts +92 -0
  30. package/build/impl/LibxdfAdapter.js +130 -0
  31. package/build/impl/LibxdfAdapter.js.map +1 -0
  32. package/build/index.d.ts +14 -0
  33. package/build/index.js +18 -0
  34. package/build/index.js.map +1 -0
  35. package/build/lib/handleError.d.ts +8 -0
  36. package/build/lib/handleError.js +25 -0
  37. package/build/lib/handleError.js.map +1 -0
  38. package/build/testDoubles/Labrecorder/FakeLabrecorder.d.ts +15 -0
  39. package/build/testDoubles/Labrecorder/FakeLabrecorder.js +26 -0
  40. package/build/testDoubles/Labrecorder/FakeLabrecorder.js.map +1 -0
  41. package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +57 -0
  42. package/build/testDoubles/Liblsl/FakeLiblsl.js +140 -0
  43. package/build/testDoubles/Liblsl/FakeLiblsl.js.map +1 -0
  44. package/build/testDoubles/Libxdf/FakeLibxdf.d.ts +13 -0
  45. package/build/testDoubles/Libxdf/FakeLibxdf.js +25 -0
  46. package/build/testDoubles/Libxdf/FakeLibxdf.js.map +1 -0
  47. package/build/testDoubles/Libxdf/SpyLibxdf.d.ts +6 -0
  48. package/build/testDoubles/Libxdf/SpyLibxdf.js +10 -0
  49. package/build/testDoubles/Libxdf/SpyLibxdf.js.map +1 -0
  50. package/eslint.config.mjs +3 -0
  51. package/package.json +84 -0
  52. package/src/.spruce/settings.json +11 -0
  53. package/src/__tests__/AbstractPackageTest.ts +16 -0
  54. package/src/__tests__/impl/LabrecorderAdapter.test.ts +197 -0
  55. package/src/__tests__/impl/LiblslAdapter.test.ts +907 -0
  56. package/src/__tests__/impl/LibxdfAdapter.test.ts +290 -0
  57. package/src/consts.ts +21 -0
  58. package/src/impl/LabrecorderAdapter.ts +100 -0
  59. package/src/impl/LiblslAdapter.ts +616 -0
  60. package/src/impl/LibxdfAdapter.ts +227 -0
  61. package/src/index.ts +26 -0
  62. package/src/lib/handleError.ts +24 -0
  63. package/src/testDoubles/Labrecorder/FakeLabrecorder.ts +37 -0
  64. package/src/testDoubles/Liblsl/FakeLiblsl.ts +204 -0
  65. package/src/testDoubles/Libxdf/FakeLibxdf.ts +33 -0
  66. package/src/testDoubles/Libxdf/SpyLibxdf.ts +13 -0
  67. package/tsconfig.json +28 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiblslAdapter.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LiblslAdapter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import AbstractPackageTest from '../AbstractPackageTest.js';
2
+ export default class LibxdfTest extends AbstractPackageTest {
3
+ private static instance;
4
+ private static libxdfPath;
5
+ private static path;
6
+ private static shouldThrowWhenLoadingBindings;
7
+ private static mangledLoadXdfName;
8
+ private static fakeBindings;
9
+ private static ffiRsOpenOptions?;
10
+ private static ffiRsDefineOptions?;
11
+ private static loadXdfCalls;
12
+ protected static beforeEach(): Promise<void>;
13
+ protected static canCreateInstance(): void;
14
+ protected static throwsWhenBindingsFailToLoad(): Promise<void>;
15
+ protected static callsFfiRsOpenWithRequiredOptions(): Promise<void>;
16
+ protected static callsFfiRsDefineWithRequiredOptions(): Promise<void>;
17
+ protected static loadXdfCallsBindings(): Promise<void>;
18
+ protected static createsMangledNameExtractor(): Promise<void>;
19
+ protected static callsExtractorWithCorrectParams(): Promise<void>;
20
+ protected static returnsResultInJson(): Promise<void>;
21
+ protected static throwsIfLibxdfPathDoesNotExist(): Promise<void>;
22
+ protected static doesNotThrowIfEventsUndefined(): Promise<void>;
23
+ private static setFakeExtractResult;
24
+ private static generateMangledName;
25
+ private static clearAndFakeFfi;
26
+ private static fakeFfiRsOpen;
27
+ private static fakeFfiRsDefine;
28
+ private static generateFailedMessage;
29
+ private static generateFailedMessageWithFakeError;
30
+ private static loadXdf;
31
+ private static readonly loadXdfName;
32
+ private static readonly fakeStreamId;
33
+ private static readonly fakeStreamName;
34
+ private static readonly fakeStreamType;
35
+ private static readonly fakeChannelCount;
36
+ private static readonly fakeChannelFormat;
37
+ private static readonly fakeNominalSampleRate;
38
+ private static readonly fakeEventName;
39
+ private static readonly fakeEventTimestamp;
40
+ private static readonly fakeErrorMessage;
41
+ private static fakeSerializedXdf;
42
+ private static readonly fakeParsedXdf;
43
+ private static FakeBindings;
44
+ private static LibxdfAdapter;
45
+ }
@@ -0,0 +1,243 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import generateId from '@neurodevs/generate-id';
8
+ import { MangledNameExtractor, FakeNameExtractor, } from '@neurodevs/node-mangled-names';
9
+ import { test, assert } from '@neurodevs/node-tdd';
10
+ import { DataType } from 'ffi-rs';
11
+ import LibxdfAdapter from '../../impl/LibxdfAdapter.js';
12
+ import SpyLibxdf from '../../testDoubles/Libxdf/SpyLibxdf.js';
13
+ import AbstractPackageTest from '../AbstractPackageTest.js';
14
+ export default class LibxdfTest extends AbstractPackageTest {
15
+ static instance;
16
+ static libxdfPath = generateId();
17
+ static path = generateId();
18
+ static shouldThrowWhenLoadingBindings;
19
+ static mangledLoadXdfName;
20
+ static fakeBindings;
21
+ static ffiRsOpenOptions;
22
+ static ffiRsDefineOptions;
23
+ static loadXdfCalls = [];
24
+ static async beforeEach() {
25
+ await super.beforeEach();
26
+ LibxdfAdapter.Class = SpyLibxdf;
27
+ MangledNameExtractor.Class = FakeNameExtractor;
28
+ FakeNameExtractor.clearTestDouble();
29
+ this.shouldThrowWhenLoadingBindings = false;
30
+ this.mangledLoadXdfName = this.generateMangledName();
31
+ this.fakeBindings = this.FakeBindings();
32
+ this.setFakeExtractResult();
33
+ this.clearAndFakeFfi();
34
+ this.instance = await this.LibxdfAdapter();
35
+ }
36
+ static canCreateInstance() {
37
+ assert.isTruthy(this.instance, 'Should create an instance!');
38
+ }
39
+ static async throwsWhenBindingsFailToLoad() {
40
+ this.shouldThrowWhenLoadingBindings = true;
41
+ const err = await assert.doesThrowAsync(async () => await this.LibxdfAdapter());
42
+ const actual = (err.message ?? err.stack).replace(/\s+/g, '');
43
+ const expected = this.generateFailedMessageWithFakeError().replace(/\s+/g, '');
44
+ assert.isEqual(actual, expected, 'Did not receive the expected error!');
45
+ }
46
+ static async callsFfiRsOpenWithRequiredOptions() {
47
+ assert.isEqualDeep(this.ffiRsOpenOptions, {
48
+ library: 'xdf',
49
+ path: this.libxdfPath,
50
+ });
51
+ }
52
+ static async callsFfiRsDefineWithRequiredOptions() {
53
+ const mangledLoadXdfName = generateId();
54
+ this.setFakeExtractResult(mangledLoadXdfName);
55
+ await this.LibxdfAdapter();
56
+ assert.isEqualDeep(this.ffiRsDefineOptions, {
57
+ [mangledLoadXdfName.slice(1)]: {
58
+ library: 'xdf',
59
+ retType: DataType.String,
60
+ paramsType: [DataType.String],
61
+ },
62
+ }, 'Please pass valid options to ffiRsDefine!');
63
+ }
64
+ static async loadXdfCallsBindings() {
65
+ this.loadXdf();
66
+ assert.isEqualDeep(this.loadXdfCalls[0], [this.path], 'Should have called load_xdf_to_json(path)!');
67
+ }
68
+ static async createsMangledNameExtractor() {
69
+ assert.isEqual(FakeNameExtractor.numConstructorCalls, 1);
70
+ }
71
+ static async callsExtractorWithCorrectParams() {
72
+ assert.isEqualDeep(FakeNameExtractor.extractCalls[0], {
73
+ libPath: this.libxdfPath,
74
+ unmangledNames: [this.loadXdfName],
75
+ });
76
+ }
77
+ static async returnsResultInJson() {
78
+ const result = this.loadXdf();
79
+ assert.isEqualDeep(result, this.fakeParsedXdf);
80
+ }
81
+ static async throwsIfLibxdfPathDoesNotExist() {
82
+ this.libxdfPath = generateId();
83
+ const err = await assert.doesThrowAsync(async () => await this.LibxdfAdapter(this.libxdfPath, true));
84
+ const actual = (err.message ?? err.stack).replace(/\s+/g, '');
85
+ const expected = this.generateFailedMessage().replace(/\s+/g, '');
86
+ assert.isEqual(actual, expected, 'Did not receive the expected error!');
87
+ }
88
+ static async doesNotThrowIfEventsUndefined() {
89
+ this.fakeSerializedXdf = `{"streams": [{"stream_id": ${this.fakeStreamId}, "time_series": [], "time_stamps": [], "stream_info": {"channel_count": ${this.fakeChannelCount}, "channel_format": "${this.fakeChannelFormat}", "nominal_srate": ${this.fakeNominalSampleRate}, "stream_name": "${this.fakeStreamName}", "stream_type": "${this.fakeStreamType}"}}]}`;
90
+ this.loadXdf();
91
+ }
92
+ static setFakeExtractResult(mangledLoadXdfName = this.mangledLoadXdfName) {
93
+ FakeNameExtractor.fakeResult = {
94
+ load_xdf_to_json: mangledLoadXdfName,
95
+ };
96
+ }
97
+ static generateMangledName() {
98
+ return `${generateId()}${this.loadXdfName}${generateId()}`;
99
+ }
100
+ static clearAndFakeFfi() {
101
+ delete this.ffiRsOpenOptions;
102
+ delete this.ffiRsDefineOptions;
103
+ this.fakeFfiRsOpen();
104
+ this.fakeFfiRsDefine();
105
+ }
106
+ static fakeFfiRsOpen() {
107
+ LibxdfAdapter.ffiRsOpen = (options) => {
108
+ this.ffiRsOpenOptions = options;
109
+ };
110
+ }
111
+ static fakeFfiRsDefine() {
112
+ LibxdfAdapter.ffiRsDefine = (options) => {
113
+ this.ffiRsDefineOptions = options;
114
+ if (this.shouldThrowWhenLoadingBindings) {
115
+ throw new Error(this.fakeErrorMessage);
116
+ }
117
+ return this.fakeBindings;
118
+ };
119
+ }
120
+ static generateFailedMessage() {
121
+ return `
122
+ \n -----------------------------------
123
+ \n Failed to load libxdf! Tried to load from:
124
+ \n ${this.libxdfPath}
125
+ \n Instructions to save your day (on MacOS):
126
+ \n 1. git clone https://github.com/neurodevs/libxdf.git
127
+ \n 2. cd libxdf && cmake -S . -B build && cmake --build build
128
+ \n 3. sudo cp build/libxdf.dylib /opt/local/lib/
129
+ \n 4. Try whatever you were doing again!
130
+ \n Modify step 3 for your OS if you are not on MacOS.
131
+ \n Check the official repo for OS-specific instructions:
132
+ \n https://github.com/xdf-modules/libxdf
133
+ \n If you're still unsure, ask an LLM with this error and your OS.
134
+ \n You could also post an issue on the repo:
135
+ \n https://github.com/neurodevs/node-xdf/issues
136
+ \n Good luck!
137
+ \n @ericthecurious
138
+ \n -----------------------------------
139
+ `;
140
+ }
141
+ static generateFailedMessageWithFakeError() {
142
+ return `
143
+ \n -----------------------------------
144
+ \n Failed to load libxdf! Tried to load from:
145
+ \n ${this.libxdfPath}
146
+ \n Instructions to save your day (on MacOS):
147
+ \n 1. git clone https://github.com/neurodevs/libxdf.git
148
+ \n 2. cd libxdf && cmake -S . -B build && cmake --build build
149
+ \n 3. sudo cp build/libxdf.dylib /opt/local/lib/
150
+ \n 4. Try whatever you were doing again!
151
+ \n Modify step 3 for your OS if you are not on MacOS.
152
+ \n Check the official repo for OS-specific instructions:
153
+ \n https://github.com/xdf-modules/libxdf
154
+ \n If you're still unsure, ask an LLM with this error and your OS.
155
+ \n You could also post an issue on the repo:
156
+ \n https://github.com/neurodevs/node-xdf/issues
157
+ \n Good luck!
158
+ \n @ericthecurious
159
+ \n -----------------------------------
160
+ \n Error: ${this.fakeErrorMessage}
161
+ \n
162
+ `;
163
+ }
164
+ static loadXdf() {
165
+ return this.instance.loadXdf(this.path);
166
+ }
167
+ static loadXdfName = 'load_xdf_to_json';
168
+ static fakeStreamId = 0;
169
+ static fakeStreamName = generateId();
170
+ static fakeStreamType = generateId();
171
+ static fakeChannelCount = 0;
172
+ static fakeChannelFormat = generateId();
173
+ static fakeNominalSampleRate = 0;
174
+ static fakeEventName = generateId();
175
+ static fakeEventTimestamp = 0;
176
+ static fakeErrorMessage = 'Fake error message!';
177
+ static fakeSerializedXdf = `{"streams": [{"stream_id": ${this.fakeStreamId}, "time_series": [], "time_stamps": [], "stream_info": {"channel_count": ${this.fakeChannelCount}, "channel_format": "${this.fakeChannelFormat}", "nominal_srate": ${this.fakeNominalSampleRate}, "stream_name": "${this.fakeStreamName}", "stream_type": "${this.fakeStreamType}"}}], "events": [{"stream_id": ${this.fakeStreamId}, "event_name": "${this.fakeEventName}", "event_timestamp": ${this.fakeEventTimestamp}}]}`;
178
+ static fakeParsedXdf = {
179
+ path: this.path,
180
+ streams: [
181
+ {
182
+ id: this.fakeStreamId,
183
+ name: this.fakeStreamName,
184
+ type: this.fakeStreamType,
185
+ channelCount: this.fakeChannelCount,
186
+ channelFormat: this.fakeChannelFormat,
187
+ nominalSampleRateHz: this.fakeNominalSampleRate,
188
+ data: [],
189
+ timestamps: [],
190
+ },
191
+ ],
192
+ events: [
193
+ {
194
+ name: this.fakeEventName,
195
+ timestamp: this.fakeEventTimestamp,
196
+ streamId: this.fakeStreamId,
197
+ },
198
+ ],
199
+ };
200
+ static FakeBindings(mangledLoadXdfName = this.mangledLoadXdfName) {
201
+ return {
202
+ [mangledLoadXdfName.slice(1)]: (path) => {
203
+ this.loadXdfCalls.push(path);
204
+ return this.fakeSerializedXdf;
205
+ },
206
+ };
207
+ }
208
+ static async LibxdfAdapter(libxdfPath, throwIfPathNotExists = false) {
209
+ const libxdf = await LibxdfAdapter.Create(libxdfPath ?? this.libxdfPath, throwIfPathNotExists);
210
+ return libxdf;
211
+ }
212
+ }
213
+ __decorate([
214
+ test()
215
+ ], LibxdfTest, "canCreateInstance", null);
216
+ __decorate([
217
+ test()
218
+ ], LibxdfTest, "throwsWhenBindingsFailToLoad", null);
219
+ __decorate([
220
+ test()
221
+ ], LibxdfTest, "callsFfiRsOpenWithRequiredOptions", null);
222
+ __decorate([
223
+ test()
224
+ ], LibxdfTest, "callsFfiRsDefineWithRequiredOptions", null);
225
+ __decorate([
226
+ test()
227
+ ], LibxdfTest, "loadXdfCallsBindings", null);
228
+ __decorate([
229
+ test()
230
+ ], LibxdfTest, "createsMangledNameExtractor", null);
231
+ __decorate([
232
+ test()
233
+ ], LibxdfTest, "callsExtractorWithCorrectParams", null);
234
+ __decorate([
235
+ test()
236
+ ], LibxdfTest, "returnsResultInJson", null);
237
+ __decorate([
238
+ test()
239
+ ], LibxdfTest, "throwsIfLibxdfPathDoesNotExist", null);
240
+ __decorate([
241
+ test()
242
+ ], LibxdfTest, "doesNotThrowIfEventsUndefined", null);
243
+ //# sourceMappingURL=LibxdfAdapter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LibxdfAdapter.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/LibxdfAdapter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const CHANNEL_FORMATS: readonly ["undefined", "float32", "double64", "string", "int32", "int16", "int8", "int64"];
2
+ export declare const CHANNEL_FORMATS_MAP: {
3
+ undefined: number;
4
+ float32: number;
5
+ double64: number;
6
+ string: number;
7
+ int32: number;
8
+ int16: number;
9
+ int8: number;
10
+ int64: number;
11
+ };
@@ -0,0 +1,21 @@
1
+ export const CHANNEL_FORMATS = [
2
+ 'undefined',
3
+ 'float32',
4
+ 'double64',
5
+ 'string',
6
+ 'int32',
7
+ 'int16',
8
+ 'int8',
9
+ 'int64',
10
+ ];
11
+ export const CHANNEL_FORMATS_MAP = {
12
+ undefined: 0,
13
+ float32: 1,
14
+ double64: 2,
15
+ string: 3,
16
+ int32: 4,
17
+ int16: 5,
18
+ int8: 6,
19
+ int64: 7,
20
+ };
21
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,WAAW;IACX,SAAS;IACT,UAAU;IACV,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;CACD,CAAA;AAEV,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACX,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { DataType, define, open } from 'ffi-rs';
2
+ export default class LabrecorderAdapter implements Labrecorder {
3
+ static Class?: LabrecorderConstructor;
4
+ static ffiRsOpen: typeof open;
5
+ static ffiRsDefine: typeof define;
6
+ private labrecorderPath;
7
+ private bindings;
8
+ protected constructor(labrecorderPath: string);
9
+ static Create(labrecorderPath?: string): Labrecorder;
10
+ private loadCppLibrary;
11
+ private defineBindingFunctions;
12
+ private get functions();
13
+ createRecording(filename: string, watchFor: string[]): DataType.External;
14
+ stopRecording(recording: RecordingHandle): void;
15
+ deleteRecording(recording: RecordingHandle): void;
16
+ private get ffiRsOpen();
17
+ private get ffiRsDefine();
18
+ }
19
+ export interface Labrecorder {
20
+ createRecording(filename: string, watchFor: string[]): RecordingHandle;
21
+ stopRecording(recording: RecordingHandle): void;
22
+ deleteRecording(recording: RecordingHandle): void;
23
+ }
24
+ export type LabrecorderConstructor = new (labrecorderPath: string) => Labrecorder;
25
+ export interface LabrecorderBindings {
26
+ recording_create(args: [string, string[], number]): RecordingHandle;
27
+ recording_stop(args: [RecordingHandle]): void;
28
+ recording_delete(args: [RecordingHandle]): void;
29
+ }
30
+ export type RecordingHandle = DataType.External;
@@ -0,0 +1,69 @@
1
+ import { DataType, define, open } from 'ffi-rs';
2
+ export default class LabrecorderAdapter {
3
+ static Class;
4
+ static ffiRsOpen = open;
5
+ static ffiRsDefine = define;
6
+ labrecorderPath;
7
+ bindings;
8
+ constructor(labrecorderPath) {
9
+ this.labrecorderPath = labrecorderPath;
10
+ this.loadCppLibrary();
11
+ this.bindings = this.defineBindingFunctions();
12
+ }
13
+ static Create(labrecorderPath) {
14
+ const path = labrecorderPath ?? '/opt/local/lib/liblabrecorder.dylib';
15
+ return new (this.Class ?? this)(path);
16
+ }
17
+ loadCppLibrary() {
18
+ this.ffiRsOpen({
19
+ library: 'labrecorder',
20
+ path: this.labrecorderPath,
21
+ });
22
+ }
23
+ defineBindingFunctions() {
24
+ return this.ffiRsDefine(this.functions);
25
+ }
26
+ get functions() {
27
+ return {
28
+ recording_create: {
29
+ library: 'labrecorder',
30
+ retType: DataType.External,
31
+ paramsType: [
32
+ DataType.String,
33
+ DataType.StringArray,
34
+ DataType.U64,
35
+ ],
36
+ },
37
+ recording_stop: {
38
+ library: 'labrecorder',
39
+ retType: DataType.Void,
40
+ paramsType: [DataType.External],
41
+ },
42
+ recording_delete: {
43
+ library: 'labrecorder',
44
+ retType: DataType.Void,
45
+ paramsType: [DataType.External],
46
+ },
47
+ };
48
+ }
49
+ createRecording(filename, watchFor) {
50
+ return this.bindings.recording_create([
51
+ filename,
52
+ watchFor,
53
+ watchFor.length,
54
+ ]);
55
+ }
56
+ stopRecording(recording) {
57
+ this.bindings.recording_stop([recording]);
58
+ }
59
+ deleteRecording(recording) {
60
+ this.bindings.recording_delete([recording]);
61
+ }
62
+ get ffiRsOpen() {
63
+ return LabrecorderAdapter.ffiRsOpen;
64
+ }
65
+ get ffiRsDefine() {
66
+ return LabrecorderAdapter.ffiRsDefine;
67
+ }
68
+ }
69
+ //# sourceMappingURL=LabrecorderAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabrecorderAdapter.js","sourceRoot":"","sources":["../../src/impl/LabrecorderAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAC5B,MAAM,CAAC,KAAK,CAAyB;IACrC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAA;IAE1B,eAAe,CAAQ;IACvB,QAAQ,CAAqB;IAErC,YAAsB,eAAuB;QACzC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,cAAc,EAAE,CAAA;QAErB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjD,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,eAAwB;QACzC,MAAM,IAAI,GAAG,eAAe,IAAI,qCAAqC,CAAA;QACrE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,SAAS,CAAC;YACX,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,IAAI,CAAC,eAAe;SAC7B,CAAC,CAAA;IACN,CAAC;IAEO,sBAAsB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAwB,CAAA;IAClE,CAAC;IAED,IAAY,SAAS;QACjB,OAAO;YACH,gBAAgB,EAAE;gBACd,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,QAAQ,CAAC,QAAQ;gBAC1B,UAAU,EAAE;oBACR,QAAQ,CAAC,MAAM;oBACf,QAAQ,CAAC,WAAW;oBACpB,QAAQ,CAAC,GAAG;iBACf;aACJ;YACD,cAAc,EAAE;gBACZ,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,QAAQ,CAAC,IAAI;gBACtB,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAClC;YACD,gBAAgB,EAAE;gBACd,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,QAAQ,CAAC,IAAI;gBACtB,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAClC;SACJ,CAAA;IACL,CAAC;IAEM,eAAe,CAAC,QAAgB,EAAE,QAAkB;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,QAAQ;YACR,QAAQ;YACR,QAAQ,CAAC,MAAM;SAClB,CAAC,CAAA;IACN,CAAC;IAEM,aAAa,CAAC,SAA0B;QAC3C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7C,CAAC;IAEM,eAAe,CAAC,SAA0B;QAC7C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,IAAY,SAAS;QACjB,OAAO,kBAAkB,CAAC,SAAS,CAAA;IACvC,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,kBAAkB,CAAC,WAAW,CAAA;IACzC,CAAC"}