- Modules: ES module
import/exportonly —require()is prohibited. - Components: Web Components only at the presentation layer — no framework components.
- Secrets: Environment variables only — no hardcoded tokens, endpoints, or keys.
- Naming: Descriptive, intention-revealing names — no abbreviations except
url,id. - Comments: Document non-obvious intent only — no narrating what the code does.
- Linting:
npm run lintmust pass before committing.
All RUM bundle processing MUST use DataChunks, facets, and series from @adobe/rum-distiller. New facets and series MUST be added in datachunks.js — never inlined in dashboard files. The four exported factory functions (errorDataChunks, performanceDataChunks, engagementDataChunks, resourceDataChunks) are the canonical data pipeline entry points per tab.
Any Chart.js chart rendering time-series data spanning more than one day MUST register charts/day-night-plugin.js as a Chart.js plugin. Charts without a time axis (pie charts, histograms) are exempt.
Every piece of visible dashboard state MUST be reflected in a URL search parameter so any view is bookmarkable. Invalid parameter values MUST silently fall back to defaults.
| Parameter | Type | Multi-value | Default / notes |
|---|---|---|---|
domain |
— | — | Not a URL param in current app; domain is hardcoded in code. |
domainkey |
string | No | Required for data load. Pass in URL, or in dev the key is obtained from API via token in localStorage (rum-bundler-token). |
tab |
string | No | error — active tab: error, performance, engagement, resource |
url |
string | No | (none) — form URL being analysed |
startDate |
string | No | today − 7 days — range start, local YYYY-MM-DD |
endDate |
string | No | today — range end, local YYYY-MM-DD |
deviceType |
string | Yes | (none) — Performance tab device-type filter(s) |
source |
string | Yes | (none) — Performance tab traffic-source filter(s) |
New filter controls MUST extend this list and update the URL when the user changes the filter.