@aws-amplify/analytics 7.0.1-preview-testing.034e780.0 → 7.0.1-server-generate-client.1e317a1.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/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 +2 -2
- package/lib/errors/assertValidationError.d.ts +1 -1
- package/lib/errors/assertValidationError.js +7 -3
- package/lib/errors/validation.d.ts +5 -2
- package/lib/errors/validation.js +16 -4
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -1
- package/lib/providers/kinesis/apis/flushEvents.d.ts +8 -0
- package/lib/providers/kinesis/apis/flushEvents.js +38 -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 +48 -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/providers/kinesis/utils/constants.js +11 -0
- package/lib/providers/kinesis/utils/getEventBuffer.d.ts +3 -0
- package/lib/providers/kinesis/utils/getEventBuffer.js +103 -0
- package/lib/providers/kinesis/utils/resolveConfig.d.ts +7 -0
- package/lib/providers/kinesis/utils/resolveConfig.js +24 -0
- package/lib/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
- package/lib/providers/kinesis-firehose/apis/flushEvents.js +37 -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 +45 -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/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 +100 -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 +24 -0
- package/lib/providers/personalize/apis/flushEvents.d.ts +8 -0
- package/lib/providers/personalize/apis/flushEvents.js +36 -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 +87 -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 +183 -0
- package/lib/providers/personalize/utils/cachedSession.d.ts +5 -0
- package/lib/providers/personalize/utils/cachedSession.js +61 -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 +100 -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 +25 -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 +28 -0
- package/lib/providers/pinpoint/apis/identifyUser.d.ts +7 -5
- package/lib/providers/pinpoint/apis/identifyUser.js +15 -11
- package/lib/providers/pinpoint/apis/index.d.ts +2 -0
- package/lib/providers/pinpoint/apis/index.js +5 -1
- package/lib/providers/pinpoint/apis/record.d.ts +8 -14
- package/lib/providers/pinpoint/apis/record.js +22 -24
- package/lib/providers/pinpoint/index.d.ts +2 -2
- package/lib/providers/pinpoint/index.js +3 -1
- package/lib/providers/pinpoint/types/index.d.ts +2 -2
- package/lib/providers/pinpoint/types/index.js +0 -3
- package/lib/providers/pinpoint/types/inputs.d.ts +8 -17
- package/lib/providers/pinpoint/types/options.d.ts +5 -0
- package/lib/providers/pinpoint/types/options.js +4 -0
- package/lib/providers/pinpoint/utils/resolveCredentials.d.ts +1 -6
- package/lib/trackers/EventTracker.d.ts +10 -0
- package/lib/trackers/EventTracker.js +104 -0
- package/lib/trackers/PageViewTracker.d.ts +18 -0
- package/lib/trackers/PageViewTracker.js +116 -0
- package/lib/trackers/SessionTracker.d.ts +13 -0
- package/lib/trackers/SessionTracker.js +73 -0
- package/lib/trackers/SessionTracker.native.d.ts +13 -0
- package/lib/trackers/SessionTracker.native.js +73 -0
- package/lib/trackers/index.d.ts +3 -0
- package/lib/trackers/index.js +11 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/index.d.ts +3 -1
- package/lib/types/index.js +0 -2
- 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 +91 -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 +15 -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 +21 -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-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 +2 -2
- package/lib-esm/errors/AnalyticsError.js +1 -1
- package/lib-esm/errors/assertValidationError.d.ts +1 -1
- package/lib-esm/errors/assertValidationError.js +7 -3
- package/lib-esm/errors/validation.d.ts +5 -2
- package/lib-esm/errors/validation.js +16 -4
- package/lib-esm/index.d.ts +2 -1
- package/lib-esm/index.js +2 -1
- package/lib-esm/providers/kinesis/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/kinesis/apis/flushEvents.js +34 -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 +44 -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 +99 -0
- package/lib-esm/providers/kinesis/utils/resolveConfig.d.ts +7 -0
- package/lib-esm/providers/kinesis/utils/resolveConfig.js +20 -0
- package/lib-esm/providers/kinesis-firehose/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/kinesis-firehose/apis/flushEvents.js +33 -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 +41 -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/providers/kinesis-firehose/types/index.d.ts +2 -0
- package/lib-esm/providers/kinesis-firehose/types/index.js +3 -0
- 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 +96 -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 +20 -0
- package/lib-esm/providers/personalize/apis/flushEvents.d.ts +8 -0
- package/lib-esm/providers/personalize/apis/flushEvents.js +32 -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 +83 -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 +179 -0
- package/lib-esm/providers/personalize/utils/cachedSession.d.ts +5 -0
- package/lib-esm/providers/personalize/utils/cachedSession.js +56 -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 +96 -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 +21 -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 +24 -0
- package/lib-esm/providers/pinpoint/apis/identifyUser.d.ts +7 -5
- package/lib-esm/providers/pinpoint/apis/identifyUser.js +13 -9
- package/lib-esm/providers/pinpoint/apis/index.d.ts +2 -0
- package/lib-esm/providers/pinpoint/apis/index.js +2 -0
- package/lib-esm/providers/pinpoint/apis/record.d.ts +8 -14
- package/lib-esm/providers/pinpoint/apis/record.js +20 -22
- package/lib-esm/providers/pinpoint/index.d.ts +2 -2
- package/lib-esm/providers/pinpoint/index.js +1 -1
- package/lib-esm/providers/pinpoint/types/index.d.ts +2 -2
- package/lib-esm/providers/pinpoint/types/index.js +1 -1
- package/lib-esm/providers/pinpoint/types/inputs.d.ts +8 -17
- 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/resolveCredentials.d.ts +1 -6
- package/lib-esm/trackers/EventTracker.d.ts +10 -0
- package/lib-esm/trackers/EventTracker.js +101 -0
- package/lib-esm/trackers/PageViewTracker.d.ts +18 -0
- package/lib-esm/trackers/PageViewTracker.js +113 -0
- package/lib-esm/trackers/SessionTracker.d.ts +13 -0
- package/lib-esm/trackers/SessionTracker.js +70 -0
- package/lib-esm/trackers/SessionTracker.native.d.ts +13 -0
- package/lib-esm/trackers/SessionTracker.native.js +70 -0
- package/lib-esm/trackers/index.d.ts +3 -0
- package/lib-esm/trackers/index.js +5 -0
- package/lib-esm/tsconfig.tsbuildinfo +1 -1
- package/lib-esm/types/index.d.ts +3 -1
- 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 +88 -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 +11 -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 +17 -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/package.json +39 -9
- package/personalize/package.json +7 -0
- package/src/apis/disable.ts +13 -0
- package/src/apis/enable.ts +12 -0
- package/src/apis/index.ts +5 -0
- package/src/errors/AnalyticsError.ts +5 -2
- package/src/errors/assertValidationError.ts +9 -3
- package/src/errors/validation.ts +16 -4
- package/src/index.ts +4 -0
- 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/providers/kinesis/types/inputs.ts +10 -0
- package/src/providers/kinesis/utils/constants.ts +9 -0
- package/src/providers/kinesis/utils/getEventBuffer.ts +110 -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 +118 -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 +111 -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 +20 -12
- package/src/providers/pinpoint/apis/index.ts +2 -0
- package/src/providers/pinpoint/apis/record.ts +31 -23
- package/src/providers/pinpoint/index.ts +6 -2
- package/src/providers/pinpoint/types/index.ts +6 -2
- package/src/providers/pinpoint/types/inputs.ts +11 -17
- package/src/providers/pinpoint/types/options.ts +12 -0
- package/src/trackers/EventTracker.ts +135 -0
- package/src/trackers/PageViewTracker.ts +160 -0
- package/src/trackers/SessionTracker.native.ts +106 -0
- package/src/trackers/SessionTracker.ts +106 -0
- package/src/trackers/index.ts +6 -0
- package/src/types/index.ts +8 -1
- 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/lib/providers/pinpoint/types/errors.d.ts +0 -9
- package/lib/providers/pinpoint/types/errors.js +0 -15
- package/lib/types/analytics.d.ts +0 -50
- package/lib-esm/providers/pinpoint/types/errors.d.ts +0 -9
- package/lib-esm/providers/pinpoint/types/errors.js +0 -12
- package/lib-esm/types/analytics.d.ts +0 -50
- package/src/providers/pinpoint/types/errors.ts +0 -12
- package/src/types/analytics.ts +0 -70
- /package/lib/{types/analytics.js → providers/kinesis-firehose/types/buffer.js} +0 -0
- /package/lib-esm/{types/analytics.js → providers/kinesis-firehose/types/buffer.js} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { __awaiter, __generator } from "tslib";
|
|
4
|
+
import { autoTrackMedia, getEventBuffer, resolveCachedSession, resolveConfig, updateCachedSession, } from '../utils';
|
|
5
|
+
import { getAnalyticsUserAgentString, isAnalyticsEnabled, resolveCredentials, } from '../../../utils';
|
|
6
|
+
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
7
|
+
import { ConsoleLogger } from '@aws-amplify/core';
|
|
8
|
+
import { IDENTIFY_EVENT_TYPE, MEDIA_AUTO_TRACK_EVENT_TYPE, } from '../utils/constants';
|
|
9
|
+
var logger = new ConsoleLogger('Personalize');
|
|
10
|
+
export var record = function (_a) {
|
|
11
|
+
var userId = _a.userId, eventId = _a.eventId, eventType = _a.eventType, properties = _a.properties;
|
|
12
|
+
if (!isAnalyticsEnabled()) {
|
|
13
|
+
logger.debug('Analytics is disabled, event will not be recorded.');
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
var _b = resolveConfig(), region = _b.region, trackingId = _b.trackingId, bufferSize = _b.bufferSize, flushSize = _b.flushSize, flushInterval = _b.flushInterval;
|
|
17
|
+
resolveCredentials()
|
|
18
|
+
.then(function (_a) {
|
|
19
|
+
var credentials = _a.credentials, identityId = _a.identityId;
|
|
20
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
21
|
+
var timestamp, _b, cachedSessionId, cachedUserId, _c, updatedSessionId, updatedUserId, eventBuffer;
|
|
22
|
+
return __generator(this, function (_d) {
|
|
23
|
+
switch (_d.label) {
|
|
24
|
+
case 0:
|
|
25
|
+
timestamp = Date.now();
|
|
26
|
+
return [4 /*yield*/, resolveCachedSession()];
|
|
27
|
+
case 1:
|
|
28
|
+
_b = _d.sent(), cachedSessionId = _b.sessionId, cachedUserId = _b.userId;
|
|
29
|
+
if (eventType === IDENTIFY_EVENT_TYPE) {
|
|
30
|
+
updateCachedSession(typeof properties.userId === 'string' ? properties.userId : '', cachedSessionId, cachedUserId);
|
|
31
|
+
}
|
|
32
|
+
else if (!!userId) {
|
|
33
|
+
updateCachedSession(userId, cachedSessionId, cachedUserId);
|
|
34
|
+
}
|
|
35
|
+
return [4 /*yield*/, resolveCachedSession()];
|
|
36
|
+
case 2:
|
|
37
|
+
_c = _d.sent(), updatedSessionId = _c.sessionId, updatedUserId = _c.userId;
|
|
38
|
+
eventBuffer = getEventBuffer({
|
|
39
|
+
region: region,
|
|
40
|
+
flushSize: flushSize,
|
|
41
|
+
flushInterval: flushInterval,
|
|
42
|
+
bufferSize: bufferSize,
|
|
43
|
+
credentials: credentials,
|
|
44
|
+
identityId: identityId,
|
|
45
|
+
userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
|
|
46
|
+
});
|
|
47
|
+
if (eventType === MEDIA_AUTO_TRACK_EVENT_TYPE) {
|
|
48
|
+
autoTrackMedia({
|
|
49
|
+
trackingId: trackingId,
|
|
50
|
+
sessionId: updatedSessionId,
|
|
51
|
+
userId: updatedUserId,
|
|
52
|
+
event: {
|
|
53
|
+
eventId: eventId,
|
|
54
|
+
eventType: eventType,
|
|
55
|
+
properties: properties,
|
|
56
|
+
},
|
|
57
|
+
}, eventBuffer);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
eventBuffer.append({
|
|
61
|
+
trackingId: trackingId,
|
|
62
|
+
sessionId: updatedSessionId,
|
|
63
|
+
userId: updatedUserId,
|
|
64
|
+
event: {
|
|
65
|
+
eventId: eventId,
|
|
66
|
+
eventType: eventType,
|
|
67
|
+
properties: properties,
|
|
68
|
+
},
|
|
69
|
+
timestamp: timestamp,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (eventBuffer.length >= bufferSize) {
|
|
73
|
+
eventBuffer.flushAll();
|
|
74
|
+
}
|
|
75
|
+
return [2 /*return*/];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
})
|
|
80
|
+
.catch(function (e) {
|
|
81
|
+
logger.warn('Failed to record event.', e);
|
|
82
|
+
});
|
|
83
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { record, flushEvents } from './apis';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PersonalizeEvent } from './';
|
|
2
|
+
import { EventBufferConfig } from '../../../utils';
|
|
3
|
+
import { AWSCredentials } from '@aws-amplify/core/internals/utils';
|
|
4
|
+
export type PersonalizeBufferEvent = {
|
|
5
|
+
trackingId: string;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
userId?: string;
|
|
8
|
+
event: PersonalizeEvent;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
};
|
|
11
|
+
export type PersonalizeBufferConfig = EventBufferConfig & {
|
|
12
|
+
region: string;
|
|
13
|
+
credentials: AWSCredentials;
|
|
14
|
+
identityId?: string;
|
|
15
|
+
userAgentValue?: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EventBuffer } from '../../../utils';
|
|
2
|
+
import { PersonalizeBufferEvent, PersonalizeEvent } from '../types';
|
|
3
|
+
type MediaAutoTrackConfig = {
|
|
4
|
+
trackingId: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
userId?: string;
|
|
7
|
+
event: PersonalizeEvent;
|
|
8
|
+
};
|
|
9
|
+
export declare const autoTrackMedia: (config: MediaAutoTrackConfig, eventBuffer: EventBuffer<PersonalizeBufferEvent>) => Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { __assign, __awaiter, __generator, __rest } from "tslib";
|
|
4
|
+
import { isBrowser } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
import { ConsoleLogger } from '@aws-amplify/core';
|
|
6
|
+
var HTML5_MEDIA_EVENT;
|
|
7
|
+
(function (HTML5_MEDIA_EVENT) {
|
|
8
|
+
HTML5_MEDIA_EVENT["PLAY"] = "play";
|
|
9
|
+
HTML5_MEDIA_EVENT["PAUSE"] = "pause";
|
|
10
|
+
HTML5_MEDIA_EVENT["ENDED"] = "Ended";
|
|
11
|
+
})(HTML5_MEDIA_EVENT || (HTML5_MEDIA_EVENT = {}));
|
|
12
|
+
var MEDIA_TYPE;
|
|
13
|
+
(function (MEDIA_TYPE) {
|
|
14
|
+
MEDIA_TYPE["IFRAME"] = "IFRAME";
|
|
15
|
+
MEDIA_TYPE["VIDEO"] = "VIDEO";
|
|
16
|
+
MEDIA_TYPE["AUDIO"] = "AUDIO";
|
|
17
|
+
})(MEDIA_TYPE || (MEDIA_TYPE = {}));
|
|
18
|
+
var EVENT_TYPE;
|
|
19
|
+
(function (EVENT_TYPE) {
|
|
20
|
+
EVENT_TYPE["PLAY"] = "Play";
|
|
21
|
+
EVENT_TYPE["ENDED"] = "Ended";
|
|
22
|
+
EVENT_TYPE["PAUSE"] = "Pause";
|
|
23
|
+
EVENT_TYPE["TIME_WATCHED"] = "TimeWatched";
|
|
24
|
+
})(EVENT_TYPE || (EVENT_TYPE = {}));
|
|
25
|
+
var logger = new ConsoleLogger('MediaAutoTrack');
|
|
26
|
+
var startIframeAutoTracking = function (element, recordEvent) {
|
|
27
|
+
var isPlaying = false;
|
|
28
|
+
var player;
|
|
29
|
+
var mediaProperties = function () {
|
|
30
|
+
var duration = Number(parseFloat(player.getDuration()).toFixed(4));
|
|
31
|
+
var currentTime = Number(parseFloat(player.getCurrentTime()).toFixed(4));
|
|
32
|
+
return {
|
|
33
|
+
duration: duration,
|
|
34
|
+
eventValue: Number((currentTime / duration).toFixed(4)),
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
var scriptElement = document.createElement('script');
|
|
38
|
+
scriptElement.type = 'text/javascript';
|
|
39
|
+
scriptElement.src = 'https://www.youtube.com/iframe_api';
|
|
40
|
+
document.body.append(scriptElement);
|
|
41
|
+
var timer = setInterval(function () {
|
|
42
|
+
if (isPlaying && player) {
|
|
43
|
+
recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());
|
|
44
|
+
}
|
|
45
|
+
}, 3000);
|
|
46
|
+
element.addEventListener('unload', function () { return clearInterval(timer); });
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
window.onYouTubeIframeAPIReady = function () {
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
delete window.onYouTubeIframeAPIReady;
|
|
51
|
+
// @ts-ignore
|
|
52
|
+
player = new window.YT.Player(element.id, {
|
|
53
|
+
events: {
|
|
54
|
+
onStateChange: function (event) {
|
|
55
|
+
var iframeEventMapping = {
|
|
56
|
+
0: EVENT_TYPE.ENDED,
|
|
57
|
+
1: EVENT_TYPE.PLAY,
|
|
58
|
+
2: EVENT_TYPE.PAUSE,
|
|
59
|
+
};
|
|
60
|
+
// @ts-ignore
|
|
61
|
+
var eventType = iframeEventMapping[event.data];
|
|
62
|
+
switch (eventType) {
|
|
63
|
+
case EVENT_TYPE.ENDED:
|
|
64
|
+
case EVENT_TYPE.PAUSE:
|
|
65
|
+
isPlaying = false;
|
|
66
|
+
break;
|
|
67
|
+
case EVENT_TYPE.PLAY:
|
|
68
|
+
isPlaying = true;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
if (eventType) {
|
|
72
|
+
recordEvent(eventType, mediaProperties());
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
var startHTMLMediaAutoTracking = function (element, recordEvent) {
|
|
80
|
+
var isPlaying = false;
|
|
81
|
+
var mediaProperties = function () { return ({
|
|
82
|
+
duration: element.duration,
|
|
83
|
+
eventValue: Number((element.currentTime / element.duration).toFixed(4)),
|
|
84
|
+
}); };
|
|
85
|
+
var timer = setInterval(function () {
|
|
86
|
+
if (isPlaying) {
|
|
87
|
+
recordEvent(EVENT_TYPE.TIME_WATCHED, mediaProperties());
|
|
88
|
+
}
|
|
89
|
+
}, 3000);
|
|
90
|
+
element.addEventListener('unload', function () { return clearInterval(timer); });
|
|
91
|
+
element.addEventListener(HTML5_MEDIA_EVENT.PLAY, function () {
|
|
92
|
+
isPlaying = true;
|
|
93
|
+
recordEvent(EVENT_TYPE.PLAY, mediaProperties());
|
|
94
|
+
});
|
|
95
|
+
element.addEventListener(HTML5_MEDIA_EVENT.PAUSE, function () {
|
|
96
|
+
isPlaying = false;
|
|
97
|
+
recordEvent(EVENT_TYPE.PAUSE, mediaProperties());
|
|
98
|
+
});
|
|
99
|
+
element.addEventListener(HTML5_MEDIA_EVENT.ENDED, function () {
|
|
100
|
+
isPlaying = false;
|
|
101
|
+
recordEvent(EVENT_TYPE.ENDED, mediaProperties());
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
var checkElementLoaded = function (interval, maxTries) {
|
|
105
|
+
var retryCount = 0;
|
|
106
|
+
var wait = function () { return new Promise(function (r) { return setTimeout(r, interval); }); };
|
|
107
|
+
var check = function (elementId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
108
|
+
var domElement;
|
|
109
|
+
return __generator(this, function (_a) {
|
|
110
|
+
switch (_a.label) {
|
|
111
|
+
case 0:
|
|
112
|
+
if (retryCount >= maxTries) {
|
|
113
|
+
return [2 /*return*/, false];
|
|
114
|
+
}
|
|
115
|
+
domElement = document.getElementById(elementId);
|
|
116
|
+
if (!(domElement && domElement.clientHeight)) return [3 /*break*/, 1];
|
|
117
|
+
return [2 /*return*/, true];
|
|
118
|
+
case 1:
|
|
119
|
+
retryCount += 1;
|
|
120
|
+
return [4 /*yield*/, wait()];
|
|
121
|
+
case 2:
|
|
122
|
+
_a.sent();
|
|
123
|
+
return [4 /*yield*/, check(elementId)];
|
|
124
|
+
case 3: return [2 /*return*/, _a.sent()];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}); };
|
|
128
|
+
return check;
|
|
129
|
+
};
|
|
130
|
+
var recordEvent = function (config, eventBuffer) {
|
|
131
|
+
return function (eventType, properties) {
|
|
132
|
+
// override eventType and merge properties
|
|
133
|
+
eventBuffer.append(__assign(__assign({}, config), { event: __assign(__assign({}, config.event), { eventType: eventType, properties: __assign(__assign({}, config.event.properties), properties) }), timestamp: Date.now() }));
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
export var autoTrackMedia = function (config, eventBuffer) { return __awaiter(void 0, void 0, void 0, function () {
|
|
137
|
+
var _a, eventType, properties, domElementId, otherProperties, elementId, isElementLoaded, autoTrackConfigWithoutDomElementId, element;
|
|
138
|
+
return __generator(this, function (_b) {
|
|
139
|
+
switch (_b.label) {
|
|
140
|
+
case 0:
|
|
141
|
+
_a = config.event, eventType = _a.eventType, properties = _a.properties;
|
|
142
|
+
domElementId = properties.domElementId, otherProperties = __rest(properties, ["domElementId"]);
|
|
143
|
+
if (!isBrowser()) {
|
|
144
|
+
logger.debug("".concat(eventType, " only for browser"));
|
|
145
|
+
return [2 /*return*/];
|
|
146
|
+
}
|
|
147
|
+
if (typeof domElementId === 'string' && !domElementId) {
|
|
148
|
+
logger.debug("Missing domElementId field in 'properties' for MediaAutoTrack event type.");
|
|
149
|
+
return [2 /*return*/];
|
|
150
|
+
}
|
|
151
|
+
elementId = domElementId;
|
|
152
|
+
return [4 /*yield*/, checkElementLoaded(500, 5)(elementId)];
|
|
153
|
+
case 1:
|
|
154
|
+
isElementLoaded = _b.sent();
|
|
155
|
+
if (isElementLoaded) {
|
|
156
|
+
autoTrackConfigWithoutDomElementId = __assign(__assign({}, config), { event: __assign(__assign({}, config.event), { properties: otherProperties }) });
|
|
157
|
+
element = document.getElementById(elementId);
|
|
158
|
+
switch (element === null || element === void 0 ? void 0 : element.tagName) {
|
|
159
|
+
case MEDIA_TYPE.IFRAME:
|
|
160
|
+
startIframeAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));
|
|
161
|
+
break;
|
|
162
|
+
case MEDIA_TYPE.VIDEO:
|
|
163
|
+
case MEDIA_TYPE.AUDIO:
|
|
164
|
+
if (element instanceof HTMLMediaElement) {
|
|
165
|
+
startHTMLMediaAutoTracking(element, recordEvent(autoTrackConfigWithoutDomElementId, eventBuffer));
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
default:
|
|
169
|
+
logger.debug("Unsupported DOM element tag: ".concat(element === null || element === void 0 ? void 0 : element.tagName));
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
logger.debug('Cannot find the media element.');
|
|
175
|
+
}
|
|
176
|
+
return [2 /*return*/];
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}); };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { __awaiter, __generator } from "tslib";
|
|
4
|
+
import { Cache } from '@aws-amplify/core';
|
|
5
|
+
import { isBrowser, amplifyUuid } from '@aws-amplify/core/internals/utils';
|
|
6
|
+
var PERSONALIZE_CACHE_USERID = '_awsct_uid';
|
|
7
|
+
var PERSONALIZE_CACHE_SESSIONID = '_awsct_sid';
|
|
8
|
+
var DEFAULT_CACHE_PREFIX = 'personalize';
|
|
9
|
+
var DELIMITER = '.';
|
|
10
|
+
var CACHE_EXPIRY_IN_DAYS = 7;
|
|
11
|
+
var normalize = function (key) {
|
|
12
|
+
return [key, isBrowser() ? window.location.host : DEFAULT_CACHE_PREFIX].join(DELIMITER);
|
|
13
|
+
};
|
|
14
|
+
var getCache = function (key) { return Cache.getItem(normalize(key)); };
|
|
15
|
+
var setCache = function (key, value) {
|
|
16
|
+
var expiredAt = new Date(Date.now() + 3600000 * 24 * CACHE_EXPIRY_IN_DAYS);
|
|
17
|
+
Cache.setItem(normalize(key), value, {
|
|
18
|
+
expires: expiredAt.getTime(),
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
export var resolveCachedSession = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
22
|
+
var sessionId, userId;
|
|
23
|
+
return __generator(this, function (_a) {
|
|
24
|
+
switch (_a.label) {
|
|
25
|
+
case 0: return [4 /*yield*/, getCache(PERSONALIZE_CACHE_SESSIONID)];
|
|
26
|
+
case 1:
|
|
27
|
+
sessionId = _a.sent();
|
|
28
|
+
if (!sessionId) {
|
|
29
|
+
sessionId = amplifyUuid();
|
|
30
|
+
setCache(PERSONALIZE_CACHE_SESSIONID, sessionId);
|
|
31
|
+
}
|
|
32
|
+
return [4 /*yield*/, getCache(PERSONALIZE_CACHE_USERID)];
|
|
33
|
+
case 2:
|
|
34
|
+
userId = _a.sent();
|
|
35
|
+
return [2 /*return*/, {
|
|
36
|
+
sessionId: sessionId,
|
|
37
|
+
userId: userId,
|
|
38
|
+
}];
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}); };
|
|
42
|
+
export var updateCachedSession = function (newUserId, currentSessionId, currentUserId) {
|
|
43
|
+
var isNoCachedSession = !currentSessionId;
|
|
44
|
+
var isSignOutCase = !newUserId && !currentUserId;
|
|
45
|
+
var isSwitchUserCase = !!newUserId && !!currentUserId && newUserId !== currentUserId;
|
|
46
|
+
var isRequireNewSession = isNoCachedSession || isSignOutCase || isSwitchUserCase;
|
|
47
|
+
var isRequireUpdateSession = !!currentSessionId && !currentUserId && !!newUserId;
|
|
48
|
+
if (isRequireNewSession) {
|
|
49
|
+
var newSessionId = amplifyUuid();
|
|
50
|
+
setCache(PERSONALIZE_CACHE_SESSIONID, newSessionId);
|
|
51
|
+
setCache(PERSONALIZE_CACHE_USERID, newUserId);
|
|
52
|
+
}
|
|
53
|
+
else if (isRequireUpdateSession) {
|
|
54
|
+
setCache(PERSONALIZE_CACHE_USERID, newUserId);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
@@ -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 var DEFAULT_PERSONALIZE_CONFIG = {
|
|
4
|
+
flushSize: 5,
|
|
5
|
+
flushInterval: 5000,
|
|
6
|
+
};
|
|
7
|
+
export var PERSONALIZE_FLUSH_SIZE_MAX = 10;
|
|
8
|
+
export var IDENTIFY_EVENT_TYPE = 'Identify';
|
|
9
|
+
export var 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,96 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { __awaiter, __generator, __read, __values } from "tslib";
|
|
4
|
+
import { EventBuffer, groupBy } from '../../../utils';
|
|
5
|
+
import { PersonalizeEventsClient, PutEventsCommand, } from '@aws-sdk/client-personalize-events';
|
|
6
|
+
/**
|
|
7
|
+
* These Records hold cached event buffers and AWS clients.
|
|
8
|
+
* The hash key is determined by the region and session,
|
|
9
|
+
* consisting of a combined value comprising [region, sessionToken, identityId].
|
|
10
|
+
*
|
|
11
|
+
* Only one active session should exist at any given moment.
|
|
12
|
+
* When a new session is initiated, the previous ones should be released.
|
|
13
|
+
* */
|
|
14
|
+
var eventBufferMap = {};
|
|
15
|
+
var cachedClients = {};
|
|
16
|
+
var DELIMITER = '#';
|
|
17
|
+
var createPutEventsCommand = function (ids, events) {
|
|
18
|
+
var _a = __read(ids.split(DELIMITER), 3), trackingId = _a[0], sessionId = _a[1], userId = _a[2];
|
|
19
|
+
return new PutEventsCommand({
|
|
20
|
+
trackingId: trackingId,
|
|
21
|
+
sessionId: sessionId,
|
|
22
|
+
userId: userId,
|
|
23
|
+
eventList: events.map(function (event) { return ({
|
|
24
|
+
eventId: event.event.eventId,
|
|
25
|
+
eventType: event.event.eventType,
|
|
26
|
+
properties: JSON.stringify(event.event.properties),
|
|
27
|
+
sentAt: new Date(event.timestamp),
|
|
28
|
+
}); }),
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
var submitEvents = function (events, client) { return __awaiter(void 0, void 0, void 0, function () {
|
|
32
|
+
var groupedByIds, requests;
|
|
33
|
+
return __generator(this, function (_a) {
|
|
34
|
+
switch (_a.label) {
|
|
35
|
+
case 0:
|
|
36
|
+
groupedByIds = Object.entries(groupBy(function (event) {
|
|
37
|
+
return [event.trackingId, event.sessionId, event.userId]
|
|
38
|
+
.filter(function (id) { return !!id; })
|
|
39
|
+
.join(DELIMITER);
|
|
40
|
+
}, events));
|
|
41
|
+
requests = groupedByIds
|
|
42
|
+
.map(function (_a) {
|
|
43
|
+
var _b = __read(_a, 2), ids = _b[0], events = _b[1];
|
|
44
|
+
return createPutEventsCommand(ids, events);
|
|
45
|
+
})
|
|
46
|
+
.map(function (command) { return client.send(command); });
|
|
47
|
+
return [4 /*yield*/, Promise.allSettled(requests)];
|
|
48
|
+
case 1:
|
|
49
|
+
_a.sent();
|
|
50
|
+
return [2 /*return*/, Promise.resolve([])];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}); };
|
|
54
|
+
export var getEventBuffer = function (_a) {
|
|
55
|
+
var e_1, _b;
|
|
56
|
+
var region = _a.region, flushSize = _a.flushSize, flushInterval = _a.flushInterval, bufferSize = _a.bufferSize, credentials = _a.credentials, identityId = _a.identityId, userAgentValue = _a.userAgentValue;
|
|
57
|
+
var sessionToken = credentials.sessionToken;
|
|
58
|
+
var sessionIdentityKey = [region, sessionToken, identityId]
|
|
59
|
+
.filter(function (x) { return !!x; })
|
|
60
|
+
.join('-');
|
|
61
|
+
if (!eventBufferMap[sessionIdentityKey]) {
|
|
62
|
+
var getClient = function () {
|
|
63
|
+
if (!cachedClients[sessionIdentityKey]) {
|
|
64
|
+
cachedClients[sessionIdentityKey] = new PersonalizeEventsClient({
|
|
65
|
+
region: region,
|
|
66
|
+
credentials: credentials,
|
|
67
|
+
customUserAgent: userAgentValue,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return function (events) { return submitEvents(events, cachedClients[sessionIdentityKey]); };
|
|
71
|
+
};
|
|
72
|
+
eventBufferMap[sessionIdentityKey] =
|
|
73
|
+
new EventBuffer({
|
|
74
|
+
bufferSize: bufferSize,
|
|
75
|
+
flushSize: flushSize,
|
|
76
|
+
flushInterval: flushInterval,
|
|
77
|
+
}, getClient);
|
|
78
|
+
var releaseSessionKeys = Object.keys(eventBufferMap).filter(function (key) { return key !== sessionIdentityKey; });
|
|
79
|
+
try {
|
|
80
|
+
for (var releaseSessionKeys_1 = __values(releaseSessionKeys), releaseSessionKeys_1_1 = releaseSessionKeys_1.next(); !releaseSessionKeys_1_1.done; releaseSessionKeys_1_1 = releaseSessionKeys_1.next()) {
|
|
81
|
+
var releaseSessionKey = releaseSessionKeys_1_1.value;
|
|
82
|
+
eventBufferMap[releaseSessionKey].release();
|
|
83
|
+
delete eventBufferMap[releaseSessionKey];
|
|
84
|
+
delete cachedClients[releaseSessionKey];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
88
|
+
finally {
|
|
89
|
+
try {
|
|
90
|
+
if (releaseSessionKeys_1_1 && !releaseSessionKeys_1_1.done && (_b = releaseSessionKeys_1.return)) _b.call(releaseSessionKeys_1);
|
|
91
|
+
}
|
|
92
|
+
finally { if (e_1) throw e_1.error; }
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return eventBufferMap[sessionIdentityKey];
|
|
96
|
+
};
|
|
@@ -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,21 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { __assign } from "tslib";
|
|
4
|
+
import { Amplify } from '@aws-amplify/core';
|
|
5
|
+
import { AnalyticsValidationErrorCode, assertValidationError, } from '../../../errors';
|
|
6
|
+
import { DEFAULT_PERSONALIZE_CONFIG, PERSONALIZE_FLUSH_SIZE_MAX } from './';
|
|
7
|
+
export var resolveConfig = function () {
|
|
8
|
+
var _a;
|
|
9
|
+
var config = (_a = Amplify.getConfig().Analytics) === null || _a === void 0 ? void 0 : _a.Personalize;
|
|
10
|
+
var _b = __assign(__assign({}, DEFAULT_PERSONALIZE_CONFIG), config), region = _b.region, trackingId = _b.trackingId, _c = _b.flushSize, flushSize = _c === void 0 ? DEFAULT_PERSONALIZE_CONFIG.flushSize : _c, _d = _b.flushInterval, flushInterval = _d === void 0 ? DEFAULT_PERSONALIZE_CONFIG.flushInterval : _d;
|
|
11
|
+
assertValidationError(!!region, AnalyticsValidationErrorCode.NoRegion);
|
|
12
|
+
assertValidationError(!!trackingId, AnalyticsValidationErrorCode.NoTrackingId);
|
|
13
|
+
assertValidationError(flushSize <= PERSONALIZE_FLUSH_SIZE_MAX, AnalyticsValidationErrorCode.InvalidFlushSize, "FlushSize for Personalize should be less or equal than ".concat(PERSONALIZE_FLUSH_SIZE_MAX));
|
|
14
|
+
return {
|
|
15
|
+
region: region,
|
|
16
|
+
trackingId: trackingId,
|
|
17
|
+
bufferSize: flushSize + 1,
|
|
18
|
+
flushSize: flushSize,
|
|
19
|
+
flushInterval: flushInterval,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
@@ -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
|
+
var configuredTrackers = {};
|
|
7
|
+
// Callback that will emit an appropriate event to Pinpoint when required by the Tracker
|
|
8
|
+
var emitTrackingEvent = function (eventName, attributes) {
|
|
9
|
+
record({
|
|
10
|
+
name: eventName,
|
|
11
|
+
attributes: 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 var configureAutoTrack = function (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,24 @@
|
|
|
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
|
+
var 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 var flushEvents = function () {
|
|
17
|
+
var _a = resolveConfig(), appId = _a.appId, region = _a.region;
|
|
18
|
+
resolveCredentials()
|
|
19
|
+
.then(function (_a) {
|
|
20
|
+
var credentials = _a.credentials, identityId = _a.identityId;
|
|
21
|
+
return flushEventsCore(appId, region, credentials, identityId, getAnalyticsUserAgentString(AnalyticsAction.Record));
|
|
22
|
+
})
|
|
23
|
+
.catch(function (e) { return logger.warn('Failed to flush events', e); });
|
|
24
|
+
};
|