@adobe/helix-rum-enhancer
Advanced tools
Comparing version 1.7.0 to 1.8.0
@@ -0,1 +1,13 @@ | ||
# [1.8.0](https://github.com/adobe/helix-rum-enhancer/compare/v1.7.0...v1.8.0) (2023-11-21) | ||
### Bug Fixes | ||
* **navigation:** use correct buffered perf observer ([39ed811](https://github.com/adobe/helix-rum-enhancer/commit/39ed811cdb6ccf5471b30a0d147317c724c4220c)) | ||
### Features | ||
* **navigate:** refine checkpoints for `enter`, `navigate`, `reload`, `back_forward`, and `prerender`, track `visibilityState` ([70f622a](https://github.com/adobe/helix-rum-enhancer/commit/70f622a62aa93ff96219420b5c5357348b9ef050)) | ||
# [1.7.0](https://github.com/adobe/helix-rum-enhancer/compare/v1.6.0...v1.7.0) (2023-10-31) | ||
@@ -2,0 +14,0 @@ |
{ | ||
"name": "@adobe/helix-rum-enhancer", | ||
"version": "1.7.0", | ||
"version": "1.8.0", | ||
"description": "Helix RUM Enhancer", | ||
@@ -31,9 +31,9 @@ "main": "src/index.js", | ||
"devDependencies": { | ||
"@adobe/eslint-config-helix": "2.0.4", | ||
"@adobe/eslint-config-helix": "2.0.5", | ||
"@semantic-release/changelog": "6.0.3", | ||
"@semantic-release/git": "10.0.1", | ||
"@semantic-release/npm": "11.0.0", | ||
"@semantic-release/npm": "11.0.1", | ||
"c8": "8.0.1", | ||
"codecov": "3.8.3", | ||
"eslint": "8.52.0", | ||
"eslint": "8.54.0", | ||
"eslint-plugin-header": "3.1.1", | ||
@@ -44,6 +44,6 @@ "eslint-plugin-import": "2.29.0", | ||
"junit-report-builder": "3.1.0", | ||
"lint-staged": "15.0.2", | ||
"lint-staged": "15.1.0", | ||
"mocha": "10.2.0", | ||
"mocha-multi-reporters": "1.5.1", | ||
"semantic-release": "22.0.5" | ||
"semantic-release": "22.0.8" | ||
}, | ||
@@ -50,0 +50,0 @@ "lint-staged": { |
@@ -22,3 +22,3 @@ # Helix RUM Enhancer | ||
- `viewblock`: A Helix block has been scrolled into the viewport | ||
- `viewmedia`: An image or viedo hosted by Helix Media Bus has been scrolled into the viewport | ||
- `viewmedia`: An image or video hosted by Helix Media Bus has been scrolled into the viewport | ||
- `enter`: when page loads and the referrer is different than the current page. | ||
@@ -25,0 +25,0 @@ |
@@ -51,7 +51,21 @@ /* | ||
// enter checkpoint when referrer is not the current page url | ||
if (!!document.referrer && (document.referrer !== window.location.href)) { | ||
sampleRUM('enter', { target: undefined, source: document.referrer }); | ||
} | ||
const navigate = (source, type) => { | ||
const payload = { source, target: document.visibilityState }; | ||
// reload: same page, navigate: same origin, enter: everything else | ||
if (type === 'reload' || source === window.location.href) { | ||
sampleRUM('reload', payload); | ||
} else if (type !== 'navigate') { | ||
sampleRUM(type, payload); // back, forward, prerender, etc. | ||
} else if (source && window.location.origin === new URL(source).origin) { | ||
sampleRUM('navigate', payload); // internal navigation | ||
} else { | ||
sampleRUM('enter', payload); // enter site | ||
} | ||
}; | ||
navigate(document.referrer); | ||
new PerformanceObserver((list) => list | ||
.getEntries().map((entry) => navigate(document.referrer, entry.type))) | ||
.observe({ type: 'navigation', buffered: true }); | ||
sampleRUM.targetselector = (element) => { | ||
@@ -143,2 +157,3 @@ let value = element.getAttribute('href') || element.currentSrc || element.getAttribute('src') | ||
.filter((entry) => !entry.responseStatus || entry.responseStatus < 400) | ||
.filter((entry) => window.location.hostname === new URL(entry.name).hostname) | ||
.filter((entry) => new URL(entry.name).pathname.match('.*(\\.plain\\.html|\\.json)$')) | ||
@@ -145,0 +160,0 @@ .forEach((entry) => { |
37074
209