refactor: cleanup get composite schedule code
[e-mobility-charging-stations-simulator.git] / src / utils / AsyncLock.ts
index 6b16b0f8a491622a91c8eed844ba5f30bc70b02f..9c0584565e3ecb80897b2ad32418a1afdb0cc888 100644 (file)
@@ -1,6 +1,6 @@
 // Partial Copyright Jerome Benoit. 2021-2023. All Rights Reserved.
 
-import { Queue } from 'mnemonist';
+import Queue from 'mnemonist/queue.js';
 
 export enum AsyncLockType {
   configuration = 'configuration',
@@ -25,7 +25,7 @@ export class AsyncLock {
       asyncLock.acquired = true;
       return;
     }
-    return new Promise((resolve) => {
+    return new Promise<void>((resolve) => {
       asyncLock.resolveQueue.enqueue(resolve);
     });
   }
@@ -36,8 +36,8 @@ export class AsyncLock {
       asyncLock.acquired = false;
       return;
     }
-    const queuedResolve = asyncLock.resolveQueue.dequeue();
-    return new Promise((resolve) => {
+    const queuedResolve = asyncLock.resolveQueue.dequeue()!;
+    return new Promise<void>((resolve) => {
       queuedResolve();
       resolve();
     });
@@ -47,6 +47,6 @@ export class AsyncLock {
     if (!AsyncLock.asyncLocks.has(type)) {
       AsyncLock.asyncLocks.set(type, new AsyncLock());
     }
-    return AsyncLock.asyncLocks.get(type);
+    return AsyncLock.asyncLocks.get(type)!;
   }
 }