{"version":3,"file":"record.mjs","sources":["../../../../../src/providers/pinpoint/apis/record.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { amplifyUuid } from '../../../utils/amplifyUuid';\nimport { resolveEndpointId } from '../utils';\nimport { SESSION_START_EVENT, SESSION_STOP_EVENT, } from '../../../utils/sessionListener';\nimport { BUFFER_SIZE, FLUSH_INTERVAL, FLUSH_SIZE, RESEND_LIMIT, } from '../utils/constants';\nimport { getEventBuffer } from '../utils/getEventBuffer';\nlet session;\n/**\n * @internal\n */\nexport const record = async ({ appId, category, channelType, credentials, event, identityId, region, userAgentValue, bufferSize, flushInterval, flushSize, resendLimit, }) => {\n    let eventSession = session;\n    const currentTime = new Date();\n    const timestampISOString = currentTime.toISOString();\n    const eventId = amplifyUuid();\n    // Prepare event buffer if required\n    const buffer = getEventBuffer({\n        appId,\n        region,\n        credentials,\n        bufferSize: bufferSize ?? BUFFER_SIZE,\n        flushInterval: flushInterval ?? FLUSH_INTERVAL,\n        flushSize: flushSize ?? FLUSH_SIZE,\n        resendLimit: resendLimit ?? RESEND_LIMIT,\n        identityId,\n        userAgentValue,\n    });\n    const endpointId = await resolveEndpointId({\n        appId,\n        category,\n        channelType,\n        credentials,\n        identityId,\n        region,\n        userAgentValue,\n    });\n    // Generate session if required\n    if (!eventSession || event.name === SESSION_START_EVENT) {\n        const sessionId = amplifyUuid();\n        session = {\n            Id: sessionId,\n            StartTimestamp: timestampISOString,\n        };\n        eventSession = session;\n    }\n    // Terminate session when required\n    if (session && event.name === SESSION_STOP_EVENT) {\n        eventSession = {\n            ...session,\n            StopTimestamp: timestampISOString,\n            Duration: currentTime.getTime() - new Date(session.StartTimestamp).getTime(),\n        };\n        session = undefined;\n    }\n    // Push event to buffer\n    buffer.push({\n        eventId,\n        endpointId,\n        event,\n        session: eventSession,\n        timestamp: timestampISOString,\n        resendLimit: resendLimit ?? RESEND_LIMIT,\n    });\n};\n"],"names":[],"mappings":";;;;;;;;AAAA;AACA;AAMA,IAAI,OAAO;AACX;AACA;AACA;AACY,MAAC,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,GAAG,KAAK;AAC9K,IAAI,IAAI,YAAY,GAAG,OAAO;AAC9B,IAAI,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE;AAClC,IAAI,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,EAAE;AACxD,IAAI,MAAM,OAAO,GAAG,WAAW,EAAE;AACjC;AACA,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC;AAClC,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,QAAQ,WAAW;AACnB,QAAQ,UAAU,EAAE,UAAU,IAAI,WAAW;AAC7C,QAAQ,aAAa,EAAE,aAAa,IAAI,cAAc;AACtD,QAAQ,SAAS,EAAE,SAAS,IAAI,UAAU;AAC1C,QAAQ,WAAW,EAAE,WAAW,IAAI,YAAY;AAChD,QAAQ,UAAU;AAClB,QAAQ,cAAc;AACtB,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC;AAC/C,QAAQ,KAAK;AACb,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,MAAM;AACd,QAAQ,cAAc;AACtB,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;AAC7D,QAAQ,MAAM,SAAS,GAAG,WAAW,EAAE;AACvC,QAAQ,OAAO,GAAG;AAClB,YAAY,EAAE,EAAE,SAAS;AACzB,YAAY,cAAc,EAAE,kBAAkB;AAC9C,SAAS;AACT,QAAQ,YAAY,GAAG,OAAO;AAC9B,IAAI;AACJ;AACA,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACtD,QAAQ,YAAY,GAAG;AACvB,YAAY,GAAG,OAAO;AACtB,YAAY,aAAa,EAAE,kBAAkB;AAC7C,YAAY,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;AACxF,SAAS;AACT,QAAQ,OAAO,GAAG,SAAS;AAC3B,IAAI;AACJ;AACA,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,QAAQ,OAAO;AACf,QAAQ,UAAU;AAClB,QAAQ,KAAK;AACb,QAAQ,OAAO,EAAE,YAAY;AAC7B,QAAQ,SAAS,EAAE,kBAAkB;AACrC,QAAQ,WAAW,EAAE,WAAW,IAAI,YAAY;AAChD,KAAK,CAAC;AACN;;;;"}