- Add debounced state updates for title and content (500ms delay) - Immediate UI updates with delayed history saving - Prevent one-letter-per-undo issue - Add cleanup for debounce timers on unmount
26 lines
692 B
JavaScript
26 lines
692 B
JavaScript
// src/middleware/timeout/index.ts
|
|
import { HTTPException } from "../../http-exception.js";
|
|
var defaultTimeoutException = new HTTPException(504, {
|
|
message: "Gateway Timeout"
|
|
});
|
|
var timeout = (duration, exception = defaultTimeoutException) => {
|
|
return async function timeout2(context, next) {
|
|
let timer;
|
|
const timeoutPromise = new Promise((_, reject) => {
|
|
timer = setTimeout(() => {
|
|
reject(typeof exception === "function" ? exception(context) : exception);
|
|
}, duration);
|
|
});
|
|
try {
|
|
await Promise.race([next(), timeoutPromise]);
|
|
} finally {
|
|
if (timer !== void 0) {
|
|
clearTimeout(timer);
|
|
}
|
|
}
|
|
};
|
|
};
|
|
export {
|
|
timeout
|
|
};
|