@aws-amplify/analytics 6.5.6-api-v6-models.b3abc9b.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/kinesis/package.json +7 -0
- package/kinesis-firehose/package.json +7 -0
- package/lib/apis/disable.d.ts +8 -0
- package/lib/apis/disable.js +14 -0
- package/lib/apis/enable.d.ts +7 -0
- package/lib/apis/enable.js +13 -0
- package/lib/apis/index.d.ts +2 -0
- package/lib/apis/index.js +9 -0
- package/lib/errors/AnalyticsError.d.ts +7 -0
- package/lib/errors/AnalyticsError.js +19 -0
- package/lib/errors/assertValidationError.d.ts +5 -0
- package/lib/errors/assertValidationError.js +21 -0
- package/lib/errors/index.d.ts +3 -0
- package/lib/errors/index.js +12 -0
- package/lib/errors/validation.d.ts +12 -0
- package/lib/errors/validation.js +42 -0
- package/lib/index.d.ts +3 -3
- package/lib/index.js +11 -8
- package/lib/providers/kinesis/apis/flushEvents.d.ts +8 -0
- package/lib/providers/kinesis/apis/flushEvents.js +35 -0
- package/lib/providers/kinesis/apis/index.d.ts +2 -0
- package/lib/providers/kinesis/apis/index.js +9 -0
- package/lib/providers/kinesis/apis/record.d.ts +2 -0
- package/lib/providers/kinesis/apis/record.js +46 -0
- package/lib/providers/kinesis/index.d.ts +1 -0
- package/lib/providers/kinesis/index.js +8 -0
- package/lib/providers/kinesis/types/buffer.d.ts +15 -0
- package/lib/providers/kinesis/types/buffer.js +4 -0
- package/lib/providers/kinesis/types/index.d.ts +2 -0
- package/lib/providers/kinesis/types/index.js +4 -0
- package/lib/providers/kinesis/types/inputs.d.ts +6 -0
- package/lib/providers/kinesis/types/inputs.js +4 -0
- package/lib/providers/kinesis/utils/constants.d.ts +6 -0
- package/lib/{utils/AppUtils.js → providers/kinesis/utils/constants.js} +7 -5
- package/lib/providers/kinesis/utils/getEventBuffer.d.ts +3 -0
- package/lib/providers/kinesis/utils/getEventBuffer.js +72 -0
- package/lib/providers/kinesis/utils/resolveConfig.d.ts +7 -0
- package/lib/providers/kinesis/utils/resolveConfig.js +25 -0
- package/lib/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
- package/lib/providers/kinesis-firehose/apis/flushEvents.js +34 -0
- package/lib/providers/kinesis-firehose/apis/index.d.ts +2 -0
- package/lib/providers/kinesis-firehose/apis/index.js +9 -0
- package/lib/providers/kinesis-firehose/apis/record.d.ts +2 -0
- package/lib/providers/kinesis-firehose/apis/record.js +43 -0
- package/lib/providers/kinesis-firehose/index.d.ts +1 -0
- package/lib/providers/kinesis-firehose/index.js +8 -0
- package/lib/providers/kinesis-firehose/types/buffer.d.ts +15 -0
- package/lib/{types/Provider.js → providers/kinesis-firehose/types/buffer.js} +0 -1
- package/lib/providers/kinesis-firehose/types/index.d.ts +2 -0
- package/lib/providers/kinesis-firehose/types/index.js +4 -0
- package/lib/providers/kinesis-firehose/types/inputs.d.ts +5 -0
- package/lib/providers/kinesis-firehose/types/inputs.js +4 -0
- package/lib/providers/kinesis-firehose/utils/constants.d.ts +6 -0
- package/lib/providers/kinesis-firehose/utils/constants.js +11 -0
- package/lib/providers/kinesis-firehose/utils/getEventBuffer.d.ts +3 -0
- package/lib/providers/kinesis-firehose/utils/getEventBuffer.js +71 -0
- package/lib/providers/kinesis-firehose/utils/index.d.ts +2 -0
- package/lib/providers/kinesis-firehose/utils/index.js +9 -0
- package/lib/providers/kinesis-firehose/utils/resolveConfig.d.ts +7 -0
- package/lib/providers/kinesis-firehose/utils/resolveConfig.js +25 -0
- package/lib/providers/personalize/apis/flushEvents.d.ts +8 -0
- package/lib/providers/personalize/apis/flushEvents.js +33 -0
- package/lib/providers/personalize/apis/index.d.ts +2 -0
- package/lib/providers/personalize/apis/index.js +9 -0
- package/lib/providers/personalize/apis/record.d.ts +2 -0
- package/lib/providers/personalize/apis/record.js +71 -0
- package/lib/providers/personalize/index.d.ts +1 -0
- package/lib/providers/personalize/index.js +8 -0
- package/lib/providers/personalize/types/buffer.d.ts +16 -0
- package/lib/providers/personalize/types/buffer.js +4 -0
- package/lib/providers/personalize/types/index.d.ts +2 -0
- package/lib/providers/personalize/types/index.js +4 -0
- package/lib/providers/personalize/types/inputs.d.ts +7 -0
- package/lib/providers/personalize/types/inputs.js +4 -0
- package/lib/providers/personalize/utils/autoTrackMedia.d.ts +10 -0
- package/lib/providers/personalize/utils/autoTrackMedia.js +181 -0
- package/lib/providers/personalize/utils/cachedSession.d.ts +5 -0
- package/lib/providers/personalize/utils/cachedSession.js +49 -0
- package/lib/providers/personalize/utils/constants.d.ts +7 -0
- package/lib/providers/personalize/utils/constants.js +12 -0
- package/lib/providers/personalize/utils/getEventBuffer.d.ts +3 -0
- package/lib/providers/personalize/utils/getEventBuffer.js +73 -0
- package/lib/providers/personalize/utils/index.d.ts +5 -0
- package/lib/providers/personalize/utils/index.js +17 -0
- package/lib/providers/personalize/utils/resolveConfig.d.ts +7 -0
- package/lib/providers/personalize/utils/resolveConfig.js +26 -0
- package/lib/providers/pinpoint/apis/configureAutoTrack.d.ts +15 -0
- package/lib/providers/pinpoint/apis/configureAutoTrack.js +35 -0
- package/lib/providers/pinpoint/apis/flushEvents.d.ts +8 -0
- package/lib/providers/pinpoint/apis/flushEvents.js +25 -0
- package/lib/providers/pinpoint/apis/identifyUser.d.ts +47 -0
- package/lib/providers/pinpoint/apis/identifyUser.js +71 -0
- package/lib/providers/pinpoint/apis/index.d.ts +4 -0
- package/lib/providers/pinpoint/apis/index.js +13 -0
- package/lib/providers/pinpoint/apis/record.d.ts +30 -0
- package/lib/providers/pinpoint/apis/record.js +66 -0
- package/lib/providers/pinpoint/index.d.ts +2 -0
- package/lib/providers/pinpoint/index.js +10 -0
- package/lib/providers/pinpoint/types/index.d.ts +2 -0
- package/lib/providers/pinpoint/types/index.js +4 -0
- package/lib/providers/pinpoint/types/inputs.d.ts +15 -0
- package/lib/providers/pinpoint/types/inputs.js +4 -0
- package/lib/providers/pinpoint/types/options.d.ts +5 -0
- package/lib/providers/pinpoint/types/options.js +4 -0
- package/lib/providers/pinpoint/utils/index.d.ts +2 -0
- package/lib/providers/pinpoint/utils/index.js +9 -0
- package/lib/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
- package/lib/providers/pinpoint/utils/resolveConfig.js +17 -0
- package/lib/providers/pinpoint/utils/resolveCredentials.d.ts +7 -0
- package/lib/providers/pinpoint/utils/resolveCredentials.js +16 -0
- package/lib/setupTests.js +2 -2
- package/lib/trackers/EventTracker.d.ts +9 -8
- package/lib/trackers/EventTracker.js +87 -88
- package/lib/trackers/PageViewTracker.d.ts +17 -11
- package/lib/trackers/PageViewTracker.js +98 -144
- package/lib/trackers/SessionTracker.d.ts +12 -13
- package/lib/trackers/SessionTracker.js +54 -150
- package/lib/trackers/SessionTracker.native.d.ts +13 -0
- package/lib/trackers/SessionTracker.native.js +67 -0
- package/lib/trackers/index.d.ts +1 -1
- package/lib/trackers/index.js +6 -6
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types/index.d.ts +3 -3
- package/lib/types/index.js +0 -1
- package/lib/types/inputs.d.ts +35 -0
- package/lib/types/inputs.js +4 -0
- package/lib/types/kinesis.d.ts +8 -0
- package/lib/types/kinesis.js +4 -0
- package/lib/types/options.d.ts +4 -0
- package/lib/types/options.js +4 -0
- package/lib/types/trackers.d.ts +22 -0
- package/lib/types/trackers.js +4 -0
- package/lib/utils/eventBuffer/EventBuffer.d.ts +16 -0
- package/lib/utils/eventBuffer/EventBuffer.js +63 -0
- package/lib/utils/eventBuffer/index.d.ts +2 -0
- package/lib/utils/eventBuffer/index.js +7 -0
- package/lib/utils/eventBuffer/types.d.ts +8 -0
- package/lib/utils/eventBuffer/types.js +4 -0
- package/lib/utils/groupBy.d.ts +1 -0
- package/lib/utils/groupBy.js +12 -0
- package/lib/utils/index.d.ts +7 -0
- package/lib/utils/index.js +22 -0
- package/lib/utils/resolveCredentials.d.ts +4 -0
- package/lib/utils/resolveCredentials.js +13 -0
- package/lib/utils/statusHelpers.d.ts +6 -0
- package/lib/utils/statusHelpers.js +19 -0
- package/lib/utils/trackerConfigHelpers.d.ts +5 -0
- package/lib/utils/trackerConfigHelpers.js +15 -0
- package/lib/utils/trackerConfigHelpers.native.d.ts +5 -0
- package/lib/utils/trackerConfigHelpers.native.js +14 -0
- package/lib/utils/trackerHelpers.d.ts +9 -0
- package/lib/utils/trackerHelpers.js +44 -0
- package/lib/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
- package/lib/utils/{UserAgent.js → userAgent.js} +8 -8
- package/lib-esm/apis/disable.d.ts +8 -0
- package/lib-esm/apis/disable.js +11 -0
- package/lib-esm/apis/enable.d.ts +7 -0
- package/lib-esm/apis/enable.js +10 -0
- package/lib-esm/apis/index.d.ts +2 -0
- package/lib-esm/apis/index.js +4 -0
- package/lib-esm/errors/AnalyticsError.d.ts +7 -0
- package/lib-esm/errors/AnalyticsError.js +15 -0
- package/lib-esm/errors/assertValidationError.d.ts +5 -0
- package/lib-esm/errors/assertValidationError.js +17 -0
- package/lib-esm/errors/index.d.ts +3 -0
- package/lib-esm/errors/index.js +5 -0
- package/lib-esm/errors/validation.d.ts +12 -0
- package/lib-esm/errors/validation.js +39 -0
- package/lib-esm/index.d.ts +3 -3
- package/lib-esm/index.js +3 -3
- package/lib-esm/providers/kinesis/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/kinesis/apis/flushEvents.js +31 -0
- package/lib-esm/providers/kinesis/apis/index.d.ts +2 -0
- package/lib-esm/providers/kinesis/apis/index.js +4 -0
- package/lib-esm/providers/kinesis/apis/record.d.ts +2 -0
- package/lib-esm/providers/kinesis/apis/record.js +42 -0
- package/lib-esm/providers/kinesis/index.d.ts +1 -0
- package/lib-esm/providers/kinesis/index.js +3 -0
- package/lib-esm/providers/kinesis/types/buffer.d.ts +15 -0
- package/lib-esm/providers/kinesis/types/buffer.js +3 -0
- package/lib-esm/providers/kinesis/types/index.d.ts +2 -0
- package/lib-esm/providers/kinesis/types/index.js +3 -0
- package/lib-esm/providers/kinesis/types/inputs.d.ts +6 -0
- package/lib-esm/providers/kinesis/types/inputs.js +3 -0
- package/lib-esm/providers/kinesis/utils/constants.d.ts +6 -0
- package/lib-esm/providers/kinesis/utils/constants.js +8 -0
- package/lib-esm/providers/kinesis/utils/getEventBuffer.d.ts +3 -0
- package/lib-esm/providers/kinesis/utils/getEventBuffer.js +68 -0
- package/lib-esm/providers/kinesis/utils/resolveConfig.d.ts +7 -0
- package/lib-esm/providers/kinesis/utils/resolveConfig.js +21 -0
- package/lib-esm/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/kinesis-firehose/apis/flushEvents.js +30 -0
- package/lib-esm/providers/kinesis-firehose/apis/index.d.ts +2 -0
- package/lib-esm/providers/kinesis-firehose/apis/index.js +4 -0
- package/lib-esm/providers/kinesis-firehose/apis/record.d.ts +2 -0
- package/lib-esm/providers/kinesis-firehose/apis/record.js +39 -0
- package/lib-esm/providers/kinesis-firehose/index.d.ts +1 -0
- package/lib-esm/providers/kinesis-firehose/index.js +3 -0
- package/lib-esm/providers/kinesis-firehose/types/buffer.d.ts +15 -0
- package/lib-esm/{types/Provider.js → providers/kinesis-firehose/types/buffer.js} +1 -1
- package/lib-esm/providers/kinesis-firehose/types/index.d.ts +2 -0
- package/{src/types/Providers/index.ts → lib-esm/providers/kinesis-firehose/types/index.js} +1 -1
- package/lib-esm/providers/kinesis-firehose/types/inputs.d.ts +5 -0
- package/lib-esm/providers/kinesis-firehose/types/inputs.js +3 -0
- package/lib-esm/providers/kinesis-firehose/utils/constants.d.ts +6 -0
- package/lib-esm/providers/kinesis-firehose/utils/constants.js +8 -0
- package/lib-esm/providers/kinesis-firehose/utils/getEventBuffer.d.ts +3 -0
- package/lib-esm/providers/kinesis-firehose/utils/getEventBuffer.js +67 -0
- package/lib-esm/providers/kinesis-firehose/utils/index.d.ts +2 -0
- package/lib-esm/providers/kinesis-firehose/utils/index.js +4 -0
- package/lib-esm/providers/kinesis-firehose/utils/resolveConfig.d.ts +7 -0
- package/lib-esm/providers/kinesis-firehose/utils/resolveConfig.js +21 -0
- package/lib-esm/providers/personalize/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/personalize/apis/flushEvents.js +29 -0
- package/lib-esm/providers/personalize/apis/index.d.ts +2 -0
- package/lib-esm/providers/personalize/apis/index.js +4 -0
- package/lib-esm/providers/personalize/apis/record.d.ts +2 -0
- package/lib-esm/providers/personalize/apis/record.js +67 -0
- package/lib-esm/providers/personalize/index.d.ts +1 -0
- package/lib-esm/providers/personalize/index.js +3 -0
- package/lib-esm/providers/personalize/types/buffer.d.ts +16 -0
- package/lib-esm/providers/personalize/types/buffer.js +3 -0
- package/lib-esm/providers/personalize/types/index.d.ts +2 -0
- package/lib-esm/providers/personalize/types/index.js +3 -0
- package/lib-esm/providers/personalize/types/inputs.d.ts +7 -0
- package/lib-esm/providers/personalize/types/inputs.js +3 -0
- package/lib-esm/providers/personalize/utils/autoTrackMedia.d.ts +10 -0
- package/lib-esm/providers/personalize/utils/autoTrackMedia.js +177 -0
- package/lib-esm/providers/personalize/utils/cachedSession.d.ts +5 -0
- package/lib-esm/providers/personalize/utils/cachedSession.js +44 -0
- package/lib-esm/providers/personalize/utils/constants.d.ts +7 -0
- package/lib-esm/providers/personalize/utils/constants.js +9 -0
- package/lib-esm/providers/personalize/utils/getEventBuffer.d.ts +3 -0
- package/lib-esm/providers/personalize/utils/getEventBuffer.js +69 -0
- package/lib-esm/providers/personalize/utils/index.d.ts +5 -0
- package/lib-esm/providers/personalize/utils/index.js +7 -0
- package/lib-esm/providers/personalize/utils/resolveConfig.d.ts +7 -0
- package/lib-esm/providers/personalize/utils/resolveConfig.js +22 -0
- package/lib-esm/providers/pinpoint/apis/configureAutoTrack.d.ts +15 -0
- package/lib-esm/providers/pinpoint/apis/configureAutoTrack.js +31 -0
- package/lib-esm/providers/pinpoint/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/pinpoint/apis/flushEvents.js +21 -0
- package/lib-esm/providers/pinpoint/apis/identifyUser.d.ts +47 -0
- package/lib-esm/providers/pinpoint/apis/identifyUser.js +67 -0
- package/lib-esm/providers/pinpoint/apis/index.d.ts +4 -0
- package/lib-esm/providers/pinpoint/apis/index.js +6 -0
- package/lib-esm/providers/pinpoint/apis/record.d.ts +30 -0
- package/lib-esm/providers/pinpoint/apis/record.js +62 -0
- package/lib-esm/providers/pinpoint/index.d.ts +2 -0
- package/lib-esm/providers/pinpoint/index.js +3 -0
- package/lib-esm/providers/pinpoint/types/index.d.ts +2 -0
- package/lib-esm/providers/pinpoint/types/index.js +3 -0
- package/lib-esm/providers/pinpoint/types/inputs.d.ts +15 -0
- package/lib-esm/providers/pinpoint/types/inputs.js +3 -0
- package/lib-esm/providers/pinpoint/types/options.d.ts +5 -0
- package/lib-esm/providers/pinpoint/types/options.js +3 -0
- package/lib-esm/providers/pinpoint/utils/index.d.ts +2 -0
- package/lib-esm/providers/pinpoint/utils/index.js +4 -0
- package/lib-esm/providers/pinpoint/utils/resolveConfig.d.ts +7 -0
- package/lib-esm/providers/pinpoint/utils/resolveConfig.js +13 -0
- package/lib-esm/providers/pinpoint/utils/resolveCredentials.d.ts +7 -0
- package/lib-esm/providers/pinpoint/utils/resolveCredentials.js +12 -0
- package/lib-esm/setupTests.js +2 -2
- package/lib-esm/trackers/EventTracker.d.ts +9 -8
- package/lib-esm/trackers/EventTracker.js +86 -89
- package/lib-esm/trackers/PageViewTracker.d.ts +17 -11
- package/lib-esm/trackers/PageViewTracker.js +97 -145
- package/lib-esm/trackers/SessionTracker.d.ts +12 -13
- package/lib-esm/trackers/SessionTracker.js +53 -151
- package/lib-esm/trackers/SessionTracker.native.d.ts +13 -0
- package/lib-esm/trackers/SessionTracker.native.js +63 -0
- package/lib-esm/trackers/index.d.ts +1 -1
- package/lib-esm/trackers/index.js +1 -2
- package/lib-esm/tsconfig.tsbuildinfo +1 -0
- package/lib-esm/types/index.d.ts +3 -3
- package/lib-esm/types/index.js +1 -1
- package/lib-esm/types/inputs.d.ts +35 -0
- package/lib-esm/types/inputs.js +3 -0
- package/lib-esm/types/kinesis.d.ts +8 -0
- package/lib-esm/types/kinesis.js +3 -0
- package/lib-esm/types/options.d.ts +4 -0
- package/lib-esm/types/options.js +3 -0
- package/lib-esm/types/trackers.d.ts +22 -0
- package/lib-esm/types/trackers.js +3 -0
- package/lib-esm/utils/eventBuffer/EventBuffer.d.ts +16 -0
- package/lib-esm/utils/eventBuffer/EventBuffer.js +59 -0
- package/lib-esm/utils/eventBuffer/index.d.ts +2 -0
- package/lib-esm/utils/eventBuffer/index.js +3 -0
- package/lib-esm/utils/eventBuffer/types.d.ts +8 -0
- package/lib-esm/utils/eventBuffer/types.js +3 -0
- package/lib-esm/utils/groupBy.d.ts +1 -0
- package/lib-esm/utils/groupBy.js +8 -0
- package/lib-esm/utils/index.d.ts +7 -0
- package/lib-esm/utils/index.js +9 -0
- package/lib-esm/utils/resolveCredentials.d.ts +4 -0
- package/lib-esm/utils/resolveCredentials.js +9 -0
- package/lib-esm/utils/statusHelpers.d.ts +6 -0
- package/lib-esm/utils/statusHelpers.js +13 -0
- package/lib-esm/utils/trackerConfigHelpers.d.ts +5 -0
- package/lib-esm/utils/trackerConfigHelpers.js +11 -0
- package/lib-esm/utils/trackerConfigHelpers.native.d.ts +5 -0
- package/lib-esm/utils/trackerConfigHelpers.native.js +10 -0
- package/lib-esm/utils/trackerHelpers.d.ts +9 -0
- package/lib-esm/utils/trackerHelpers.js +40 -0
- package/lib-esm/utils/{UserAgent.d.ts → userAgent.d.ts} +1 -1
- package/lib-esm/utils/{UserAgent.js → userAgent.js} +3 -4
- package/package.json +74 -49
- package/personalize/package.json +7 -0
- package/pinpoint/package.json +7 -0
- package/src/apis/disable.ts +13 -0
- package/src/apis/enable.ts +12 -0
- package/src/{utils/AppUtils.ts → apis/index.ts} +2 -4
- package/src/errors/AnalyticsError.ts +21 -0
- package/src/errors/assertValidationError.ts +25 -0
- package/src/errors/index.ts +6 -0
- package/src/errors/validation.ts +43 -0
- package/src/index.ts +10 -7
- package/src/providers/kinesis/apis/flushEvents.ts +40 -0
- package/src/providers/kinesis/apis/index.ts +5 -0
- package/src/providers/kinesis/apis/record.ts +58 -0
- package/src/providers/kinesis/index.ts +4 -0
- package/src/providers/kinesis/types/buffer.ts +20 -0
- package/src/providers/kinesis/types/index.ts +5 -0
- package/src/{types/Providers/AWSKinesisProvider.ts → providers/kinesis/types/inputs.ts} +7 -5
- package/src/providers/kinesis/utils/constants.ts +9 -0
- package/src/providers/kinesis/utils/getEventBuffer.ts +109 -0
- package/src/providers/kinesis/utils/resolveConfig.ts +36 -0
- package/src/providers/kinesis-firehose/apis/flushEvents.ts +39 -0
- package/src/providers/kinesis-firehose/apis/index.ts +5 -0
- package/src/providers/kinesis-firehose/apis/record.ts +51 -0
- package/src/providers/kinesis-firehose/index.ts +4 -0
- package/src/providers/kinesis-firehose/types/buffer.ts +20 -0
- package/src/providers/kinesis-firehose/types/index.ts +9 -0
- package/src/providers/kinesis-firehose/types/inputs.ts +9 -0
- package/src/providers/kinesis-firehose/utils/constants.ts +9 -0
- package/src/providers/kinesis-firehose/utils/getEventBuffer.ts +117 -0
- package/src/providers/kinesis-firehose/utils/index.ts +5 -0
- package/src/providers/kinesis-firehose/utils/resolveConfig.ts +36 -0
- package/src/providers/personalize/apis/flushEvents.ts +37 -0
- package/src/providers/personalize/apis/index.ts +5 -0
- package/src/providers/personalize/apis/record.ts +102 -0
- package/src/providers/personalize/index.ts +4 -0
- package/src/providers/personalize/types/buffer.ts +21 -0
- package/src/providers/personalize/types/index.ts +5 -0
- package/src/providers/personalize/types/inputs.ts +11 -0
- package/src/providers/personalize/utils/autoTrackMedia.ts +232 -0
- package/src/providers/personalize/utils/cachedSession.ts +68 -0
- package/src/providers/personalize/utils/constants.ts +12 -0
- package/src/providers/personalize/utils/getEventBuffer.ts +110 -0
- package/src/providers/personalize/utils/index.ts +11 -0
- package/src/providers/personalize/utils/resolveConfig.ts +41 -0
- package/src/providers/pinpoint/apis/configureAutoTrack.ts +49 -0
- package/src/providers/pinpoint/apis/flushEvents.ts +32 -0
- package/src/providers/pinpoint/apis/identifyUser.ts +78 -0
- package/src/providers/pinpoint/apis/index.ts +7 -0
- package/src/providers/pinpoint/apis/record.ts +83 -0
- package/src/providers/pinpoint/index.ts +9 -0
- package/src/providers/pinpoint/types/index.ts +9 -0
- package/src/providers/pinpoint/types/inputs.ts +24 -0
- package/src/providers/pinpoint/types/options.ts +12 -0
- package/src/providers/pinpoint/utils/index.ts +5 -0
- package/src/providers/pinpoint/utils/resolveConfig.ts +18 -0
- package/src/providers/pinpoint/utils/resolveCredentials.ts +20 -0
- package/src/trackers/EventTracker.ts +119 -99
- package/src/trackers/PageViewTracker.ts +131 -128
- package/src/trackers/SessionTracker.native.ts +105 -0
- package/src/trackers/SessionTracker.ts +80 -154
- package/src/trackers/index.ts +2 -1
- package/src/types/index.ts +8 -3
- package/src/types/inputs.ts +52 -0
- package/src/types/kinesis.ts +13 -0
- package/src/types/options.ts +7 -0
- package/src/types/trackers.ts +35 -0
- package/src/utils/eventBuffer/EventBuffer.ts +84 -0
- package/src/utils/eventBuffer/index.ts +5 -0
- package/src/utils/eventBuffer/types.ts +12 -0
- package/src/utils/groupBy.ts +12 -0
- package/src/utils/index.ts +21 -0
- package/src/utils/resolveCredentials.ts +14 -0
- package/src/utils/statusHelpers.ts +17 -0
- package/src/utils/trackerConfigHelpers.native.ts +18 -0
- package/src/utils/trackerConfigHelpers.ts +19 -0
- package/src/utils/trackerHelpers.ts +57 -0
- package/src/utils/{UserAgent.ts → userAgent.ts} +1 -1
- package/lib/.tsbuildinfo +0 -3
- package/lib/Analytics.d.ts +0 -87
- package/lib/Analytics.js +0 -354
- package/lib/Analytics.js.map +0 -1
- package/lib/Providers/AWSKinesisFirehoseProvider.d.ts +0 -12
- package/lib/Providers/AWSKinesisFirehoseProvider.js +0 -82
- package/lib/Providers/AWSKinesisFirehoseProvider.js.map +0 -1
- package/lib/Providers/AWSKinesisProvider.d.ts +0 -43
- package/lib/Providers/AWSKinesisProvider.js +0 -240
- package/lib/Providers/AWSKinesisProvider.js.map +0 -1
- package/lib/Providers/AWSPinpointProvider.d.ts +0 -67
- package/lib/Providers/AWSPinpointProvider.js +0 -576
- package/lib/Providers/AWSPinpointProvider.js.map +0 -1
- package/lib/Providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
- package/lib/Providers/AmazonPersonalizeHelper/DataType.js +0 -3
- package/lib/Providers/AmazonPersonalizeHelper/DataType.js.map +0 -1
- package/lib/Providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
- package/lib/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -156
- package/lib/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js.map +0 -1
- package/lib/Providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
- package/lib/Providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -97
- package/lib/Providers/AmazonPersonalizeHelper/SessionInfoManager.js.map +0 -1
- package/lib/Providers/AmazonPersonalizeHelper/index.d.ts +0 -3
- package/lib/Providers/AmazonPersonalizeHelper/index.js +0 -7
- package/lib/Providers/AmazonPersonalizeHelper/index.js.map +0 -1
- package/lib/Providers/AmazonPersonalizeProvider.d.ts +0 -76
- package/lib/Providers/AmazonPersonalizeProvider.js +0 -331
- package/lib/Providers/AmazonPersonalizeProvider.js.map +0 -1
- package/lib/Providers/EventBuffer.d.ts +0 -28
- package/lib/Providers/EventBuffer.js +0 -210
- package/lib/Providers/EventBuffer.js.map +0 -1
- package/lib/Providers/index.d.ts +0 -4
- package/lib/Providers/index.js +0 -13
- package/lib/Providers/index.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/setupTests.js.map +0 -1
- package/lib/trackers/EventTracker.js.map +0 -1
- package/lib/trackers/PageViewTracker.js.map +0 -1
- package/lib/trackers/SessionTracker-rn.d.ts +0 -12
- package/lib/trackers/SessionTracker-rn.js +0 -134
- package/lib/trackers/SessionTracker-rn.js.map +0 -1
- package/lib/trackers/SessionTracker.js.map +0 -1
- package/lib/trackers/index.js.map +0 -1
- package/lib/trackers/reactnative.d.ts +0 -8
- package/lib/trackers/reactnative.js +0 -19
- package/lib/trackers/reactnative.js.map +0 -1
- package/lib/types/Analytics.d.ts +0 -66
- package/lib/types/Analytics.js +0 -3
- package/lib/types/Analytics.js.map +0 -1
- package/lib/types/Provider.d.ts +0 -10
- package/lib/types/Provider.js.map +0 -1
- package/lib/types/Providers/AWSKinesisProvider.d.ts +0 -6
- package/lib/types/Providers/AWSKinesisProvider.js +0 -3
- package/lib/types/Providers/AWSKinesisProvider.js.map +0 -1
- package/lib/types/Providers/AWSPinpointProvider.d.ts +0 -50
- package/lib/types/Providers/AWSPinpointProvider.js +0 -3
- package/lib/types/Providers/AWSPinpointProvider.js.map +0 -1
- package/lib/types/Providers/AmazonPersonalizeProvider.d.ts +0 -7
- package/lib/types/Providers/AmazonPersonalizeProvider.js +0 -3
- package/lib/types/Providers/AmazonPersonalizeProvider.js.map +0 -1
- package/lib/types/Providers/index.d.ts +0 -1
- package/lib/types/Providers/index.js +0 -3
- package/lib/types/Providers/index.js.map +0 -1
- package/lib/types/index.js.map +0 -1
- package/lib/utils/AppUtils.d.ts +0 -2
- package/lib/utils/AppUtils.js.map +0 -1
- package/lib/utils/AppUtils.native.d.ts +0 -2
- package/lib/utils/AppUtils.native.js +0 -10
- package/lib/utils/AppUtils.native.js.map +0 -1
- package/lib/utils/MethodEmbed.d.ts +0 -11
- package/lib/utils/MethodEmbed.js +0 -43
- package/lib/utils/MethodEmbed.js.map +0 -1
- package/lib/utils/UserAgent.js.map +0 -1
- package/lib/vendor/dom-utils/closest.d.ts +0 -12
- package/lib/vendor/dom-utils/closest.js +0 -27
- package/lib/vendor/dom-utils/closest.js.map +0 -1
- package/lib/vendor/dom-utils/delegate.d.ts +0 -18
- package/lib/vendor/dom-utils/delegate.js +0 -51
- package/lib/vendor/dom-utils/delegate.js.map +0 -1
- package/lib/vendor/dom-utils/dispatch.d.ts +0 -17
- package/lib/vendor/dom-utils/dispatch.js +0 -51
- package/lib/vendor/dom-utils/dispatch.js.map +0 -1
- package/lib/vendor/dom-utils/get-attributes.d.ts +0 -11
- package/lib/vendor/dom-utils/get-attributes.js +0 -28
- package/lib/vendor/dom-utils/get-attributes.js.map +0 -1
- package/lib/vendor/dom-utils/index.d.ts +0 -7
- package/lib/vendor/dom-utils/index.js +0 -17
- package/lib/vendor/dom-utils/index.js.map +0 -1
- package/lib/vendor/dom-utils/matches.d.ts +0 -11
- package/lib/vendor/dom-utils/matches.js +0 -69
- package/lib/vendor/dom-utils/matches.js.map +0 -1
- package/lib/vendor/dom-utils/parents.d.ts +0 -10
- package/lib/vendor/dom-utils/parents.js +0 -22
- package/lib/vendor/dom-utils/parents.js.map +0 -1
- package/lib/vendor/dom-utils/parse-url.d.ts +0 -9
- package/lib/vendor/dom-utils/parse-url.js +0 -59
- package/lib/vendor/dom-utils/parse-url.js.map +0 -1
- package/lib-esm/.tsbuildinfo +0 -3
- package/lib-esm/Analytics.d.ts +0 -87
- package/lib-esm/Analytics.js +0 -352
- package/lib-esm/Analytics.js.map +0 -1
- package/lib-esm/Providers/AWSKinesisFirehoseProvider.d.ts +0 -12
- package/lib-esm/Providers/AWSKinesisFirehoseProvider.js +0 -80
- package/lib-esm/Providers/AWSKinesisFirehoseProvider.js.map +0 -1
- package/lib-esm/Providers/AWSKinesisProvider.d.ts +0 -43
- package/lib-esm/Providers/AWSKinesisProvider.js +0 -238
- package/lib-esm/Providers/AWSKinesisProvider.js.map +0 -1
- package/lib-esm/Providers/AWSPinpointProvider.d.ts +0 -67
- package/lib-esm/Providers/AWSPinpointProvider.js +0 -574
- package/lib-esm/Providers/AWSPinpointProvider.js.map +0 -1
- package/lib-esm/Providers/AmazonPersonalizeHelper/DataType.d.ts +0 -40
- package/lib-esm/Providers/AmazonPersonalizeHelper/DataType.js +0 -1
- package/lib-esm/Providers/AmazonPersonalizeHelper/DataType.js.map +0 -1
- package/lib-esm/Providers/AmazonPersonalizeHelper/MediaAutoTrack.d.ts +0 -20
- package/lib-esm/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js +0 -154
- package/lib-esm/Providers/AmazonPersonalizeHelper/MediaAutoTrack.js.map +0 -1
- package/lib-esm/Providers/AmazonPersonalizeHelper/SessionInfoManager.d.ts +0 -17
- package/lib-esm/Providers/AmazonPersonalizeHelper/SessionInfoManager.js +0 -94
- package/lib-esm/Providers/AmazonPersonalizeHelper/SessionInfoManager.js.map +0 -1
- package/lib-esm/Providers/AmazonPersonalizeHelper/index.d.ts +0 -3
- package/lib-esm/Providers/AmazonPersonalizeHelper/index.js +0 -3
- package/lib-esm/Providers/AmazonPersonalizeHelper/index.js.map +0 -1
- package/lib-esm/Providers/AmazonPersonalizeProvider.d.ts +0 -76
- package/lib-esm/Providers/AmazonPersonalizeProvider.js +0 -329
- package/lib-esm/Providers/AmazonPersonalizeProvider.js.map +0 -1
- package/lib-esm/Providers/EventBuffer.d.ts +0 -28
- package/lib-esm/Providers/EventBuffer.js +0 -208
- package/lib-esm/Providers/EventBuffer.js.map +0 -1
- package/lib-esm/Providers/index.d.ts +0 -4
- package/lib-esm/Providers/index.js +0 -7
- package/lib-esm/Providers/index.js.map +0 -1
- package/lib-esm/index.js.map +0 -1
- package/lib-esm/setupTests.js.map +0 -1
- package/lib-esm/trackers/EventTracker.js.map +0 -1
- package/lib-esm/trackers/PageViewTracker.js.map +0 -1
- package/lib-esm/trackers/SessionTracker-rn.d.ts +0 -12
- package/lib-esm/trackers/SessionTracker-rn.js +0 -132
- package/lib-esm/trackers/SessionTracker-rn.js.map +0 -1
- package/lib-esm/trackers/SessionTracker.js.map +0 -1
- package/lib-esm/trackers/index.js.map +0 -1
- package/lib-esm/trackers/reactnative.d.ts +0 -8
- package/lib-esm/trackers/reactnative.js +0 -15
- package/lib-esm/trackers/reactnative.js.map +0 -1
- package/lib-esm/types/Analytics.d.ts +0 -66
- package/lib-esm/types/Analytics.js +0 -1
- package/lib-esm/types/Analytics.js.map +0 -1
- package/lib-esm/types/Provider.d.ts +0 -10
- package/lib-esm/types/Provider.js.map +0 -1
- package/lib-esm/types/Providers/AWSKinesisProvider.d.ts +0 -6
- package/lib-esm/types/Providers/AWSKinesisProvider.js +0 -1
- package/lib-esm/types/Providers/AWSKinesisProvider.js.map +0 -1
- package/lib-esm/types/Providers/AWSPinpointProvider.d.ts +0 -50
- package/lib-esm/types/Providers/AWSPinpointProvider.js +0 -1
- package/lib-esm/types/Providers/AWSPinpointProvider.js.map +0 -1
- package/lib-esm/types/Providers/AmazonPersonalizeProvider.d.ts +0 -7
- package/lib-esm/types/Providers/AmazonPersonalizeProvider.js +0 -1
- package/lib-esm/types/Providers/AmazonPersonalizeProvider.js.map +0 -1
- package/lib-esm/types/Providers/index.d.ts +0 -1
- package/lib-esm/types/Providers/index.js +0 -1
- package/lib-esm/types/Providers/index.js.map +0 -1
- package/lib-esm/types/index.js.map +0 -1
- package/lib-esm/utils/AppUtils.d.ts +0 -2
- package/lib-esm/utils/AppUtils.js +0 -7
- package/lib-esm/utils/AppUtils.js.map +0 -1
- package/lib-esm/utils/AppUtils.native.d.ts +0 -2
- package/lib-esm/utils/AppUtils.native.js +0 -8
- package/lib-esm/utils/AppUtils.native.js.map +0 -1
- package/lib-esm/utils/MethodEmbed.d.ts +0 -11
- package/lib-esm/utils/MethodEmbed.js +0 -41
- package/lib-esm/utils/MethodEmbed.js.map +0 -1
- package/lib-esm/utils/UserAgent.js.map +0 -1
- package/lib-esm/vendor/dom-utils/closest.d.ts +0 -12
- package/lib-esm/vendor/dom-utils/closest.js +0 -24
- package/lib-esm/vendor/dom-utils/closest.js.map +0 -1
- package/lib-esm/vendor/dom-utils/delegate.d.ts +0 -18
- package/lib-esm/vendor/dom-utils/delegate.js +0 -48
- package/lib-esm/vendor/dom-utils/delegate.js.map +0 -1
- package/lib-esm/vendor/dom-utils/dispatch.d.ts +0 -17
- package/lib-esm/vendor/dom-utils/dispatch.js +0 -48
- package/lib-esm/vendor/dom-utils/dispatch.js.map +0 -1
- package/lib-esm/vendor/dom-utils/get-attributes.d.ts +0 -11
- package/lib-esm/vendor/dom-utils/get-attributes.js +0 -25
- package/lib-esm/vendor/dom-utils/get-attributes.js.map +0 -1
- package/lib-esm/vendor/dom-utils/index.d.ts +0 -7
- package/lib-esm/vendor/dom-utils/index.js +0 -8
- package/lib-esm/vendor/dom-utils/index.js.map +0 -1
- package/lib-esm/vendor/dom-utils/matches.d.ts +0 -11
- package/lib-esm/vendor/dom-utils/matches.js +0 -66
- package/lib-esm/vendor/dom-utils/matches.js.map +0 -1
- package/lib-esm/vendor/dom-utils/parents.d.ts +0 -10
- package/lib-esm/vendor/dom-utils/parents.js +0 -19
- package/lib-esm/vendor/dom-utils/parents.js.map +0 -1
- package/lib-esm/vendor/dom-utils/parse-url.d.ts +0 -9
- package/lib-esm/vendor/dom-utils/parse-url.js +0 -56
- package/lib-esm/vendor/dom-utils/parse-url.js.map +0 -1
- package/src/Analytics.ts +0 -446
- package/src/Providers/AWSKinesisFirehoseProvider.ts +0 -105
- package/src/Providers/AWSKinesisProvider.ts +0 -250
- package/src/Providers/AWSPinpointProvider.ts +0 -685
- package/src/Providers/AmazonPersonalizeHelper/DataType.ts +0 -49
- package/src/Providers/AmazonPersonalizeHelper/MediaAutoTrack.ts +0 -196
- package/src/Providers/AmazonPersonalizeHelper/SessionInfoManager.ts +0 -122
- package/src/Providers/AmazonPersonalizeHelper/index.ts +0 -11
- package/src/Providers/AmazonPersonalizeProvider.ts +0 -398
- package/src/Providers/EventBuffer.ts +0 -257
- package/src/Providers/index.ts +0 -6
- package/src/trackers/SessionTracker-rn.ts +0 -134
- package/src/trackers/reactnative.ts +0 -13
- package/src/types/Analytics.ts +0 -87
- package/src/types/Provider.ts +0 -26
- package/src/types/Providers/AWSPinpointProvider.ts +0 -60
- package/src/types/Providers/AmazonPersonalizeProvider.ts +0 -9
- package/src/utils/AppUtils.native.ts +0 -9
- package/src/utils/MethodEmbed.ts +0 -49
- package/src/vendor/dom-utils/closest.ts +0 -25
- package/src/vendor/dom-utils/delegate.ts +0 -51
- package/src/vendor/dom-utils/dispatch.ts +0 -59
- package/src/vendor/dom-utils/get-attributes.ts +0 -26
- package/src/vendor/dom-utils/index.ts +0 -7
- package/src/vendor/dom-utils/matches.ts +0 -68
- package/src/vendor/dom-utils/parents.ts +0 -19
- package/src/vendor/dom-utils/parse-url.ts +0 -66
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { isBrowser } from '@aws-amplify/core/internals/utils';
|
|
4
|
+
import { ConsoleLogger } from '@aws-amplify/core';
|
|
5
|
+
var HTML5_MEDIA_EVENT;
|
|
6
|
+
(function (HTML5_MEDIA_EVENT) {
|
|
7
|
+
HTML5_MEDIA_EVENT["PLAY"] = "play";
|
|
8
|
+
HTML5_MEDIA_EVENT["PAUSE"] = "pause";
|
|
9
|
+
HTML5_MEDIA_EVENT["ENDED"] = "Ended";
|
|
10
|
+
})(HTML5_MEDIA_EVENT || (HTML5_MEDIA_EVENT = {}));
|
|
11
|
+
var MEDIA_TYPE;
|
|
12
|
+
(function (MEDIA_TYPE) {
|
|
13
|
+
MEDIA_TYPE["IFRAME"] = "IFRAME";
|
|
14
|
+
MEDIA_TYPE["VIDEO"] = "VIDEO";
|
|
15
|
+
MEDIA_TYPE["AUDIO"] = "AUDIO";
|
|
16
|
+
})(MEDIA_TYPE || (MEDIA_TYPE = {}));
|
|
17
|
+
var EVENT_TYPE;
|
|
18
|
+
(function (EVENT_TYPE) {
|
|
19
|
+
EVENT_TYPE["PLAY"] = "Play";
|
|
20
|
+
EVENT_TYPE["ENDED"] = "Ended";
|
|
21
|
+
EVENT_TYPE["PAUSE"] = "Pause";
|
|
22
|
+
EVENT_TYPE["TIME_WATCHED"] = "TimeWatched";
|
|
23
|
+
})(EVENT_TYPE || (EVENT_TYPE = {}));
|
|
24
|
+
const logger = new ConsoleLogger('MediaAutoTrack');
|
|
25
|
+
const startIframeAutoTracking = (element, recordEvent) => {
|
|
26
|
+
let isPlaying = false;
|
|
27
|
+
let player;
|
|
28
|
+
const mediaProperties = () => {
|
|
29
|
+
const duration = Number(parseFloat(player.getDuration()).toFixed(4));
|
|
30
|
+
const currentTime = Number(parseFloat(player.getCurrentTime()).toFixed(4));
|
|
31
|
+
return {
|
|
32
|
+
duration,
|
|
33
|
+
eventValue: Number((currentTime / duration).toFixed(4)),
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const scriptElement = document.createElement('script');
|
|
37
|
+
scriptElement.type = 'text/javascript';
|
|
38
|
+
scriptElement.src = 'https://www.youtube.com/iframe_api';
|
|
39
|
+
document.body.append(scriptElement);
|
|
40
|
+
const timer = setInterval(() => {
|
|
41
|
+
if (isPlaying && player) {
|
|
42
|
+
recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());
|
|
43
|
+
}
|
|
44
|
+
}, 3000);
|
|
45
|
+
element.addEventListener('unload', () => clearInterval(timer));
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
window.onYouTubeIframeAPIReady = () => {
|
|
48
|
+
// @ts-ignore
|
|
49
|
+
delete window.onYouTubeIframeAPIReady;
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
player = new window.YT.Player(element.id, {
|
|
52
|
+
events: {
|
|
53
|
+
onStateChange: (event) => {
|
|
54
|
+
const iframeEventMapping = {
|
|
55
|
+
0: EVENT_TYPE.ENDED,
|
|
56
|
+
1: EVENT_TYPE.PLAY,
|
|
57
|
+
2: EVENT_TYPE.PAUSE,
|
|
58
|
+
};
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
const eventType = iframeEventMapping[event.data];
|
|
61
|
+
switch (eventType) {
|
|
62
|
+
case EVENT_TYPE.ENDED:
|
|
63
|
+
case EVENT_TYPE.PAUSE:
|
|
64
|
+
isPlaying = false;
|
|
65
|
+
break;
|
|
66
|
+
case EVENT_TYPE.PLAY:
|
|
67
|
+
isPlaying = true;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
if (eventType) {
|
|
71
|
+
recordEvent(eventType, mediaProperties());
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
const startHTMLMediaAutoTracking = (element, recordEvent) => {
|
|
79
|
+
let isPlaying = false;
|
|
80
|
+
const mediaProperties = () => ({
|
|
81
|
+
duration: element.duration,
|
|
82
|
+
eventValue: Number((element.currentTime / element.duration).toFixed(4)),
|
|
83
|
+
});
|
|
84
|
+
const timer = setInterval(() => {
|
|
85
|
+
if (isPlaying) {
|
|
86
|
+
recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());
|
|
87
|
+
}
|
|
88
|
+
}, 3000);
|
|
89
|
+
element.addEventListener('unload', () => clearInterval(timer));
|
|
90
|
+
element.addEventListener(HTML5_MEDIA_EVENT.PLAY, () => {
|
|
91
|
+
isPlaying = true;
|
|
92
|
+
recordEvent(EVENT_TYPE.PLAY, mediaProperties());
|
|
93
|
+
});
|
|
94
|
+
element.addEventListener(HTML5_MEDIA_EVENT.PAUSE, () => {
|
|
95
|
+
isPlaying = false;
|
|
96
|
+
recordEvent(EVENT_TYPE.PAUSE, mediaProperties());
|
|
97
|
+
});
|
|
98
|
+
element.addEventListener(HTML5_MEDIA_EVENT.ENDED, () => {
|
|
99
|
+
isPlaying = false;
|
|
100
|
+
recordEvent(EVENT_TYPE.ENDED, mediaProperties());
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
const checkElementLoaded = (interval, maxTries) => {
|
|
104
|
+
let retryCount = 0;
|
|
105
|
+
const wait = () => new Promise(r => setTimeout(r, interval));
|
|
106
|
+
const check = async (elementId) => {
|
|
107
|
+
if (retryCount >= maxTries) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const domElement = document.getElementById(elementId);
|
|
111
|
+
if (domElement && domElement.clientHeight) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
retryCount += 1;
|
|
116
|
+
await wait();
|
|
117
|
+
return await check(elementId);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
return check;
|
|
121
|
+
};
|
|
122
|
+
const recordEvent = (config, eventBuffer) => (eventType, properties) => {
|
|
123
|
+
// override eventType and merge properties
|
|
124
|
+
eventBuffer.append({
|
|
125
|
+
...config,
|
|
126
|
+
event: {
|
|
127
|
+
...config.event,
|
|
128
|
+
eventType,
|
|
129
|
+
properties: {
|
|
130
|
+
...config.event.properties,
|
|
131
|
+
...properties,
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
timestamp: Date.now(),
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
export const autoTrackMedia = async (config, eventBuffer) => {
|
|
138
|
+
const { eventType, properties } = config.event;
|
|
139
|
+
const { domElementId, ...otherProperties } = properties;
|
|
140
|
+
if (!isBrowser()) {
|
|
141
|
+
logger.debug(`${eventType} only for browser`);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (typeof domElementId === 'string' && !domElementId) {
|
|
145
|
+
logger.debug("Missing domElementId field in 'properties' for MediaAutoTrack event type.");
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const elementId = domElementId;
|
|
149
|
+
const isElementLoaded = await checkElementLoaded(500, 5)(elementId);
|
|
150
|
+
if (isElementLoaded) {
|
|
151
|
+
const autoTrackConfigWithoutDomElementId = {
|
|
152
|
+
...config,
|
|
153
|
+
event: {
|
|
154
|
+
...config.event,
|
|
155
|
+
properties: otherProperties,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
const element = document.getElementById(elementId);
|
|
159
|
+
switch (element?.tagName) {
|
|
160
|
+
case MEDIA_TYPE.IFRAME:
|
|
161
|
+
startIframeAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));
|
|
162
|
+
break;
|
|
163
|
+
case MEDIA_TYPE.VIDEO:
|
|
164
|
+
case MEDIA_TYPE.AUDIO:
|
|
165
|
+
if (element instanceof HTMLMediaElement) {
|
|
166
|
+
startHTMLMediaAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
default:
|
|
170
|
+
logger.debug(`Unsupported DOM element tag: ${element?.tagName}`);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
logger.debug('Cannot find the media element.');
|
|
176
|
+
}
|
|
177
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Cache } from '@aws-amplify/core';
|
|
4
|
+
import { isBrowser, amplifyUuid } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
const PERSONALIZE_CACHE_USERID = '_awsct_uid';
|
|
6
|
+
const PERSONALIZE_CACHE_SESSIONID = '_awsct_sid';
|
|
7
|
+
const DEFAULT_CACHE_PREFIX = 'personalize';
|
|
8
|
+
const DELIMITER = '.';
|
|
9
|
+
const CACHE_EXPIRY_IN_DAYS = 7;
|
|
10
|
+
const normalize = (key) => [key, isBrowser() ? window.location.host : DEFAULT_CACHE_PREFIX].join(DELIMITER);
|
|
11
|
+
const getCache = (key) => Cache.getItem(normalize(key));
|
|
12
|
+
const setCache = (key, value) => {
|
|
13
|
+
const expiredAt = new Date(Date.now() + 3600000 * 24 * CACHE_EXPIRY_IN_DAYS);
|
|
14
|
+
Cache.setItem(normalize(key), value, {
|
|
15
|
+
expires: expiredAt.getTime(),
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
export const resolveCachedSession = async () => {
|
|
19
|
+
let sessionId = await getCache(PERSONALIZE_CACHE_SESSIONID);
|
|
20
|
+
if (!sessionId) {
|
|
21
|
+
sessionId = amplifyUuid();
|
|
22
|
+
setCache(PERSONALIZE_CACHE_SESSIONID, sessionId);
|
|
23
|
+
}
|
|
24
|
+
const userId = await getCache(PERSONALIZE_CACHE_USERID);
|
|
25
|
+
return {
|
|
26
|
+
sessionId,
|
|
27
|
+
userId,
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export const updateCachedSession = (newUserId, currentSessionId, currentUserId) => {
|
|
31
|
+
const isNoCachedSession = !currentSessionId;
|
|
32
|
+
const isSignOutCase = !newUserId && !currentUserId;
|
|
33
|
+
const isSwitchUserCase = !!newUserId && !!currentUserId && newUserId !== currentUserId;
|
|
34
|
+
const isRequireNewSession = isNoCachedSession || isSignOutCase || isSwitchUserCase;
|
|
35
|
+
const isRequireUpdateSession = !!currentSessionId && !currentUserId && !!newUserId;
|
|
36
|
+
if (isRequireNewSession) {
|
|
37
|
+
const newSessionId = amplifyUuid();
|
|
38
|
+
setCache(PERSONALIZE_CACHE_SESSIONID, newSessionId);
|
|
39
|
+
setCache(PERSONALIZE_CACHE_USERID, newUserId);
|
|
40
|
+
}
|
|
41
|
+
else if (isRequireUpdateSession) {
|
|
42
|
+
setCache(PERSONALIZE_CACHE_USERID, newUserId);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const DEFAULT_PERSONALIZE_CONFIG: {
|
|
2
|
+
flushSize: number;
|
|
3
|
+
flushInterval: number;
|
|
4
|
+
};
|
|
5
|
+
export declare const PERSONALIZE_FLUSH_SIZE_MAX = 10;
|
|
6
|
+
export declare const IDENTIFY_EVENT_TYPE = "Identify";
|
|
7
|
+
export declare const MEDIA_AUTO_TRACK_EVENT_TYPE = "MediaAutoTrack";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
export const DEFAULT_PERSONALIZE_CONFIG = {
|
|
4
|
+
flushSize: 5,
|
|
5
|
+
flushInterval: 5000,
|
|
6
|
+
};
|
|
7
|
+
export const PERSONALIZE_FLUSH_SIZE_MAX = 10;
|
|
8
|
+
export const IDENTIFY_EVENT_TYPE = 'Identify';
|
|
9
|
+
export const MEDIA_AUTO_TRACK_EVENT_TYPE = 'MediaAutoTrack';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { EventBuffer } from '../../../utils';
|
|
2
|
+
import { PersonalizeBufferConfig, PersonalizeBufferEvent } from '../types';
|
|
3
|
+
export declare const getEventBuffer: ({ region, flushSize, flushInterval, bufferSize, credentials, identityId, userAgentValue, }: PersonalizeBufferConfig) => EventBuffer<PersonalizeBufferEvent>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { EventBuffer, groupBy } from '../../../utils';
|
|
4
|
+
import { PersonalizeEventsClient, PutEventsCommand, } from '@aws-sdk/client-personalize-events';
|
|
5
|
+
/**
|
|
6
|
+
* These Records hold cached event buffers and AWS clients.
|
|
7
|
+
* The hash key is determined by the region and session,
|
|
8
|
+
* consisting of a combined value comprising [region, sessionToken, identityId].
|
|
9
|
+
*
|
|
10
|
+
* Only one active session should exist at any given moment.
|
|
11
|
+
* When a new session is initiated, the previous ones should be released.
|
|
12
|
+
* */
|
|
13
|
+
const eventBufferMap = {};
|
|
14
|
+
const cachedClients = {};
|
|
15
|
+
const DELIMITER = '#';
|
|
16
|
+
const createPutEventsCommand = (ids, events) => {
|
|
17
|
+
const [trackingId, sessionId, userId] = ids.split(DELIMITER);
|
|
18
|
+
return new PutEventsCommand({
|
|
19
|
+
trackingId,
|
|
20
|
+
sessionId,
|
|
21
|
+
userId,
|
|
22
|
+
eventList: events.map(event => ({
|
|
23
|
+
eventId: event.event.eventId,
|
|
24
|
+
eventType: event.event.eventType,
|
|
25
|
+
properties: JSON.stringify(event.event.properties),
|
|
26
|
+
sentAt: new Date(event.timestamp),
|
|
27
|
+
})),
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const submitEvents = async (events, client) => {
|
|
31
|
+
const groupedByIds = Object.entries(groupBy(event => [event.trackingId, event.sessionId, event.userId]
|
|
32
|
+
.filter(id => !!id)
|
|
33
|
+
.join(DELIMITER), events));
|
|
34
|
+
const requests = groupedByIds
|
|
35
|
+
.map(([ids, events]) => createPutEventsCommand(ids, events))
|
|
36
|
+
.map(command => client.send(command));
|
|
37
|
+
await Promise.allSettled(requests);
|
|
38
|
+
return Promise.resolve([]);
|
|
39
|
+
};
|
|
40
|
+
export const getEventBuffer = ({ region, flushSize, flushInterval, bufferSize, credentials, identityId, userAgentValue, }) => {
|
|
41
|
+
const sessionIdentityKey = [region, identityId].filter(x => !!x).join('-');
|
|
42
|
+
if (!eventBufferMap[sessionIdentityKey]) {
|
|
43
|
+
const getClient = () => {
|
|
44
|
+
if (!cachedClients[sessionIdentityKey]) {
|
|
45
|
+
cachedClients[sessionIdentityKey] = new PersonalizeEventsClient({
|
|
46
|
+
region,
|
|
47
|
+
credentials,
|
|
48
|
+
customUserAgent: userAgentValue,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return events => submitEvents(events, cachedClients[sessionIdentityKey]);
|
|
52
|
+
};
|
|
53
|
+
eventBufferMap[sessionIdentityKey] =
|
|
54
|
+
new EventBuffer({
|
|
55
|
+
bufferSize,
|
|
56
|
+
flushSize,
|
|
57
|
+
flushInterval,
|
|
58
|
+
}, getClient);
|
|
59
|
+
const releaseSessionKeys = Object.keys(eventBufferMap).filter(key => key !== sessionIdentityKey);
|
|
60
|
+
for (const releaseSessionKey of releaseSessionKeys) {
|
|
61
|
+
eventBufferMap[releaseSessionKey].flushAll().finally(() => {
|
|
62
|
+
eventBufferMap[releaseSessionKey].release();
|
|
63
|
+
delete eventBufferMap[releaseSessionKey];
|
|
64
|
+
delete cachedClients[releaseSessionKey];
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return eventBufferMap[sessionIdentityKey];
|
|
69
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { getEventBuffer } from './getEventBuffer';
|
|
2
|
+
export { resolveConfig } from './resolveConfig';
|
|
3
|
+
export { autoTrackMedia } from './autoTrackMedia';
|
|
4
|
+
export { resolveCachedSession, updateCachedSession } from './cachedSession';
|
|
5
|
+
export { DEFAULT_PERSONALIZE_CONFIG, PERSONALIZE_FLUSH_SIZE_MAX, } from './constants';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
export { getEventBuffer } from './getEventBuffer';
|
|
4
|
+
export { resolveConfig } from './resolveConfig';
|
|
5
|
+
export { autoTrackMedia } from './autoTrackMedia';
|
|
6
|
+
export { resolveCachedSession, updateCachedSession } from './cachedSession';
|
|
7
|
+
export { DEFAULT_PERSONALIZE_CONFIG, PERSONALIZE_FLUSH_SIZE_MAX, } from './constants';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { Amplify } from '@aws-amplify/core';
|
|
4
|
+
import { AnalyticsValidationErrorCode, assertValidationError, } from '../../../errors';
|
|
5
|
+
import { DEFAULT_PERSONALIZE_CONFIG, PERSONALIZE_FLUSH_SIZE_MAX } from './';
|
|
6
|
+
export const resolveConfig = () => {
|
|
7
|
+
const config = Amplify.getConfig().Analytics?.Personalize;
|
|
8
|
+
const { region, trackingId, flushSize = DEFAULT_PERSONALIZE_CONFIG.flushSize, flushInterval = DEFAULT_PERSONALIZE_CONFIG.flushInterval, } = {
|
|
9
|
+
...DEFAULT_PERSONALIZE_CONFIG,
|
|
10
|
+
...config,
|
|
11
|
+
};
|
|
12
|
+
assertValidationError(!!region, AnalyticsValidationErrorCode.NoRegion);
|
|
13
|
+
assertValidationError(!!trackingId, AnalyticsValidationErrorCode.NoTrackingId);
|
|
14
|
+
assertValidationError(flushSize <= PERSONALIZE_FLUSH_SIZE_MAX, AnalyticsValidationErrorCode.InvalidFlushSize, `FlushSize for Personalize should be less or equal than ${PERSONALIZE_FLUSH_SIZE_MAX}`);
|
|
15
|
+
return {
|
|
16
|
+
region,
|
|
17
|
+
trackingId,
|
|
18
|
+
bufferSize: flushSize + 1,
|
|
19
|
+
flushSize,
|
|
20
|
+
flushInterval,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ConfigureAutoTrackInput } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Configures automatic event tracking for Pinpoint. This API will automatically transmit an analytic event when
|
|
4
|
+
* configured events are detected within your application. This can include: DOM element events (via the `event`
|
|
5
|
+
* tracker), session events (via the `session` tracker), and page view events (via the `pageView` tracker).
|
|
6
|
+
*
|
|
7
|
+
* @remark Only session tracking is currently supported on React Native.
|
|
8
|
+
*
|
|
9
|
+
* @param {ConfigureAutoTrackInput} params The input object to configure auto track behavior.
|
|
10
|
+
*
|
|
11
|
+
* @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
|
|
12
|
+
* @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
|
|
13
|
+
* configuration is incorrect.
|
|
14
|
+
*/
|
|
15
|
+
export declare const configureAutoTrack: (input: ConfigureAutoTrackInput) => void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { updateProviderTrackers, validateTrackerConfiguration, } from '../../../utils';
|
|
4
|
+
import { record } from './record';
|
|
5
|
+
// Configured Tracker instances for Pinpoint
|
|
6
|
+
const configuredTrackers = {};
|
|
7
|
+
// Callback that will emit an appropriate event to Pinpoint when required by the Tracker
|
|
8
|
+
const emitTrackingEvent = (eventName, attributes) => {
|
|
9
|
+
record({
|
|
10
|
+
name: eventName,
|
|
11
|
+
attributes,
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Configures automatic event tracking for Pinpoint. This API will automatically transmit an analytic event when
|
|
16
|
+
* configured events are detected within your application. This can include: DOM element events (via the `event`
|
|
17
|
+
* tracker), session events (via the `session` tracker), and page view events (via the `pageView` tracker).
|
|
18
|
+
*
|
|
19
|
+
* @remark Only session tracking is currently supported on React Native.
|
|
20
|
+
*
|
|
21
|
+
* @param {ConfigureAutoTrackInput} params The input object to configure auto track behavior.
|
|
22
|
+
*
|
|
23
|
+
* @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
|
|
24
|
+
* @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
|
|
25
|
+
* configuration is incorrect.
|
|
26
|
+
*/
|
|
27
|
+
export const configureAutoTrack = (input) => {
|
|
28
|
+
validateTrackerConfiguration(input);
|
|
29
|
+
// Initialize or update this provider's trackers
|
|
30
|
+
updateProviderTrackers(input, emitTrackingEvent, configuredTrackers);
|
|
31
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flushes all buffered Pinpoint events to the service.
|
|
3
|
+
*
|
|
4
|
+
* @note
|
|
5
|
+
* This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking
|
|
6
|
+
* this API may not be included in the flush.
|
|
7
|
+
*/
|
|
8
|
+
export declare const flushEvents: () => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { resolveConfig, resolveCredentials } from '../utils';
|
|
4
|
+
import { flushEvents as flushEventsCore } from '@aws-amplify/core/internals/providers/pinpoint';
|
|
5
|
+
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
6
|
+
import { ConsoleLogger } from '@aws-amplify/core';
|
|
7
|
+
import { getAnalyticsUserAgentString } from '../../../utils';
|
|
8
|
+
const logger = new ConsoleLogger('Analytics');
|
|
9
|
+
/**
|
|
10
|
+
* Flushes all buffered Pinpoint events to the service.
|
|
11
|
+
*
|
|
12
|
+
* @note
|
|
13
|
+
* This API will make a best-effort attempt to flush events from the buffer. Events recorded immediately after invoking
|
|
14
|
+
* this API may not be included in the flush.
|
|
15
|
+
*/
|
|
16
|
+
export const flushEvents = () => {
|
|
17
|
+
const { appId, region } = resolveConfig();
|
|
18
|
+
resolveCredentials()
|
|
19
|
+
.then(({ credentials, identityId }) => flushEventsCore(appId, region, credentials, identityId, getAnalyticsUserAgentString(AnalyticsAction.Record)))
|
|
20
|
+
.catch(e => logger.warn('Failed to flush events', e));
|
|
21
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IdentifyUserInput } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Sends information about a user to Pinpoint. Sending user information allows you to associate a user to their user
|
|
4
|
+
* profile and activities or actions in your application. Activity can be tracked across devices & platforms by using
|
|
5
|
+
* the same `userId`.
|
|
6
|
+
*
|
|
7
|
+
* @param {IdentifyUserParameters} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
|
|
8
|
+
* API.
|
|
9
|
+
*
|
|
10
|
+
* @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
|
|
11
|
+
* @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
|
|
12
|
+
* configuration is incorrect.
|
|
13
|
+
*
|
|
14
|
+
* @returns A promise that will resolve when the operation is complete.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* // Identify a user with Pinpoint
|
|
19
|
+
* await identifyUser({
|
|
20
|
+
* userId,
|
|
21
|
+
* userProfile: {
|
|
22
|
+
* email: 'userEmail@example.com'
|
|
23
|
+
* customProperties: {
|
|
24
|
+
* phoneNumber: ['555-555-5555'],
|
|
25
|
+
* },
|
|
26
|
+
* }
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* // Identify a user with Pinpoint with some additional demographics
|
|
33
|
+
* await identifyUser({
|
|
34
|
+
* userId,
|
|
35
|
+
* userProfile: {
|
|
36
|
+
* email: 'userEmail@example.com'
|
|
37
|
+
* customProperties: {
|
|
38
|
+
* phoneNumber: ['555-555-5555'],
|
|
39
|
+
* },
|
|
40
|
+
* demographic: {
|
|
41
|
+
* platform: 'ios',
|
|
42
|
+
* timezone: 'America/Los_Angeles'
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
* });
|
|
46
|
+
*/
|
|
47
|
+
export declare const identifyUser: ({ userId, userProfile, options, }: IdentifyUserInput) => Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
4
|
+
import { updateEndpoint, } from '@aws-amplify/core/internals/providers/pinpoint';
|
|
5
|
+
import { getAnalyticsUserAgentString } from '../../../utils';
|
|
6
|
+
import { resolveConfig, resolveCredentials } from '../utils';
|
|
7
|
+
/**
|
|
8
|
+
* Sends information about a user to Pinpoint. Sending user information allows you to associate a user to their user
|
|
9
|
+
* profile and activities or actions in your application. Activity can be tracked across devices & platforms by using
|
|
10
|
+
* the same `userId`.
|
|
11
|
+
*
|
|
12
|
+
* @param {IdentifyUserParameters} params The input object used to construct requests sent to Pinpoint's UpdateEndpoint
|
|
13
|
+
* API.
|
|
14
|
+
*
|
|
15
|
+
* @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
|
|
16
|
+
* @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
|
|
17
|
+
* configuration is incorrect.
|
|
18
|
+
*
|
|
19
|
+
* @returns A promise that will resolve when the operation is complete.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* // Identify a user with Pinpoint
|
|
24
|
+
* await identifyUser({
|
|
25
|
+
* userId,
|
|
26
|
+
* userProfile: {
|
|
27
|
+
* email: 'userEmail@example.com'
|
|
28
|
+
* customProperties: {
|
|
29
|
+
* phoneNumber: ['555-555-5555'],
|
|
30
|
+
* },
|
|
31
|
+
* }
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* // Identify a user with Pinpoint with some additional demographics
|
|
38
|
+
* await identifyUser({
|
|
39
|
+
* userId,
|
|
40
|
+
* userProfile: {
|
|
41
|
+
* email: 'userEmail@example.com'
|
|
42
|
+
* customProperties: {
|
|
43
|
+
* phoneNumber: ['555-555-5555'],
|
|
44
|
+
* },
|
|
45
|
+
* demographic: {
|
|
46
|
+
* platform: 'ios',
|
|
47
|
+
* timezone: 'America/Los_Angeles'
|
|
48
|
+
* }
|
|
49
|
+
* }
|
|
50
|
+
* });
|
|
51
|
+
*/
|
|
52
|
+
export const identifyUser = async ({ userId, userProfile, options, }) => {
|
|
53
|
+
const { credentials, identityId } = await resolveCredentials();
|
|
54
|
+
const { appId, region } = resolveConfig();
|
|
55
|
+
const { userAttributes } = options ?? {};
|
|
56
|
+
updateEndpoint({
|
|
57
|
+
appId,
|
|
58
|
+
category: 'Analytics',
|
|
59
|
+
credentials,
|
|
60
|
+
identityId,
|
|
61
|
+
region,
|
|
62
|
+
userAttributes,
|
|
63
|
+
userId,
|
|
64
|
+
userProfile,
|
|
65
|
+
userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.IdentifyUser),
|
|
66
|
+
});
|
|
67
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
export { record } from './record';
|
|
4
|
+
export { identifyUser } from './identifyUser';
|
|
5
|
+
export { configureAutoTrack } from './configureAutoTrack';
|
|
6
|
+
export { flushEvents } from './flushEvents';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { RecordInput } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Records an Analytic event to Pinpoint. Events will be buffered and periodically sent to Pinpoint.
|
|
4
|
+
*
|
|
5
|
+
* @param {RecordInput} params The input object used to construct the request.
|
|
6
|
+
*
|
|
7
|
+
* @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
|
|
8
|
+
* configuration is incorrect.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* // Send an event to Pinpoint
|
|
13
|
+
* record({ name: eventName })
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* // Send an event to Pinpoint with metrics & custom attributes
|
|
19
|
+
* record({
|
|
20
|
+
* name: eventName,
|
|
21
|
+
* attributes: {
|
|
22
|
+
* 'my-attribute': attributeValue
|
|
23
|
+
* },
|
|
24
|
+
* metrics: {
|
|
25
|
+
* 'my-metric': metricValue
|
|
26
|
+
* }
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare const record: (input: RecordInput) => void;
|