@aws-amplify/analytics 7.0.16 → 7.0.17-unstable.0d2aa5d.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/dist/cjs/providers/kinesis/apis/flushEvents.js +8 -6
- package/dist/cjs/providers/kinesis/apis/flushEvents.js.map +1 -1
- package/dist/cjs/providers/kinesis/apis/record.js +7 -7
- package/dist/cjs/providers/kinesis/apis/record.js.map +1 -1
- package/dist/cjs/providers/kinesis/utils/getEventBuffer.js +2 -2
- package/dist/cjs/providers/kinesis/utils/getEventBuffer.js.map +1 -1
- package/dist/cjs/providers/kinesis-firehose/apis/flushEvents.js +10 -8
- package/dist/cjs/providers/kinesis-firehose/apis/flushEvents.js.map +1 -1
- package/dist/cjs/providers/kinesis-firehose/apis/record.js +8 -8
- package/dist/cjs/providers/kinesis-firehose/apis/record.js.map +1 -1
- package/dist/cjs/providers/kinesis-firehose/utils/getEventBuffer.js +2 -2
- package/dist/cjs/providers/kinesis-firehose/utils/getEventBuffer.js.map +1 -1
- package/dist/cjs/providers/personalize/apis/flushEvents.js +10 -8
- package/dist/cjs/providers/personalize/apis/flushEvents.js.map +1 -1
- package/dist/cjs/providers/personalize/apis/record.js +14 -14
- package/dist/cjs/providers/personalize/apis/record.js.map +1 -1
- package/dist/cjs/providers/personalize/utils/autoTrackMedia.js +8 -8
- package/dist/cjs/providers/personalize/utils/autoTrackMedia.js.map +1 -1
- package/dist/cjs/providers/personalize/utils/getEventBuffer.js +2 -2
- package/dist/cjs/providers/personalize/utils/getEventBuffer.js.map +1 -1
- package/dist/cjs/providers/pinpoint/apis/flushEvents.js +20 -16
- package/dist/cjs/providers/pinpoint/apis/flushEvents.js.map +1 -1
- package/dist/cjs/providers/pinpoint/apis/identifyUser.js +1 -1
- package/dist/cjs/providers/pinpoint/apis/identifyUser.js.map +1 -1
- package/dist/cjs/trackers/PageViewTracker.js +2 -4
- package/dist/cjs/trackers/PageViewTracker.js.map +1 -1
- package/dist/cjs/utils/resolveCredentials.js +1 -1
- package/dist/cjs/utils/resolveCredentials.js.map +1 -1
- package/dist/esm/apis/disable.mjs +1 -1
- package/dist/esm/apis/enable.mjs +1 -1
- package/dist/esm/providers/kinesis/apis/flushEvents.mjs +5 -3
- package/dist/esm/providers/kinesis/apis/flushEvents.mjs.map +1 -1
- package/dist/esm/providers/kinesis/apis/record.mjs +3 -3
- package/dist/esm/providers/kinesis/apis/record.mjs.map +1 -1
- package/dist/esm/providers/kinesis/types/inputs.d.ts +2 -2
- package/dist/esm/providers/kinesis/utils/getEventBuffer.mjs +3 -3
- package/dist/esm/providers/kinesis/utils/getEventBuffer.mjs.map +1 -1
- package/dist/esm/providers/kinesis-firehose/apis/flushEvents.mjs +5 -3
- package/dist/esm/providers/kinesis-firehose/apis/flushEvents.mjs.map +1 -1
- package/dist/esm/providers/kinesis-firehose/apis/record.mjs +3 -3
- package/dist/esm/providers/kinesis-firehose/apis/record.mjs.map +1 -1
- package/dist/esm/providers/kinesis-firehose/types/buffer.d.ts +1 -1
- package/dist/esm/providers/kinesis-firehose/types/inputs.d.ts +2 -2
- package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.mjs +3 -3
- package/dist/esm/providers/kinesis-firehose/utils/getEventBuffer.mjs.map +1 -1
- package/dist/esm/providers/personalize/apis/flushEvents.mjs +5 -3
- package/dist/esm/providers/personalize/apis/flushEvents.mjs.map +1 -1
- package/dist/esm/providers/personalize/apis/record.mjs +3 -3
- package/dist/esm/providers/personalize/apis/record.mjs.map +1 -1
- package/dist/esm/providers/personalize/types/buffer.d.ts +4 -4
- package/dist/esm/providers/personalize/types/inputs.d.ts +2 -2
- package/dist/esm/providers/personalize/utils/autoTrackMedia.d.ts +2 -2
- package/dist/esm/providers/personalize/utils/autoTrackMedia.mjs +8 -8
- package/dist/esm/providers/personalize/utils/autoTrackMedia.mjs.map +1 -1
- package/dist/esm/providers/personalize/utils/cachedSession.mjs.map +1 -1
- package/dist/esm/providers/personalize/utils/getEventBuffer.mjs +3 -3
- package/dist/esm/providers/personalize/utils/getEventBuffer.mjs.map +1 -1
- package/dist/esm/providers/pinpoint/apis/configureAutoTrack.mjs +1 -1
- package/dist/esm/providers/pinpoint/apis/flushEvents.mjs +18 -14
- package/dist/esm/providers/pinpoint/apis/flushEvents.mjs.map +1 -1
- package/dist/esm/providers/pinpoint/apis/identifyUser.d.ts +1 -1
- package/dist/esm/providers/pinpoint/apis/identifyUser.mjs +2 -2
- package/dist/esm/providers/pinpoint/apis/identifyUser.mjs.map +1 -1
- package/dist/esm/providers/pinpoint/apis/record.mjs.map +1 -1
- package/dist/esm/providers/pinpoint/types/inputs.d.ts +1 -1
- package/dist/esm/trackers/PageViewTracker.mjs +2 -4
- package/dist/esm/trackers/PageViewTracker.mjs.map +1 -1
- package/dist/esm/trackers/SessionTracker.mjs.map +1 -1
- package/dist/esm/trackers/SessionTracker.native.mjs.map +1 -1
- package/dist/esm/types/inputs.d.ts +3 -3
- package/dist/esm/types/kinesis.d.ts +2 -2
- package/dist/esm/types/trackers.d.ts +7 -7
- package/dist/esm/utils/eventBuffer/types.d.ts +3 -5
- package/dist/esm/utils/resolveCredentials.mjs +1 -1
- package/dist/esm/utils/resolveCredentials.mjs.map +1 -1
- package/dist/esm/utils/userAgent.mjs.map +1 -1
- package/package.json +110 -110
- package/src/errors/assertValidationError.ts +1 -1
- package/src/providers/kinesis/apis/flushEvents.ts +7 -4
- package/src/providers/kinesis/apis/record.ts +6 -3
- package/src/providers/kinesis/types/buffer.ts +1 -0
- package/src/providers/kinesis/types/inputs.ts +2 -2
- package/src/providers/kinesis/utils/getEventBuffer.ts +22 -21
- package/src/providers/kinesis/utils/resolveConfig.ts +4 -1
- package/src/providers/kinesis-firehose/apis/flushEvents.ts +7 -4
- package/src/providers/kinesis-firehose/apis/record.ts +6 -3
- package/src/providers/kinesis-firehose/types/buffer.ts +2 -1
- package/src/providers/kinesis-firehose/types/inputs.ts +2 -2
- package/src/providers/kinesis-firehose/utils/getEventBuffer.ts +23 -21
- package/src/providers/kinesis-firehose/utils/resolveConfig.ts +4 -1
- package/src/providers/personalize/apis/flushEvents.ts +7 -4
- package/src/providers/personalize/apis/record.ts +8 -5
- package/src/providers/personalize/types/buffer.ts +6 -4
- package/src/providers/personalize/types/inputs.ts +2 -2
- package/src/providers/personalize/utils/autoTrackMedia.ts +34 -26
- package/src/providers/personalize/utils/cachedSession.ts +5 -5
- package/src/providers/personalize/utils/getEventBuffer.ts +24 -20
- package/src/providers/personalize/utils/resolveConfig.ts +4 -2
- package/src/providers/pinpoint/apis/configureAutoTrack.ts +5 -2
- package/src/providers/pinpoint/apis/flushEvents.ts +8 -5
- package/src/providers/pinpoint/apis/identifyUser.ts +3 -2
- package/src/providers/pinpoint/apis/record.ts +4 -2
- package/src/providers/pinpoint/types/inputs.ts +3 -1
- package/src/providers/pinpoint/utils/resolveConfig.ts +1 -0
- package/src/providers/pinpoint/utils/resolveCredentials.ts +3 -1
- package/src/trackers/EventTracker.ts +7 -6
- package/src/trackers/PageViewTracker.ts +8 -13
- package/src/trackers/SessionTracker.native.ts +6 -5
- package/src/trackers/SessionTracker.ts +6 -5
- package/src/types/inputs.ts +6 -5
- package/src/types/kinesis.ts +2 -2
- package/src/types/trackers.ts +8 -8
- package/src/utils/eventBuffer/EventBuffer.ts +3 -2
- package/src/utils/eventBuffer/types.ts +3 -5
- package/src/utils/groupBy.ts +3 -2
- package/src/utils/resolveCredentials.ts +4 -2
- package/src/utils/trackerConfigHelpers.native.ts +2 -2
- package/src/utils/trackerConfigHelpers.ts +2 -2
- package/src/utils/trackerHelpers.ts +1 -2
- package/src/utils/userAgent.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageViewTracker.mjs","sources":["../../../src/trackers/PageViewTracker.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { isBrowser } from '@aws-amplify/core/internals/utils';\nconst logger = new ConsoleLogger('PageViewTracker');\nconst DEFAULT_EVENT_NAME = 'pageView';\nconst DEFAULT_APP_TYPE = 'singlePage';\nconst DEFAULT_URL_PROVIDER = () => {\n return window.location.origin + window.location.pathname;\n};\nconst PREV_URL_STORAGE_KEY = 'aws-amplify-analytics-prevUrl';\nexport class PageViewTracker {\n constructor(eventRecorder, options) {\n this.options = {};\n this.trackerActive = true;\n this.eventRecorder = eventRecorder;\n this.spaTrackingActive = false;\n this.handleLocationChange = this.handleLocationChange.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 appType: options?.appType ?? DEFAULT_APP_TYPE,\n attributes: options?.attributes ?? undefined,\n eventName: this.options?.eventName ?? DEFAULT_EVENT_NAME,\n urlProvider: this.options?.urlProvider ?? DEFAULT_URL_PROVIDER,\n };\n // Configure SPA or MPA page view tracking\n if (isBrowser()) {\n if (this.options.appType === 'singlePage') {\n this.setupSPATracking();\n }\n else {\n this.setupMPATracking();\n }\n this.trackerActive = true;\n }\n }\n cleanup() {\n // No-op if document listener is not active\n if (!this.trackerActive) {\n return;\n }\n // Clean up SPA page view listeners\n if (this.spaTrackingActive) {\n window.history.pushState = this.originalPushState;\n window.history.replaceState = this.originalReplaceState;\n this.pushStateProxy?.revoke();\n this.replaceStateProxy?.revoke();\n window.removeEventListener('popstate', this.handleLocationChange);\n this.spaTrackingActive = false;\n }\n }\n setupSPATracking() {\n if (!this.spaTrackingActive) {\n // Configure proxies on History APIs\n this.pushStateProxy = Proxy.revocable(window.history.pushState, {\n apply: (target, thisArg, args) => {\n
|
|
1
|
+
{"version":3,"file":"PageViewTracker.mjs","sources":["../../../src/trackers/PageViewTracker.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { isBrowser } from '@aws-amplify/core/internals/utils';\nconst logger = new ConsoleLogger('PageViewTracker');\nconst DEFAULT_EVENT_NAME = 'pageView';\nconst DEFAULT_APP_TYPE = 'singlePage';\nconst DEFAULT_URL_PROVIDER = () => {\n return window.location.origin + window.location.pathname;\n};\nconst PREV_URL_STORAGE_KEY = 'aws-amplify-analytics-prevUrl';\nexport class PageViewTracker {\n constructor(eventRecorder, options) {\n this.options = {};\n this.trackerActive = true;\n this.eventRecorder = eventRecorder;\n this.spaTrackingActive = false;\n this.handleLocationChange = this.handleLocationChange.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 appType: options?.appType ?? DEFAULT_APP_TYPE,\n attributes: options?.attributes ?? undefined,\n eventName: this.options?.eventName ?? DEFAULT_EVENT_NAME,\n urlProvider: this.options?.urlProvider ?? DEFAULT_URL_PROVIDER,\n };\n // Configure SPA or MPA page view tracking\n if (isBrowser()) {\n if (this.options.appType === 'singlePage') {\n this.setupSPATracking();\n }\n else {\n this.setupMPATracking();\n }\n this.trackerActive = true;\n }\n }\n cleanup() {\n // No-op if document listener is not active\n if (!this.trackerActive) {\n return;\n }\n // Clean up SPA page view listeners\n if (this.spaTrackingActive) {\n window.history.pushState = this.originalPushState;\n window.history.replaceState = this.originalReplaceState;\n this.pushStateProxy?.revoke();\n this.replaceStateProxy?.revoke();\n window.removeEventListener('popstate', this.handleLocationChange);\n this.spaTrackingActive = false;\n }\n }\n setupSPATracking() {\n if (!this.spaTrackingActive) {\n // Configure proxies on History APIs\n this.pushStateProxy = Proxy.revocable(window.history.pushState, {\n apply: (target, thisArg, args) => {\n target.apply(thisArg, args);\n this.handleLocationChange();\n },\n });\n this.replaceStateProxy = Proxy.revocable(window.history.replaceState, {\n apply: (target, thisArg, args) => {\n target.apply(thisArg, args);\n this.handleLocationChange();\n },\n });\n this.originalPushState = window.history.pushState;\n this.originalReplaceState = window.history.replaceState;\n window.history.pushState = this.pushStateProxy.proxy;\n window.history.replaceState = this.replaceStateProxy.proxy;\n window.addEventListener('popstate', this.handleLocationChange);\n sessionStorage.removeItem(PREV_URL_STORAGE_KEY);\n this.spaTrackingActive = true;\n }\n }\n setupMPATracking() {\n this.handleLocationChange();\n }\n handleLocationChange() {\n const currentUrl = this.options.urlProvider();\n const eventName = this.options.eventName || DEFAULT_EVENT_NAME;\n if (this.urlHasChanged()) {\n sessionStorage.setItem(PREV_URL_STORAGE_KEY, currentUrl);\n // Assemble attribute list\n const attributes = Object.assign({\n url: currentUrl,\n }, this.options.attributes);\n logger.debug('Recording automatically tracked page view event', {\n eventName,\n attributes,\n });\n this.eventRecorder(eventName, attributes);\n }\n }\n urlHasChanged() {\n const prevUrl = sessionStorage.getItem(PREV_URL_STORAGE_KEY);\n const currUrl = this.options.urlProvider();\n return currUrl !== prevUrl;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 {
|
|
1
|
+
{"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,CAAC;AAC5C,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AAC3C,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC3C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACtC,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;AACjD,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACzC,YAAY,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnG,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC3C,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;AACzD,QAAQ,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;AACxE,YAAY,mBAAmB;AAC/B,YAAY,UAAU;AACtB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC5D;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;AACzD,QAAQ,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;AACxE,YAAY,kBAAkB;AAC9B,YAAY,UAAU;AACtB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC3D,KAAK;AACL;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionTracker.native.mjs","sources":["../../../src/trackers/SessionTracker.native.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport {
|
|
1
|
+
{"version":3,"file":"SessionTracker.native.mjs","sources":["../../../src/trackers/SessionTracker.native.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.initialEventSent = false;\n this.sessionTrackingActive = 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,CAAC;AAC5C,MAAM,cAAc,CAAC;AAC5B,IAAI,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE;AACxC,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AAC3C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AACtC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC3C,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG;AACvB,YAAY,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,EAAE;AACjD,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AACzC,YAAY,eAAe,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnG,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAY,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC3C,KAAK;AACL,IAAI,iBAAiB,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;AACzD,QAAQ,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;AACxE,YAAY,mBAAmB;AAC/B,YAAY,UAAU;AACtB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AAC5D;AACA,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAY,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACzC,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;AACzD,QAAQ,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;AACxE,YAAY,kBAAkB;AAC9B,YAAY,UAAU;AACtB,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC3D,KAAK;AACL;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { UserProfile } from '@aws-amplify/core';
|
|
2
2
|
import { AnalyticsServiceOptions } from './options';
|
|
3
|
-
import {
|
|
3
|
+
import { EventTrackingOptions, PageViewTrackingOptions, SessionTrackingOptions } from './trackers';
|
|
4
4
|
/**
|
|
5
5
|
* Input type for `identifyUser`.
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export interface AnalyticsIdentifyUserInput<ServiceOptions extends AnalyticsServiceOptions = AnalyticsServiceOptions> {
|
|
8
8
|
/**
|
|
9
9
|
* A User ID associated to the current device.
|
|
10
10
|
*/
|
|
@@ -17,7 +17,7 @@ export type AnalyticsIdentifyUserInput<ServiceOptions extends AnalyticsServiceOp
|
|
|
17
17
|
* Options to be passed to the API.
|
|
18
18
|
*/
|
|
19
19
|
options?: ServiceOptions;
|
|
20
|
-
}
|
|
20
|
+
}
|
|
21
21
|
/**
|
|
22
22
|
* Input type for `configureAutoTrack`.
|
|
23
23
|
*/
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface SessionTrackingOptions {
|
|
2
2
|
attributes?: TrackerAttributes;
|
|
3
|
-
}
|
|
4
|
-
export
|
|
3
|
+
}
|
|
4
|
+
export interface PageViewTrackingOptions {
|
|
5
5
|
attributes?: TrackerAttributes;
|
|
6
6
|
eventName?: string;
|
|
7
|
-
urlProvider
|
|
7
|
+
urlProvider?(): string;
|
|
8
8
|
appType?: 'multiPage' | 'singlePage';
|
|
9
|
-
}
|
|
10
|
-
export
|
|
9
|
+
}
|
|
10
|
+
export interface EventTrackingOptions {
|
|
11
11
|
attributes?: TrackerAttributes;
|
|
12
12
|
events?: DOMEvent[];
|
|
13
13
|
selectorPrefix?: string;
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
15
|
export type TrackerType = 'event' | 'pageView' | 'session';
|
|
16
16
|
export type TrackerAttributes = Record<string, string>;
|
|
17
17
|
export type TrackerEventRecorder = (eventName: string, attributes: TrackerAttributes) => void;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
}
|
|
4
|
-
export type EventBufferConfig = {
|
|
1
|
+
export type IAnalyticsClient<T> = (events: T[]) => Promise<T[]>;
|
|
2
|
+
export interface EventBufferConfig {
|
|
5
3
|
flushSize: number;
|
|
6
4
|
flushInterval: number;
|
|
7
5
|
bufferSize: number;
|
|
8
|
-
}
|
|
6
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { fetchAuthSession } from '@aws-amplify/core';
|
|
1
2
|
import '@aws-amplify/core/internals/utils';
|
|
2
3
|
import { assertValidationError } from '../errors/assertValidationError.mjs';
|
|
3
4
|
import { AnalyticsValidationErrorCode } from '../errors/validation.mjs';
|
|
4
|
-
import { fetchAuthSession } from '@aws-amplify/core';
|
|
5
5
|
|
|
6
6
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
7
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveCredentials.mjs","sources":["../../../src/utils/resolveCredentials.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport {
|
|
1
|
+
{"version":3,"file":"resolveCredentials.mjs","sources":["../../../src/utils/resolveCredentials.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fetchAuthSession } from '@aws-amplify/core';\nimport { AnalyticsValidationErrorCode, assertValidationError } from '../errors';\nexport const resolveCredentials = async () => {\n const { credentials, identityId } = await fetchAuthSession();\n assertValidationError(!!credentials, AnalyticsValidationErrorCode.NoCredentials);\n return { credentials, identityId };\n};\n"],"names":[],"mappings":";;;;;AAAA;AACA;AAGY,MAAC,kBAAkB,GAAG,YAAY;AAC9C,IAAI,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;AACjE,IAAI,qBAAqB,CAAC,CAAC,CAAC,WAAW,EAAE,4BAA4B,CAAC,aAAa,CAAC,CAAC;AACrF,IAAI,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACvC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userAgent.mjs","sources":["../../../src/utils/userAgent.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Category,
|
|
1
|
+
{"version":3,"file":"userAgent.mjs","sources":["../../../src/utils/userAgent.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Category, getAmplifyUserAgent, getAmplifyUserAgentObject, } from '@aws-amplify/core/internals/utils';\nexport function getAnalyticsUserAgent(action) {\n return getAmplifyUserAgentObject({\n category: Category.Analytics,\n action,\n });\n}\nexport function getAnalyticsUserAgentString(action) {\n return getAmplifyUserAgent({\n category: Category.Analytics,\n action,\n });\n}\n"],"names":[],"mappings":";;AAAA;AACA;AAEO,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC9C,IAAI,OAAO,yBAAyB,CAAC;AACrC,QAAQ,QAAQ,EAAE,QAAQ,CAAC,SAAS;AACpC,QAAQ,MAAM;AACd,KAAK,CAAC,CAAC;AACP,CAAC;AACM,SAAS,2BAA2B,CAAC,MAAM,EAAE;AACpD,IAAI,OAAO,mBAAmB,CAAC;AAC/B,QAAQ,QAAQ,EAAE,QAAQ,CAAC,SAAS;AACpC,QAAQ,MAAM;AACd,KAAK,CAAC,CAAC;AACP;;;;"}
|
package/package.json
CHANGED
|
@@ -1,112 +1,112 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
2
|
+
"name": "@aws-amplify/analytics",
|
|
3
|
+
"version": "7.0.17-unstable.0d2aa5d.0+0d2aa5d",
|
|
4
|
+
"description": "Analytics category of aws-amplify",
|
|
5
|
+
"main": "./dist/cjs/index.js",
|
|
6
|
+
"module": "./dist/esm/index.mjs",
|
|
7
|
+
"react-native": "./src/index.ts",
|
|
8
|
+
"typings": "./dist/esm/index.d.ts",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"test": "npm run lint && jest -w 1 --coverage --logHeapUsage",
|
|
15
|
+
"build-with-test": "npm run clean && npm run test && npm run build",
|
|
16
|
+
"build:umd": "webpack && webpack --config ./webpack.config.dev.js",
|
|
17
|
+
"build:esm-cjs": "rollup -c rollup.config.mjs",
|
|
18
|
+
"build:watch": "npm run build:esm-cjs -- --watch",
|
|
19
|
+
"build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
|
|
20
|
+
"clean": "npm run clean:size && rimraf dist lib lib-esm",
|
|
21
|
+
"clean:size": "rimraf dual-publish-tmp tmp*",
|
|
22
|
+
"format": "echo \"Not implemented\"",
|
|
23
|
+
"lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
|
|
24
|
+
"lint:fix": "eslint '**/*.{ts,tsx}' --fix",
|
|
25
|
+
"ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 71.4"
|
|
26
|
+
},
|
|
27
|
+
"typesVersions": {
|
|
28
|
+
">=4.2": {
|
|
29
|
+
"pinpoint": [
|
|
30
|
+
"./dist/esm/providers/pinpoint/index.d.ts"
|
|
31
|
+
],
|
|
32
|
+
"kinesis": [
|
|
33
|
+
"./dist/esm/providers/kinesis/index.d.ts"
|
|
34
|
+
],
|
|
35
|
+
"kinesis-firehose": [
|
|
36
|
+
"./dist/esm/providers/kinesis-firehose/index.d.ts"
|
|
37
|
+
],
|
|
38
|
+
"personalize": [
|
|
39
|
+
"./dist/esm/providers/personalize/index.d.ts"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"exports": {
|
|
44
|
+
".": {
|
|
45
|
+
"types": "./dist/esm/index.d.ts",
|
|
46
|
+
"import": "./dist/esm/index.mjs",
|
|
47
|
+
"require": "./dist/cjs/index.js",
|
|
48
|
+
"react-native": "./src/index.ts"
|
|
49
|
+
},
|
|
50
|
+
"./pinpoint": {
|
|
51
|
+
"types": "./dist/esm/providers/pinpoint/index.d.ts",
|
|
52
|
+
"import": "./dist/esm/providers/pinpoint/index.mjs",
|
|
53
|
+
"require": "./dist/cjs/providers/pinpoint/index.js",
|
|
54
|
+
"react-native": "./src/providers/pinpoint/index.ts"
|
|
55
|
+
},
|
|
56
|
+
"./kinesis": {
|
|
57
|
+
"types": "./dist/esm/providers/kinesis/index.d.ts",
|
|
58
|
+
"import": "./dist/esm/providers/kinesis/index.mjs",
|
|
59
|
+
"require": "./dist/cjs/providers/kinesis/index.js",
|
|
60
|
+
"react-native": "./src/providers/kinesis/index.ts"
|
|
61
|
+
},
|
|
62
|
+
"./kinesis-firehose": {
|
|
63
|
+
"types": "./dist/esm/providers/kinesis-firehose/index.d.ts",
|
|
64
|
+
"import": "./dist/esm/providers/kinesis-firehose/index.mjs",
|
|
65
|
+
"require": "./dist/cjs/providers/kinesis-firehose/index.js",
|
|
66
|
+
"react-native": "./src/providers/kinesis-firehose/index.ts"
|
|
67
|
+
},
|
|
68
|
+
"./personalize": {
|
|
69
|
+
"types": "./dist/esm/providers/personalize/index.d.ts",
|
|
70
|
+
"import": "./dist/esm/providers/personalize/index.mjs",
|
|
71
|
+
"require": "./dist/cjs/providers/personalize/index.js",
|
|
72
|
+
"react-native": "./src/providers/personalize/index.ts"
|
|
73
|
+
},
|
|
74
|
+
"./package.json": "./package.json"
|
|
75
|
+
},
|
|
76
|
+
"repository": {
|
|
77
|
+
"type": "git",
|
|
78
|
+
"url": "https://github.com/aws-amplify/amplify-js.git"
|
|
79
|
+
},
|
|
80
|
+
"author": "Amazon Web Services",
|
|
81
|
+
"license": "Apache-2.0",
|
|
82
|
+
"bugs": {
|
|
83
|
+
"url": "https://github.com/aws/aws-amplify/issues"
|
|
84
|
+
},
|
|
85
|
+
"homepage": "https://aws-amplify.github.io/",
|
|
86
|
+
"files": [
|
|
87
|
+
"dist/cjs",
|
|
88
|
+
"dist/esm",
|
|
89
|
+
"src",
|
|
90
|
+
"pinpoint",
|
|
91
|
+
"kinesis",
|
|
92
|
+
"kinesis-firehose",
|
|
93
|
+
"personalize"
|
|
94
|
+
],
|
|
95
|
+
"dependencies": {
|
|
96
|
+
"@aws-sdk/client-firehose": "3.398.0",
|
|
97
|
+
"@aws-sdk/client-kinesis": "3.398.0",
|
|
98
|
+
"@aws-sdk/client-personalize-events": "3.398.0",
|
|
99
|
+
"@smithy/util-utf8": "2.0.0",
|
|
100
|
+
"tslib": "^2.5.0"
|
|
101
|
+
},
|
|
102
|
+
"peerDependencies": {
|
|
103
|
+
"@aws-amplify/core": "6.0.17-unstable.0d2aa5d.0+0d2aa5d"
|
|
104
|
+
},
|
|
105
|
+
"devDependencies": {
|
|
106
|
+
"@aws-amplify/core": "6.0.17-unstable.0d2aa5d.0+0d2aa5d",
|
|
107
|
+
"@aws-amplify/react-native": "1.0.17-unstable.0d2aa5d.0+0d2aa5d",
|
|
108
|
+
"@aws-sdk/types": "3.398.0",
|
|
109
|
+
"typescript": "5.0.2"
|
|
110
|
+
},
|
|
111
|
+
"gitHead": "0d2aa5d71a6b995e302c7404becd8345763eae43"
|
|
112
112
|
}
|
|
@@ -10,7 +10,7 @@ import { AnalyticsValidationErrorCode, validationErrorMap } from './validation';
|
|
|
10
10
|
export function assertValidationError(
|
|
11
11
|
assertion: boolean,
|
|
12
12
|
name: AnalyticsValidationErrorCode,
|
|
13
|
-
message?: string
|
|
13
|
+
message?: string,
|
|
14
14
|
): asserts assertion {
|
|
15
15
|
const { message: defaultMessage, recoverySuggestion } =
|
|
16
16
|
validationErrorMap[name];
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
import { ConsoleLogger } from '@aws-amplify/core';
|
|
6
|
+
|
|
4
7
|
import { resolveConfig } from '../utils/resolveConfig';
|
|
5
8
|
import {
|
|
6
9
|
getAnalyticsUserAgentString,
|
|
7
10
|
resolveCredentials,
|
|
8
11
|
} from '../../../utils';
|
|
9
12
|
import { getEventBuffer } from '../utils/getEventBuffer';
|
|
10
|
-
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
11
|
-
import { ConsoleLogger } from '@aws-amplify/core';
|
|
12
13
|
|
|
13
14
|
const logger = new ConsoleLogger('Kinesis');
|
|
14
15
|
|
|
@@ -33,8 +34,10 @@ export const flushEvents = () => {
|
|
|
33
34
|
identityId,
|
|
34
35
|
resendLimit,
|
|
35
36
|
userAgentValue: getAnalyticsUserAgentString(AnalyticsAction.Record),
|
|
36
|
-
})
|
|
37
|
+
}),
|
|
37
38
|
)
|
|
38
39
|
.then(eventBuffer => eventBuffer.flushAll())
|
|
39
|
-
.catch(e =>
|
|
40
|
+
.catch(e => {
|
|
41
|
+
logger.warn('Failed to flush events.', e);
|
|
42
|
+
});
|
|
40
43
|
};
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import { fromUtf8 } from '@smithy/util-utf8';
|
|
5
|
+
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
6
|
+
import { ConsoleLogger } from '@aws-amplify/core';
|
|
7
|
+
|
|
4
8
|
import { RecordInput } from '../types';
|
|
5
9
|
import { getEventBuffer } from '../utils/getEventBuffer';
|
|
6
10
|
import { resolveConfig } from '../utils/resolveConfig';
|
|
@@ -9,9 +13,7 @@ import {
|
|
|
9
13
|
isAnalyticsEnabled,
|
|
10
14
|
resolveCredentials,
|
|
11
15
|
} from '../../../utils';
|
|
12
|
-
import {
|
|
13
|
-
import { AnalyticsAction } from '@aws-amplify/core/internals/utils';
|
|
14
|
-
import { ConsoleLogger } from '@aws-amplify/core';
|
|
16
|
+
import { AnalyticsValidationErrorCode } from '../../../errors';
|
|
15
17
|
|
|
16
18
|
const logger = new ConsoleLogger('Kinesis');
|
|
17
19
|
|
|
@@ -43,6 +45,7 @@ export const record = ({
|
|
|
43
45
|
}: RecordInput): void => {
|
|
44
46
|
if (!isAnalyticsEnabled()) {
|
|
45
47
|
logger.debug('Analytics is disabled, event will not be recorded.');
|
|
48
|
+
|
|
46
49
|
return;
|
|
47
50
|
}
|
|
48
51
|
|
|
@@ -2,16 +2,13 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
-
AWSCredentials,
|
|
6
|
-
haveCredentialsChanged
|
|
5
|
+
AWSCredentials,
|
|
6
|
+
haveCredentialsChanged,
|
|
7
7
|
} from '@aws-amplify/core/internals/utils';
|
|
8
8
|
import { KinesisClient, PutRecordsCommand } from '@aws-sdk/client-kinesis';
|
|
9
|
+
|
|
9
10
|
import { KinesisBufferEvent, KinesisEventBufferConfig } from '../types';
|
|
10
|
-
import {
|
|
11
|
-
EventBuffer,
|
|
12
|
-
groupBy,
|
|
13
|
-
IAnalyticsClient
|
|
14
|
-
} from '../../../utils';
|
|
11
|
+
import { EventBuffer, IAnalyticsClient, groupBy } from '../../../utils';
|
|
15
12
|
|
|
16
13
|
/**
|
|
17
14
|
* These Records hold cached event buffers and AWS clients.
|
|
@@ -26,7 +23,7 @@ const cachedClients: Record<string, [KinesisClient, AWSCredentials]> = {};
|
|
|
26
23
|
|
|
27
24
|
const createKinesisPutRecordsCommand = (
|
|
28
25
|
streamName: string,
|
|
29
|
-
events: KinesisBufferEvent[]
|
|
26
|
+
events: KinesisBufferEvent[],
|
|
30
27
|
): PutRecordsCommand =>
|
|
31
28
|
new PutRecordsCommand({
|
|
32
29
|
StreamName: streamName,
|
|
@@ -39,23 +36,24 @@ const createKinesisPutRecordsCommand = (
|
|
|
39
36
|
const submitEvents = async (
|
|
40
37
|
events: KinesisBufferEvent[],
|
|
41
38
|
client: KinesisClient,
|
|
42
|
-
resendLimit?: number
|
|
39
|
+
resendLimit?: number,
|
|
43
40
|
): Promise<KinesisBufferEvent[]> => {
|
|
44
41
|
const groupedByStreamName = Object.entries(
|
|
45
|
-
groupBy(event => event.streamName, events)
|
|
42
|
+
groupBy(event => event.streamName, events),
|
|
46
43
|
);
|
|
47
44
|
const requests = groupedByStreamName
|
|
48
|
-
.map(([streamName,
|
|
49
|
-
createKinesisPutRecordsCommand(streamName,
|
|
45
|
+
.map(([streamName, groupedEvents]) =>
|
|
46
|
+
createKinesisPutRecordsCommand(streamName, groupedEvents),
|
|
50
47
|
)
|
|
51
48
|
.map(command => client.send(command));
|
|
52
49
|
|
|
53
50
|
const responses = await Promise.allSettled(requests);
|
|
54
51
|
const failedEvents = responses
|
|
55
52
|
.map((response, i) =>
|
|
56
|
-
response.status === 'rejected' ? groupedByStreamName[i][1] : []
|
|
53
|
+
response.status === 'rejected' ? groupedByStreamName[i][1] : [],
|
|
57
54
|
)
|
|
58
55
|
.flat();
|
|
56
|
+
|
|
59
57
|
return resendLimit
|
|
60
58
|
? failedEvents
|
|
61
59
|
.filter(event => event.retryCount < resendLimit)
|
|
@@ -75,12 +73,16 @@ export const getEventBuffer = ({
|
|
|
75
73
|
userAgentValue,
|
|
76
74
|
}: KinesisEventBufferConfig): EventBuffer<KinesisBufferEvent> => {
|
|
77
75
|
const sessionIdentityKey = [region, identityId].filter(x => !!x).join('-');
|
|
78
|
-
const [
|
|
76
|
+
const [cachedClient, cachedCredentials] =
|
|
77
|
+
cachedClients[sessionIdentityKey] ?? [];
|
|
79
78
|
let credentialsHaveChanged = false;
|
|
80
79
|
|
|
81
80
|
// Check if credentials have changed for the cached client
|
|
82
81
|
if (cachedClient) {
|
|
83
|
-
credentialsHaveChanged = haveCredentialsChanged(
|
|
82
|
+
credentialsHaveChanged = haveCredentialsChanged(
|
|
83
|
+
cachedCredentials,
|
|
84
|
+
credentials,
|
|
85
|
+
);
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
if (!eventBufferMap[sessionIdentityKey] || credentialsHaveChanged) {
|
|
@@ -92,14 +94,13 @@ export const getEventBuffer = ({
|
|
|
92
94
|
region,
|
|
93
95
|
customUserAgent: userAgentValue,
|
|
94
96
|
}),
|
|
95
|
-
credentials
|
|
97
|
+
credentials,
|
|
96
98
|
];
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
const [
|
|
101
|
+
const [kinesisClient] = cachedClients[sessionIdentityKey];
|
|
100
102
|
|
|
101
|
-
return events =>
|
|
102
|
-
submitEvents(events, kinesisClient, resendLimit);
|
|
103
|
+
return events => submitEvents(events, kinesisClient, resendLimit);
|
|
103
104
|
};
|
|
104
105
|
|
|
105
106
|
// create new session
|
|
@@ -109,12 +110,12 @@ export const getEventBuffer = ({
|
|
|
109
110
|
flushSize,
|
|
110
111
|
bufferSize,
|
|
111
112
|
},
|
|
112
|
-
getKinesisClient
|
|
113
|
+
getKinesisClient,
|
|
113
114
|
);
|
|
114
115
|
|
|
115
116
|
// release other sessions
|
|
116
117
|
const releaseSessionKeys = Object.keys(eventBufferMap).filter(
|
|
117
|
-
x => x !== sessionIdentityKey
|
|
118
|
+
x => x !== sessionIdentityKey,
|
|
118
119
|
);
|
|
119
120
|
for (const releaseSessionKey of releaseSessionKeys) {
|
|
120
121
|
eventBufferMap[releaseSessionKey].flushAll().finally(() => {
|