@aws-amplify/analytics
Version:
Analytics category of aws-amplify
39 lines (37 loc) • 1.76 kB
JavaScript
;
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.configureAutoTrack = configureAutoTrack;
const utils_1 = require("../../../utils");
const record_1 = require("./record");
// Configured Tracker instances for Pinpoint
const configuredTrackers = {};
function configureAutoTrack(...args) {
// Peek the optional leading context WITHOUT falling back to the global
// context. The context is only needed when events are emitted; resolving it
// eagerly would (a) throw when trackers are configured before
// `Amplify.configure()` and (b) pin auto-tracked events to the configuration
// snapshot captured at setup time after a later `configure()` call.
const { ctx, input } = (0, utils_1.peekCtxArgs)(args);
(0, utils_1.validateTrackerConfiguration)(input);
// Callback that will emit an appropriate event to Pinpoint when required by the Tracker.
// When no explicit context was supplied, `record` resolves the global context
// lazily at emit time, so auto-tracked events follow the live configuration
// and trackers can be set up before `Amplify.configure()` is called.
const emitTrackingEvent = (eventName, attributes) => {
const recordInput = {
name: eventName,
attributes,
};
if (ctx) {
(0, record_1.record)(ctx, recordInput);
}
else {
(0, record_1.record)(recordInput);
}
};
// Initialize or update this provider's trackers
(0, utils_1.updateProviderTrackers)(input, emitTrackingEvent, configuredTrackers);
}
//# sourceMappingURL=configureAutoTrack.js.map