const MAX_MESSAGE_ID_LENGTH = 255; const MAX_OCCURRENCE_NAME_LENGTH = 255; // Governed by docs/specs/2026-08-28-sdk-customer-occurrence.md. /** @internal Validates and normalizes an SDK-supplied occurrence name. */ export function parseCustomerOccurrenceName( name: unknown, argumentName: string, ): string { if (typeof name !== "string") { throw new Error(`${argumentName} must be a non-empty string`); } const normalized = name.trim(); if (normalized.length === 0) { throw new Error(`${argumentName} must be a non-empty string`); } if (normalized.length > MAX_OCCURRENCE_NAME_LENGTH) { throw new Error( `${argumentName} must be at most ${MAX_OCCURRENCE_NAME_LENGTH} characters`, ); } return normalized; } /** @internal Validates an SDK-supplied occurrence ID without normalizing it. */ export function parseTrackMessageId(messageId: unknown): string | undefined { if (messageId === undefined) { return undefined; } if (typeof messageId !== "string" || messageId.trim().length === 0) { throw new Error("messageId must be a non-empty string"); } if (messageId.length > MAX_MESSAGE_ID_LENGTH) { throw new Error( `messageId must be at most ${MAX_MESSAGE_ID_LENGTH} characters`, ); } return messageId; }