@amplitude/plugin-autocapture-browser 1.26.1 → 1.27.1-sr-idb-multitab-test-rc.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/lib/cjs/autocapture/track-long-task.d.ts.map +1 -1
- package/lib/cjs/autocapture/track-long-task.js +4 -1
- package/lib/cjs/autocapture/track-long-task.js.map +1 -1
- package/lib/cjs/autocapture/track-viewport-content-updated.d.ts.map +1 -1
- package/lib/cjs/autocapture/track-viewport-content-updated.js +3 -3
- package/lib/cjs/autocapture/track-viewport-content-updated.js.map +1 -1
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.d.ts.map +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/autocapture/track-long-task.d.ts.map +1 -1
- package/lib/esm/autocapture/track-long-task.js +4 -1
- package/lib/esm/autocapture/track-long-task.js.map +1 -1
- package/lib/esm/autocapture/track-viewport-content-updated.d.ts.map +1 -1
- package/lib/esm/autocapture/track-viewport-content-updated.js +4 -4
- package/lib/esm/autocapture/track-viewport-content-updated.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.d.ts.map +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.js.map +1 -1
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/autocapture/track-long-task.d.ts.map +1 -1
- package/lib/scripts/autocapture/track-viewport-content-updated.d.ts.map +1 -1
- package/lib/scripts/version.d.ts +1 -1
- package/lib/scripts/version.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-long-task.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"track-long-task.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAmGlH,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,OAAO,EACP,iBAA8C,GAC/C,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,0BAA0B,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;;EAyDA"}
|
|
@@ -18,9 +18,12 @@ function buildLoAFProperties(entry, measures) {
|
|
|
18
18
|
var scripts = (_a = entry.scripts) !== null && _a !== void 0 ? _a : [];
|
|
19
19
|
var scriptURLs = scripts.map(function (s) { return s.sourceURL; }).filter(Boolean);
|
|
20
20
|
var scriptFunctions = scripts.map(function (s) { return s.sourceFunctionName; }).filter(Boolean);
|
|
21
|
+
var scriptPositions = scripts
|
|
22
|
+
.map(function (s) { return s.sourceCharPosition; })
|
|
23
|
+
.filter(function (p) { return typeof p === 'number' && p >= 0; });
|
|
21
24
|
var invokerTypes = scripts.map(function (s) { return s.invokerType; }).filter(Boolean);
|
|
22
25
|
var invokers = scripts.map(function (s) { return s.invoker; }).filter(Boolean);
|
|
23
|
-
return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ '[Amplitude] Main Thread Block Source': 'long-animation-frame', '[Amplitude] Main Thread Block Duration': entry.duration, '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration, '[Amplitude] Main Thread Block Start Time': entry.startTime }, (overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures })), { '[Amplitude] Main Thread Block Render Start': entry.renderStart, '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart, '[Amplitude] Main Thread Block Script Count': scripts.length }), (scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs })), (scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions })), (invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes })), (invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }));
|
|
26
|
+
return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ '[Amplitude] Main Thread Block Source': 'long-animation-frame', '[Amplitude] Main Thread Block Duration': entry.duration, '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration, '[Amplitude] Main Thread Block Start Time': entry.startTime }, (overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures })), { '[Amplitude] Main Thread Block Render Start': entry.renderStart, '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart, '[Amplitude] Main Thread Block Script Count': scripts.length }), (scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs })), (scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions })), (scriptPositions.length > 0 && { '[Amplitude] Main Thread Block Script Positions': scriptPositions })), (invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes })), (invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }));
|
|
24
27
|
}
|
|
25
28
|
function buildLongTaskProperties(entry, measures) {
|
|
26
29
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-long-task.js","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, ElementInteractionsOptions, PerformanceTrackingOptions } from '@amplitude/analytics-core';\nimport { AMPLITUDE_MAIN_THREAD_BLOCK_EVENT } from '../constants';\nimport { isUrlAllowed } from '../helpers';\n\nconst DEFAULT_DURATION_THRESHOLD = 100; // ms\nconst MEASURE_BUFFER_WINDOW_MS = 10_000;\n\n// LoAF and Long Task types are not yet in TypeScript's built-in DOM types\ninterface PerformanceScriptTiming extends PerformanceEntry {\n sourceURL: string;\n sourceFunctionName: string;\n invokerType: string;\n invoker: string;\n}\n\ninterface PerformanceLongAnimationFrameTiming extends PerformanceEntry {\n renderStart: number;\n styleAndLayoutStart: number;\n blockingDuration: number;\n scripts: PerformanceScriptTiming[];\n}\n\ninterface TaskAttributionTiming extends PerformanceEntry {\n name: string;\n}\n\ninterface PerformanceLongTaskTiming extends PerformanceEntry {\n attribution: TaskAttributionTiming[];\n}\n\nfunction getOverlappingMeasures(entry: PerformanceEntry, measures: PerformanceEntry[]): string[] {\n const taskEnd = entry.startTime + entry.duration;\n return measures\n .filter((measure) => measure.startTime < taskEnd && measure.startTime + measure.duration > entry.startTime)\n .map((measure) => measure.name);\n}\n\nfunction buildLoAFProperties(entry: PerformanceLongAnimationFrameTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const scripts = entry.scripts ?? [];\n\n const scriptURLs = scripts.map((s) => s.sourceURL).filter(Boolean);\n const scriptFunctions = scripts.map((s) => s.sourceFunctionName).filter(Boolean);\n const invokerTypes = scripts.map((s) => s.invokerType).filter(Boolean);\n const invokers = scripts.map((s) => s.invoker).filter(Boolean);\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-animation-frame',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n '[Amplitude] Main Thread Block Render Start': entry.renderStart,\n '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart,\n '[Amplitude] Main Thread Block Script Count': scripts.length,\n ...(scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs }),\n ...(scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions }),\n ...(invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes }),\n ...(invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }),\n };\n}\n\nfunction buildLongTaskProperties(entry: PerformanceLongTaskTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const attribution = entry.attribution ?? [];\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-task',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.duration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n ...(attribution.length > 0 && {\n '[Amplitude] Main Thread Block Attribution': attribution.map((a: TaskAttributionTiming) => a.name),\n }),\n };\n}\n\nfunction getSupportedEntryType(): 'long-animation-frame' | 'longtask' | null {\n /* istanbul ignore next */\n if (typeof PerformanceObserver === 'undefined') return null;\n try {\n const supported = PerformanceObserver.supportedEntryTypes;\n if (supported.includes('long-animation-frame')) return 'long-animation-frame';\n if (supported.includes('longtask')) return 'longtask';\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function trackMainThreadBlock({\n amplitude,\n options,\n durationThreshold = DEFAULT_DURATION_THRESHOLD,\n}: {\n amplitude: BrowserClient;\n options: PerformanceTrackingOptions;\n durationThreshold?: number;\n}) {\n const entryType = getSupportedEntryType();\n\n /* istanbul ignore next */\n if (!entryType) {\n return { unsubscribe: () => void 0 };\n }\n\n const measures: PerformanceEntry[] = [];\n\n const measureObserver = new PerformanceObserver((list) => {\n const now = performance.now();\n for (const entry of list.getEntries()) {\n measures.push(entry);\n }\n const cutoff = now - MEASURE_BUFFER_WINDOW_MS;\n while (measures.length > 0 && measures[0].startTime < cutoff) {\n measures.shift();\n }\n });\n\n try {\n measureObserver.observe({ entryTypes: ['measure'] });\n } catch {\n // measure not supported — continue without it\n }\n\n const blockObserver = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (!isUrlAllowed(options as ElementInteractionsOptions)) {\n return;\n }\n if (entry.duration < durationThreshold) {\n continue;\n }\n const properties =\n entryType === 'long-animation-frame'\n ? buildLoAFProperties(entry as PerformanceLongAnimationFrameTiming, measures)\n : buildLongTaskProperties(entry as PerformanceLongTaskTiming, measures);\n\n amplitude.track(AMPLITUDE_MAIN_THREAD_BLOCK_EVENT, properties);\n }\n });\n\n try {\n blockObserver.observe({ entryTypes: [entryType] });\n } catch {\n measureObserver.disconnect();\n return { unsubscribe: () => void 0 };\n }\n\n return {\n unsubscribe: () => {\n blockObserver.disconnect();\n measureObserver.disconnect();\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"track-long-task.js","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, ElementInteractionsOptions, PerformanceTrackingOptions } from '@amplitude/analytics-core';\nimport { AMPLITUDE_MAIN_THREAD_BLOCK_EVENT } from '../constants';\nimport { isUrlAllowed } from '../helpers';\n\nconst DEFAULT_DURATION_THRESHOLD = 100; // ms\nconst MEASURE_BUFFER_WINDOW_MS = 10_000;\n\n// LoAF and Long Task types are not yet in TypeScript's built-in DOM types\ninterface PerformanceScriptTiming extends PerformanceEntry {\n sourceURL: string;\n sourceFunctionName: string;\n // Character offset into the source URL's script where the function was defined.\n // Used downstream for sourcemap resolution. Optional because coverage varies\n // across browsers and entry origins (inline handlers, new Function, etc.).\n sourceCharPosition?: number;\n invokerType: string;\n invoker: string;\n}\n\ninterface PerformanceLongAnimationFrameTiming extends PerformanceEntry {\n renderStart: number;\n styleAndLayoutStart: number;\n blockingDuration: number;\n scripts: PerformanceScriptTiming[];\n}\n\ninterface TaskAttributionTiming extends PerformanceEntry {\n name: string;\n}\n\ninterface PerformanceLongTaskTiming extends PerformanceEntry {\n attribution: TaskAttributionTiming[];\n}\n\nfunction getOverlappingMeasures(entry: PerformanceEntry, measures: PerformanceEntry[]): string[] {\n const taskEnd = entry.startTime + entry.duration;\n return measures\n .filter((measure) => measure.startTime < taskEnd && measure.startTime + measure.duration > entry.startTime)\n .map((measure) => measure.name);\n}\n\nfunction buildLoAFProperties(entry: PerformanceLongAnimationFrameTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const scripts = entry.scripts ?? [];\n\n const scriptURLs = scripts.map((s) => s.sourceURL).filter(Boolean);\n const scriptFunctions = scripts.map((s) => s.sourceFunctionName).filter(Boolean);\n const scriptPositions = scripts\n .map((s) => s.sourceCharPosition)\n .filter((p): p is number => typeof p === 'number' && p >= 0);\n const invokerTypes = scripts.map((s) => s.invokerType).filter(Boolean);\n const invokers = scripts.map((s) => s.invoker).filter(Boolean);\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-animation-frame',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n '[Amplitude] Main Thread Block Render Start': entry.renderStart,\n '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart,\n '[Amplitude] Main Thread Block Script Count': scripts.length,\n ...(scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs }),\n ...(scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions }),\n ...(scriptPositions.length > 0 && { '[Amplitude] Main Thread Block Script Positions': scriptPositions }),\n ...(invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes }),\n ...(invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }),\n };\n}\n\nfunction buildLongTaskProperties(entry: PerformanceLongTaskTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const attribution = entry.attribution ?? [];\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-task',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.duration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n ...(attribution.length > 0 && {\n '[Amplitude] Main Thread Block Attribution': attribution.map((a: TaskAttributionTiming) => a.name),\n }),\n };\n}\n\nfunction getSupportedEntryType(): 'long-animation-frame' | 'longtask' | null {\n /* istanbul ignore next */\n if (typeof PerformanceObserver === 'undefined') return null;\n try {\n const supported = PerformanceObserver.supportedEntryTypes;\n if (supported.includes('long-animation-frame')) return 'long-animation-frame';\n if (supported.includes('longtask')) return 'longtask';\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function trackMainThreadBlock({\n amplitude,\n options,\n durationThreshold = DEFAULT_DURATION_THRESHOLD,\n}: {\n amplitude: BrowserClient;\n options: PerformanceTrackingOptions;\n durationThreshold?: number;\n}) {\n const entryType = getSupportedEntryType();\n\n /* istanbul ignore next */\n if (!entryType) {\n return { unsubscribe: () => void 0 };\n }\n\n const measures: PerformanceEntry[] = [];\n\n const measureObserver = new PerformanceObserver((list) => {\n const now = performance.now();\n for (const entry of list.getEntries()) {\n measures.push(entry);\n }\n const cutoff = now - MEASURE_BUFFER_WINDOW_MS;\n while (measures.length > 0 && measures[0].startTime < cutoff) {\n measures.shift();\n }\n });\n\n try {\n measureObserver.observe({ entryTypes: ['measure'] });\n } catch {\n // measure not supported — continue without it\n }\n\n const blockObserver = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (!isUrlAllowed(options as ElementInteractionsOptions)) {\n return;\n }\n if (entry.duration < durationThreshold) {\n continue;\n }\n const properties =\n entryType === 'long-animation-frame'\n ? buildLoAFProperties(entry as PerformanceLongAnimationFrameTiming, measures)\n : buildLongTaskProperties(entry as PerformanceLongTaskTiming, measures);\n\n amplitude.track(AMPLITUDE_MAIN_THREAD_BLOCK_EVENT, properties);\n }\n });\n\n try {\n blockObserver.observe({ entryTypes: [entryType] });\n } catch {\n measureObserver.disconnect();\n return { unsubscribe: () => void 0 };\n }\n\n return {\n unsubscribe: () => {\n blockObserver.disconnect();\n measureObserver.disconnect();\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-viewport-content-updated.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"track-viewport-content-updated.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgC,MAAM,2BAA2B,CAAC;AAIxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,UAAU,GACX,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;KAAE,CAAC;CACpE,GAAG,IAAI,CAsDP;AAED,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,EAClC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,EAClC,kCAAkC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAejE"}
|
|
@@ -7,7 +7,7 @@ var constants = tslib_1.__importStar(require("../constants"));
|
|
|
7
7
|
var helpers_1 = require("../helpers");
|
|
8
8
|
function fireViewportContentUpdated(_a) {
|
|
9
9
|
var _b;
|
|
10
|
-
var _c, _d, _e;
|
|
10
|
+
var _c, _d, _e, _f, _g;
|
|
11
11
|
var amplitude = _a.amplitude, scrollTracker = _a.scrollTracker, currentElementExposed = _a.currentElementExposed, elementExposedForPage = _a.elementExposedForPage, exposureTracker = _a.exposureTracker, isPageEnd = _a.isPageEnd, lastScroll = _a.lastScroll;
|
|
12
12
|
var pageScrollMaxState = scrollTracker.getState();
|
|
13
13
|
var globalScope = (0, analytics_core_1.getGlobalScope)();
|
|
@@ -16,9 +16,9 @@ function fireViewportContentUpdated(_a) {
|
|
|
16
16
|
/* istanbul ignore next */
|
|
17
17
|
var viewportHeight = (_d = globalScope === null || globalScope === void 0 ? void 0 : globalScope.innerHeight) !== null && _d !== void 0 ? _d : 0;
|
|
18
18
|
var eventProperties = (_b = {},
|
|
19
|
-
_b[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] =
|
|
19
|
+
_b[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = (0, analytics_core_1.getDecodeURI)(
|
|
20
20
|
/* istanbul ignore next */
|
|
21
|
-
(_e = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _e === void 0 ? void 0 : _e.href,
|
|
21
|
+
(_g = (_f = (_e = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _e === void 0 ? void 0 : _e.href) === null || _f === void 0 ? void 0 : _f.split('?')[0]) !== null && _g !== void 0 ? _g : ''),
|
|
22
22
|
_b[constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_X] = pageScrollMaxState.maxX + viewportWidth,
|
|
23
23
|
_b[constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_Y] = pageScrollMaxState.maxY + viewportHeight,
|
|
24
24
|
_b[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT] = viewportHeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-viewport-content-updated.js","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"track-viewport-content-updated.js","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, getDecodeURI, getGlobalScope } from '@amplitude/analytics-core';\nimport * as constants from '../constants';\nimport { getCurrentPageViewId } from '../helpers';\n\nexport interface ScrollTracker {\n getState: () => { maxX: number; maxY: number };\n reset: () => void;\n}\n\nexport interface ExposureTracker {\n reset: () => void;\n}\n\nexport function fireViewportContentUpdated({\n amplitude,\n scrollTracker,\n currentElementExposed,\n elementExposedForPage,\n exposureTracker,\n isPageEnd,\n lastScroll,\n}: {\n amplitude: BrowserClient;\n scrollTracker: ScrollTracker;\n currentElementExposed: Set<string>;\n elementExposedForPage: Set<string>;\n exposureTracker: ExposureTracker | undefined;\n isPageEnd: boolean;\n lastScroll: { maxX: undefined | number; maxY: undefined | number };\n}): void {\n const pageScrollMaxState = scrollTracker.getState();\n const globalScope = getGlobalScope();\n\n /* istanbul ignore next */\n const viewportWidth = globalScope?.innerWidth ?? 0;\n /* istanbul ignore next */\n const viewportHeight = globalScope?.innerHeight ?? 0;\n\n const eventProperties: Record<string, unknown> = {\n [constants.AMPLITUDE_EVENT_PROP_PAGE_URL]: getDecodeURI(\n /* istanbul ignore next */\n globalScope?.location?.href?.split('?')[0] ?? '',\n ),\n [constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_X]: pageScrollMaxState.maxX + viewportWidth,\n [constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_Y]: pageScrollMaxState.maxY + viewportHeight,\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT]: viewportHeight,\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH]: viewportWidth,\n '[Amplitude] Element Exposed': Array.from(currentElementExposed),\n };\n\n const pageViewId = getCurrentPageViewId();\n if (pageViewId) {\n eventProperties[constants.AMPLITUDE_EVENT_PROP_PAGE_VIEW_ID] = pageViewId;\n }\n\n // If elements exposed is empty and max scroll is same as last event, don't track\n if (\n currentElementExposed.size === 0 &&\n pageScrollMaxState.maxX === lastScroll.maxX &&\n pageScrollMaxState.maxY === lastScroll.maxY\n ) {\n if (isPageEnd) {\n scrollTracker.reset();\n elementExposedForPage.clear();\n exposureTracker?.reset();\n }\n return;\n }\n\n /* istanbul ignore next */\n amplitude?.track('[Amplitude] Viewport Content Updated', eventProperties);\n lastScroll.maxX = pageScrollMaxState.maxX;\n lastScroll.maxY = pageScrollMaxState.maxY;\n\n // Clear current batch\n currentElementExposed.clear();\n\n if (isPageEnd) {\n // Reset state for next page view\n scrollTracker.reset();\n elementExposedForPage.clear();\n exposureTracker?.reset();\n }\n}\n\nexport function onExposure(\n elementPath: string,\n elementExposedForPage: Set<string>,\n currentElementExposed: Set<string>,\n fireViewportContentUpdatedCallback: (isPageEnd: boolean) => void,\n) {\n if (elementExposedForPage.has(elementPath)) {\n return;\n }\n elementExposedForPage.add(elementPath);\n currentElementExposed.add(elementPath);\n\n // Check if current set size exceeds 18k chars\n const exposedArray = Array.from(currentElementExposed);\n const exposedString = JSON.stringify(exposedArray);\n\n if (exposedString.length >= constants.MAX_ELEMENT_EXPOSED_STR_LENGTH) {\n fireViewportContentUpdatedCallback(false);\n }\n}\n"]}
|
package/lib/cjs/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.27.1-sr-idb-multitab-test-rc.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/cjs/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,qCAAqC,CAAC"}
|
package/lib/cjs/version.js
CHANGED
package/lib/cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,kCAAkC,CAAC","sourcesContent":["export const VERSION = '1.27.1-sr-idb-multitab-test-rc.0';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-long-task.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"track-long-task.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8B,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAmGlH,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,OAAO,EACP,iBAA8C,GAC/C,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,0BAA0B,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;;EAyDA"}
|
|
@@ -15,9 +15,12 @@ function buildLoAFProperties(entry, measures) {
|
|
|
15
15
|
var scripts = (_a = entry.scripts) !== null && _a !== void 0 ? _a : [];
|
|
16
16
|
var scriptURLs = scripts.map(function (s) { return s.sourceURL; }).filter(Boolean);
|
|
17
17
|
var scriptFunctions = scripts.map(function (s) { return s.sourceFunctionName; }).filter(Boolean);
|
|
18
|
+
var scriptPositions = scripts
|
|
19
|
+
.map(function (s) { return s.sourceCharPosition; })
|
|
20
|
+
.filter(function (p) { return typeof p === 'number' && p >= 0; });
|
|
18
21
|
var invokerTypes = scripts.map(function (s) { return s.invokerType; }).filter(Boolean);
|
|
19
22
|
var invokers = scripts.map(function (s) { return s.invoker; }).filter(Boolean);
|
|
20
|
-
return __assign(__assign(__assign(__assign(__assign(__assign({ '[Amplitude] Main Thread Block Source': 'long-animation-frame', '[Amplitude] Main Thread Block Duration': entry.duration, '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration, '[Amplitude] Main Thread Block Start Time': entry.startTime }, (overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures })), { '[Amplitude] Main Thread Block Render Start': entry.renderStart, '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart, '[Amplitude] Main Thread Block Script Count': scripts.length }), (scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs })), (scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions })), (invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes })), (invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }));
|
|
23
|
+
return __assign(__assign(__assign(__assign(__assign(__assign(__assign({ '[Amplitude] Main Thread Block Source': 'long-animation-frame', '[Amplitude] Main Thread Block Duration': entry.duration, '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration, '[Amplitude] Main Thread Block Start Time': entry.startTime }, (overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures })), { '[Amplitude] Main Thread Block Render Start': entry.renderStart, '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart, '[Amplitude] Main Thread Block Script Count': scripts.length }), (scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs })), (scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions })), (scriptPositions.length > 0 && { '[Amplitude] Main Thread Block Script Positions': scriptPositions })), (invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes })), (invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }));
|
|
21
24
|
}
|
|
22
25
|
function buildLongTaskProperties(entry, measures) {
|
|
23
26
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-long-task.js","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, ElementInteractionsOptions, PerformanceTrackingOptions } from '@amplitude/analytics-core';\nimport { AMPLITUDE_MAIN_THREAD_BLOCK_EVENT } from '../constants';\nimport { isUrlAllowed } from '../helpers';\n\nconst DEFAULT_DURATION_THRESHOLD = 100; // ms\nconst MEASURE_BUFFER_WINDOW_MS = 10_000;\n\n// LoAF and Long Task types are not yet in TypeScript's built-in DOM types\ninterface PerformanceScriptTiming extends PerformanceEntry {\n sourceURL: string;\n sourceFunctionName: string;\n invokerType: string;\n invoker: string;\n}\n\ninterface PerformanceLongAnimationFrameTiming extends PerformanceEntry {\n renderStart: number;\n styleAndLayoutStart: number;\n blockingDuration: number;\n scripts: PerformanceScriptTiming[];\n}\n\ninterface TaskAttributionTiming extends PerformanceEntry {\n name: string;\n}\n\ninterface PerformanceLongTaskTiming extends PerformanceEntry {\n attribution: TaskAttributionTiming[];\n}\n\nfunction getOverlappingMeasures(entry: PerformanceEntry, measures: PerformanceEntry[]): string[] {\n const taskEnd = entry.startTime + entry.duration;\n return measures\n .filter((measure) => measure.startTime < taskEnd && measure.startTime + measure.duration > entry.startTime)\n .map((measure) => measure.name);\n}\n\nfunction buildLoAFProperties(entry: PerformanceLongAnimationFrameTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const scripts = entry.scripts ?? [];\n\n const scriptURLs = scripts.map((s) => s.sourceURL).filter(Boolean);\n const scriptFunctions = scripts.map((s) => s.sourceFunctionName).filter(Boolean);\n const invokerTypes = scripts.map((s) => s.invokerType).filter(Boolean);\n const invokers = scripts.map((s) => s.invoker).filter(Boolean);\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-animation-frame',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n '[Amplitude] Main Thread Block Render Start': entry.renderStart,\n '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart,\n '[Amplitude] Main Thread Block Script Count': scripts.length,\n ...(scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs }),\n ...(scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions }),\n ...(invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes }),\n ...(invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }),\n };\n}\n\nfunction buildLongTaskProperties(entry: PerformanceLongTaskTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const attribution = entry.attribution ?? [];\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-task',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.duration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n ...(attribution.length > 0 && {\n '[Amplitude] Main Thread Block Attribution': attribution.map((a: TaskAttributionTiming) => a.name),\n }),\n };\n}\n\nfunction getSupportedEntryType(): 'long-animation-frame' | 'longtask' | null {\n /* istanbul ignore next */\n if (typeof PerformanceObserver === 'undefined') return null;\n try {\n const supported = PerformanceObserver.supportedEntryTypes;\n if (supported.includes('long-animation-frame')) return 'long-animation-frame';\n if (supported.includes('longtask')) return 'longtask';\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function trackMainThreadBlock({\n amplitude,\n options,\n durationThreshold = DEFAULT_DURATION_THRESHOLD,\n}: {\n amplitude: BrowserClient;\n options: PerformanceTrackingOptions;\n durationThreshold?: number;\n}) {\n const entryType = getSupportedEntryType();\n\n /* istanbul ignore next */\n if (!entryType) {\n return { unsubscribe: () => void 0 };\n }\n\n const measures: PerformanceEntry[] = [];\n\n const measureObserver = new PerformanceObserver((list) => {\n const now = performance.now();\n for (const entry of list.getEntries()) {\n measures.push(entry);\n }\n const cutoff = now - MEASURE_BUFFER_WINDOW_MS;\n while (measures.length > 0 && measures[0].startTime < cutoff) {\n measures.shift();\n }\n });\n\n try {\n measureObserver.observe({ entryTypes: ['measure'] });\n } catch {\n // measure not supported — continue without it\n }\n\n const blockObserver = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (!isUrlAllowed(options as ElementInteractionsOptions)) {\n return;\n }\n if (entry.duration < durationThreshold) {\n continue;\n }\n const properties =\n entryType === 'long-animation-frame'\n ? buildLoAFProperties(entry as PerformanceLongAnimationFrameTiming, measures)\n : buildLongTaskProperties(entry as PerformanceLongTaskTiming, measures);\n\n amplitude.track(AMPLITUDE_MAIN_THREAD_BLOCK_EVENT, properties);\n }\n });\n\n try {\n blockObserver.observe({ entryTypes: [entryType] });\n } catch {\n measureObserver.disconnect();\n return { unsubscribe: () => void 0 };\n }\n\n return {\n unsubscribe: () => {\n blockObserver.disconnect();\n measureObserver.disconnect();\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"track-long-task.js","sourceRoot":"","sources":["../../../src/autocapture/track-long-task.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, ElementInteractionsOptions, PerformanceTrackingOptions } from '@amplitude/analytics-core';\nimport { AMPLITUDE_MAIN_THREAD_BLOCK_EVENT } from '../constants';\nimport { isUrlAllowed } from '../helpers';\n\nconst DEFAULT_DURATION_THRESHOLD = 100; // ms\nconst MEASURE_BUFFER_WINDOW_MS = 10_000;\n\n// LoAF and Long Task types are not yet in TypeScript's built-in DOM types\ninterface PerformanceScriptTiming extends PerformanceEntry {\n sourceURL: string;\n sourceFunctionName: string;\n // Character offset into the source URL's script where the function was defined.\n // Used downstream for sourcemap resolution. Optional because coverage varies\n // across browsers and entry origins (inline handlers, new Function, etc.).\n sourceCharPosition?: number;\n invokerType: string;\n invoker: string;\n}\n\ninterface PerformanceLongAnimationFrameTiming extends PerformanceEntry {\n renderStart: number;\n styleAndLayoutStart: number;\n blockingDuration: number;\n scripts: PerformanceScriptTiming[];\n}\n\ninterface TaskAttributionTiming extends PerformanceEntry {\n name: string;\n}\n\ninterface PerformanceLongTaskTiming extends PerformanceEntry {\n attribution: TaskAttributionTiming[];\n}\n\nfunction getOverlappingMeasures(entry: PerformanceEntry, measures: PerformanceEntry[]): string[] {\n const taskEnd = entry.startTime + entry.duration;\n return measures\n .filter((measure) => measure.startTime < taskEnd && measure.startTime + measure.duration > entry.startTime)\n .map((measure) => measure.name);\n}\n\nfunction buildLoAFProperties(entry: PerformanceLongAnimationFrameTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const scripts = entry.scripts ?? [];\n\n const scriptURLs = scripts.map((s) => s.sourceURL).filter(Boolean);\n const scriptFunctions = scripts.map((s) => s.sourceFunctionName).filter(Boolean);\n const scriptPositions = scripts\n .map((s) => s.sourceCharPosition)\n .filter((p): p is number => typeof p === 'number' && p >= 0);\n const invokerTypes = scripts.map((s) => s.invokerType).filter(Boolean);\n const invokers = scripts.map((s) => s.invoker).filter(Boolean);\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-animation-frame',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.blockingDuration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n '[Amplitude] Main Thread Block Render Start': entry.renderStart,\n '[Amplitude] Main Thread Block Style And Layout Start': entry.styleAndLayoutStart,\n '[Amplitude] Main Thread Block Script Count': scripts.length,\n ...(scriptURLs.length > 0 && { '[Amplitude] Main Thread Block Script URLs': scriptURLs }),\n ...(scriptFunctions.length > 0 && { '[Amplitude] Main Thread Block Script Functions': scriptFunctions }),\n ...(scriptPositions.length > 0 && { '[Amplitude] Main Thread Block Script Positions': scriptPositions }),\n ...(invokerTypes.length > 0 && { '[Amplitude] Main Thread Block Invoker Types': invokerTypes }),\n ...(invokers.length > 0 && { '[Amplitude] Main Thread Block Invokers': invokers }),\n };\n}\n\nfunction buildLongTaskProperties(entry: PerformanceLongTaskTiming, measures: PerformanceEntry[]) {\n const overlappingMeasures = getOverlappingMeasures(entry, measures);\n const attribution = entry.attribution ?? [];\n\n return {\n '[Amplitude] Main Thread Block Source': 'long-task',\n '[Amplitude] Main Thread Block Duration': entry.duration,\n '[Amplitude] Main Thread Block Blocking Duration': entry.duration,\n '[Amplitude] Main Thread Block Start Time': entry.startTime,\n ...(overlappingMeasures.length > 0 && { '[Amplitude] Main Thread Block Measures': overlappingMeasures }),\n ...(attribution.length > 0 && {\n '[Amplitude] Main Thread Block Attribution': attribution.map((a: TaskAttributionTiming) => a.name),\n }),\n };\n}\n\nfunction getSupportedEntryType(): 'long-animation-frame' | 'longtask' | null {\n /* istanbul ignore next */\n if (typeof PerformanceObserver === 'undefined') return null;\n try {\n const supported = PerformanceObserver.supportedEntryTypes;\n if (supported.includes('long-animation-frame')) return 'long-animation-frame';\n if (supported.includes('longtask')) return 'longtask';\n } catch {\n // ignore\n }\n return null;\n}\n\nexport function trackMainThreadBlock({\n amplitude,\n options,\n durationThreshold = DEFAULT_DURATION_THRESHOLD,\n}: {\n amplitude: BrowserClient;\n options: PerformanceTrackingOptions;\n durationThreshold?: number;\n}) {\n const entryType = getSupportedEntryType();\n\n /* istanbul ignore next */\n if (!entryType) {\n return { unsubscribe: () => void 0 };\n }\n\n const measures: PerformanceEntry[] = [];\n\n const measureObserver = new PerformanceObserver((list) => {\n const now = performance.now();\n for (const entry of list.getEntries()) {\n measures.push(entry);\n }\n const cutoff = now - MEASURE_BUFFER_WINDOW_MS;\n while (measures.length > 0 && measures[0].startTime < cutoff) {\n measures.shift();\n }\n });\n\n try {\n measureObserver.observe({ entryTypes: ['measure'] });\n } catch {\n // measure not supported — continue without it\n }\n\n const blockObserver = new PerformanceObserver((list) => {\n for (const entry of list.getEntries()) {\n if (!isUrlAllowed(options as ElementInteractionsOptions)) {\n return;\n }\n if (entry.duration < durationThreshold) {\n continue;\n }\n const properties =\n entryType === 'long-animation-frame'\n ? buildLoAFProperties(entry as PerformanceLongAnimationFrameTiming, measures)\n : buildLongTaskProperties(entry as PerformanceLongTaskTiming, measures);\n\n amplitude.track(AMPLITUDE_MAIN_THREAD_BLOCK_EVENT, properties);\n }\n });\n\n try {\n blockObserver.observe({ entryTypes: [entryType] });\n } catch {\n measureObserver.disconnect();\n return { unsubscribe: () => void 0 };\n }\n\n return {\n unsubscribe: () => {\n blockObserver.disconnect();\n measureObserver.disconnect();\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-viewport-content-updated.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"track-viewport-content-updated.d.ts","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgC,MAAM,2BAA2B,CAAC;AAIxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,UAAU,GACX,EAAE;IACD,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;KAAE,CAAC;CACpE,GAAG,IAAI,CAsDP;AAED,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,EAClC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,EAClC,kCAAkC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,QAejE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { getGlobalScope } from '@amplitude/analytics-core';
|
|
1
|
+
import { getDecodeURI, getGlobalScope } from '@amplitude/analytics-core';
|
|
2
2
|
import * as constants from '../constants';
|
|
3
3
|
import { getCurrentPageViewId } from '../helpers';
|
|
4
4
|
export function fireViewportContentUpdated(_a) {
|
|
5
5
|
var _b;
|
|
6
|
-
var _c, _d, _e;
|
|
6
|
+
var _c, _d, _e, _f, _g;
|
|
7
7
|
var amplitude = _a.amplitude, scrollTracker = _a.scrollTracker, currentElementExposed = _a.currentElementExposed, elementExposedForPage = _a.elementExposedForPage, exposureTracker = _a.exposureTracker, isPageEnd = _a.isPageEnd, lastScroll = _a.lastScroll;
|
|
8
8
|
var pageScrollMaxState = scrollTracker.getState();
|
|
9
9
|
var globalScope = getGlobalScope();
|
|
@@ -12,9 +12,9 @@ export function fireViewportContentUpdated(_a) {
|
|
|
12
12
|
/* istanbul ignore next */
|
|
13
13
|
var viewportHeight = (_d = globalScope === null || globalScope === void 0 ? void 0 : globalScope.innerHeight) !== null && _d !== void 0 ? _d : 0;
|
|
14
14
|
var eventProperties = (_b = {},
|
|
15
|
-
_b[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] =
|
|
15
|
+
_b[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = getDecodeURI(
|
|
16
16
|
/* istanbul ignore next */
|
|
17
|
-
(_e = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _e === void 0 ? void 0 : _e.href,
|
|
17
|
+
(_g = (_f = (_e = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _e === void 0 ? void 0 : _e.href) === null || _f === void 0 ? void 0 : _f.split('?')[0]) !== null && _g !== void 0 ? _g : ''),
|
|
18
18
|
_b[constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_X] = pageScrollMaxState.maxX + viewportWidth,
|
|
19
19
|
_b[constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_Y] = pageScrollMaxState.maxY + viewportHeight,
|
|
20
20
|
_b[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT] = viewportHeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-viewport-content-updated.js","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"track-viewport-content-updated.js","sourceRoot":"","sources":["../../../src/autocapture/track-viewport-content-updated.ts"],"names":[],"mappings":"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","sourcesContent":["import { BrowserClient, getDecodeURI, getGlobalScope } from '@amplitude/analytics-core';\nimport * as constants from '../constants';\nimport { getCurrentPageViewId } from '../helpers';\n\nexport interface ScrollTracker {\n getState: () => { maxX: number; maxY: number };\n reset: () => void;\n}\n\nexport interface ExposureTracker {\n reset: () => void;\n}\n\nexport function fireViewportContentUpdated({\n amplitude,\n scrollTracker,\n currentElementExposed,\n elementExposedForPage,\n exposureTracker,\n isPageEnd,\n lastScroll,\n}: {\n amplitude: BrowserClient;\n scrollTracker: ScrollTracker;\n currentElementExposed: Set<string>;\n elementExposedForPage: Set<string>;\n exposureTracker: ExposureTracker | undefined;\n isPageEnd: boolean;\n lastScroll: { maxX: undefined | number; maxY: undefined | number };\n}): void {\n const pageScrollMaxState = scrollTracker.getState();\n const globalScope = getGlobalScope();\n\n /* istanbul ignore next */\n const viewportWidth = globalScope?.innerWidth ?? 0;\n /* istanbul ignore next */\n const viewportHeight = globalScope?.innerHeight ?? 0;\n\n const eventProperties: Record<string, unknown> = {\n [constants.AMPLITUDE_EVENT_PROP_PAGE_URL]: getDecodeURI(\n /* istanbul ignore next */\n globalScope?.location?.href?.split('?')[0] ?? '',\n ),\n [constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_X]: pageScrollMaxState.maxX + viewportWidth,\n [constants.AMPLITUDE_EVENT_PROP_MAX_PAGE_Y]: pageScrollMaxState.maxY + viewportHeight,\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT]: viewportHeight,\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH]: viewportWidth,\n '[Amplitude] Element Exposed': Array.from(currentElementExposed),\n };\n\n const pageViewId = getCurrentPageViewId();\n if (pageViewId) {\n eventProperties[constants.AMPLITUDE_EVENT_PROP_PAGE_VIEW_ID] = pageViewId;\n }\n\n // If elements exposed is empty and max scroll is same as last event, don't track\n if (\n currentElementExposed.size === 0 &&\n pageScrollMaxState.maxX === lastScroll.maxX &&\n pageScrollMaxState.maxY === lastScroll.maxY\n ) {\n if (isPageEnd) {\n scrollTracker.reset();\n elementExposedForPage.clear();\n exposureTracker?.reset();\n }\n return;\n }\n\n /* istanbul ignore next */\n amplitude?.track('[Amplitude] Viewport Content Updated', eventProperties);\n lastScroll.maxX = pageScrollMaxState.maxX;\n lastScroll.maxY = pageScrollMaxState.maxY;\n\n // Clear current batch\n currentElementExposed.clear();\n\n if (isPageEnd) {\n // Reset state for next page view\n scrollTracker.reset();\n elementExposedForPage.clear();\n exposureTracker?.reset();\n }\n}\n\nexport function onExposure(\n elementPath: string,\n elementExposedForPage: Set<string>,\n currentElementExposed: Set<string>,\n fireViewportContentUpdatedCallback: (isPageEnd: boolean) => void,\n) {\n if (elementExposedForPage.has(elementPath)) {\n return;\n }\n elementExposedForPage.add(elementPath);\n currentElementExposed.add(elementPath);\n\n // Check if current set size exceeds 18k chars\n const exposedArray = Array.from(currentElementExposed);\n const exposedString = JSON.stringify(exposedArray);\n\n if (exposedString.length >= constants.MAX_ELEMENT_EXPOSED_STR_LENGTH) {\n fireViewportContentUpdatedCallback(false);\n }\n}\n"]}
|
package/lib/esm/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.27.1-sr-idb-multitab-test-rc.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/esm/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,qCAAqC,CAAC"}
|
package/lib/esm/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var VERSION = '1.
|
|
1
|
+
export var VERSION = '1.27.1-sr-idb-multitab-test-rc.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/lib/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,OAAO,GAAG,kCAAkC,CAAC","sourcesContent":["export const VERSION = '1.27.1-sr-idb-multitab-test-rc.0';\n"]}
|