30 lines
685 B
TypeScript
30 lines
685 B
TypeScript
import { PostHog } from "posthog-node";
|
|
import { waitUntil } from "@vercel/functions";
|
|
export default defineNitroPlugin((nitroApp) => {
|
|
const runtimeConfig = useRuntimeConfig();
|
|
|
|
const posthog = new PostHog(runtimeConfig.public.posthogPublicKey, {
|
|
host: runtimeConfig.public.posthogHost,
|
|
flushAt: 1,
|
|
flushInterval: 0,
|
|
});
|
|
|
|
nitroApp.hooks.hook("request", (event) => {
|
|
event.context.posthog = posthog;
|
|
});
|
|
|
|
nitroApp.hooks.hook("beforeResponse", () => {
|
|
waitUntil(posthog.shutdown());
|
|
});
|
|
|
|
nitroApp.hooks.hook("close", () => {
|
|
waitUntil(posthog.shutdown());
|
|
});
|
|
});
|
|
|
|
declare module "h3" {
|
|
interface H3EventContext {
|
|
posthog: PostHog;
|
|
}
|
|
}
|