Refactor site generation into a modular content pipeline
Deploy website / deploy (push) Successful in 24s

This commit is contained in:
paul committed 2026-09-22 20:51:13 -04:00
1 parent 0f69028d4a
commit 146d516f24
20 files changed
+826 -427

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
// Keep only the newest generation's result visible to the browser.
export const createRegenerationQueue = ({ generate, onSuccess, onError, delay = 100 }) => {
let timer
let running = false
let revision = 0
let closed = false
const run = async () => {
if (closed || running) return
running = true
const started = revision
try {
await generate()
if (!closed && started === revision) onSuccess()
} catch (error) {
if (!closed && started === revision) onError(error)
} finally {
running = false
if (!closed && started !== revision) schedule()
}
}
const schedule = () => {
clearTimeout(timer)
timer = setTimeout(run, delay)
}
return {
request() {
if (closed) return
revision += 1
schedule()
},
close() {
closed = true
clearTimeout(timer)
},
}
}