conversion: fix exports and strengthen IP extraction
This commit is contained in:
@@ -58,10 +58,10 @@ export const buildCustomData = (params: Record<string, string>): CustomData => {
|
|||||||
*/
|
*/
|
||||||
export type ConversionEventOptions = {
|
export type ConversionEventOptions = {
|
||||||
eventID: string;
|
eventID: string;
|
||||||
eventSourceURL?: string;
|
|
||||||
actionSource: 'website' | 'app' | 'offline' | 'other';
|
actionSource: 'website' | 'app' | 'offline' | 'other';
|
||||||
userData: UserData;
|
userData: UserData;
|
||||||
customData?: CustomData;
|
customData?: CustomData;
|
||||||
|
eventSourceURL?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,6 +4,20 @@ import type { ConversionErrorResponseBody, ConversionRequestBody } from '$lib/ty
|
|||||||
|
|
||||||
import { StatusCodes } from 'http-status-codes';
|
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 = (
|
export const createConversionRequestHandler: (control: ConversionControl) => RequestHandler = (
|
||||||
control
|
control
|
||||||
) => {
|
) => {
|
||||||
@@ -12,7 +26,7 @@ export const createConversionRequestHandler: (control: ConversionControl) => Req
|
|||||||
const body = (await request.json()) as ConversionRequestBody;
|
const body = (await request.json()) as ConversionRequestBody;
|
||||||
|
|
||||||
// Build user data with IP and user agent
|
// Build user data with IP and user agent
|
||||||
const ip = getClientAddress();
|
const ip = getEventIP(request, getClientAddress);
|
||||||
const ua = request.headers.get('user-agent');
|
const ua = request.headers.get('user-agent');
|
||||||
|
|
||||||
const userData = buildConversionUserData({
|
const userData = buildConversionUserData({
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ export type * as fbq from './types/fbq.d.ts';
|
|||||||
export { default as MetaPixel, PixelControl } from './MetaPixel.svelte';
|
export { default as MetaPixel, PixelControl } from './MetaPixel.svelte';
|
||||||
export * from './tracking.svelte.ts';
|
export * from './tracking.svelte.ts';
|
||||||
export { default as Umami } from './Umami.svelte';
|
export { default as Umami } from './Umami.svelte';
|
||||||
|
export * from './conversion/index.ts';
|
||||||
|
|
||||||
// set log level to debug if we're in dev mode
|
// set log level to debug if we're in dev mode
|
||||||
if (dev) {
|
if (dev) {
|
||||||
|
|||||||
Reference in New Issue
Block a user