Loading packages/lib/package.json +3 −1 Original line number Diff line number Diff line Loading @@ -39,11 +39,13 @@ "devDependencies": { "@tsconfig/recommended": "^1.0.13", "@types/react": "^19", "@types/react-dom": "^19", "altcha-lib": "^1.4.1", "rolldown": "^1.0.0-rc.18", "typescript": "^5.9.3" }, "peerDependencies": { "react": "^19" "react": "^19", "react-dom": "^19" } } packages/lib/rolldown.config.ts +1 −1 Original line number Diff line number Diff line Loading @@ -16,5 +16,5 @@ export default defineConfig({ format: "esm", }, ], external: [/node:/], external: [/node:/, "react", "react-dom"], }); packages/server/src/api/admin/index.ts +2 −0 Original line number Diff line number Diff line import { Router } from "../lib/router"; import { CanvasAdminEndpoints } from "./canvas"; import { MaintenanceEndpoints } from "./maintenance"; import { ReportEndpoints } from "./reports"; import { RulesEndpoints } from "./rules"; import { SettingsEndpoints } from "./settings"; Loading @@ -15,5 +16,6 @@ export class AdminEndpoints extends Router { this.use("/rules", new RulesEndpoints()); this.use("/users", new UsersEndpoints()); this.use("/settings", new SettingsEndpoints()); this.use("/maintenance", new MaintenanceEndpoints()); } } packages/server/src/api/admin/maintenance.ts 0 → 100644 +14 −0 Original line number Diff line number Diff line import { BullMQ_JobManager } from "../../jobs/bullmq"; import { getLogger } from "../../lib/Logger"; import { Router } from "../lib/router"; const Logger = getLogger(); export class MaintenanceEndpoints extends Router { @Router.handler("post", "/drain_jobs") async drainJobs(req: Router.Request, res: Router.Response) { res.json({ output: await BullMQ_JobManager.maintenance_drainJobs(), }); } } packages/server/src/jobs/bullmq.ts +7 −0 Original line number Diff line number Diff line Loading @@ -21,4 +21,11 @@ export const BullMQ_JobManager = new (class BullMQ_JobManager { setupWorker(Job_Networking.startWorker()); setupWorker(Job_Canvas.startWorker()); } async maintenance_drainJobs() { return await Promise.allSettled([ Job_Networking.drain(), Job_Canvas.drain(), ]); } })(); Loading
packages/lib/package.json +3 −1 Original line number Diff line number Diff line Loading @@ -39,11 +39,13 @@ "devDependencies": { "@tsconfig/recommended": "^1.0.13", "@types/react": "^19", "@types/react-dom": "^19", "altcha-lib": "^1.4.1", "rolldown": "^1.0.0-rc.18", "typescript": "^5.9.3" }, "peerDependencies": { "react": "^19" "react": "^19", "react-dom": "^19" } }
packages/lib/rolldown.config.ts +1 −1 Original line number Diff line number Diff line Loading @@ -16,5 +16,5 @@ export default defineConfig({ format: "esm", }, ], external: [/node:/], external: [/node:/, "react", "react-dom"], });
packages/server/src/api/admin/index.ts +2 −0 Original line number Diff line number Diff line import { Router } from "../lib/router"; import { CanvasAdminEndpoints } from "./canvas"; import { MaintenanceEndpoints } from "./maintenance"; import { ReportEndpoints } from "./reports"; import { RulesEndpoints } from "./rules"; import { SettingsEndpoints } from "./settings"; Loading @@ -15,5 +16,6 @@ export class AdminEndpoints extends Router { this.use("/rules", new RulesEndpoints()); this.use("/users", new UsersEndpoints()); this.use("/settings", new SettingsEndpoints()); this.use("/maintenance", new MaintenanceEndpoints()); } }
packages/server/src/api/admin/maintenance.ts 0 → 100644 +14 −0 Original line number Diff line number Diff line import { BullMQ_JobManager } from "../../jobs/bullmq"; import { getLogger } from "../../lib/Logger"; import { Router } from "../lib/router"; const Logger = getLogger(); export class MaintenanceEndpoints extends Router { @Router.handler("post", "/drain_jobs") async drainJobs(req: Router.Request, res: Router.Response) { res.json({ output: await BullMQ_JobManager.maintenance_drainJobs(), }); } }
packages/server/src/jobs/bullmq.ts +7 −0 Original line number Diff line number Diff line Loading @@ -21,4 +21,11 @@ export const BullMQ_JobManager = new (class BullMQ_JobManager { setupWorker(Job_Networking.startWorker()); setupWorker(Job_Canvas.startWorker()); } async maintenance_drainJobs() { return await Promise.allSettled([ Job_Networking.drain(), Job_Canvas.drain(), ]); } })();