metatron-open-seo/src/shared/reddit-attribution.ts
2026-05-20 23:36:30 -04:00

25 lines
921 B
TypeScript

import { z } from "zod";
export const redditAttributionSchema = z.object({
clickId: z.string().trim().min(1).max(256).optional(),
uuid: z.string().trim().min(1).max(256).optional(),
landingPage: z.string().trim().min(1).max(2048).optional(),
referrer: z.string().trim().max(2048).optional(),
utmSource: z.string().trim().min(1).max(256).optional(),
utmMedium: z.string().trim().min(1).max(256).optional(),
utmCampaign: z.string().trim().min(1).max(256).optional(),
utmTerm: z.string().trim().min(1).max(256).optional(),
utmContent: z.string().trim().min(1).max(256).optional(),
});
export type RedditAttributionInput = z.infer<typeof redditAttributionSchema>;
export function hasRedditAttribution(input: RedditAttributionInput) {
return Boolean(
input.clickId ||
input.uuid ||
input.utmSource?.toLowerCase() === "reddit" ||
input.referrer?.toLowerCase().includes("reddit."),
);
}