@newrelic/browser-agent 1.295.0-rc.4 → 1.295.0-rc.6
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/wrap/wrap-events.js +2 -1
- package/dist/cjs/features/session_trace/aggregate/index.js +20 -21
- package/dist/cjs/features/session_trace/aggregate/trace/storage.js +198 -185
- package/dist/cjs/features/session_trace/aggregate/trace/utils.js +41 -0
- package/dist/cjs/features/session_trace/constants.js +3 -2
- package/dist/cjs/features/utils/aggregate-base.js +1 -2
- package/dist/cjs/features/utils/event-buffer.js +34 -3
- package/dist/cjs/features/utils/event-store-manager.js +18 -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/wrap/wrap-events.js +2 -1
- package/dist/esm/features/session_trace/aggregate/index.js +21 -21
- package/dist/esm/features/session_trace/aggregate/trace/storage.js +199 -186
- package/dist/esm/features/session_trace/aggregate/trace/utils.js +34 -0
- package/dist/esm/features/session_trace/constants.js +2 -1
- package/dist/esm/features/utils/aggregate-base.js +1 -2
- package/dist/esm/features/utils/event-buffer.js +34 -3
- package/dist/esm/features/utils/event-store-manager.js +18 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/common/wrap/wrap-events.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/index.d.ts +5 -10
- package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/trace/storage.d.ts +81 -39
- package/dist/types/features/session_trace/aggregate/trace/storage.d.ts.map +1 -1
- package/dist/types/features/session_trace/aggregate/trace/utils.d.ts +7 -0
- package/dist/types/features/session_trace/aggregate/trace/utils.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/utils/aggregate-base.d.ts.map +1 -1
- package/dist/types/features/utils/event-buffer.d.ts +18 -1
- package/dist/types/features/utils/event-buffer.d.ts.map +1 -1
- package/dist/types/features/utils/event-store-manager.d.ts +12 -0
- package/dist/types/features/utils/event-store-manager.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/common/wrap/wrap-events.js +2 -1
- package/src/features/session_trace/aggregate/index.js +23 -15
- package/src/features/session_trace/aggregate/trace/storage.js +186 -189
- package/src/features/session_trace/aggregate/trace/utils.js +35 -0
- package/src/features/session_trace/constants.js +1 -0
- package/src/features/utils/aggregate-base.js +1 -2
- package/src/features/utils/event-buffer.js +35 -3
- package/src/features/utils/event-store-manager.js +18 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.js","../src/cdn/experimental.js","../src/cdn/lite.js","../src/cdn/pro.js","../src/cdn/spa.js","../src/common/aggregate/aggregator.js","../src/common/aggregate/event-aggregator.js","../src/common/config/configurable.js","../src/common/config/info.js","../src/common/config/init-types.js","../src/common/config/init.js","../src/common/config/loader-config.js","../src/common/config/runtime.js","../src/common/constants/agent-constants.js","../src/common/constants/env.cdn.js","../src/common/constants/env.js","../src/common/constants/env.npm.js","../src/common/constants/runtime.js","../src/common/constants/shared-channel.js","../src/common/deny-list/deny-list.js","../src/common/dispatch/global-event.js","../src/common/dom/iframe.js","../src/common/dom/query-selector.js","../src/common/dom/selector-path.js","../src/common/drain/drain.js","../src/common/event-emitter/contextual-ee.js","../src/common/event-emitter/event-context.js","../src/common/event-emitter/handle.js","../src/common/event-emitter/register-handler.js","../src/common/event-listener/event-listener-opts.js","../src/common/harvest/harvester.js","../src/common/harvest/types.js","../src/common/ids/bundle-id.js","../src/common/ids/id.js","../src/common/ids/unique-id.js","../src/common/serialize/bel-serializer.js","../src/common/session/constants.js","../src/common/session/session-entity.js","../src/common/storage/local-storage.js","../src/common/timer/interaction-timer.js","../src/common/timer/timer.js","../src/common/timing/nav-timing.js","../src/common/timing/now.js","../src/common/timing/time-keeper.js","../src/common/unload/eol.js","../src/common/url/canonicalize-url.js","../src/common/url/clean-url.js","../src/common/url/encode.js","../src/common/url/location.js","../src/common/url/parse-url.js","../src/common/url/protocol.js","../src/common/util/attribute-size.js","../src/common/util/console.js","../src/common/util/data-size.js","../src/common/util/event-origin.js","../src/common/util/feature-flags.js","../src/common/util/get-or-set.js","../src/common/util/invoke.js","../src/common/util/monkey-patched.js","../src/common/util/obfuscate.js","../src/common/util/stringify.js","../src/common/util/submit-data.js","../src/common/util/target.js","../src/common/util/text.js","../src/common/util/traverse.js","../src/common/util/type-check.js","../src/common/vitals/constants.js","../src/common/vitals/cumulative-layout-shift.js","../src/common/vitals/first-contentful-paint.js","../src/common/vitals/first-paint.js","../src/common/vitals/interaction-to-next-paint.js","../src/common/vitals/largest-contentful-paint.js","../src/common/vitals/time-to-first-byte.js","../src/common/vitals/vital-metric.js","../src/common/window/load.js","../src/common/window/nreum.js","../src/common/window/page-visibility.js","../src/common/wrap/wrap-events.js","../src/common/wrap/wrap-fetch.js","../src/common/wrap/wrap-function.js","../src/common/wrap/wrap-history.js","../src/common/wrap/wrap-jsonp.js","../src/common/wrap/wrap-logger.js","../src/common/wrap/wrap-mutation.js","../src/common/wrap/wrap-promise.js","../src/common/wrap/wrap-timer.js","../src/common/wrap/wrap-websocket.js","../src/common/wrap/wrap-xhr.js","../src/features/ajax/constants.js","../src/features/ajax/index.js","../src/features/ajax/aggregate/gql.js","../src/features/ajax/aggregate/index.js","../src/features/ajax/instrument/distributed-tracing.js","../src/features/ajax/instrument/index.js","../src/features/ajax/instrument/response-size.js","../src/features/generic_events/constants.js","../src/features/generic_events/index.js","../src/features/generic_events/aggregate/index.js","../src/features/generic_events/aggregate/user-actions/aggregated-user-action.js","../src/features/generic_events/aggregate/user-actions/user-actions-aggregator.js","../src/features/generic_events/instrument/index.js","../src/features/jserrors/constants.js","../src/features/jserrors/index.js","../src/features/jserrors/aggregate/canonical-function-name.js","../src/features/jserrors/aggregate/cause-string.js","../src/features/jserrors/aggregate/compute-stack-trace.js","../src/features/jserrors/aggregate/format-stack-trace.js","../src/features/jserrors/aggregate/index.js","../src/features/jserrors/aggregate/internal-errors.js","../src/features/jserrors/aggregate/string-hash-code.js","../src/features/jserrors/instrument/index.js","../src/features/jserrors/shared/cast-error.js","../src/features/jserrors/shared/uncaught-error.js","../src/features/logging/constants.js","../src/features/logging/index.js","../src/features/logging/aggregate/index.js","../src/features/logging/instrument/index.js","../src/features/logging/shared/log.js","../src/features/logging/shared/utils.js","../src/features/metrics/constants.js","../src/features/metrics/index.js","../src/features/metrics/aggregate/framework-detection.js","../src/features/metrics/aggregate/index.js","../src/features/metrics/aggregate/websocket-detection.js","../src/features/metrics/instrument/index.js","../src/features/page_action/constants.js","../src/features/page_action/index.js","../src/features/page_action/instrument/index.js","../src/features/page_view_event/constants.js","../src/features/page_view_event/index.js","../src/features/page_view_event/aggregate/index.js","../src/features/page_view_event/aggregate/initialized-features.js","../src/features/page_view_event/instrument/index.js","../src/features/page_view_timing/constants.js","../src/features/page_view_timing/index.js","../src/features/page_view_timing/aggregate/index.js","../src/features/page_view_timing/instrument/index.js","../src/features/session_replay/constants.js","../src/features/session_replay/index.js","../src/features/session_replay/aggregate/index.js","../src/features/session_replay/instrument/index.js","../src/features/session_replay/shared/recorder-events.js","../src/features/session_replay/shared/recorder.js","../src/features/session_replay/shared/stylesheet-evaluator.js","../src/features/session_replay/shared/utils.js","../src/features/session_trace/constants.js","../src/features/session_trace/index.js","../src/features/session_trace/aggregate/index.js","../src/features/session_trace/aggregate/trace/node.js","../src/features/session_trace/aggregate/trace/storage.js","../src/features/session_trace/instrument/index.js","../src/features/soft_navigations/constants.js","../src/features/soft_navigations/index.js","../src/features/soft_navigations/aggregate/ajax-node.js","../src/features/soft_navigations/aggregate/bel-node.js","../src/features/soft_navigations/aggregate/index.js","../src/features/soft_navigations/aggregate/initial-page-load-interaction.js","../src/features/soft_navigations/aggregate/interaction.js","../src/features/soft_navigations/instrument/index.js","../src/features/spa/constants.js","../src/features/spa/index.js","../src/features/spa/aggregate/index.js","../src/features/spa/aggregate/interaction-node.js","../src/features/spa/aggregate/interaction.js","../src/features/spa/aggregate/serializer.js","../src/features/spa/instrument/index.js","../src/features/utils/agent-session.js","../src/features/utils/aggregate-base.js","../src/features/utils/entity-manager.js","../src/features/utils/event-buffer.js","../src/features/utils/event-store-manager.js","../src/features/utils/feature-base.js","../src/features/utils/feature-gates.js","../src/features/utils/instrument-base.js","../src/features/utils/nr1-debugger.js","../src/interfaces/registered-entity.js","../src/loaders/agent-base.js","../src/loaders/agent.js","../src/loaders/api-base.js","../src/loaders/browser-agent.js","../src/loaders/micro-agent-base.js","../src/loaders/micro-agent.js","../src/loaders/api/addPageAction.js","../src/loaders/api/addRelease.js","../src/loaders/api/addToTrace.js","../src/loaders/api/constants.js","../src/loaders/api/finished.js","../src/loaders/api/interaction-types.js","../src/loaders/api/interaction.js","../src/loaders/api/log.js","../src/loaders/api/measure.js","../src/loaders/api/noticeError.js","../src/loaders/api/pauseReplay.js","../src/loaders/api/recordCustomEvent.js","../src/loaders/api/recordReplay.js","../src/loaders/api/register-api-types.js","../src/loaders/api/register-api.js","../src/loaders/api/register.js","../src/loaders/api/setApplicationVersion.js","../src/loaders/api/setCustomAttribute.js","../src/loaders/api/setErrorHandler.js","../src/loaders/api/setPageViewName.js","../src/loaders/api/setUserId.js","../src/loaders/api/sharedHandlers.js","../src/loaders/api/start.js","../src/loaders/api/topLevelCallers.js","../src/loaders/api/wrapLogger.js","../src/loaders/configure/configure.js","../src/loaders/configure/nonce.js","../src/loaders/configure/public-path.js","../src/loaders/features/enabled-features.js","../src/loaders/features/featureDependencies.js","../src/loaders/features/features.js"],"version":"5.7.3"}
|
|
1
|
+
{"root":["../src/index.js","../src/cdn/experimental.js","../src/cdn/lite.js","../src/cdn/pro.js","../src/cdn/spa.js","../src/common/aggregate/aggregator.js","../src/common/aggregate/event-aggregator.js","../src/common/config/configurable.js","../src/common/config/info.js","../src/common/config/init-types.js","../src/common/config/init.js","../src/common/config/loader-config.js","../src/common/config/runtime.js","../src/common/constants/agent-constants.js","../src/common/constants/env.cdn.js","../src/common/constants/env.js","../src/common/constants/env.npm.js","../src/common/constants/runtime.js","../src/common/constants/shared-channel.js","../src/common/deny-list/deny-list.js","../src/common/dispatch/global-event.js","../src/common/dom/iframe.js","../src/common/dom/query-selector.js","../src/common/dom/selector-path.js","../src/common/drain/drain.js","../src/common/event-emitter/contextual-ee.js","../src/common/event-emitter/event-context.js","../src/common/event-emitter/handle.js","../src/common/event-emitter/register-handler.js","../src/common/event-listener/event-listener-opts.js","../src/common/harvest/harvester.js","../src/common/harvest/types.js","../src/common/ids/bundle-id.js","../src/common/ids/id.js","../src/common/ids/unique-id.js","../src/common/serialize/bel-serializer.js","../src/common/session/constants.js","../src/common/session/session-entity.js","../src/common/storage/local-storage.js","../src/common/timer/interaction-timer.js","../src/common/timer/timer.js","../src/common/timing/nav-timing.js","../src/common/timing/now.js","../src/common/timing/time-keeper.js","../src/common/unload/eol.js","../src/common/url/canonicalize-url.js","../src/common/url/clean-url.js","../src/common/url/encode.js","../src/common/url/location.js","../src/common/url/parse-url.js","../src/common/url/protocol.js","../src/common/util/attribute-size.js","../src/common/util/console.js","../src/common/util/data-size.js","../src/common/util/event-origin.js","../src/common/util/feature-flags.js","../src/common/util/get-or-set.js","../src/common/util/invoke.js","../src/common/util/monkey-patched.js","../src/common/util/obfuscate.js","../src/common/util/stringify.js","../src/common/util/submit-data.js","../src/common/util/target.js","../src/common/util/text.js","../src/common/util/traverse.js","../src/common/util/type-check.js","../src/common/vitals/constants.js","../src/common/vitals/cumulative-layout-shift.js","../src/common/vitals/first-contentful-paint.js","../src/common/vitals/first-paint.js","../src/common/vitals/interaction-to-next-paint.js","../src/common/vitals/largest-contentful-paint.js","../src/common/vitals/time-to-first-byte.js","../src/common/vitals/vital-metric.js","../src/common/window/load.js","../src/common/window/nreum.js","../src/common/window/page-visibility.js","../src/common/wrap/wrap-events.js","../src/common/wrap/wrap-fetch.js","../src/common/wrap/wrap-function.js","../src/common/wrap/wrap-history.js","../src/common/wrap/wrap-jsonp.js","../src/common/wrap/wrap-logger.js","../src/common/wrap/wrap-mutation.js","../src/common/wrap/wrap-promise.js","../src/common/wrap/wrap-timer.js","../src/common/wrap/wrap-websocket.js","../src/common/wrap/wrap-xhr.js","../src/features/ajax/constants.js","../src/features/ajax/index.js","../src/features/ajax/aggregate/gql.js","../src/features/ajax/aggregate/index.js","../src/features/ajax/instrument/distributed-tracing.js","../src/features/ajax/instrument/index.js","../src/features/ajax/instrument/response-size.js","../src/features/generic_events/constants.js","../src/features/generic_events/index.js","../src/features/generic_events/aggregate/index.js","../src/features/generic_events/aggregate/user-actions/aggregated-user-action.js","../src/features/generic_events/aggregate/user-actions/user-actions-aggregator.js","../src/features/generic_events/instrument/index.js","../src/features/jserrors/constants.js","../src/features/jserrors/index.js","../src/features/jserrors/aggregate/canonical-function-name.js","../src/features/jserrors/aggregate/cause-string.js","../src/features/jserrors/aggregate/compute-stack-trace.js","../src/features/jserrors/aggregate/format-stack-trace.js","../src/features/jserrors/aggregate/index.js","../src/features/jserrors/aggregate/internal-errors.js","../src/features/jserrors/aggregate/string-hash-code.js","../src/features/jserrors/instrument/index.js","../src/features/jserrors/shared/cast-error.js","../src/features/jserrors/shared/uncaught-error.js","../src/features/logging/constants.js","../src/features/logging/index.js","../src/features/logging/aggregate/index.js","../src/features/logging/instrument/index.js","../src/features/logging/shared/log.js","../src/features/logging/shared/utils.js","../src/features/metrics/constants.js","../src/features/metrics/index.js","../src/features/metrics/aggregate/framework-detection.js","../src/features/metrics/aggregate/index.js","../src/features/metrics/aggregate/websocket-detection.js","../src/features/metrics/instrument/index.js","../src/features/page_action/constants.js","../src/features/page_action/index.js","../src/features/page_action/instrument/index.js","../src/features/page_view_event/constants.js","../src/features/page_view_event/index.js","../src/features/page_view_event/aggregate/index.js","../src/features/page_view_event/aggregate/initialized-features.js","../src/features/page_view_event/instrument/index.js","../src/features/page_view_timing/constants.js","../src/features/page_view_timing/index.js","../src/features/page_view_timing/aggregate/index.js","../src/features/page_view_timing/instrument/index.js","../src/features/session_replay/constants.js","../src/features/session_replay/index.js","../src/features/session_replay/aggregate/index.js","../src/features/session_replay/instrument/index.js","../src/features/session_replay/shared/recorder-events.js","../src/features/session_replay/shared/recorder.js","../src/features/session_replay/shared/stylesheet-evaluator.js","../src/features/session_replay/shared/utils.js","../src/features/session_trace/constants.js","../src/features/session_trace/index.js","../src/features/session_trace/aggregate/index.js","../src/features/session_trace/aggregate/trace/node.js","../src/features/session_trace/aggregate/trace/storage.js","../src/features/session_trace/aggregate/trace/utils.js","../src/features/session_trace/instrument/index.js","../src/features/soft_navigations/constants.js","../src/features/soft_navigations/index.js","../src/features/soft_navigations/aggregate/ajax-node.js","../src/features/soft_navigations/aggregate/bel-node.js","../src/features/soft_navigations/aggregate/index.js","../src/features/soft_navigations/aggregate/initial-page-load-interaction.js","../src/features/soft_navigations/aggregate/interaction.js","../src/features/soft_navigations/instrument/index.js","../src/features/spa/constants.js","../src/features/spa/index.js","../src/features/spa/aggregate/index.js","../src/features/spa/aggregate/interaction-node.js","../src/features/spa/aggregate/interaction.js","../src/features/spa/aggregate/serializer.js","../src/features/spa/instrument/index.js","../src/features/utils/agent-session.js","../src/features/utils/aggregate-base.js","../src/features/utils/entity-manager.js","../src/features/utils/event-buffer.js","../src/features/utils/event-store-manager.js","../src/features/utils/feature-base.js","../src/features/utils/feature-gates.js","../src/features/utils/instrument-base.js","../src/features/utils/nr1-debugger.js","../src/interfaces/registered-entity.js","../src/loaders/agent-base.js","../src/loaders/agent.js","../src/loaders/api-base.js","../src/loaders/browser-agent.js","../src/loaders/micro-agent-base.js","../src/loaders/micro-agent.js","../src/loaders/api/addPageAction.js","../src/loaders/api/addRelease.js","../src/loaders/api/addToTrace.js","../src/loaders/api/constants.js","../src/loaders/api/finished.js","../src/loaders/api/interaction-types.js","../src/loaders/api/interaction.js","../src/loaders/api/log.js","../src/loaders/api/measure.js","../src/loaders/api/noticeError.js","../src/loaders/api/pauseReplay.js","../src/loaders/api/recordCustomEvent.js","../src/loaders/api/recordReplay.js","../src/loaders/api/register-api-types.js","../src/loaders/api/register-api.js","../src/loaders/api/register.js","../src/loaders/api/setApplicationVersion.js","../src/loaders/api/setCustomAttribute.js","../src/loaders/api/setErrorHandler.js","../src/loaders/api/setPageViewName.js","../src/loaders/api/setUserId.js","../src/loaders/api/sharedHandlers.js","../src/loaders/api/start.js","../src/loaders/api/topLevelCallers.js","../src/loaders/api/wrapLogger.js","../src/loaders/configure/configure.js","../src/loaders/configure/nonce.js","../src/loaders/configure/public-path.js","../src/loaders/features/enabled-features.js","../src/loaders/features/featureDependencies.js","../src/loaders/features/features.js"],"version":"5.7.3"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrap-events.d.ts","sourceRoot":"","sources":["../../../../src/common/wrap/wrap-events.js"],"names":[],"mappings":"AAqBA;;;;;;GAMG;AACH,qCAJW,MAAM,GAEJ,MAAM,
|
|
1
|
+
{"version":3,"file":"wrap-events.d.ts","sourceRoot":"","sources":["../../../../src/common/wrap/wrap-events.js"],"names":[],"mappings":"AAqBA;;;;;;GAMG;AACH,qCAJW,MAAM,GAEJ,MAAM,CA0DlB;AAeD;;;;;;GAMG;AACH,mCAJW,MAAM,GAEJ,MAAM,CAIlB"}
|
|
@@ -7,8 +7,8 @@ export class Aggregate extends AggregateBase {
|
|
|
7
7
|
everHarvested: boolean;
|
|
8
8
|
/** If the harvest module is harvesting */
|
|
9
9
|
harvesting: boolean;
|
|
10
|
-
/** TraceStorage is
|
|
11
|
-
|
|
10
|
+
/** TraceStorage is a middleware that decides how to format data before passing events to `this.events` */
|
|
11
|
+
traceStorage: TraceStorage;
|
|
12
12
|
/** Sets up event listeners, and initializes this module to run in the correct "mode". Can be triggered from a few places, but makes an effort to only set up listeners once */
|
|
13
13
|
initialize(stMode: any, stEntitled: any, ignoreSession: any): void;
|
|
14
14
|
initialized: boolean | undefined;
|
|
@@ -17,14 +17,8 @@ export class Aggregate extends AggregateBase {
|
|
|
17
17
|
sessionId: any;
|
|
18
18
|
mode: any;
|
|
19
19
|
preHarvestChecks(): true | undefined;
|
|
20
|
-
serializer(
|
|
21
|
-
|
|
22
|
-
}): Object | undefined;
|
|
23
|
-
queryStringsBuilder({ stns, earliestTimeStamp, latestTimeStamp }: {
|
|
24
|
-
stns: any;
|
|
25
|
-
earliestTimeStamp: any;
|
|
26
|
-
latestTimeStamp: any;
|
|
27
|
-
}): {
|
|
20
|
+
serializer(stns: any): Object | undefined;
|
|
21
|
+
queryStringsBuilder(stns: any): {
|
|
28
22
|
browser_monitoring_key: any;
|
|
29
23
|
type: string;
|
|
30
24
|
app_id: any;
|
|
@@ -36,6 +30,7 @@ export class Aggregate extends AggregateBase {
|
|
|
36
30
|
switchToFull(): void;
|
|
37
31
|
/** Stop running for the remainder of the page lifecycle */
|
|
38
32
|
abort(code: any): void;
|
|
33
|
+
postHarvestCleanup(result: any): void;
|
|
39
34
|
}
|
|
40
35
|
import { AggregateBase } from '../../utils/aggregate-base';
|
|
41
36
|
import { TraceStorage } from './trace/storage';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/session_trace/aggregate/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/session_trace/aggregate/index.js"],"names":[],"mappings":"AAiBA;IACE,2BAAiC;IAEjC,2BAgBC;IAZC,0GAA0G;IAC1G,cAAyB;IACzB,mIAAmI;IACnI,uBAA0B;IAC1B,0CAA0C;IAC1C,oBAAuB;IACvB,0GAA0G;IAC1G,2BAA0C;IAO5C,gLAAgL;IAChL,mEA8DC;IAxDG,iCAAuB;IACvB,yJAAyJ;IACzJ,UAAsC;IACtC,eAA2D;IAyBD,UAAgE;IA8B9H,qCAWC;IAED,0CAIC;IAED;;;;;;;MAgDC;IAED,8DAA8D;IAC9D,qBAUC;IAED,2DAA2D;IAC3D,uBAMC;IAED,sCAGC;CACF;8BAhM6B,4BAA4B;6BAC7B,iBAAiB"}
|
|
@@ -1,48 +1,90 @@
|
|
|
1
|
-
/** The purpose of this class is to manage, normalize, and
|
|
1
|
+
/** The purpose of this class is to manage, normalize, and drop various ST nodes as needed without polluting the main ST modules */
|
|
2
2
|
export class TraceStorage {
|
|
3
3
|
constructor(parent: any);
|
|
4
|
-
|
|
5
|
-
trace: {};
|
|
6
|
-
earliestTimeStamp: number;
|
|
7
|
-
latestTimeStamp: number;
|
|
4
|
+
/** prevents duplication of event nodes by keeping a reference of each one seen per harvest cycle */
|
|
8
5
|
prevStoredEvents: Set<any>;
|
|
9
6
|
parent: any;
|
|
10
7
|
/**
|
|
11
|
-
*
|
|
12
|
-
* @param {
|
|
13
|
-
* @returns {
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
8
|
+
* Stores a new trace node in the event buffer.
|
|
9
|
+
* @param {TraceNode} node
|
|
10
|
+
* @returns {boolean} true if the node was successfully stored, false otherwise
|
|
11
|
+
*/
|
|
12
|
+
storeNode(node: TraceNode): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Processes a PVT (Page Visibility Timing) entry.
|
|
15
|
+
* @param {*} name
|
|
16
|
+
* @param {*} value
|
|
17
|
+
* @param {*} attrs
|
|
18
|
+
* @returns {boolean} true if the node was successfully stored, false otherwise
|
|
19
|
+
*/
|
|
20
|
+
processPVT(name: any, value: any, attrs: any): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Stores a timing entry in the event buffer.
|
|
23
|
+
* @param {*} timingEntry
|
|
24
|
+
* @param {*} isAbsoluteTimestamp
|
|
25
|
+
* @returns {boolean} true if ALL possible nodes were successfully stored, false otherwise
|
|
26
|
+
*/
|
|
27
|
+
storeTiming(timingEntry: any, isAbsoluteTimestamp?: any): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Tracks the events and their listener's duration on objects wrapped by wrap-events.
|
|
30
|
+
* @param {*} currentEvent - the event to be stored
|
|
31
|
+
* @param {*} target - the target of the event
|
|
32
|
+
* @param {*} start - the start time of the event
|
|
33
|
+
* @param {*} end - the end time of the event
|
|
34
|
+
* @returns {boolean} true if the event was successfully stored, false otherwise
|
|
35
|
+
*/
|
|
36
|
+
storeEvent(currentEvent: any, target: any, start: any, end: any): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Tracks when the window history API specified by wrap-history is used.
|
|
39
|
+
* @param {*} path
|
|
40
|
+
* @param {*} old
|
|
41
|
+
* @param {*} time
|
|
42
|
+
* @returns {boolean} true if the history node was successfully stored, false otherwise
|
|
43
|
+
*/
|
|
44
|
+
storeHist(path: any, old: any, time: any): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Processes all the PerformanceResourceTiming entries captured (by observer).
|
|
47
|
+
* @param {*[]} resources
|
|
48
|
+
* @returns {boolean} true if all resource nodes were successfully stored, false otherwise
|
|
49
|
+
*/
|
|
50
|
+
storeResources(resources: any[]): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* JavascriptError (FEATURE) events pipes into ST here.
|
|
53
|
+
* @param {*} type
|
|
54
|
+
* @param {*} name
|
|
55
|
+
* @param {*} params
|
|
56
|
+
* @param {*} metrics
|
|
57
|
+
* @returns {boolean} true if the error node was successfully stored, false otherwise
|
|
58
|
+
*/
|
|
59
|
+
storeErrorAgg(type: any, name: any, params: any, metrics: any): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Ajax (FEATURE) events--XML & fetches--pipes into ST here.
|
|
62
|
+
* @param {*} type
|
|
63
|
+
* @param {*} name
|
|
64
|
+
* @param {*} params
|
|
65
|
+
* @param {*} metrics
|
|
66
|
+
* @returns {boolean} true if the Ajax node was successfully stored, false otherwise
|
|
67
|
+
*/
|
|
68
|
+
storeXhrAgg(type: any, name: any, params: any, metrics: any): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Trims stored trace nodes in the event buffer by start time.
|
|
71
|
+
* @param {number} lookbackDuration
|
|
72
|
+
* @returns {void}
|
|
73
|
+
*/
|
|
74
|
+
trimSTNsByTime(lookbackDuration?: number): void;
|
|
75
|
+
/**
|
|
76
|
+
* Trims stored trace nodes in the event buffer before a given index value.
|
|
77
|
+
* @param {number} index
|
|
78
|
+
* @returns {void}
|
|
79
|
+
*/
|
|
80
|
+
trimSTNsByIndex(index?: number): void;
|
|
81
|
+
/**
|
|
82
|
+
* clears the stored events in the event buffer.
|
|
83
|
+
* This is used to release references to past events for garbage collection.
|
|
84
|
+
* @returns {void}
|
|
85
|
+
*/
|
|
43
86
|
clear(): void;
|
|
44
|
-
reloadSave(): void;
|
|
45
|
-
clearSave(): void;
|
|
46
87
|
#private;
|
|
47
88
|
}
|
|
89
|
+
import { TraceNode } from './node';
|
|
48
90
|
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../../src/features/session_trace/aggregate/trace/storage.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../../src/features/session_trace/aggregate/trace/storage.js"],"names":[],"mappings":"AA2CA,mIAAmI;AACnI;IAIE,yBAEC;IALD,oGAAoG;IACpG,2BAA4B;IAG1B,YAAoB;IA8EtB;;;;OAIG;IACH,gBAHW,SAAS,GACP,OAAO,CAInB;IAED;;;;;;OAMG;IACH,iBALW,GAAC,SACD,GAAC,SACD,GAAC,GACC,OAAO,CAInB;IAED;;;;;OAKG;IACH,yBAJW,GAAC,wBACD,GAAC,GACC,OAAO,CA2BnB;IAED;;;;;;;OAOG;IACH,yBANW,GAAC,UACD,GAAC,SACD,GAAC,OACD,GAAC,GACC,OAAO,CAmBnB;IAED;;;;;;OAMG;IACH,gBALW,GAAC,OACD,GAAC,QACD,GAAC,GACC,OAAO,CAInB;IAED;;;;OAIG;IACH,0BAHW,GAAC,EAAE,GACD,OAAO,CAkBnB;IAED;;;;;;;OAOG;IACH,oBANW,GAAC,QACD,GAAC,UACD,GAAC,WACD,GAAC,GACC,OAAO,CAKnB;IAED;;;;;;;OAOG;IACH,kBANW,GAAC,QACD,GAAC,UACD,GAAC,WACD,GAAC,GACC,OAAO,CAKnB;IAED;;;;OAIG;IACH,kCAHW,MAAM,GACJ,IAAI,CAOhB;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,IAAI,CAMhB;IAED;;;;OAIG;IACH,SAFa,IAAI,CAIhB;;CACF;0BAjSyB,QAAQ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/features/session_trace/aggregate/trace/utils.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wCAyBC;AAED,8CAGC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/features/session_trace/constants.js"],"names":[],"mappings":"AAMA,kCAAsD;AACtD,2BAA4B,aAAa,CAAA;AACzC,uBAAwB,UAAU,CAAA;AAClC,oBAAqB,QAAQ,CAAA;AAC7B,kBAAmB,MAAM,CAAA;AACzB,8BAAoC;AACpC,4BAAgC;AAChC,yBAA0B,WAAW,CAAA;AACrC,oCAAqC,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/features/session_trace/constants.js"],"names":[],"mappings":"AAMA,kCAAsD;AACtD,2BAA4B,aAAa,CAAA;AACzC,uBAAwB,UAAU,CAAA;AAClC,oBAAqB,QAAQ,CAAA;AAC7B,kBAAmB,MAAM,CAAA;AACzB,8BAAoC;AACpC,4BAAgC;AAChC,yBAA0B,WAAW,CAAA;AACrC,oCAAqC,IAAI,CAAA;AACzC,+CAAkD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate-base.d.ts","sourceRoot":"","sources":["../../../../src/features/utils/aggregate-base.js"],"names":[],"mappings":"AAsBA;IACE;;;;OAIG;IACH,sBAHW,MAAM,eACN,MAAM,EAyBhB;IArBC,iBAAwB;IAIxB,uOAAuO;IACvO,qCAAwC;IACxC,gLAAgL;IAChL,yBAA2B;IAE3B,gBAAqB;
|
|
1
|
+
{"version":3,"file":"aggregate-base.d.ts","sourceRoot":"","sources":["../../../../src/features/utils/aggregate-base.js"],"names":[],"mappings":"AAsBA;IACE;;;;OAIG;IACH,sBAHW,MAAM,eACN,MAAM,EAyBhB;IArBC,iBAAwB;IAIxB,uOAAuO;IACvO,qCAAwC;IACxC,gLAAgL;IAChL,yBAA2B;IAE3B,gBAAqB;IA4BjB,YAAwJ;IAW9J;;;;OAIG;IACH,2BAOC;IAED;;;;OAIG;IACH,yBAHW,MAAM,EAAE,gBAwBlB;IAED;;OAEG;IACH,cAGC;IADC,6BAAmB;IAGrB,qCAEC;IAED;;;;;;OAMG;IACH,uDAJW,MAAM,GAAC,SAAS,SAyB1B;IAED;;;;;;;OAOG;IACH,4BALG;QAAwB,SAAS,GAAzB,MAAM,YAAC;KACf,QAQF;IAED;;;OAGG;IACH,6CAsBC;IAED;;;OAGG;IACH,2CAOC;IALC,gBAA6C;IAO/C;;;;OAIG;IACH,uCAHW,GAAC,UACD,GAAC,QAIX;;CACF;4BA7N2B,gBAAgB"}
|
|
@@ -7,6 +7,7 @@ export class EventBuffer {
|
|
|
7
7
|
constructor(maxPayloadSize?: number, featureAgg?: Object);
|
|
8
8
|
maxPayloadSize: number;
|
|
9
9
|
featureAgg: Object | undefined;
|
|
10
|
+
get length(): number;
|
|
10
11
|
isEmpty(): boolean;
|
|
11
12
|
get(): any[];
|
|
12
13
|
byteSize(): number;
|
|
@@ -17,10 +18,26 @@ export class EventBuffer {
|
|
|
17
18
|
* @returns {Boolean} true if successfully added; false otherwise
|
|
18
19
|
*/
|
|
19
20
|
add(event: any): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Merges events in the buffer that match the given criteria.
|
|
23
|
+
* @param {Function} matcher - A function that takes an event and returns true if it should be merged.
|
|
24
|
+
* @param {Object} data - The data to merge into the matching events.
|
|
25
|
+
* @returns {boolean} true if a match was found and merged; false otherwise.
|
|
26
|
+
*/
|
|
27
|
+
merge(matcher: Function, data: Object): boolean;
|
|
20
28
|
/**
|
|
21
29
|
* Wipes the main buffer
|
|
30
|
+
* @param {Object} [opts] - options for clearing the buffer
|
|
31
|
+
* @param {Number} [opts.clearBeforeTime] - timestamp before which all events should be cleared
|
|
32
|
+
* @param {String} [opts.timestampKey] - the key in the event object that contains the timestamp to compare against `clearBefore`
|
|
33
|
+
* @param {Number} [opts.clearBeforeIndex] - index before which all events should be cleared
|
|
34
|
+
* @returns {void}
|
|
22
35
|
*/
|
|
23
|
-
clear(
|
|
36
|
+
clear(opts?: {
|
|
37
|
+
clearBeforeTime?: number | undefined;
|
|
38
|
+
timestampKey?: string | undefined;
|
|
39
|
+
clearBeforeIndex?: number | undefined;
|
|
40
|
+
}): void;
|
|
24
41
|
/**
|
|
25
42
|
* Backup the buffered data and clear the main buffer
|
|
26
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-buffer.d.ts","sourceRoot":"","sources":["../../../../src/features/utils/event-buffer.js"],"names":[],"mappings":"AAOA;IAME;;;;OAIG;IACH,kDAFW,MAAM,EAKhB;IAFC,uBAAoC;IACpC,+BAA4B;IAG9B,mBAEC;IAED,aAEC;IAED,mBAEC;IAED,+CAEC;IAED;;;;OAIG;IACH,WAHW,GAAG,WAeb;IAED
|
|
1
|
+
{"version":3,"file":"event-buffer.d.ts","sourceRoot":"","sources":["../../../../src/features/utils/event-buffer.js"],"names":[],"mappings":"AAOA;IAME;;;;OAIG;IACH,kDAFW,MAAM,EAKhB;IAFC,uBAAoC;IACpC,+BAA4B;IAG9B,qBAEC;IAED,mBAEC;IAED,aAEC;IAED,mBAEC;IAED,+CAEC;IAED;;;;OAIG;IACH,WAHW,GAAG,WAeb;IAED;;;;;KAKC;IACD,+BAHS,MAAM,GACJ,OAAO,CAWjB;IAED;;;;;;;OAOG;IACH,aALG;QAAsB,eAAe;QACf,YAAY;QACZ,gBAAgB;KACtC,GAAU,IAAI,CAWhB;IAED;;OAEG;IACH,aAGC;IAED;;OAEG;IACH,kBAGC;IAED;;OAEG;IACH,mBAKC;;CACF"}
|
|
@@ -16,6 +16,18 @@ export class EventStoreManager {
|
|
|
16
16
|
appStorageMap: Map<string, any>;
|
|
17
17
|
featureAgg: Object;
|
|
18
18
|
setEventStore(targetEntityGuid: any): void;
|
|
19
|
+
/** IMPORTANT
|
|
20
|
+
* This class must contain an union of all methods from all supported storage classes and conceptualize away the target app argument.
|
|
21
|
+
*/
|
|
22
|
+
get length(): any;
|
|
23
|
+
/**
|
|
24
|
+
* Calls the merge method on the underlying storage class.
|
|
25
|
+
* @param {*} matcher
|
|
26
|
+
* @param {*} data
|
|
27
|
+
* @param {*} targetEntityGuid
|
|
28
|
+
* @returns {boolean} True if the merge was successful
|
|
29
|
+
*/
|
|
30
|
+
merge(matcher: any, data: any, targetEntityGuid: any): boolean;
|
|
19
31
|
/**
|
|
20
32
|
* Calls the isEmpty method on the underlying storage class. If target is provided, runs just for the target, otherwise runs for all apps.
|
|
21
33
|
* @param {object} optsIfPresent - exists if called during harvest interval, @see AggregateBase.makeHarvestPayload
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store-manager.d.ts","sourceRoot":"","sources":["../../../../src/features/utils/event-store-manager.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH;IACE;;;;;OAKG;IACH,sBALW,MAAM,gBACN,WAAW,GAAC,eAAe,sBAC3B,MAAM,cACN,MAAM,EAShB;IANC,iBAAwB;IACxB,mBAAmD;IACnD,kBAAgC;IAChC,gCAAkG;IAClG,mBAA4B;IAc9B,2CAQC;
|
|
1
|
+
{"version":3,"file":"event-store-manager.d.ts","sourceRoot":"","sources":["../../../../src/features/utils/event-store-manager.js"],"names":[],"mappings":"AAMA;;;GAGG;AACH;IACE;;;;;OAKG;IACH,sBALW,MAAM,gBACN,WAAW,GAAC,eAAe,sBAC3B,MAAM,cACN,MAAM,EAShB;IANC,iBAAwB;IACxB,mBAAmD;IACnD,kBAAgC;IAChC,gCAAkG;IAClG,mBAA4B;IAc9B,2CAQC;IAED;;OAEG;IAEH,kBAEC;IAED;;;;;;OAMG;IACH,eALW,GAAC,QACD,GAAC,oBACD,GAAC,GACC,OAAO,CAInB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,0BAEJ,OAAO,CASnB;IAED;;;;;OAKG;IACH,WAJW,MAAM,oBACN,MAAM,GACJ,OAAO,CAInB;IAED,0GAA0G;IAC1G,8DAEC;IAED;;;;;OAKG;IACH,WAJW,MAAM,YAAC,gCAgBjB;IAED;;;;OAIG;IACH,2BAHW,GAAC,OAKX;IAED;;;;;OAKG;IACH,iCAJW,GAAC,oBACD,GAAC,OAKX;IAED;;;;;OAKG;IACH,oBAJW,GAAC,oBACD,GAAC,OAMX;IAED;;;;;OAKG;IACH,qBAJW,GAAC,oBACD,GAAC,OAMX;IAGD,2DAEC;IAED,0DAEC;;CACF"}
|
package/package.json
CHANGED
|
@@ -45,7 +45,8 @@ export function wrapEvents (sharedEE) {
|
|
|
45
45
|
ee.on(ADD_EVENT_LISTENER + '-start', function (args, target) {
|
|
46
46
|
var originalListener = args[1]
|
|
47
47
|
if (originalListener === null ||
|
|
48
|
-
(typeof originalListener !== 'function' && typeof originalListener !== 'object')
|
|
48
|
+
(typeof originalListener !== 'function' && typeof originalListener !== 'object') ||
|
|
49
|
+
(args[0] === 'newrelic') // ignore our own window events
|
|
49
50
|
) {
|
|
50
51
|
return
|
|
51
52
|
}
|
|
@@ -13,7 +13,6 @@ import { applyFnToProps } from '../../../common/util/traverse'
|
|
|
13
13
|
import { cleanURL } from '../../../common/url/clean-url'
|
|
14
14
|
import { warn } from '../../../common/util/console'
|
|
15
15
|
|
|
16
|
-
const ERROR_MODE_SECONDS_WINDOW = 30 * 1000 // sliding window of nodes to track when simply monitoring (but not harvesting) in error mode
|
|
17
16
|
/** Reserved room for query param attrs */
|
|
18
17
|
const QUERY_PARAM_PADDING = 5000
|
|
19
18
|
export class Aggregate extends AggregateBase {
|
|
@@ -29,8 +28,8 @@ export class Aggregate extends AggregateBase {
|
|
|
29
28
|
this.everHarvested = false
|
|
30
29
|
/** If the harvest module is harvesting */
|
|
31
30
|
this.harvesting = false
|
|
32
|
-
/** TraceStorage is
|
|
33
|
-
this.
|
|
31
|
+
/** TraceStorage is a middleware that decides how to format data before passing events to `this.events` */
|
|
32
|
+
this.traceStorage = new TraceStorage(this)
|
|
34
33
|
|
|
35
34
|
/* This agg needs information about sampling (sts) and entitlements (st) to make the appropriate decisions on running */
|
|
36
35
|
this.waitForFlags(['sts', 'st'])
|
|
@@ -64,9 +63,9 @@ export class Aggregate extends AggregateBase {
|
|
|
64
63
|
})
|
|
65
64
|
|
|
66
65
|
if (typeof PerformanceNavigationTiming !== 'undefined') {
|
|
67
|
-
this.
|
|
66
|
+
this.traceStorage.storeTiming(globalScope.performance?.getEntriesByType?.('navigation')[0])
|
|
68
67
|
} else {
|
|
69
|
-
this.
|
|
68
|
+
this.traceStorage.storeTiming(globalScope.performance?.timing, true)
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
71
|
|
|
@@ -82,13 +81,13 @@ export class Aggregate extends AggregateBase {
|
|
|
82
81
|
this.timeKeeper ??= this.agentRef.runtime.timeKeeper
|
|
83
82
|
|
|
84
83
|
/** The handlers set up by the Inst file */
|
|
85
|
-
registerHandler('bst', (...args) => this.
|
|
86
|
-
registerHandler('bstResource', (...args) => this.
|
|
87
|
-
registerHandler('bstHist', (...args) => this.
|
|
88
|
-
registerHandler('bstXhrAgg', (...args) => this.
|
|
89
|
-
registerHandler('bstApi', (...args) => this.
|
|
90
|
-
registerHandler('trace-jserror', (...args) => this.
|
|
91
|
-
registerHandler('pvtAdded', (...args) => this.
|
|
84
|
+
registerHandler('bst', (...args) => this.traceStorage.storeEvent(...args), this.featureName, this.ee)
|
|
85
|
+
registerHandler('bstResource', (...args) => this.traceStorage.storeResources(...args), this.featureName, this.ee)
|
|
86
|
+
registerHandler('bstHist', (...args) => this.traceStorage.storeHist(...args), this.featureName, this.ee)
|
|
87
|
+
registerHandler('bstXhrAgg', (...args) => this.traceStorage.storeXhrAgg(...args), this.featureName, this.ee)
|
|
88
|
+
registerHandler('bstApi', (...args) => this.traceStorage.storeNode(...args), this.featureName, this.ee)
|
|
89
|
+
registerHandler('trace-jserror', (...args) => this.traceStorage.storeErrorAgg(...args), this.featureName, this.ee)
|
|
90
|
+
registerHandler('pvtAdded', (...args) => this.traceStorage.processPVT(...args), this.featureName, this.ee)
|
|
92
91
|
|
|
93
92
|
if (this.mode !== MODE.FULL) {
|
|
94
93
|
/** A separate handler for noticing errors, and switching to "full" mode if running in "error" mode */
|
|
@@ -111,22 +110,26 @@ export class Aggregate extends AggregateBase {
|
|
|
111
110
|
this.abort(3)
|
|
112
111
|
return
|
|
113
112
|
}
|
|
113
|
+
|
|
114
114
|
return true
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
serializer (
|
|
117
|
+
serializer (stns) {
|
|
118
118
|
if (!stns.length) return // there are no processed nodes
|
|
119
119
|
this.everHarvested = true
|
|
120
120
|
return applyFnToProps(stns, this.obfuscator.obfuscateString.bind(this.obfuscator), 'string')
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
queryStringsBuilder (
|
|
123
|
+
queryStringsBuilder (stns) {
|
|
124
124
|
const firstSessionHarvest = !this.agentRef.runtime.session.state.traceHarvestStarted
|
|
125
125
|
if (firstSessionHarvest) this.agentRef.runtime.session.write({ traceHarvestStarted: true })
|
|
126
126
|
const hasReplay = this.agentRef.runtime.session.state.sessionReplayMode === 1
|
|
127
127
|
const endUserId = this.agentRef.info.jsAttributes['enduser.id']
|
|
128
128
|
const entityGuid = this.agentRef.runtime.appMetadata.agents?.[0]?.entityGuid
|
|
129
129
|
|
|
130
|
+
const earliestTimeStamp = stns.reduce((earliest, stn) => Math.min(earliest, stn.s), Infinity)
|
|
131
|
+
const latestTimeStamp = stns.reduce((latest, stn) => Math.max(latest, stn.s), -Infinity)
|
|
132
|
+
|
|
130
133
|
/* The blob consumer expects the following and will reject if not supplied:
|
|
131
134
|
* browser_monitoring_key
|
|
132
135
|
* type
|
|
@@ -175,7 +178,7 @@ export class Aggregate extends AggregateBase {
|
|
|
175
178
|
this.agentRef.runtime.session.write({ sessionTraceMode: this.mode })
|
|
176
179
|
if (prevMode === MODE.OFF || !this.initialized) return this.initialize(this.mode, this.entitled)
|
|
177
180
|
if (this.initialized) {
|
|
178
|
-
this.
|
|
181
|
+
this.traceStorage.trimSTNsByTime() // up until now, Trace would've been just buffering nodes up to max, which needs to be trimmed to last X seconds
|
|
179
182
|
this.agentRef.runtime.harvester.triggerHarvestFor(this)
|
|
180
183
|
}
|
|
181
184
|
}
|
|
@@ -188,4 +191,9 @@ export class Aggregate extends AggregateBase {
|
|
|
188
191
|
this.agentRef.runtime.session.write({ sessionTraceMode: this.mode })
|
|
189
192
|
this.events.clear()
|
|
190
193
|
}
|
|
194
|
+
|
|
195
|
+
postHarvestCleanup (result) {
|
|
196
|
+
this.traceStorage.clear() // clear the trace storage state
|
|
197
|
+
super.postHarvestCleanup(result)
|
|
198
|
+
}
|
|
191
199
|
}
|