import type { AdminProductVariant, StoreProduct } from '@medusajs/types'; type Product = { metadata?: { analysisElementMedusaProductIds?: string; } | null; variant?: { metadata?: { analysisElementMedusaProductIds?: string; } | null; } | null; } | null; export const getAnalysisElementMedusaProductIds = ( products: (Pick & { variant?: Pick; })[], ) => { if (!products) { return []; } const mapped = products .flatMap((product) => { const value = ( product as Product )?.metadata?.analysisElementMedusaProductIds?.replaceAll("'", '"'); const value_variant = ( product as Product )?.variant?.metadata?.analysisElementMedusaProductIds?.replaceAll( "'", '"', ); const result: string[] = []; try { if (value) { result.push(...JSON.parse(value as string)); } } catch (e) { console.error( 'Failed to parse analysisElementMedusaProductIds from analysis package variant, possibly invalid format', e, ); } try { if (value_variant) { result.push(...JSON.parse(value_variant as string)); } } catch (e) { console.error( 'Failed to parse analysisElementMedusaProductIds from analysis package, possibly invalid format', e, ); } return result; }) .filter(Boolean) as string[]; return [...new Set(mapped)]; };