Files
gitbook/packages/gitbook-v2/openNext/queue/middleware.ts
conico974 666e8426e1 External middleware in cloudflare (#3254)
Co-authored-by: Nicolas Dorseuil <nicolas@gitbook.io>
2025-05-30 14:56:00 +02:00

22 lines
833 B
TypeScript

import { trace } from '@/lib/tracing';
import type { Queue } from '@opennextjs/aws/types/overrides.js';
import { getCloudflareContext } from '@opennextjs/cloudflare';
import doQueue from '@opennextjs/cloudflare/overrides/queue/do-queue';
import memoryQueue from '@opennextjs/cloudflare/overrides/queue/memory-queue';
interface Env {
STAGE?: string;
}
export default {
name: 'GitbookISRQueue',
send: async (msg) => {
return trace({ operation: 'gitbookISRQueueSend', name: msg.MessageBody.url }, async () => {
const { ctx, env } = getCloudflareContext();
const hasDurableObject =
(env as Env).STAGE !== 'dev' && (env as Env).STAGE !== 'preview';
ctx.waitUntil(hasDurableObject ? memoryQueue.send(msg) : doQueue.send(msg));
});
},
} satisfies Queue;