import { Handlers } from "$fresh/server.ts"; import { parse_bool } from "../../server/parse_form.ts"; import { get_task_manager } from "../../server.ts"; import { ExitTarget } from "../../signal_handler.ts"; import { AlreadyClosedError } from "../../task_manager.ts"; export const handler: Handlers = { async POST(req, _ctx) { let force = false; try { const form = await req.formData(); force = await parse_bool(form.get("force"), false); } catch (_) { null; } const h = async () => { const m = get_task_manager(); const aborted = m.aborted; m.abort(); if (force) { m.force_abort(); } if (aborted) return; await m.waiting_unfinished_task(); ExitTarget.dispatchEvent(new Event("close")); m.close(); throw new AlreadyClosedError(); }; setTimeout(h, 1); return new Response("Aborted."); }, };