export function normalizeCompact(value: unknown): string {
	if (value == null || value === '') return '';
	return String(value)
		.normalize('NFKC')
		.toLowerCase()
		.replace(/[^a-z0-9]/g, '');
}

export function applyProductNormalizedFields(productDoc: Record<string, unknown>): Record<string, unknown> {
	const name = (productDoc.name ?? productDoc.title ?? '') as string;
	productDoc.nameNormalized = normalizeCompact(name);
	productDoc.skuNormalized = normalizeCompact(productDoc.sku);
	const variantSkus = productDoc.variants_sku;
	if (Array.isArray(variantSkus)) {
		productDoc.variantsSkuNormalized = variantSkus.map(normalizeCompact).filter(Boolean);
	}
	return productDoc;
}

export function shouldRunCompactProductSearch(query: string): boolean {
	const raw = String(query ?? '').trim();
	const compactQ = normalizeCompact(raw);
	if (compactQ.length < 2) return false;
	const spaceStripped = raw.toLowerCase().replace(/\s+/g, '');
	return compactQ !== spaceStripped;
}

export function getCompactProductSearchQuery(query: string): string {
	return normalizeCompact(String(query ?? '').trim());
}
