{"version":3,"file":"SessionTracker.mjs","sources":["../../../src/trackers/SessionTracker.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { SESSION_START_EVENT, SESSION_STOP_EVENT, sessionListener, } from '@aws-amplify/core/internals/utils';\nimport { ConsoleLogger } from '@aws-amplify/core';\nconst logger = new ConsoleLogger('SessionTracker');\nexport class SessionTracker {\n    constructor(eventRecorder, options) {\n        this.options = {};\n        this.eventRecorder = eventRecorder;\n        this.sessionTrackingActive = false;\n        this.initialEventSent = false;\n        this.handleStateChange = this.handleStateChange.bind(this);\n        this.configure(eventRecorder, options);\n    }\n    configure(eventRecorder, options) {\n        this.eventRecorder = eventRecorder;\n        // Clean up any existing listeners\n        this.cleanup();\n        // Apply defaults\n        this.options = {\n            attributes: options?.attributes ?? {},\n        };\n        // Setup state listeners\n        if (!this.sessionTrackingActive) {\n            sessionListener.addStateChangeListener(this.handleStateChange, !this.initialEventSent);\n            this.sessionTrackingActive = true;\n        }\n    }\n    cleanup() {\n        if (this.sessionTrackingActive) {\n            sessionListener.removeStateChangeListener(this.handleStateChange);\n        }\n        this.sessionTrackingActive = false;\n    }\n    handleStateChange(state) {\n        if (state === 'started') {\n            this.sessionStarted();\n        }\n        else {\n            this.sessionStopped();\n        }\n    }\n    sessionStarted() {\n        const attributes = this.options.attributes ?? {};\n        logger.debug('Recording automatically tracked page view event', {\n            SESSION_START_EVENT,\n            attributes,\n        });\n        this.eventRecorder(SESSION_START_EVENT, attributes);\n        // NOTE: The initial event will not be re-sent on re-configuration (e.g. to add additional custom attributes)\n        if (!this.initialEventSent) {\n            this.initialEventSent = true;\n        }\n    }\n    sessionStopped() {\n        const attributes = this.options.attributes ?? {};\n        logger.debug('Recording automatically tracked page view event', {\n            SESSION_STOP_EVENT,\n            attributes,\n        });\n        this.eventRecorder(SESSION_STOP_EVENT, attributes);\n    }\n}\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,gBAAgB,CAAC;AAC3C,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK;AACrC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClE,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;AAC9C,IAAI;AACJ,IAAI,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;AACjD,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACzC,YAAY,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAClG,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI;AAC7C,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC7E,QAAQ;AACR,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C,IAAI;AACJ,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC,QAAQ;AACR,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;AACxD,QAAQ,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;AACxE,YAAY,mBAAmB;AAC/B,YAAY,UAAU;AACtB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,UAAU,CAAC;AAC3D;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACxC,QAAQ;AACR,IAAI;AACJ,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;AACxD,QAAQ,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;AACxE,YAAY,kBAAkB;AAC9B,YAAY,UAAU;AACtB,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC1D,IAAI;AACJ;;;;"}