Files
FrenoCorp/node_modules/viem/tempo/internal/concurrent.ts
Michael Freno 7c684a42cc FRE-600: Fix code review blockers
- Consolidated duplicate UndoManagers to single instance
- Fixed connection promise to only resolve on 'connected' status
- Fixed WebSocketProvider import (WebsocketProvider)
- Added proper doc.destroy() cleanup
- Renamed isPresenceInitialized property to avoid conflict

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-25 00:08:01 -04:00

25 lines
797 B
TypeScript

const concurrentCounts = new Map<string, number>()
/**
* Detects if there are concurrent tasks occuring for a given key
* within the same event loop tick. Registers the request, yields to allow
* other concurrent calls to register, then returns whether multiple requests
* were detected.
*
* @example
* ```ts
* const isConcurrent = await Concurrent.detect(address)
* ```
*/
export async function detect(key: string): Promise<boolean> {
concurrentCounts.set(key, (concurrentCounts.get(key) ?? 0) + 1)
await Promise.resolve()
const isConcurrent = (concurrentCounts.get(key) ?? 0) > 1
queueMicrotask(() => {
const count = concurrentCounts.get(key) ?? 0
if (count <= 1) concurrentCounts.delete(key)
else concurrentCounts.set(key, count - 1)
})
return isConcurrent
}