Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add vec integration #427

Closed
wants to merge 67 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
434798a
feat: add vec integration
vtsaplin Dec 8, 2023
24e7010
feat: add vec integration
vtsaplin Dec 8, 2023
10d592f
feat: add vec integration
vtsaplin Dec 8, 2023
e1de77a
feat: add vec integration
vtsaplin Dec 8, 2023
0b37e3b
feat: add vec integration
vtsaplin Dec 8, 2023
974bcb1
feat: add vec integration
vtsaplin Dec 8, 2023
44d4aed
feat: add vec integration
vtsaplin Dec 8, 2023
ddcc60d
feat: decouple perf measurements
vtsaplin Dec 11, 2023
818b470
feat: skip targeting in authoring mode
vtsaplin Dec 11, 2023
702dd1b
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
ed6ee49
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
4ce49fb
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
aa49704
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
1095f36
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
9a6c065
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
fbe43fa
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
8754709
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
3d80489
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
f15ca71
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
6df924f
feat: escape ids that start with digit
vtsaplin Dec 11, 2023
0176f92
feat: add context data to target requests
vtsaplin Dec 14, 2023
7d5b6a4
feat: add context data to target requests
vtsaplin Dec 14, 2023
cb1d19d
feat: add context data to target requests
vtsaplin Dec 14, 2023
1819d0b
feat: add context data to target requests
vtsaplin Dec 14, 2023
6aa22d4
feat: add context data to target requests
vtsaplin Dec 14, 2023
ec454b4
feat: add context data to target requests
vtsaplin Dec 14, 2023
ed0d6f1
feat: add context data to target requests
vtsaplin Dec 14, 2023
f493990
feat: add context data to target requests
vtsaplin Dec 14, 2023
10d5566
feat: add context data to target requests
vtsaplin Dec 14, 2023
81ce49a
feat: add context data to target requests
vtsaplin Dec 14, 2023
6cc6acc
Auto-merged main into vec on deployment.
aem-code-sync[bot] Dec 14, 2023
9ece914
feat: add context data to target requests
vtsaplin Dec 14, 2023
ab4875c
Merge remote-tracking branch 'origin/vec' into vec
vtsaplin Dec 14, 2023
78f5cc2
feat: add context data to target requests
vtsaplin Dec 14, 2023
aaa2324
feat: improve performance measuring
vtsaplin Dec 18, 2023
25ee54f
feat: improve performance measuring
vtsaplin Dec 18, 2023
613cf41
Merge branch 'main' into vec
vtsaplin Dec 18, 2023
5156d48
feat: improve performance measuring
vtsaplin Dec 18, 2023
5e2ea93
feat: improve performance measuring
vtsaplin Dec 18, 2023
04aa11c
feat: improve performance measuring
vtsaplin Dec 18, 2023
cf8cb73
feat: improve performance measuring
vtsaplin Dec 18, 2023
15d7bd1
feat: improve performance measuring
vtsaplin Dec 18, 2023
8830ddb
feat: improve performance measuring
vtsaplin Dec 18, 2023
bd08d32
feat: improve performance measuring
vtsaplin Dec 18, 2023
dbca8e7
feat: improve performance measuring
vtsaplin Dec 18, 2023
f8b3ddf
feat: improve performance measuring
vtsaplin Dec 18, 2023
6e2bbd3
feat: improve performance measuring
vtsaplin Dec 18, 2023
e688391
feat: improve performance measuring
vtsaplin Dec 18, 2023
44fccaf
feat: improve performance measuring
vtsaplin Dec 18, 2023
101912c
feat: improve performance measuring
vtsaplin Dec 18, 2023
81d5f1c
feat: improve performance measuring
vtsaplin Dec 18, 2023
0b34331
feat: improve performance measuring
vtsaplin Dec 18, 2023
9241185
feat: improve performance measuring
vtsaplin Dec 18, 2023
7011882
feat: improve performance measuring
vtsaplin Dec 18, 2023
8d9e351
feat: improve performance measuring
vtsaplin Dec 18, 2023
620139c
feat: improve performance measuring
vtsaplin Dec 18, 2023
1f52808
feat: improve performance measuring
vtsaplin Dec 18, 2023
57174ab
feat: improve performance measuring
vtsaplin Dec 18, 2023
0fa5399
feat: improve performance measuring
vtsaplin Dec 18, 2023
66ac2fb
feat: improve performance measuring
vtsaplin Dec 18, 2023
d8168ca
feat: improve performance measuring
vtsaplin Dec 18, 2023
75bb56d
feat: improve performance measuring
vtsaplin Dec 18, 2023
57fb9e5
feat: improve performance measuring
vtsaplin Dec 18, 2023
0833fe0
feat: improve performance measuring
vtsaplin Dec 19, 2023
e3144b6
feat: improve performance measuring
vtsaplin Dec 19, 2023
719a585
feat: improve performance measuring
vtsaplin Dec 19, 2023
961ec07
feat: improve performance measuring
vtsaplin Dec 19, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion head.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<script src="/solutions/scripts/aem-perf-marks.js" type="module"></script>
<script src="/solutions/scripts/target.js" type="module"></script>
<script src="/solutions/scripts/lib-franklin.js" type="module"></script>
<script src="/solutions/scripts/utils/utils.js" type="module"></script>
<script src="/solutions/scripts/scripts.js" type="module"></script>
<link rel="stylesheet" href="/solutions/styles/styles.css"/>
<link rel="stylesheet" href="/solutions/styles/styles.css"/>
101 changes: 101 additions & 0 deletions solutions/scripts/aem-perf-marks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/**
* AEM Performance Marks.
* @type {object}
*/
window.PerfMarks = window.PerfMarks || {};

/**
* Track block loading.
* @type {boolean}
*/
window.PerfMarks.isTrackingBlockTiming = window.PerfMarks.isTrackingBlockTiming || true;

/**
* Create a performance mark.
* @param {string} name The name of the performance mark.
* @param {any} detail The detail to pass to the performance mark.
*/
window.PerfMarks.create = (name, detail = undefined) => {
performance.mark(`perf-start-${name}`, detail ? { detail } : undefined);
// eslint-disable-next-line no-console
console.debug(`perf-${name} started at ${performance.now()} + ms`);
};

/**
* Measure the time between two performance marks.
* @param {string} name The name of the performance mark.
* @param {string[]} labels The labels to add to the performance mark.
*/
window.PerfMarks.measure = (name, labels = []) => {
performance.mark(`perf-stop-${name}`);
const customLabels = labels.map((label) => `[${label}]`).join('');
const measureName = `[perf]${customLabels} ${name}`;
const duration = performance.measure(measureName, `perf-start-${name}`, `perf-stop-${name}`);
// eslint-disable-next-line no-console
console.debug(`perf-${name} stopped at ${performance.now()} ms`);
// eslint-disable-next-line no-console
console.debug(`perf-${name} took ${duration.duration} ms`);
};

const markNames = new Set();

/**
* Get a unique mark name.
* @param blockName
* @returns {string}
*/
function getMarkName(blockName) {
let markName = blockName;
let i = 0;
while (markNames.has(markName)) {
i += 1;
markName = `${blockName}_${i}`;
}
return markName;
}

/**
* Track block timing.
*/
function trackBlockTiming() {
const config = {
attributes: true,
attributeFilter: ['data-block-status'],
attributeOldValue: true,
subtree: true,
};

const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
const { target, oldValue } = mutation;
console.debug('MutationObserver', target); // eslint-disable-line no-console
if (target.dataset.blockStatus) {
const name = target.dataset.blockName;
const status = target.dataset.blockStatus;
if (status === 'loading' && oldValue) {
const markName = getMarkName(name);
markNames.add(markName);
target.dataset.perfMarkName = markName;
console.debug('creating performance mark', markName, oldValue, status); // eslint-disable-line no-console
window.PerfMarks.create(markName);
} else if (status === 'loaded') {
console.debug('measuring performance mark', target.dataset.perfMarkName, oldValue, status); // eslint-disable-line no-console
window.PerfMarks.measure(target.dataset.perfMarkName);
delete target.dataset.perfMarkName;
}
}
});
});

console.debug('Attaching performance observer...'); // eslint-disable-line no-console
observer.observe(document.body, config);

setTimeout(() => {
console.debug('Detaching performance observer...'); // eslint-disable-line no-console
observer.disconnect();
}, 10000);
}

if (window?.PerfMarks.isTrackingBlockTiming) {
trackBlockTiming();
}
3 changes: 3 additions & 0 deletions solutions/scripts/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import {
createTag,
} from './utils/utils.js';

import loadTargetOffers from './target.js';

const LCP_BLOCKS = ['hero']; // add your LCP blocks to the list
const TRACKED_PRODUCTS = [];

Expand Down Expand Up @@ -497,6 +499,7 @@ function loadDelayed() {
}

async function loadPage() {
loadTargetOffers('sitesinternal');
pushPageLoadToDataLayer();
await window.hlx.plugins.load('eager');
await loadEager(document);
Expand Down
Loading
Loading