Switch to monorepo setup

This commit is contained in:
Jon Staab
2024-03-25 14:22:33 -07:00
parent 74b926e227
commit 54e0775453
49 changed files with 3677 additions and 2321 deletions
+57
View File
@@ -0,0 +1,57 @@
export class Queue {
timeout?: number
messages: any[] = []
clear() {
this.messages = []
}
push(message: any) {
this.messages.push(message)
this.enqueueWork()
}
handle(message: any) {
throw new Error("Not implemented")
}
shouldSend(message: any) {
return true
}
doWork() {
for (let i = 0; i < 10; i++) {
if (this.messages.length === 0) {
break
}
// Pop the messages one at a time so handle can modify the queue
const [message] = this.messages.splice(0, 1)
if (this.shouldSend(message)) {
this.handle(message)
} else {
this.messages.push(message)
}
}
this.timeout = undefined
this.enqueueWork()
}
enqueueWork() {
if (this.timeout) {
return
}
if (this.messages.length === 0) {
return
}
this.timeout = setTimeout(() => this.doWork(), 100)
}
stop() {
clearTimeout(this.timeout)
}
}