import assert from "assert"; import { RawEvent, NormalizedEvent } from "../../types"; export default (event: RawEvent): NormalizedEvent<"segment"> => { assert(event, `Segment:group null event: ${event}`); assert( event.messageId, `Segment:group event is missing the required field messageId ${event}` ); assert( event.timestamp, `Segment:group event is missing the required field timestamp ${event}` ); const traits = event.traits || {}; // https://segment.com/docs/spec/group/ return { id: `segment|${event.messageId}`, ts: Date.parse(event.timestamp), user_info: { source_user_id: null, user_id: event.userId || null, name: null, email: null, title: null, birthday: null, company: { name: null, id: null, industry: null, employee_count: null, plan: null }, created_at: null, age: null, gender: null, website: null, ip: null, avatar: null, nickname: null, phone: null, city: null, country: null, postal_code: null, region: null, address_line1: null, continent_code: null, address_line2: null, country_code: null, timezone: null, user_agent: null, is_employee: null, custom_attributes: Object.keys(traits).length ? JSON.stringify({ "segment|group": { _ts: Date.parse(event.timestamp), ...traits, _group_id: event.groupId } }) : null }, text: `Added to group ${traits.name || event.groupId}`, href: null, is_bad: false, direction: null, source: "segment", stream: "group" }; };