add login/sign-up page with dark/light mode

This commit is contained in:
pouyan mehdibeik
2026-04-21 14:58:07 +03:30
parent c75b445f03
commit b30a0a6a89
21147 changed files with 4284238 additions and 2 deletions
+58
View File
@@ -0,0 +1,58 @@
/*
This is a simple promise queue that allows you to limit the number of concurrent promises
that are running at any given time. It's used to limit the number of concurrent
prefetch requests that are being made to the server but could be used for other
things as well.
*/ export class PromiseQueue {
#maxConcurrency;
#runningCount;
#queue;
constructor(maxConcurrency = 5){
this.#maxConcurrency = maxConcurrency;
this.#runningCount = 0;
this.#queue = [];
}
enqueue(promiseFn) {
let taskResolve;
let taskReject;
const taskPromise = new Promise((resolve, reject)=>{
taskResolve = resolve;
taskReject = reject;
});
const task = async ()=>{
try {
this.#runningCount++;
const result = await promiseFn();
taskResolve(result);
} catch (error) {
taskReject(error);
} finally{
this.#runningCount--;
this.#processNext();
}
};
const enqueueResult = {
promiseFn: taskPromise,
task
};
// wonder if we should take a LIFO approach here
this.#queue.push(enqueueResult);
this.#processNext();
return taskPromise;
}
bump(promiseFn) {
const index = this.#queue.findIndex((item)=>item.promiseFn === promiseFn);
if (index > -1) {
const bumpedItem = this.#queue.splice(index, 1)[0];
this.#queue.unshift(bumpedItem);
this.#processNext(true);
}
}
#processNext(forced = false) {
if ((this.#runningCount < this.#maxConcurrency || forced) && this.#queue.length > 0) {
this.#queue.shift()?.task();
}
}
}
//# sourceMappingURL=promise-queue.js.map