Make capturing according to serverless

This commit is contained in:
2025-07-06 20:23:54 +03:00
parent 1e099d88ae
commit 963ac7111f
6 changed files with 31 additions and 19 deletions

18
package-lock.json generated
View File

@@ -14,6 +14,7 @@
"@nuxt/image": "^1.10.0",
"@nuxt/ui": "3.0.2",
"@vee-validate/nuxt": "^4.15.0",
"@vercel/functions": "^2.2.3",
"@vueuse/nuxt": "^13.0.0",
"destr": "^2.0.5",
"drizzle-orm": "^0.41.0",
@@ -3872,6 +3873,23 @@
"pathe": "^2.0.1"
}
},
"node_modules/@vercel/functions": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-2.2.3.tgz",
"integrity": "sha512-Z6xwsxM/57/92PLW2HoLLmVw4+Nb5OZzMzDA4qfkksWgG1k5dGV7kvP1TDEOlW3WHjqWtfPJBcd61dE2p0mbxQ==",
"license": "Apache-2.0",
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@aws-sdk/credential-provider-web-identity": "*"
},
"peerDependenciesMeta": {
"@aws-sdk/credential-provider-web-identity": {
"optional": true
}
}
},
"node_modules/@vercel/nft": {
"version": "0.29.2",
"resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.2.tgz",

View File

@@ -16,6 +16,7 @@
"@nuxt/image": "^1.10.0",
"@nuxt/ui": "3.0.2",
"@vee-validate/nuxt": "^4.15.0",
"@vercel/functions": "^2.2.3",
"@vueuse/nuxt": "^13.0.0",
"destr": "^2.0.5",
"drizzle-orm": "^0.41.0",

View File

@@ -54,15 +54,7 @@ export default defineEventHandler(async (event) => {
});
});
posthog.identify({
distinctId: String(user.id),
properties: {
name: user.name,
country: user.country,
},
});
posthog.capture({
posthog.captureImmediate({
distinctId: String(user.id),
event: "content generated",
properties: {

View File

@@ -20,7 +20,7 @@ export default defineEventHandler(async (event) => {
},
});
posthog.identify({
posthog.identifyImmediate({
distinctId: String(user!.id),
properties: {
name: user!.name,
@@ -32,7 +32,7 @@ export default defineEventHandler(async (event) => {
.delete(tables.users)
.where(eq(tables.users.id, get(body, "object_id")));
posthog.capture({
posthog.captureImmediate({
distinctId: get(body, "object_id"),
event: "user deleted",
});

View File

@@ -1,23 +1,24 @@
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,
defaults: runtimeConfig.public.posthogDefaults,
flushAt: 1,
flushInterval: 0,
});
nitroApp.hooks.hook("request", (event) => {
event.context.posthog = posthog;
});
nitroApp.hooks.hook("beforeResponse", async () => {
await posthog.shutdown();
nitroApp.hooks.hook("beforeResponse", () => {
waitUntil(posthog.shutdown());
});
nitroApp.hooks.hook("close", async () => {
await posthog.shutdown();
nitroApp.hooks.hook("close", () => {
waitUntil(posthog.shutdown());
});
});

View File

@@ -82,7 +82,7 @@ export default defineOAuthStravaEventHandler({
user: userPayload,
});
posthog.identify({
posthog.identifyImmediate({
distinctId: String(user!.id),
properties: {
name: user!.name,
@@ -90,7 +90,7 @@ export default defineOAuthStravaEventHandler({
},
});
posthog.capture({
posthog.captureImmediate({
distinctId: String(user!.id),
event: "user logged in",
});