UNPKG

@aws-amplify/analytics

Version:

Analytics category of aws-amplify

1 lines 4.21 kB
{"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;AACA,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;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC7E;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C;AACA,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC;AACA,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,EAAE;AACjC;AACA;AACA,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;AACA;AACA,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;AACA;;;;"}