Files
tickte-system/src/lib/throttleRuns.js
T
ClaudeandClaude Opus 5.5 c262268015 Projekte: neue Gitea-Repos beim Oeffnen der Projekte-Seite abholen; Review-Kleinigkeiten
- Projekte-Seite holt neue/archivierte Repos selbst ab (vorher bis zu 10 Minuten unsichtbar)
- Import-Drossel: nach einem Fehler sofort neuer Versuch
- Zuordnen-Assistent nennt den Status einer vorhandenen Preview
- Ticket "Neues Projekt": ungueltige Subdomain wird abgewiesen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:33:40 +00:00

20 lines
764 B
JavaScript

// Ein Aufruf hoechstens alle `maxAgeMs`: ein laufender Aufruf wird geteilt, danach liefert die
// Funktion bis zum Ablauf null (uebersprungen). Nach einem Fehler darf sofort neu versucht
// werden (sonst verschwand der Hinweis und der Abgleich fiel eine Minute lang still aus).
// `now` nur fuer Tests.
export function throttleRuns(run, maxAgeMs) {
let pending = null
let doneAt = 0
return ({ now = Date.now() } = {}) => {
if (pending) return pending
if (doneAt && now - doneAt < maxAgeMs) return Promise.resolve(null)
pending = Promise.resolve()
.then(run)
.then(
(result) => { doneAt = Date.now(); pending = null; return result },
(err) => { doneAt = 0; pending = null; throw err }
)
return pending
}
}