@neurodevs/node-lsl 17.1.0 → 18.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.
- package/.claude/settings.local.json +10 -0
- package/.regressionproof.json +7 -0
- package/.vscode/launch.json +3 -2
- package/README.md +9 -35
- package/build/.spruce/settings.json +5 -1
- package/build/__tests__/AbstractPackageTest.d.ts +4 -4
- package/build/__tests__/AbstractPackageTest.js +9 -11
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/LslBackpressureMonitor.test.d.ts +7 -0
- package/build/__tests__/impl/LslBackpressureMonitor.test.js +26 -0
- package/build/__tests__/impl/LslBackpressureMonitor.test.js.map +1 -0
- package/build/__tests__/impl/LslEventMarkerEmitter.test.d.ts +34 -0
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js +243 -0
- package/build/__tests__/impl/LslEventMarkerEmitter.test.js.map +1 -0
- package/build/__tests__/impl/LslStreamInfo.test.d.ts +0 -3
- package/build/__tests__/impl/LslStreamInfo.test.js +2 -27
- package/build/__tests__/impl/LslStreamInfo.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamInlet.test.d.ts +22 -8
- package/build/__tests__/impl/LslStreamInlet.test.js +240 -66
- package/build/__tests__/impl/LslStreamInlet.test.js.map +1 -1
- package/build/__tests__/impl/LslStreamOutlet.test.d.ts +3 -7
- package/build/__tests__/impl/LslStreamOutlet.test.js +36 -46
- package/build/__tests__/impl/LslStreamOutlet.test.js.map +1 -1
- package/build/__tests__/impl/LslWebSocketBridge.test.js +16 -17
- package/build/__tests__/impl/LslWebSocketBridge.test.js.map +1 -1
- package/build/assertions.d.ts +1 -1
- package/build/assertions.js.map +1 -1
- package/build/impl/LslBackpressureMonitor.d.ts +8 -0
- package/build/impl/LslBackpressureMonitor.js +8 -0
- package/build/impl/LslBackpressureMonitor.js.map +1 -0
- package/build/impl/LslEventMarkerEmitter.d.ts +35 -0
- package/build/impl/LslEventMarkerEmitter.js +86 -0
- package/build/impl/LslEventMarkerEmitter.js.map +1 -0
- package/build/impl/LslStreamInfo.d.ts +4 -8
- package/build/impl/LslStreamInfo.js +8 -21
- package/build/impl/LslStreamInfo.js.map +1 -1
- package/build/impl/LslStreamInlet.d.ts +31 -47
- package/build/impl/LslStreamInlet.js +82 -143
- package/build/impl/LslStreamInlet.js.map +1 -1
- package/build/impl/LslStreamOutlet.d.ts +15 -18
- package/build/impl/LslStreamOutlet.js +39 -47
- package/build/impl/LslStreamOutlet.js.map +1 -1
- package/build/impl/LslWebSocketBridge.d.ts +4 -5
- package/build/impl/LslWebSocketBridge.js +8 -8
- package/build/impl/LslWebSocketBridge.js.map +1 -1
- package/build/impl/workers/inlet/LslStreamInlet.worker.d.ts +22 -0
- package/build/impl/workers/inlet/LslStreamInlet.worker.js +42 -0
- package/build/impl/workers/inlet/LslStreamInlet.worker.js.map +1 -0
- package/build/impl/workers/inlet/StreamInletWorker.d.ts +73 -0
- package/build/impl/workers/inlet/StreamInletWorker.js +253 -0
- package/build/impl/workers/inlet/StreamInletWorker.js.map +1 -0
- package/build/impl/workers/outlet/LslStreamOutlet.worker.d.ts +32 -0
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js +82 -0
- package/build/impl/workers/outlet/LslStreamOutlet.worker.js.map +1 -0
- package/build/index.d.ts +12 -14
- package/build/index.js +14 -16
- package/build/index.js.map +1 -1
- package/build/scripts/finalizeHandles.d.ts +2 -0
- package/build/scripts/finalizeHandles.js +48 -0
- package/build/scripts/finalizeHandles.js.map +1 -0
- package/build/scripts/runLslEventMarkerEmitter.js +11 -0
- package/build/scripts/runLslEventMarkerEmitter.js.map +1 -0
- package/build/scripts/runOutletToInlet.js +7 -6
- package/build/scripts/runOutletToInlet.js.map +1 -1
- package/build/scripts/testDestroyOutlet.d.ts +1 -0
- package/build/scripts/testDestroyOutlet.js +4 -0
- package/build/scripts/testDestroyOutlet.js.map +1 -0
- package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.d.ts +6 -0
- package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js +10 -0
- package/build/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js.map +1 -0
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.d.ts +17 -0
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js +30 -0
- package/build/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js.map +1 -0
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.d.ts +10 -0
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js +23 -0
- package/build/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js.map +1 -0
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.d.ts +9 -0
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js +19 -0
- package/build/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js.map +1 -0
- package/build/testDoubles/StreamInfo/FakeStreamInfo.d.ts +3 -3
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js +3 -3
- package/build/testDoubles/StreamInfo/FakeStreamInfo.js.map +1 -1
- package/build/testDoubles/StreamInlet/FakeStreamInlet.d.ts +8 -10
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js +6 -7
- package/build/testDoubles/StreamInlet/FakeStreamInlet.js.map +1 -1
- package/build/testDoubles/StreamInlet/SpyStreamInlet.d.ts +2 -5
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js +2 -8
- package/build/testDoubles/StreamInlet/SpyStreamInlet.js.map +1 -1
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.d.ts +7 -9
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js +5 -8
- package/build/testDoubles/StreamOutlet/FakeStreamOutlet.js.map +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.d.ts +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js +1 -1
- package/build/testDoubles/WebSocketBridge/FakeWebSocketBridge.js.map +1 -1
- package/build/testDoubles/WorkerThreads/FakeWorker.d.ts +27 -0
- package/build/testDoubles/WorkerThreads/FakeWorker.js +67 -0
- package/build/testDoubles/WorkerThreads/FakeWorker.js.map +1 -0
- package/build/validations.js +0 -2
- package/build/validations.js.map +1 -1
- package/package.json +24 -8
- package/src/.spruce/settings.json +5 -1
- package/src/__tests__/AbstractPackageTest.ts +13 -15
- package/src/__tests__/impl/LslBackpressureMonitor.test.ts +25 -0
- package/src/__tests__/impl/LslEventMarkerEmitter.test.ts +322 -0
- package/src/__tests__/impl/LslStreamInfo.test.ts +3 -40
- package/src/__tests__/impl/LslStreamInlet.test.ts +366 -95
- package/src/__tests__/impl/LslStreamOutlet.test.ts +61 -69
- package/src/__tests__/impl/LslWebSocketBridge.test.ts +18 -18
- package/src/assertions.ts +2 -1
- package/src/impl/LslBackpressureMonitor.ts +13 -0
- package/src/impl/LslEventMarkerEmitter.ts +133 -0
- package/src/impl/LslStreamInfo.ts +17 -29
- package/src/impl/LslStreamInlet.ts +105 -208
- package/src/impl/LslStreamOutlet.ts +54 -78
- package/src/impl/LslWebSocketBridge.ts +12 -12
- package/src/impl/workers/inlet/LslStreamInlet.worker.ts +74 -0
- package/src/impl/workers/inlet/StreamInletWorker.ts +348 -0
- package/src/impl/workers/outlet/LslStreamOutlet.worker.ts +144 -0
- package/src/index.ts +14 -17
- package/src/scripts/finalizeHandles.ts +63 -0
- package/src/scripts/runLslEventMarkerEmitter.ts +15 -0
- package/src/scripts/runOutletToInlet.ts +10 -8
- package/src/scripts/testDestroyOutlet.ts +5 -0
- package/src/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.ts +13 -0
- package/src/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.ts +46 -0
- package/src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts +31 -0
- package/src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts +29 -0
- package/src/testDoubles/StreamInfo/FakeStreamInfo.ts +4 -4
- package/src/testDoubles/StreamInlet/FakeStreamInlet.ts +11 -17
- package/src/testDoubles/StreamInlet/SpyStreamInlet.ts +3 -16
- package/src/testDoubles/StreamOutlet/FakeStreamOutlet.ts +12 -15
- package/src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts +1 -1
- package/src/testDoubles/WorkerThreads/FakeWorker.ts +99 -0
- package/src/validations.ts +0 -2
- package/build/__tests__/impl/LiblslAdapter.test.d.ts +0 -79
- package/build/__tests__/impl/LiblslAdapter.test.js +0 -688
- package/build/__tests__/impl/LiblslAdapter.test.js.map +0 -1
- package/build/__tests__/impl/LslEventMarkerOutlet.test.d.ts +0 -21
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js +0 -160
- package/build/__tests__/impl/LslEventMarkerOutlet.test.js.map +0 -1
- package/build/handleError.d.ts +0 -8
- package/build/handleError.js +0 -25
- package/build/handleError.js.map +0 -1
- package/build/impl/LiblslAdapter.d.ts +0 -159
- package/build/impl/LiblslAdapter.js +0 -317
- package/build/impl/LiblslAdapter.js.map +0 -1
- package/build/impl/LslEventMarkerOutlet.d.ts +0 -28
- package/build/impl/LslEventMarkerOutlet.js +0 -63
- package/build/impl/LslEventMarkerOutlet.js.map +0 -1
- package/build/scripts/runLslEventMarkerOutlet.js +0 -18
- package/build/scripts/runLslEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.d.ts +0 -13
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js +0 -26
- package/build/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.d.ts +0 -17
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js +0 -46
- package/build/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js +0 -19
- package/build/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.d.ts +0 -9
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js +0 -19
- package/build/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.js.map +0 -1
- package/build/testDoubles/Liblsl/FakeLiblsl.d.ts +0 -50
- package/build/testDoubles/Liblsl/FakeLiblsl.js +0 -126
- package/build/testDoubles/Liblsl/FakeLiblsl.js.map +0 -1
- package/src/__tests__/impl/LiblslAdapter.test.ts +0 -817
- package/src/__tests__/impl/LslEventMarkerOutlet.test.ts +0 -195
- package/src/handleError.ts +0 -24
- package/src/impl/LiblslAdapter.ts +0 -548
- package/src/impl/LslEventMarkerOutlet.ts +0 -97
- package/src/scripts/runLslEventMarkerOutlet.ts +0 -23
- package/src/testDoubles/EventMarkerOutlet/FakeEventMarkerOutlet.ts +0 -36
- package/src/testDoubles/EventMarkerOutlet/MockEventMarkerOutlet.ts +0 -75
- package/src/testDoubles/EventMarkerOutlet/SpyEventMarkerOutlet.ts +0 -24
- package/src/testDoubles/EventMarkerOutlet/ThrowingEventMarkerOutlet.ts +0 -28
- package/src/testDoubles/Liblsl/FakeLiblsl.ts +0 -182
- /package/build/scripts/{runLslEventMarkerOutlet.d.ts → runLslEventMarkerEmitter.d.ts} +0 -0
package/build/index.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
//
|
|
2
|
-
export { default as
|
|
3
|
-
export * from './impl/
|
|
4
|
-
export { default as
|
|
5
|
-
export * from './testDoubles/
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
export { default as
|
|
14
|
-
export * from './
|
|
15
|
-
export { default as FakeLiblsl } from './testDoubles/Liblsl/FakeLiblsl.js';
|
|
16
|
-
export * from './testDoubles/Liblsl/FakeLiblsl.js';
|
|
1
|
+
// BackpressureMonitor
|
|
2
|
+
export { default as LslBackpressureMonitor } from './impl/LslBackpressureMonitor.js';
|
|
3
|
+
export * from './impl/LslBackpressureMonitor.js';
|
|
4
|
+
export { default as FakeBackpressureMonitor } from './testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js';
|
|
5
|
+
export * from './testDoubles/BackpressureMonitor/FakeBackpressureMonitor.js';
|
|
6
|
+
// EventMarkerEmitter
|
|
7
|
+
export { default as LslEventMarkerEmitter } from './impl/LslEventMarkerEmitter.js';
|
|
8
|
+
export * from './impl/LslEventMarkerEmitter.js';
|
|
9
|
+
export { default as FakeEventMarkerEmitter } from './testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js';
|
|
10
|
+
export * from './testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.js';
|
|
11
|
+
export { default as SpyEventMarkerEmitter } from './testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js';
|
|
12
|
+
export * from './testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.js';
|
|
13
|
+
export { default as ThrowingEventMarkerEmitter } from './testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js';
|
|
14
|
+
export * from './testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.js';
|
|
17
15
|
// StreamInfo
|
|
18
16
|
export { default as LslStreamInfo } from './impl/LslStreamInfo.js';
|
|
19
17
|
export * from './impl/LslStreamInfo.js';
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAEtB,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AACpF,cAAc,kCAAkC,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,8DAA8D,CAAA;AACjH,cAAc,8DAA8D,CAAA;AAE5E,qBAAqB;AAErB,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAClF,cAAc,iCAAiC,CAAA;AAE/C,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,4DAA4D,CAAA;AAC9G,cAAc,4DAA4D,CAAA;AAE1E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,2DAA2D,CAAA;AAC5G,cAAc,2DAA2D,CAAA;AAEzE,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,gEAAgE,CAAA;AACtH,cAAc,gEAAgE,CAAA;AAE9E,aAAa;AAEb,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAClE,cAAc,yBAAyB,CAAA;AAEvC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACpF,cAAc,2CAA2C,CAAA;AAEzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,4CAA4C,CAAA;AACtF,cAAc,4CAA4C,CAAA;AAE1D,cAAc;AAEd,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACpE,cAAc,0BAA0B,CAAA;AAExC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8CAA8C,CAAA;AACzF,cAAc,8CAA8C,CAAA;AAE5D,eAAe;AAEf,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAA;AACtE,cAAc,2BAA2B,CAAA;AAEzC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,gDAAgD,CAAA;AAC5F,cAAc,gDAAgD,CAAA;AAE9D,kBAAkB;AAElB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAC5E,cAAc,8BAA8B,CAAA;AAE5C,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sDAAsD,CAAA;AACrG,cAAc,sDAAsD,CAAA;AAEpE,QAAQ;AAER,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,8CAA8C,CAAA;AAErG,aAAa;AAEb,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACpF,cAAc,2CAA2C,CAAA;AAEzD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iDAAiD,CAAA;AAChG,cAAc,iDAAiD,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const destroyHandles = new Set();
|
|
2
|
+
let isFinalizing = false;
|
|
3
|
+
export function register(destroy) {
|
|
4
|
+
if (isFinalizing) {
|
|
5
|
+
destroy();
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
destroyHandles.add(destroy);
|
|
9
|
+
const unregister = () => {
|
|
10
|
+
destroyHandles.delete(destroy);
|
|
11
|
+
};
|
|
12
|
+
return unregister;
|
|
13
|
+
}
|
|
14
|
+
function finalizeHandles() {
|
|
15
|
+
if (isFinalizing) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
isFinalizing = true;
|
|
19
|
+
for (const destroy of destroyHandles) {
|
|
20
|
+
try {
|
|
21
|
+
destroy();
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error('Error during finalization:', err);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
destroyHandles.clear();
|
|
28
|
+
}
|
|
29
|
+
process.once('SIGINT', finalizeHandles);
|
|
30
|
+
process.once('SIGTERM', finalizeHandles);
|
|
31
|
+
process.once('uncaughtException', (err) => {
|
|
32
|
+
console.error('Uncaught exception:', err);
|
|
33
|
+
finalizeHandles();
|
|
34
|
+
process.exit(1);
|
|
35
|
+
});
|
|
36
|
+
process.once('unhandledRejection', (reason) => {
|
|
37
|
+
console.error('Unhandled rejection:', reason);
|
|
38
|
+
finalizeHandles();
|
|
39
|
+
process.exit(1);
|
|
40
|
+
});
|
|
41
|
+
process.once('beforeExit', () => {
|
|
42
|
+
if (destroyHandles.size > 0 && !isFinalizing) {
|
|
43
|
+
console.warn('Warning: process is exiting with active handles.\n' +
|
|
44
|
+
'Did you forget to call destroy()? Finalizing automatically.');
|
|
45
|
+
finalizeHandles();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=finalizeHandles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalizeHandles.js","sourceRoot":"","sources":["../../src/scripts/finalizeHandles.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAiB,CAAA;AAE/C,IAAI,YAAY,GAAG,KAAK,CAAA;AAExB,MAAM,UAAU,QAAQ,CAAC,OAAsB;IAC3C,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,EAAE,CAAA;QACT,OAAM;IACV,CAAC;IAED,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAE3B,MAAM,UAAU,GAAG,GAAG,EAAE;QACpB,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,SAAS,eAAe;IACpB,IAAI,YAAY,EAAE,CAAC;QACf,OAAM;IACV,CAAC;IACD,YAAY,GAAG,IAAI,CAAA;IAEnB,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACnC,IAAI,CAAC;YACD,OAAO,EAAE,CAAA;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;QACpD,CAAC;IACL,CAAC;IAED,cAAc,CAAC,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;AAEvC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;AAExC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAA;IACzC,eAAe,EAAE,CAAA;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;IAC7C,eAAe,EAAE,CAAA;IACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;IAC5B,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CACR,oDAAoD;YAChD,6DAA6D,CACpE,CAAA;QACD,eAAe,EAAE,CAAA;IACrB,CAAC;AACL,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import LslEventMarkerEmitter from '../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
const outlet = await LslEventMarkerEmitter.Create();
|
|
3
|
+
const markers = [
|
|
4
|
+
{ name: 'phase-1-begin', waitAfterMs: 100 },
|
|
5
|
+
{ name: 'phase-1-end', waitAfterMs: 100 },
|
|
6
|
+
{ name: 'never-reached-marker', waitAfterMs: 100 },
|
|
7
|
+
];
|
|
8
|
+
void outlet.emitMany(markers);
|
|
9
|
+
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
10
|
+
outlet.interrupt();
|
|
11
|
+
//# sourceMappingURL=runLslEventMarkerEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runLslEventMarkerEmitter.js","sourceRoot":"","sources":["../../src/scripts/runLslEventMarkerEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,kCAAkC,CAAA;AAEpE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAA;AAEnD,MAAM,OAAO,GAAG;IACZ,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,EAAE;IAC3C,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,EAAE;IACzC,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,GAAG,EAAE;CACrD,CAAA;AAED,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAE7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAExD,MAAM,CAAC,SAAS,EAAE,CAAA"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import LslStreamInlet from '../impl/LslStreamInlet.js';
|
|
2
2
|
import LslStreamOutlet from '../impl/LslStreamOutlet.js';
|
|
3
|
+
const sourceId = 'TestOutletID';
|
|
3
4
|
console.log('Creating outlet...');
|
|
4
5
|
const outlet = await LslStreamOutlet.Create({
|
|
5
6
|
name: 'TestOutlet',
|
|
6
7
|
type: 'TEST',
|
|
7
|
-
sourceId
|
|
8
|
+
sourceId,
|
|
8
9
|
sampleRateHz: 100,
|
|
9
10
|
channelNames: ['Ch1', 'Ch2', 'Ch3'],
|
|
10
11
|
channelFormat: 'float32',
|
|
@@ -13,15 +14,14 @@ const outlet = await LslStreamOutlet.Create({
|
|
|
13
14
|
manufacturer: 'test',
|
|
14
15
|
});
|
|
15
16
|
console.log('Creating inlet...');
|
|
16
|
-
const
|
|
17
|
-
|
|
17
|
+
const inlet = await LslStreamInlet.Create({
|
|
18
|
+
sourceId,
|
|
18
19
|
chunkSize: 1,
|
|
19
|
-
}
|
|
20
|
-
const inlet = await LslStreamInlet.Create(inletOptions, (samples, timestamps) => {
|
|
20
|
+
}, (samples, timestamps) => {
|
|
21
21
|
console.log('Received samples:', samples, 'at timestamps:', timestamps);
|
|
22
22
|
});
|
|
23
23
|
console.log('Start pulling...');
|
|
24
|
-
inlet.startPulling();
|
|
24
|
+
await inlet.startPulling();
|
|
25
25
|
console.log('Waiting for 100 ms...');
|
|
26
26
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
27
27
|
console.log('Pushing samples...');
|
|
@@ -37,4 +37,5 @@ for (let i = 0; i < 30; i++) {
|
|
|
37
37
|
outlet.pushSample(sample);
|
|
38
38
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
39
39
|
}
|
|
40
|
+
process.exit(0);
|
|
40
41
|
//# sourceMappingURL=runOutletToInlet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runOutletToInlet.js","sourceRoot":"","sources":["../../src/scripts/runOutletToInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,2BAA2B,CAAA;AACtD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AAExD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ
|
|
1
|
+
{"version":3,"file":"runOutletToInlet.js","sourceRoot":"","sources":["../../src/scripts/runOutletToInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,2BAA2B,CAAA;AACtD,OAAO,eAAe,MAAM,4BAA4B,CAAA;AAExD,MAAM,QAAQ,GAAG,cAAc,CAAA;AAE/B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ;IACR,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACnC,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,MAAM;CACvB,CAAC,CAAA;AAEF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAEhC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CACrC;IACI,QAAQ;IACR,SAAS,EAAE,CAAC;CACf,EACD,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAA;AAC3E,CAAC,CACJ,CAAA;AAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAC/B,MAAM,KAAK,CAAC,YAAY,EAAE,CAAA;AAE1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAExD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;AAEzD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;AACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testDestroyOutlet.js","sourceRoot":"","sources":["../../src/scripts/testDestroyOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,kCAAkC,CAAA;AAEpE,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAA;AAEpD,OAAO,CAAC,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default class FakeBackpressureMonitor {
|
|
2
|
+
static numCallsToConstructor = 0;
|
|
3
|
+
constructor() {
|
|
4
|
+
FakeBackpressureMonitor.numCallsToConstructor++;
|
|
5
|
+
}
|
|
6
|
+
static resetTestDouble() {
|
|
7
|
+
FakeBackpressureMonitor.numCallsToConstructor = 0;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=FakeBackpressureMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeBackpressureMonitor.js","sourceRoot":"","sources":["../../../src/testDoubles/BackpressureMonitor/FakeBackpressureMonitor.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,uBAAuB;IACjC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAA;IAEvC;QACI,uBAAuB,CAAC,qBAAqB,EAAE,CAAA;IACnD,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,uBAAuB,CAAC,qBAAqB,GAAG,CAAC,CAAA;IACrD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EventMarkerEmitter, EventMarkerOptions, TimedEventMarker } from '../../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
export default class FakeEventMarkerEmitter implements EventMarkerEmitter {
|
|
3
|
+
static numCallsToConstructor: number;
|
|
4
|
+
static callsToEmit: {
|
|
5
|
+
markerName: string;
|
|
6
|
+
options?: EventMarkerOptions;
|
|
7
|
+
}[];
|
|
8
|
+
static callsToEmitMany: TimedEventMarker[][];
|
|
9
|
+
static numCallsToInterrupt: number;
|
|
10
|
+
static numCallsToDestroy: number;
|
|
11
|
+
constructor();
|
|
12
|
+
emit(markerName: string, options?: EventMarkerOptions): Promise<void>;
|
|
13
|
+
emitMany(markers: TimedEventMarker[]): Promise<void>;
|
|
14
|
+
interrupt(): void;
|
|
15
|
+
destroy(): void;
|
|
16
|
+
static resetTestDouble(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default class FakeEventMarkerEmitter {
|
|
2
|
+
static numCallsToConstructor = 0;
|
|
3
|
+
static callsToEmit = [];
|
|
4
|
+
static callsToEmitMany = [];
|
|
5
|
+
static numCallsToInterrupt = 0;
|
|
6
|
+
static numCallsToDestroy = 0;
|
|
7
|
+
constructor() {
|
|
8
|
+
FakeEventMarkerEmitter.numCallsToConstructor++;
|
|
9
|
+
}
|
|
10
|
+
async emit(markerName, options) {
|
|
11
|
+
FakeEventMarkerEmitter.callsToEmit.push({ markerName, options });
|
|
12
|
+
}
|
|
13
|
+
async emitMany(markers) {
|
|
14
|
+
FakeEventMarkerEmitter.callsToEmitMany.push(markers);
|
|
15
|
+
}
|
|
16
|
+
interrupt() {
|
|
17
|
+
FakeEventMarkerEmitter.numCallsToInterrupt++;
|
|
18
|
+
}
|
|
19
|
+
destroy() {
|
|
20
|
+
FakeEventMarkerEmitter.numCallsToDestroy++;
|
|
21
|
+
}
|
|
22
|
+
static resetTestDouble() {
|
|
23
|
+
this.numCallsToConstructor = 0;
|
|
24
|
+
this.callsToEmit = [];
|
|
25
|
+
this.callsToEmitMany = [];
|
|
26
|
+
this.numCallsToInterrupt = 0;
|
|
27
|
+
this.numCallsToDestroy = 0;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=FakeEventMarkerEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/FakeEventMarkerEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAChC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAA;IAEhC,MAAM,CAAC,WAAW,GAGnB,EAAE,CAAA;IAED,MAAM,CAAC,eAAe,GAAyB,EAAE,CAAA;IACjD,MAAM,CAAC,mBAAmB,GAAG,CAAC,CAAA;IAC9B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC;QACI,sBAAsB,CAAC,qBAAqB,EAAE,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,OAA4B;QAC9D,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;IACpE,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,OAA2B;QAC7C,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,SAAS;QACZ,sBAAsB,CAAC,mBAAmB,EAAE,CAAA;IAChD,CAAC;IAEM,OAAO;QACV,sBAAsB,CAAC,iBAAiB,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QACrB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC9B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import LslEventMarkerEmitter from '../../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
import { StreamOutlet } from '../../impl/LslStreamOutlet.js';
|
|
3
|
+
export default class SpyEventMarkerEmitter extends LslEventMarkerEmitter {
|
|
4
|
+
static shouldCallWaitOnSuper: boolean;
|
|
5
|
+
totalwaitAfterMs: number;
|
|
6
|
+
constructor(outlet: StreamOutlet);
|
|
7
|
+
wait(waitAfterMs: number): Promise<unknown>;
|
|
8
|
+
getStreamOutlet(): StreamOutlet;
|
|
9
|
+
resetTestDouble(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import LslEventMarkerEmitter from '../../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
export default class SpyEventMarkerEmitter extends LslEventMarkerEmitter {
|
|
3
|
+
static shouldCallWaitOnSuper = false;
|
|
4
|
+
totalwaitAfterMs;
|
|
5
|
+
constructor(outlet) {
|
|
6
|
+
super(outlet);
|
|
7
|
+
this.totalwaitAfterMs = 0;
|
|
8
|
+
}
|
|
9
|
+
async wait(waitAfterMs) {
|
|
10
|
+
this.totalwaitAfterMs += waitAfterMs;
|
|
11
|
+
if (SpyEventMarkerEmitter.shouldCallWaitOnSuper) {
|
|
12
|
+
return super.wait(waitAfterMs);
|
|
13
|
+
}
|
|
14
|
+
return Promise.resolve();
|
|
15
|
+
}
|
|
16
|
+
getStreamOutlet() {
|
|
17
|
+
return this.outlet;
|
|
18
|
+
}
|
|
19
|
+
resetTestDouble() {
|
|
20
|
+
this.totalwaitAfterMs = 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=SpyEventMarkerEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpyEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/SpyEventMarkerEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,qCAAqC,CAAA;AAGvE,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,qBAAqB;IAC7D,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAA;IAEpC,gBAAgB,CAAQ;IAE/B,YAAmB,MAAoB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEb,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC7B,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAmB;QACjC,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAA;QAEpC,IAAI,qBAAqB,CAAC,qBAAqB,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAEM,eAAe;QAClB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC7B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EventMarkerEmitter, EventMarkerOptions, TimedEventMarker } from '../../impl/LslEventMarkerEmitter.js';
|
|
2
|
+
export default class ThrowingEventMarkerEmitter implements EventMarkerEmitter {
|
|
3
|
+
private errorMsg;
|
|
4
|
+
constructor();
|
|
5
|
+
emit(_markerName: string, _options?: EventMarkerOptions): Promise<void>;
|
|
6
|
+
emitMany(_markers: TimedEventMarker[]): Promise<void>;
|
|
7
|
+
interrupt(): void;
|
|
8
|
+
destroy(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default class ThrowingEventMarkerEmitter {
|
|
2
|
+
errorMsg = 'Intentional throwing: ';
|
|
3
|
+
constructor() {
|
|
4
|
+
throw new Error(this.errorMsg + 'constructor');
|
|
5
|
+
}
|
|
6
|
+
async emit(_markerName, _options) {
|
|
7
|
+
throw new Error(this.errorMsg + 'emit');
|
|
8
|
+
}
|
|
9
|
+
async emitMany(_markers) {
|
|
10
|
+
throw new Error(this.errorMsg + 'emitMany');
|
|
11
|
+
}
|
|
12
|
+
interrupt() {
|
|
13
|
+
throw new Error(this.errorMsg + 'interrupt');
|
|
14
|
+
}
|
|
15
|
+
destroy() {
|
|
16
|
+
throw new Error(this.errorMsg + 'destroy');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ThrowingEventMarkerEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThrowingEventMarkerEmitter.js","sourceRoot":"","sources":["../../../src/testDoubles/EventMarkerEmitter/ThrowingEventMarkerEmitter.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,0BAA0B;IACnC,QAAQ,GAAG,wBAAwB,CAAA;IAE3C;QACI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAmB,EAAE,QAA6B;QAChE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAA;IAC3C,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAA4B;QAC9C,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAA;IAC/C,CAAC;IAEM,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAA;IAChD,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IAC9C,CAAC;CACJ"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InfoHandle } from '@neurodevs/ndx-native';
|
|
2
2
|
import { StreamInfo, StreamInfoOptions } from '../../impl/LslStreamInfo.js';
|
|
3
3
|
export default class FakeStreamInfo implements StreamInfo {
|
|
4
4
|
static callsToConstructor: (StreamInfoOptions | undefined)[];
|
|
5
5
|
static numCallsToDestroy: number;
|
|
6
|
-
static
|
|
6
|
+
static infoHandle: InfoHandle;
|
|
7
7
|
name: string;
|
|
8
8
|
type: string;
|
|
9
9
|
sourceId: string;
|
|
@@ -14,6 +14,6 @@ export default class FakeStreamInfo implements StreamInfo {
|
|
|
14
14
|
constructor(options?: StreamInfoOptions);
|
|
15
15
|
destroy(): void;
|
|
16
16
|
get channelCount(): number;
|
|
17
|
-
get
|
|
17
|
+
get infoHandle(): InfoHandle;
|
|
18
18
|
static resetTestDouble(): void;
|
|
19
19
|
}
|
|
@@ -2,7 +2,7 @@ import generateId from '@neurodevs/generate-id';
|
|
|
2
2
|
export default class FakeStreamInfo {
|
|
3
3
|
static callsToConstructor = [];
|
|
4
4
|
static numCallsToDestroy = 0;
|
|
5
|
-
static
|
|
5
|
+
static infoHandle = {};
|
|
6
6
|
name = generateId();
|
|
7
7
|
type = generateId();
|
|
8
8
|
sourceId = generateId();
|
|
@@ -19,8 +19,8 @@ export default class FakeStreamInfo {
|
|
|
19
19
|
get channelCount() {
|
|
20
20
|
return this.channelNames.length;
|
|
21
21
|
}
|
|
22
|
-
get
|
|
23
|
-
return FakeStreamInfo.
|
|
22
|
+
get infoHandle() {
|
|
23
|
+
return FakeStreamInfo.infoHandle;
|
|
24
24
|
}
|
|
25
25
|
static resetTestDouble() {
|
|
26
26
|
FakeStreamInfo.callsToConstructor = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAsC,EAAE,CAAA;IACjE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"FakeStreamInfo.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInfo/FakeStreamInfo.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAK/C,MAAM,CAAC,OAAO,OAAO,cAAc;IACxB,MAAM,CAAC,kBAAkB,GAAsC,EAAE,CAAA;IACjE,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,MAAM,CAAC,UAAU,GAAG,EAAgB,CAAA;IAEpC,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,IAAI,GAAG,UAAU,EAAE,CAAA;IACnB,QAAQ,GAAG,UAAU,EAAE,CAAA;IACvB,YAAY,GAAa,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,aAAa,GAAG,SAAkB,CAAA;IAClC,YAAY,GAAG,CAAC,CAAA;IAChB,KAAK,GAAG,KAAK,CAAA;IAEpB,YAAmB,OAA2B;QAC1C,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAEM,OAAO;QACV,cAAc,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,UAAU;QACjB,OAAO,cAAc,CAAC,UAAU,CAAA;IACpC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,cAAc,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACtC,cAAc,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACxC,CAAC"}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { StreamInlet, StreamInletConstructorOptions } from '../../impl/LslStreamInlet.js';
|
|
1
|
+
import { OnDataCallback, StreamInlet, StreamInletOptions } from '../../impl/LslStreamInlet.js';
|
|
3
2
|
export default class FakeStreamInlet implements StreamInlet {
|
|
4
3
|
static callsToConstructor: {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
onData?: (samples: Float32Array, timestamps: Float64Array) => void;
|
|
4
|
+
options?: StreamInletOptions;
|
|
5
|
+
onData?: OnDataCallback;
|
|
8
6
|
}[];
|
|
9
7
|
static numCallsToStartPulling: number;
|
|
10
8
|
static numCallsToStopPulling: number;
|
|
11
|
-
static
|
|
9
|
+
static numCallsToFlushInlet: number;
|
|
12
10
|
static numCallsToDestroy: number;
|
|
13
11
|
isRunning: boolean;
|
|
14
|
-
protected onData:
|
|
15
|
-
constructor(
|
|
16
|
-
startPulling(): void
|
|
12
|
+
protected onData: OnDataCallback;
|
|
13
|
+
constructor(options?: StreamInletOptions, onData?: OnDataCallback);
|
|
14
|
+
startPulling(): Promise<void>;
|
|
17
15
|
stopPulling(): void;
|
|
18
|
-
|
|
16
|
+
flushInlet(): void;
|
|
19
17
|
destroy(): void;
|
|
20
18
|
static resetTestDouble(): void;
|
|
21
19
|
}
|
|
@@ -2,19 +2,18 @@ export default class FakeStreamInlet {
|
|
|
2
2
|
static callsToConstructor = [];
|
|
3
3
|
static numCallsToStartPulling = 0;
|
|
4
4
|
static numCallsToStopPulling = 0;
|
|
5
|
-
static
|
|
5
|
+
static numCallsToFlushInlet = 0;
|
|
6
6
|
static numCallsToDestroy = 0;
|
|
7
7
|
isRunning = false;
|
|
8
8
|
onData;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(options, onData) {
|
|
10
10
|
this.onData = onData ?? (() => { });
|
|
11
11
|
FakeStreamInlet.callsToConstructor.push({
|
|
12
|
-
info,
|
|
13
12
|
options,
|
|
14
13
|
onData: this.onData,
|
|
15
14
|
});
|
|
16
15
|
}
|
|
17
|
-
startPulling() {
|
|
16
|
+
async startPulling() {
|
|
18
17
|
FakeStreamInlet.numCallsToStartPulling++;
|
|
19
18
|
this.isRunning = true;
|
|
20
19
|
}
|
|
@@ -22,8 +21,8 @@ export default class FakeStreamInlet {
|
|
|
22
21
|
FakeStreamInlet.numCallsToStopPulling++;
|
|
23
22
|
this.isRunning = false;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
FakeStreamInlet.
|
|
24
|
+
flushInlet() {
|
|
25
|
+
FakeStreamInlet.numCallsToFlushInlet++;
|
|
27
26
|
}
|
|
28
27
|
destroy() {
|
|
29
28
|
FakeStreamInlet.numCallsToDestroy++;
|
|
@@ -31,7 +30,7 @@ export default class FakeStreamInlet {
|
|
|
31
30
|
static resetTestDouble() {
|
|
32
31
|
FakeStreamInlet.callsToConstructor = [];
|
|
33
32
|
FakeStreamInlet.numCallsToStartPulling = 0;
|
|
34
|
-
FakeStreamInlet.
|
|
33
|
+
FakeStreamInlet.numCallsToFlushInlet = 0;
|
|
35
34
|
FakeStreamInlet.numCallsToDestroy = 0;
|
|
36
35
|
}
|
|
37
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/FakeStreamInlet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"FakeStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/FakeStreamInlet.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,eAAe;IACzB,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,sBAAsB,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,qBAAqB,GAAG,CAAC,CAAA;IAChC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,SAAS,GAAG,KAAK,CAAA;IAEd,MAAM,CAAiB;IAEjC,YAAmB,OAA4B,EAAE,MAAuB;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAElC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACpC,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,eAAe,CAAC,sBAAsB,EAAE,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,CAAC;IAEM,WAAW;QACd,eAAe,CAAC,qBAAqB,EAAE,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IAC1B,CAAC;IAEM,UAAU;QACb,eAAe,CAAC,oBAAoB,EAAE,CAAA;IAC1C,CAAC;IAEM,OAAO;QACV,eAAe,CAAC,iBAAiB,EAAE,CAAA;IACvC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,eAAe,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACvC,eAAe,CAAC,sBAAsB,GAAG,CAAC,CAAA;QAC1C,eAAe,CAAC,oBAAoB,GAAG,CAAC,CAAA;QACxC,eAAe,CAAC,iBAAiB,GAAG,CAAC,CAAA;IACzC,CAAC"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import LslStreamInlet, { OnDataCallback, StreamInletConstructorOptions } from '../../impl/LslStreamInlet.js';
|
|
1
|
+
import LslStreamInlet, { OnDataCallback, StreamInletOptions } from '../../impl/LslStreamInlet.js';
|
|
3
2
|
export declare class SpyStreamInlet extends LslStreamInlet {
|
|
4
|
-
constructor(
|
|
5
|
-
getStreamInfo(): StreamInfo;
|
|
6
|
-
getBoundInlet(): import("../../index.js").BoundInlet;
|
|
3
|
+
constructor(options: StreamInletOptions, onData: OnDataCallback);
|
|
7
4
|
}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import LslStreamInlet from '../../impl/LslStreamInlet.js';
|
|
2
2
|
export class SpyStreamInlet extends LslStreamInlet {
|
|
3
|
-
constructor(
|
|
4
|
-
super(
|
|
5
|
-
}
|
|
6
|
-
getStreamInfo() {
|
|
7
|
-
return this.info;
|
|
8
|
-
}
|
|
9
|
-
getBoundInlet() {
|
|
10
|
-
return this.inlet;
|
|
3
|
+
constructor(options, onData) {
|
|
4
|
+
super(options, onData);
|
|
11
5
|
}
|
|
12
6
|
}
|
|
13
7
|
//# sourceMappingURL=SpyStreamInlet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SpyStreamInlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamInlet/SpyStreamInlet.ts"],"names":[],"mappings":"AAAA,OAAO,cAGN,MAAM,8BAA8B,CAAA;AAErC,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YAAmB,OAA2B,EAAE,MAAsB;QAClE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC1B,CAAC;CACJ"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { LslSample } from '
|
|
2
|
-
import { StreamInfo } from '../../impl/LslStreamInfo.js';
|
|
1
|
+
import { LslSample } from '@neurodevs/ndx-native';
|
|
3
2
|
import { StreamOutlet, StreamOutletOptions } from '../../impl/LslStreamOutlet.js';
|
|
4
3
|
export default class FakeStreamOutlet implements StreamOutlet {
|
|
5
|
-
static callsToConstructor:
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
static callsToConstructor: (StreamOutletOptions | undefined)[];
|
|
5
|
+
static callsToPushSample: {
|
|
6
|
+
sample: LslSample;
|
|
7
|
+
timestamp?: number;
|
|
8
8
|
}[];
|
|
9
|
-
static callsToPushSample: LslSample[];
|
|
10
9
|
static numCallsToDestroy: number;
|
|
11
|
-
info: StreamInfo;
|
|
12
10
|
options?: StreamOutletOptions;
|
|
13
|
-
constructor(
|
|
11
|
+
constructor(options?: StreamOutletOptions);
|
|
14
12
|
destroy(): void;
|
|
15
|
-
pushSample(sample: LslSample): void;
|
|
13
|
+
pushSample(sample: LslSample, timestamp?: number): void;
|
|
16
14
|
get name(): string;
|
|
17
15
|
get type(): string;
|
|
18
16
|
get sourceId(): string;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
import { randomInt } from 'crypto';
|
|
1
|
+
import { randomInt } from 'node:crypto';
|
|
2
2
|
import generateId from '@neurodevs/generate-id';
|
|
3
|
-
import FakeStreamInfo from '../StreamInfo/FakeStreamInfo.js';
|
|
4
3
|
export default class FakeStreamOutlet {
|
|
5
4
|
static callsToConstructor = [];
|
|
6
5
|
static callsToPushSample = [];
|
|
7
6
|
static numCallsToDestroy = 0;
|
|
8
|
-
info;
|
|
9
7
|
options;
|
|
10
|
-
constructor(
|
|
11
|
-
FakeStreamOutlet.callsToConstructor.push(
|
|
12
|
-
this.info = info ?? new FakeStreamInfo();
|
|
8
|
+
constructor(options) {
|
|
9
|
+
FakeStreamOutlet.callsToConstructor.push(options);
|
|
13
10
|
this.options = options;
|
|
14
11
|
}
|
|
15
12
|
destroy() {
|
|
16
13
|
FakeStreamOutlet.numCallsToDestroy++;
|
|
17
14
|
}
|
|
18
|
-
pushSample(sample) {
|
|
19
|
-
FakeStreamOutlet.callsToPushSample.push(sample);
|
|
15
|
+
pushSample(sample, timestamp) {
|
|
16
|
+
FakeStreamOutlet.callsToPushSample.push({ sample, timestamp });
|
|
20
17
|
}
|
|
21
18
|
get name() {
|
|
22
19
|
return this.options?.name ?? generateId();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeStreamOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamOutlet/FakeStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"FakeStreamOutlet.js","sourceRoot":"","sources":["../../../src/testDoubles/StreamOutlet/FakeStreamOutlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,UAAU,MAAM,wBAAwB,CAAA;AAQ/C,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAC1B,MAAM,CAAC,kBAAkB,GAAwC,EAAE,CAAA;IAEnE,MAAM,CAAC,iBAAiB,GAGzB,EAAE,CAAA;IAED,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAE5B,OAAO,CAAsB;IAEpC,YAAmB,OAA6B;QAC5C,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAEM,OAAO;QACV,gBAAgB,CAAC,iBAAiB,EAAE,CAAA;IACxC,CAAC;IAEM,UAAU,CAAC,MAAiB,EAAE,SAAkB;QACnD,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,CAAA;IAC7C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,CAAA;IACjD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAA;IACnC,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IACnD,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC3D,CAAC;IAED,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACxD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,CAAA;IACrD,CAAC;IAED,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,CAAA;IAC9C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,CAAA;QACxC,gBAAgB,CAAC,iBAAiB,GAAG,EAAE,CAAA;QACvC,gBAAgB,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAC1C,CAAC"}
|
|
@@ -5,7 +5,7 @@ export default class FakeWebSocketBridge implements WebSocketBridge {
|
|
|
5
5
|
static numCallsToDeactivate: number;
|
|
6
6
|
static numCallsToDestroy: number;
|
|
7
7
|
constructor(options?: WebSocketBridgeConstructorOptions);
|
|
8
|
-
activate(): void
|
|
8
|
+
activate(): Promise<void>;
|
|
9
9
|
deactivate(): void;
|
|
10
10
|
destroy(): void;
|
|
11
11
|
static resetTestDouble(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,QAAQ;
|
|
1
|
+
{"version":3,"file":"FakeWebSocketBridge.js","sourceRoot":"","sources":["../../../src/testDoubles/WebSocketBridge/FakeWebSocketBridge.ts"],"names":[],"mappings":"AACA,OAAO,kBAGN,MAAM,kCAAkC,CAAA;AACzC,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,mBAAmB,MAAM,sCAAsC,CAAA;AAEtE,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAC7B,MAAM,CAAC,kBAAkB,GAG1B,EAAE,CAAA;IAED,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAA;IAEnC,YAAmB,OAA2C;QAC1D,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAEM,KAAK,CAAC,QAAQ;QACjB,mBAAmB,CAAC,kBAAkB,EAAE,CAAA;IAC5C,CAAC;IAEM,UAAU;QACb,mBAAmB,CAAC,oBAAoB,EAAE,CAAA;IAC9C,CAAC;IAEM,OAAO;QACV,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAC3C,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,sBAAsB,EAAE,CAAA;IACjC,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,kBAAkB,CAAC,EAAE,GAAG,aAA4C,CAAA;QACpE,aAAa,CAAC,eAAe,EAAE,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACjC,kBAAkB,CAAC,GAAG;YAClB,mBAAwD,CAAA;QAC5D,mBAAmB,CAAC,eAAe,EAAE,CAAA;IACzC,CAAC"}
|