From 824fd262edd5639adeca2494c54ab66946fb25a9 Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Thu, 18 Dec 2025 17:12:47 -0800 Subject: [PATCH] conversion: fix exports and strengthen IP extraction --- src/lib/conversion/control.ts | 2 +- src/lib/conversion/server.ts | 16 +++++++++++++++- src/lib/index.ts | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/lib/conversion/control.ts b/src/lib/conversion/control.ts index 0d60ca8..e1d822e 100644 --- a/src/lib/conversion/control.ts +++ b/src/lib/conversion/control.ts @@ -58,10 +58,10 @@ export const buildCustomData = (params: Record): CustomData => { */ export type ConversionEventOptions = { eventID: string; - eventSourceURL?: string; actionSource: 'website' | 'app' | 'offline' | 'other'; userData: UserData; customData?: CustomData; + eventSourceURL?: string; }; /** diff --git a/src/lib/conversion/server.ts b/src/lib/conversion/server.ts index 0d17b21..7d10f59 100644 --- a/src/lib/conversion/server.ts +++ b/src/lib/conversion/server.ts @@ -4,6 +4,20 @@ import type { ConversionErrorResponseBody, ConversionRequestBody } from '$lib/ty import { StatusCodes } from 'http-status-codes'; +const getEventIP = (request: Request, getClientAddress: () => string) => { + return ( + request.headers.get('x-forwarded-for') || + request.headers.get('cf-connecting-ip') || + request.headers.get('x-real-ip') || + request.headers.get('x-client-ip') || + request.headers.get('x-cluster-client-ip') || + request.headers.get('x-original-forwarded-for') || + request.headers.get('forwarded-for') || + request.headers.get('forwarded') || + getClientAddress() + ); +}; + export const createConversionRequestHandler: (control: ConversionControl) => RequestHandler = ( control ) => { @@ -12,7 +26,7 @@ export const createConversionRequestHandler: (control: ConversionControl) => Req const body = (await request.json()) as ConversionRequestBody; // Build user data with IP and user agent - const ip = getClientAddress(); + const ip = getEventIP(request, getClientAddress); const ua = request.headers.get('user-agent'); const userData = buildConversionUserData({ diff --git a/src/lib/index.ts b/src/lib/index.ts index f81ee6d..be123e9 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -7,6 +7,7 @@ export type * as fbq from './types/fbq.d.ts'; export { default as MetaPixel, PixelControl } from './MetaPixel.svelte'; export * from './tracking.svelte.ts'; export { default as Umami } from './Umami.svelte'; +export * from './conversion/index.ts'; // set log level to debug if we're in dev mode if (dev) {