@newrelic/browser-agent 1.263.0 → 1.265.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 +32 -0
- package/README.md +2 -2
- package/dist/cjs/cdn/experimental.js +3 -7
- package/dist/cjs/cdn/pro.js +2 -2
- package/dist/cjs/cdn/spa.js +2 -2
- package/dist/cjs/common/aggregate/aggregator.js +2 -3
- package/dist/cjs/common/config/{state/configurable.js → configurable.js} +1 -1
- package/dist/cjs/common/config/{state/info.js → info.js} +1 -1
- package/dist/cjs/common/config/{state/init.js → init.js} +11 -8
- package/dist/cjs/common/config/{state/loader-config.js → loader-config.js} +1 -1
- package/dist/cjs/common/config/{state/runtime.js → runtime.js} +16 -5
- package/dist/cjs/common/constants/agent-constants.js +8 -0
- package/dist/cjs/common/constants/env.cdn.js +1 -1
- package/dist/cjs/common/constants/env.npm.js +1 -1
- package/dist/cjs/common/constants/runtime.js +1 -3
- package/dist/cjs/common/context/shared-context.js +1 -2
- package/dist/cjs/common/dispatch/global-event.js +1 -2
- package/dist/cjs/common/drain/drain.js +12 -18
- package/dist/cjs/common/event-emitter/contextual-ee.js +3 -4
- package/dist/cjs/common/event-listener/event-listener-opts.js +2 -6
- package/dist/cjs/common/harvest/harvest-scheduler.js +1 -2
- package/dist/cjs/common/harvest/harvest.js +30 -57
- package/dist/cjs/common/serialize/bel-serializer.js +6 -11
- package/dist/cjs/common/session/session-entity.js +10 -13
- package/dist/cjs/common/timing/nav-timing.js +1 -3
- package/dist/cjs/common/timing/time-keeper.js +16 -6
- package/dist/cjs/common/url/encode.js +3 -7
- package/dist/cjs/common/util/console.js +2 -0
- package/dist/cjs/common/util/invoke.js +6 -16
- package/dist/cjs/common/util/obfuscate.js +97 -53
- package/dist/cjs/common/util/submit-data.js +17 -21
- package/dist/cjs/common/util/text.js +9 -0
- package/dist/cjs/common/util/traverse.js +1 -3
- package/dist/cjs/common/vitals/cumulative-layout-shift.js +5 -6
- package/dist/cjs/common/vitals/first-contentful-paint.js +4 -5
- package/dist/cjs/common/vitals/first-input-delay.js +4 -5
- package/dist/cjs/common/vitals/interaction-to-next-paint.js +5 -6
- package/dist/cjs/common/vitals/largest-contentful-paint.js +4 -5
- package/dist/cjs/common/vitals/time-to-first-byte.js +4 -5
- package/dist/cjs/common/vitals/vital-metric.js +5 -7
- package/dist/cjs/common/window/nreum.js +2 -1
- package/dist/cjs/common/window/page-visibility.js +1 -4
- package/dist/cjs/common/wrap/wrap-events.js +1 -4
- package/dist/cjs/common/wrap/wrap-promise.js +1 -4
- package/dist/cjs/common/wrap/wrap-websocket.js +74 -0
- package/dist/cjs/features/ajax/aggregate/chunk.js +4 -3
- package/dist/cjs/features/ajax/aggregate/gql.js +4 -5
- package/dist/cjs/features/ajax/aggregate/index.js +19 -22
- package/dist/cjs/features/ajax/constants.js +2 -3
- package/dist/cjs/features/ajax/instrument/distributed-tracing.js +9 -8
- package/dist/cjs/features/ajax/instrument/index.js +14 -12
- package/dist/cjs/features/generic_events/aggregate/index.js +128 -0
- package/dist/cjs/features/generic_events/constants.js +10 -0
- package/dist/cjs/features/generic_events/index.js +12 -0
- package/dist/cjs/features/generic_events/instrument/index.js +27 -0
- package/dist/cjs/features/jserrors/aggregate/index.js +25 -44
- package/dist/cjs/features/jserrors/instrument/index.js +4 -4
- package/dist/cjs/features/logging/aggregate/index.js +33 -36
- package/dist/cjs/features/logging/constants.js +2 -3
- package/dist/cjs/features/logging/instrument/index.js +5 -6
- package/dist/cjs/features/logging/shared/log.js +1 -3
- package/dist/cjs/features/logging/shared/utils.js +2 -4
- package/dist/cjs/features/metrics/aggregate/index.js +34 -17
- package/dist/cjs/features/metrics/aggregate/websocket-detection.js +34 -0
- package/dist/cjs/features/metrics/constants.js +4 -2
- package/dist/cjs/features/metrics/instrument/index.js +12 -4
- package/dist/cjs/features/page_action/instrument/index.js +14 -10
- package/dist/cjs/features/page_view_event/aggregate/index.js +19 -39
- package/dist/cjs/features/page_view_event/aggregate/initialized-features.js +1 -1
- package/dist/cjs/features/page_view_event/instrument/index.js +4 -4
- package/dist/cjs/features/page_view_timing/aggregate/index.js +23 -39
- package/dist/cjs/features/page_view_timing/instrument/index.js +4 -4
- package/dist/cjs/features/session_replay/aggregate/index.js +35 -42
- package/dist/cjs/features/session_replay/constants.js +1 -5
- package/dist/cjs/features/session_replay/instrument/index.js +5 -9
- package/dist/cjs/features/session_replay/shared/recorder-events.js +25 -20
- package/dist/cjs/features/session_replay/shared/recorder.js +17 -13
- package/dist/cjs/features/session_replay/shared/stylesheet-evaluator.js +2 -2
- package/dist/cjs/features/session_replay/shared/utils.js +5 -4
- package/dist/cjs/features/session_trace/aggregate/index.js +25 -42
- package/dist/cjs/features/session_trace/aggregate/trace/storage.js +5 -3
- package/dist/cjs/features/session_trace/instrument/index.js +8 -7
- package/dist/cjs/features/soft_navigations/aggregate/ajax-node.js +1 -1
- package/dist/cjs/features/soft_navigations/aggregate/index.js +22 -30
- package/dist/cjs/features/soft_navigations/aggregate/initial-page-load-interaction.js +2 -2
- package/dist/cjs/features/soft_navigations/aggregate/interaction.js +4 -5
- package/dist/cjs/features/soft_navigations/instrument/index.js +14 -13
- package/dist/cjs/features/spa/aggregate/index.js +17 -28
- package/dist/cjs/features/spa/aggregate/interaction.js +7 -6
- package/dist/cjs/features/spa/aggregate/serializer.js +4 -5
- package/dist/cjs/features/spa/constants.js +2 -2
- package/dist/cjs/features/spa/instrument/index.js +20 -19
- package/dist/cjs/features/utils/agent-session.js +6 -4
- package/dist/cjs/features/utils/aggregate-base.js +17 -10
- package/dist/cjs/features/utils/event-buffer.js +132 -0
- package/dist/cjs/features/utils/feature-gates.js +2 -2
- package/dist/cjs/features/utils/instrument-base.js +7 -8
- package/dist/cjs/features/utils/lazy-feature-loader.js +12 -12
- package/dist/cjs/features/utils/nr1-debugger.js +1 -3
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/loaders/agent-base.js +4 -12
- package/dist/cjs/loaders/agent.js +7 -2
- package/dist/cjs/loaders/api/api.js +23 -35
- package/dist/cjs/loaders/api/apiAsync.js +10 -13
- package/dist/cjs/loaders/browser-agent.js +4 -3
- package/dist/cjs/loaders/configure/configure.js +16 -15
- package/dist/cjs/loaders/features/enabled-features.js +2 -2
- package/dist/cjs/loaders/features/features.js +8 -4
- package/dist/cjs/loaders/micro-agent.js +16 -15
- package/dist/esm/cdn/experimental.js +2 -5
- package/dist/esm/cdn/pro.js +2 -2
- package/dist/esm/cdn/spa.js +2 -2
- package/dist/esm/common/aggregate/aggregator.js +2 -3
- package/dist/esm/common/config/{state/configurable.js → configurable.js} +1 -1
- package/dist/esm/common/config/{state/info.js → info.js} +1 -1
- package/dist/esm/common/config/{state/init.js → init.js} +11 -8
- package/dist/esm/common/config/{state/loader-config.js → loader-config.js} +1 -1
- package/dist/esm/common/config/{state/runtime.js → runtime.js} +17 -5
- package/dist/esm/common/constants/agent-constants.js +2 -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/constants/runtime.js +0 -2
- package/dist/esm/common/context/shared-context.js +1 -2
- package/dist/esm/common/dispatch/global-event.js +1 -2
- package/dist/esm/common/drain/drain.js +12 -18
- package/dist/esm/common/event-emitter/contextual-ee.js +2 -3
- package/dist/esm/common/event-listener/event-listener-opts.js +2 -6
- package/dist/esm/common/harvest/harvest-scheduler.js +1 -2
- package/dist/esm/common/harvest/harvest.js +24 -51
- package/dist/esm/common/serialize/bel-serializer.js +6 -11
- package/dist/esm/common/session/session-entity.js +10 -13
- package/dist/esm/common/timing/nav-timing.js +1 -3
- package/dist/esm/common/timing/time-keeper.js +15 -5
- package/dist/esm/common/url/encode.js +3 -7
- package/dist/esm/common/util/console.js +2 -0
- package/dist/esm/common/util/invoke.js +6 -16
- package/dist/esm/common/util/obfuscate.js +96 -49
- package/dist/esm/common/util/submit-data.js +17 -21
- package/dist/esm/common/util/text.js +3 -0
- package/dist/esm/common/util/traverse.js +1 -3
- package/dist/esm/common/vitals/cumulative-layout-shift.js +5 -6
- package/dist/esm/common/vitals/first-contentful-paint.js +4 -5
- package/dist/esm/common/vitals/first-input-delay.js +4 -5
- package/dist/esm/common/vitals/interaction-to-next-paint.js +5 -6
- package/dist/esm/common/vitals/largest-contentful-paint.js +4 -5
- package/dist/esm/common/vitals/time-to-first-byte.js +4 -5
- package/dist/esm/common/vitals/vital-metric.js +5 -7
- package/dist/esm/common/window/nreum.js +2 -1
- package/dist/esm/common/window/page-visibility.js +1 -4
- package/dist/esm/common/wrap/wrap-events.js +1 -4
- package/dist/esm/common/wrap/wrap-promise.js +1 -4
- package/dist/esm/common/wrap/wrap-websocket.js +67 -0
- package/dist/esm/features/ajax/aggregate/chunk.js +3 -2
- package/dist/esm/features/ajax/aggregate/gql.js +4 -5
- package/dist/esm/features/ajax/aggregate/index.js +16 -19
- package/dist/esm/features/ajax/constants.js +1 -2
- package/dist/esm/features/ajax/instrument/distributed-tracing.js +2 -1
- package/dist/esm/features/ajax/instrument/index.js +10 -8
- package/dist/esm/features/generic_events/aggregate/index.js +120 -0
- package/dist/esm/features/generic_events/constants.js +4 -0
- package/dist/esm/features/generic_events/index.js +1 -0
- package/dist/esm/features/generic_events/instrument/index.js +20 -0
- package/dist/esm/features/jserrors/aggregate/index.js +20 -39
- package/dist/esm/features/jserrors/instrument/index.js +3 -3
- package/dist/esm/features/logging/aggregate/index.js +31 -34
- package/dist/esm/features/logging/constants.js +1 -2
- package/dist/esm/features/logging/instrument/index.js +4 -5
- package/dist/esm/features/logging/shared/log.js +1 -3
- package/dist/esm/features/logging/shared/utils.js +2 -4
- package/dist/esm/features/metrics/aggregate/index.js +28 -11
- package/dist/esm/features/metrics/aggregate/websocket-detection.js +29 -0
- package/dist/esm/features/metrics/constants.js +3 -1
- package/dist/esm/features/metrics/instrument/index.js +12 -4
- package/dist/esm/features/page_action/instrument/index.js +14 -9
- package/dist/esm/features/page_view_event/aggregate/index.js +17 -37
- package/dist/esm/features/page_view_event/aggregate/initialized-features.js +1 -1
- package/dist/esm/features/page_view_event/instrument/index.js +3 -3
- package/dist/esm/features/page_view_timing/aggregate/index.js +20 -36
- package/dist/esm/features/page_view_timing/instrument/index.js +3 -3
- package/dist/esm/features/session_replay/aggregate/index.js +25 -32
- package/dist/esm/features/session_replay/constants.js +0 -4
- package/dist/esm/features/session_replay/index.js +1 -7
- package/dist/esm/features/session_replay/instrument/index.js +5 -8
- package/dist/esm/features/session_replay/shared/recorder-events.js +25 -20
- package/dist/esm/features/session_replay/shared/recorder.js +14 -10
- package/dist/esm/features/session_replay/shared/stylesheet-evaluator.js +2 -2
- package/dist/esm/features/session_replay/shared/utils.js +3 -2
- package/dist/esm/features/session_trace/aggregate/index.js +20 -37
- package/dist/esm/features/session_trace/aggregate/trace/storage.js +5 -3
- package/dist/esm/features/session_trace/instrument/index.js +5 -4
- package/dist/esm/features/soft_navigations/aggregate/ajax-node.js +1 -1
- package/dist/esm/features/soft_navigations/aggregate/index.js +21 -29
- package/dist/esm/features/soft_navigations/aggregate/initial-page-load-interaction.js +1 -1
- package/dist/esm/features/soft_navigations/aggregate/interaction.js +2 -3
- package/dist/esm/features/soft_navigations/instrument/index.js +11 -10
- package/dist/esm/features/spa/aggregate/index.js +11 -22
- package/dist/esm/features/spa/aggregate/interaction.js +6 -5
- package/dist/esm/features/spa/aggregate/serializer.js +2 -3
- package/dist/esm/features/spa/constants.js +2 -2
- package/dist/esm/features/spa/instrument/index.js +12 -11
- package/dist/esm/features/utils/agent-session.js +3 -1
- package/dist/esm/features/utils/aggregate-base.js +16 -9
- package/dist/esm/features/utils/event-buffer.js +126 -0
- package/dist/esm/features/utils/feature-gates.js +1 -1
- package/dist/esm/features/utils/instrument-base.js +6 -7
- package/dist/esm/features/utils/lazy-feature-loader.js +12 -12
- package/dist/esm/features/utils/nr1-debugger.js +1 -3
- package/dist/esm/index.js +3 -0
- package/dist/esm/loaders/agent-base.js +4 -12
- package/dist/esm/loaders/agent.js +7 -2
- package/dist/esm/loaders/api/api.js +18 -30
- package/dist/esm/loaders/api/apiAsync.js +3 -6
- package/dist/esm/loaders/browser-agent.js +3 -2
- package/dist/esm/loaders/configure/configure.js +9 -8
- package/dist/esm/loaders/features/enabled-features.js +1 -1
- package/dist/esm/loaders/features/features.js +8 -4
- package/dist/esm/loaders/micro-agent.js +11 -10
- package/dist/types/common/aggregate/aggregator.d.ts.map +1 -1
- package/dist/types/common/config/configurable.d.ts.map +1 -0
- package/dist/types/common/config/info.d.ts.map +1 -0
- package/dist/types/common/config/init.d.ts.map +1 -0
- package/dist/types/common/config/loader-config.d.ts.map +1 -0
- package/dist/types/common/config/runtime.d.ts.map +1 -0
- package/dist/types/common/constants/agent-constants.d.ts +3 -0
- package/dist/types/common/constants/agent-constants.d.ts.map +1 -0
- package/dist/types/common/constants/runtime.d.ts +0 -1
- package/dist/types/common/constants/runtime.d.ts.map +1 -1
- package/dist/types/common/harvest/harvest.d.ts +1 -7
- package/dist/types/common/harvest/harvest.d.ts.map +1 -1
- package/dist/types/common/serialize/bel-serializer.d.ts.map +1 -1
- package/dist/types/common/timing/time-keeper.d.ts +9 -2
- package/dist/types/common/timing/time-keeper.d.ts.map +1 -1
- package/dist/types/common/url/encode.d.ts.map +1 -1
- package/dist/types/common/util/console.d.ts.map +1 -1
- package/dist/types/common/util/obfuscate.d.ts +78 -6
- package/dist/types/common/util/obfuscate.d.ts.map +1 -1
- package/dist/types/common/util/submit-data.d.ts.map +1 -1
- package/dist/types/common/util/text.d.ts +2 -0
- package/dist/types/common/util/text.d.ts.map +1 -0
- package/dist/types/common/window/nreum.d.ts.map +1 -1
- package/dist/types/common/wrap/wrap-websocket.d.ts +4 -0
- package/dist/types/common/wrap/wrap-websocket.d.ts.map +1 -0
- package/dist/types/features/ajax/aggregate/chunk.d.ts.map +1 -1
- package/dist/types/features/ajax/aggregate/index.d.ts +2 -3
- package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/ajax/constants.d.ts +0 -1
- package/dist/types/features/ajax/constants.d.ts.map +1 -1
- package/dist/types/features/ajax/instrument/distributed-tracing.d.ts.map +1 -1
- package/dist/types/features/ajax/instrument/index.d.ts +1 -0
- package/dist/types/features/ajax/instrument/index.d.ts.map +1 -1
- package/dist/types/features/{page_action → generic_events}/aggregate/index.d.ts +10 -10
- package/dist/types/features/generic_events/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/generic_events/constants.d.ts +4 -0
- package/dist/types/features/generic_events/constants.d.ts.map +1 -0
- package/dist/types/features/generic_events/index.d.ts +2 -0
- package/dist/types/features/generic_events/index.d.ts.map +1 -0
- package/dist/types/features/generic_events/instrument/index.d.ts +7 -0
- package/dist/types/features/generic_events/instrument/index.d.ts.map +1 -0
- package/dist/types/features/jserrors/aggregate/index.d.ts +2 -2
- package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/jserrors/instrument/index.d.ts +1 -0
- package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -1
- package/dist/types/features/logging/aggregate/index.d.ts +4 -7
- package/dist/types/features/logging/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/logging/constants.d.ts +0 -1
- package/dist/types/features/logging/constants.d.ts.map +1 -1
- package/dist/types/features/logging/instrument/index.d.ts +1 -0
- package/dist/types/features/logging/instrument/index.d.ts.map +1 -1
- package/dist/types/features/metrics/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/metrics/aggregate/websocket-detection.d.ts +12 -0
- package/dist/types/features/metrics/aggregate/websocket-detection.d.ts.map +1 -0
- package/dist/types/features/metrics/constants.d.ts +1 -0
- package/dist/types/features/metrics/constants.d.ts.map +1 -1
- package/dist/types/features/metrics/instrument/index.d.ts +1 -0
- package/dist/types/features/metrics/instrument/index.d.ts.map +1 -1
- package/dist/types/features/page_action/instrument/index.d.ts +9 -4
- package/dist/types/features/page_action/instrument/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_event/instrument/index.d.ts +1 -0
- package/dist/types/features/page_view_event/instrument/index.d.ts.map +1 -1
- package/dist/types/features/page_view_timing/aggregate/index.d.ts +2 -2
- 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 +1 -0
- package/dist/types/features/page_view_timing/instrument/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_replay/constants.d.ts +0 -4
- 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-events.d.ts +6 -6
- package/dist/types/features/session_replay/shared/recorder-events.d.ts.map +1 -1
- package/dist/types/features/session_replay/shared/recorder.d.ts +2 -2
- package/dist/types/features/session_replay/shared/recorder.d.ts.map +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 +2 -2
- package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/trace/storage.d.ts +1 -1
- package/dist/types/features/session_trace/aggregate/trace/storage.d.ts.map +1 -1
- package/dist/types/features/session_trace/instrument/index.d.ts +1 -0
- package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -1
- package/dist/types/features/soft_navigations/aggregate/index.d.ts +3 -3
- package/dist/types/features/soft_navigations/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/soft_navigations/instrument/index.d.ts +1 -0
- package/dist/types/features/soft_navigations/instrument/index.d.ts.map +1 -1
- package/dist/types/features/spa/aggregate/index.d.ts +2 -2
- package/dist/types/features/spa/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/spa/aggregate/interaction.d.ts.map +1 -1
- package/dist/types/features/spa/aggregate/serializer.d.ts.map +1 -1
- package/dist/types/features/spa/constants.d.ts.map +1 -1
- package/dist/types/features/spa/instrument/index.d.ts +1 -0
- package/dist/types/features/spa/instrument/index.d.ts.map +1 -1
- package/dist/types/features/utils/agent-session.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/event-buffer.d.ts +72 -0
- package/dist/types/features/utils/event-buffer.d.ts.map +1 -0
- package/dist/types/features/utils/instrument-base.d.ts +1 -0
- package/dist/types/features/utils/instrument-base.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/loaders/agent-base.d.ts +1 -2
- package/dist/types/loaders/agent-base.d.ts.map +1 -1
- package/dist/types/loaders/agent.d.ts.map +1 -1
- package/dist/types/loaders/api/api.d.ts.map +1 -1
- package/dist/types/loaders/browser-agent.d.ts.map +1 -1
- package/dist/types/loaders/configure/configure.d.ts.map +1 -1
- package/dist/types/loaders/features/features.d.ts +1 -0
- package/dist/types/loaders/features/features.d.ts.map +1 -1
- package/dist/types/loaders/micro-agent.d.ts.map +1 -1
- package/package.json +67 -52
- package/src/cdn/experimental.js +2 -4
- package/src/cdn/pro.js +2 -2
- package/src/cdn/spa.js +2 -2
- package/src/common/aggregate/aggregator.js +2 -3
- package/src/common/config/__mocks__/info.js +3 -0
- package/src/common/config/__mocks__/init.js +3 -0
- package/src/common/config/__mocks__/loader-config.js +2 -0
- package/src/common/config/__mocks__/runtime.js +2 -0
- package/src/common/config/{state/configurable.js → configurable.js} +1 -1
- package/src/common/config/{state/info.js → info.js} +1 -1
- package/src/common/config/{state/init.js → init.js} +7 -6
- package/src/common/config/{state/loader-config.js → loader-config.js} +1 -1
- package/src/common/config/{state/runtime.js → runtime.js} +19 -5
- package/src/common/constants/agent-constants.js +2 -0
- package/src/common/constants/runtime.js +0 -2
- package/src/common/drain/drain.js +8 -6
- package/src/common/event-emitter/contextual-ee.js +1 -1
- package/src/common/harvest/harvest.js +10 -24
- package/src/common/serialize/bel-serializer.js +6 -9
- package/src/common/session/session-entity.js +4 -4
- package/src/common/timing/__mocks__/time-keeper.js +6 -2
- package/src/common/timing/time-keeper.js +15 -5
- package/src/common/url/encode.js +2 -3
- package/src/common/util/__mocks__/console.js +1 -0
- package/src/common/util/__mocks__/obfuscate.js +5 -8
- package/src/common/util/console.js +2 -0
- package/src/common/util/obfuscate.js +94 -50
- package/src/common/util/submit-data.js +0 -1
- package/src/common/util/text.js +6 -0
- package/src/common/window/__mocks__/nreum.js +1 -1
- package/src/common/window/nreum.js +2 -1
- package/src/common/wrap/wrap-websocket.js +73 -0
- package/src/features/ajax/aggregate/chunk.js +3 -2
- package/src/features/ajax/aggregate/index.js +20 -19
- package/src/features/ajax/constants.js +0 -2
- package/src/features/ajax/instrument/distributed-tracing.js +2 -1
- package/src/features/ajax/instrument/index.js +9 -5
- package/src/features/generic_events/aggregate/index.js +139 -0
- package/src/features/generic_events/constants.js +5 -0
- package/src/features/generic_events/index.js +1 -0
- package/src/features/generic_events/instrument/index.js +24 -0
- package/src/features/jserrors/aggregate/index.js +18 -9
- package/src/features/jserrors/instrument/index.js +2 -0
- package/src/features/logging/aggregate/index.js +39 -31
- package/src/features/logging/constants.js +0 -2
- package/src/features/logging/instrument/index.js +2 -0
- package/src/features/logging/shared/utils.js +1 -1
- package/src/features/metrics/aggregate/index.js +24 -9
- package/src/features/metrics/aggregate/websocket-detection.js +31 -0
- package/src/features/metrics/constants.js +3 -0
- package/src/features/metrics/instrument/index.js +13 -1
- package/src/features/page_action/instrument/index.js +11 -6
- package/src/features/page_view_event/aggregate/index.js +8 -23
- package/src/features/page_view_event/aggregate/initialized-features.js +1 -1
- package/src/features/page_view_event/instrument/index.js +2 -0
- package/src/features/page_view_timing/aggregate/index.js +15 -18
- package/src/features/page_view_timing/instrument/index.js +2 -0
- package/src/features/session_replay/aggregate/index.js +13 -9
- package/src/features/session_replay/constants.js +0 -4
- package/src/features/session_replay/index.js +1 -7
- package/src/features/session_replay/instrument/index.js +3 -4
- package/src/features/session_replay/shared/recorder-events.js +27 -20
- package/src/features/session_replay/shared/recorder.js +13 -6
- package/src/features/session_replay/shared/stylesheet-evaluator.js +2 -2
- package/src/features/session_replay/shared/utils.js +3 -2
- package/src/features/session_trace/aggregate/index.js +16 -7
- package/src/features/session_trace/aggregate/trace/storage.js +6 -1
- package/src/features/session_trace/instrument/index.js +4 -1
- package/src/features/soft_navigations/aggregate/ajax-node.js +1 -1
- package/src/features/soft_navigations/aggregate/index.js +13 -15
- package/src/features/soft_navigations/aggregate/initial-page-load-interaction.js +1 -1
- package/src/features/soft_navigations/aggregate/interaction.js +1 -1
- package/src/features/soft_navigations/instrument/index.js +9 -5
- package/src/features/spa/aggregate/index.js +12 -20
- package/src/features/spa/aggregate/interaction.js +6 -5
- package/src/features/spa/aggregate/serializer.js +2 -3
- package/src/features/spa/constants.js +2 -2
- package/src/features/spa/instrument/index.js +9 -3
- package/src/features/utils/agent-session.js +3 -1
- package/src/features/utils/aggregate-base.js +13 -3
- package/src/features/utils/event-buffer.js +126 -0
- package/src/features/utils/feature-gates.js +1 -1
- package/src/features/utils/instrument-base.js +2 -1
- package/src/features/utils/lazy-feature-loader.js +2 -2
- package/src/index.js +3 -0
- package/src/loaders/agent-base.js +2 -6
- package/src/loaders/agent.js +7 -2
- package/src/loaders/api/api.js +3 -2
- package/src/loaders/api/apiAsync.js +2 -2
- package/src/loaders/browser-agent.js +5 -3
- package/src/loaders/configure/configure.js +9 -2
- package/src/loaders/features/enabled-features.js +1 -1
- package/src/loaders/features/features.js +8 -4
- package/src/loaders/micro-agent.js +5 -2
- package/dist/cjs/cdn/polyfills/lite.js +0 -16
- package/dist/cjs/cdn/polyfills/pro.js +0 -21
- package/dist/cjs/cdn/polyfills/spa.js +0 -22
- package/dist/cjs/cdn/polyfills.js +0 -24
- package/dist/cjs/common/config/config.js +0 -76
- package/dist/cjs/common/config/state/originals.js +0 -8
- package/dist/cjs/common/util/map-own.js +0 -31
- package/dist/cjs/common/wrap/index.js +0 -61
- package/dist/cjs/features/page_action/aggregate/index.js +0 -121
- package/dist/esm/cdn/polyfills/lite.js +0 -14
- package/dist/esm/cdn/polyfills/pro.js +0 -19
- package/dist/esm/cdn/polyfills/spa.js +0 -20
- package/dist/esm/cdn/polyfills.js +0 -27
- package/dist/esm/common/config/config.js +0 -11
- package/dist/esm/common/config/state/originals.js +0 -2
- package/dist/esm/common/util/map-own.js +0 -24
- package/dist/esm/common/wrap/index.js +0 -13
- package/dist/esm/features/page_action/aggregate/index.js +0 -114
- package/dist/types/cdn/polyfills/lite.d.ts +0 -2
- package/dist/types/cdn/polyfills/lite.d.ts.map +0 -1
- package/dist/types/cdn/polyfills/pro.d.ts +0 -2
- package/dist/types/cdn/polyfills/pro.d.ts.map +0 -1
- package/dist/types/cdn/polyfills/spa.d.ts +0 -2
- package/dist/types/cdn/polyfills/spa.d.ts.map +0 -1
- package/dist/types/cdn/polyfills.d.ts +0 -2
- package/dist/types/cdn/polyfills.d.ts.map +0 -1
- package/dist/types/common/config/config.d.ts +0 -13
- package/dist/types/common/config/config.d.ts.map +0 -1
- package/dist/types/common/config/state/configurable.d.ts.map +0 -1
- package/dist/types/common/config/state/info.d.ts.map +0 -1
- package/dist/types/common/config/state/init.d.ts.map +0 -1
- package/dist/types/common/config/state/loader-config.d.ts.map +0 -1
- package/dist/types/common/config/state/originals.d.ts +0 -2
- package/dist/types/common/config/state/originals.d.ts.map +0 -1
- package/dist/types/common/config/state/runtime.d.ts.map +0 -1
- package/dist/types/common/util/map-own.d.ts +0 -3
- package/dist/types/common/util/map-own.d.ts.map +0 -1
- package/dist/types/common/wrap/index.d.ts +0 -10
- package/dist/types/common/wrap/index.d.ts.map +0 -1
- package/dist/types/features/page_action/aggregate/index.d.ts.map +0 -1
- package/src/cdn/polyfills/lite.js +0 -20
- package/src/cdn/polyfills/pro.js +0 -30
- package/src/cdn/polyfills/spa.js +0 -32
- package/src/cdn/polyfills.js +0 -27
- package/src/common/config/__mocks__/config.js +0 -11
- package/src/common/config/config.js +0 -12
- package/src/common/config/state/originals.js +0 -3
- package/src/common/util/map-own.js +0 -22
- package/src/common/wrap/index.js +0 -16
- package/src/features/page_action/aggregate/index.js +0 -114
- /package/dist/types/common/config/{state/configurable.d.ts → configurable.d.ts} +0 -0
- /package/dist/types/common/config/{state/info.d.ts → info.d.ts} +0 -0
- /package/dist/types/common/config/{state/init.d.ts → init.d.ts} +0 -0
- /package/dist/types/common/config/{state/loader-config.d.ts → loader-config.d.ts} +0 -0
- /package/dist/types/common/config/{state/runtime.d.ts → runtime.d.ts} +0 -0
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.Instrument = void 0;
|
|
7
|
-
var
|
|
6
|
+
exports.SoftNav = exports.Instrument = void 0;
|
|
7
|
+
var _nreum = require("../../../common/window/nreum");
|
|
8
8
|
var _runtime = require("../../../common/constants/runtime");
|
|
9
9
|
var _handle = require("../../../common/event-emitter/handle");
|
|
10
10
|
var _eventListenerOpts = require("../../../common/event-listener/event-listener-opts");
|
|
11
11
|
var _invoke = require("../../../common/util/invoke");
|
|
12
|
-
var
|
|
12
|
+
var _wrapEvents = require("../../../common/wrap/wrap-events");
|
|
13
|
+
var _wrapHistory = require("../../../common/wrap/wrap-history");
|
|
13
14
|
var _instrumentBase = require("../../utils/instrument-base");
|
|
14
15
|
var _constants = require("../constants");
|
|
15
16
|
var _now = require("../../../common/timing/now");
|
|
16
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* The minimal time after a UI event for which no further events will be processed - i.e. a throttling rate to reduce spam.
|
|
17
19
|
* This also give some time for the new interaction to complete without being discarded by a subsequent UI event and wrongly attributed.
|
|
18
20
|
* This value is still subject to change and critique, as it is derived from beyond worst case time to next frame of a page.
|
|
19
21
|
*/
|
|
@@ -21,13 +23,12 @@ const UI_WAIT_INTERVAL = 1 / 10 * 1000; // assume 10 fps
|
|
|
21
23
|
|
|
22
24
|
class Instrument extends _instrumentBase.InstrumentBase {
|
|
23
25
|
static featureName = _constants.FEATURE_NAME;
|
|
24
|
-
constructor(agentIdentifier, aggregator) {
|
|
25
|
-
let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
26
|
+
constructor(agentIdentifier, aggregator, auto = true) {
|
|
26
27
|
super(agentIdentifier, aggregator, _constants.FEATURE_NAME, auto);
|
|
27
|
-
if (!_runtime.isBrowserScope || !
|
|
28
|
+
if (!_runtime.isBrowserScope || !(0, _nreum.gosNREUMOriginals)().o.MO) return; // soft navigations is not supported outside web env or browsers without the mutation observer API
|
|
28
29
|
|
|
29
|
-
const historyEE = (0,
|
|
30
|
-
const eventsEE = (0,
|
|
30
|
+
const historyEE = (0, _wrapHistory.wrapHistory)(this.ee);
|
|
31
|
+
const eventsEE = (0, _wrapEvents.wrapEvents)(this.ee);
|
|
31
32
|
const trackURLChange = () => (0, _handle.handle)('newURL', [(0, _now.now)(), '' + window.location], undefined, this.featureName, this.ee);
|
|
32
33
|
historyEE.on('pushState-end', trackURLChange);
|
|
33
34
|
historyEE.on('replaceState-end', trackURLChange);
|
|
@@ -37,7 +38,7 @@ class Instrument extends _instrumentBase.InstrumentBase {
|
|
|
37
38
|
const trackURLChangeEvent = evt => (0, _handle.handle)('newURL', [evt.timeStamp, '' + window.location], undefined, this.featureName, this.ee);
|
|
38
39
|
(0, _eventListenerOpts.windowAddEventListener)('popstate', trackURLChangeEvent, true, this.removeOnAbort?.signal);
|
|
39
40
|
let oncePerFrame = false; // attempt to reduce dom noice since the observer runs very frequently with below options
|
|
40
|
-
const domObserver = new
|
|
41
|
+
const domObserver = new ((0, _nreum.gosNREUMOriginals)().o.MO)((domChanges, observer) => {
|
|
41
42
|
if (oncePerFrame) return;
|
|
42
43
|
oncePerFrame = true;
|
|
43
44
|
requestAnimationFrame(() => {
|
|
@@ -57,8 +58,7 @@ class Instrument extends _instrumentBase.InstrumentBase {
|
|
|
57
58
|
}, UI_WAIT_INTERVAL, {
|
|
58
59
|
leading: true
|
|
59
60
|
});
|
|
60
|
-
eventsEE.on('fn-start',
|
|
61
|
-
let [evt] = _ref;
|
|
61
|
+
eventsEE.on('fn-start', ([evt]) => {
|
|
62
62
|
// set up a new user ixn before the callback for the triggering event executes
|
|
63
63
|
if (_constants.INTERACTION_TRIGGERS.includes(evt?.type)) {
|
|
64
64
|
processUserInteraction(evt);
|
|
@@ -76,4 +76,5 @@ class Instrument extends _instrumentBase.InstrumentBase {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
exports.Instrument = Instrument;
|
|
79
|
+
exports.Instrument = Instrument;
|
|
80
|
+
const SoftNav = exports.SoftNav = Instrument;
|
|
@@ -7,11 +7,11 @@ exports.Aggregate = void 0;
|
|
|
7
7
|
var _registerHandler = require("../../../common/event-emitter/register-handler");
|
|
8
8
|
var _parseUrl = require("../../../common/url/parse-url");
|
|
9
9
|
var _denyList = require("../../../common/deny-list/deny-list");
|
|
10
|
-
var _mapOwn = require("../../../common/util/map-own");
|
|
11
10
|
var _navTiming = require("../../../common/timing/nav-timing");
|
|
12
11
|
var _uniqueId = require("../../../common/ids/unique-id");
|
|
13
12
|
var _interaction = require("./interaction");
|
|
14
|
-
var
|
|
13
|
+
var _init = require("../../../common/config/init");
|
|
14
|
+
var _runtime = require("../../../common/config/runtime");
|
|
15
15
|
var _eventListenerOpts = require("../../../common/event-listener/event-listener-opts");
|
|
16
16
|
var _harvestScheduler = require("../../../common/harvest/harvest-scheduler");
|
|
17
17
|
var _serializer = require("./serializer");
|
|
@@ -22,11 +22,12 @@ var _aggregateBase = require("../../utils/aggregate-base");
|
|
|
22
22
|
var _firstContentfulPaint = require("../../../common/vitals/first-contentful-paint");
|
|
23
23
|
var _firstPaint = require("../../../common/vitals/first-paint");
|
|
24
24
|
var _bundleId = require("../../../common/ids/bundle-id");
|
|
25
|
-
var
|
|
25
|
+
var _runtime2 = require("../../../common/constants/runtime");
|
|
26
26
|
var _handle = require("../../../common/event-emitter/handle");
|
|
27
27
|
var _constants2 = require("../../metrics/constants");
|
|
28
28
|
var _drain = require("../../../common/drain/drain");
|
|
29
29
|
var _console = require("../../../common/util/console");
|
|
30
|
+
var _eventBuffer = require("../../utils/event-buffer");
|
|
30
31
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
31
32
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
32
33
|
/*
|
|
@@ -57,7 +58,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
57
58
|
static featureName = FEATURE_NAME;
|
|
58
59
|
constructor(agentIdentifier, aggregator) {
|
|
59
60
|
super(agentIdentifier, aggregator, FEATURE_NAME);
|
|
60
|
-
const agentRuntime = (0,
|
|
61
|
+
const agentRuntime = (0, _runtime.getRuntime)(agentIdentifier);
|
|
61
62
|
this.state = {
|
|
62
63
|
initialPageURL: agentRuntime.origin,
|
|
63
64
|
lastSeenUrl: agentRuntime.origin,
|
|
@@ -71,11 +72,10 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
71
72
|
pageLoaded: false,
|
|
72
73
|
childTime: 0,
|
|
73
74
|
depth: 0,
|
|
74
|
-
harvestTimeSeconds: (0,
|
|
75
|
-
interactionsToHarvest:
|
|
76
|
-
interactionsSent: [],
|
|
75
|
+
harvestTimeSeconds: (0, _init.getConfigurationValue)(agentIdentifier, 'spa.harvestTimeSeconds') || 10,
|
|
76
|
+
interactionsToHarvest: new _eventBuffer.EventBuffer(),
|
|
77
77
|
// The below feature flag is used to disable the SPA ajax fix for specific customers, see https://new-relic.atlassian.net/browse/NR-172169
|
|
78
|
-
disableSpaFix: ((0,
|
|
78
|
+
disableSpaFix: ((0, _init.getConfigurationValue)(agentIdentifier, 'feature_flags') || []).indexOf('disable-spa-fix') > -1
|
|
79
79
|
};
|
|
80
80
|
let scheduler;
|
|
81
81
|
this.serializer = new _serializer.Serializer(this);
|
|
@@ -126,8 +126,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
126
126
|
// | click ending: | 65 | 50 | | | |
|
|
127
127
|
// click fn-end | 70 | 0 | 0 | 70 | 20 |
|
|
128
128
|
|
|
129
|
-
this.waitForFlags(['spa']).then(
|
|
130
|
-
let [spaFlag] = _ref;
|
|
129
|
+
this.waitForFlags(['spa']).then(([spaFlag]) => {
|
|
131
130
|
if (spaFlag) {
|
|
132
131
|
scheduler = new _harvestScheduler.HarvestScheduler('events', {
|
|
133
132
|
onFinished: onHarvestFinished,
|
|
@@ -194,7 +193,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
194
193
|
var ev = args[0];
|
|
195
194
|
var evName = ev.type;
|
|
196
195
|
var eventNode = ev["__nrNode:".concat(_bundleId.bundleId)];
|
|
197
|
-
if (!state.pageLoaded && (evName === 'load' && eventSource === window ||
|
|
196
|
+
if (!state.pageLoaded && (evName === 'load' && eventSource === window || _runtime2.loadedAsDeferredBrowserScript)) {
|
|
198
197
|
state.pageLoaded = true;
|
|
199
198
|
// set to null so prevNode is set correctly
|
|
200
199
|
this.prevNode = state.currentNode = null;
|
|
@@ -622,21 +621,16 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
622
621
|
|
|
623
622
|
// make sure that newrelic[INTERACTION]() works in end handler
|
|
624
623
|
state.currentNode = root;
|
|
625
|
-
|
|
624
|
+
Object.values(interaction.handlers || {}).forEach(function (cb) {
|
|
626
625
|
cb(attrs.store);
|
|
627
626
|
});
|
|
628
627
|
setCurrentNode(null);
|
|
629
628
|
}
|
|
630
629
|
const classThis = this;
|
|
631
630
|
function onHarvestStarted(options) {
|
|
632
|
-
if (state.interactionsToHarvest.
|
|
633
|
-
var payload = serializer.serializeMultiple(state.interactionsToHarvest, 0, _navTiming.navTimingValues);
|
|
634
|
-
if (options.retry)
|
|
635
|
-
state.interactionsToHarvest.forEach(function (interaction) {
|
|
636
|
-
state.interactionsSent.push(interaction);
|
|
637
|
-
});
|
|
638
|
-
}
|
|
639
|
-
state.interactionsToHarvest = [];
|
|
631
|
+
if (!state.interactionsToHarvest.hasData || classThis.blocked) return {};
|
|
632
|
+
var payload = serializer.serializeMultiple(state.interactionsToHarvest.buffer, 0, _navTiming.navTimingValues);
|
|
633
|
+
if (options.retry) state.interactionsToHarvest.hold();else state.interactionsToHarvest.clear();
|
|
640
634
|
return {
|
|
641
635
|
body: {
|
|
642
636
|
e: payload
|
|
@@ -644,12 +638,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
644
638
|
};
|
|
645
639
|
}
|
|
646
640
|
function onHarvestFinished(result) {
|
|
647
|
-
if (result.sent && result.retry && state.
|
|
648
|
-
state.interactionsSent.forEach(function (interaction) {
|
|
649
|
-
state.interactionsToHarvest.unshift(interaction);
|
|
650
|
-
});
|
|
651
|
-
state.interactionsSent = [];
|
|
652
|
-
}
|
|
641
|
+
if (result.sent && result.retry && state.interactionsToHarvest.held.hasData) state.interactionsToHarvest.unhold();else state.interactionsToHarvest.held.clear();
|
|
653
642
|
}
|
|
654
643
|
baseEE.on('spa-jserror', function (type, name, params, metrics) {
|
|
655
644
|
if (!state.currentNode) return;
|
|
@@ -697,7 +686,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
697
686
|
interaction.root.attrs.firstContentfulPaint = _firstContentfulPaint.firstContentfulPaint.current.value;
|
|
698
687
|
}
|
|
699
688
|
baseEE.emit('interactionDone', [interaction, true]);
|
|
700
|
-
state.interactionsToHarvest.
|
|
689
|
+
state.interactionsToHarvest.add(interaction);
|
|
701
690
|
let smCategory;
|
|
702
691
|
if (interaction.root?.attrs?.trigger === 'initialPageLoad') smCategory = 'InitialPageLoad';else if (interaction.routeChange) smCategory = 'RouteChange';else smCategory = 'Custom';
|
|
703
692
|
(0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ["Spa/Interaction/".concat(smCategory, "/Duration/Ms"), Math.max((interaction.root?.end || 0) - (interaction.root?.start || 0), 0)], undefined, _features.FEATURE_NAMES.metrics, baseEE);
|
|
@@ -705,7 +694,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
|
|
|
705
694
|
if (!scheduler) (0, _console.warn)(19);
|
|
706
695
|
}
|
|
707
696
|
function isEnabled() {
|
|
708
|
-
var enabled = (0,
|
|
697
|
+
var enabled = (0, _init.getConfigurationValue)(agentIdentifier, 'spa.enabled');
|
|
709
698
|
return enabled !== false;
|
|
710
699
|
}
|
|
711
700
|
}
|
|
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Interaction = Interaction;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
7
|
+
var _info = require("../../../common/config/info");
|
|
8
|
+
var _runtime = require("../../../common/config/runtime");
|
|
9
|
+
var _nreum = require("../../../common/window/nreum");
|
|
9
10
|
var _contextualEe = require("../../../common/event-emitter/contextual-ee");
|
|
10
11
|
var _interactionNode = require("./interaction-node");
|
|
11
12
|
/*
|
|
@@ -13,8 +14,8 @@ var _interactionNode = require("./interaction-node");
|
|
|
13
14
|
* SPDX-License-Identifier: Apache-2.0
|
|
14
15
|
*/
|
|
15
16
|
|
|
16
|
-
var originalSetTimeout =
|
|
17
|
-
var originalClearTimeout =
|
|
17
|
+
var originalSetTimeout = (0, _nreum.gosNREUMOriginals)().o.ST;
|
|
18
|
+
var originalClearTimeout = (0, _nreum.gosNREUMOriginals)().o.CT;
|
|
18
19
|
var lastId = {};
|
|
19
20
|
function Interaction(eventName, timestamp, url, routeName, onFinished, agentIdentifier) {
|
|
20
21
|
this.agentIdentifier = agentIdentifier;
|
|
@@ -33,7 +34,7 @@ function Interaction(eventName, timestamp, url, routeName, onFinished, agentIden
|
|
|
33
34
|
var root = this.root = new _interactionNode.InteractionNode(this, null, 'interaction', timestamp);
|
|
34
35
|
var attrs = root.attrs;
|
|
35
36
|
attrs.trigger = eventName;
|
|
36
|
-
attrs.initialPageURL = (0,
|
|
37
|
+
attrs.initialPageURL = (0, _runtime.getRuntime)(agentIdentifier).origin;
|
|
37
38
|
attrs.oldRoute = routeName;
|
|
38
39
|
attrs.newURL = attrs.oldURL = url;
|
|
39
40
|
attrs.custom = {};
|
|
@@ -88,7 +89,7 @@ InteractionPrototype.finish = function finishInteraction() {
|
|
|
88
89
|
if (this.onFinished) {
|
|
89
90
|
this.onFinished(this);
|
|
90
91
|
}
|
|
91
|
-
|
|
92
|
+
Object.entries((0, _info.getInfo)(interaction.agentIdentifier).jsAttributes || {}).forEach(([attr, value]) => {
|
|
92
93
|
if (!(attr in customAttrs)) customAttrs[attr] = value;
|
|
93
94
|
});
|
|
94
95
|
root.end = endTimestamp;
|
|
@@ -5,10 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.Serializer = void 0;
|
|
7
7
|
var _cleanUrl = require("../../../common/url/clean-url");
|
|
8
|
-
var _mapOwn = require("../../../common/util/map-own");
|
|
9
8
|
var _belSerializer = require("../../../common/serialize/bel-serializer");
|
|
10
9
|
var _sharedContext = require("../../../common/context/shared-context");
|
|
11
|
-
var
|
|
10
|
+
var _info = require("../../../common/config/info");
|
|
12
11
|
/*
|
|
13
12
|
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
14
13
|
* SPDX-License-Identifier: Apache-2.0
|
|
@@ -28,7 +27,7 @@ class Serializer extends _sharedContext.SharedContext {
|
|
|
28
27
|
this.firstTimestamp = undefined;
|
|
29
28
|
}
|
|
30
29
|
serializeMultiple(interactions, offset, navTiming) {
|
|
31
|
-
const info = (0,
|
|
30
|
+
const info = (0, _info.getInfo)(this.sharedContext.agentIdentifier);
|
|
32
31
|
var addString = (0, _belSerializer.getAddStringContext)(this.sharedContext.agentIdentifier);
|
|
33
32
|
var serialized = 'bel.7';
|
|
34
33
|
interactions.forEach(interaction => {
|
|
@@ -38,7 +37,7 @@ class Serializer extends _sharedContext.SharedContext {
|
|
|
38
37
|
return serialized;
|
|
39
38
|
}
|
|
40
39
|
serializeSingle(root, offset, navTiming, isRouteChange) {
|
|
41
|
-
const info = (0,
|
|
40
|
+
const info = (0, _info.getInfo)(this.sharedContext.agentIdentifier);
|
|
42
41
|
var addString = (0, _belSerializer.getAddStringContext)(this.sharedContext.agentIdentifier);
|
|
43
42
|
var serialized = 'bel.7;' + this.serializeInteraction(root, offset, navTiming, isRouteChange, addString, info);
|
|
44
43
|
this.firstTimestamp = undefined;
|
|
@@ -132,7 +131,7 @@ class Serializer extends _sharedContext.SharedContext {
|
|
|
132
131
|
// get all navTiming values except navigationStart
|
|
133
132
|
// (since its the same as interaction.start)
|
|
134
133
|
// and limit to just the first 20 values we know about
|
|
135
|
-
|
|
134
|
+
Object.values(navTiming.slice(1, 21) || {}).forEach(v => {
|
|
136
135
|
if (v !== undefined) {
|
|
137
136
|
navTimingNode += seperator + (0, _belSerializer.numeric)(v - prev);
|
|
138
137
|
seperator = ',';
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.originalSetTimeout = exports.START = exports.SPA_NODE = exports.REMAINING = exports.MAX_TIMER_BUDGET = exports.JS_TIME = exports.JSONP_NODE = exports.JSONP_END = exports.INTERACTION_EVENTS = exports.INTERACTION_API = exports.INTERACTION = exports.FN_START = exports.FN_END = exports.FETCH_START = exports.FETCH_DONE = exports.FETCH_BODY = exports.FETCH = exports.FEATURE_NAME = exports.END = exports.CB_START = exports.CB_END = exports.BODY = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _nreum = require("../../common/window/nreum");
|
|
8
8
|
var _features = require("../../loaders/features/features");
|
|
9
9
|
const FEATURE_NAME = exports.FEATURE_NAME = _features.FEATURE_NAMES.spa;
|
|
10
10
|
const INTERACTION_EVENTS = exports.INTERACTION_EVENTS = ['click', 'submit', 'keypress', 'keydown', 'keyup', 'change'];
|
|
@@ -21,7 +21,7 @@ const FETCH_START = exports.FETCH_START = 'fetch-start';
|
|
|
21
21
|
const FETCH_DONE = exports.FETCH_DONE = 'fetch-done';
|
|
22
22
|
const FETCH_BODY = exports.FETCH_BODY = 'fetch-body-';
|
|
23
23
|
const JSONP_END = exports.JSONP_END = 'jsonp-end';
|
|
24
|
-
const originalSetTimeout = exports.originalSetTimeout =
|
|
24
|
+
const originalSetTimeout = exports.originalSetTimeout = (0, _nreum.gosNREUMOriginals)().o.ST;
|
|
25
25
|
const START = exports.START = '-start';
|
|
26
26
|
const END = exports.END = '-end';
|
|
27
27
|
const BODY = exports.BODY = '-body';
|
|
@@ -3,14 +3,20 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.Instrument = void 0;
|
|
7
|
-
var _wrap = require("../../../common/wrap");
|
|
6
|
+
exports.Spa = exports.Instrument = void 0;
|
|
8
7
|
var _eventListenerOpts = require("../../../common/event-listener/event-listener-opts");
|
|
9
8
|
var _instrumentBase = require("../../utils/instrument-base");
|
|
10
9
|
var CONSTANTS = _interopRequireWildcard(require("../constants"));
|
|
11
10
|
var _runtime = require("../../../common/constants/runtime");
|
|
12
11
|
var _now = require("../../../common/timing/now");
|
|
13
12
|
var _handle = require("../../../common/event-emitter/handle");
|
|
13
|
+
var _wrapJsonp = require("../../../common/wrap/wrap-jsonp");
|
|
14
|
+
var _wrapPromise = require("../../../common/wrap/wrap-promise");
|
|
15
|
+
var _wrapTimer = require("../../../common/wrap/wrap-timer");
|
|
16
|
+
var _wrapXhr = require("../../../common/wrap/wrap-xhr");
|
|
17
|
+
var _wrapFetch = require("../../../common/wrap/wrap-fetch");
|
|
18
|
+
var _wrapHistory = require("../../../common/wrap/wrap-history");
|
|
19
|
+
var _wrapMutation = require("../../../common/wrap/wrap-mutation");
|
|
14
20
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
21
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
22
|
/*
|
|
@@ -32,11 +38,8 @@ const {
|
|
|
32
38
|
} = CONSTANTS;
|
|
33
39
|
class Instrument extends _instrumentBase.InstrumentBase {
|
|
34
40
|
static featureName = FEATURE_NAME;
|
|
35
|
-
constructor(agentIdentifier, aggregator) {
|
|
36
|
-
var _this;
|
|
37
|
-
let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
41
|
+
constructor(agentIdentifier, aggregator, auto = true) {
|
|
38
42
|
super(agentIdentifier, aggregator, FEATURE_NAME, auto);
|
|
39
|
-
_this = this;
|
|
40
43
|
if (!_runtime.isBrowserScope) return; // SPA not supported outside web env
|
|
41
44
|
|
|
42
45
|
try {
|
|
@@ -45,25 +48,22 @@ class Instrument extends _instrumentBase.InstrumentBase {
|
|
|
45
48
|
let depth = 0;
|
|
46
49
|
let startHash;
|
|
47
50
|
const tracerEE = this.ee.get('tracer');
|
|
48
|
-
const jsonpEE = (0,
|
|
49
|
-
const promiseEE = (0,
|
|
50
|
-
const timerEE = (0,
|
|
51
|
-
const xhrEE = (0,
|
|
51
|
+
const jsonpEE = (0, _wrapJsonp.wrapJsonP)(this.ee);
|
|
52
|
+
const promiseEE = (0, _wrapPromise.wrapPromise)(this.ee);
|
|
53
|
+
const timerEE = (0, _wrapTimer.wrapTimer)(this.ee);
|
|
54
|
+
const xhrEE = (0, _wrapXhr.wrapXhr)(this.ee);
|
|
52
55
|
const eventsEE = this.ee.get('events'); // wrapXhr will call wrapEvents
|
|
53
|
-
const fetchEE = (0,
|
|
54
|
-
const historyEE = (0,
|
|
55
|
-
const mutationEE = (0,
|
|
56
|
+
const fetchEE = (0, _wrapFetch.wrapFetch)(this.ee);
|
|
57
|
+
const historyEE = (0, _wrapHistory.wrapHistory)(this.ee);
|
|
58
|
+
const mutationEE = (0, _wrapMutation.wrapMutation)(this.ee);
|
|
56
59
|
this.ee.on(FN_START, startTimestamp);
|
|
57
60
|
promiseEE.on(CB_START, startTimestamp);
|
|
58
61
|
jsonpEE.on(CB_START, startTimestamp);
|
|
59
62
|
this.ee.on(FN_END, endTimestamp);
|
|
60
63
|
promiseEE.on(CB_END, endTimestamp);
|
|
61
64
|
jsonpEE.on(CB_END, endTimestamp);
|
|
62
|
-
this.ee.on('fn-err',
|
|
63
|
-
|
|
64
|
-
args[_key] = arguments[_key];
|
|
65
|
-
}
|
|
66
|
-
if (!args[2]?.__newrelic?.[agentIdentifier]) (0, _handle.handle)('function-err', [...args], undefined, _this.featureName, _this.ee);
|
|
65
|
+
this.ee.on('fn-err', (...args) => {
|
|
66
|
+
if (!args[2]?.__newrelic?.[agentIdentifier]) (0, _handle.handle)('function-err', [...args], undefined, this.featureName, this.ee);
|
|
67
67
|
});
|
|
68
68
|
this.ee.buffer([FN_START, FN_END, 'xhr-resolved'], this.featureName);
|
|
69
69
|
eventsEE.buffer([FN_START], this.featureName);
|
|
@@ -119,4 +119,5 @@ class Instrument extends _instrumentBase.InstrumentBase {
|
|
|
119
119
|
this.abortHandler = undefined; // weakly allow this abort op to run only once
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
-
exports.Instrument = Instrument;
|
|
122
|
+
exports.Instrument = Instrument;
|
|
123
|
+
const Spa = exports.Spa = Instrument;
|
|
@@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.setupAgentSession = setupAgentSession;
|
|
7
|
-
var
|
|
7
|
+
var _info = require("../../common/config/info");
|
|
8
|
+
var _init = require("../../common/config/init");
|
|
9
|
+
var _runtime = require("../../common/config/runtime");
|
|
8
10
|
var _drain = require("../../common/drain/drain");
|
|
9
11
|
var _contextualEe = require("../../common/event-emitter/contextual-ee");
|
|
10
12
|
var _registerHandler = require("../../common/event-emitter/register-handler");
|
|
@@ -13,9 +15,9 @@ var _localStorage = require("../../common/storage/local-storage.js");
|
|
|
13
15
|
var _constants = require("../../common/session/constants");
|
|
14
16
|
let ranOnce = 0;
|
|
15
17
|
function setupAgentSession(agentIdentifier) {
|
|
16
|
-
const agentRuntime = (0,
|
|
18
|
+
const agentRuntime = (0, _runtime.getRuntime)(agentIdentifier);
|
|
17
19
|
if (ranOnce++) return agentRuntime.session;
|
|
18
|
-
const sessionInit = (0,
|
|
20
|
+
const sessionInit = (0, _init.getConfiguration)(agentIdentifier).session;
|
|
19
21
|
agentRuntime.session = new _sessionEntity.SessionEntity({
|
|
20
22
|
agentIdentifier,
|
|
21
23
|
key: _constants.DEFAULT_KEY,
|
|
@@ -26,7 +28,7 @@ function setupAgentSession(agentIdentifier) {
|
|
|
26
28
|
|
|
27
29
|
// Retrieve & re-add all of the persisted setCustomAttribute|setUserId k-v from previous page load(s), if any was stored.
|
|
28
30
|
const customSessionData = agentRuntime.session.state.custom;
|
|
29
|
-
const agentInfo = (0,
|
|
31
|
+
const agentInfo = (0, _info.getInfo)(agentIdentifier);
|
|
30
32
|
if (customSessionData) {
|
|
31
33
|
agentInfo.jsAttributes = {
|
|
32
34
|
...agentInfo.jsAttributes,
|
|
@@ -5,15 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.AggregateBase = void 0;
|
|
7
7
|
var _featureBase = require("./feature-base");
|
|
8
|
-
var
|
|
8
|
+
var _info = require("../../common/config/info");
|
|
9
|
+
var _runtime = require("../../common/config/runtime");
|
|
9
10
|
var _configure = require("../../loaders/configure/configure");
|
|
10
11
|
var _nreum = require("../../common/window/nreum");
|
|
11
12
|
var _drain = require("../../common/drain/drain");
|
|
12
13
|
var _featureFlags = require("../../common/util/feature-flags");
|
|
14
|
+
var _obfuscate = require("../../common/util/obfuscate");
|
|
13
15
|
class AggregateBase extends _featureBase.FeatureBase {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...
|
|
16
|
+
constructor(...args) {
|
|
17
|
+
super(...args);
|
|
16
18
|
this.checkConfiguration();
|
|
19
|
+
this.obfuscator = (0, _runtime.getRuntime)(this.agentIdentifier).obfuscator;
|
|
17
20
|
}
|
|
18
21
|
|
|
19
22
|
/**
|
|
@@ -21,14 +24,12 @@ class AggregateBase extends _featureBase.FeatureBase {
|
|
|
21
24
|
* @param {string[]} flagNames
|
|
22
25
|
* @returns {Promise}
|
|
23
26
|
*/
|
|
24
|
-
waitForFlags() {
|
|
25
|
-
let flagNames = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
27
|
+
waitForFlags(flagNames = []) {
|
|
26
28
|
const flagsPromise = new Promise((resolve, reject) => {
|
|
27
29
|
if (_featureFlags.activatedFeatures[this.agentIdentifier]) {
|
|
28
30
|
resolve(buildOutput(_featureFlags.activatedFeatures[this.agentIdentifier]));
|
|
29
31
|
} else {
|
|
30
|
-
this.ee.on('rumresp',
|
|
31
|
-
let resp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
32
|
+
this.ee.on('rumresp', (resp = {}) => {
|
|
32
33
|
resolve(buildOutput(resp));
|
|
33
34
|
});
|
|
34
35
|
}
|
|
@@ -41,6 +42,8 @@ class AggregateBase extends _featureBase.FeatureBase {
|
|
|
41
42
|
});
|
|
42
43
|
return flagsPromise.catch(err => {
|
|
43
44
|
this.ee.emit('internal-error', [err]);
|
|
45
|
+
this.blocked = true;
|
|
46
|
+
(0, _drain.deregisterDrain)(this.agentIdentifier, this.featureName);
|
|
44
47
|
});
|
|
45
48
|
}
|
|
46
49
|
drain() {
|
|
@@ -54,7 +57,7 @@ class AggregateBase extends _featureBase.FeatureBase {
|
|
|
54
57
|
*/
|
|
55
58
|
checkConfiguration() {
|
|
56
59
|
// NOTE: This check has to happen at aggregator load time
|
|
57
|
-
if (!(0,
|
|
60
|
+
if (!(0, _info.isValid)(this.agentIdentifier)) {
|
|
58
61
|
const cdn = (0, _nreum.gosCDN)();
|
|
59
62
|
let jsAttributes = {
|
|
60
63
|
...cdn.info?.jsAttributes
|
|
@@ -62,7 +65,7 @@ class AggregateBase extends _featureBase.FeatureBase {
|
|
|
62
65
|
try {
|
|
63
66
|
jsAttributes = {
|
|
64
67
|
...jsAttributes,
|
|
65
|
-
...(0,
|
|
68
|
+
...(0, _info.getInfo)(this.agentIdentifier)?.jsAttributes
|
|
66
69
|
};
|
|
67
70
|
} catch (err) {
|
|
68
71
|
// do nothing
|
|
@@ -75,9 +78,13 @@ class AggregateBase extends _featureBase.FeatureBase {
|
|
|
75
78
|
...cdn.info,
|
|
76
79
|
jsAttributes
|
|
77
80
|
},
|
|
78
|
-
runtime: (0,
|
|
81
|
+
runtime: (0, _runtime.getRuntime)(this.agentIdentifier)
|
|
79
82
|
});
|
|
80
83
|
}
|
|
84
|
+
const runtime = (0, _runtime.getRuntime)(this.agentIdentifier);
|
|
85
|
+
if (!runtime.obfuscator) {
|
|
86
|
+
runtime.obfuscator = new _obfuscate.Obfuscator(this.agentIdentifier);
|
|
87
|
+
}
|
|
81
88
|
}
|
|
82
89
|
}
|
|
83
90
|
exports.AggregateBase = AggregateBase;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.EventBuffer = void 0;
|
|
7
|
+
var _stringify = require("../../common/util/stringify");
|
|
8
|
+
var _agentConstants = require("../../common/constants/agent-constants");
|
|
9
|
+
/**
|
|
10
|
+
* A container that keeps an event buffer and size with helper methods
|
|
11
|
+
* @typedef {Object} EventBuffer
|
|
12
|
+
* @property {number} size
|
|
13
|
+
* @property {*[]} buffer
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A container that holds, evaluates, and merges event objects for harvesting
|
|
18
|
+
*/
|
|
19
|
+
class EventBuffer {
|
|
20
|
+
/** @type {Object[]} */
|
|
21
|
+
#buffer = [];
|
|
22
|
+
/** @type {number} */
|
|
23
|
+
#bytes = 0;
|
|
24
|
+
/** @type {EventBuffer} */
|
|
25
|
+
#held;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param {number=} maxPayloadSize
|
|
30
|
+
*/
|
|
31
|
+
constructor(maxPayloadSize = _agentConstants.MAX_PAYLOAD_SIZE) {
|
|
32
|
+
this.maxPayloadSize = maxPayloadSize;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* buffer is read only, use the helper methods to add or clear buffer data
|
|
37
|
+
*/
|
|
38
|
+
get buffer() {
|
|
39
|
+
return this.#buffer;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* bytes is read only, use the helper methods to add or clear buffer data
|
|
44
|
+
*/
|
|
45
|
+
get bytes() {
|
|
46
|
+
return this.#bytes;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* held is another event buffer
|
|
51
|
+
*/
|
|
52
|
+
get held() {
|
|
53
|
+
this.#held ??= new EventBuffer(this.maxPayloadSize);
|
|
54
|
+
return this.#held;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns a boolean indicating whether the current size and buffer contain valid data
|
|
59
|
+
* @returns {boolean}
|
|
60
|
+
*/
|
|
61
|
+
get hasData() {
|
|
62
|
+
return this.buffer.length > 0 && this.bytes > 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Adds an event object to the buffer while tallying size
|
|
67
|
+
* @param {Object} event the event object to add to the buffer
|
|
68
|
+
* @returns {EventBuffer} returns the event buffer for chaining
|
|
69
|
+
*/
|
|
70
|
+
add(event) {
|
|
71
|
+
const size = (0, _stringify.stringify)(event).length;
|
|
72
|
+
if (!this.canMerge(size)) return this;
|
|
73
|
+
this.#buffer.push(event);
|
|
74
|
+
this.#bytes += size;
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* clear the buffer data
|
|
80
|
+
* @returns {EventBuffer}
|
|
81
|
+
*/
|
|
82
|
+
clear() {
|
|
83
|
+
this.#bytes = 0;
|
|
84
|
+
this.#buffer = [];
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Hold the buffer data in a new (child) EventBuffer (.held) to unblock the main buffer.
|
|
90
|
+
* This action clears the main buffer
|
|
91
|
+
* @returns {EventBuffer}
|
|
92
|
+
*/
|
|
93
|
+
hold() {
|
|
94
|
+
this.held.merge(this);
|
|
95
|
+
this.clear();
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Prepend the held EventBuffer (.held) back into the main buffer
|
|
101
|
+
* This action clears the held buffer
|
|
102
|
+
* @returns {EventBuffer}
|
|
103
|
+
*/
|
|
104
|
+
unhold() {
|
|
105
|
+
this.merge(this.held, true);
|
|
106
|
+
this.held.clear();
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Merges an EventBuffer into this EventBuffer
|
|
112
|
+
* @param {EventBuffer} events an EventBuffer intended to merge with this EventBuffer
|
|
113
|
+
* @param {boolean} prepend if true, the supplied events will be prepended before the events of this class
|
|
114
|
+
* @returns {EventBuffer} returns the event buffer for chaining
|
|
115
|
+
*/
|
|
116
|
+
merge(eventBuffer, prepend = false) {
|
|
117
|
+
if (!this.canMerge(eventBuffer.bytes)) return this;
|
|
118
|
+
this.#buffer = prepend ? [...eventBuffer.buffer, ...this.#buffer] : [...this.#buffer, ...eventBuffer.buffer];
|
|
119
|
+
this.#bytes += eventBuffer.#bytes;
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Returns a boolean indicating the resulting size of a merge would be valid. Compares against the maxPayloadSize provided at initialization time.
|
|
125
|
+
* @param {number} size
|
|
126
|
+
* @returns {boolean}
|
|
127
|
+
*/
|
|
128
|
+
canMerge(size) {
|
|
129
|
+
return this.bytes + (size || Infinity) < this.maxPayloadSize;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.EventBuffer = EventBuffer;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.canEnableSessionTracking = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _init = require("../../common/config/init");
|
|
8
8
|
var _runtime = require("../../common/constants/runtime");
|
|
9
9
|
/**
|
|
10
10
|
* Checks if session can be tracked, affects session entity and dependent features
|
|
@@ -12,6 +12,6 @@ var _runtime = require("../../common/constants/runtime");
|
|
|
12
12
|
* @returns {boolean}
|
|
13
13
|
*/
|
|
14
14
|
const canEnableSessionTracking = agentId => {
|
|
15
|
-
return _runtime.isBrowserScope && (0,
|
|
15
|
+
return _runtime.isBrowserScope && (0, _init.getConfigurationValue)(agentId, 'privacy.cookies_enabled') === true;
|
|
16
16
|
};
|
|
17
17
|
exports.canEnableSessionTracking = canEnableSessionTracking;
|