@neurodevs/node-lsl 19.0.0 → 20.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.
Files changed (168) hide show
  1. package/build/__tests__/AbstractPackageTest.d.ts +11 -11
  2. package/build/__tests__/AbstractPackageTest.js +26 -30
  3. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  4. package/build/__tests__/impl/BleDeviceController.test.d.ts +1 -1
  5. package/build/__tests__/impl/BleDeviceController.test.js +8 -10
  6. package/build/__tests__/impl/BleDeviceController.test.js.map +1 -1
  7. package/build/__tests__/impl/LslEventMarkerEmitter.test.js +13 -13
  8. package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -1
  9. package/build/__tests__/impl/LslStreamInfo.test.js +2 -2
  10. package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
  11. package/build/__tests__/impl/LslStreamInlet.test.d.ts +3 -5
  12. package/build/__tests__/impl/LslStreamInlet.test.js +13 -46
  13. package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
  14. package/build/__tests__/impl/LslStreamOutlet.test.js +7 -12
  15. package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
  16. package/build/__tests__/impl/LslWebSocketBridge.test.js +9 -10
  17. package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
  18. package/build/__tests__/impl/WindowedClockRegressor.test.js +1 -1
  19. package/build/__tests__/impl/WindowedClockRegressor.test.js.map +1 -1
  20. package/build/assertions.js +1 -1
  21. package/build/assertions.js.map +1 -1
  22. package/build/impl/LslEventMarkerEmitter.d.ts +12 -12
  23. package/build/impl/LslEventMarkerEmitter.js.map +1 -1
  24. package/build/impl/LslStreamInfo.d.ts +7 -7
  25. package/build/impl/LslStreamInfo.js.map +1 -1
  26. package/build/impl/LslStreamInlet.d.ts +63 -21
  27. package/build/impl/LslStreamInlet.js +221 -65
  28. package/build/impl/LslStreamInlet.js.map +1 -1
  29. package/build/impl/LslStreamOutlet.d.ts +15 -14
  30. package/build/impl/LslStreamOutlet.js +32 -36
  31. package/build/impl/LslStreamOutlet.js.map +1 -1
  32. package/build/impl/LslWebSocketBridge.d.ts +10 -10
  33. package/build/impl/LslWebSocketBridge.js.map +1 -1
  34. package/build/impl/clocks/WindowedClockRegressor.js.map +1 -0
  35. package/build/impl/controllers/BleDeviceController.d.ts +1 -1
  36. package/build/impl/controllers/BleDeviceController.js +1 -1
  37. package/build/impl/controllers/BleDeviceController.js.map +1 -1
  38. package/build/index.d.ts +27 -23
  39. package/build/index.js +32 -29
  40. package/build/index.js.map +1 -1
  41. package/build/scripts/{runLslEventMarkerEmitter.js → runLslEmitter.js} +5 -4
  42. package/build/scripts/runLslEmitter.js.map +1 -0
  43. package/build/scripts/{runLslStreamOutlet.js → runLslOutlet.js} +1 -1
  44. package/build/scripts/runLslOutlet.js.map +1 -0
  45. package/build/scripts/runMuse.js +1 -1
  46. package/build/scripts/runMuse.js.map +1 -1
  47. package/build/testDoubles/ClockRegressor/FakeClockRegressor.d.ts +1 -1
  48. package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.d.ts → LslEmitter/FakeLslEmitter.d.ts} +4 -4
  49. package/build/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.js → LslEmitter/FakeLslEmitter.js} +7 -7
  50. package/build/testDoubles/LslEmitter/FakeLslEmitter.js.map +1 -0
  51. package/build/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.d.ts → LslEmitter/SpyLslEmitter.d.ts} +4 -4
  52. package/build/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.js → LslEmitter/SpyLslEmitter.js} +3 -3
  53. package/build/testDoubles/LslEmitter/SpyLslEmitter.js.map +1 -0
  54. package/build/testDoubles/LslEmitter/ThrowingLslEmitter.d.ts +9 -0
  55. package/build/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.js → LslEmitter/ThrowingLslEmitter.js} +2 -2
  56. package/build/testDoubles/LslEmitter/ThrowingLslEmitter.js.map +1 -0
  57. package/build/testDoubles/{StreamInfo/FakeStreamInfo.d.ts → LslInfo/FakeLslInfo.d.ts} +4 -4
  58. package/build/testDoubles/{StreamInfo/FakeStreamInfo.js → LslInfo/FakeLslInfo.js} +7 -7
  59. package/build/testDoubles/LslInfo/FakeLslInfo.js.map +1 -0
  60. package/build/testDoubles/LslInfo/SpyLslInfo.d.ts +10 -0
  61. package/build/testDoubles/{StreamInfo/SpyStreamInfo.js → LslInfo/SpyLslInfo.js} +4 -4
  62. package/build/testDoubles/LslInfo/SpyLslInfo.js.map +1 -0
  63. package/build/testDoubles/{StreamInlet/FakeStreamInlet.d.ts → LslInlet/FakeLslInlet.d.ts} +4 -4
  64. package/build/testDoubles/{StreamInlet/FakeStreamInlet.js → LslInlet/FakeLslInlet.js} +12 -11
  65. package/build/testDoubles/LslInlet/FakeLslInlet.js.map +1 -0
  66. package/build/testDoubles/LslInlet/SpyLslInlet.d.ts +4 -0
  67. package/build/testDoubles/{StreamInlet/SpyStreamInlet.js → LslInlet/SpyLslInlet.js} +2 -2
  68. package/build/testDoubles/LslInlet/SpyLslInlet.js.map +1 -0
  69. package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.d.ts → LslOutlet/FakeLslOutlet.d.ts} +5 -5
  70. package/build/testDoubles/{StreamOutlet/FakeStreamOutlet.js → LslOutlet/FakeLslOutlet.js} +8 -8
  71. package/build/testDoubles/LslOutlet/FakeLslOutlet.js.map +1 -0
  72. package/build/testDoubles/LslWsBridge/FakeLslWsBridge.d.ts +14 -0
  73. package/build/testDoubles/{WebSocketBridge/FakeWebSocketBridge.js → LslWsBridge/FakeLslWsBridge.js} +14 -14
  74. package/build/testDoubles/LslWsBridge/FakeLslWsBridge.js.map +1 -0
  75. package/build/testDoubles/LslWsBridge/SpyLslWsBridge.d.ts +4 -0
  76. package/build/testDoubles/{WebSocketBridge/SpyLslWebSocketBridge.js → LslWsBridge/SpyLslWsBridge.js} +2 -2
  77. package/build/testDoubles/LslWsBridge/SpyLslWsBridge.js.map +1 -0
  78. package/build/testDoubles/consts.d.ts +2 -12
  79. package/build/testDoubles/consts.js +0 -20
  80. package/build/testDoubles/consts.js.map +1 -1
  81. package/build/testDoubles/generateRandomOutletOptions.d.ts +2 -2
  82. package/build/testDoubles/generateRandomOutletOptions.js.map +1 -1
  83. package/package.json +4 -3
  84. package/src/__tests__/AbstractPackageTest.ts +29 -38
  85. package/src/__tests__/impl/BleDeviceController.test.ts +8 -10
  86. package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +19 -24
  87. package/src/__tests__/impl/LslStreamInfo.test.ts +8 -8
  88. package/src/__tests__/impl/LslStreamInlet.test.ts +21 -78
  89. package/src/__tests__/impl/LslStreamOutlet.test.ts +17 -24
  90. package/src/__tests__/impl/LslWebSocketBridge.test.ts +15 -18
  91. package/src/__tests__/impl/WindowedClockRegressor.test.ts +1 -1
  92. package/src/assertions.ts +1 -2
  93. package/src/impl/LslEventMarkerEmitter.ts +15 -17
  94. package/src/impl/LslStreamInfo.ts +7 -9
  95. package/src/impl/LslStreamInlet.ts +305 -81
  96. package/src/impl/LslStreamOutlet.ts +57 -56
  97. package/src/impl/LslWebSocketBridge.ts +15 -18
  98. package/src/impl/controllers/BleDeviceController.ts +1 -1
  99. package/src/index.ts +38 -34
  100. package/src/scripts/{runLslEventMarkerEmitter.ts → runLslEmitter.ts} +4 -3
  101. package/src/scripts/runMuse.ts +1 -1
  102. package/src/testDoubles/ClockRegressor/FakeClockRegressor.ts +1 -1
  103. package/src/testDoubles/{EventMarkerEmitter/FakeEventMarkerEmitter.ts → LslEmitter/FakeLslEmitter.ts} +10 -10
  104. package/src/testDoubles/{EventMarkerEmitter/SpyEventMarkerEmitter.ts → LslEmitter/SpyLslEmitter.ts} +4 -4
  105. package/src/testDoubles/{EventMarkerEmitter/ThrowingEventMarkerEmitter.ts → LslEmitter/ThrowingLslEmitter.ts} +4 -4
  106. package/src/testDoubles/{StreamInfo/FakeStreamInfo.ts → LslInfo/FakeLslInfo.ts} +9 -9
  107. package/src/testDoubles/{StreamInfo/SpyStreamInfo.ts → LslInfo/SpyLslInfo.ts} +5 -5
  108. package/src/testDoubles/{StreamInlet/FakeStreamInlet.ts → LslInlet/FakeLslInlet.ts} +15 -14
  109. package/src/testDoubles/LslInlet/SpyLslInlet.ts +10 -0
  110. package/src/testDoubles/{StreamOutlet/FakeStreamOutlet.ts → LslOutlet/FakeLslOutlet.ts} +11 -14
  111. package/src/testDoubles/{WebSocketBridge/FakeWebSocketBridge.ts → LslWsBridge/FakeLslWsBridge.ts} +19 -19
  112. package/src/testDoubles/LslWsBridge/SpyLslWsBridge.ts +9 -0
  113. package/src/testDoubles/consts.ts +3 -23
  114. package/src/testDoubles/generateRandomOutletOptions.ts +2 -2
  115. package/build/consts.d.ts +0 -11
  116. package/build/consts.js +0 -21
  117. package/build/consts.js.map +0 -1
  118. package/build/impl/WindowedClockRegressor.js.map +0 -1
  119. package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +0 -22
  120. package/build/impl/workers/inlet/LslStreamInlet.worker.js +0 -42
  121. package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +0 -1
  122. package/build/impl/workers/inlet/StreamInletWorker.d.ts +0 -73
  123. package/build/impl/workers/inlet/StreamInletWorker.js +0 -253
  124. package/build/impl/workers/inlet/StreamInletWorker.js.map +0 -1
  125. package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +0 -32
  126. package/build/impl/workers/outlet/LslStreamOutlet.worker.js +0 -82
  127. package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +0 -1
  128. package/build/scripts/discoverMuse.js +0 -40
  129. package/build/scripts/discoverMuse.js.map +0 -1
  130. package/build/scripts/runLslEventMarkerEmitter.js.map +0 -1
  131. package/build/scripts/runLslStreamOutlet.d.ts +0 -1
  132. package/build/scripts/runLslStreamOutlet.js.map +0 -1
  133. package/build/scripts/testDestroyOutlet.d.ts +0 -1
  134. package/build/scripts/testDestroyOutlet.js +0 -4
  135. package/build/scripts/testDestroyOutlet.js.map +0 -1
  136. package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +0 -1
  137. package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +0 -1
  138. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +0 -9
  139. package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +0 -1
  140. package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +0 -1
  141. package/build/testDoubles/StreamInfo/SpyStreamInfo.d.ts +0 -10
  142. package/build/testDoubles/StreamInfo/SpyStreamInfo.js.map +0 -1
  143. package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +0 -1
  144. package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +0 -4
  145. package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +0 -1
  146. package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +0 -1
  147. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +0 -14
  148. package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +0 -1
  149. package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.d.ts +0 -4
  150. package/build/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.js.map +0 -1
  151. package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +0 -27
  152. package/build/testDoubles/WorkerThreads/FakeWorker.js +0 -67
  153. package/build/testDoubles/WorkerThreads/FakeWorker.js.map +0 -1
  154. package/src/consts.ts +0 -21
  155. package/src/impl/workers/inlet/LslStreamInlet.worker.ts +0 -74
  156. package/src/impl/workers/inlet/StreamInletWorker.ts +0 -348
  157. package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +0 -144
  158. package/src/scripts/discoverMuse.ts +0 -50
  159. package/src/scripts/testDestroyOutlet.ts +0 -5
  160. package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +0 -10
  161. package/src/testDoubles/WebSocketBridge/SpyLslWebSocketBridge.ts +0 -9
  162. package/src/testDoubles/WorkerThreads/FakeWorker.ts +0 -99
  163. /package/build/impl/{WindowedClockRegressor.d.ts → clocks/WindowedClockRegressor.d.ts} +0 -0
  164. /package/build/impl/{WindowedClockRegressor.js → clocks/WindowedClockRegressor.js} +0 -0
  165. /package/build/scripts/{discoverMuse.d.ts → runLslEmitter.d.ts} +0 -0
  166. /package/build/scripts/{runLslEventMarkerEmitter.d.ts → runLslOutlet.d.ts} +0 -0
  167. /package/src/impl/{WindowedClockRegressor.ts → clocks/WindowedClockRegressor.ts} +0 -0
  168. /package/src/scripts/{runLslStreamOutlet.ts → runLslOutlet.ts} +0 -0
@@ -1,112 +1,268 @@
1
- import { Worker } from 'node:worker_threads';
1
+ import { handleLslError, LiblslAdapter, } from '@neurodevs/ndx-native';
2
+ import { unwrapPointer, createPointer, DataType, freePointer, PointerType, } from 'ffi-rs';
2
3
  export default class LslStreamInlet {
3
4
  static Class;
4
- static Worker = Worker;
5
5
  static waitAfterOpenStreamMs = 100;
6
- static setTimeout = setTimeout;
6
+ static lsl = LiblslAdapter.getInstance();
7
+ static handleLslError = handleLslError;
8
+ static freePointer = freePointer;
9
+ isRunning = false;
7
10
  sourceId;
8
11
  chunkSize;
9
12
  maxBufferedMs;
10
13
  pullTimeoutMs;
11
14
  openStreamTimeoutMs;
12
- waitAfterOpenStreamMs;
13
15
  waitBetweenPullsMs;
14
16
  flushInletOnStop;
15
17
  onData;
16
- worker;
17
- workerReady = false;
18
+ infoHandle;
19
+ inletHandle;
20
+ channelCount;
21
+ pullMethod;
22
+ sampleBuffer;
23
+ sampleBufferRef;
24
+ sampleBufferPtr;
25
+ timestampBuffer;
26
+ timestampBufferRef;
27
+ timestampBufferPtr;
28
+ pullErrorBuffer;
29
+ pullErrorBufferRef;
30
+ pullErrorBufferPtr;
31
+ openStreamErrorBuffer;
32
+ openStreamErrorBufferRef;
33
+ openStreamErrorBufferPtr;
18
34
  sixMinutesInMs = 360 * 1000;
19
35
  aboutOneYearInMs = 32000000 * 1000;
20
- isRunning = false;
36
+ bytesPerFloat = 4;
37
+ bytesPerDouble = 8;
38
+ bytesPerI32 = 4;
21
39
  constructor(options, onData) {
22
- const { sourceId, chunkSize, maxBufferedMs, pullTimeoutMs, openStreamTimeoutMs, waitAfterOpenStreamMs, waitBetweenPullsMs, flushInletOnStop, } = options ?? {};
40
+ const { sourceId, chunkSize, maxBufferedMs, pullTimeoutMs, openStreamTimeoutMs, waitBetweenPullsMs, flushInletOnStop, } = options ?? {};
23
41
  this.sourceId = sourceId;
24
42
  this.chunkSize = chunkSize;
25
43
  this.maxBufferedMs = maxBufferedMs ?? this.sixMinutesInMs;
26
44
  this.pullTimeoutMs = pullTimeoutMs ?? 0;
27
45
  this.openStreamTimeoutMs = openStreamTimeoutMs ?? this.aboutOneYearInMs;
28
- this.waitAfterOpenStreamMs = waitAfterOpenStreamMs ?? this.defaultWaitMs;
29
46
  this.waitBetweenPullsMs = waitBetweenPullsMs ?? 1;
30
47
  this.flushInletOnStop = flushInletOnStop ?? true;
31
48
  this.onData = onData;
32
- this.createWorkerThread();
33
49
  }
34
50
  static async Create(options, onData) {
35
51
  return new (this.Class ?? this)(options, onData);
36
52
  }
37
- createWorkerThread() {
38
- this.worker = new this.Worker(new URL('./workers/inlet/LslStreamInlet.worker.js', import.meta.url));
39
- this.worker.on('message', (msg) => {
40
- const { type } = msg;
41
- switch (type) {
42
- case 'ready': {
43
- this.workerReady = true;
44
- break;
45
- }
46
- case 'data': {
47
- const { payload } = msg;
48
- const { samples, timestamps } = payload;
49
- this.onData(samples, timestamps);
50
- break;
51
- }
52
- case 'error': {
53
- const { error } = msg;
54
- throw new Error(error);
55
- }
56
- default:
57
- throw new Error(`Unknown message type: ${type}`);
58
- }
53
+ async startPulling() {
54
+ if (this.isRunning) {
55
+ console.warn('Skipping startPulling: inlet is already running!');
56
+ return;
57
+ }
58
+ this.isRunning = true;
59
+ await this.createInlet();
60
+ void this.pullLoop();
61
+ }
62
+ async createInlet() {
63
+ this.infoHandle = this.resolveInfoHandle();
64
+ this.inletHandle = this.doCreateInlet();
65
+ this.channelCount = this.getChannelCount();
66
+ this.allocateWritableBuffers();
67
+ this.setPullMethod();
68
+ this.openStream();
69
+ }
70
+ resolveInfoHandle() {
71
+ const handles = this.resolveByProp();
72
+ if (handles.length === 0) {
73
+ this.throwNoStreamFound();
74
+ }
75
+ else if (handles.length > 1) {
76
+ this.warnMultipleStreamsFound();
77
+ }
78
+ return handles[0];
79
+ }
80
+ resolveByProp() {
81
+ return this.lsl.resolveByProp({
82
+ prop: 'source_id',
83
+ value: this.sourceId,
59
84
  });
60
85
  }
61
- async startPulling() {
62
- if (!this.isRunning) {
63
- this.isRunning = true;
64
- this.postCreate();
65
- while (!this.workerReady) {
66
- await new Promise((resolve) => LslStreamInlet.setTimeout(resolve, 10));
67
- }
68
- this.postStartPulling();
86
+ throwNoStreamFound() {
87
+ throw new Error(`No stream info for sourceId "${this.sourceId}"`);
88
+ }
89
+ warnMultipleStreamsFound() {
90
+ console.warn(`Multiple stream infos for sourceId "${this.sourceId}", using the first one.`);
91
+ }
92
+ doCreateInlet() {
93
+ return this.lsl.createInlet({
94
+ infoHandle: this.infoHandle,
95
+ maxBufferedMs: this.maxBufferedMs,
96
+ });
97
+ }
98
+ getChannelCount() {
99
+ return this.lsl.getChannelCount({ infoHandle: this.infoHandle });
100
+ }
101
+ allocateWritableBuffers() {
102
+ this.allocateDataBuffer();
103
+ this.allocateTimestampBuffer();
104
+ this.allocatePullErrorBuffer();
105
+ this.allocateOpenStreamErrorBuffer();
106
+ }
107
+ allocateDataBuffer() {
108
+ this.sampleBuffer = Buffer.alloc(this.channelCount * this.chunkSize * this.bytesPerFloat);
109
+ this.sampleBufferRef = createPointer({
110
+ paramsType: [DataType.U8Array],
111
+ paramsValue: [this.sampleBuffer],
112
+ });
113
+ this.sampleBufferPtr = unwrapPointer(this.sampleBufferRef)[0];
114
+ }
115
+ allocateTimestampBuffer() {
116
+ this.timestampBuffer = Buffer.alloc(this.chunkSize * this.bytesPerDouble);
117
+ this.timestampBufferRef = createPointer({
118
+ paramsType: [DataType.U8Array],
119
+ paramsValue: [this.timestampBuffer],
120
+ });
121
+ this.timestampBufferPtr = unwrapPointer(this.timestampBufferRef)[0];
122
+ }
123
+ allocatePullErrorBuffer() {
124
+ this.pullErrorBuffer = Buffer.alloc(this.bytesPerI32);
125
+ this.pullErrorBufferRef = createPointer({
126
+ paramsType: [DataType.U8Array],
127
+ paramsValue: [this.pullErrorBuffer],
128
+ });
129
+ this.pullErrorBufferPtr = unwrapPointer(this.pullErrorBufferRef)[0];
130
+ }
131
+ allocateOpenStreamErrorBuffer() {
132
+ this.openStreamErrorBuffer = Buffer.alloc(this.bytesPerI32);
133
+ this.openStreamErrorBufferRef = createPointer({
134
+ paramsType: [DataType.U8Array],
135
+ paramsValue: [this.openStreamErrorBuffer],
136
+ });
137
+ this.openStreamErrorBufferPtr = unwrapPointer(this.openStreamErrorBufferRef)[0];
138
+ }
139
+ setPullMethod() {
140
+ this.pullMethod =
141
+ this.chunkSize === 1 ? this.pullSample : this.pullChunk;
142
+ }
143
+ pullSample = () => {
144
+ const timestampSec = this.doPullsample();
145
+ if (timestampSec > 0) {
146
+ return {
147
+ samples: this.readSamplesFromBuffer(),
148
+ timestamps: [timestampSec],
149
+ };
69
150
  }
70
- else {
71
- console.warn('Skipping startPulling: inlet is already running!');
151
+ return { samples: undefined, timestamps: undefined };
152
+ };
153
+ doPullsample() {
154
+ return this.lsl.pullSample({
155
+ inletHandle: this.inletHandle,
156
+ sampleBufferPtr: this.sampleBufferPtr,
157
+ sampleBufferElements: this.channelCount,
158
+ timeoutMs: this.pullTimeoutMs,
159
+ errorCodePtr: this.pullErrorBufferPtr,
160
+ });
161
+ }
162
+ readSamplesFromBuffer() {
163
+ const floats = new Float32Array(this.sampleBuffer.buffer, this.sampleBuffer.byteOffset, this.chunkSize * this.channelCount);
164
+ return Array.from(floats);
165
+ }
166
+ pullChunk = () => {
167
+ const firstTimestampSec = this.doPullChunk();
168
+ if (firstTimestampSec > 0) {
169
+ return {
170
+ samples: this.readSamplesFromBuffer(),
171
+ timestamps: this.readTimestampsFromBuffer(),
172
+ };
72
173
  }
174
+ return { samples: undefined, timestamps: undefined };
175
+ };
176
+ doPullChunk() {
177
+ return this.lsl.pullChunk({
178
+ inletHandle: this.inletHandle,
179
+ sampleBufferPtr: this.sampleBufferPtr,
180
+ sampleBufferElements: this.chunkSize * this.channelCount,
181
+ timestampBufferPtr: this.timestampBufferPtr,
182
+ timestampBufferElements: this.chunkSize,
183
+ timeoutMs: this.pullTimeoutMs,
184
+ errorCodePtr: this.pullErrorBufferPtr,
185
+ });
73
186
  }
74
- postCreate() {
75
- this.worker.postMessage({
76
- type: 'createInlet',
77
- payload: {
78
- sourceId: this.sourceId,
79
- chunkSize: this.chunkSize,
80
- maxBufferedMs: this.maxBufferedMs,
81
- openStreamTimeoutMs: this.openStreamTimeoutMs,
82
- waitAfterOpenStreamMs: this.waitAfterOpenStreamMs,
83
- pullTimeoutMs: this.pullTimeoutMs,
84
- waitBetweenPullsMs: this.waitBetweenPullsMs,
85
- flushInletOnStop: this.flushInletOnStop,
86
- },
187
+ readTimestampsFromBuffer() {
188
+ const doubles = new Float64Array(this.timestampBuffer.buffer, this.timestampBuffer.byteOffset, this.chunkSize);
189
+ return Array.from(doubles);
190
+ }
191
+ openStream() {
192
+ this.lsl.openStream({
193
+ inletHandle: this.inletHandle,
194
+ timeoutMs: this.openStreamTimeoutMs,
195
+ errorCodePtr: this.openStreamErrorBufferPtr,
87
196
  });
88
197
  }
89
- postStartPulling() {
90
- this.worker.postMessage({ type: 'startPulling' });
198
+ async pullLoop() {
199
+ while (this.isRunning) {
200
+ await this.pullDataOnce();
201
+ await this.waitBetweenPulls();
202
+ }
203
+ }
204
+ async pullDataOnce() {
205
+ const { samples, timestamps } = this.pullMethod();
206
+ this.handleLslErrorIfPresent();
207
+ if (samples && timestamps) {
208
+ this.onData(samples, timestamps);
209
+ }
210
+ }
211
+ handleLslErrorIfPresent() {
212
+ const errorCode = this.pullErrorBuffer.readInt32LE();
213
+ this.handleLslError(errorCode);
214
+ }
215
+ async waitBetweenPulls() {
216
+ await new Promise((r) => setTimeout(r, this.waitBetweenPullsMs));
217
+ }
218
+ flushInlet() {
219
+ this.lsl.flushInlet({ inletHandle: this.inletHandle });
91
220
  }
92
221
  stopPulling() {
93
222
  this.isRunning = false;
94
- this.worker.postMessage({ type: 'stopPulling' });
223
+ this.closeStream();
224
+ if (this.flushInletOnStop) {
225
+ this.flushInlet();
226
+ }
95
227
  }
96
- flushInlet() {
97
- this.worker.postMessage({ type: 'flushInlet' });
228
+ closeStream() {
229
+ this.lsl.closeStream({ inletHandle: this.inletHandle });
98
230
  }
99
231
  destroy() {
100
232
  if (this.isRunning) {
101
233
  this.stopPulling();
102
234
  }
103
- this.worker.postMessage({ type: 'destroyInlet' });
235
+ this.doDestroyInlet();
236
+ this.freeNativePointers();
237
+ }
238
+ doDestroyInlet() {
239
+ this.lsl.destroyInlet({ inletHandle: this.inletHandle });
240
+ }
241
+ freeNativePointers() {
242
+ this.freePointer({
243
+ paramsType: [
244
+ DataType.U8Array,
245
+ DataType.U8Array,
246
+ DataType.U8Array,
247
+ DataType.U8Array,
248
+ ],
249
+ paramsValue: [
250
+ this.openStreamErrorBufferPtr,
251
+ this.sampleBufferPtr,
252
+ this.timestampBufferPtr,
253
+ this.pullErrorBufferPtr,
254
+ ],
255
+ pointerType: PointerType.CPointer,
256
+ });
257
+ }
258
+ get lsl() {
259
+ return LslStreamInlet.lsl;
104
260
  }
105
- get defaultWaitMs() {
106
- return LslStreamInlet.waitAfterOpenStreamMs;
261
+ get handleLslError() {
262
+ return LslStreamInlet.handleLslError;
107
263
  }
108
- get Worker() {
109
- return LslStreamInlet.Worker;
264
+ get freePointer() {
265
+ return LslStreamInlet.freePointer;
110
266
  }
111
267
  }
112
268
  //# sourceMappingURL=LslStreamInlet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LslStreamInlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamInlet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslStreamInlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamInlet.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { Worker } from 'node:worker_threads';
2
- import { ChannelFormat, LslSample } from '@neurodevs/ndx-native';
3
- export default class LslStreamOutlet implements StreamOutlet {
4
- static Class?: StreamOutletConstructor;
5
- static Worker: typeof Worker;
1
+ import { ChannelFormat, LslSample, handleLslError } from '@neurodevs/ndx-native';
2
+ export default class LslStreamOutlet implements LslOutlet {
3
+ static Class?: LslOutletConstructor;
6
4
  static setTimeout: typeof setTimeout;
5
+ static lsl: import("@neurodevs/ndx-native").Liblsl;
6
+ static handleLslError: typeof handleLslError;
7
7
  readonly name: string;
8
8
  readonly type: string;
9
9
  readonly sourceId: string;
@@ -15,23 +15,24 @@ export default class LslStreamOutlet implements StreamOutlet {
15
15
  readonly maxBufferedMs: number;
16
16
  readonly manufacturer: string;
17
17
  readonly units: string;
18
- private worker;
19
- protected constructor(options: StreamOutletOptions);
20
- static Create(options: StreamOutletOptions): Promise<StreamOutlet>;
18
+ private info;
19
+ private handle;
20
+ private pushSampleToLsl;
21
+ protected constructor(options: LslOutletOptions);
22
+ static Create(options: LslOutletOptions): Promise<LslOutlet>;
21
23
  private validateOptions;
22
24
  private validateChannelFormat;
23
25
  private get isChannelFormatSupported();
24
26
  private throwUnsupportedChannelFormat;
25
- private createWorkerThread;
26
27
  private createStreamOutlet;
28
+ private get lsl();
27
29
  private get pushMethod();
28
30
  private readonly methodMap;
29
31
  pushSample(sample: LslSample, timestampSec?: number): void;
30
32
  destroy(): void;
31
- private get Worker();
32
33
  private static waitForSetup;
33
34
  }
34
- export interface StreamOutlet {
35
+ export interface LslOutlet {
35
36
  pushSample(sample: LslSample, timestampSec?: number): void;
36
37
  destroy(): void;
37
38
  readonly name: string;
@@ -46,11 +47,11 @@ export interface StreamOutlet {
46
47
  readonly maxBufferedMs: number;
47
48
  readonly manufacturer: string;
48
49
  }
49
- export type StreamOutletConstructor = new (options: StreamOutletOptions) => StreamOutlet;
50
- export interface StreamOutletOptions extends StreamOutletConstructorOptions {
50
+ export type LslOutletConstructor = new (options: LslOutletOptions) => LslOutlet;
51
+ export interface LslOutletOptions extends LslOutletConstructorOptions {
51
52
  waitAfterConstructionMs?: number;
52
53
  }
53
- export interface StreamOutletConstructorOptions {
54
+ export interface LslOutletConstructorOptions {
54
55
  name: string;
55
56
  type: string;
56
57
  sourceId: string;
@@ -1,9 +1,11 @@
1
- import { Worker } from 'node:worker_threads';
1
+ import { LiblslAdapter, handleLslError, } from '@neurodevs/ndx-native';
2
2
  import { assertValidChannelCount, assertValidChannelFormat, assertValidChunkSize, assertValidMaxBufferedMs, assertValidSampleRateHz, } from '../assertions.js';
3
+ import LslStreamInfo from './LslStreamInfo.js';
3
4
  export default class LslStreamOutlet {
4
5
  static Class;
5
- static Worker = Worker;
6
6
  static setTimeout = setTimeout;
7
+ static lsl = LiblslAdapter.getInstance();
8
+ static handleLslError = handleLslError;
7
9
  name;
8
10
  type;
9
11
  sourceId;
@@ -15,7 +17,9 @@ export default class LslStreamOutlet {
15
17
  maxBufferedMs = 360 * 1000;
16
18
  manufacturer = 'N/A';
17
19
  units = 'N/A';
18
- worker;
20
+ info;
21
+ handle;
22
+ pushSampleToLsl;
19
23
  constructor(options) {
20
24
  const { name, type, sourceId, channelNames, channelFormat, sampleRateHz, chunkSize, maxBufferedMs, manufacturer, units, } = options;
21
25
  this.name = name;
@@ -30,7 +34,6 @@ export default class LslStreamOutlet {
30
34
  this.manufacturer = manufacturer ?? this.manufacturer;
31
35
  this.units = units ?? this.units;
32
36
  this.validateOptions();
33
- this.createWorkerThread();
34
37
  this.createStreamOutlet();
35
38
  }
36
39
  static async Create(options) {
@@ -58,27 +61,25 @@ export default class LslStreamOutlet {
58
61
  throwUnsupportedChannelFormat() {
59
62
  throw new Error(`This method currently does not support the ${this.channelFormat} type! Please implement it.`);
60
63
  }
61
- createWorkerThread() {
62
- this.worker = new this.Worker(new URL('./workers/outlet/LslStreamOutlet.worker.js', import.meta.url));
63
- }
64
64
  createStreamOutlet() {
65
- this.worker.postMessage({
66
- type: 'createOutlet',
67
- payload: {
68
- infoOptions: {
69
- name: this.name,
70
- type: this.type,
71
- sourceId: this.sourceId,
72
- channelNames: this.channelNames,
73
- channelFormat: this.channelFormat,
74
- sampleRateHz: this.sampleRateHz,
75
- units: this.units,
76
- },
77
- chunkSize: this.chunkSize,
78
- maxBufferedMs: this.maxBufferedMs,
79
- pushMethod: this.pushMethod,
80
- },
65
+ this.info = LslStreamInfo.Create({
66
+ name: this.name,
67
+ type: this.type,
68
+ sourceId: this.sourceId,
69
+ channelNames: this.channelNames,
70
+ channelFormat: this.channelFormat,
71
+ sampleRateHz: this.sampleRateHz,
72
+ units: this.units,
73
+ });
74
+ this.handle = this.lsl.createOutlet({
75
+ infoHandle: this.info.infoHandle,
76
+ chunkSize: this.chunkSize,
77
+ maxBufferedMs: this.maxBufferedMs,
81
78
  });
79
+ this.pushSampleToLsl = this.lsl[this.pushMethod].bind(this.lsl);
80
+ }
81
+ get lsl() {
82
+ return LslStreamOutlet.lsl;
82
83
  }
83
84
  get pushMethod() {
84
85
  return this.methodMap[this.channelFormat];
@@ -87,22 +88,17 @@ export default class LslStreamOutlet {
87
88
  float32: 'pushSampleFloatTimestamp',
88
89
  string: 'pushSampleStringTimestamp',
89
90
  };
90
- pushSample(sample, timestampSec) {
91
- this.worker.postMessage({
92
- type: 'pushSample',
93
- payload: {
94
- sample,
95
- timestampSec,
96
- },
91
+ pushSample(sample, timestampSec = this.lsl.localClock()) {
92
+ const errorCode = this.pushSampleToLsl({
93
+ outletHandle: this.handle,
94
+ sample,
95
+ timestampSec,
97
96
  });
97
+ LslStreamOutlet.handleLslError(errorCode);
98
98
  }
99
99
  destroy() {
100
- this.worker.postMessage({
101
- type: 'destroyOutlet',
102
- });
103
- }
104
- get Worker() {
105
- return LslStreamOutlet.Worker;
100
+ this.lsl.destroyOutlet({ outletHandle: this.handle });
101
+ this.lsl.destroyStreamInfo({ infoHandle: this.info.infoHandle });
106
102
  }
107
103
  static async waitForSetup(waitAfterConstructionMs) {
108
104
  await new Promise((resolve) => LslStreamOutlet.setTimeout(resolve, waitAfterConstructionMs));
@@ -1 +1 @@
1
- {"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamOutlet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslStreamOutlet.js","sourceRoot":"","sources":["../../src/impl/LslStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAIb,cAAc,GACjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACH,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,aAA0B,MAAM,oBAAoB,CAAA;AAE3D,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,KAAK,CAAuB;IACnC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;IACxC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAA;IAE7B,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACZ,QAAQ,CAAQ;IAChB,YAAY,CAAU;IACtB,aAAa,CAAe;IAC5B,YAAY,CAAQ;IACpB,YAAY,CAAQ;IACpB,SAAS,CAAQ;IACjB,aAAa,GAAG,GAAG,GAAG,IAAI,CAAA;IAC1B,YAAY,GAAW,KAAK,CAAA;IAC5B,KAAK,GAAW,KAAK,CAAA;IAE7B,IAAI,CAAU;IACd,MAAM,CAAe;IACrB,eAAe,CAAkC;IAEzD,YAAsB,OAAyB;QAC3C,MAAM,EACF,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,KAAK,GACR,GAAG,OAAO,CAAA;QAEX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,MAAM,CAAA;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,CAAC,aAAa,CAAA;QACxD,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC,YAAY,CAAA;QACrD,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAA;QAEhC,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAyB;QAChD,MAAM,EAAE,uBAAuB,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;QAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;QAClD,MAAM,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAA;QAEhD,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,eAAe;QACnB,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1C,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC1C,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC5C,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACpC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC5C,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAChC,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACjC,IAAI,CAAC,6BAA6B,EAAE,CAAA;QACxC,CAAC;IACL,CAAC;IAED,IAAY,wBAAwB;QAChC,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAA;IAC/C,CAAC;IAEO,6BAA6B;QACjC,MAAM,IAAI,KAAK,CACX,8CAA8C,IAAI,CAAC,aAAa,6BAA6B,CAChG,CAAA;IACL,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC,CAAA;QAEF,IAAI,CAAC,eAAe,GAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC;IAED,IAAY,GAAG;QACX,OAAO,eAAe,CAAC,GAAG,CAAA;IAC9B,CAAC;IAED,IAAY,UAAU;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC7C,CAAC;IAEgB,SAAS,GAGtB;QACA,OAAO,EAAE,0BAA0B;QACnC,MAAM,EAAE,2BAA2B;KACtC,CAAA;IAEM,UAAU,CAAC,MAAiB,EAAE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;YACnC,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,MAAM;YACN,YAAY;SACf,CAAC,CAAA;QAEF,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;IAC7C,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACpE,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,uBAA+B;QAC7D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1B,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAC/D,CAAA;IACL,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import WebSocket, { WebSocketServer } from 'ws';
2
- import { StreamInlet } from './LslStreamInlet.js';
3
- export default class LslWebSocketBridge implements WebSocketBridge {
4
- static Class?: WebSocketBridgeConstructor;
2
+ import { LslInlet } from './LslStreamInlet.js';
3
+ export default class LslWebSocketBridge implements LslWsBridge {
4
+ static Class?: LslWsBridgeConstructor;
5
5
  static WS: typeof WebSocket;
6
6
  static WSS: typeof import("ws").Server;
7
7
  private inlet;
8
8
  private localServer?;
9
9
  private remoteSockets?;
10
10
  private isDestroyed;
11
- protected constructor(options: WebSocketBridgeConstructorOptions);
12
- static Create(options: WebSocketBridgeOptions): Promise<WebSocketBridge>;
11
+ protected constructor(options: LslWsBridgeConstructorOptions);
12
+ static Create(options: LslWsBridgeOptions): Promise<LslWsBridge>;
13
13
  private throwIfNoLocalServerOrRemoteSockets;
14
14
  private readonly insufficientOptionsError;
15
15
  activate(): Promise<void>;
@@ -31,20 +31,20 @@ export default class LslWebSocketBridge implements WebSocketBridge {
31
31
  private static WebSocketServer;
32
32
  private static LslStreamInlet;
33
33
  }
34
- export interface WebSocketBridge {
34
+ export interface LslWsBridge {
35
35
  activate(): Promise<void>;
36
36
  deactivate(): void;
37
37
  destroy(): void;
38
38
  }
39
- export type WebSocketBridgeConstructor = new (options: WebSocketBridgeConstructorOptions) => WebSocketBridge;
40
- export interface WebSocketBridgeOptions {
39
+ export type LslWsBridgeConstructor = new (options: LslWsBridgeConstructorOptions) => LslWsBridge;
40
+ export interface LslWsBridgeOptions {
41
41
  sourceId: string;
42
42
  chunkSize: number;
43
43
  listenPort?: number;
44
44
  connectUrls?: string | string[];
45
45
  }
46
- export interface WebSocketBridgeConstructorOptions extends WebSocketBridgeOptions {
47
- inlet: StreamInlet;
46
+ export interface LslWsBridgeConstructorOptions extends LslWsBridgeOptions {
47
+ inlet: LslInlet;
48
48
  localServer?: WebSocketServer;
49
49
  remoteSockets?: WebSocket[];
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LslWebSocketBridge.js","sourceRoot":"","sources":["../../src/impl/LslWebSocketBridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowedClockRegressor.js","sourceRoot":"","sources":["../../../src/impl/clocks/WindowedClockRegressor.ts"],"names":[],"mappings":"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"}