{"version":3,"file":"updateEndpoint.mjs","sources":["../../../../../src/providers/pinpoint/apis/updateEndpoint.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { updateEndpoint as clientUpdateEndpoint, } from '../../../awsClients/pinpoint';\nimport { amplifyUuid } from '../../../utils/amplifyUuid';\nimport { getClientInfo } from '../../../utils/getClientInfo';\nimport { cacheEndpointId } from '../utils/cacheEndpointId';\nimport { clearCreatedEndpointId, createEndpointId, } from '../utils/createEndpointId';\nimport { getEndpointId } from '../utils/getEndpointId';\n/**\n * @internal\n */\nexport const updateEndpoint = async ({ address, appId, category, channelType, credentials, identityId, optOut, region, userAttributes, userId, userProfile, userAgentValue, }) => {\n    const endpointId = await getEndpointId(appId, category);\n    // only generate a new endpoint id if one was not found in cache\n    const createdEndpointId = !endpointId\n        ? createEndpointId(appId, category)\n        : undefined;\n    const { customProperties, demographic, email, location, metrics, name, plan, } = userProfile ?? {};\n    // only automatically populate the endpoint with client info and identity id upon endpoint creation to\n    // avoid overwriting the endpoint with these values every time the endpoint is updated\n    const demographicsFromClientInfo = {};\n    const resolvedUserId = createdEndpointId ? (userId ?? identityId) : userId;\n    if (createdEndpointId) {\n        const clientInfo = getClientInfo();\n        demographicsFromClientInfo.appVersion = clientInfo.appVersion;\n        demographicsFromClientInfo.make = clientInfo.make;\n        demographicsFromClientInfo.model = clientInfo.model;\n        demographicsFromClientInfo.modelVersion = clientInfo.version;\n        demographicsFromClientInfo.platform = clientInfo.platform;\n    }\n    const mergedDemographic = {\n        ...demographicsFromClientInfo,\n        ...demographic,\n    };\n    const attributes = {\n        ...(email && { email: [email] }),\n        ...(name && { name: [name] }),\n        ...(plan && { plan: [plan] }),\n        ...customProperties,\n    };\n    const shouldAddDemographics = createdEndpointId || demographic;\n    const shouldAddAttributes = email || customProperties || name || plan;\n    const shouldAddUser = resolvedUserId || userAttributes;\n    const input = {\n        ApplicationId: appId,\n        EndpointId: endpointId ?? createdEndpointId,\n        EndpointRequest: {\n            RequestId: amplifyUuid(),\n            EffectiveDate: new Date().toISOString(),\n            ChannelType: channelType,\n            Address: address,\n            ...(shouldAddAttributes && { Attributes: attributes }),\n            ...(shouldAddDemographics && {\n                Demographic: {\n                    AppVersion: mergedDemographic.appVersion,\n                    Locale: mergedDemographic.locale,\n                    Make: mergedDemographic.make,\n                    Model: mergedDemographic.model,\n                    ModelVersion: mergedDemographic.modelVersion,\n                    Platform: mergedDemographic.platform,\n                    PlatformVersion: mergedDemographic.platformVersion,\n                    Timezone: mergedDemographic.timezone,\n                },\n            }),\n            ...(location && {\n                Location: {\n                    City: location.city,\n                    Country: location.country,\n                    Latitude: location.latitude,\n                    Longitude: location.longitude,\n                    PostalCode: location.postalCode,\n                    Region: location.region,\n                },\n            }),\n            Metrics: metrics,\n            OptOut: optOut,\n            ...(shouldAddUser && {\n                User: {\n                    UserId: resolvedUserId,\n                    UserAttributes: userAttributes,\n                },\n            }),\n        },\n    };\n    try {\n        await clientUpdateEndpoint({ credentials, region, userAgentValue }, input);\n        // if we had to create an endpoint id, we need to now cache it\n        if (createdEndpointId) {\n            await cacheEndpointId(appId, category, createdEndpointId);\n        }\n    }\n    finally {\n        // at this point, we completely reset the behavior so even if the update was unsuccessful\n        // we can just start over with a newly created endpoint id\n        if (createdEndpointId) {\n            clearCreatedEndpointId(appId, category);\n        }\n    }\n};\n"],"names":["clientUpdateEndpoint"],"mappings":"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"}