import type { RumEvent, RumEventDomainContext } from '@datadog/browser-rum'; const SERVICE_REGEX = /unpkg\.servicetitan\.com\/@servicetitan\/(?[\w-]+)(?:@(?\d+\.\d+\.\d+(?:-[\w.]+)?))?/; function parseService(event: RumEvent, input: string | undefined) { const match = input?.match(SERVICE_REGEX); const service = match?.groups?.service; const version = match?.groups?.version; if (service) { event.service = service; event.version = version ?? 'unknown'; return true; } return false; } /** * See https://docs.datadoghq.com/real_user_monitoring/browser/advanced_configuration/?tab=npm#micro-frontend */ export function enrichEvent(event: RumEvent, context: RumEventDomainContext): void { const stack = (context && 'handlingStack' in context ? context.handlingStack : undefined) ?? (event.type === 'error' ? event.error?.stack : undefined); const message = event.type === 'error' ? event.error?.message : undefined; const url = event.type === 'resource' ? event.resource?.url : undefined; for (const source of [stack, message, url]) { if (parseService(event, source)) { break; } } }