@aws-amplify/analytics 7.0.16 → 7.0.17-unstable.0d2aa5d.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/cjs/providers/kinesis/apis/flushEvents.js +8 -6
  2. package/dist/cjs/providers/kinesis/apis/flushEvents.js.map +1 -1
  3. package/dist/cjs/providers/kinesis/apis/record.js +7 -7
  4. package/dist/cjs/providers/kinesis/apis/record.js.map +1 -1
  5. package/dist/cjs/providers/kinesis/utils/getEventBuffer.js +2 -2
  6. package/dist/cjs/providers/kinesis/utils/getEventBuffer.js.map +1 -1
  7. package/dist/cjs/providers/kinesis-firehose/apis/flushEvents.js +10 -8
  8. package/dist/cjs/providers/kinesis-firehose/apis/flushEvents.js.map +1 -1
  9. package/dist/cjs/providers/kinesis-firehose/apis/record.js +8 -8
  10. package/dist/cjs/providers/kinesis-firehose/apis/record.js.map +1 -1
  11. package/dist/cjs/providers/kinesis-firehose/utils/getEventBuffer.js +2 -2
  12. package/dist/cjs/providers/kinesis-firehose/utils/getEventBuffer.js.map +1 -1
  13. package/dist/cjs/providers/personalize/apis/flushEvents.js +10 -8
  14. package/dist/cjs/providers/personalize/apis/flushEvents.js.map +1 -1
  15. package/dist/cjs/providers/personalize/apis/record.js +14 -14
  16. package/dist/cjs/providers/personalize/apis/record.js.map +1 -1
  17. package/dist/cjs/providers/personalize/utils/autoTrackMedia.js +8 -8
  18. package/dist/cjs/providers/personalize/utils/autoTrackMedia.js.map +1 -1
  19. package/dist/cjs/providers/personalize/utils/getEventBuffer.js +2 -2
  20. package/dist/cjs/providers/personalize/utils/getEventBuffer.js.map +1 -1
  21. package/dist/cjs/providers/pinpoint/apis/flushEvents.js +20 -16
  22. package/dist/cjs/providers/pinpoint/apis/flushEvents.js.map +1 -1
  23. package/dist/cjs/providers/pinpoint/apis/identifyUser.js +1 -1
  24. package/dist/cjs/providers/pinpoint/apis/identifyUser.js.map +1 -1
  25. package/dist/cjs/trackers/PageViewTracker.js +2 -4
  26. package/dist/cjs/trackers/PageViewTracker.js.map +1 -1
  27. package/dist/cjs/utils/resolveCredentials.js +1 -1
  28. package/dist/cjs/utils/resolveCredentials.js.map +1 -1
  29. package/dist/esm/apis/disable.mjs +1 -1
  30. package/dist/esm/apis/enable.mjs +1 -1
  31. package/dist/esm/providers/kinesis/apis/flushEvents.mjs +5 -3
  32. package/dist/esm/providers/kinesis/apis/flushEvents.mjs.map +1 -1
  33. package/dist/esm/providers/kinesis/apis/record.mjs +3 -3
  34. package/dist/esm/providers/kinesis/apis/record.mjs.map +1 -1
  35. package/dist/esm/providers/kinesis/types/inputs.d.ts +2 -2
  36. package/dist/esm/providers/kinesis/utils/getEventBuffer.mjs +3 -3
  37. package/dist/esm/providers/kinesis/utils/getEventBuffer.mjs.map +1 -1
  38. package/dist/esm/providers/kinesis-firehose/apis/flushEvents.mjs +5 -3
  39. package/dist/esm/providers/kinesis-firehose/apis/flushEvents.mjs.map +1 -1
  40. package/dist/esm/providers/kinesis-firehose/apis/record.mjs +3 -3
  41. package/dist/esm/providers/kinesis-firehose/apis/record.mjs.map +1 -1
  42. package/dist/esm/providers/kinesis-firehose/types/buffer.d.ts +1 -1
  43. package/dist/esm/providers/kinesis-firehose/types/inputs.d.ts +2 -2
  44. package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.mjs +3 -3
  45. package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.mjs.map +1 -1
  46. package/dist/esm/providers/personalize/apis/flushEvents.mjs +5 -3
  47. package/dist/esm/providers/personalize/apis/flushEvents.mjs.map +1 -1
  48. package/dist/esm/providers/personalize/apis/record.mjs +3 -3
  49. package/dist/esm/providers/personalize/apis/record.mjs.map +1 -1
  50. package/dist/esm/providers/personalize/types/buffer.d.ts +4 -4
  51. package/dist/esm/providers/personalize/types/inputs.d.ts +2 -2
  52. package/dist/esm/providers/personalize/utils/autoTrackMedia.d.ts +2 -2
  53. package/dist/esm/providers/personalize/utils/autoTrackMedia.mjs +8 -8
  54. package/dist/esm/providers/personalize/utils/autoTrackMedia.mjs.map +1 -1
  55. package/dist/esm/providers/personalize/utils/cachedSession.mjs.map +1 -1
  56. package/dist/esm/providers/personalize/utils/getEventBuffer.mjs +3 -3
  57. package/dist/esm/providers/personalize/utils/getEventBuffer.mjs.map +1 -1
  58. package/dist/esm/providers/pinpoint/apis/configureAutoTrack.mjs +1 -1
  59. package/dist/esm/providers/pinpoint/apis/flushEvents.mjs +18 -14
  60. package/dist/esm/providers/pinpoint/apis/flushEvents.mjs.map +1 -1
  61. package/dist/esm/providers/pinpoint/apis/identifyUser.d.ts +1 -1
  62. package/dist/esm/providers/pinpoint/apis/identifyUser.mjs +2 -2
  63. package/dist/esm/providers/pinpoint/apis/identifyUser.mjs.map +1 -1
  64. package/dist/esm/providers/pinpoint/apis/record.mjs.map +1 -1
  65. package/dist/esm/providers/pinpoint/types/inputs.d.ts +1 -1
  66. package/dist/esm/trackers/PageViewTracker.mjs +2 -4
  67. package/dist/esm/trackers/PageViewTracker.mjs.map +1 -1
  68. package/dist/esm/trackers/SessionTracker.mjs.map +1 -1
  69. package/dist/esm/trackers/SessionTracker.native.mjs.map +1 -1
  70. package/dist/esm/types/inputs.d.ts +3 -3
  71. package/dist/esm/types/kinesis.d.ts +2 -2
  72. package/dist/esm/types/trackers.d.ts +7 -7
  73. package/dist/esm/utils/eventBuffer/types.d.ts +3 -5
  74. package/dist/esm/utils/resolveCredentials.mjs +1 -1
  75. package/dist/esm/utils/resolveCredentials.mjs.map +1 -1
  76. package/dist/esm/utils/userAgent.mjs.map +1 -1
  77. package/package.json +110 -110
  78. package/src/errors/assertValidationError.ts +1 -1
  79. package/src/providers/kinesis/apis/flushEvents.ts +7 -4
  80. package/src/providers/kinesis/apis/record.ts +6 -3
  81. package/src/providers/kinesis/types/buffer.ts +1 -0
  82. package/src/providers/kinesis/types/inputs.ts +2 -2
  83. package/src/providers/kinesis/utils/getEventBuffer.ts +22 -21
  84. package/src/providers/kinesis/utils/resolveConfig.ts +4 -1
  85. package/src/providers/kinesis-firehose/apis/flushEvents.ts +7 -4
  86. package/src/providers/kinesis-firehose/apis/record.ts +6 -3
  87. package/src/providers/kinesis-firehose/types/buffer.ts +2 -1
  88. package/src/providers/kinesis-firehose/types/inputs.ts +2 -2
  89. package/src/providers/kinesis-firehose/utils/getEventBuffer.ts +23 -21
  90. package/src/providers/kinesis-firehose/utils/resolveConfig.ts +4 -1
  91. package/src/providers/personalize/apis/flushEvents.ts +7 -4
  92. package/src/providers/personalize/apis/record.ts +8 -5
  93. package/src/providers/personalize/types/buffer.ts +6 -4
  94. package/src/providers/personalize/types/inputs.ts +2 -2
  95. package/src/providers/personalize/utils/autoTrackMedia.ts +34 -26
  96. package/src/providers/personalize/utils/cachedSession.ts +5 -5
  97. package/src/providers/personalize/utils/getEventBuffer.ts +24 -20
  98. package/src/providers/personalize/utils/resolveConfig.ts +4 -2
  99. package/src/providers/pinpoint/apis/configureAutoTrack.ts +5 -2
  100. package/src/providers/pinpoint/apis/flushEvents.ts +8 -5
  101. package/src/providers/pinpoint/apis/identifyUser.ts +3 -2
  102. package/src/providers/pinpoint/apis/record.ts +4 -2
  103. package/src/providers/pinpoint/types/inputs.ts +3 -1
  104. package/src/providers/pinpoint/utils/resolveConfig.ts +1 -0
  105. package/src/providers/pinpoint/utils/resolveCredentials.ts +3 -1
  106. package/src/trackers/EventTracker.ts +7 -6
  107. package/src/trackers/PageViewTracker.ts +8 -13
  108. package/src/trackers/SessionTracker.native.ts +6 -5
  109. package/src/trackers/SessionTracker.ts +6 -5
  110. package/src/types/inputs.ts +6 -5
  111. package/src/types/kinesis.ts +2 -2
  112. package/src/types/trackers.ts +8 -8
  113. package/src/utils/eventBuffer/EventBuffer.ts +3 -2
  114. package/src/utils/eventBuffer/types.ts +3 -5
  115. package/src/utils/groupBy.ts +3 -2
  116. package/src/utils/resolveCredentials.ts +4 -2
  117. package/src/utils/trackerConfigHelpers.native.ts +2 -2
  118. package/src/utils/trackerConfigHelpers.ts +2 -2
  119. package/src/utils/trackerHelpers.ts +1 -2
  120. package/src/utils/userAgent.ts +1 -1
@@ -1,7 +1,7 @@
1
1
  import { haveCredentialsChanged } from '@aws-amplify/core/internals/utils';
2
2
  import { FirehoseClient, PutRecordBatchCommand } from '@aws-sdk/client-firehose';
3
- import '../../../errors/validation.mjs';
4
3
  import '@aws-amplify/core';
4
+ import '../../../errors/validation.mjs';
5
5
  import { groupBy } from '../../../utils/groupBy.mjs';
6
6
  import { EventBuffer } from '../../../utils/eventBuffer/EventBuffer.mjs';
7
7
  import '../../../trackers/EventTracker.mjs';
@@ -29,7 +29,7 @@ const createPutRecordsBatchCommand = (streamName, events) => new PutRecordBatchC
29
29
  const submitEvents = async (events, client, resendLimit) => {
30
30
  const groupedByStreamName = Object.entries(groupBy(event => event.streamName, events));
31
31
  const requests = groupedByStreamName
32
- .map(([streamName, events]) => createPutRecordsBatchCommand(streamName, events))
32
+ .map(([streamName, groupedEvents]) => createPutRecordsBatchCommand(streamName, groupedEvents))
33
33
  .map(command => client.send(command));
34
34
  const responses = await Promise.allSettled(requests);
35
35
  const failedEvents = responses
@@ -59,7 +59,7 @@ const getEventBuffer = ({ region, credentials, identityId, bufferSize, flushSize
59
59
  credentials,
60
60
  customUserAgent: userAgentValue,
61
61
  }),
62
- credentials
62
+ credentials,
63
63
  ];
64
64
  }
65
65
  const [firehoseClient] = cachedClients[sessionIdentityKey];
@@ -1 +1 @@
1
- {"version":3,"file":"getEventBuffer.mjs","sources":["../../../../../src/providers/kinesis-firehose/utils/getEventBuffer.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { haveCredentialsChanged } from '@aws-amplify/core/internals/utils';\nimport { FirehoseClient, PutRecordBatchCommand, } from '@aws-sdk/client-firehose';\nimport { EventBuffer, groupBy } from '../../../utils';\n/**\n * These Records hold cached event buffers and AWS clients.\n * The hash key is determined by the region and session,\n * consisting of a combined value comprising [region, sessionToken, identityId].\n *\n * Only one active session should exist at any given moment.\n * When a new session is initiated, the previous ones should be released.\n * */\nconst eventBufferMap = {};\nconst cachedClients = {};\nconst createPutRecordsBatchCommand = (streamName, events) => new PutRecordBatchCommand({\n DeliveryStreamName: streamName,\n Records: events.map(event => ({\n Data: event.event,\n })),\n});\nconst submitEvents = async (events, client, resendLimit) => {\n const groupedByStreamName = Object.entries(groupBy(event => event.streamName, events));\n const requests = groupedByStreamName\n .map(([streamName, events]) => createPutRecordsBatchCommand(streamName, events))\n .map(command => client.send(command));\n const responses = await Promise.allSettled(requests);\n const failedEvents = responses\n .map((response, i) => response.status === 'rejected' ? groupedByStreamName[i][1] : [])\n .flat();\n return resendLimit\n ? failedEvents\n .filter(event => event.retryCount < resendLimit)\n .map(event => ({ ...event, retryCount: event.retryCount + 1 }))\n .sort((a, b) => a.timestamp - b.timestamp)\n : [];\n};\nexport const getEventBuffer = ({ region, credentials, identityId, bufferSize, flushSize, flushInterval, resendLimit, userAgentValue, }) => {\n const sessionIdentityKey = [region, identityId].filter(id => !!id).join('-');\n const [cachedClient, cachedCredentials] = cachedClients[sessionIdentityKey] ?? [];\n let credentialsHaveChanged = false;\n // Check if credentials have changed for the cached client\n if (cachedClient) {\n credentialsHaveChanged = haveCredentialsChanged(cachedCredentials, credentials);\n }\n if (!eventBufferMap[sessionIdentityKey] || credentialsHaveChanged) {\n const getClient = () => {\n if (!cachedClient || credentialsHaveChanged) {\n cachedClients[sessionIdentityKey] = [\n new FirehoseClient({\n region,\n credentials,\n customUserAgent: userAgentValue,\n }),\n credentials\n ];\n }\n const [firehoseClient] = cachedClients[sessionIdentityKey];\n return events => submitEvents(events, firehoseClient, resendLimit);\n };\n eventBufferMap[sessionIdentityKey] =\n new EventBuffer({\n bufferSize,\n flushSize,\n flushInterval,\n }, getClient);\n const releaseSessionKeys = Object.keys(eventBufferMap).filter(key => key !== sessionIdentityKey);\n for (const releaseSessionKey of releaseSessionKeys) {\n eventBufferMap[releaseSessionKey].flushAll().finally(() => {\n eventBufferMap[releaseSessionKey].release();\n delete eventBufferMap[releaseSessionKey];\n delete cachedClients[releaseSessionKey];\n });\n }\n }\n return eventBufferMap[sessionIdentityKey];\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getEventBuffer.mjs","sources":["../../../../../src/providers/kinesis-firehose/utils/getEventBuffer.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { haveCredentialsChanged, } from '@aws-amplify/core/internals/utils';\nimport { FirehoseClient, PutRecordBatchCommand, } from '@aws-sdk/client-firehose';\nimport { EventBuffer, groupBy } from '../../../utils';\n/**\n * These Records hold cached event buffers and AWS clients.\n * The hash key is determined by the region and session,\n * consisting of a combined value comprising [region, sessionToken, identityId].\n *\n * Only one active session should exist at any given moment.\n * When a new session is initiated, the previous ones should be released.\n * */\nconst eventBufferMap = {};\nconst cachedClients = {};\nconst createPutRecordsBatchCommand = (streamName, events) => new PutRecordBatchCommand({\n DeliveryStreamName: streamName,\n Records: events.map(event => ({\n Data: event.event,\n })),\n});\nconst submitEvents = async (events, client, resendLimit) => {\n const groupedByStreamName = Object.entries(groupBy(event => event.streamName, events));\n const requests = groupedByStreamName\n .map(([streamName, groupedEvents]) => createPutRecordsBatchCommand(streamName, groupedEvents))\n .map(command => client.send(command));\n const responses = await Promise.allSettled(requests);\n const failedEvents = responses\n .map((response, i) => response.status === 'rejected' ? groupedByStreamName[i][1] : [])\n .flat();\n return resendLimit\n ? failedEvents\n .filter(event => event.retryCount < resendLimit)\n .map(event => ({ ...event, retryCount: event.retryCount + 1 }))\n .sort((a, b) => a.timestamp - b.timestamp)\n : [];\n};\nexport const getEventBuffer = ({ region, credentials, identityId, bufferSize, flushSize, flushInterval, resendLimit, userAgentValue, }) => {\n const sessionIdentityKey = [region, identityId].filter(id => !!id).join('-');\n const [cachedClient, cachedCredentials] = cachedClients[sessionIdentityKey] ?? [];\n let credentialsHaveChanged = false;\n // Check if credentials have changed for the cached client\n if (cachedClient) {\n credentialsHaveChanged = haveCredentialsChanged(cachedCredentials, credentials);\n }\n if (!eventBufferMap[sessionIdentityKey] || credentialsHaveChanged) {\n const getClient = () => {\n if (!cachedClient || credentialsHaveChanged) {\n cachedClients[sessionIdentityKey] = [\n new FirehoseClient({\n region,\n credentials,\n customUserAgent: userAgentValue,\n }),\n credentials,\n ];\n }\n const [firehoseClient] = cachedClients[sessionIdentityKey];\n return events => submitEvents(events, firehoseClient, resendLimit);\n };\n eventBufferMap[sessionIdentityKey] =\n new EventBuffer({\n bufferSize,\n flushSize,\n flushInterval,\n }, getClient);\n const releaseSessionKeys = Object.keys(eventBufferMap).filter(key => key !== sessionIdentityKey);\n for (const releaseSessionKey of releaseSessionKeys) {\n eventBufferMap[releaseSessionKey].flushAll().finally(() => {\n eventBufferMap[releaseSessionKey].release();\n delete eventBufferMap[releaseSessionKey];\n delete cachedClients[releaseSessionKey];\n });\n }\n }\n return eventBufferMap[sessionIdentityKey];\n};\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
+ import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
2
+ import { ConsoleLogger } from '@aws-amplify/core';
1
3
  import { getEventBuffer } from '../utils/getEventBuffer.mjs';
2
4
  import { resolveConfig } from '../utils/resolveConfig.mjs';
3
5
  import '../utils/autoTrackMedia.mjs';
4
- import { ConsoleLogger } from '@aws-amplify/core';
5
- import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
6
6
  import { resolveCredentials } from '../../../utils/resolveCredentials.mjs';
7
7
  import '../../../utils/eventBuffer/EventBuffer.mjs';
8
8
  import { getAnalyticsUserAgentString } from '../../../utils/userAgent.mjs';
@@ -34,7 +34,9 @@ const flushEvents = () => {
34
34
  userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
35
35
  }))
36
36
  .then(eventBuffer => eventBuffer.flushAll())
37
- .catch(e => logger.warn('Failed to flush events', e));
37
+ .catch(e => {
38
+ logger.warn('Failed to flush events', e);
39
+ });
38
40
  };
39
41
 
40
42
  export { flushEvents };
@@ -1 +1 @@
1
- {"version":3,"file":"flushEvents.mjs","sources":["../../../../../src/providers/personalize/apis/flushEvents.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { getEventBuffer, resolveConfig } from '../utils';\nimport { getAnalyticsUserAgentString, resolveCredentials, } from '../../../utils';\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nconst logger = new ConsoleLogger('Personalize');\n/**\n * Flushes all buffered Personalize events to the service.\n *\n * @note\n * This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking\n * this API may not be included in the flush.\n */\nexport const flushEvents = () => {\n const { region, flushSize, bufferSize, flushInterval } = resolveConfig();\n resolveCredentials()\n .then(({ credentials, identityId }) => getEventBuffer({\n region,\n flushSize,\n flushInterval,\n bufferSize,\n credentials,\n identityId,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n }))\n .then(eventBuffer => eventBuffer.flushAll())\n .catch(e => logger.warn('Failed to flush events', e));\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAKA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,MAAM;AACjC,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAAC;AAC7E,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,cAAc,CAAC;AAC9D,QAAQ,MAAM;AACd,QAAQ,SAAS;AACjB,QAAQ,aAAa;AACrB,QAAQ,UAAU;AAClB,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC3E,KAAK,CAAC,CAAC;AACP,SAAS,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;AACpD,SAAS,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D;;;;"}
1
+ {"version":3,"file":"flushEvents.mjs","sources":["../../../../../src/providers/personalize/apis/flushEvents.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { getEventBuffer, resolveConfig } from '../utils';\nimport { getAnalyticsUserAgentString, resolveCredentials, } from '../../../utils';\nconst logger = new ConsoleLogger('Personalize');\n/**\n * Flushes all buffered Personalize events to the service.\n *\n * @note\n * This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking\n * this API may not be included in the flush.\n */\nexport const flushEvents = () => {\n const { region, flushSize, bufferSize, flushInterval } = resolveConfig();\n resolveCredentials()\n .then(({ credentials, identityId }) => getEventBuffer({\n region,\n flushSize,\n flushInterval,\n bufferSize,\n credentials,\n identityId,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n }))\n .then(eventBuffer => eventBuffer.flushAll())\n .catch(e => {\n logger.warn('Failed to flush events', e);\n });\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAKA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,MAAM;AACjC,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAAC;AAC7E,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,cAAc,CAAC;AAC9D,QAAQ,MAAM;AACd,QAAQ,SAAS;AACjB,QAAQ,aAAa;AACrB,QAAQ,UAAU;AAClB,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC3E,KAAK,CAAC,CAAC;AACP,SAAS,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;AACpD,SAAS,KAAK,CAAC,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,CAAC;AACP;;;;"}
@@ -1,3 +1,5 @@
1
+ import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
2
+ import { ConsoleLogger } from '@aws-amplify/core';
1
3
  import { getEventBuffer } from '../utils/getEventBuffer.mjs';
2
4
  import { resolveConfig } from '../utils/resolveConfig.mjs';
3
5
  import { autoTrackMedia } from '../utils/autoTrackMedia.mjs';
@@ -10,9 +12,7 @@ import { getAnalyticsUserAgentString } from '../../../utils/userAgent.mjs';
10
12
  import '../../../trackers/EventTracker.mjs';
11
13
  import '../../../trackers/PageViewTracker.mjs';
12
14
  import '../../../trackers/SessionTracker.mjs';
13
- import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
14
15
  import '../../../errors/validation.mjs';
15
- import { ConsoleLogger } from '@aws-amplify/core';
16
16
 
17
17
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
18
18
  // SPDX-License-Identifier: Apache-2.0
@@ -55,7 +55,7 @@ const record = ({ userId, eventId, eventType, properties, }) => {
55
55
  if (eventType === IDENTIFY_EVENT_TYPE) {
56
56
  updateCachedSession(typeof properties.userId === 'string' ? properties.userId : '', cachedSessionId, cachedUserId);
57
57
  }
58
- else if (!!userId) {
58
+ else if (userId) {
59
59
  updateCachedSession(userId, cachedSessionId, cachedUserId);
60
60
  }
61
61
  const { sessionId: updatedSessionId, userId: updatedUserId } = await resolveCachedSession();
@@ -1 +1 @@
1
- {"version":3,"file":"record.mjs","sources":["../../../../../src/providers/personalize/apis/record.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { autoTrackMedia, getEventBuffer, resolveCachedSession, resolveConfig, updateCachedSession, } from '../utils';\nimport { getAnalyticsUserAgentString, isAnalyticsEnabled, resolveCredentials, } from '../../../utils';\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { IDENTIFY_EVENT_TYPE, MEDIA_AUTO_TRACK_EVENT_TYPE, } from '../utils/constants';\nconst logger = new ConsoleLogger('Personalize');\n/**\n * Record one analytic event and send it to Personalize. Events will be buffered and periodically sent to Amazon\n * Personalize.\n *\n * For more examples, you can refer to {@link https://docs.amplify.aws/javascript/build-a-backend/more-features/analytics/personalize-recommendations/#working-with-the-api the API usage guidance.}\n *\n * @param input The input object used to construct the request.\n *\n * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect.\n *\n * @example\n * ```ts\n * // Record an `Identify` event to Personalize.\n * record({\n * eventType: \"Identify\",\n * properties: {\n * userId: \"<USER_ID>\"\n * }\n * });\n * ```\n * @param input - The event to record.\n *\n * @returns void\n */\nexport const record = ({ userId, eventId, eventType, properties, }) => {\n if (!isAnalyticsEnabled()) {\n logger.debug('Analytics is disabled, event will not be recorded.');\n return;\n }\n const { region, trackingId, bufferSize, flushSize, flushInterval } = resolveConfig();\n resolveCredentials()\n .then(async ({ credentials, identityId }) => {\n const timestamp = Date.now();\n const { sessionId: cachedSessionId, userId: cachedUserId } = await resolveCachedSession();\n if (eventType === IDENTIFY_EVENT_TYPE) {\n updateCachedSession(typeof properties.userId === 'string' ? properties.userId : '', cachedSessionId, cachedUserId);\n }\n else if (!!userId) {\n updateCachedSession(userId, cachedSessionId, cachedUserId);\n }\n const { sessionId: updatedSessionId, userId: updatedUserId } = await resolveCachedSession();\n const eventBuffer = getEventBuffer({\n region,\n flushSize,\n flushInterval,\n bufferSize,\n credentials,\n identityId,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n });\n if (eventType === MEDIA_AUTO_TRACK_EVENT_TYPE) {\n autoTrackMedia({\n trackingId,\n sessionId: updatedSessionId,\n userId: updatedUserId,\n event: {\n eventId,\n eventType,\n properties,\n },\n }, eventBuffer);\n }\n else {\n eventBuffer.append({\n trackingId,\n sessionId: updatedSessionId,\n userId: updatedUserId,\n event: {\n eventId,\n eventType,\n properties,\n },\n timestamp,\n });\n }\n if (eventBuffer.length >= bufferSize) {\n eventBuffer.flushAll();\n }\n })\n .catch(e => {\n logger.warn('Failed to record event.', e);\n });\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.mjs","sources":["../../../../../src/providers/personalize/apis/record.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { autoTrackMedia, getEventBuffer, resolveCachedSession, resolveConfig, updateCachedSession, } from '../utils';\nimport { getAnalyticsUserAgentString, isAnalyticsEnabled, resolveCredentials, } from '../../../utils';\nimport { IDENTIFY_EVENT_TYPE, MEDIA_AUTO_TRACK_EVENT_TYPE, } from '../utils/constants';\nconst logger = new ConsoleLogger('Personalize');\n/**\n * Record one analytic event and send it to Personalize. Events will be buffered and periodically sent to Amazon\n * Personalize.\n *\n * For more examples, you can refer to {@link https://docs.amplify.aws/javascript/build-a-backend/more-features/analytics/personalize-recommendations/#working-with-the-api the API usage guidance.}\n *\n * @param input The input object used to construct the request.\n *\n * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect.\n *\n * @example\n * ```ts\n * // Record an `Identify` event to Personalize.\n * record({\n * eventType: \"Identify\",\n * properties: {\n * userId: \"<USER_ID>\"\n * }\n * });\n * ```\n * @param input - The event to record.\n *\n * @returns void\n */\nexport const record = ({ userId, eventId, eventType, properties, }) => {\n if (!isAnalyticsEnabled()) {\n logger.debug('Analytics is disabled, event will not be recorded.');\n return;\n }\n const { region, trackingId, bufferSize, flushSize, flushInterval } = resolveConfig();\n resolveCredentials()\n .then(async ({ credentials, identityId }) => {\n const timestamp = Date.now();\n const { sessionId: cachedSessionId, userId: cachedUserId } = await resolveCachedSession();\n if (eventType === IDENTIFY_EVENT_TYPE) {\n updateCachedSession(typeof properties.userId === 'string' ? properties.userId : '', cachedSessionId, cachedUserId);\n }\n else if (userId) {\n updateCachedSession(userId, cachedSessionId, cachedUserId);\n }\n const { sessionId: updatedSessionId, userId: updatedUserId } = await resolveCachedSession();\n const eventBuffer = getEventBuffer({\n region,\n flushSize,\n flushInterval,\n bufferSize,\n credentials,\n identityId,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n });\n if (eventType === MEDIA_AUTO_TRACK_EVENT_TYPE) {\n autoTrackMedia({\n trackingId,\n sessionId: updatedSessionId,\n userId: updatedUserId,\n event: {\n eventId,\n eventType,\n properties,\n },\n }, eventBuffer);\n }\n else {\n eventBuffer.append({\n trackingId,\n sessionId: updatedSessionId,\n userId: updatedUserId,\n event: {\n eventId,\n eventType,\n properties,\n },\n timestamp,\n });\n }\n if (eventBuffer.length >= bufferSize) {\n eventBuffer.flushAll();\n }\n })\n .catch(e => {\n logger.warn('Failed to record event.', e);\n });\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AAMA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,KAAK;AACvE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAC3E,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAAC;AACzF,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;AACrD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACrC,QAAQ,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;AAClG,QAAQ,IAAI,SAAS,KAAK,mBAAmB,EAAE;AAC/C,YAAY,mBAAmB,CAAC,OAAO,UAAU,CAAC,MAAM,KAAK,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;AAC/H,SAAS;AACT,aAAa,IAAI,MAAM,EAAE;AACzB,YAAY,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;AACpG,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC;AAC3C,YAAY,MAAM;AAClB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC/E,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,SAAS,KAAK,2BAA2B,EAAE;AACvD,YAAY,cAAc,CAAC;AAC3B,gBAAgB,UAAU;AAC1B,gBAAgB,SAAS,EAAE,gBAAgB;AAC3C,gBAAgB,MAAM,EAAE,aAAa;AACrC,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,OAAO;AAC3B,oBAAoB,SAAS;AAC7B,oBAAoB,UAAU;AAC9B,iBAAiB;AACjB,aAAa,EAAE,WAAW,CAAC,CAAC;AAC5B,SAAS;AACT,aAAa;AACb,YAAY,WAAW,CAAC,MAAM,CAAC;AAC/B,gBAAgB,UAAU;AAC1B,gBAAgB,SAAS,EAAE,gBAAgB;AAC3C,gBAAgB,MAAM,EAAE,aAAa;AACrC,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,OAAO;AAC3B,oBAAoB,SAAS;AAC7B,oBAAoB,UAAU;AAC9B,iBAAiB;AACjB,gBAAgB,SAAS;AACzB,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,UAAU,EAAE;AAC9C,YAAY,WAAW,CAAC,QAAQ,EAAE,CAAC;AACnC,SAAS;AACT,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK,CAAC,CAAC;AACP;;;;"}
@@ -1,13 +1,13 @@
1
- import { PersonalizeEvent } from './';
2
- import { EventBufferConfig } from '../../../utils';
3
1
  import { AWSCredentials } from '@aws-amplify/core/internals/utils';
4
- export type PersonalizeBufferEvent = {
2
+ import { EventBufferConfig } from '../../../utils';
3
+ import { PersonalizeEvent } from './';
4
+ export interface PersonalizeBufferEvent {
5
5
  trackingId: string;
6
6
  sessionId?: string;
7
7
  userId?: string;
8
8
  event: PersonalizeEvent;
9
9
  timestamp: number;
10
- };
10
+ }
11
11
  export type PersonalizeBufferConfig = EventBufferConfig & {
12
12
  region: string;
13
13
  credentials: AWSCredentials;
@@ -1,7 +1,7 @@
1
- export type PersonalizeEvent = {
1
+ export interface PersonalizeEvent {
2
2
  userId?: string;
3
3
  eventId?: string;
4
4
  eventType: string;
5
5
  properties: Record<string, unknown>;
6
- };
6
+ }
7
7
  export type RecordInput = PersonalizeEvent;
@@ -1,10 +1,10 @@
1
1
  import { EventBuffer } from '../../../utils';
2
2
  import { PersonalizeBufferEvent, PersonalizeEvent } from '../types';
3
- type MediaAutoTrackConfig = {
3
+ interface MediaAutoTrackConfig {
4
4
  trackingId: string;
5
5
  sessionId: string;
6
6
  userId?: string;
7
7
  event: PersonalizeEvent;
8
- };
8
+ }
9
9
  export declare const autoTrackMedia: (config: MediaAutoTrackConfig, eventBuffer: EventBuffer<PersonalizeBufferEvent>) => Promise<void>;
10
10
  export {};
@@ -43,12 +43,11 @@ const startIframeAutoTracking = (element, recordEvent) => {
43
43
  recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());
44
44
  }
45
45
  }, 3000);
46
- element.addEventListener('unload', () => clearInterval(timer));
47
- // @ts-ignore
46
+ element.addEventListener('unload', () => {
47
+ clearInterval(timer);
48
+ });
48
49
  window.onYouTubeIframeAPIReady = () => {
49
- // @ts-ignore
50
50
  delete window.onYouTubeIframeAPIReady;
51
- // @ts-ignore
52
51
  player = new window.YT.Player(element.id, {
53
52
  events: {
54
53
  onStateChange: (event) => {
@@ -57,7 +56,6 @@ const startIframeAutoTracking = (element, recordEvent) => {
57
56
  1: EVENT_TYPE.PLAY,
58
57
  2: EVENT_TYPE.PAUSE,
59
58
  };
60
- // @ts-ignore
61
59
  const eventType = iframeEventMapping[event.data];
62
60
  switch (eventType) {
63
61
  case EVENT_TYPE.ENDED:
@@ -87,7 +85,9 @@ const startHTMLMediaAutoTracking = (element, recordEvent) => {
87
85
  recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());
88
86
  }
89
87
  }, 3000);
90
- element.addEventListener('unload', () => clearInterval(timer));
88
+ element.addEventListener('unload', () => {
89
+ clearInterval(timer);
90
+ });
91
91
  element.addEventListener(HTML5_MEDIA_EVENT.PLAY, () => {
92
92
  isPlaying = true;
93
93
  recordEvent(EVENT_TYPE.PLAY, mediaProperties());
@@ -103,7 +103,7 @@ const startHTMLMediaAutoTracking = (element, recordEvent) => {
103
103
  };
104
104
  const checkElementLoaded = (interval, maxTries) => {
105
105
  let retryCount = 0;
106
- const wait = () => new Promise(r => setTimeout(r, interval));
106
+ const wait = () => new Promise(resolve => setTimeout(resolve, interval));
107
107
  const check = async (elementId) => {
108
108
  if (retryCount >= maxTries) {
109
109
  return false;
@@ -115,7 +115,7 @@ const checkElementLoaded = (interval, maxTries) => {
115
115
  else {
116
116
  retryCount += 1;
117
117
  await wait();
118
- return await check(elementId);
118
+ return check(elementId);
119
119
  }
120
120
  };
121
121
  return check;
@@ -1 +1 @@
1
- {"version":3,"file":"autoTrackMedia.mjs","sources":["../../../../../src/providers/personalize/utils/autoTrackMedia.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isBrowser } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nvar HTML5_MEDIA_EVENT;\n(function (HTML5_MEDIA_EVENT) {\n HTML5_MEDIA_EVENT[\"PLAY\"] = \"play\";\n HTML5_MEDIA_EVENT[\"PAUSE\"] = \"pause\";\n HTML5_MEDIA_EVENT[\"ENDED\"] = \"Ended\";\n})(HTML5_MEDIA_EVENT || (HTML5_MEDIA_EVENT = {}));\nvar MEDIA_TYPE;\n(function (MEDIA_TYPE) {\n MEDIA_TYPE[\"IFRAME\"] = \"IFRAME\";\n MEDIA_TYPE[\"VIDEO\"] = \"VIDEO\";\n MEDIA_TYPE[\"AUDIO\"] = \"AUDIO\";\n})(MEDIA_TYPE || (MEDIA_TYPE = {}));\nvar EVENT_TYPE;\n(function (EVENT_TYPE) {\n EVENT_TYPE[\"PLAY\"] = \"Play\";\n EVENT_TYPE[\"ENDED\"] = \"Ended\";\n EVENT_TYPE[\"PAUSE\"] = \"Pause\";\n EVENT_TYPE[\"TIME_WATCHED\"] = \"TimeWatched\";\n})(EVENT_TYPE || (EVENT_TYPE = {}));\nconst logger = new ConsoleLogger('MediaAutoTrack');\nconst startIframeAutoTracking = (element, recordEvent) => {\n let isPlaying = false;\n let player;\n const mediaProperties = () => {\n const duration = Number(parseFloat(player.getDuration()).toFixed(4));\n const currentTime = Number(parseFloat(player.getCurrentTime()).toFixed(4));\n return {\n duration,\n eventValue: Number((currentTime / duration).toFixed(4)),\n };\n };\n const scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.src = 'https://www.youtube.com/iframe_api';\n document.body.append(scriptElement);\n const timer = setInterval(() => {\n if (isPlaying && player) {\n recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());\n }\n }, 3000);\n element.addEventListener('unload', () => clearInterval(timer));\n // @ts-ignore\n window.onYouTubeIframeAPIReady = () => {\n // @ts-ignore\n delete window.onYouTubeIframeAPIReady;\n // @ts-ignore\n player = new window.YT.Player(element.id, {\n events: {\n onStateChange: (event) => {\n const iframeEventMapping = {\n 0: EVENT_TYPE.ENDED,\n 1: EVENT_TYPE.PLAY,\n 2: EVENT_TYPE.PAUSE,\n };\n // @ts-ignore\n const eventType = iframeEventMapping[event.data];\n switch (eventType) {\n case EVENT_TYPE.ENDED:\n case EVENT_TYPE.PAUSE:\n isPlaying = false;\n break;\n case EVENT_TYPE.PLAY:\n isPlaying = true;\n break;\n }\n if (eventType) {\n recordEvent(eventType, mediaProperties());\n }\n },\n },\n });\n };\n};\nconst startHTMLMediaAutoTracking = (element, recordEvent) => {\n let isPlaying = false;\n const mediaProperties = () => ({\n duration: element.duration,\n eventValue: Number((element.currentTime / element.duration).toFixed(4)),\n });\n const timer = setInterval(() => {\n if (isPlaying) {\n recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());\n }\n }, 3000);\n element.addEventListener('unload', () => clearInterval(timer));\n element.addEventListener(HTML5_MEDIA_EVENT.PLAY, () => {\n isPlaying = true;\n recordEvent(EVENT_TYPE.PLAY, mediaProperties());\n });\n element.addEventListener(HTML5_MEDIA_EVENT.PAUSE, () => {\n isPlaying = false;\n recordEvent(EVENT_TYPE.PAUSE, mediaProperties());\n });\n element.addEventListener(HTML5_MEDIA_EVENT.ENDED, () => {\n isPlaying = false;\n recordEvent(EVENT_TYPE.ENDED, mediaProperties());\n });\n};\nconst checkElementLoaded = (interval, maxTries) => {\n let retryCount = 0;\n const wait = () => new Promise(r => setTimeout(r, interval));\n const check = async (elementId) => {\n if (retryCount >= maxTries) {\n return false;\n }\n const domElement = document.getElementById(elementId);\n if (domElement && domElement.clientHeight) {\n return true;\n }\n else {\n retryCount += 1;\n await wait();\n return await check(elementId);\n }\n };\n return check;\n};\nconst recordEvent = (config, eventBuffer) => (eventType, properties) => {\n // override eventType and merge properties\n eventBuffer.append({\n ...config,\n event: {\n ...config.event,\n eventType,\n properties: {\n ...config.event.properties,\n ...properties,\n },\n },\n timestamp: Date.now(),\n });\n};\nexport const autoTrackMedia = async (config, eventBuffer) => {\n const { eventType, properties } = config.event;\n const { domElementId, ...otherProperties } = properties;\n if (!isBrowser()) {\n logger.debug(`${eventType} only for browser`);\n return;\n }\n if (typeof domElementId === 'string' && !domElementId) {\n logger.debug(\"Missing domElementId field in 'properties' for MediaAutoTrack event type.\");\n return;\n }\n const elementId = domElementId;\n const isElementLoaded = await checkElementLoaded(500, 5)(elementId);\n if (isElementLoaded) {\n const autoTrackConfigWithoutDomElementId = {\n ...config,\n event: {\n ...config.event,\n properties: otherProperties,\n },\n };\n const element = document.getElementById(elementId);\n switch (element?.tagName) {\n case MEDIA_TYPE.IFRAME:\n startIframeAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));\n break;\n case MEDIA_TYPE.VIDEO:\n case MEDIA_TYPE.AUDIO:\n if (element instanceof HTMLMediaElement) {\n startHTMLMediaAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));\n }\n break;\n default:\n logger.debug(`Unsupported DOM element tag: ${element?.tagName}`);\n break;\n }\n }\n else {\n logger.debug('Cannot find the media element.');\n }\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autoTrackMedia.mjs","sources":["../../../../../src/providers/personalize/utils/autoTrackMedia.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isBrowser } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nvar HTML5_MEDIA_EVENT;\n(function (HTML5_MEDIA_EVENT) {\n HTML5_MEDIA_EVENT[\"PLAY\"] = \"play\";\n HTML5_MEDIA_EVENT[\"PAUSE\"] = \"pause\";\n HTML5_MEDIA_EVENT[\"ENDED\"] = \"Ended\";\n})(HTML5_MEDIA_EVENT || (HTML5_MEDIA_EVENT = {}));\nvar MEDIA_TYPE;\n(function (MEDIA_TYPE) {\n MEDIA_TYPE[\"IFRAME\"] = \"IFRAME\";\n MEDIA_TYPE[\"VIDEO\"] = \"VIDEO\";\n MEDIA_TYPE[\"AUDIO\"] = \"AUDIO\";\n})(MEDIA_TYPE || (MEDIA_TYPE = {}));\nvar EVENT_TYPE;\n(function (EVENT_TYPE) {\n EVENT_TYPE[\"PLAY\"] = \"Play\";\n EVENT_TYPE[\"ENDED\"] = \"Ended\";\n EVENT_TYPE[\"PAUSE\"] = \"Pause\";\n EVENT_TYPE[\"TIME_WATCHED\"] = \"TimeWatched\";\n})(EVENT_TYPE || (EVENT_TYPE = {}));\nconst logger = new ConsoleLogger('MediaAutoTrack');\nconst startIframeAutoTracking = (element, recordEvent) => {\n let isPlaying = false;\n let player;\n const mediaProperties = () => {\n const duration = Number(parseFloat(player.getDuration()).toFixed(4));\n const currentTime = Number(parseFloat(player.getCurrentTime()).toFixed(4));\n return {\n duration,\n eventValue: Number((currentTime / duration).toFixed(4)),\n };\n };\n const scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.src = 'https://www.youtube.com/iframe_api';\n document.body.append(scriptElement);\n const timer = setInterval(() => {\n if (isPlaying && player) {\n recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());\n }\n }, 3000);\n element.addEventListener('unload', () => {\n clearInterval(timer);\n });\n window.onYouTubeIframeAPIReady = () => {\n delete window.onYouTubeIframeAPIReady;\n player = new window.YT.Player(element.id, {\n events: {\n onStateChange: (event) => {\n const iframeEventMapping = {\n 0: EVENT_TYPE.ENDED,\n 1: EVENT_TYPE.PLAY,\n 2: EVENT_TYPE.PAUSE,\n };\n const eventType = iframeEventMapping[event.data];\n switch (eventType) {\n case EVENT_TYPE.ENDED:\n case EVENT_TYPE.PAUSE:\n isPlaying = false;\n break;\n case EVENT_TYPE.PLAY:\n isPlaying = true;\n break;\n }\n if (eventType) {\n recordEvent(eventType, mediaProperties());\n }\n },\n },\n });\n };\n};\nconst startHTMLMediaAutoTracking = (element, recordEvent) => {\n let isPlaying = false;\n const mediaProperties = () => ({\n duration: element.duration,\n eventValue: Number((element.currentTime / element.duration).toFixed(4)),\n });\n const timer = setInterval(() => {\n if (isPlaying) {\n recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());\n }\n }, 3000);\n element.addEventListener('unload', () => {\n clearInterval(timer);\n });\n element.addEventListener(HTML5_MEDIA_EVENT.PLAY, () => {\n isPlaying = true;\n recordEvent(EVENT_TYPE.PLAY, mediaProperties());\n });\n element.addEventListener(HTML5_MEDIA_EVENT.PAUSE, () => {\n isPlaying = false;\n recordEvent(EVENT_TYPE.PAUSE, mediaProperties());\n });\n element.addEventListener(HTML5_MEDIA_EVENT.ENDED, () => {\n isPlaying = false;\n recordEvent(EVENT_TYPE.ENDED, mediaProperties());\n });\n};\nconst checkElementLoaded = (interval, maxTries) => {\n let retryCount = 0;\n const wait = () => new Promise(resolve => setTimeout(resolve, interval));\n const check = async (elementId) => {\n if (retryCount >= maxTries) {\n return false;\n }\n const domElement = document.getElementById(elementId);\n if (domElement && domElement.clientHeight) {\n return true;\n }\n else {\n retryCount += 1;\n await wait();\n return check(elementId);\n }\n };\n return check;\n};\nconst recordEvent = (config, eventBuffer) => (eventType, properties) => {\n // override eventType and merge properties\n eventBuffer.append({\n ...config,\n event: {\n ...config.event,\n eventType,\n properties: {\n ...config.event.properties,\n ...properties,\n },\n },\n timestamp: Date.now(),\n });\n};\nexport const autoTrackMedia = async (config, eventBuffer) => {\n const { eventType, properties } = config.event;\n const { domElementId, ...otherProperties } = properties;\n if (!isBrowser()) {\n logger.debug(`${eventType} only for browser`);\n return;\n }\n if (typeof domElementId === 'string' && !domElementId) {\n logger.debug(\"Missing domElementId field in 'properties' for MediaAutoTrack event type.\");\n return;\n }\n const elementId = domElementId;\n const isElementLoaded = await checkElementLoaded(500, 5)(elementId);\n if (isElementLoaded) {\n const autoTrackConfigWithoutDomElementId = {\n ...config,\n event: {\n ...config.event,\n properties: otherProperties,\n },\n };\n const element = document.getElementById(elementId);\n switch (element?.tagName) {\n case MEDIA_TYPE.IFRAME:\n startIframeAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));\n break;\n case MEDIA_TYPE.VIDEO:\n case MEDIA_TYPE.AUDIO:\n if (element instanceof HTMLMediaElement) {\n startHTMLMediaAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));\n }\n break;\n default:\n logger.debug(`Unsupported DOM element tag: ${element?.tagName}`);\n break;\n }\n }\n else {\n logger.debug('Cannot find the media element.');\n }\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cachedSession.mjs","sources":["../../../../../src/providers/personalize/utils/cachedSession.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Cache } from '@aws-amplify/core';\nimport { isBrowser, amplifyUuid } from '@aws-amplify/core/internals/utils';\nconst PERSONALIZE_CACHE_USERID = '_awsct_uid';\nconst PERSONALIZE_CACHE_SESSIONID = '_awsct_sid';\nconst DEFAULT_CACHE_PREFIX = 'personalize';\nconst DELIMITER = '.';\nconst CACHE_EXPIRY_IN_DAYS = 7;\nconst normalize = (key) => [key, isBrowser() ? window.location.host : DEFAULT_CACHE_PREFIX].join(DELIMITER);\nconst getCache = (key) => Cache.getItem(normalize(key));\nconst setCache = (key, value) => {\n const expiredAt = new Date(Date.now() + 3600000 * 24 * CACHE_EXPIRY_IN_DAYS);\n Cache.setItem(normalize(key), value, {\n expires: expiredAt.getTime(),\n });\n};\nexport const resolveCachedSession = async () => {\n let sessionId = await getCache(PERSONALIZE_CACHE_SESSIONID);\n if (!sessionId) {\n sessionId = amplifyUuid();\n setCache(PERSONALIZE_CACHE_SESSIONID, sessionId);\n }\n const userId = await getCache(PERSONALIZE_CACHE_USERID);\n return {\n sessionId,\n userId,\n };\n};\nexport const updateCachedSession = (newUserId, currentSessionId, currentUserId) => {\n const isNoCachedSession = !currentSessionId;\n const isSignOutCase = !newUserId && !currentUserId;\n const isSwitchUserCase = !!newUserId && !!currentUserId && newUserId !== currentUserId;\n const isRequireNewSession = isNoCachedSession || isSignOutCase || isSwitchUserCase;\n const isRequireUpdateSession = !!currentSessionId && !currentUserId && !!newUserId;\n if (isRequireNewSession) {\n const newSessionId = amplifyUuid();\n setCache(PERSONALIZE_CACHE_SESSIONID, newSessionId);\n setCache(PERSONALIZE_CACHE_USERID, newUserId);\n }\n else if (isRequireUpdateSession) {\n setCache(PERSONALIZE_CACHE_USERID, newUserId);\n }\n};\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAC9C,MAAM,2BAA2B,GAAG,YAAY,CAAC;AACjD,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAC3C,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5G,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,IAAI,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,oBAAoB,CAAC,CAAC;AACjF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE;AACzC,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE;AACpC,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACU,MAAC,oBAAoB,GAAG,YAAY;AAChD,IAAI,IAAI,SAAS,GAAG,MAAM,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,SAAS,GAAG,WAAW,EAAE,CAAC;AAClC,QAAQ,QAAQ,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAC5D,IAAI,OAAO;AACX,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,KAAK,CAAC;AACN,EAAE;AACU,MAAC,mBAAmB,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,KAAK;AACnF,IAAI,MAAM,iBAAiB,GAAG,CAAC,gBAAgB,CAAC;AAChD,IAAI,MAAM,aAAa,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC;AACvD,IAAI,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,SAAS,KAAK,aAAa,CAAC;AAC3F,IAAI,MAAM,mBAAmB,GAAG,iBAAiB,IAAI,aAAa,IAAI,gBAAgB,CAAC;AACvF,IAAI,MAAM,sBAAsB,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC;AACvF,IAAI,IAAI,mBAAmB,EAAE;AAC7B,QAAQ,MAAM,YAAY,GAAG,WAAW,EAAE,CAAC;AAC3C,QAAQ,QAAQ,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;AAC5D,QAAQ,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK;AACL,SAAS,IAAI,sBAAsB,EAAE;AACrC,QAAQ,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"cachedSession.mjs","sources":["../../../../../src/providers/personalize/utils/cachedSession.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Cache } from '@aws-amplify/core';\nimport { amplifyUuid, isBrowser } from '@aws-amplify/core/internals/utils';\nconst PERSONALIZE_CACHE_USERID = '_awsct_uid';\nconst PERSONALIZE_CACHE_SESSIONID = '_awsct_sid';\nconst DEFAULT_CACHE_PREFIX = 'personalize';\nconst DELIMITER = '.';\nconst CACHE_EXPIRY_IN_DAYS = 7;\nconst normalize = (key) => [key, isBrowser() ? window.location.host : DEFAULT_CACHE_PREFIX].join(DELIMITER);\nconst getCache = (key) => Cache.getItem(normalize(key));\nconst setCache = (key, value) => {\n const expiredAt = new Date(Date.now() + 3600000 * 24 * CACHE_EXPIRY_IN_DAYS);\n Cache.setItem(normalize(key), value, {\n expires: expiredAt.getTime(),\n });\n};\nexport const resolveCachedSession = async () => {\n let sessionId = await getCache(PERSONALIZE_CACHE_SESSIONID);\n if (!sessionId) {\n sessionId = amplifyUuid();\n setCache(PERSONALIZE_CACHE_SESSIONID, sessionId);\n }\n const userId = await getCache(PERSONALIZE_CACHE_USERID);\n return {\n sessionId,\n userId,\n };\n};\nexport const updateCachedSession = (newUserId, currentSessionId, currentUserId) => {\n const isNoCachedSession = !currentSessionId;\n const isSignOutCase = !newUserId && !currentUserId;\n const isSwitchUserCase = !!newUserId && !!currentUserId && newUserId !== currentUserId;\n const isRequireNewSession = isNoCachedSession || isSignOutCase || isSwitchUserCase;\n const isRequireUpdateSession = !!currentSessionId && !currentUserId && !!newUserId;\n if (isRequireNewSession) {\n const newSessionId = amplifyUuid();\n setCache(PERSONALIZE_CACHE_SESSIONID, newSessionId);\n setCache(PERSONALIZE_CACHE_USERID, newUserId);\n }\n else if (isRequireUpdateSession) {\n setCache(PERSONALIZE_CACHE_USERID, newUserId);\n }\n};\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAC9C,MAAM,2BAA2B,GAAG,YAAY,CAAC;AACjD,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAC3C,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5G,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,IAAI,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,oBAAoB,CAAC,CAAC;AACjF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE;AACzC,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE;AACpC,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACU,MAAC,oBAAoB,GAAG,YAAY;AAChD,IAAI,IAAI,SAAS,GAAG,MAAM,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AAChE,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,QAAQ,SAAS,GAAG,WAAW,EAAE,CAAC;AAClC,QAAQ,QAAQ,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAC5D,IAAI,OAAO;AACX,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,KAAK,CAAC;AACN,EAAE;AACU,MAAC,mBAAmB,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,KAAK;AACnF,IAAI,MAAM,iBAAiB,GAAG,CAAC,gBAAgB,CAAC;AAChD,IAAI,MAAM,aAAa,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC;AACvD,IAAI,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,SAAS,KAAK,aAAa,CAAC;AAC3F,IAAI,MAAM,mBAAmB,GAAG,iBAAiB,IAAI,aAAa,IAAI,gBAAgB,CAAC;AACvF,IAAI,MAAM,sBAAsB,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC;AACvF,IAAI,IAAI,mBAAmB,EAAE;AAC7B,QAAQ,MAAM,YAAY,GAAG,WAAW,EAAE,CAAC;AAC3C,QAAQ,QAAQ,CAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC;AAC5D,QAAQ,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK;AACL,SAAS,IAAI,sBAAsB,EAAE;AACrC,QAAQ,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK;AACL;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { haveCredentialsChanged } from '@aws-amplify/core/internals/utils';
2
2
  import { PersonalizeEventsClient, PutEventsCommand } from '@aws-sdk/client-personalize-events';
3
- import '../../../errors/validation.mjs';
4
3
  import '@aws-amplify/core';
4
+ import '../../../errors/validation.mjs';
5
5
  import { groupBy } from '../../../utils/groupBy.mjs';
6
6
  import { EventBuffer } from '../../../utils/eventBuffer/EventBuffer.mjs';
7
7
  import '../../../trackers/EventTracker.mjs';
@@ -40,7 +40,7 @@ const submitEvents = async (events, client) => {
40
40
  .filter(id => !!id)
41
41
  .join(DELIMITER), events));
42
42
  const requests = groupedByIds
43
- .map(([ids, events]) => createPutEventsCommand(ids, events))
43
+ .map(([ids, groupedEvents]) => createPutEventsCommand(ids, groupedEvents))
44
44
  .map(command => client.send(command));
45
45
  await Promise.allSettled(requests);
46
46
  return Promise.resolve([]);
@@ -62,7 +62,7 @@ const getEventBuffer = ({ region, flushSize, flushInterval, bufferSize, credenti
62
62
  credentials,
63
63
  customUserAgent: userAgentValue,
64
64
  }),
65
- credentials
65
+ credentials,
66
66
  ];
67
67
  }
68
68
  const [personalizeClient] = cachedClients[sessionIdentityKey];
@@ -1 +1 @@
1
- {"version":3,"file":"getEventBuffer.mjs","sources":["../../../../../src/providers/personalize/utils/getEventBuffer.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { haveCredentialsChanged } from '@aws-amplify/core/internals/utils';\nimport { PersonalizeEventsClient, PutEventsCommand, } from '@aws-sdk/client-personalize-events';\nimport { EventBuffer, groupBy } from '../../../utils';\n/**\n * These Records hold cached event buffers and AWS clients.\n * The hash key is determined by the region and session,\n * consisting of a combined value comprising [region, sessionToken, identityId].\n *\n * Only one active session should exist at any given moment.\n * When a new session is initiated, the previous ones should be released.\n * */\nconst eventBufferMap = {};\nconst cachedClients = {};\nconst DELIMITER = '#';\nconst createPutEventsCommand = (ids, events) => {\n const [trackingId, sessionId, userId] = ids.split(DELIMITER);\n return new PutEventsCommand({\n trackingId,\n sessionId,\n userId,\n eventList: events.map(event => ({\n eventId: event.event.eventId,\n eventType: event.event.eventType,\n properties: JSON.stringify(event.event.properties),\n sentAt: new Date(event.timestamp),\n })),\n });\n};\nconst submitEvents = async (events, client) => {\n const groupedByIds = Object.entries(groupBy(event => [event.trackingId, event.sessionId, event.userId]\n .filter(id => !!id)\n .join(DELIMITER), events));\n const requests = groupedByIds\n .map(([ids, events]) => createPutEventsCommand(ids, events))\n .map(command => client.send(command));\n await Promise.allSettled(requests);\n return Promise.resolve([]);\n};\nexport const getEventBuffer = ({ region, flushSize, flushInterval, bufferSize, credentials, identityId, userAgentValue, }) => {\n const sessionIdentityKey = [region, identityId].filter(x => !!x).join('-');\n const [cachedClient, cachedCredentials] = cachedClients[sessionIdentityKey] ?? [];\n let credentialsHaveChanged = false;\n // Check if credentials have changed for the cached client\n if (cachedClient) {\n credentialsHaveChanged = haveCredentialsChanged(cachedCredentials, credentials);\n }\n if (!eventBufferMap[sessionIdentityKey] || credentialsHaveChanged) {\n const getClient = () => {\n if (!cachedClient || credentialsHaveChanged) {\n cachedClients[sessionIdentityKey] = [\n new PersonalizeEventsClient({\n region,\n credentials,\n customUserAgent: userAgentValue,\n }),\n credentials\n ];\n }\n const [personalizeClient] = cachedClients[sessionIdentityKey];\n return events => submitEvents(events, personalizeClient);\n };\n eventBufferMap[sessionIdentityKey] =\n new EventBuffer({\n bufferSize,\n flushSize,\n flushInterval,\n }, getClient);\n const releaseSessionKeys = Object.keys(eventBufferMap).filter(key => key !== sessionIdentityKey);\n for (const releaseSessionKey of releaseSessionKeys) {\n eventBufferMap[releaseSessionKey].flushAll().finally(() => {\n eventBufferMap[releaseSessionKey].release();\n delete eventBufferMap[releaseSessionKey];\n delete cachedClients[releaseSessionKey];\n });\n }\n }\n return eventBufferMap[sessionIdentityKey];\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getEventBuffer.mjs","sources":["../../../../../src/providers/personalize/utils/getEventBuffer.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { haveCredentialsChanged, } from '@aws-amplify/core/internals/utils';\nimport { PersonalizeEventsClient, PutEventsCommand, } from '@aws-sdk/client-personalize-events';\nimport { EventBuffer, groupBy } from '../../../utils';\n/**\n * These Records hold cached event buffers and AWS clients.\n * The hash key is determined by the region and session,\n * consisting of a combined value comprising [region, sessionToken, identityId].\n *\n * Only one active session should exist at any given moment.\n * When a new session is initiated, the previous ones should be released.\n * */\nconst eventBufferMap = {};\nconst cachedClients = {};\nconst DELIMITER = '#';\nconst createPutEventsCommand = (ids, events) => {\n const [trackingId, sessionId, userId] = ids.split(DELIMITER);\n return new PutEventsCommand({\n trackingId,\n sessionId,\n userId,\n eventList: events.map(event => ({\n eventId: event.event.eventId,\n eventType: event.event.eventType,\n properties: JSON.stringify(event.event.properties),\n sentAt: new Date(event.timestamp),\n })),\n });\n};\nconst submitEvents = async (events, client) => {\n const groupedByIds = Object.entries(groupBy(event => [event.trackingId, event.sessionId, event.userId]\n .filter(id => !!id)\n .join(DELIMITER), events));\n const requests = groupedByIds\n .map(([ids, groupedEvents]) => createPutEventsCommand(ids, groupedEvents))\n .map(command => client.send(command));\n await Promise.allSettled(requests);\n return Promise.resolve([]);\n};\nexport const getEventBuffer = ({ region, flushSize, flushInterval, bufferSize, credentials, identityId, userAgentValue, }) => {\n const sessionIdentityKey = [region, identityId].filter(x => !!x).join('-');\n const [cachedClient, cachedCredentials] = cachedClients[sessionIdentityKey] ?? [];\n let credentialsHaveChanged = false;\n // Check if credentials have changed for the cached client\n if (cachedClient) {\n credentialsHaveChanged = haveCredentialsChanged(cachedCredentials, credentials);\n }\n if (!eventBufferMap[sessionIdentityKey] || credentialsHaveChanged) {\n const getClient = () => {\n if (!cachedClient || credentialsHaveChanged) {\n cachedClients[sessionIdentityKey] = [\n new PersonalizeEventsClient({\n region,\n credentials,\n customUserAgent: userAgentValue,\n }),\n credentials,\n ];\n }\n const [personalizeClient] = cachedClients[sessionIdentityKey];\n return events => submitEvents(events, personalizeClient);\n };\n eventBufferMap[sessionIdentityKey] =\n new EventBuffer({\n bufferSize,\n flushSize,\n flushInterval,\n }, getClient);\n const releaseSessionKeys = Object.keys(eventBufferMap).filter(key => key !== sessionIdentityKey);\n for (const releaseSessionKey of releaseSessionKeys) {\n eventBufferMap[releaseSessionKey].flushAll().finally(() => {\n eventBufferMap[releaseSessionKey].release();\n delete eventBufferMap[releaseSessionKey];\n delete cachedClients[releaseSessionKey];\n });\n }\n }\n return eventBufferMap[sessionIdentityKey];\n};\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import '@aws-amplify/core';
1
2
  import '@aws-amplify/core/internals/utils';
2
3
  import '../../../errors/validation.mjs';
3
- import '@aws-amplify/core';
4
4
  import '../../../utils/eventBuffer/EventBuffer.mjs';
5
5
  import { updateProviderTrackers } from '../../../utils/trackerHelpers.mjs';
6
6
  import { validateTrackerConfiguration } from '../../../utils/trackerConfigHelpers.mjs';
@@ -1,8 +1,8 @@
1
- import { resolveConfig } from '../utils/resolveConfig.mjs';
2
- import { resolveCredentials } from '../utils/resolveCredentials.mjs';
3
1
  import { flushEvents as flushEvents$1 } from '@aws-amplify/core/internals/providers/pinpoint';
4
2
  import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
5
3
  import { ConsoleLogger } from '@aws-amplify/core';
4
+ import { resolveConfig } from '../utils/resolveConfig.mjs';
5
+ import { resolveCredentials } from '../utils/resolveCredentials.mjs';
6
6
  import '../../../errors/validation.mjs';
7
7
  import '../../../utils/eventBuffer/EventBuffer.mjs';
8
8
  import { getAnalyticsUserAgentString } from '../../../utils/userAgent.mjs';
@@ -23,18 +23,22 @@ const logger = new ConsoleLogger('Analytics');
23
23
  const flushEvents = () => {
24
24
  const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } = resolveConfig();
25
25
  resolveCredentials()
26
- .then(({ credentials, identityId }) => flushEvents$1({
27
- appId,
28
- region,
29
- credentials,
30
- identityId,
31
- bufferSize,
32
- flushSize,
33
- flushInterval,
34
- resendLimit,
35
- userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
36
- }))
37
- .catch(e => logger.warn('Failed to flush events', e));
26
+ .then(({ credentials, identityId }) => {
27
+ flushEvents$1({
28
+ appId,
29
+ region,
30
+ credentials,
31
+ identityId,
32
+ bufferSize,
33
+ flushSize,
34
+ flushInterval,
35
+ resendLimit,
36
+ userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
37
+ });
38
+ })
39
+ .catch(e => {
40
+ logger.warn('Failed to flush events', e);
41
+ });
38
42
  };
39
43
 
40
44
  export { flushEvents };
@@ -1 +1 @@
1
- {"version":3,"file":"flushEvents.mjs","sources":["../../../../../src/providers/pinpoint/apis/flushEvents.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { resolveConfig, resolveCredentials } from '../utils';\nimport { flushEvents as flushEventsCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { getAnalyticsUserAgentString } from '../../../utils';\nconst logger = new ConsoleLogger('Analytics');\n/**\n * Flushes all buffered Pinpoint events to the service.\n *\n * @note\n * This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking\n * this API may not be included in the flush.\n */\nexport const flushEvents = () => {\n const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } = resolveConfig();\n resolveCredentials()\n .then(({ credentials, identityId }) => flushEventsCore({\n appId,\n region,\n credentials,\n identityId,\n bufferSize,\n flushSize,\n flushInterval,\n resendLimit,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n }))\n .catch(e => logger.warn('Failed to flush events', e));\n};\n"],"names":["flushEventsCore"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAMA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,MAAM;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AACjG,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAKA,aAAe,CAAC;AAC/D,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,SAAS;AACjB,QAAQ,aAAa;AACrB,QAAQ,WAAW;AACnB,QAAQ,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC3E,KAAK,CAAC,CAAC;AACP,SAAS,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D;;;;"}
1
+ {"version":3,"file":"flushEvents.mjs","sources":["../../../../../src/providers/pinpoint/apis/flushEvents.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { flushEvents as flushEventsCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { resolveConfig, resolveCredentials } from '../utils';\nimport { getAnalyticsUserAgentString } from '../../../utils';\nconst logger = new ConsoleLogger('Analytics');\n/**\n * Flushes all buffered Pinpoint events to the service.\n *\n * @note\n * This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking\n * this API may not be included in the flush.\n */\nexport const flushEvents = () => {\n const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } = resolveConfig();\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n flushEventsCore({\n appId,\n region,\n credentials,\n identityId,\n bufferSize,\n flushSize,\n flushInterval,\n resendLimit,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n });\n })\n .catch(e => {\n logger.warn('Failed to flush events', e);\n });\n};\n"],"names":["flushEventsCore"],"mappings":";;;;;;;;;;;;AAAA;AACA;AAMA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,WAAW,GAAG,MAAM;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AACjG,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;AAC/C,QAAQA,aAAe,CAAC;AACxB,YAAY,KAAK;AACjB,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC/E,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,CAAC,IAAI;AACpB,QAAQ,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,CAAC;AACP;;;;"}
@@ -4,7 +4,7 @@ import { IdentifyUserInput } from '../types';
4
4
  * profile and activities or actions in your application. Activity can be tracked across devices & platforms by using
5
5
  * the same `userId`.
6
6
  *
7
- * @param {IdentifyUserParameters} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
7
+ * @param {IdentifyUserInput} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
8
8
  * API.
9
9
  *
10
10
  * @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
@@ -1,7 +1,7 @@
1
1
  import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
2
2
  import { updateEndpoint } from '@aws-amplify/core/internals/providers/pinpoint';
3
- import '../../../errors/validation.mjs';
4
3
  import '@aws-amplify/core';
4
+ import '../../../errors/validation.mjs';
5
5
  import '../../../utils/eventBuffer/EventBuffer.mjs';
6
6
  import { getAnalyticsUserAgentString } from '../../../utils/userAgent.mjs';
7
7
  import '../../../trackers/EventTracker.mjs';
@@ -17,7 +17,7 @@ import { resolveCredentials } from '../utils/resolveCredentials.mjs';
17
17
  * profile and activities or actions in your application. Activity can be tracked across devices & platforms by using
18
18
  * the same `userId`.
19
19
  *
20
- * @param {IdentifyUserParameters} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
20
+ * @param {IdentifyUserInput} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
21
21
  * API.
22
22
  *
23
23
  * @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
@@ -1 +1 @@
1
- {"version":3,"file":"identifyUser.mjs","sources":["../../../../../src/providers/pinpoint/apis/identifyUser.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { updateEndpoint, } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { getAnalyticsUserAgentString } from '../../../utils';\nimport { resolveConfig, resolveCredentials } from '../utils';\n/**\n * Sends information about a user to Pinpoint. Sending user information allows you to associate a user to their user\n * profile and activities or actions in your application. Activity can be tracked across devices & platforms by using\n * the same `userId`.\n *\n * @param {IdentifyUserParameters} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint\n * API.\n *\n * @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.\n * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect.\n *\n * @returns A promise that will resolve when the operation is complete.\n *\n * @example\n * ```ts\n * // Identify a user with Pinpoint\n * await identifyUser({\n * userId,\n * userProfile: {\n * email: 'userEmail@example.com'\n * customProperties: {\n * phoneNumber: ['555-555-5555'],\n * },\n * }\n * });\n * ```\n *\n * @example\n * ```ts\n * // Identify a user with Pinpoint with some additional demographics\n * await identifyUser({\n * userId,\n * userProfile: {\n * email: 'userEmail@example.com'\n * customProperties: {\n * phoneNumber: ['555-555-5555'],\n * },\n * demographic: {\n * platform: 'ios',\n * timezone: 'America/Los_Angeles'\n * }\n * }\n * });\n */\nexport const identifyUser = async ({ userId, userProfile, options, }) => {\n const { credentials, identityId } = await resolveCredentials();\n const { appId, region } = resolveConfig();\n const { userAttributes } = options ?? {};\n updateEndpoint({\n appId,\n category: 'Analytics',\n credentials,\n identityId,\n region,\n userAttributes,\n userId,\n userProfile,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.IdentifyUser),\n });\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,KAAK;AACzE,IAAI,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;AACnE,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;AAC9C,IAAI,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAC7C,IAAI,cAAc,CAAC;AACnB,QAAQ,KAAK;AACb,QAAQ,QAAQ,EAAE,WAAW;AAC7B,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,MAAM;AACd,QAAQ,cAAc;AACtB,QAAQ,MAAM;AACd,QAAQ,WAAW;AACnB,QAAQ,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,YAAY,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;;;;"}
1
+ {"version":3,"file":"identifyUser.mjs","sources":["../../../../../src/providers/pinpoint/apis/identifyUser.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { AnalyticsAction } from '@aws-amplify/core/internals/utils';\nimport { updateEndpoint, } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { getAnalyticsUserAgentString } from '../../../utils';\nimport { resolveConfig, resolveCredentials } from '../utils';\n/**\n * Sends information about a user to Pinpoint. Sending user information allows you to associate a user to their user\n * profile and activities or actions in your application. Activity can be tracked across devices & platforms by using\n * the same `userId`.\n *\n * @param {IdentifyUserInput} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint\n * API.\n *\n * @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.\n * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect.\n *\n * @returns A promise that will resolve when the operation is complete.\n *\n * @example\n * ```ts\n * // Identify a user with Pinpoint\n * await identifyUser({\n * userId,\n * userProfile: {\n * email: 'userEmail@example.com'\n * customProperties: {\n * phoneNumber: ['555-555-5555'],\n * },\n * }\n * });\n * ```\n *\n * @example\n * ```ts\n * // Identify a user with Pinpoint with some additional demographics\n * await identifyUser({\n * userId,\n * userProfile: {\n * email: 'userEmail@example.com'\n * customProperties: {\n * phoneNumber: ['555-555-5555'],\n * },\n * demographic: {\n * platform: 'ios',\n * timezone: 'America/Los_Angeles'\n * }\n * }\n * });\n */\nexport const identifyUser = async ({ userId, userProfile, options, }) => {\n const { credentials, identityId } = await resolveCredentials();\n const { appId, region } = resolveConfig();\n const { userAttributes } = options ?? {};\n updateEndpoint({\n appId,\n category: 'Analytics',\n credentials,\n identityId,\n region,\n userAttributes,\n userId,\n userProfile,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.IdentifyUser),\n });\n};\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,YAAY,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,KAAK;AACzE,IAAI,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;AACnE,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;AAC9C,IAAI,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;AAC7C,IAAI,cAAc,CAAC;AACnB,QAAQ,KAAK;AACb,QAAQ,QAAQ,EAAE,WAAW;AAC7B,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,MAAM;AACd,QAAQ,cAAc;AACtB,QAAQ,MAAM;AACd,QAAQ,WAAW;AACnB,QAAQ,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,YAAY,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;;;;"}
@@ -1 +1 @@
1
- {"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 { Hub, ConsoleLogger } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL, AnalyticsAction, } from '@aws-amplify/core/internals/utils';\nimport { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { AnalyticsValidationErrorCode, assertValidationError, } from '../../../errors';\nimport { getAnalyticsUserAgentString, isAnalyticsEnabled, } from '../../../utils';\nimport { resolveConfig, resolveCredentials } from '../utils';\nconst logger = new ConsoleLogger('Analytics');\n/**\n * Records an Analytic event to Pinpoint. Events will be buffered and periodically sent to Pinpoint.\n *\n * @param params The input object used to construct the request.\n *\n * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect.\n *\n * @example\n * ```ts\n * // Send an event to Pinpoint\n * record({ name: eventName })\n * ```\n *\n * @example\n * ```ts\n * // Send an event to Pinpoint with metrics & custom attributes\n * record({\n * name: eventName,\n * attributes: {\n * 'my-attribute': attributeValue\n * },\n * metrics: {\n * 'my-metric': metricValue\n * }\n * })\n * ```\n */\nexport const record = (input) => {\n const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } = resolveConfig();\n if (!isAnalyticsEnabled()) {\n logger.debug('Analytics is disabled, event will not be recorded.');\n return;\n }\n assertValidationError(!!input.name, AnalyticsValidationErrorCode.NoEventName);\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n Hub.dispatch('analytics', { event: 'record', data: input, message: 'Recording Analytics event' }, 'Analytics', AMPLIFY_SYMBOL);\n recordCore({\n appId,\n category: 'Analytics',\n credentials,\n event: input,\n identityId,\n region,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n bufferSize,\n flushSize,\n flushInterval,\n resendLimit,\n });\n })\n .catch(e => {\n // An error occured while fetching credentials or persisting the event to the buffer\n logger.warn('Failed to record event.', e);\n });\n};\n"],"names":["recordCore"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,KAAK,KAAK;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AACjG,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAC3E,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAC;AAClF,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;AAC/C,QAAQ,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AACvI,QAAQA,QAAU,CAAC;AACnB,YAAY,KAAK;AACjB,YAAY,QAAQ,EAAE,WAAW;AACjC,YAAY,WAAW;AACvB,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC/E,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,CAAC,IAAI;AACpB;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK,CAAC,CAAC;AACP;;;;"}
1
+ {"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 { ConsoleLogger, Hub } from '@aws-amplify/core';\nimport { AMPLIFY_SYMBOL, AnalyticsAction, } from '@aws-amplify/core/internals/utils';\nimport { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { AnalyticsValidationErrorCode, assertValidationError, } from '../../../errors';\nimport { getAnalyticsUserAgentString, isAnalyticsEnabled, } from '../../../utils';\nimport { resolveConfig, resolveCredentials } from '../utils';\nconst logger = new ConsoleLogger('Analytics');\n/**\n * Records an Analytic event to Pinpoint. Events will be buffered and periodically sent to Pinpoint.\n *\n * @param params The input object used to construct the request.\n *\n * @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect.\n *\n * @example\n * ```ts\n * // Send an event to Pinpoint\n * record({ name: eventName })\n * ```\n *\n * @example\n * ```ts\n * // Send an event to Pinpoint with metrics & custom attributes\n * record({\n * name: eventName,\n * attributes: {\n * 'my-attribute': attributeValue\n * },\n * metrics: {\n * 'my-metric': metricValue\n * }\n * })\n * ```\n */\nexport const record = (input) => {\n const { appId, region, bufferSize, flushSize, flushInterval, resendLimit } = resolveConfig();\n if (!isAnalyticsEnabled()) {\n logger.debug('Analytics is disabled, event will not be recorded.');\n return;\n }\n assertValidationError(!!input.name, AnalyticsValidationErrorCode.NoEventName);\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n Hub.dispatch('analytics', { event: 'record', data: input, message: 'Recording Analytics event' }, 'Analytics', AMPLIFY_SYMBOL);\n recordCore({\n appId,\n category: 'Analytics',\n credentials,\n event: input,\n identityId,\n region,\n userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),\n bufferSize,\n flushSize,\n flushInterval,\n resendLimit,\n });\n })\n .catch(e => {\n // An error occured while fetching credentials or persisting the event to the buffer\n logger.warn('Failed to record event.', e);\n });\n};\n"],"names":["recordCore"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AAOA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,MAAM,GAAG,CAAC,KAAK,KAAK;AACjC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,aAAa,EAAE,CAAC;AACjG,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC/B,QAAQ,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAC3E,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,4BAA4B,CAAC,WAAW,CAAC,CAAC;AAClF,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;AAC/C,QAAQ,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AACvI,QAAQA,QAAU,CAAC;AACnB,YAAY,KAAK;AACjB,YAAY,QAAQ,EAAE,WAAW;AACjC,YAAY,WAAW;AACvB,YAAY,KAAK,EAAE,KAAK;AACxB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,cAAc,EAAE,2BAA2B,CAAC,eAAe,CAAC,MAAM,CAAC;AAC/E,YAAY,UAAU;AACtB,YAAY,SAAS;AACrB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,CAAC,IAAI;AACpB;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK,CAAC,CAAC;AACP;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { PinpointAnalyticsEvent } from '@aws-amplify/core/internals/providers/pinpoint';
2
- import { IdentifyUserOptions } from './options';
3
2
  import { AnalyticsConfigureAutoTrackInput, AnalyticsIdentifyUserInput } from '../../../types';
3
+ import { IdentifyUserOptions } from './options';
4
4
  /**
5
5
  * Input type for Pinpoint record API.
6
6
  */
@@ -61,16 +61,14 @@ class PageViewTracker {
61
61
  // Configure proxies on History APIs
62
62
  this.pushStateProxy = Proxy.revocable(window.history.pushState, {
63
63
  apply: (target, thisArg, args) => {
64
- const proxiedResult = target.apply(thisArg, args);
64
+ target.apply(thisArg, args);
65
65
  this.handleLocationChange();
66
- return proxiedResult;
67
66
  },
68
67
  });
69
68
  this.replaceStateProxy = Proxy.revocable(window.history.replaceState, {
70
69
  apply: (target, thisArg, args) => {
71
- const proxiedResult = target.apply(thisArg, args);
70
+ target.apply(thisArg, args);
72
71
  this.handleLocationChange();
73
- return proxiedResult;
74
72
  },
75
73
  });
76
74
  this.originalPushState = window.history.pushState;