@aws-amplify/notifications 2.0.22 → 2.0.23

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 (134) hide show
  1. package/dist/cjs/eventListeners/eventListeners.js +4 -7
  2. package/dist/cjs/eventListeners/eventListeners.js.map +1 -1
  3. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/clearMessages.js +1 -1
  4. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/clearMessages.js.map +1 -1
  5. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/dispatchEvent.js +7 -7
  6. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/dispatchEvent.js.map +1 -1
  7. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/identifyUser.js +3 -2
  8. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/identifyUser.js.map +1 -1
  9. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.js +2 -2
  10. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.js.map +1 -1
  11. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.js +1 -1
  12. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.js.map +1 -1
  13. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/setConflictHandler.js +3 -27
  14. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/setConflictHandler.js.map +1 -1
  15. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/syncMessages.js +1 -1
  16. package/dist/cjs/inAppMessaging/providers/pinpoint/apis/syncMessages.js.map +1 -1
  17. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.js +50 -0
  18. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.js.map +1 -0
  19. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/helpers.js +8 -8
  20. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/helpers.js.map +1 -1
  21. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/index.js +4 -1
  22. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/index.js.map +1 -1
  23. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.js +5 -6
  24. package/dist/cjs/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.js.map +1 -1
  25. package/dist/cjs/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.js +14 -5
  26. package/dist/cjs/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.js.map +1 -1
  27. package/dist/cjs/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.js +1 -1
  28. package/dist/cjs/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.js.map +1 -1
  29. package/dist/esm/eventListeners/eventListeners.d.ts +2 -2
  30. package/dist/esm/eventListeners/eventListeners.mjs +4 -7
  31. package/dist/esm/eventListeners/eventListeners.mjs.map +1 -1
  32. package/dist/esm/eventListeners/types.d.ts +6 -5
  33. package/dist/esm/inAppMessaging/providers/pinpoint/apis/clearMessages.mjs +1 -1
  34. package/dist/esm/inAppMessaging/providers/pinpoint/apis/clearMessages.mjs.map +1 -1
  35. package/dist/esm/inAppMessaging/providers/pinpoint/apis/dispatchEvent.mjs +5 -4
  36. package/dist/esm/inAppMessaging/providers/pinpoint/apis/dispatchEvent.mjs.map +1 -1
  37. package/dist/esm/inAppMessaging/providers/pinpoint/apis/identifyUser.d.ts +2 -2
  38. package/dist/esm/inAppMessaging/providers/pinpoint/apis/identifyUser.mjs +3 -2
  39. package/dist/esm/inAppMessaging/providers/pinpoint/apis/identifyUser.mjs.map +1 -1
  40. package/dist/esm/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.mjs +2 -2
  41. package/dist/esm/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.mjs.map +1 -1
  42. package/dist/esm/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.d.ts +1 -1
  43. package/dist/esm/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.mjs +1 -1
  44. package/dist/esm/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.mjs.map +1 -1
  45. package/dist/esm/inAppMessaging/providers/pinpoint/apis/setConflictHandler.d.ts +1 -2
  46. package/dist/esm/inAppMessaging/providers/pinpoint/apis/setConflictHandler.mjs +7 -27
  47. package/dist/esm/inAppMessaging/providers/pinpoint/apis/setConflictHandler.mjs.map +1 -1
  48. package/dist/esm/inAppMessaging/providers/pinpoint/apis/syncMessages.mjs +1 -1
  49. package/dist/esm/inAppMessaging/providers/pinpoint/apis/syncMessages.mjs.map +1 -1
  50. package/dist/esm/inAppMessaging/providers/pinpoint/types/inputs.d.ts +3 -3
  51. package/dist/esm/inAppMessaging/providers/pinpoint/types/types.d.ts +4 -4
  52. package/dist/esm/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.d.ts +13 -0
  53. package/dist/esm/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.mjs +46 -0
  54. package/dist/esm/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.mjs.map +1 -0
  55. package/dist/esm/inAppMessaging/providers/pinpoint/utils/helpers.d.ts +1 -1
  56. package/dist/esm/inAppMessaging/providers/pinpoint/utils/helpers.mjs +8 -8
  57. package/dist/esm/inAppMessaging/providers/pinpoint/utils/helpers.mjs.map +1 -1
  58. package/dist/esm/inAppMessaging/providers/pinpoint/utils/index.d.ts +1 -0
  59. package/dist/esm/inAppMessaging/providers/pinpoint/utils/index.mjs +1 -0
  60. package/dist/esm/inAppMessaging/providers/pinpoint/utils/index.mjs.map +1 -1
  61. package/dist/esm/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.d.ts +1 -1
  62. package/dist/esm/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.mjs +5 -6
  63. package/dist/esm/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.mjs.map +1 -1
  64. package/dist/esm/inAppMessaging/providers/pinpoint/utils/userAgent.mjs.map +1 -1
  65. package/dist/esm/inAppMessaging/types/event.d.ts +2 -2
  66. package/dist/esm/inAppMessaging/types/inputs.d.ts +2 -2
  67. package/dist/esm/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.mjs +14 -5
  68. package/dist/esm/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.mjs.map +1 -1
  69. package/dist/esm/pushNotifications/providers/pinpoint/types/analytics.d.ts +2 -2
  70. package/dist/esm/pushNotifications/providers/pinpoint/types/inputs.d.ts +1 -1
  71. package/dist/esm/pushNotifications/providers/pinpoint/utils/createMessageEventRecorder.d.ts +1 -1
  72. package/dist/esm/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.mjs +1 -1
  73. package/dist/esm/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.mjs.map +1 -1
  74. package/dist/esm/pushNotifications/providers/pinpoint/utils/resolveConfig.mjs.map +1 -1
  75. package/dist/esm/pushNotifications/types/inputs.d.ts +2 -2
  76. package/dist/esm/pushNotifications/utils/resolveCredentials.mjs.map +1 -1
  77. package/package.json +6 -5
  78. package/src/eventListeners/eventListeners.ts +16 -9
  79. package/src/eventListeners/types.ts +7 -5
  80. package/src/inAppMessaging/errors/assertServiceError.ts +1 -0
  81. package/src/inAppMessaging/providers/pinpoint/apis/clearMessages.ts +3 -2
  82. package/src/inAppMessaging/providers/pinpoint/apis/dispatchEvent.ts +18 -11
  83. package/src/inAppMessaging/providers/pinpoint/apis/identifyUser.ts +5 -7
  84. package/src/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.ts +5 -3
  85. package/src/inAppMessaging/providers/pinpoint/apis/notifyMessageInteraction.ts +1 -0
  86. package/src/inAppMessaging/providers/pinpoint/apis/onMessageActionTaken.ts +2 -0
  87. package/src/inAppMessaging/providers/pinpoint/apis/onMessageDismissed.ts +2 -0
  88. package/src/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.ts +3 -1
  89. package/src/inAppMessaging/providers/pinpoint/apis/onMessageReceived.ts +2 -0
  90. package/src/inAppMessaging/providers/pinpoint/apis/setConflictHandler.ts +7 -34
  91. package/src/inAppMessaging/providers/pinpoint/apis/syncMessages.ts +12 -10
  92. package/src/inAppMessaging/providers/pinpoint/types/inputs.ts +8 -7
  93. package/src/inAppMessaging/providers/pinpoint/types/types.ts +4 -4
  94. package/src/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.ts +54 -0
  95. package/src/inAppMessaging/providers/pinpoint/utils/helpers.ts +19 -9
  96. package/src/inAppMessaging/providers/pinpoint/utils/index.ts +4 -0
  97. package/src/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.ts +19 -11
  98. package/src/inAppMessaging/providers/pinpoint/utils/resolveConfig.ts +2 -0
  99. package/src/inAppMessaging/providers/pinpoint/utils/resolveCredentials.ts +2 -0
  100. package/src/inAppMessaging/providers/pinpoint/utils/userAgent.ts +2 -2
  101. package/src/inAppMessaging/types/event.ts +2 -2
  102. package/src/inAppMessaging/types/inputs.ts +4 -3
  103. package/src/pushNotifications/errors/errorHelpers.ts +2 -0
  104. package/src/pushNotifications/providers/pinpoint/apis/getBadgeCount.native.ts +2 -0
  105. package/src/pushNotifications/providers/pinpoint/apis/getBadgeCount.ts +1 -0
  106. package/src/pushNotifications/providers/pinpoint/apis/getLaunchNotification.native.ts +2 -0
  107. package/src/pushNotifications/providers/pinpoint/apis/getLaunchNotification.ts +1 -0
  108. package/src/pushNotifications/providers/pinpoint/apis/getPermissionStatus.native.ts +2 -0
  109. package/src/pushNotifications/providers/pinpoint/apis/getPermissionStatus.ts +1 -0
  110. package/src/pushNotifications/providers/pinpoint/apis/identifyUser.native.ts +1 -0
  111. package/src/pushNotifications/providers/pinpoint/apis/identifyUser.ts +1 -0
  112. package/src/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.ts +21 -12
  113. package/src/pushNotifications/providers/pinpoint/apis/initializePushNotifications.ts +1 -0
  114. package/src/pushNotifications/providers/pinpoint/apis/onNotificationOpened.native.ts +1 -0
  115. package/src/pushNotifications/providers/pinpoint/apis/onNotificationOpened.ts +1 -0
  116. package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInBackground.native.ts +1 -0
  117. package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInBackground.ts +1 -0
  118. package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInForeground.native.ts +1 -0
  119. package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInForeground.ts +1 -0
  120. package/src/pushNotifications/providers/pinpoint/apis/onTokenReceived.native.ts +1 -0
  121. package/src/pushNotifications/providers/pinpoint/apis/onTokenReceived.ts +1 -0
  122. package/src/pushNotifications/providers/pinpoint/apis/requestPermissions.native.ts +2 -0
  123. package/src/pushNotifications/providers/pinpoint/apis/requestPermissions.ts +1 -0
  124. package/src/pushNotifications/providers/pinpoint/apis/setBadgeCount.native.ts +1 -0
  125. package/src/pushNotifications/providers/pinpoint/apis/setBadgeCount.ts +1 -0
  126. package/src/pushNotifications/providers/pinpoint/types/analytics.ts +2 -2
  127. package/src/pushNotifications/providers/pinpoint/types/inputs.ts +4 -3
  128. package/src/pushNotifications/providers/pinpoint/utils/createMessageEventRecorder.ts +5 -1
  129. package/src/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.ts +3 -1
  130. package/src/pushNotifications/providers/pinpoint/utils/getChannelType.ts +1 -0
  131. package/src/pushNotifications/providers/pinpoint/utils/resolveConfig.ts +3 -1
  132. package/src/pushNotifications/types/inputs.ts +4 -3
  133. package/src/pushNotifications/utils/getPushNotificationUserAgentString.ts +1 -1
  134. package/src/pushNotifications/utils/resolveCredentials.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"syncMessages.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/apis/syncMessages.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { InAppMessagingAction } from '@aws-amplify/core/internals/utils';\nimport { resolveEndpointId } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { defaultStorage } from '@aws-amplify/core';\nimport { resolveConfig, resolveCredentials, getInAppMessagingUserAgentString, STORAGE_KEY_SUFFIX, PINPOINT_KEY_PREFIX, CATEGORY, CHANNEL_TYPE, } from '../utils';\nimport { getInAppMessages, } from '@aws-amplify/core/internals/aws-clients/pinpoint';\nimport { assertServiceError, } from '../../../errors';\nimport { assertIsInitialized } from '../../../utils';\n/**\n * Fetch and persist messages from Pinpoint campaigns.\n * Calling this API is necessary to trigger InApp messages on the device.\n *\n * @throws service exceptions - Thrown when the underlying Pinpoint service returns an error.\n * @throws validation: {@link InAppMessagingValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect, or if In App messaging hasn't been initialized.\n * @returns A promise that will resolve when the operation is complete.\n * @example\n * ```ts\n * // Sync InApp messages with Pinpoint and device.\n * await syncMessages();\n *\n * ```\n */\nexport async function syncMessages() {\n assertIsInitialized();\n const messages = await fetchInAppMessages();\n if (!messages || messages.length === 0) {\n return;\n }\n try {\n const key = `${PINPOINT_KEY_PREFIX}${STORAGE_KEY_SUFFIX}`;\n await defaultStorage.setItem(key, JSON.stringify(messages));\n }\n catch (error) {\n assertServiceError(error);\n throw error;\n }\n}\nasync function fetchInAppMessages() {\n try {\n const { credentials, identityId } = await resolveCredentials();\n const { appId, region } = resolveConfig();\n const endpointId = await resolveEndpointId({\n appId,\n category: CATEGORY,\n channelType: CHANNEL_TYPE,\n credentials,\n identityId,\n region,\n userAgentValue: getInAppMessagingUserAgentString(InAppMessagingAction.SyncMessages),\n });\n const input = {\n ApplicationId: appId,\n EndpointId: endpointId,\n };\n const response = await getInAppMessages({ credentials, region }, input);\n const { InAppMessageCampaigns: messages } = response.InAppMessagesResponse ?? {};\n return messages;\n }\n catch (error) {\n assertServiceError(error);\n throw error;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,YAAY,GAAG;AACrC,IAAI,mBAAmB,EAAE,CAAC;AAC1B,IAAI,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAClE,QAAQ,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,MAAM,KAAK,CAAC;AACpB,KAAK;AACL,CAAC;AACD,eAAe,kBAAkB,GAAG;AACpC,IAAI,IAAI;AACR,QAAQ,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;AACvE,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;AAClD,QAAQ,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC;AACnD,YAAY,KAAK;AACjB,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,WAAW,EAAE,YAAY;AACrC,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,cAAc,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC/F,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,aAAa,EAAE,KAAK;AAChC,YAAY,UAAU,EAAE,UAAU;AAClC,SAAS,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAChF,QAAQ,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,qBAAqB,IAAI,EAAE,CAAC;AACzF,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,MAAM,KAAK,CAAC;AACpB,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"syncMessages.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/apis/syncMessages.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { InAppMessagingAction } from '@aws-amplify/core/internals/utils';\nimport { resolveEndpointId } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { defaultStorage } from '@aws-amplify/core';\nimport { getInAppMessages, } from '@aws-amplify/core/internals/aws-clients/pinpoint';\nimport { CATEGORY, CHANNEL_TYPE, PINPOINT_KEY_PREFIX, STORAGE_KEY_SUFFIX, getInAppMessagingUserAgentString, resolveConfig, resolveCredentials, } from '../utils';\nimport { assertServiceError, } from '../../../errors';\nimport { assertIsInitialized } from '../../../utils';\n/**\n * Fetch and persist messages from Pinpoint campaigns.\n * Calling this API is necessary to trigger InApp messages on the device.\n *\n * @throws service exceptions - Thrown when the underlying Pinpoint service returns an error.\n * @throws validation: {@link InAppMessagingValidationErrorCode} - Thrown when the provided parameters or library\n * configuration is incorrect, or if In App messaging hasn't been initialized.\n * @returns A promise that will resolve when the operation is complete.\n * @example\n * ```ts\n * // Sync InApp messages with Pinpoint and device.\n * await syncMessages();\n *\n * ```\n */\nexport async function syncMessages() {\n assertIsInitialized();\n const messages = await fetchInAppMessages();\n if (!messages || messages.length === 0) {\n return;\n }\n try {\n const key = `${PINPOINT_KEY_PREFIX}${STORAGE_KEY_SUFFIX}`;\n await defaultStorage.setItem(key, JSON.stringify(messages));\n }\n catch (error) {\n assertServiceError(error);\n throw error;\n }\n}\nasync function fetchInAppMessages() {\n try {\n const { credentials, identityId } = await resolveCredentials();\n const { appId, region } = resolveConfig();\n const endpointId = await resolveEndpointId({\n appId,\n category: CATEGORY,\n channelType: CHANNEL_TYPE,\n credentials,\n identityId,\n region,\n userAgentValue: getInAppMessagingUserAgentString(InAppMessagingAction.SyncMessages),\n });\n const input = {\n ApplicationId: appId,\n EndpointId: endpointId,\n };\n const response = await getInAppMessages({ credentials, region }, input);\n const { InAppMessageCampaigns: messages } = response.InAppMessagesResponse ?? {};\n return messages;\n }\n catch (error) {\n assertServiceError(error);\n throw error;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,YAAY,GAAG;AACrC,IAAI,mBAAmB,EAAE,CAAC;AAC1B,IAAI,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;AAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI;AACR,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,mBAAmB,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAClE,QAAQ,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,MAAM,KAAK,CAAC;AACpB,KAAK;AACL,CAAC;AACD,eAAe,kBAAkB,GAAG;AACpC,IAAI,IAAI;AACR,QAAQ,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAkB,EAAE,CAAC;AACvE,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;AAClD,QAAQ,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC;AACnD,YAAY,KAAK;AACjB,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,WAAW,EAAE,YAAY;AACrC,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,cAAc,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,YAAY,CAAC;AAC/F,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,KAAK,GAAG;AACtB,YAAY,aAAa,EAAE,KAAK;AAChC,YAAY,UAAU,EAAE,UAAU;AAClC,SAAS,CAAC;AACV,QAAQ,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AAChF,QAAQ,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,qBAAqB,IAAI,EAAE,CAAC;AACzF,QAAQ,OAAO,QAAQ,CAAC;AACxB,KAAK;AACL,IAAI,OAAO,KAAK,EAAE;AAClB,QAAQ,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,MAAM,KAAK,CAAC;AACpB,KAAK;AACL;;;;"}
@@ -1,6 +1,6 @@
1
+ import { InAppMessage, InAppMessageInteractionEvent, InAppMessagingEvent, InAppMessagingIdentifyUserInput } from '../../../types';
1
2
  import { IdentifyUserOptions } from './options';
2
3
  import { InAppMessageConflictHandler, OnMessageInteractionEventHandler } from './types';
3
- import { InAppMessage, InAppMessageInteractionEvent, InAppMessagingEvent, InAppMessagingIdentifyUserInput } from '../../../types';
4
4
  /**
5
5
  * Input type for Pinpoint identifyUser API.
6
6
  */
@@ -32,7 +32,7 @@ export type OnMessageActionTakenInput = OnMessageInteractionEventHandler;
32
32
  /**
33
33
  * Input type for NotifyMessageInteraction API.
34
34
  */
35
- export type NotifyMessageInteractionInput = {
35
+ export interface NotifyMessageInteractionInput {
36
36
  message: InAppMessage;
37
37
  type: InAppMessageInteractionEvent;
38
- };
38
+ }
@@ -1,14 +1,14 @@
1
1
  import { InAppMessage } from '../../../types';
2
2
  export type InAppMessageCountMap = Record<string, number>;
3
- export type DailyInAppMessageCounter = {
3
+ export interface DailyInAppMessageCounter {
4
4
  count: number;
5
5
  lastCountTimestamp: string;
6
- };
7
- export type InAppMessageCounts = {
6
+ }
7
+ export interface InAppMessageCounts {
8
8
  sessionCount: number;
9
9
  dailyCount: number;
10
10
  totalCount: number;
11
- };
11
+ }
12
12
  export type MetricsComparator = (metricsVal: number, eventVal: number) => boolean;
13
13
  export declare enum PinpointMessageEvent {
14
14
  MESSAGE_DISPLAYED = "_inapp.message_displayed",
@@ -0,0 +1,13 @@
1
+ import { InAppMessageConflictHandler, SetConflictHandlerInput } from '../types';
2
+ /**
3
+ * Sets conflict handler.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare const setConflictHandler: (input: SetConflictHandlerInput) => void;
8
+ /**
9
+ * Returns the current conflict handler.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare const getConflictHandler: () => InAppMessageConflictHandler;
@@ -0,0 +1,46 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * The default conflict handler. Can be overridden by `setConflictHandler`.
5
+ */
6
+ let conflictHandler = (messages) => {
7
+ // default behavior is to return the message closest to expiry
8
+ // this function assumes that messages processed by providers already filters out expired messages
9
+ const sorted = messages.sort((a, b) => {
10
+ const endDateA = a.metadata?.endDate;
11
+ const endDateB = b.metadata?.endDate;
12
+ // if both message end dates are falsy or have the same date string, treat them as equal
13
+ if (endDateA === endDateB) {
14
+ return 0;
15
+ }
16
+ // if only message A has an end date, treat it as closer to expiry
17
+ if (endDateA && !endDateB) {
18
+ return -1;
19
+ }
20
+ // if only message B has an end date, treat it as closer to expiry
21
+ if (!endDateA && endDateB) {
22
+ return 1;
23
+ }
24
+ // otherwise, compare them
25
+ return new Date(endDateA) < new Date(endDateB) ? -1 : 1;
26
+ });
27
+ // always return the top sorted
28
+ return sorted[0];
29
+ };
30
+ /**
31
+ * Sets conflict handler.
32
+ *
33
+ * @internal
34
+ */
35
+ const setConflictHandler = (input) => {
36
+ conflictHandler = input;
37
+ };
38
+ /**
39
+ * Returns the current conflict handler.
40
+ *
41
+ * @internal
42
+ */
43
+ const getConflictHandler = () => conflictHandler;
44
+
45
+ export { getConflictHandler, setConflictHandler };
46
+ //# sourceMappingURL=conflictHandlerManager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflictHandlerManager.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n/**\n * The default conflict handler. Can be overridden by `setConflictHandler`.\n */\nlet conflictHandler = (messages) => {\n // default behavior is to return the message closest to expiry\n // this function assumes that messages processed by providers already filters out expired messages\n const sorted = messages.sort((a, b) => {\n const endDateA = a.metadata?.endDate;\n const endDateB = b.metadata?.endDate;\n // if both message end dates are falsy or have the same date string, treat them as equal\n if (endDateA === endDateB) {\n return 0;\n }\n // if only message A has an end date, treat it as closer to expiry\n if (endDateA && !endDateB) {\n return -1;\n }\n // if only message B has an end date, treat it as closer to expiry\n if (!endDateA && endDateB) {\n return 1;\n }\n // otherwise, compare them\n return new Date(endDateA) < new Date(endDateB) ? -1 : 1;\n });\n // always return the top sorted\n return sorted[0];\n};\n/**\n * Sets conflict handler.\n *\n * @internal\n */\nexport const setConflictHandler = (input) => {\n conflictHandler = input;\n};\n/**\n * Returns the current conflict handler.\n *\n * @internal\n */\nexport const getConflictHandler = () => conflictHandler;\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG,CAAC,QAAQ,KAAK;AACpC;AACA;AACA,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC3C,QAAQ,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC7C,QAAQ,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC7C;AACA,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACnC,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACnC,YAAY,OAAO,CAAC,CAAC,CAAC;AACtB,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE;AACnC,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT;AACA,QAAQ,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAChE,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACY,MAAC,kBAAkB,GAAG,CAAC,KAAK,KAAK;AAC7C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,EAAE;AACF;AACA;AACA;AACA;AACA;AACY,MAAC,kBAAkB,GAAG,MAAM;;;;"}
@@ -14,4 +14,4 @@ export declare const isQuietTime: (message: PinpointInAppMessage) => boolean;
14
14
  export declare const clearMemo: () => void;
15
15
  export declare const interpretLayout: (layout: NonNullable<PinpointInAppMessage['InAppMessage']>['Layout']) => InAppMessageLayout;
16
16
  export declare const extractContent: ({ InAppMessage: message, }: PinpointInAppMessage) => InAppMessageContent[];
17
- export declare const extractMetadata: ({ InAppMessage, Priority, Schedule, TreatmentId, }: PinpointInAppMessage) => any;
17
+ export declare const extractMetadata: ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }: PinpointInAppMessage) => InAppMessage['metadata'];
@@ -50,7 +50,7 @@ const getStartOfDay = () => {
50
50
  const matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {
51
51
  const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};
52
52
  const memoKey = `${CampaignId}:${eventType}`;
53
- if (!eventNameMemo.hasOwnProperty(memoKey)) {
53
+ if (!Object.prototype.hasOwnProperty.call(eventNameMemo, memoKey)) {
54
54
  eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);
55
55
  }
56
56
  return eventNameMemo[memoKey];
@@ -66,7 +66,7 @@ const matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {
66
66
  return false;
67
67
  }
68
68
  const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;
69
- if (!eventAttributesMemo.hasOwnProperty(memoKey)) {
69
+ if (!Object.prototype.hasOwnProperty.call(eventAttributesMemo, memoKey)) {
70
70
  eventAttributesMemo[memoKey] =
71
71
  !Attributes ||
72
72
  Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));
@@ -84,7 +84,7 @@ const matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {
84
84
  return false;
85
85
  }
86
86
  const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;
87
- if (!eventMetricsMemo.hasOwnProperty(memoKey)) {
87
+ if (!Object.prototype.hasOwnProperty.call(eventMetricsMemo, memoKey)) {
88
88
  eventMetricsMemo[memoKey] =
89
89
  !Metrics ||
90
90
  Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {
@@ -142,11 +142,11 @@ const isQuietTime = (message) => {
142
142
  if (start > end) {
143
143
  end.setDate(end.getDate() + 1);
144
144
  }
145
- const isQuietTime = now >= start && now <= end;
146
- if (isQuietTime) {
145
+ const isDuringQuietTime = now >= start && now <= end;
146
+ if (isDuringQuietTime) {
147
147
  logger.debug('message filtered due to quiet time', message);
148
148
  }
149
- return isQuietTime;
149
+ return isDuringQuietTime;
150
150
  };
151
151
  const clearMemo = () => {
152
152
  eventNameMemo = {};
@@ -239,8 +239,8 @@ const extractContent = ({ InAppMessage: message, }) => {
239
239
  return extractedContent;
240
240
  }) ?? []);
241
241
  };
242
- const extractMetadata = ({ InAppMessage, Priority, Schedule, TreatmentId, }) => ({
243
- customData: InAppMessage?.CustomConfig,
242
+ const extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }) => ({
243
+ customData: inAppMessage?.CustomConfig,
244
244
  endDate: Schedule?.EndDate,
245
245
  priority: Priority,
246
246
  treatmentId: TreatmentId,
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { InAppMessagingAction } from '@aws-amplify/core/internals/utils';\nimport isEmpty from 'lodash/isEmpty.js';\nimport { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { resolveConfig } from './resolveConfig';\nimport { resolveCredentials } from './resolveCredentials';\nimport { CATEGORY } from './constants';\nimport { getInAppMessagingUserAgentString } from './userAgent';\nconst DELIVERY_TYPE = 'IN_APP_MESSAGE';\nlet eventNameMemo = {};\nlet eventAttributesMemo = {};\nlet eventMetricsMemo = {};\nexport const logger = new ConsoleLogger('InAppMessaging.Pinpoint.Utils');\nexport const recordAnalyticsEvent = (event, message) => {\n const { appId, region } = resolveConfig();\n const { id, metadata } = message;\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n recordCore({\n appId,\n category: CATEGORY,\n credentials,\n event: {\n name: event,\n attributes: {\n // only include campaign_id field if we have one\n ...(id && { campaign_id: id }),\n delivery_type: DELIVERY_TYPE,\n treatment_id: metadata?.treatmentId,\n },\n },\n identityId,\n region,\n userAgentValue: getInAppMessagingUserAgentString(InAppMessagingAction.NotifyMessageInteraction),\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};\nexport const getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\nexport const matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {\n const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};\n const memoKey = `${CampaignId}:${eventType}`;\n if (!eventNameMemo.hasOwnProperty(memoKey)) {\n eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);\n }\n return eventNameMemo[memoKey];\n};\nexport const matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {\n const { Attributes } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Attributes)) {\n // if message does not have attributes defined it does not matter what attributes are on the event\n return true;\n }\n if (isEmpty(attributes)) {\n // if message does have attributes but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;\n if (!eventAttributesMemo.hasOwnProperty(memoKey)) {\n eventAttributesMemo[memoKey] =\n !Attributes ||\n Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));\n }\n return eventAttributesMemo[memoKey];\n};\nexport const matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {\n const { Metrics } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Metrics)) {\n // if message does not have metrics defined it does not matter what metrics are on the event\n return true;\n }\n if (isEmpty(metrics)) {\n // if message does have metrics but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;\n if (!eventMetricsMemo.hasOwnProperty(memoKey)) {\n eventMetricsMemo[memoKey] =\n !Metrics ||\n Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {\n const compare = getComparator(ComparisonOperator);\n // if there is some unknown comparison operator, treat as a comparison failure\n return compare && !!Value ? compare(Value, metrics[key]) : false;\n });\n }\n return eventMetricsMemo[memoKey];\n};\nexport const getComparator = (operator) => {\n switch (operator) {\n case 'EQUAL':\n return (metricsVal, eventVal) => metricsVal === eventVal;\n case 'GREATER_THAN':\n return (metricsVal, eventVal) => metricsVal < eventVal;\n case 'GREATER_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal <= eventVal;\n case 'LESS_THAN':\n return (metricsVal, eventVal) => metricsVal > eventVal;\n case 'LESS_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal >= eventVal;\n default:\n return undefined;\n }\n};\nexport const isBeforeEndDate = ({ Schedule, }) => {\n if (!Schedule?.EndDate) {\n return true;\n }\n return new Date() < new Date(Schedule.EndDate);\n};\nexport const isQuietTime = (message) => {\n const { Schedule } = message;\n if (!Schedule?.QuietTime) {\n return false;\n }\n const pattern = /^[0-2]\\d:[0-5]\\d$/; // basic sanity check, not a fully featured HH:MM validation\n const { Start, End } = Schedule.QuietTime;\n if (!Start ||\n !End ||\n Start === End ||\n !pattern.test(Start) ||\n !pattern.test(End)) {\n return false;\n }\n const now = new Date();\n const start = new Date(now);\n const end = new Date(now);\n const [startHours, startMinutes] = Start.split(':');\n const [endHours, endMinutes] = End.split(':');\n start.setHours(Number.parseInt(startHours, 10), Number.parseInt(startMinutes, 10), 0, 0);\n end.setHours(Number.parseInt(endHours, 10), Number.parseInt(endMinutes, 10), 0, 0);\n // if quiet time includes midnight, bump the end time to the next day\n if (start > end) {\n end.setDate(end.getDate() + 1);\n }\n const isQuietTime = now >= start && now <= end;\n if (isQuietTime) {\n logger.debug('message filtered due to quiet time', message);\n }\n return isQuietTime;\n};\nexport const clearMemo = () => {\n eventNameMemo = {};\n eventAttributesMemo = {};\n eventMetricsMemo = {};\n};\n// in the pinpoint console when a message is created with a Modal or Full Screen layout,\n// it is assigned a layout value of MOBILE_FEED or OVERLAYS respectively in the message payload.\n// In the future, Pinpoint will be updating the layout values in the aforementioned scenario\n// to MODAL and FULL_SCREEN.\n//\n// This utility acts as a safeguard to ensure that:\n// - 1. the usage of MOBILE_FEED and OVERLAYS as values for message layouts are not leaked\n// outside the Pinpoint provider\n// - 2. Amplify correctly handles the legacy layout values from Pinpoint after they are updated\nexport const interpretLayout = (layout) => {\n if (layout === 'MOBILE_FEED') {\n return 'MODAL';\n }\n if (layout === 'OVERLAYS') {\n return 'FULL_SCREEN';\n }\n // cast as PinpointInAppMessage['InAppMessage']['Layout'] allows `string` as a value\n return layout;\n};\nexport const extractContent = ({ InAppMessage: message, }) => {\n return (message?.Content?.map(content => {\n const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;\n const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;\n const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;\n const extractedContent = {};\n if (BackgroundColor) {\n extractedContent.container = {\n style: {\n backgroundColor: BackgroundColor,\n },\n };\n }\n if (HeaderConfig) {\n extractedContent.header = {\n // Default to empty string in rare cases we don't have a Header value\n content: HeaderConfig.Header ?? '',\n style: {\n color: HeaderConfig.TextColor,\n textAlign: HeaderConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (BodyConfig) {\n extractedContent.body = {\n // Default to empty string in rare cases we don't have a Body value\n content: BodyConfig.Body ?? '',\n style: {\n color: BodyConfig.TextColor,\n textAlign: BodyConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (ImageUrl) {\n extractedContent.image = {\n src: ImageUrl,\n };\n }\n if (defaultPrimaryButton) {\n extractedContent.primaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultPrimaryButton.Text ?? '',\n action: defaultPrimaryButton.ButtonAction,\n url: defaultPrimaryButton.Link,\n style: {\n backgroundColor: defaultPrimaryButton.BackgroundColor,\n borderRadius: defaultPrimaryButton.BorderRadius,\n color: defaultPrimaryButton.TextColor,\n },\n };\n }\n if (defaultSecondaryButton) {\n extractedContent.secondaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultSecondaryButton.Text ?? '',\n action: defaultSecondaryButton.ButtonAction,\n url: defaultSecondaryButton.Link,\n style: {\n backgroundColor: defaultSecondaryButton.BackgroundColor,\n borderRadius: defaultSecondaryButton.BorderRadius,\n color: defaultSecondaryButton.TextColor,\n },\n };\n }\n return extractedContent;\n }) ?? []);\n};\nexport const extractMetadata = ({ InAppMessage, Priority, Schedule, TreatmentId, }) => ({\n customData: InAppMessage?.CustomConfig,\n endDate: Schedule?.EndDate,\n priority: Priority,\n treatmentId: TreatmentId,\n});\n"],"names":["recordCore"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { InAppMessagingAction } from '@aws-amplify/core/internals/utils';\nimport isEmpty from 'lodash/isEmpty.js';\nimport { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { resolveConfig } from './resolveConfig';\nimport { resolveCredentials } from './resolveCredentials';\nimport { CATEGORY } from './constants';\nimport { getInAppMessagingUserAgentString } from './userAgent';\nconst DELIVERY_TYPE = 'IN_APP_MESSAGE';\nlet eventNameMemo = {};\nlet eventAttributesMemo = {};\nlet eventMetricsMemo = {};\nexport const logger = new ConsoleLogger('InAppMessaging.Pinpoint.Utils');\nexport const recordAnalyticsEvent = (event, message) => {\n const { appId, region } = resolveConfig();\n const { id, metadata } = message;\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n recordCore({\n appId,\n category: CATEGORY,\n credentials,\n event: {\n name: event,\n attributes: {\n // only include campaign_id field if we have one\n ...(id && { campaign_id: id }),\n delivery_type: DELIVERY_TYPE,\n treatment_id: metadata?.treatmentId,\n },\n },\n identityId,\n region,\n userAgentValue: getInAppMessagingUserAgentString(InAppMessagingAction.NotifyMessageInteraction),\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};\nexport const getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\nexport const matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {\n const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};\n const memoKey = `${CampaignId}:${eventType}`;\n if (!Object.prototype.hasOwnProperty.call(eventNameMemo, memoKey)) {\n eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);\n }\n return eventNameMemo[memoKey];\n};\nexport const matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {\n const { Attributes } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Attributes)) {\n // if message does not have attributes defined it does not matter what attributes are on the event\n return true;\n }\n if (isEmpty(attributes)) {\n // if message does have attributes but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;\n if (!Object.prototype.hasOwnProperty.call(eventAttributesMemo, memoKey)) {\n eventAttributesMemo[memoKey] =\n !Attributes ||\n Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));\n }\n return eventAttributesMemo[memoKey];\n};\nexport const matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {\n const { Metrics } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Metrics)) {\n // if message does not have metrics defined it does not matter what metrics are on the event\n return true;\n }\n if (isEmpty(metrics)) {\n // if message does have metrics but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;\n if (!Object.prototype.hasOwnProperty.call(eventMetricsMemo, memoKey)) {\n eventMetricsMemo[memoKey] =\n !Metrics ||\n Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {\n const compare = getComparator(ComparisonOperator);\n // if there is some unknown comparison operator, treat as a comparison failure\n return compare && !!Value ? compare(Value, metrics[key]) : false;\n });\n }\n return eventMetricsMemo[memoKey];\n};\nexport const getComparator = (operator) => {\n switch (operator) {\n case 'EQUAL':\n return (metricsVal, eventVal) => metricsVal === eventVal;\n case 'GREATER_THAN':\n return (metricsVal, eventVal) => metricsVal < eventVal;\n case 'GREATER_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal <= eventVal;\n case 'LESS_THAN':\n return (metricsVal, eventVal) => metricsVal > eventVal;\n case 'LESS_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal >= eventVal;\n default:\n return undefined;\n }\n};\nexport const isBeforeEndDate = ({ Schedule, }) => {\n if (!Schedule?.EndDate) {\n return true;\n }\n return new Date() < new Date(Schedule.EndDate);\n};\nexport const isQuietTime = (message) => {\n const { Schedule } = message;\n if (!Schedule?.QuietTime) {\n return false;\n }\n const pattern = /^[0-2]\\d:[0-5]\\d$/; // basic sanity check, not a fully featured HH:MM validation\n const { Start, End } = Schedule.QuietTime;\n if (!Start ||\n !End ||\n Start === End ||\n !pattern.test(Start) ||\n !pattern.test(End)) {\n return false;\n }\n const now = new Date();\n const start = new Date(now);\n const end = new Date(now);\n const [startHours, startMinutes] = Start.split(':');\n const [endHours, endMinutes] = End.split(':');\n start.setHours(Number.parseInt(startHours, 10), Number.parseInt(startMinutes, 10), 0, 0);\n end.setHours(Number.parseInt(endHours, 10), Number.parseInt(endMinutes, 10), 0, 0);\n // if quiet time includes midnight, bump the end time to the next day\n if (start > end) {\n end.setDate(end.getDate() + 1);\n }\n const isDuringQuietTime = now >= start && now <= end;\n if (isDuringQuietTime) {\n logger.debug('message filtered due to quiet time', message);\n }\n return isDuringQuietTime;\n};\nexport const clearMemo = () => {\n eventNameMemo = {};\n eventAttributesMemo = {};\n eventMetricsMemo = {};\n};\n// in the pinpoint console when a message is created with a Modal or Full Screen layout,\n// it is assigned a layout value of MOBILE_FEED or OVERLAYS respectively in the message payload.\n// In the future, Pinpoint will be updating the layout values in the aforementioned scenario\n// to MODAL and FULL_SCREEN.\n//\n// This utility acts as a safeguard to ensure that:\n// - 1. the usage of MOBILE_FEED and OVERLAYS as values for message layouts are not leaked\n// outside the Pinpoint provider\n// - 2. Amplify correctly handles the legacy layout values from Pinpoint after they are updated\nexport const interpretLayout = (layout) => {\n if (layout === 'MOBILE_FEED') {\n return 'MODAL';\n }\n if (layout === 'OVERLAYS') {\n return 'FULL_SCREEN';\n }\n // cast as PinpointInAppMessage['InAppMessage']['Layout'] allows `string` as a value\n return layout;\n};\nexport const extractContent = ({ InAppMessage: message, }) => {\n return (message?.Content?.map(content => {\n const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;\n const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;\n const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;\n const extractedContent = {};\n if (BackgroundColor) {\n extractedContent.container = {\n style: {\n backgroundColor: BackgroundColor,\n },\n };\n }\n if (HeaderConfig) {\n extractedContent.header = {\n // Default to empty string in rare cases we don't have a Header value\n content: HeaderConfig.Header ?? '',\n style: {\n color: HeaderConfig.TextColor,\n textAlign: HeaderConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (BodyConfig) {\n extractedContent.body = {\n // Default to empty string in rare cases we don't have a Body value\n content: BodyConfig.Body ?? '',\n style: {\n color: BodyConfig.TextColor,\n textAlign: BodyConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (ImageUrl) {\n extractedContent.image = {\n src: ImageUrl,\n };\n }\n if (defaultPrimaryButton) {\n extractedContent.primaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultPrimaryButton.Text ?? '',\n action: defaultPrimaryButton.ButtonAction,\n url: defaultPrimaryButton.Link,\n style: {\n backgroundColor: defaultPrimaryButton.BackgroundColor,\n borderRadius: defaultPrimaryButton.BorderRadius,\n color: defaultPrimaryButton.TextColor,\n },\n };\n }\n if (defaultSecondaryButton) {\n extractedContent.secondaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultSecondaryButton.Text ?? '',\n action: defaultSecondaryButton.ButtonAction,\n url: defaultSecondaryButton.Link,\n style: {\n backgroundColor: defaultSecondaryButton.BackgroundColor,\n borderRadius: defaultSecondaryButton.BorderRadius,\n color: defaultSecondaryButton.TextColor,\n },\n };\n }\n return extractedContent;\n }) ?? []);\n};\nexport const extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }) => ({\n customData: inAppMessage?.CustomConfig,\n endDate: Schedule?.EndDate,\n priority: Priority,\n treatmentId: TreatmentId,\n});\n"],"names":["recordCore"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export { getConflictHandler, setConflictHandler, } from './conflictHandlerManager';
1
2
  export { resolveConfig } from './resolveConfig';
2
3
  export { resolveCredentials } from './resolveCredentials';
3
4
  export { getInAppMessagingUserAgentString } from './userAgent';
@@ -1,3 +1,4 @@
1
+ export { getConflictHandler, setConflictHandler } from './conflictHandlerManager.mjs';
1
2
  export { resolveConfig } from './resolveConfig.mjs';
2
3
  export { resolveCredentials } from './resolveCredentials.mjs';
3
4
  export { getInAppMessagingUserAgentString } from './userAgent.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,6 +1,6 @@
1
- import { InAppMessage, InAppMessagingEvent } from '../../../types';
2
1
  import type { InAppMessageCampaign as PinpointInAppMessage } from '@aws-amplify/core/internals/aws-clients/pinpoint';
3
2
  import { SessionState } from '@aws-amplify/core/internals/utils';
3
+ import { InAppMessage, InAppMessagingEvent } from '../../../types';
4
4
  export declare function processInAppMessages(messages: PinpointInAppMessage[], event: InAppMessagingEvent): Promise<InAppMessage[]>;
5
5
  export declare function sessionStateChangeHandler(state: SessionState): void;
6
6
  export declare function incrementMessageCounts(messageId: string): Promise<void>;
@@ -1,5 +1,5 @@
1
- import { matchesEventType, matchesAttributes, matchesMetrics, isBeforeEndDate, extractContent, interpretLayout, extractMetadata } from './helpers.mjs';
2
1
  import { ConsoleLogger, defaultStorage } from '@aws-amplify/core';
2
+ import { matchesEventType, matchesAttributes, matchesMetrics, isBeforeEndDate, extractContent, interpretLayout, extractMetadata } from './helpers.mjs';
3
3
 
4
4
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
5
  // SPDX-License-Identifier: Apache-2.0
@@ -10,8 +10,7 @@ let sessionMessageCountMap = {};
10
10
  async function processInAppMessages(messages, event) {
11
11
  let highestPrioritySeen;
12
12
  let acc = [];
13
- for (let index = 0; index < messages.length; index++) {
14
- const message = messages[index];
13
+ for (const message of messages) {
15
14
  const messageQualifies = matchesEventType(message, event) &&
16
15
  matchesAttributes(message, event) &&
17
16
  matchesMetrics(message, event) &&
@@ -61,14 +60,14 @@ async function incrementMessageCounts(messageId) {
61
60
  }
62
61
  function normalizeMessages(messages) {
63
62
  return messages.map(message => {
64
- const { CampaignId, InAppMessage } = message;
63
+ const { CampaignId, InAppMessage: pinpointInAppMessage } = message;
65
64
  return {
66
65
  // Default to empty string in rare cases we don't have a campaignId
67
66
  id: CampaignId ?? '',
68
67
  content: extractContent(message),
69
68
  // Default to TOP_BANNER layout in rare cases we don't have a Layout
70
- layout: InAppMessage?.Layout
71
- ? interpretLayout(InAppMessage.Layout)
69
+ layout: pinpointInAppMessage?.Layout
70
+ ? interpretLayout(pinpointInAppMessage.Layout)
72
71
  : 'TOP_BANNER',
73
72
  metadata: extractMetadata(message),
74
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"messageProcessingHelpers.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { extractContent, extractMetadata, interpretLayout, isBeforeEndDate, matchesAttributes, matchesEventType, matchesMetrics, } from './helpers';\nimport { defaultStorage, ConsoleLogger } from '@aws-amplify/core';\nconst MESSAGE_DAILY_COUNT_KEY = 'pinpointProvider_inAppMessages_dailyCount';\nconst MESSAGE_TOTAL_COUNT_KEY = 'pinpointProvider_inAppMessages_totalCount';\nconst logger = new ConsoleLogger('InAppMessaging.processInAppMessages');\nlet sessionMessageCountMap = {};\nexport async function processInAppMessages(messages, event) {\n let highestPrioritySeen;\n let acc = [];\n for (let index = 0; index < messages.length; index++) {\n const message = messages[index];\n const messageQualifies = matchesEventType(message, event) &&\n matchesAttributes(message, event) &&\n matchesMetrics(message, event) &&\n isBeforeEndDate(message) &&\n (await isBelowCap(message));\n // filter all qualifying messages returning only those that are of (relative) highest priority\n if (messageQualifies) {\n // have not yet encountered message with priority\n if (!highestPrioritySeen) {\n // this message has priority, so reset the accumulator with this message only\n if (message.Priority) {\n highestPrioritySeen = message.Priority;\n acc = [message];\n }\n else {\n // this message also has no priority, so just add this message to accumulator\n acc.push(message);\n }\n // have previously encountered message with priority, so only messages with priority matter now\n }\n else if (message.Priority) {\n // this message has higher priority (lower number), so reset the accumulator with this message only\n if (message.Priority < highestPrioritySeen) {\n highestPrioritySeen = message.Priority;\n acc = [message];\n // this message has the same priority, so just add this message to accumulator\n }\n else if (message.Priority === highestPrioritySeen) {\n acc.push(message);\n }\n }\n }\n }\n return normalizeMessages(acc);\n}\nexport function sessionStateChangeHandler(state) {\n if (state === 'started') {\n // reset all session counts\n sessionMessageCountMap = {};\n }\n}\nexport async function incrementMessageCounts(messageId) {\n const { sessionCount, dailyCount, totalCount } = await getMessageCounts(messageId);\n setSessionCount(messageId, sessionCount + 1);\n setDailyCount(dailyCount + 1);\n await setTotalCount(messageId, totalCount + 1);\n}\nfunction normalizeMessages(messages) {\n return messages.map(message => {\n const { CampaignId, InAppMessage } = message;\n return {\n // Default to empty string in rare cases we don't have a campaignId\n id: CampaignId ?? '',\n content: extractContent(message),\n // Default to TOP_BANNER layout in rare cases we don't have a Layout\n layout: InAppMessage?.Layout\n ? interpretLayout(InAppMessage.Layout)\n : 'TOP_BANNER',\n metadata: extractMetadata(message),\n };\n });\n}\nasync function isBelowCap({ CampaignId, SessionCap, DailyCap, TotalCap, }) {\n const { sessionCount, dailyCount, totalCount } = await getMessageCounts(CampaignId);\n return ((!SessionCap || sessionCount < SessionCap) &&\n (!DailyCap || dailyCount < DailyCap) &&\n (!TotalCap || totalCount < TotalCap));\n}\nasync function getMessageCounts(messageId) {\n let messageCounts = {\n sessionCount: 0,\n dailyCount: 0,\n totalCount: 0,\n };\n try {\n // only return true counts if there is a messageId else default to 0\n if (messageId)\n messageCounts = {\n sessionCount: getSessionCount(messageId),\n dailyCount: await getDailyCount(),\n totalCount: await getTotalCount(messageId),\n };\n return messageCounts;\n }\n catch (err) {\n logger.error('Failed to get message counts from storage', err);\n // If there are no cached counts or there is an error,\n // we default to 0 allowing all the messages to be eligible\n return messageCounts;\n }\n}\nfunction getSessionCount(messageId) {\n return sessionMessageCountMap[messageId] ?? 0;\n}\nfunction setSessionCount(messageId, count) {\n sessionMessageCountMap[messageId] = count;\n}\nfunction setDailyCount(count) {\n const dailyCount = {\n count,\n lastCountTimestamp: getStartOfDay(),\n };\n try {\n defaultStorage.setItem(MESSAGE_DAILY_COUNT_KEY, JSON.stringify(dailyCount));\n }\n catch (err) {\n logger.error('Failed to save daily message count to storage', err);\n }\n}\nfunction setTotalCountMap(countMap) {\n try {\n defaultStorage.setItem(MESSAGE_TOTAL_COUNT_KEY, JSON.stringify(countMap));\n }\n catch (err) {\n logger.error('Failed to save total count to storage', err);\n }\n}\nasync function setTotalCount(messageId, count) {\n const totalCountMap = await getTotalCountMap();\n const updatedMap = {\n ...totalCountMap,\n [messageId]: count,\n };\n setTotalCountMap(updatedMap);\n}\nasync function getDailyCount() {\n const today = getStartOfDay();\n const item = await defaultStorage.getItem(MESSAGE_DAILY_COUNT_KEY);\n // Parse stored count or initialize as empty count\n const counter = item\n ? JSON.parse(item)\n : { count: 0, lastCountTimestamp: today };\n // If the stored counter timestamp is today, use it as the count, otherwise reset to 0\n return counter.lastCountTimestamp === today ? counter.count : 0;\n}\nasync function getTotalCountMap() {\n const item = await defaultStorage.getItem(MESSAGE_TOTAL_COUNT_KEY);\n // Parse stored count map or initialize as empty\n return item ? JSON.parse(item) : {};\n}\nasync function getTotalCount(messageId) {\n const countMap = await getTotalCountMap();\n // Return stored count or initialize as empty count\n return countMap[messageId] || 0;\n}\nconst getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageProcessingHelpers.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger, defaultStorage } from '@aws-amplify/core';\nimport { extractContent, extractMetadata, interpretLayout, isBeforeEndDate, matchesAttributes, matchesEventType, matchesMetrics, } from './helpers';\nconst MESSAGE_DAILY_COUNT_KEY = 'pinpointProvider_inAppMessages_dailyCount';\nconst MESSAGE_TOTAL_COUNT_KEY = 'pinpointProvider_inAppMessages_totalCount';\nconst logger = new ConsoleLogger('InAppMessaging.processInAppMessages');\nlet sessionMessageCountMap = {};\nexport async function processInAppMessages(messages, event) {\n let highestPrioritySeen;\n let acc = [];\n for (const message of messages) {\n const messageQualifies = matchesEventType(message, event) &&\n matchesAttributes(message, event) &&\n matchesMetrics(message, event) &&\n isBeforeEndDate(message) &&\n (await isBelowCap(message));\n // filter all qualifying messages returning only those that are of (relative) highest priority\n if (messageQualifies) {\n // have not yet encountered message with priority\n if (!highestPrioritySeen) {\n // this message has priority, so reset the accumulator with this message only\n if (message.Priority) {\n highestPrioritySeen = message.Priority;\n acc = [message];\n }\n else {\n // this message also has no priority, so just add this message to accumulator\n acc.push(message);\n }\n // have previously encountered message with priority, so only messages with priority matter now\n }\n else if (message.Priority) {\n // this message has higher priority (lower number), so reset the accumulator with this message only\n if (message.Priority < highestPrioritySeen) {\n highestPrioritySeen = message.Priority;\n acc = [message];\n // this message has the same priority, so just add this message to accumulator\n }\n else if (message.Priority === highestPrioritySeen) {\n acc.push(message);\n }\n }\n }\n }\n return normalizeMessages(acc);\n}\nexport function sessionStateChangeHandler(state) {\n if (state === 'started') {\n // reset all session counts\n sessionMessageCountMap = {};\n }\n}\nexport async function incrementMessageCounts(messageId) {\n const { sessionCount, dailyCount, totalCount } = await getMessageCounts(messageId);\n setSessionCount(messageId, sessionCount + 1);\n setDailyCount(dailyCount + 1);\n await setTotalCount(messageId, totalCount + 1);\n}\nfunction normalizeMessages(messages) {\n return messages.map(message => {\n const { CampaignId, InAppMessage: pinpointInAppMessage } = message;\n return {\n // Default to empty string in rare cases we don't have a campaignId\n id: CampaignId ?? '',\n content: extractContent(message),\n // Default to TOP_BANNER layout in rare cases we don't have a Layout\n layout: pinpointInAppMessage?.Layout\n ? interpretLayout(pinpointInAppMessage.Layout)\n : 'TOP_BANNER',\n metadata: extractMetadata(message),\n };\n });\n}\nasync function isBelowCap({ CampaignId, SessionCap, DailyCap, TotalCap, }) {\n const { sessionCount, dailyCount, totalCount } = await getMessageCounts(CampaignId);\n return ((!SessionCap || sessionCount < SessionCap) &&\n (!DailyCap || dailyCount < DailyCap) &&\n (!TotalCap || totalCount < TotalCap));\n}\nasync function getMessageCounts(messageId) {\n let messageCounts = {\n sessionCount: 0,\n dailyCount: 0,\n totalCount: 0,\n };\n try {\n // only return true counts if there is a messageId else default to 0\n if (messageId)\n messageCounts = {\n sessionCount: getSessionCount(messageId),\n dailyCount: await getDailyCount(),\n totalCount: await getTotalCount(messageId),\n };\n return messageCounts;\n }\n catch (err) {\n logger.error('Failed to get message counts from storage', err);\n // If there are no cached counts or there is an error,\n // we default to 0 allowing all the messages to be eligible\n return messageCounts;\n }\n}\nfunction getSessionCount(messageId) {\n return sessionMessageCountMap[messageId] ?? 0;\n}\nfunction setSessionCount(messageId, count) {\n sessionMessageCountMap[messageId] = count;\n}\nfunction setDailyCount(count) {\n const dailyCount = {\n count,\n lastCountTimestamp: getStartOfDay(),\n };\n try {\n defaultStorage.setItem(MESSAGE_DAILY_COUNT_KEY, JSON.stringify(dailyCount));\n }\n catch (err) {\n logger.error('Failed to save daily message count to storage', err);\n }\n}\nfunction setTotalCountMap(countMap) {\n try {\n defaultStorage.setItem(MESSAGE_TOTAL_COUNT_KEY, JSON.stringify(countMap));\n }\n catch (err) {\n logger.error('Failed to save total count to storage', err);\n }\n}\nasync function setTotalCount(messageId, count) {\n const totalCountMap = await getTotalCountMap();\n const updatedMap = {\n ...totalCountMap,\n [messageId]: count,\n };\n setTotalCountMap(updatedMap);\n}\nasync function getDailyCount() {\n const today = getStartOfDay();\n const item = await defaultStorage.getItem(MESSAGE_DAILY_COUNT_KEY);\n // Parse stored count or initialize as empty count\n const counter = item\n ? JSON.parse(item)\n : { count: 0, lastCountTimestamp: today };\n // If the stored counter timestamp is today, use it as the count, otherwise reset to 0\n return counter.lastCountTimestamp === today ? counter.count : 0;\n}\nasync function getTotalCountMap() {\n const item = await defaultStorage.getItem(MESSAGE_TOTAL_COUNT_KEY);\n // Parse stored count map or initialize as empty\n return item ? JSON.parse(item) : {};\n}\nasync function getTotalCount(messageId) {\n const countMap = await getTotalCountMap();\n // Return stored count or initialize as empty count\n return countMap[messageId] || 0;\n}\nconst getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"userAgent.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/userAgent.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Category, getAmplifyUserAgentObject, getAmplifyUserAgent, } from '@aws-amplify/core/internals/utils';\nexport function getInAppMessagingUserAgent(action) {\n return getAmplifyUserAgentObject({\n category: Category.InAppMessaging,\n action,\n });\n}\nexport function getInAppMessagingUserAgentString(action) {\n return getAmplifyUserAgent({\n category: Category.InAppMessaging,\n action,\n });\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAEO,SAAS,0BAA0B,CAAC,MAAM,EAAE;AACnD,IAAI,OAAO,yBAAyB,CAAC;AACrC,QAAQ,QAAQ,EAAE,QAAQ,CAAC,cAAc;AACzC,QAAQ,MAAM;AACd,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,gCAAgC,CAAC,MAAM,EAAE;AACzD,IAAI,OAAO,mBAAmB,CAAC;AAC/B,QAAQ,QAAQ,EAAE,QAAQ,CAAC,cAAc;AACzC,QAAQ,MAAM;AACd,KAAK,CAAC,CAAC;AACP;;;;"}
1
+ {"version":3,"file":"userAgent.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/userAgent.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Category, getAmplifyUserAgent, getAmplifyUserAgentObject, } from '@aws-amplify/core/internals/utils';\nexport function getInAppMessagingUserAgent(action) {\n return getAmplifyUserAgentObject({\n category: Category.InAppMessaging,\n action,\n });\n}\nexport function getInAppMessagingUserAgentString(action) {\n return getAmplifyUserAgent({\n category: Category.InAppMessaging,\n action,\n });\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAEO,SAAS,0BAA0B,CAAC,MAAM,EAAE;AACnD,IAAI,OAAO,yBAAyB,CAAC;AACrC,QAAQ,QAAQ,EAAE,QAAQ,CAAC,cAAc;AACzC,QAAQ,MAAM;AACd,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,gCAAgC,CAAC,MAAM,EAAE;AACzD,IAAI,OAAO,mBAAmB,CAAC;AAC/B,QAAQ,QAAQ,EAAE,QAAQ,CAAC,cAAc;AACzC,QAAQ,MAAM;AACd,KAAK,CAAC,CAAC;AACP;;;;"}
@@ -1,6 +1,6 @@
1
1
  export type InAppMessageInteractionEvent = 'messageReceived' | 'messageDisplayed' | 'messageDismissed' | 'messageActionTaken';
2
- export type InAppMessagingEvent = {
2
+ export interface InAppMessagingEvent {
3
3
  name: string;
4
4
  attributes?: Record<string, string>;
5
5
  metrics?: Record<string, number>;
6
- };
6
+ }
@@ -3,7 +3,7 @@ import { InAppMessagingServiceOptions } from './options';
3
3
  /**
4
4
  * Input type for `identifyUser`.
5
5
  */
6
- export type InAppMessagingIdentifyUserInput<ServiceOptions extends InAppMessagingServiceOptions = InAppMessagingServiceOptions> = {
6
+ export interface InAppMessagingIdentifyUserInput<ServiceOptions extends InAppMessagingServiceOptions = InAppMessagingServiceOptions> {
7
7
  /**
8
8
  * A User ID associated to the current device.
9
9
  */
@@ -16,4 +16,4 @@ export type InAppMessagingIdentifyUserInput<ServiceOptions extends InAppMessagin
16
16
  * Options to be passed to the API.
17
17
  */
18
18
  options?: ServiceOptions;
19
- };
19
+ }
@@ -48,8 +48,10 @@ const addNativeListeners = () => {
48
48
  // background tasks will get suspended and all future tasks be deprioritized by the OS if they run for
49
49
  // more than 30 seconds so we reject with a error in a shorter amount of time to prevent this from
50
50
  // happening
51
- new Promise((_, reject) => {
52
- setTimeout(() => reject(`onNotificationReceivedInBackground handlers should complete their work within ${BACKGROUND_TASK_TIMEOUT} seconds, but they did not.`), BACKGROUND_TASK_TIMEOUT * 1000);
51
+ new Promise((_resolve, reject) => {
52
+ setTimeout(() => {
53
+ reject(new Error(`onNotificationReceivedInBackground handlers should complete their work within ${BACKGROUND_TASK_TIMEOUT} seconds, but they did not.`));
54
+ }, BACKGROUND_TASK_TIMEOUT * 1000);
53
55
  }),
54
56
  ]);
55
57
  }
@@ -78,8 +80,9 @@ const addNativeListeners = () => {
78
80
  notifyEventListeners('launchNotificationOpened', message);
79
81
  // once we are done with it we can remove the listener
80
82
  launchNotificationOpenedListener?.remove();
83
+ launchNotificationOpenedListener = undefined;
81
84
  })
82
- : null;
85
+ : undefined;
83
86
  addMessageEventListener(
84
87
  // listen for native notification opened (user tapped on notification, opening the app from background -
85
88
  // not quit - state) event and broadcast to library listeners
@@ -114,10 +117,16 @@ const addAnalyticsListeners = () => {
114
117
  addEventListener('foregroundMessageReceived', createMessageEventRecorder('received_foreground'));
115
118
  launchNotificationOpenedListenerRemover = addEventListener('launchNotificationOpened', createMessageEventRecorder('opened_notification',
116
119
  // once we are done with it we can remove the listener
117
- launchNotificationOpenedListenerRemover?.remove));
120
+ () => {
121
+ launchNotificationOpenedListenerRemover?.remove();
122
+ launchNotificationOpenedListenerRemover = undefined;
123
+ }));
118
124
  addEventListener('notificationOpened', createMessageEventRecorder('opened_notification',
119
125
  // if we are in this state, we no longer need the listener as the app was launched via some other means
120
- launchNotificationOpenedListenerRemover?.remove));
126
+ () => {
127
+ launchNotificationOpenedListenerRemover?.remove();
128
+ launchNotificationOpenedListenerRemover = undefined;
129
+ }));
121
130
  };
122
131
  const registerDevice = async (address) => {
123
132
  const { credentials, identityId } = await resolveCredentials();
@@ -1 +1 @@
1
- {"version":3,"file":"initializePushNotifications.native.mjs","sources":["../../../../../../src/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { PushNotificationAction } from '@aws-amplify/core/internals/utils';\nimport { updateEndpoint } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { loadAmplifyPushNotification } from '@aws-amplify/react-native';\nimport { addEventListener, notifyEventListeners, notifyEventListenersAndAwaitHandlers, } from '../../../../eventListeners';\nimport { getPushNotificationUserAgentString, getToken, initialize, isInitialized, resolveCredentials, setToken, } from '../../../utils';\nimport { createMessageEventRecorder, getChannelType, resolveConfig, } from '../utils';\nconst { addMessageEventListener, addTokenEventListener, completeNotification, getConstants, registerHeadlessTask, } = loadAmplifyPushNotification();\nconst logger = new ConsoleLogger('Notifications.PushNotification');\nconst BACKGROUND_TASK_TIMEOUT = 25; // seconds\nexport const initializePushNotifications = () => {\n if (isInitialized()) {\n logger.info('Push notifications have already been enabled');\n return;\n }\n addNativeListeners();\n addAnalyticsListeners();\n initialize();\n};\nconst addNativeListeners = () => {\n let launchNotificationOpenedListener;\n const { NativeEvent, NativeHeadlessTaskKey } = getConstants();\n const { BACKGROUND_MESSAGE_RECEIVED, FOREGROUND_MESSAGE_RECEIVED, LAUNCH_NOTIFICATION_OPENED, NOTIFICATION_OPENED, TOKEN_RECEIVED, } = NativeEvent;\n // on platforms that can handle headless tasks, register one to broadcast background message received to\n // library listeners\n if (NativeHeadlessTaskKey) {\n registerHeadlessTask(async (message) => {\n // keep headless task running until handlers have completed their work\n await notifyEventListenersAndAwaitHandlers('backgroundMessageReceived', message);\n });\n }\n else if (BACKGROUND_MESSAGE_RECEIVED) {\n // on platforms that can't handle headless tasks, listen for native background message received event and\n // broadcast to library listeners\n addMessageEventListener(BACKGROUND_MESSAGE_RECEIVED, async (message, completionHandlerId) => {\n // keep background task running until handlers have completed their work\n try {\n await Promise.race([\n notifyEventListenersAndAwaitHandlers('backgroundMessageReceived', message),\n // background tasks will get suspended and all future tasks be deprioritized by the OS if they run for\n // more than 30 seconds so we reject with a error in a shorter amount of time to prevent this from\n // happening\n new Promise((_, reject) => {\n setTimeout(() => reject(`onNotificationReceivedInBackground handlers should complete their work within ${BACKGROUND_TASK_TIMEOUT} seconds, but they did not.`), BACKGROUND_TASK_TIMEOUT * 1000);\n }),\n ]);\n }\n catch (err) {\n logger.error(err);\n }\n finally {\n // notify native module that handlers have completed their work (or timed out)\n if (completionHandlerId) {\n completeNotification(completionHandlerId);\n }\n }\n });\n }\n addMessageEventListener(\n // listen for native foreground message received event and broadcast to library listeners\n FOREGROUND_MESSAGE_RECEIVED, message => {\n notifyEventListeners('foregroundMessageReceived', message);\n });\n launchNotificationOpenedListener = LAUNCH_NOTIFICATION_OPENED\n ? addMessageEventListener(\n // listen for native notification opened app (user tapped on notification, opening the app from quit -\n // not background - state) event. This is broadcasted to an internal listener only as it is not intended\n // for use otherwise as it produces inconsistent results when used within React Native app context\n LAUNCH_NOTIFICATION_OPENED, message => {\n notifyEventListeners('launchNotificationOpened', message);\n // once we are done with it we can remove the listener\n launchNotificationOpenedListener?.remove();\n })\n : null;\n addMessageEventListener(\n // listen for native notification opened (user tapped on notification, opening the app from background -\n // not quit - state) event and broadcast to library listeners\n NOTIFICATION_OPENED, message => {\n notifyEventListeners('notificationOpened', message);\n // if we are in this state, we no longer need the listener as the app was launched via some other means\n launchNotificationOpenedListener?.remove();\n });\n addTokenEventListener(\n // listen for native new token event, automatically re-register device with provider using new token and\n // broadcast to library listeners\n TOKEN_RECEIVED, async (token) => {\n // avoid a race condition where two endpoints are created with the same token on a fresh install\n if (getToken() === token) {\n return;\n }\n setToken(token);\n notifyEventListeners('tokenReceived', token);\n try {\n await registerDevice(token);\n }\n catch (err) {\n logger.error('Failed to register device for push notifications', err);\n throw err;\n }\n });\n};\nconst addAnalyticsListeners = () => {\n let launchNotificationOpenedListenerRemover;\n // wire up default Pinpoint message event handling\n addEventListener('backgroundMessageReceived', createMessageEventRecorder('received_background'));\n addEventListener('foregroundMessageReceived', createMessageEventRecorder('received_foreground'));\n launchNotificationOpenedListenerRemover = addEventListener('launchNotificationOpened', createMessageEventRecorder('opened_notification', \n // once we are done with it we can remove the listener\n launchNotificationOpenedListenerRemover?.remove));\n addEventListener('notificationOpened', createMessageEventRecorder('opened_notification', \n // if we are in this state, we no longer need the listener as the app was launched via some other means\n launchNotificationOpenedListenerRemover?.remove));\n};\nconst registerDevice = async (address) => {\n const { credentials, identityId } = await resolveCredentials();\n const { appId, region } = resolveConfig();\n await updateEndpoint({\n address,\n appId,\n category: 'PushNotification',\n credentials,\n region,\n channelType: getChannelType(),\n identityId,\n userAgentValue: getPushNotificationUserAgentString(PushNotificationAction.InitializePushNotifications),\n });\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initializePushNotifications.native.mjs","sources":["../../../../../../src/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { PushNotificationAction } from '@aws-amplify/core/internals/utils';\nimport { updateEndpoint } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { loadAmplifyPushNotification } from '@aws-amplify/react-native';\nimport { addEventListener, notifyEventListeners, notifyEventListenersAndAwaitHandlers, } from '../../../../eventListeners';\nimport { getPushNotificationUserAgentString, getToken, initialize, isInitialized, resolveCredentials, setToken, } from '../../../utils';\nimport { createMessageEventRecorder, getChannelType, resolveConfig, } from '../utils';\nconst { addMessageEventListener, addTokenEventListener, completeNotification, getConstants, registerHeadlessTask, } = loadAmplifyPushNotification();\nconst logger = new ConsoleLogger('Notifications.PushNotification');\nconst BACKGROUND_TASK_TIMEOUT = 25; // seconds\nexport const initializePushNotifications = () => {\n if (isInitialized()) {\n logger.info('Push notifications have already been enabled');\n return;\n }\n addNativeListeners();\n addAnalyticsListeners();\n initialize();\n};\nconst addNativeListeners = () => {\n let launchNotificationOpenedListener;\n const { NativeEvent, NativeHeadlessTaskKey } = getConstants();\n const { BACKGROUND_MESSAGE_RECEIVED, FOREGROUND_MESSAGE_RECEIVED, LAUNCH_NOTIFICATION_OPENED, NOTIFICATION_OPENED, TOKEN_RECEIVED, } = NativeEvent;\n // on platforms that can handle headless tasks, register one to broadcast background message received to\n // library listeners\n if (NativeHeadlessTaskKey) {\n registerHeadlessTask(async (message) => {\n // keep headless task running until handlers have completed their work\n await notifyEventListenersAndAwaitHandlers('backgroundMessageReceived', message);\n });\n }\n else if (BACKGROUND_MESSAGE_RECEIVED) {\n // on platforms that can't handle headless tasks, listen for native background message received event and\n // broadcast to library listeners\n addMessageEventListener(BACKGROUND_MESSAGE_RECEIVED, async (message, completionHandlerId) => {\n // keep background task running until handlers have completed their work\n try {\n await Promise.race([\n notifyEventListenersAndAwaitHandlers('backgroundMessageReceived', message),\n // background tasks will get suspended and all future tasks be deprioritized by the OS if they run for\n // more than 30 seconds so we reject with a error in a shorter amount of time to prevent this from\n // happening\n new Promise((_resolve, reject) => {\n setTimeout(() => {\n reject(new Error(`onNotificationReceivedInBackground handlers should complete their work within ${BACKGROUND_TASK_TIMEOUT} seconds, but they did not.`));\n }, BACKGROUND_TASK_TIMEOUT * 1000);\n }),\n ]);\n }\n catch (err) {\n logger.error(err);\n }\n finally {\n // notify native module that handlers have completed their work (or timed out)\n if (completionHandlerId) {\n completeNotification(completionHandlerId);\n }\n }\n });\n }\n addMessageEventListener(\n // listen for native foreground message received event and broadcast to library listeners\n FOREGROUND_MESSAGE_RECEIVED, message => {\n notifyEventListeners('foregroundMessageReceived', message);\n });\n launchNotificationOpenedListener = LAUNCH_NOTIFICATION_OPENED\n ? addMessageEventListener(\n // listen for native notification opened app (user tapped on notification, opening the app from quit -\n // not background - state) event. This is broadcasted to an internal listener only as it is not intended\n // for use otherwise as it produces inconsistent results when used within React Native app context\n LAUNCH_NOTIFICATION_OPENED, message => {\n notifyEventListeners('launchNotificationOpened', message);\n // once we are done with it we can remove the listener\n launchNotificationOpenedListener?.remove();\n launchNotificationOpenedListener = undefined;\n })\n : undefined;\n addMessageEventListener(\n // listen for native notification opened (user tapped on notification, opening the app from background -\n // not quit - state) event and broadcast to library listeners\n NOTIFICATION_OPENED, message => {\n notifyEventListeners('notificationOpened', message);\n // if we are in this state, we no longer need the listener as the app was launched via some other means\n launchNotificationOpenedListener?.remove();\n });\n addTokenEventListener(\n // listen for native new token event, automatically re-register device with provider using new token and\n // broadcast to library listeners\n TOKEN_RECEIVED, async (token) => {\n // avoid a race condition where two endpoints are created with the same token on a fresh install\n if (getToken() === token) {\n return;\n }\n setToken(token);\n notifyEventListeners('tokenReceived', token);\n try {\n await registerDevice(token);\n }\n catch (err) {\n logger.error('Failed to register device for push notifications', err);\n throw err;\n }\n });\n};\nconst addAnalyticsListeners = () => {\n let launchNotificationOpenedListenerRemover;\n // wire up default Pinpoint message event handling\n addEventListener('backgroundMessageReceived', createMessageEventRecorder('received_background'));\n addEventListener('foregroundMessageReceived', createMessageEventRecorder('received_foreground'));\n launchNotificationOpenedListenerRemover = addEventListener('launchNotificationOpened', createMessageEventRecorder('opened_notification', \n // once we are done with it we can remove the listener\n () => {\n launchNotificationOpenedListenerRemover?.remove();\n launchNotificationOpenedListenerRemover = undefined;\n }));\n addEventListener('notificationOpened', createMessageEventRecorder('opened_notification', \n // if we are in this state, we no longer need the listener as the app was launched via some other means\n () => {\n launchNotificationOpenedListenerRemover?.remove();\n launchNotificationOpenedListenerRemover = undefined;\n }));\n};\nconst registerDevice = async (address) => {\n const { credentials, identityId } = await resolveCredentials();\n const { appId, region } = resolveConfig();\n await updateEndpoint({\n address,\n appId,\n category: 'PushNotification',\n credentials,\n region,\n channelType: getChannelType(),\n identityId,\n userAgentValue: getPushNotificationUserAgentString(PushNotificationAction.InitializePushNotifications),\n });\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA;AAQA,MAAM,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,GAAG,GAAG,2BAA2B,EAAE,CAAC;AACpJ,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAAC;AACnE,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACvB,MAAC,2BAA2B,GAAG,MAAM;AACjD,IAAI,IAAI,aAAa,EAAE,EAAE;AACzB,QAAQ,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;AACpE,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,kBAAkB,EAAE,CAAC;AACzB,IAAI,qBAAqB,EAAE,CAAC;AAC5B,IAAI,UAAU,EAAE,CAAC;AACjB,EAAE;AACF,MAAM,kBAAkB,GAAG,MAAM;AACjC,IAAI,IAAI,gCAAgC,CAAC;AACzC,IAAI,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE,GAAG,YAAY,EAAE,CAAC;AAClE,IAAI,MAAM,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,cAAc,GAAG,GAAG,WAAW,CAAC;AACvJ;AACA;AACA,IAAI,IAAI,qBAAqB,EAAE;AAC/B,QAAQ,oBAAoB,CAAC,OAAO,OAAO,KAAK;AAChD;AACA,YAAY,MAAM,oCAAoC,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;AAC7F,SAAS,CAAC,CAAC;AACX,KAAK;AACL,SAAS,IAAI,2BAA2B,EAAE;AAC1C;AACA;AACA,QAAQ,uBAAuB,CAAC,2BAA2B,EAAE,OAAO,OAAO,EAAE,mBAAmB,KAAK;AACrG;AACA,YAAY,IAAI;AAChB,gBAAgB,MAAM,OAAO,CAAC,IAAI,CAAC;AACnC,oBAAoB,oCAAoC,CAAC,2BAA2B,EAAE,OAAO,CAAC;AAC9F;AACA;AACA;AACA,oBAAoB,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK;AACtD,wBAAwB,UAAU,CAAC,MAAM;AACzC,4BAA4B,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,8EAA8E,EAAE,uBAAuB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;AACrL,yBAAyB,EAAE,uBAAuB,GAAG,IAAI,CAAC,CAAC;AAC3D,qBAAqB,CAAC;AACtB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,OAAO,GAAG,EAAE;AACxB,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,aAAa;AACb,oBAAoB;AACpB;AACA,gBAAgB,IAAI,mBAAmB,EAAE;AACzC,oBAAoB,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AAC9D,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,uBAAuB;AAC3B;AACA,IAAI,2BAA2B,EAAE,OAAO,IAAI;AAC5C,QAAQ,oBAAoB,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK,CAAC,CAAC;AACP,IAAI,gCAAgC,GAAG,0BAA0B;AACjE,UAAU,uBAAuB;AACjC;AACA;AACA;AACA,QAAQ,0BAA0B,EAAE,OAAO,IAAI;AAC/C,YAAY,oBAAoB,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;AACtE;AACA,YAAY,gCAAgC,EAAE,MAAM,EAAE,CAAC;AACvD,YAAY,gCAAgC,GAAG,SAAS,CAAC;AACzD,SAAS,CAAC;AACV,UAAU,SAAS,CAAC;AACpB,IAAI,uBAAuB;AAC3B;AACA;AACA,IAAI,mBAAmB,EAAE,OAAO,IAAI;AACpC,QAAQ,oBAAoB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAC5D;AACA,QAAQ,gCAAgC,EAAE,MAAM,EAAE,CAAC;AACnD,KAAK,CAAC,CAAC;AACP,IAAI,qBAAqB;AACzB;AACA;AACA,IAAI,cAAc,EAAE,OAAO,KAAK,KAAK;AACrC;AACA,QAAQ,IAAI,QAAQ,EAAE,KAAK,KAAK,EAAE;AAClC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,QAAQ,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI;AACZ,YAAY,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;AACxC,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAC;AAClF,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF,MAAM,qBAAqB,GAAG,MAAM;AACpC,IAAI,IAAI,uCAAuC,CAAC;AAChD;AACA,IAAI,gBAAgB,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACrG,IAAI,gBAAgB,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACrG,IAAI,uCAAuC,GAAG,gBAAgB,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,qBAAqB;AAC3I;AACA,IAAI,MAAM;AACV,QAAQ,uCAAuC,EAAE,MAAM,EAAE,CAAC;AAC1D,QAAQ,uCAAuC,GAAG,SAAS,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,gBAAgB,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,qBAAqB;AAC3F;AACA,IAAI,MAAM;AACV,QAAQ,uCAAuC,EAAE,MAAM,EAAE,CAAC;AAC1D,QAAQ,uCAAuC,GAAG,SAAS,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AACF,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK;AAC1C,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,cAAc,CAAC;AACzB,QAAQ,OAAO;AACf,QAAQ,KAAK;AACb,QAAQ,QAAQ,EAAE,kBAAkB;AACpC,QAAQ,WAAW;AACnB,QAAQ,MAAM;AACd,QAAQ,WAAW,EAAE,cAAc,EAAE;AACrC,QAAQ,UAAU;AAClB,QAAQ,cAAc,EAAE,kCAAkC,CAAC,sBAAsB,CAAC,2BAA2B,CAAC;AAC9G,KAAK,CAAC,CAAC;AACP,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  export type PinpointMessageEvent = 'opened_notification' | 'received_background' | 'received_foreground';
2
2
  export type PinpointMessageEventSource = '_campaign' | '_journey';
3
- export type AnalyticsEventAttributes = {
3
+ export interface AnalyticsEventAttributes {
4
4
  source: PinpointMessageEventSource;
5
5
  attributes: Record<string, string>;
6
- };
6
+ }
@@ -1,5 +1,5 @@
1
+ import { PushNotificationIdentifyUserInput, PushNotificationOnNotificationOpenedInput, PushNotificationOnNotificationReceivedInBackgroundInput, PushNotificationOnNotificationReceivedInForegroundInput, PushNotificationOnTokenReceivedInput, PushNotificationRequestPermissionsInput, PushNotificationSetBadgeCountInput } from '../../../types';
1
2
  import { IdentifyUserOptions } from './options';
2
- import { PushNotificationIdentifyUserInput, PushNotificationRequestPermissionsInput, PushNotificationSetBadgeCountInput, PushNotificationOnNotificationOpenedInput, PushNotificationOnNotificationReceivedInBackgroundInput, PushNotificationOnNotificationReceivedInForegroundInput, PushNotificationOnTokenReceivedInput } from '../../../types';
3
3
  export type IdentifyUserInput = PushNotificationIdentifyUserInput<IdentifyUserOptions>;
4
4
  export type RequestPermissionsInput = PushNotificationRequestPermissionsInput;
5
5
  export type SetBadgeCountInput = PushNotificationSetBadgeCountInput;
@@ -3,4 +3,4 @@ import { OnPushNotificationMessageHandler } from '../../../types';
3
3
  /**
4
4
  * @internal
5
5
  */
6
- export declare const createMessageEventRecorder: (event: PinpointMessageEvent, callback?: Function) => OnPushNotificationMessageHandler;
6
+ export declare const createMessageEventRecorder: (event: PinpointMessageEvent, callback?: () => void) => OnPushNotificationMessageHandler;
@@ -24,7 +24,7 @@ const getAnalyticsEventAttributes = (data) => {
24
24
  if (!data) {
25
25
  return;
26
26
  }
27
- if (data.hasOwnProperty(ANDROID_CAMPAIGN_ID_KEY)) {
27
+ if (Object.prototype.hasOwnProperty.call(data, ANDROID_CAMPAIGN_ID_KEY)) {
28
28
  return {
29
29
  source: '_campaign',
30
30
  attributes: {
@@ -1 +1 @@
1
- {"version":3,"file":"getAnalyticsEvent.mjs","sources":["../../../../../../src/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst ANDROID_CAMPAIGN_ACTIVITY_ID_KEY = 'pinpoint.campaign.campaign_activity_id';\nconst ANDROID_CAMPAIGN_ID_KEY = 'pinpoint.campaign.campaign_id';\nconst ANDROID_CAMPAIGN_TREATMENT_ID_KEY = 'pinpoint.campaign.treatment_id';\n/**\n * @internal\n */\nexport const getAnalyticsEvent = ({ data }, event) => {\n if (!data) {\n return null;\n }\n const eventAttributes = getAnalyticsEventAttributes(data);\n if (!eventAttributes) {\n return null;\n }\n const { source, attributes } = eventAttributes;\n return {\n attributes,\n name: `${source}.${event}`,\n };\n};\nconst getAnalyticsEventAttributes = (data) => {\n if (!data) {\n return;\n }\n if (data.hasOwnProperty(ANDROID_CAMPAIGN_ID_KEY)) {\n return {\n source: '_campaign',\n attributes: {\n campaign_activity_id: data[ANDROID_CAMPAIGN_ACTIVITY_ID_KEY],\n campaign_id: data[ANDROID_CAMPAIGN_ID_KEY],\n treatment_id: data[ANDROID_CAMPAIGN_TREATMENT_ID_KEY],\n },\n };\n }\n const pinpoint = typeof data.pinpoint === 'string'\n ? JSON.parse(data.pinpoint)\n : data.pinpoint;\n if (pinpoint?.campaign) {\n return {\n source: '_campaign',\n attributes: pinpoint.campaign,\n };\n }\n if (pinpoint?.journey) {\n return {\n source: '_journey',\n attributes: pinpoint.journey,\n };\n }\n};\n"],"names":[],"mappings":"AAAA;AACA;AACA,MAAM,gCAAgC,GAAG,wCAAwC,CAAC;AAClF,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAChE,MAAM,iCAAiC,GAAG,gCAAgC,CAAC;AAC3E;AACA;AACA;AACY,MAAC,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,KAAK;AACtD,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC;AACnD,IAAI,OAAO;AACX,QAAQ,UAAU;AAClB,QAAQ,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,EAAE;AACF,MAAM,2BAA2B,GAAG,CAAC,IAAI,KAAK;AAC9C,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE;AACtD,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,WAAW;AAC/B,YAAY,UAAU,EAAE;AACxB,gBAAgB,oBAAoB,EAAE,IAAI,CAAC,gCAAgC,CAAC;AAC5E,gBAAgB,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC;AAC1D,gBAAgB,YAAY,EAAE,IAAI,CAAC,iCAAiC,CAAC;AACrE,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;AACtD,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,UAAU,IAAI,CAAC,QAAQ,CAAC;AACxB,IAAI,IAAI,QAAQ,EAAE,QAAQ,EAAE;AAC5B,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,WAAW;AAC/B,YAAY,UAAU,EAAE,QAAQ,CAAC,QAAQ;AACzC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE,OAAO,EAAE;AAC3B,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,UAAU;AAC9B,YAAY,UAAU,EAAE,QAAQ,CAAC,OAAO;AACxC,SAAS,CAAC;AACV,KAAK;AACL,CAAC;;;;"}
1
+ {"version":3,"file":"getAnalyticsEvent.mjs","sources":["../../../../../../src/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst ANDROID_CAMPAIGN_ACTIVITY_ID_KEY = 'pinpoint.campaign.campaign_activity_id';\nconst ANDROID_CAMPAIGN_ID_KEY = 'pinpoint.campaign.campaign_id';\nconst ANDROID_CAMPAIGN_TREATMENT_ID_KEY = 'pinpoint.campaign.treatment_id';\n/**\n * @internal\n */\nexport const getAnalyticsEvent = ({ data }, event) => {\n if (!data) {\n return null;\n }\n const eventAttributes = getAnalyticsEventAttributes(data);\n if (!eventAttributes) {\n return null;\n }\n const { source, attributes } = eventAttributes;\n return {\n attributes,\n name: `${source}.${event}`,\n };\n};\nconst getAnalyticsEventAttributes = (data) => {\n if (!data) {\n return;\n }\n if (Object.prototype.hasOwnProperty.call(data, ANDROID_CAMPAIGN_ID_KEY)) {\n return {\n source: '_campaign',\n attributes: {\n campaign_activity_id: data[ANDROID_CAMPAIGN_ACTIVITY_ID_KEY],\n campaign_id: data[ANDROID_CAMPAIGN_ID_KEY],\n treatment_id: data[ANDROID_CAMPAIGN_TREATMENT_ID_KEY],\n },\n };\n }\n const pinpoint = typeof data.pinpoint === 'string'\n ? JSON.parse(data.pinpoint)\n : data.pinpoint;\n if (pinpoint?.campaign) {\n return {\n source: '_campaign',\n attributes: pinpoint.campaign,\n };\n }\n if (pinpoint?.journey) {\n return {\n source: '_journey',\n attributes: pinpoint.journey,\n };\n }\n};\n"],"names":[],"mappings":"AAAA;AACA;AACA,MAAM,gCAAgC,GAAG,wCAAwC,CAAC;AAClF,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAChE,MAAM,iCAAiC,GAAG,gCAAgC,CAAC;AAC3E;AACA;AACA;AACY,MAAC,iBAAiB,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,KAAK;AACtD,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAC9D,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC;AACnD,IAAI,OAAO;AACX,QAAQ,UAAU;AAClB,QAAQ,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,EAAE;AACF,MAAM,2BAA2B,GAAG,CAAC,IAAI,KAAK;AAC9C,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,EAAE;AAC7E,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,WAAW;AAC/B,YAAY,UAAU,EAAE;AACxB,gBAAgB,oBAAoB,EAAE,IAAI,CAAC,gCAAgC,CAAC;AAC5E,gBAAgB,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC;AAC1D,gBAAgB,YAAY,EAAE,IAAI,CAAC,iCAAiC,CAAC;AACrE,aAAa;AACb,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;AACtD,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnC,UAAU,IAAI,CAAC,QAAQ,CAAC;AACxB,IAAI,IAAI,QAAQ,EAAE,QAAQ,EAAE;AAC5B,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,WAAW;AAC/B,YAAY,UAAU,EAAE,QAAQ,CAAC,QAAQ;AACzC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,QAAQ,EAAE,OAAO,EAAE;AAC3B,QAAQ,OAAO;AACf,YAAY,MAAM,EAAE,UAAU;AAC9B,YAAY,UAAU,EAAE,QAAQ,CAAC,OAAO;AACxC,SAAS,CAAC;AACV,KAAK;AACL,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveConfig.mjs","sources":["../../../../../../src/pushNotifications/providers/pinpoint/utils/resolveConfig.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { assert, PushNotificationValidationErrorCode } from '../../../errors';\n/**\n * @internal\n */\nexport const resolveConfig = () => {\n const { appId, region } = Amplify.getConfig().Notifications?.PushNotification?.Pinpoint ?? {};\n assert(!!appId, PushNotificationValidationErrorCode.NoAppId);\n assert(!!region, PushNotificationValidationErrorCode.NoRegion);\n return { appId, region };\n};\n"],"names":[],"mappings":";;;;AAAA;AACA;AAGA;AACA;AACA;AACY,MAAC,aAAa,GAAG,MAAM;AACnC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,IAAI,EAAE,CAAC;AAClG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,mCAAmC,CAAC,OAAO,CAAC,CAAC;AACjE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,mCAAmC,CAAC,QAAQ,CAAC,CAAC;AACnE,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7B;;;;"}
1
+ {"version":3,"file":"resolveConfig.mjs","sources":["../../../../../../src/pushNotifications/providers/pinpoint/utils/resolveConfig.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Amplify } from '@aws-amplify/core';\nimport { PushNotificationValidationErrorCode, assert } from '../../../errors';\n/**\n * @internal\n */\nexport const resolveConfig = () => {\n const { appId, region } = Amplify.getConfig().Notifications?.PushNotification?.Pinpoint ?? {};\n assert(!!appId, PushNotificationValidationErrorCode.NoAppId);\n assert(!!region, PushNotificationValidationErrorCode.NoRegion);\n return { appId, region };\n};\n"],"names":[],"mappings":";;;;AAAA;AACA;AAGA;AACA;AACA;AACY,MAAC,aAAa,GAAG,MAAM;AACnC,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,IAAI,EAAE,CAAC;AAClG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,mCAAmC,CAAC,OAAO,CAAC,CAAC;AACjE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,mCAAmC,CAAC,QAAQ,CAAC,CAAC;AACnE,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC7B;;;;"}