MCPcopy Create free account
hub / github.com/AnukarOP/claude-code-leaked / sequential

Function sequential

source code/utils/sequential.ts:21–58  ·  view source on GitHub ↗
(
  fn: (...args: T) => Promise<R>,
)

Source from the content-addressed store, hash-verified

19 * @returns A wrapped version of the function that executes calls sequentially
20 */
21export function sequential<T extends unknown[], R>(
22 fn: (...args: T) => Promise<R>,
23): (...args: T) => Promise<R> {
24 const queue: QueueItem<T, R>[] = []
25 let processing = false
26
27 async function processQueue(): Promise<void> {
28 if (processing) return
29 if (queue.length === 0) return
30
31 processing = true
32
33 while (queue.length > 0) {
34 const { args, resolve, reject, context } = queue.shift()!
35
36 try {
37 const result = await fn.apply(context, args)
38 resolve(result)
39 } catch (error) {
40 reject(error)
41 }
42 }
43
44 processing = false
45
46 // Check if new items were added while we were processing
47 if (queue.length > 0) {
48 void processQueue()
49 }
50 }
51
52 return function (this: unknown, ...args: T): Promise<R> {
53 return new Promise((resolve, reject) => {
54 queue.push({ args, resolve, reject, context: this })
55 void processQueue()
56 })
57 }
58}

Callers 5

modelStrings.tsFile · 0.85
magicDocs.tsFile · 0.85
sessionMemory.tsFile · 0.85

Calls 1

processQueueFunction · 0.85

Tested by

no test coverage detected