@aws-amplify/analytics
Version:
Analytics category of aws-amplify
89 lines (86 loc) • 3.24 kB
JavaScript
import '@aws-amplify/core/internals/utils';
import { assertValidationError } from '../../../errors/assertValidationError.mjs';
import { AnalyticsValidationErrorCode } from '../../../errors/validation.mjs';
import '@aws-amplify/core';
import '../../../utils/eventBuffer/EventBuffer.mjs';
import { updateProviderTrackers } from '../../../utils/trackerHelpers.mjs';
import { validateTrackerConfiguration } from '../../../utils/trackerConfigHelpers.mjs';
import '../../../utils/deprecatePinpoint.mjs';
import { record } from './record.mjs';
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// Configured Tracker instances for Kinesis Data Firehose
const configuredTrackers = {};
/**
* Configures automatic event tracking for Kinesis Data Firehose. This API will automatically transmit an analytic
* event to the configured Firehose delivery stream when configured events are detected within your application.
* This can include: DOM element events (via the `event` tracker), session events (via the `session` tracker), and
* page view events (via the `pageView` tracker).
*
* Auto-tracked events are recorded with a data payload of the shape `{ name: eventName, attributes }`.
*
* @remark Only session tracking is currently supported on React Native.
*
* @param {KinesisFirehoseConfigureAutoTrackInput} input The input object to configure auto track behavior.
*
* @throws validation: {@link AnalyticsValidationErrorCode} - Thrown when the provided parameters or library
* configuration is incorrect, or when `streamName` is missing while enabling a tracker.
*
* @example
* ```ts
* // Enable session tracking
* configureAutoTrack({
* enable: true,
* type: 'session',
* options: {
* streamName: 'myFirehoseStream',
* },
* });
* ```
*
* @example
* ```ts
* // Enable page view tracking for a single-page application
* configureAutoTrack({
* enable: true,
* type: 'pageView',
* options: {
* streamName: 'myFirehoseStream',
* appType: 'singlePage',
* },
* });
* ```
*
* @example
* ```ts
* // Enable DOM element event tracking
* configureAutoTrack({
* enable: true,
* type: 'event',
* options: {
* streamName: 'myFirehoseStream',
* },
* });
* ```
*/
const configureAutoTrack = (input) => {
validateTrackerConfiguration(input);
if (input.enable) {
assertValidationError(!!input.options?.streamName, AnalyticsValidationErrorCode.NoStreamName);
}
// Callback that will emit an appropriate event to Kinesis Data Firehose when required by the Tracker
const emitTrackingEvent = (eventName, attributes) => {
record({
streamName: input.options.streamName,
data: {
name: eventName,
attributes,
},
});
};
// Initialize or update this provider's trackers. The 'kinesis-firehose' namespace
// keeps page-view tracking state isolated from other providers (e.g. Pinpoint).
updateProviderTrackers(input, emitTrackingEvent, configuredTrackers, 'kinesis-firehose');
};
export { configureAutoTrack };
//# sourceMappingURL=configureAutoTrack.mjs.map