@newrelic/browser-agent 1.254.1 → 1.256.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/CHANGELOG.md +25 -0
- package/dist/cjs/common/config/state/runtime.js +2 -1
- package/dist/cjs/common/constants/env.cdn.js +2 -2
- package/dist/cjs/common/constants/env.npm.js +2 -2
- package/dist/cjs/common/constants/runtime.js +1 -1
- package/dist/cjs/common/context/shared-context.js +1 -1
- package/dist/cjs/common/harvest/harvest.js +2 -1
- package/dist/cjs/common/session/session-entity.js +2 -1
- package/dist/cjs/common/timer/interaction-timer.js +16 -2
- package/dist/cjs/common/timing/time-keeper.js +23 -19
- package/dist/cjs/common/vitals/cumulative-layout-shift.js +12 -5
- package/dist/cjs/common/vitals/first-contentful-paint.js +10 -6
- package/dist/cjs/common/vitals/first-input-delay.js +12 -10
- package/dist/cjs/common/vitals/first-paint.js +1 -2
- package/dist/cjs/common/vitals/interaction-to-next-paint.js +11 -7
- package/dist/cjs/common/vitals/largest-contentful-paint.js +19 -17
- package/dist/cjs/common/vitals/long-task.js +0 -1
- package/dist/cjs/common/vitals/time-to-first-byte.js +11 -6
- package/dist/cjs/common/vitals/vital-metric.js +1 -4
- package/dist/cjs/common/window/nreum.js +1 -1
- package/dist/cjs/features/ajax/aggregate/index.js +3 -2
- package/dist/cjs/features/ajax/instrument/index.js +1 -1
- package/dist/cjs/features/jserrors/aggregate/index.js +19 -8
- package/dist/cjs/features/jserrors/instrument/index.js +9 -4
- package/dist/cjs/features/page_action/aggregate/index.js +3 -2
- package/dist/cjs/features/page_view_event/aggregate/index.js +10 -5
- package/dist/cjs/features/page_view_timing/aggregate/index.js +21 -7
- package/dist/cjs/features/page_view_timing/instrument/index.js +1 -1
- package/dist/cjs/features/session_replay/aggregate/index.js +59 -35
- package/dist/cjs/features/session_replay/constants.js +2 -1
- package/dist/cjs/features/session_replay/instrument/index.js +9 -2
- package/dist/cjs/features/session_replay/shared/recorder.js +20 -4
- package/dist/cjs/features/session_replay/shared/utils.js +12 -0
- package/dist/cjs/features/session_trace/aggregate/index.js +20 -23
- package/dist/cjs/features/session_trace/instrument/index.js +1 -1
- package/dist/cjs/features/soft_navigations/aggregate/index.js +2 -2
- package/dist/cjs/features/soft_navigations/instrument/index.js +1 -1
- package/dist/cjs/features/spa/aggregate/index.js +19 -10
- package/dist/cjs/features/spa/instrument/index.js +1 -1
- package/dist/cjs/features/utils/feature-base.js +0 -2
- package/dist/cjs/loaders/agent-base.js +0 -2
- package/dist/cjs/loaders/agent.js +1 -1
- package/dist/cjs/loaders/api/api.js +8 -2
- package/dist/cjs/loaders/configure/configure.js +1 -0
- package/dist/cjs/loaders/micro-agent.js +4 -7
- package/dist/esm/common/config/state/runtime.js +2 -1
- package/dist/esm/common/constants/env.cdn.js +2 -2
- package/dist/esm/common/constants/env.npm.js +2 -2
- package/dist/esm/common/constants/runtime.js +1 -1
- package/dist/esm/common/context/shared-context.js +1 -1
- package/dist/esm/common/harvest/harvest.js +2 -1
- package/dist/esm/common/session/session-entity.js +2 -1
- package/dist/esm/common/timer/interaction-timer.js +16 -2
- package/dist/esm/common/timing/time-keeper.js +23 -20
- package/dist/esm/common/vitals/cumulative-layout-shift.js +11 -4
- package/dist/esm/common/vitals/first-contentful-paint.js +9 -5
- package/dist/esm/common/vitals/first-input-delay.js +11 -9
- package/dist/esm/common/vitals/first-paint.js +1 -2
- package/dist/esm/common/vitals/interaction-to-next-paint.js +10 -6
- package/dist/esm/common/vitals/largest-contentful-paint.js +18 -16
- package/dist/esm/common/vitals/long-task.js +0 -1
- package/dist/esm/common/vitals/time-to-first-byte.js +10 -5
- package/dist/esm/common/vitals/vital-metric.js +1 -4
- package/dist/esm/common/window/nreum.js +1 -1
- package/dist/esm/features/ajax/aggregate/index.js +3 -2
- package/dist/esm/features/ajax/instrument/index.js +1 -1
- package/dist/esm/features/jserrors/aggregate/index.js +19 -8
- package/dist/esm/features/jserrors/instrument/index.js +9 -4
- package/dist/esm/features/page_action/aggregate/index.js +3 -2
- package/dist/esm/features/page_view_event/aggregate/index.js +10 -5
- package/dist/esm/features/page_view_timing/aggregate/index.js +21 -7
- package/dist/esm/features/page_view_timing/instrument/index.js +1 -1
- package/dist/esm/features/session_replay/aggregate/index.js +59 -35
- package/dist/esm/features/session_replay/constants.js +2 -1
- package/dist/esm/features/session_replay/instrument/index.js +9 -2
- package/dist/esm/features/session_replay/shared/recorder.js +21 -5
- package/dist/esm/features/session_replay/shared/utils.js +11 -0
- package/dist/esm/features/session_trace/aggregate/index.js +20 -23
- package/dist/esm/features/session_trace/instrument/index.js +1 -1
- package/dist/esm/features/soft_navigations/aggregate/index.js +2 -2
- package/dist/esm/features/soft_navigations/instrument/index.js +1 -1
- package/dist/esm/features/spa/aggregate/index.js +19 -10
- package/dist/esm/features/spa/instrument/index.js +1 -1
- package/dist/esm/features/utils/feature-base.js +0 -2
- package/dist/esm/loaders/agent-base.js +0 -2
- package/dist/esm/loaders/agent.js +1 -1
- package/dist/esm/loaders/api/api.js +8 -2
- package/dist/esm/loaders/configure/configure.js +1 -0
- package/dist/esm/loaders/micro-agent.js +4 -7
- package/dist/types/common/config/state/runtime.d.ts.map +1 -1
- package/dist/types/common/constants/runtime.d.ts.map +1 -1
- package/dist/types/common/harvest/harvest.d.ts.map +1 -1
- package/dist/types/common/session/session-entity.d.ts.map +1 -1
- package/dist/types/common/timer/interaction-timer.d.ts +2 -0
- package/dist/types/common/timer/interaction-timer.d.ts.map +1 -1
- package/dist/types/common/timing/time-keeper.d.ts +4 -9
- package/dist/types/common/timing/time-keeper.d.ts.map +1 -1
- package/dist/types/common/vitals/vital-metric.d.ts +1 -2
- package/dist/types/common/vitals/vital-metric.d.ts.map +1 -1
- package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/ajax/instrument/index.d.ts.map +1 -1
- package/dist/types/features/jserrors/aggregate/index.d.ts +2 -1
- package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -1
- package/dist/types/features/page_action/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/page_view_timing/instrument/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/aggregate/index.d.ts +9 -2
- package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/constants.d.ts +1 -0
- package/dist/types/features/session_replay/constants.d.ts.map +1 -1
- package/dist/types/features/session_replay/instrument/index.d.ts +1 -0
- package/dist/types/features/session_replay/instrument/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/shared/recorder.d.ts.map +1 -1
- package/dist/types/features/session_replay/shared/utils.d.ts +8 -0
- package/dist/types/features/session_replay/shared/utils.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/index.d.ts +2 -1
- package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -1
- package/dist/types/features/soft_navigations/instrument/index.d.ts.map +1 -1
- package/dist/types/features/spa/aggregate/index.d.ts +0 -2
- package/dist/types/features/spa/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/utils/feature-base.d.ts +0 -1
- package/dist/types/features/utils/feature-base.d.ts.map +1 -1
- package/dist/types/loaders/agent-base.d.ts +0 -2
- package/dist/types/loaders/agent-base.d.ts.map +1 -1
- package/dist/types/loaders/api/api.d.ts.map +1 -1
- package/dist/types/loaders/configure/configure.d.ts.map +1 -1
- package/dist/types/loaders/micro-agent.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/common/config/state/runtime.js +2 -1
- package/src/common/constants/runtime.js +1 -1
- package/src/common/context/__mocks__/shared-context.js +3 -0
- package/src/common/context/shared-context.js +1 -1
- package/src/common/harvest/harvest.js +2 -2
- package/src/common/session/session-entity.js +2 -1
- package/src/common/timer/interaction-timer.js +17 -2
- package/src/common/timing/__mocks__/time-keeper.js +2 -0
- package/src/common/timing/time-keeper.js +25 -22
- package/src/common/vitals/cumulative-layout-shift.js +10 -4
- package/src/common/vitals/first-contentful-paint.js +9 -4
- package/src/common/vitals/first-input-delay.js +11 -6
- package/src/common/vitals/first-paint.js +1 -1
- package/src/common/vitals/interaction-to-next-paint.js +10 -3
- package/src/common/vitals/largest-contentful-paint.js +19 -15
- package/src/common/vitals/long-task.js +0 -1
- package/src/common/vitals/time-to-first-byte.js +5 -4
- package/src/common/vitals/vital-metric.js +2 -4
- package/src/common/window/nreum.js +1 -1
- package/src/features/ajax/aggregate/index.js +3 -2
- package/src/features/ajax/instrument/index.js +1 -1
- package/src/features/jserrors/aggregate/index.js +18 -8
- package/src/features/jserrors/instrument/index.js +10 -5
- package/src/features/page_action/aggregate/index.js +3 -2
- package/src/features/page_view_event/aggregate/index.js +11 -5
- package/src/features/page_view_timing/aggregate/index.js +16 -6
- package/src/features/page_view_timing/instrument/index.js +1 -1
- package/src/features/session_replay/aggregate/index.js +53 -31
- package/src/features/session_replay/constants.js +2 -1
- package/src/features/session_replay/instrument/index.js +7 -2
- package/src/features/session_replay/shared/recorder.js +23 -5
- package/src/features/session_replay/shared/utils.js +12 -0
- package/src/features/session_trace/aggregate/index.js +19 -17
- package/src/features/session_trace/instrument/index.js +1 -1
- package/src/features/soft_navigations/aggregate/index.js +2 -2
- package/src/features/soft_navigations/instrument/index.js +1 -1
- package/src/features/spa/aggregate/index.js +19 -8
- package/src/features/spa/instrument/index.js +1 -1
- package/src/features/utils/feature-base.js +0 -3
- package/src/loaders/agent-base.js +0 -2
- package/src/loaders/agent.js +1 -1
- package/src/loaders/api/api.js +11 -2
- package/src/loaders/configure/configure.js +1 -0
- package/src/loaders/micro-agent.js +4 -6
- package/src/common/vitals/__mocks__/web-vitals.js +0 -19
package/src/loaders/api/api.js
CHANGED
|
@@ -6,7 +6,6 @@ import { FEATURE_NAMES } from '../features/features'
|
|
|
6
6
|
import { getRuntime, setInfo, getInfo } from '../../common/config/config'
|
|
7
7
|
import { handle } from '../../common/event-emitter/handle'
|
|
8
8
|
import { ee } from '../../common/event-emitter/contextual-ee'
|
|
9
|
-
import { now } from '../../common/timing/now'
|
|
10
9
|
import { drain, registerDrain } from '../../common/drain/drain'
|
|
11
10
|
import { onWindowLoad } from '../../common/window/load'
|
|
12
11
|
import { isBrowserScope } from '../../common/constants/runtime'
|
|
@@ -15,6 +14,8 @@ import { SUPPORTABILITY_METRIC_CHANNEL } from '../../features/metrics/constants'
|
|
|
15
14
|
import { gosCDN } from '../../common/window/nreum'
|
|
16
15
|
import { apiMethods, asyncApiMethods } from './api-methods'
|
|
17
16
|
import { SR_EVENT_EMITTER_TYPES } from '../../features/session_replay/constants'
|
|
17
|
+
import { now } from '../../common/timing/now'
|
|
18
|
+
import { MODE } from '../../common/session/constants'
|
|
18
19
|
|
|
19
20
|
export function setTopLevelCallers () {
|
|
20
21
|
const nr = gosCDN()
|
|
@@ -33,12 +34,20 @@ export function setTopLevelCallers () {
|
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
|
|
37
|
+
const replayRunning = {}
|
|
38
|
+
|
|
36
39
|
export function setAPI (agentIdentifier, forceDrain, runSoftNavOverSpa = false) {
|
|
37
40
|
if (!forceDrain) registerDrain(agentIdentifier, 'api')
|
|
38
41
|
const apiInterface = {}
|
|
39
42
|
var instanceEE = ee.get(agentIdentifier)
|
|
40
43
|
var tracerEE = instanceEE.get('tracer')
|
|
41
44
|
|
|
45
|
+
replayRunning[agentIdentifier] = MODE.OFF
|
|
46
|
+
|
|
47
|
+
instanceEE.on(SR_EVENT_EMITTER_TYPES.REPLAY_RUNNING, (isRunning) => {
|
|
48
|
+
replayRunning[agentIdentifier] = isRunning
|
|
49
|
+
})
|
|
50
|
+
|
|
42
51
|
var prefix = 'api-'
|
|
43
52
|
var spaPrefix = prefix + 'ixn-'
|
|
44
53
|
|
|
@@ -184,7 +193,7 @@ export function setAPI (agentIdentifier, forceDrain, runSoftNavOverSpa = false)
|
|
|
184
193
|
apiInterface.noticeError = function (err, customAttributes) {
|
|
185
194
|
if (typeof err === 'string') err = new Error(err)
|
|
186
195
|
handle(SUPPORTABILITY_METRIC_CHANNEL, ['API/noticeError/called'], undefined, FEATURE_NAMES.metrics, instanceEE)
|
|
187
|
-
handle('err', [err, now(), false, customAttributes], undefined, FEATURE_NAMES.jserrors, instanceEE)
|
|
196
|
+
handle('err', [err, now(), false, customAttributes, !!replayRunning[agentIdentifier]], undefined, FEATURE_NAMES.jserrors, instanceEE)
|
|
188
197
|
}
|
|
189
198
|
|
|
190
199
|
// theres no window.load event on non-browser scopes, lazy load immediately
|
|
@@ -52,6 +52,7 @@ export function configure (agent, opts = {}, loaderType, forceDrain) {
|
|
|
52
52
|
...(updatedInit.ajax.deny_list || []),
|
|
53
53
|
...(updatedInit.ajax.block_internal ? internalTrafficList : [])
|
|
54
54
|
]
|
|
55
|
+
runtime.ptid = agent.agentIdentifier
|
|
55
56
|
setRuntime(agent.agentIdentifier, runtime)
|
|
56
57
|
|
|
57
58
|
if (agent.api === undefined) agent.api = setAPI(agent.agentIdentifier, forceDrain, agent.runSoftNavOverSpa)
|
|
@@ -5,7 +5,6 @@ import { configure } from './configure/configure'
|
|
|
5
5
|
// core files
|
|
6
6
|
import { Aggregator } from '../common/aggregate/aggregator'
|
|
7
7
|
import { setNREUMInitializedAgent } from '../common/window/nreum'
|
|
8
|
-
import { generateRandomHexString } from '../common/ids/unique-id'
|
|
9
8
|
import { getConfiguration, getConfigurationValue, getInfo, getLoaderConfig, getRuntime } from '../common/config/config'
|
|
10
9
|
import { FEATURE_NAMES } from './features/features'
|
|
11
10
|
import { warn } from '../common/util/console'
|
|
@@ -28,13 +27,12 @@ export class MicroAgent extends AgentBase {
|
|
|
28
27
|
* @param {Object} options - Specifies features and runtime configuration,
|
|
29
28
|
* @param {string=} agentIdentifier - The optional unique ID of the agent.
|
|
30
29
|
*/
|
|
31
|
-
constructor (options, agentIdentifier
|
|
32
|
-
super()
|
|
30
|
+
constructor (options, agentIdentifier) {
|
|
31
|
+
super(agentIdentifier)
|
|
33
32
|
|
|
34
|
-
this.agentIdentifier = agentIdentifier
|
|
35
33
|
this.sharedAggregator = new Aggregator({ agentIdentifier: this.agentIdentifier })
|
|
36
34
|
this.features = {}
|
|
37
|
-
setNREUMInitializedAgent(agentIdentifier, this)
|
|
35
|
+
setNREUMInitializedAgent(this.agentIdentifier, this)
|
|
38
36
|
|
|
39
37
|
configure(this, { ...options, runtime: { isolatedBacklog: true } }, options.loaderType || 'micro-agent')
|
|
40
38
|
Object.assign(this, this.api) // the APIs should be available at the class level for micro-agent
|
|
@@ -45,7 +43,7 @@ export class MicroAgent extends AgentBase {
|
|
|
45
43
|
* @param {string|string[]|undefined} name The feature name(s) to start. If no name(s) are passed, all features will be started
|
|
46
44
|
*/
|
|
47
45
|
this.start = features => this.run(features)
|
|
48
|
-
this.run(nonAutoFeatures.filter(featureName => getConfigurationValue(agentIdentifier, `${featureName}.autoStart`)))
|
|
46
|
+
this.run(nonAutoFeatures.filter(featureName => getConfigurationValue(this.agentIdentifier, `${featureName}.autoStart`)))
|
|
49
47
|
}
|
|
50
48
|
|
|
51
49
|
get config () {
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const continuouslyReportMetric = c => {
|
|
2
|
-
let count = 0
|
|
3
|
-
const vital = { value: 1, entries: [{ startTime: 1, name: 'name', size: 1, id: `id${++count}`, url: 'url', element: { tagName: 'tagName' } }], id: 'id' }
|
|
4
|
-
// report a new metric every quarter second
|
|
5
|
-
const callcb = () => {
|
|
6
|
-
setTimeout(() => {
|
|
7
|
-
c(vital)
|
|
8
|
-
callcb()
|
|
9
|
-
}, 250)
|
|
10
|
-
}
|
|
11
|
-
callcb()
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export const onCLS = c => continuouslyReportMetric(c)
|
|
15
|
-
export const onFCP = c => continuouslyReportMetric(c)
|
|
16
|
-
export const onFID = c => continuouslyReportMetric(c)
|
|
17
|
-
export const onINP = c => continuouslyReportMetric(c)
|
|
18
|
-
export const onLCP = c => continuouslyReportMetric(c)
|
|
19
|
-
export const onTTFB = c => continuouslyReportMetric(c)
|