2025-08-04 18:41:00 -04:00

39 lines
1.0 KiB
TypeScript

import type { InsightsEvent } from "./types";
import { getQueryForObject } from "./utils";
export function addQueryId(events: InsightsEvent[]): InsightsEvent[] {
return events.map((event) => {
if (!isValidEventForQueryIdLookup(event)) {
return event;
}
const objectIDsWithInferredQueryID: string[] = [];
const updatedObjectData = event.objectIDs?.map((objectID, i) => {
const objectData = event.objectData?.[i];
if (objectData?.queryID) {
return objectData;
}
const [queryID] = getQueryForObject(event.index, objectID) ?? [];
if (queryID) {
objectIDsWithInferredQueryID.push(objectID);
}
return {
...objectData,
queryID
};
});
if (objectIDsWithInferredQueryID.length === 0) {
return event;
}
return {
...event,
objectData: updatedObjectData,
objectIDsWithInferredQueryID
};
});
}
function isValidEventForQueryIdLookup(event: InsightsEvent): boolean {
return !event.queryID && event.eventType === "conversion";
}