@newrelic/browser-agent 1.321.0-rc.7 → 1.321.0-rc.9
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/common/constants/env.cdn.js +1 -1
- package/dist/cjs/common/constants/env.npm.js +1 -1
- package/dist/cjs/common/util/console.js +1 -0
- package/dist/cjs/common/v2/manifest.js +142 -0
- package/dist/cjs/common/v2/script-tracker-types.js +27 -0
- package/dist/cjs/common/v2/script-tracker.js +223 -25
- package/dist/cjs/common/v2/utils.js +47 -1
- package/dist/cjs/features/generic_events/aggregate/index.js +28 -1
- package/dist/cjs/loaders/api/register-api-types.js +13 -4
- package/dist/cjs/loaders/api/register.js +18 -0
- package/dist/esm/common/constants/env.cdn.js +1 -1
- package/dist/esm/common/constants/env.npm.js +1 -1
- package/dist/esm/common/util/console.js +1 -0
- package/dist/esm/common/v2/manifest.js +136 -0
- package/dist/esm/common/v2/script-tracker-types.js +24 -0
- package/dist/esm/common/v2/script-tracker.js +222 -26
- package/dist/esm/common/v2/utils.js +46 -1
- package/dist/esm/features/generic_events/aggregate/index.js +29 -2
- package/dist/esm/loaders/api/register-api-types.js +14 -4
- package/dist/esm/loaders/api/register.js +18 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/common/config/init-types.d.ts +1 -1
- package/dist/types/common/util/console.d.ts +1 -0
- package/dist/types/common/util/console.d.ts.map +1 -1
- package/dist/types/common/v2/manifest.d.ts +66 -0
- package/dist/types/common/v2/manifest.d.ts.map +1 -0
- package/dist/types/common/v2/script-tracker-types.d.ts +25 -0
- package/dist/types/common/v2/script-tracker-types.d.ts.map +1 -0
- package/dist/types/common/v2/script-tracker.d.ts +25 -4
- package/dist/types/common/v2/script-tracker.d.ts.map +1 -1
- package/dist/types/common/v2/utils.d.ts +12 -0
- package/dist/types/common/v2/utils.d.ts.map +1 -1
- package/dist/types/features/generic_events/aggregate/index.d.ts.map +1 -1
- package/dist/types/loaders/api/register-api-types.d.ts +31 -4
- package/dist/types/loaders/api/register-api-types.d.ts.map +1 -1
- package/dist/types/loaders/api/register.d.ts +1 -0
- package/dist/types/loaders/api/register.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/common/util/console.js +1 -0
- package/src/common/v2/manifest.js +126 -0
- package/src/common/v2/script-tracker-types.js +24 -0
- package/src/common/v2/script-tracker.js +218 -26
- package/src/common/v2/utils.js +42 -1
- package/src/features/generic_events/aggregate/index.js +22 -2
- package/src/loaders/api/register-api-types.js +14 -4
- package/src/loaders/api/register.js +16 -1
|
@@ -17,11 +17,14 @@ import { single } from '../../common/util/invoke'
|
|
|
17
17
|
import { measure } from './measure'
|
|
18
18
|
import { recordCustomEvent } from './recordCustomEvent'
|
|
19
19
|
import { subscribeToPageUnload } from '../../common/window/page-visibility'
|
|
20
|
-
import { findScriptTimings } from '../../common/v2/script-tracker'
|
|
20
|
+
import { findScriptTimings, applyManifestTimings } from '../../common/v2/script-tracker'
|
|
21
21
|
import { trackMFEVitals } from '../../common/v2/mfe-vitals'
|
|
22
22
|
import { generateRandomHexString } from '../../common/ids/unique-id'
|
|
23
|
+
import { parseManifest } from '../../common/v2/manifest'
|
|
23
24
|
import { cleanURL } from '../../common/url/clean-url'
|
|
24
25
|
|
|
26
|
+
const TIMING_METHODS = ['entry', 'scripts', 'all']
|
|
27
|
+
|
|
25
28
|
/**
|
|
26
29
|
* @typedef {import('./register-api-types').RegisterAPI} RegisterAPI
|
|
27
30
|
*/
|
|
@@ -49,6 +52,7 @@ export const warnings = {
|
|
|
49
52
|
disabled: single(() => warn(55)),
|
|
50
53
|
invalidTarget: single((target) => warn(48, target)),
|
|
51
54
|
deregistered: single(() => warn(68)),
|
|
55
|
+
invalidTimingMethod: single((value) => warn(80, value)),
|
|
52
56
|
duplicateName: single((target) => warn(81, target)),
|
|
53
57
|
duplicateId: single((target) => warn(82, target))
|
|
54
58
|
}
|
|
@@ -84,9 +88,17 @@ function register (agentRef, target) {
|
|
|
84
88
|
get id () { return agentRef.runtime.appMetadata.agents?.[0].entityGuid }, // getter because this is asynchronously set
|
|
85
89
|
type: V2_TYPES.BA
|
|
86
90
|
}
|
|
91
|
+
target.manifest = parseManifest(target.manifest)
|
|
92
|
+
if (target.timingMethod !== undefined && !TIMING_METHODS.includes(target.timingMethod)) {
|
|
93
|
+
warnings.invalidTimingMethod(target.timingMethod)
|
|
94
|
+
target.timingMethod = undefined
|
|
95
|
+
}
|
|
87
96
|
|
|
88
97
|
// The script timings for this entity, which will be used to populate part of the MicroFrontEndTiming custom event.
|
|
89
98
|
const timings = findScriptTimings(target)
|
|
99
|
+
// Always applied when a manifest is present -- totalWeight/renderBlocking accumulate from manifest assets
|
|
100
|
+
// regardless of timingMethod; actual timing widening inside stays gated to 'scripts'/'all' (see applyManifestTimings).
|
|
101
|
+
if (target.manifest) applyManifestTimings(timings, target)
|
|
90
102
|
|
|
91
103
|
// Track MFE vitals for this entity, which will be used to populate part of the MicroFrontEndTiming custom event.
|
|
92
104
|
const vitals = trackMFEVitals(target, timings)
|
|
@@ -227,6 +239,9 @@ function register (agentRef, target) {
|
|
|
227
239
|
timeToFetch, // fetchStart to fetchEnd
|
|
228
240
|
timeToLoad: timeToFetch + timeToExecute, // fetch time and script time together
|
|
229
241
|
timeToRegister: timings.registeredAt, // timestamp when register() was called
|
|
242
|
+
totalWeight: timings.totalWeight, // sum of transferSize bytes across every detected asset (entry script + matched manifest assets)
|
|
243
|
+
// renderBlocking: true if any detected asset was 'blocking', false if only 'non-blocking' assets were seen, omitted entirely if no detected asset reported the attribute at all
|
|
244
|
+
...(timings.renderBlocking !== undefined && { renderBlocking: timings.renderBlocking }),
|
|
230
245
|
// leave room to extend these with more data keys as needed
|
|
231
246
|
...(vitals.fcp.value >= 0 && { 'vitals.fcp.value': vitals.fcp.value }), // FCP vital object with value and metadata
|
|
232
247
|
...(vitals.lcp.value >= 0 && { 'vitals.lcp.value': vitals.lcp.value }), // LCP vital object with value and metadata
|