@newrelic/browser-agent 1.258.2 → 1.259.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 +7 -0
- package/dist/cjs/cdn/polyfills.js +3 -1
- package/dist/cjs/common/constants/env.cdn.js +1 -1
- package/dist/cjs/common/constants/env.npm.js +1 -1
- package/dist/cjs/common/drain/drain.js +1 -1
- package/dist/cjs/common/harvest/harvest-scheduler.js +4 -2
- package/dist/cjs/features/ajax/constants.js +3 -2
- package/dist/cjs/features/jserrors/aggregate/index.js +2 -1
- package/dist/cjs/features/metrics/aggregate/index.js +0 -8
- package/dist/cjs/features/page_view_event/aggregate/index.js +1 -1
- package/dist/cjs/features/session_replay/aggregate/index.js +31 -36
- package/dist/cjs/features/session_replay/constants.js +5 -2
- package/dist/cjs/features/session_replay/instrument/index.js +53 -13
- package/dist/cjs/features/session_replay/shared/utils.js +3 -5
- package/dist/cjs/features/session_trace/aggregate/index.js +181 -527
- package/dist/cjs/features/session_trace/aggregate/trace/node.js +19 -0
- package/dist/cjs/features/session_trace/aggregate/trace/storage.js +289 -0
- package/dist/cjs/features/session_trace/constants.js +3 -2
- package/dist/cjs/features/session_trace/instrument/index.js +7 -3
- package/dist/cjs/features/utils/aggregate-base.js +1 -0
- package/dist/cjs/features/utils/feature-gates.js +17 -0
- package/dist/cjs/features/utils/instrument-base.js +2 -1
- package/dist/cjs/loaders/agent-base.js +4 -0
- package/dist/cjs/loaders/api/api-methods.js +1 -1
- package/dist/cjs/loaders/api/api.js +2 -2
- package/dist/cjs/loaders/configure/configure.js +1 -0
- package/dist/esm/cdn/polyfills.js +3 -1
- package/dist/esm/common/constants/env.cdn.js +1 -1
- package/dist/esm/common/constants/env.npm.js +1 -1
- package/dist/esm/common/drain/drain.js +1 -1
- package/dist/esm/common/harvest/harvest-scheduler.js +4 -2
- package/dist/esm/features/ajax/constants.js +2 -1
- package/dist/esm/features/jserrors/aggregate/index.js +2 -1
- package/dist/esm/features/metrics/aggregate/index.js +0 -8
- package/dist/esm/features/page_view_event/aggregate/index.js +1 -1
- package/dist/esm/features/session_replay/aggregate/index.js +32 -37
- package/dist/esm/features/session_replay/constants.js +4 -1
- package/dist/esm/features/session_replay/instrument/index.js +54 -14
- package/dist/esm/features/session_replay/shared/utils.js +4 -6
- package/dist/esm/features/session_trace/aggregate/index.js +182 -527
- package/dist/esm/features/session_trace/aggregate/trace/node.js +12 -0
- package/dist/esm/features/session_trace/aggregate/trace/storage.js +282 -0
- package/dist/esm/features/session_trace/constants.js +2 -1
- package/dist/esm/features/session_trace/instrument/index.js +7 -3
- package/dist/esm/features/utils/aggregate-base.js +1 -0
- package/dist/esm/features/utils/feature-gates.js +11 -0
- package/dist/esm/features/utils/instrument-base.js +3 -2
- package/dist/esm/loaders/agent-base.js +4 -0
- package/dist/esm/loaders/api/api-methods.js +1 -1
- package/dist/esm/loaders/api/api.js +2 -2
- package/dist/esm/loaders/configure/configure.js +1 -0
- package/dist/types/common/harvest/harvest-scheduler.d.ts +1 -0
- package/dist/types/common/harvest/harvest-scheduler.d.ts.map +1 -1
- package/dist/types/features/ajax/constants.d.ts +1 -0
- package/dist/types/features/ajax/constants.d.ts.map +1 -1
- package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/metrics/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/aggregate/index.d.ts +1 -1
- package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/constants.d.ts +3 -0
- package/dist/types/features/session_replay/instrument/index.d.ts +0 -1
- package/dist/types/features/session_replay/instrument/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/shared/utils.d.ts +1 -1
- package/dist/types/features/session_replay/shared/utils.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/index.d.ts +39 -52
- package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/trace/node.d.ts +12 -0
- package/dist/types/features/session_trace/aggregate/trace/node.d.ts.map +1 -0
- package/dist/types/features/session_trace/aggregate/trace/storage.d.ts +43 -0
- package/dist/types/features/session_trace/aggregate/trace/storage.d.ts.map +1 -0
- package/dist/types/features/session_trace/constants.d.ts +1 -0
- package/dist/types/features/session_trace/constants.d.ts.map +1 -1
- package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -1
- package/dist/types/features/utils/aggregate-base.d.ts +1 -0
- package/dist/types/features/utils/aggregate-base.d.ts.map +1 -1
- package/dist/types/features/utils/feature-gates.d.ts +2 -0
- package/dist/types/features/utils/feature-gates.d.ts.map +1 -0
- package/dist/types/features/utils/instrument-base.d.ts.map +1 -1
- package/dist/types/loaders/agent-base.d.ts +1 -0
- package/dist/types/loaders/agent-base.d.ts.map +1 -1
- package/dist/types/loaders/configure/configure.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/cdn/polyfills.js +2 -0
- package/src/common/drain/drain.js +1 -1
- package/src/common/harvest/harvest-scheduler.js +4 -2
- package/src/features/ajax/constants.js +2 -0
- package/src/features/jserrors/aggregate/index.js +2 -1
- package/src/features/metrics/aggregate/index.js +0 -8
- package/src/features/page_view_event/aggregate/index.js +1 -1
- package/src/features/session_replay/aggregate/index.js +30 -39
- package/src/features/session_replay/constants.js +4 -0
- package/src/features/session_replay/instrument/index.js +48 -8
- package/src/features/session_replay/shared/__mocks__/utils.js +0 -1
- package/src/features/session_replay/shared/utils.js +4 -7
- package/src/features/session_trace/aggregate/index.js +157 -493
- package/src/features/session_trace/aggregate/trace/node.js +12 -0
- package/src/features/session_trace/aggregate/trace/storage.js +287 -0
- package/src/features/session_trace/constants.js +1 -0
- package/src/features/session_trace/instrument/index.js +7 -2
- package/src/features/utils/__mocks__/feature-gates.js +1 -0
- package/src/features/utils/aggregate-base.js +1 -0
- package/src/features/utils/feature-gates.js +11 -0
- package/src/features/utils/instrument-base.js +3 -2
- package/src/loaders/agent-base.js +4 -0
- package/src/loaders/api/api-methods.js +1 -1
- package/src/loaders/api/api.js +2 -2
- package/src/loaders/configure/configure.js +1 -0
- package/dist/cjs/features/session_replay/shared/replay-mode.js +0 -28
- package/dist/cjs/features/utils/handler-cache.js +0 -70
- package/dist/esm/features/session_replay/shared/replay-mode.js +0 -23
- package/dist/esm/features/utils/handler-cache.js +0 -63
- package/dist/types/features/session_replay/shared/replay-mode.d.ts +0 -9
- package/dist/types/features/session_replay/shared/replay-mode.d.ts.map +0 -1
- package/dist/types/features/utils/handler-cache.d.ts +0 -23
- package/dist/types/features/utils/handler-cache.d.ts.map +0 -1
- package/src/features/session_replay/shared/replay-mode.js +0 -23
- package/src/features/utils/handler-cache.js +0 -65
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { getConfigurationValue } from '../../../common/config/config'
|
|
2
|
-
import { gosNREUM } from '../../../common/window/nreum'
|
|
3
|
-
import { sharedChannel } from '../../../common/constants/shared-channel'
|
|
4
|
-
import { MODE } from '../../../common/session/constants'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Figure out if the Replay feature is running (what mode it's in).
|
|
8
|
-
* IMPORTANT: Session tracking is assumed to be ON; if applicable, check init's privacy.cookies_enabled setting before using this fn!
|
|
9
|
-
* CRITICAL: This fn must be called prior to ALL features aggregate draining. If not, it will never resolve.
|
|
10
|
-
* @param {String} agentId
|
|
11
|
-
* @returns Promise that resolves to one of the values in MODE enum
|
|
12
|
-
*/
|
|
13
|
-
export async function getSessionReplayMode (agentId) {
|
|
14
|
-
try {
|
|
15
|
-
const newrelic = gosNREUM()
|
|
16
|
-
// Should be enabled by configuration and using an agent build that includes it (via checking that the instrument class was initialized).
|
|
17
|
-
if (getConfigurationValue(agentId, 'session_replay.enabled') && typeof newrelic.initializedAgents[agentId].features.session_replay === 'object') {
|
|
18
|
-
const srInitialized = await newrelic.initializedAgents[agentId].features.session_replay.onAggregateImported
|
|
19
|
-
if (srInitialized) return await sharedChannel.sessionReplayInitialized // wait for replay to determine which mode it's after running its sampling logic
|
|
20
|
-
}
|
|
21
|
-
} catch (e) { /* exception ==> off */ }
|
|
22
|
-
return MODE.OFF // at any step of the way s.t. SR cannot be on by implication or is explicitly off
|
|
23
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A class to defer callback execution until a decision can be reached
|
|
3
|
-
*/
|
|
4
|
-
export class HandlerCache {
|
|
5
|
-
/** @private @type {boolean | undefined} */
|
|
6
|
-
#decision = undefined
|
|
7
|
-
/** @private @type {Function[]} */
|
|
8
|
-
#cache = []
|
|
9
|
-
/** @private @type {Timeout} */
|
|
10
|
-
#settleTimer = setTimeout(() => this.#close(), 5000)
|
|
11
|
-
#noMoreChanges = false
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* tell the handlerCache that its ok to immediately execute the callbacks that are triggered by the ee from this moment on
|
|
15
|
-
* and execute all the storage callbacks saved up in the handlerCache
|
|
16
|
-
* @private
|
|
17
|
-
*/
|
|
18
|
-
#drain () {
|
|
19
|
-
this.#cache.forEach(h => h())
|
|
20
|
-
this.#close()
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* tell the handlerCache not to execute any of the storage callbacks
|
|
25
|
-
* and wipe out all the storage callbacks saved up in the handlerCache
|
|
26
|
-
* @private
|
|
27
|
-
*/
|
|
28
|
-
#close () {
|
|
29
|
-
this.#cache = []
|
|
30
|
-
clearTimeout(this.#settleTimer)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Wrap callback functions with this method to defer their execution until a decision has been reached
|
|
35
|
-
* @param {Function} handler
|
|
36
|
-
* @returns {void}
|
|
37
|
-
*/
|
|
38
|
-
settle (handler) {
|
|
39
|
-
if (this.#decision === false) {
|
|
40
|
-
// Do nothing
|
|
41
|
-
} else if (this.#decision === undefined) this.#cache.push(handler)
|
|
42
|
-
else handler()
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Make a decision about what to do with the cache of callbacks.
|
|
47
|
-
* --- if true: tell the handlerCache that its ok to immediately execute the callbacks that are triggered by the ee from this moment on
|
|
48
|
-
* and execute all the storage callbacks saved up in the handlerCache ---
|
|
49
|
-
* --- if false: tell the handlerCache not to execute any of the storage callbacks
|
|
50
|
-
* and wipe out all the storage callbacks saved up in the handlerCache
|
|
51
|
-
* @param {boolean} decision
|
|
52
|
-
*/
|
|
53
|
-
decide (decision) {
|
|
54
|
-
if (this.#noMoreChanges) return
|
|
55
|
-
this.#decision = decision
|
|
56
|
-
if (decision === false) this.#close()
|
|
57
|
-
if (decision === true) this.#drain()
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
permanentlyDecide (decision) {
|
|
61
|
-
if (this.#noMoreChanges) return
|
|
62
|
-
this.decide(decision)
|
|
63
|
-
this.#noMoreChanges = true
|
|
64
|
-
}
|
|
65
|
-
}
|