@newrelic/browser-agent 0.0.9 → 0.1.230
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/README.md +113 -197
- package/dist/cjs/cdn/lite.js +14 -0
- package/dist/cjs/cdn/polyfills/lite.js +4 -0
- package/dist/cjs/cdn/polyfills/pro.js +4 -0
- package/dist/cjs/cdn/polyfills/spa.js +4 -0
- package/dist/cjs/cdn/polyfills.js +14 -0
- package/dist/cjs/cdn/pro.js +19 -0
- package/dist/cjs/cdn/spa.js +19 -0
- package/dist/cjs/cdn/worker.js +16 -0
- package/dist/cjs/common/aggregate/aggregator.js +168 -0
- package/dist/cjs/common/browser-version/firefox-version.js +17 -0
- package/dist/cjs/common/browser-version/ios-version.js +18 -0
- package/dist/cjs/common/config/config.js +76 -0
- package/dist/cjs/common/config/state/configurable.js +33 -0
- package/dist/cjs/common/config/state/info.js +50 -0
- package/dist/cjs/common/config/state/init.js +86 -0
- package/dist/cjs/common/config/state/loader-config.js +28 -0
- package/dist/cjs/common/config/state/originals.js +9 -0
- package/dist/cjs/common/config/state/runtime.js +51 -0
- package/dist/cjs/common/constants/environment-variables.js +20 -0
- package/dist/cjs/common/context/shared-context.js +26 -0
- package/dist/cjs/common/deny-list/deny-list.js +108 -0
- package/dist/cjs/common/drain/drain.js +132 -0
- package/dist/cjs/common/event-emitter/contextual-ee.js +149 -0
- package/dist/cjs/common/event-emitter/handle.js +24 -0
- package/dist/cjs/common/event-emitter/register-handler.js +24 -0
- package/dist/cjs/common/event-listener/event-listener-opts.js +48 -0
- package/dist/cjs/common/harvest/harvest-scheduler.js +112 -0
- package/dist/cjs/common/harvest/harvest.js +247 -0
- package/dist/cjs/common/ids/id.js +30 -0
- package/dist/cjs/common/ids/unique-id.js +84 -0
- package/dist/cjs/common/metrics/framework-detection.js +72 -0
- package/dist/cjs/common/metrics/paint-metrics.js +13 -0
- package/dist/cjs/common/serialize/bel-serializer.js +89 -0
- package/dist/cjs/common/timing/nav-timing.js +77 -0
- package/dist/cjs/common/timing/now.js +15 -0
- package/dist/cjs/common/unload/eol.js +69 -0
- package/dist/cjs/common/url/clean-url.js +16 -0
- package/dist/cjs/common/url/encode.js +79 -0
- package/dist/cjs/common/url/location.js +14 -0
- package/dist/cjs/common/url/parse-url.js +66 -0
- package/dist/cjs/common/url/protocol.js +25 -0
- package/dist/cjs/common/util/console.js +17 -0
- package/dist/cjs/common/util/data-size.js +25 -0
- package/dist/cjs/common/util/feature-flags.js +42 -0
- package/dist/cjs/common/util/get-or-set.js +39 -0
- package/dist/cjs/common/util/global-scope.js +56 -0
- package/dist/cjs/common/util/map-own.js +31 -0
- package/dist/cjs/common/util/map-own.test.js +49 -0
- package/dist/cjs/common/util/obfuscate.js +76 -0
- package/dist/cjs/common/util/s-hash.js +19 -0
- package/dist/cjs/common/util/single.js +23 -0
- package/dist/cjs/common/util/stringify.js +47 -0
- package/dist/cjs/common/util/submit-data.js +107 -0
- package/dist/cjs/common/util/traverse.js +41 -0
- package/dist/cjs/common/util/user-agent.js +57 -0
- package/dist/cjs/common/window/load.js +19 -0
- package/dist/cjs/common/window/nreum.js +107 -0
- package/dist/cjs/common/window/page-visibility.js +29 -0
- package/dist/cjs/common/window/session-storage.js +87 -0
- package/dist/cjs/common/window/supports-performance-observer.js +15 -0
- package/dist/cjs/common/wrap/index.js +75 -0
- package/dist/cjs/common/wrap/wrap-console.js +54 -0
- package/dist/cjs/common/wrap/wrap-events.js +108 -0
- package/dist/cjs/common/wrap/wrap-fetch.js +112 -0
- package/dist/cjs/common/wrap/wrap-function.js +255 -0
- package/dist/cjs/common/wrap/wrap-history.js +56 -0
- package/dist/cjs/common/wrap/wrap-jsonp.js +129 -0
- package/dist/cjs/common/wrap/wrap-mutation.js +61 -0
- package/dist/cjs/common/wrap/wrap-promise.js +163 -0
- package/dist/cjs/common/wrap/wrap-raf.js +55 -0
- package/dist/cjs/common/wrap/wrap-timer.js +70 -0
- package/dist/cjs/common/wrap/wrap-xhr.js +206 -0
- package/dist/cjs/features/ajax/aggregate/index.js +226 -0
- package/dist/cjs/features/ajax/constants.js +9 -0
- package/dist/cjs/features/ajax/index.js +12 -0
- package/dist/cjs/features/ajax/instrument/distributed-tracing.js +145 -0
- package/dist/cjs/features/ajax/instrument/index.js +339 -0
- package/dist/cjs/features/ajax/instrument/response-size.js +26 -0
- package/dist/cjs/features/jserrors/aggregate/canonical-function-name.js +18 -0
- package/dist/cjs/features/jserrors/aggregate/canonical-function-name.test.js +31 -0
- package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.js +215 -0
- package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.test.js +257 -0
- package/dist/cjs/features/jserrors/aggregate/format-stack-trace.js +36 -0
- package/dist/cjs/features/jserrors/aggregate/format-stack-trace.test.js +40 -0
- package/dist/cjs/features/jserrors/aggregate/index.js +288 -0
- package/dist/cjs/features/jserrors/aggregate/string-hash-code.js +23 -0
- package/dist/cjs/features/jserrors/aggregate/string-hash-code.test.js +27 -0
- package/dist/cjs/features/jserrors/constants.js +11 -0
- package/dist/cjs/features/jserrors/index.js +12 -0
- package/dist/cjs/features/jserrors/instrument/debug.js +40 -0
- package/dist/cjs/features/jserrors/instrument/index.js +155 -0
- package/dist/cjs/features/metrics/aggregate/index.js +147 -0
- package/dist/cjs/features/metrics/constants.js +17 -0
- package/dist/cjs/features/metrics/index.js +12 -0
- package/dist/cjs/features/metrics/instrument/index.js +46 -0
- package/dist/cjs/features/metrics/instrument/workers-helper.js +124 -0
- package/dist/cjs/features/page_action/aggregate/index.js +120 -0
- package/dist/cjs/features/page_action/constants.js +9 -0
- package/dist/cjs/features/page_action/index.js +12 -0
- package/dist/cjs/features/page_action/instrument/index.js +22 -0
- package/dist/cjs/features/page_view_event/aggregate/index.js +137 -0
- package/dist/cjs/features/page_view_event/aggregate/initialized-features.js +39 -0
- package/dist/cjs/features/page_view_event/constants.js +15 -0
- package/dist/cjs/features/page_view_event/index.js +12 -0
- package/dist/cjs/features/page_view_event/instrument/index.js +39 -0
- package/dist/cjs/features/page_view_timing/aggregate/index.js +284 -0
- package/dist/cjs/features/page_view_timing/constants.js +9 -0
- package/dist/cjs/features/page_view_timing/first-paint.js +50 -0
- package/dist/cjs/features/page_view_timing/index.js +12 -0
- package/dist/cjs/features/page_view_timing/instrument/index.js +37 -0
- package/dist/cjs/features/page_view_timing/long-tasks.js +75 -0
- package/dist/cjs/features/session_trace/aggregate/index.js +415 -0
- package/dist/cjs/features/session_trace/constants.js +32 -0
- package/dist/cjs/features/session_trace/index.js +12 -0
- package/dist/cjs/features/session_trace/instrument/index.js +134 -0
- package/dist/cjs/features/spa/aggregate/index.js +684 -0
- package/dist/cjs/features/spa/aggregate/interaction-node.js +84 -0
- package/dist/cjs/features/spa/aggregate/interaction-node.test.js +16 -0
- package/dist/cjs/features/spa/aggregate/interaction.js +98 -0
- package/dist/cjs/features/spa/aggregate/serializer.js +147 -0
- package/dist/cjs/features/spa/constants.js +53 -0
- package/dist/cjs/features/spa/index.js +12 -0
- package/dist/cjs/features/spa/instrument/index.js +115 -0
- package/dist/cjs/features/utils/aggregate-base.js +13 -0
- package/dist/cjs/features/utils/feature-base.js +58 -0
- package/dist/cjs/features/utils/handler-cache.js +64 -0
- package/dist/cjs/features/utils/instrument-base.js +72 -0
- package/dist/cjs/features/utils/lazy-loader.js +44 -0
- package/dist/cjs/index.js +81 -58
- package/dist/cjs/loaders/agent.js +87 -0
- package/dist/cjs/loaders/api/api.js +174 -0
- package/dist/cjs/loaders/api/apiAsync.js +94 -0
- package/dist/cjs/loaders/browser-agent.js +29 -0
- package/dist/cjs/loaders/configure/configure.js +53 -0
- package/dist/cjs/loaders/features/enabled-features.js +19 -0
- package/dist/cjs/loaders/features/featureDependencies.js +32 -0
- package/dist/cjs/loaders/features/features.js +33 -0
- package/dist/cjs/loaders/micro-agent.js +98 -0
- package/dist/cjs/loaders/worker-agent.js +24 -0
- package/dist/esm/cdn/lite.js +12 -0
- package/dist/esm/cdn/polyfills/lite.js +7 -0
- package/dist/esm/cdn/polyfills/pro.js +7 -0
- package/dist/esm/cdn/polyfills/spa.js +7 -0
- package/dist/esm/cdn/polyfills.js +17 -0
- package/dist/esm/cdn/pro.js +17 -0
- package/dist/esm/cdn/spa.js +17 -0
- package/dist/esm/cdn/worker.js +14 -0
- package/dist/esm/common/aggregate/aggregator.js +161 -0
- package/dist/esm/common/browser-version/firefox-version.js +10 -0
- package/dist/esm/common/browser-version/ios-version.js +10 -0
- package/dist/esm/common/config/config.js +11 -0
- package/dist/esm/common/config/state/configurable.js +26 -0
- package/dist/esm/common/config/state/info.js +42 -0
- package/dist/esm/common/config/state/init.js +78 -0
- package/dist/esm/common/config/state/loader-config.js +21 -0
- package/dist/esm/common/config/state/originals.js +2 -0
- package/dist/esm/common/config/state/runtime.js +42 -0
- package/dist/esm/common/constants/environment-variables.js +11 -0
- package/dist/esm/common/context/shared-context.js +19 -0
- package/dist/esm/common/deny-list/deny-list.js +101 -0
- package/dist/esm/common/drain/drain.js +125 -0
- package/dist/esm/common/event-emitter/contextual-ee.js +142 -0
- package/dist/esm/common/event-emitter/handle.js +16 -0
- package/dist/esm/common/event-emitter/register-handler.js +19 -0
- package/dist/esm/common/event-listener/event-listener-opts.js +41 -0
- package/dist/esm/common/harvest/harvest-scheduler.js +106 -0
- package/dist/esm/common/harvest/harvest.js +239 -0
- package/dist/esm/common/ids/id.js +23 -0
- package/dist/esm/common/ids/unique-id.js +75 -0
- package/dist/esm/common/metrics/framework-detection.js +66 -0
- package/dist/esm/common/metrics/paint-metrics.js +6 -0
- package/dist/esm/common/serialize/bel-serializer.js +80 -0
- package/dist/esm/common/timing/nav-timing.js +67 -0
- package/dist/esm/common/timing/now.js +9 -0
- package/dist/esm/common/unload/eol.js +62 -0
- package/dist/esm/common/url/clean-url.js +10 -0
- package/dist/esm/common/url/encode.js +71 -0
- package/dist/esm/common/url/location.js +8 -0
- package/dist/esm/common/url/parse-url.js +60 -0
- package/dist/esm/common/url/protocol.js +17 -0
- package/dist/esm/common/util/console.js +11 -0
- package/dist/esm/common/util/data-size.js +19 -0
- package/dist/esm/common/util/feature-flags.js +33 -0
- package/dist/esm/common/util/get-or-set.js +33 -0
- package/dist/esm/common/util/global-scope.js +44 -0
- package/dist/esm/common/util/map-own.js +24 -0
- package/dist/esm/common/util/map-own.test.js +47 -0
- package/dist/esm/common/util/obfuscate.js +67 -0
- package/dist/esm/common/util/s-hash.js +13 -0
- package/dist/esm/common/util/single.js +16 -0
- package/dist/esm/common/util/stringify.js +42 -0
- package/dist/esm/common/util/submit-data.js +99 -0
- package/dist/esm/common/util/traverse.js +35 -0
- package/dist/esm/common/util/user-agent.js +48 -0
- package/dist/esm/common/window/load.js +12 -0
- package/dist/esm/common/window/nreum.js +91 -0
- package/dist/esm/common/window/page-visibility.js +24 -0
- package/dist/esm/common/window/session-storage.js +77 -0
- package/dist/esm/common/window/supports-performance-observer.js +9 -0
- package/dist/esm/common/wrap/index.js +15 -0
- package/dist/esm/common/wrap/wrap-console.js +46 -0
- package/dist/esm/common/wrap/wrap-events.js +100 -0
- package/dist/esm/common/wrap/wrap-fetch.js +103 -0
- package/dist/esm/common/wrap/wrap-function.js +244 -0
- package/dist/esm/common/wrap/wrap-history.js +48 -0
- package/dist/esm/common/wrap/wrap-jsonp.js +122 -0
- package/dist/esm/common/wrap/wrap-mutation.js +54 -0
- package/dist/esm/common/wrap/wrap-promise.js +156 -0
- package/dist/esm/common/wrap/wrap-raf.js +48 -0
- package/dist/esm/common/wrap/wrap-timer.js +63 -0
- package/dist/esm/common/wrap/wrap-xhr.js +199 -0
- package/dist/esm/features/ajax/aggregate/index.js +218 -0
- package/dist/esm/features/ajax/constants.js +2 -0
- package/dist/esm/features/ajax/index.js +1 -0
- package/dist/esm/features/ajax/instrument/distributed-tracing.js +137 -0
- package/dist/esm/features/ajax/instrument/index.js +331 -0
- package/dist/esm/features/ajax/instrument/response-size.js +19 -0
- package/dist/esm/features/jserrors/aggregate/canonical-function-name.js +12 -0
- package/dist/esm/features/jserrors/aggregate/canonical-function-name.test.js +29 -0
- package/dist/esm/features/jserrors/aggregate/compute-stack-trace.js +208 -0
- package/dist/esm/features/jserrors/aggregate/compute-stack-trace.test.js +255 -0
- package/dist/esm/features/jserrors/aggregate/format-stack-trace.js +29 -0
- package/dist/esm/features/jserrors/aggregate/format-stack-trace.test.js +38 -0
- package/dist/esm/features/jserrors/aggregate/index.js +281 -0
- package/dist/esm/features/jserrors/aggregate/string-hash-code.js +17 -0
- package/dist/esm/features/jserrors/aggregate/string-hash-code.test.js +25 -0
- package/dist/esm/features/jserrors/constants.js +3 -0
- package/dist/esm/features/jserrors/index.js +1 -0
- package/dist/esm/features/jserrors/instrument/debug.js +38 -0
- package/dist/esm/features/jserrors/instrument/index.js +147 -0
- package/dist/esm/features/metrics/aggregate/index.js +140 -0
- package/dist/esm/features/metrics/constants.js +6 -0
- package/dist/esm/features/metrics/index.js +1 -0
- package/dist/esm/features/metrics/instrument/index.js +39 -0
- package/dist/esm/features/metrics/instrument/workers-helper.js +119 -0
- package/dist/esm/features/page_action/aggregate/index.js +113 -0
- package/dist/esm/features/page_action/constants.js +2 -0
- package/dist/esm/features/page_action/index.js +1 -0
- package/dist/esm/features/page_action/instrument/index.js +15 -0
- package/dist/esm/features/page_view_event/aggregate/index.js +128 -0
- package/dist/esm/features/page_view_event/aggregate/initialized-features.js +34 -0
- package/dist/esm/features/page_view_event/constants.js +5 -0
- package/dist/esm/features/page_view_event/index.js +1 -0
- package/dist/esm/features/page_view_event/instrument/index.js +30 -0
- package/dist/esm/features/page_view_timing/aggregate/index.js +277 -0
- package/dist/esm/features/page_view_timing/constants.js +2 -0
- package/dist/esm/features/page_view_timing/first-paint.js +43 -0
- package/dist/esm/features/page_view_timing/index.js +1 -0
- package/dist/esm/features/page_view_timing/instrument/index.js +29 -0
- package/dist/esm/features/page_view_timing/long-tasks.js +69 -0
- package/dist/esm/features/session_trace/aggregate/index.js +406 -0
- package/dist/esm/features/session_trace/constants.js +14 -0
- package/dist/esm/features/session_trace/index.js +1 -0
- package/dist/esm/features/session_trace/instrument/index.js +124 -0
- package/dist/esm/features/spa/aggregate/index.js +674 -0
- package/dist/esm/features/spa/aggregate/interaction-node.js +78 -0
- package/dist/esm/features/spa/aggregate/interaction-node.test.js +14 -0
- package/dist/esm/features/spa/aggregate/interaction.js +92 -0
- package/dist/esm/features/spa/aggregate/serializer.js +139 -0
- package/dist/esm/features/spa/constants.js +25 -0
- package/dist/esm/features/spa/index.js +1 -0
- package/dist/esm/features/spa/instrument/index.js +105 -0
- package/dist/esm/features/utils/aggregate-base.js +6 -0
- package/dist/esm/features/utils/feature-base.js +51 -0
- package/dist/esm/features/utils/handler-cache.js +57 -0
- package/dist/esm/features/utils/instrument-base.js +70 -0
- package/dist/esm/features/utils/lazy-loader.js +37 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/loaders/agent.js +78 -0
- package/dist/esm/loaders/api/api.js +168 -0
- package/dist/esm/loaders/api/apiAsync.js +88 -0
- package/dist/esm/loaders/browser-agent.js +23 -0
- package/dist/esm/loaders/configure/configure.js +47 -0
- package/dist/esm/loaders/features/enabled-features.js +13 -0
- package/dist/esm/loaders/features/featureDependencies.js +25 -0
- package/dist/esm/loaders/features/features.js +25 -0
- package/dist/esm/loaders/micro-agent.js +91 -0
- package/dist/esm/loaders/worker-agent.js +18 -0
- package/dist/types/cdn/lite.d.ts +2 -0
- package/dist/types/cdn/lite.d.ts.map +1 -0
- package/dist/types/cdn/polyfills/lite.d.ts +2 -0
- package/dist/types/cdn/polyfills/lite.d.ts.map +1 -0
- package/dist/types/cdn/polyfills/pro.d.ts +2 -0
- package/dist/types/cdn/polyfills/pro.d.ts.map +1 -0
- package/dist/types/cdn/polyfills/spa.d.ts +2 -0
- package/dist/types/cdn/polyfills/spa.d.ts.map +1 -0
- package/dist/types/cdn/polyfills.d.ts +2 -0
- package/dist/types/cdn/polyfills.d.ts.map +1 -0
- package/dist/types/cdn/pro.d.ts +2 -0
- package/dist/types/cdn/pro.d.ts.map +1 -0
- package/dist/types/cdn/spa.d.ts +2 -0
- package/dist/types/cdn/spa.d.ts.map +1 -0
- package/dist/types/cdn/worker.d.ts +2 -0
- package/dist/types/cdn/worker.d.ts.map +1 -0
- package/dist/types/common/aggregate/aggregator.d.ts +11 -0
- package/dist/types/common/aggregate/aggregator.d.ts.map +1 -0
- package/dist/types/common/browser-version/firefox-version.d.ts +2 -0
- package/dist/types/common/browser-version/firefox-version.d.ts.map +1 -0
- package/dist/types/common/browser-version/ios-version.d.ts +3 -0
- package/dist/types/common/browser-version/ios-version.d.ts.map +1 -0
- package/dist/types/common/config/config.d.ts +13 -0
- package/dist/types/common/config/config.d.ts.map +1 -0
- package/dist/types/common/config/state/configurable.d.ts +4 -0
- package/dist/types/common/config/state/configurable.d.ts.map +1 -0
- package/dist/types/common/config/state/info.d.ts +4 -0
- package/dist/types/common/config/state/info.d.ts.map +1 -0
- package/dist/types/common/config/state/init.d.ts +4 -0
- package/dist/types/common/config/state/init.d.ts.map +1 -0
- package/dist/types/common/config/state/loader-config.d.ts +3 -0
- package/dist/types/common/config/state/loader-config.d.ts.map +1 -0
- package/dist/types/common/config/state/originals.d.ts +2 -0
- package/dist/types/common/config/state/originals.d.ts.map +1 -0
- package/dist/types/common/config/state/runtime.d.ts +3 -0
- package/dist/types/common/config/state/runtime.d.ts.map +1 -0
- package/dist/types/common/constants/environment-variables.d.ts +4 -0
- package/dist/types/common/constants/environment-variables.d.ts.map +1 -0
- package/dist/types/common/context/shared-context.d.ts +5 -0
- package/dist/types/common/context/shared-context.d.ts.map +1 -0
- package/dist/types/common/deny-list/deny-list.d.ts +12 -0
- package/dist/types/common/deny-list/deny-list.d.ts.map +1 -0
- package/dist/types/common/drain/drain.d.ts +17 -0
- package/dist/types/common/drain/drain.d.ts.map +1 -0
- package/dist/types/common/event-emitter/contextual-ee.d.ts +4 -0
- package/dist/types/common/event-emitter/contextual-ee.d.ts.map +1 -0
- package/dist/types/common/event-emitter/handle.d.ts +3 -0
- package/dist/types/common/event-emitter/handle.d.ts.map +1 -0
- package/dist/types/common/event-emitter/register-handler.d.ts +8 -0
- package/dist/types/common/event-emitter/register-handler.d.ts.map +1 -0
- package/dist/types/common/event-listener/event-listener-opts.d.ts +10 -0
- package/dist/types/common/event-listener/event-listener-opts.d.ts.map +1 -0
- package/dist/types/common/harvest/harvest-scheduler.d.ts +21 -0
- package/dist/types/common/harvest/harvest-scheduler.d.ts.map +1 -0
- package/dist/types/common/harvest/harvest.d.ts +58 -0
- package/dist/types/common/harvest/harvest.d.ts.map +1 -0
- package/dist/types/common/ids/id.d.ts +2 -0
- package/dist/types/common/ids/id.d.ts.map +1 -0
- package/dist/types/common/ids/unique-id.d.ts +5 -0
- package/dist/types/common/ids/unique-id.d.ts.map +1 -0
- package/dist/types/common/metrics/framework-detection.d.ts +2 -0
- package/dist/types/common/metrics/framework-detection.d.ts.map +1 -0
- package/dist/types/common/metrics/paint-metrics.d.ts +2 -0
- package/dist/types/common/metrics/paint-metrics.d.ts.map +1 -0
- package/dist/types/common/serialize/bel-serializer.d.ts +5 -0
- package/dist/types/common/serialize/bel-serializer.d.ts.map +1 -0
- package/dist/types/common/timing/nav-timing.d.ts +5 -0
- package/dist/types/common/timing/nav-timing.d.ts.map +1 -0
- package/dist/types/common/timing/now.d.ts +2 -0
- package/dist/types/common/timing/now.d.ts.map +1 -0
- package/dist/types/common/unload/eol.d.ts +8 -0
- package/dist/types/common/unload/eol.d.ts.map +1 -0
- package/dist/types/common/url/clean-url.d.ts +2 -0
- package/dist/types/common/url/clean-url.d.ts.map +1 -0
- package/dist/types/common/url/encode.d.ts +5 -0
- package/dist/types/common/url/encode.d.ts.map +1 -0
- package/dist/types/common/url/location.d.ts +2 -0
- package/dist/types/common/url/location.d.ts.map +1 -0
- package/dist/types/common/url/parse-url.d.ts +2 -0
- package/dist/types/common/url/parse-url.d.ts.map +1 -0
- package/dist/types/common/url/protocol.d.ts +7 -0
- package/dist/types/common/url/protocol.d.ts.map +1 -0
- package/dist/types/common/util/console.d.ts +8 -0
- package/dist/types/common/util/console.d.ts.map +1 -0
- package/dist/types/common/util/data-size.d.ts +2 -0
- package/dist/types/common/util/data-size.d.ts.map +1 -0
- package/dist/types/common/util/feature-flags.d.ts +3 -0
- package/dist/types/common/util/feature-flags.d.ts.map +1 -0
- package/dist/types/common/util/get-or-set.d.ts +2 -0
- package/dist/types/common/util/get-or-set.d.ts.map +1 -0
- package/dist/types/common/util/global-scope.d.ts +13 -0
- package/dist/types/common/util/global-scope.d.ts.map +1 -0
- package/dist/types/common/util/map-own.d.ts +3 -0
- package/dist/types/common/util/map-own.d.ts.map +1 -0
- package/dist/types/common/util/obfuscate.d.ts +8 -0
- package/dist/types/common/util/obfuscate.d.ts.map +1 -0
- package/dist/types/common/util/s-hash.d.ts +2 -0
- package/dist/types/common/util/s-hash.d.ts.map +1 -0
- package/dist/types/common/util/single.d.ts +2 -0
- package/dist/types/common/util/single.d.ts.map +1 -0
- package/dist/types/common/util/stringify.d.ts +8 -0
- package/dist/types/common/util/stringify.d.ts.map +1 -0
- package/dist/types/common/util/submit-data.d.ts +35 -0
- package/dist/types/common/util/submit-data.d.ts.map +1 -0
- package/dist/types/common/util/traverse.d.ts +2 -0
- package/dist/types/common/util/traverse.d.ts.map +1 -0
- package/dist/types/common/util/user-agent.d.ts +5 -0
- package/dist/types/common/util/user-agent.d.ts.map +1 -0
- package/dist/types/common/window/load.d.ts +3 -0
- package/dist/types/common/window/load.d.ts.map +1 -0
- package/dist/types/common/window/nreum.d.ts +14 -0
- package/dist/types/common/window/nreum.d.ts.map +1 -0
- package/dist/types/common/window/page-visibility.d.ts +7 -0
- package/dist/types/common/window/page-visibility.d.ts.map +1 -0
- package/dist/types/common/window/session-storage.d.ts +18 -0
- package/dist/types/common/window/session-storage.d.ts.map +1 -0
- package/dist/types/common/window/supports-performance-observer.d.ts +2 -0
- package/dist/types/common/window/supports-performance-observer.d.ts.map +1 -0
- package/dist/types/common/wrap/index.d.ts +12 -0
- package/dist/types/common/wrap/index.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-console.d.ts +16 -0
- package/dist/types/common/wrap/wrap-console.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-events.d.ts +17 -0
- package/dist/types/common/wrap/wrap-events.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-fetch.d.ts +18 -0
- package/dist/types/common/wrap/wrap-fetch.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-function.d.ts +28 -0
- package/dist/types/common/wrap/wrap-function.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-history.d.ts +16 -0
- package/dist/types/common/wrap/wrap-history.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-jsonp.d.ts +16 -0
- package/dist/types/common/wrap/wrap-jsonp.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-mutation.d.ts +16 -0
- package/dist/types/common/wrap/wrap-mutation.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-promise.d.ts +17 -0
- package/dist/types/common/wrap/wrap-promise.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-raf.d.ts +16 -0
- package/dist/types/common/wrap/wrap-raf.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-timer.d.ts +17 -0
- package/dist/types/common/wrap/wrap-timer.d.ts.map +1 -0
- package/dist/types/common/wrap/wrap-xhr.d.ts +16 -0
- package/dist/types/common/wrap/wrap-xhr.d.ts.map +1 -0
- package/dist/types/features/ajax/aggregate/index.d.ts +16 -0
- package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/ajax/constants.d.ts +2 -0
- package/dist/types/features/ajax/constants.d.ts.map +1 -0
- package/dist/types/features/ajax/index.d.ts +2 -0
- package/dist/types/features/ajax/index.d.ts.map +1 -0
- package/dist/types/features/ajax/instrument/distributed-tracing.d.ts +19 -0
- package/dist/types/features/ajax/instrument/distributed-tracing.d.ts.map +1 -0
- package/dist/types/features/ajax/instrument/index.d.ts +9 -0
- package/dist/types/features/ajax/instrument/index.d.ts.map +1 -0
- package/dist/types/features/ajax/instrument/response-size.d.ts +2 -0
- package/dist/types/features/ajax/instrument/response-size.d.ts.map +1 -0
- package/dist/types/features/jserrors/aggregate/canonical-function-name.d.ts +2 -0
- package/dist/types/features/jserrors/aggregate/canonical-function-name.d.ts.map +1 -0
- package/dist/types/features/jserrors/aggregate/compute-stack-trace.d.ts +22 -0
- package/dist/types/features/jserrors/aggregate/compute-stack-trace.d.ts.map +1 -0
- package/dist/types/features/jserrors/aggregate/format-stack-trace.d.ts +3 -0
- package/dist/types/features/jserrors/aggregate/format-stack-trace.d.ts.map +1 -0
- package/dist/types/features/jserrors/aggregate/index.d.ts +24 -0
- package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/jserrors/aggregate/string-hash-code.d.ts +2 -0
- package/dist/types/features/jserrors/aggregate/string-hash-code.d.ts.map +1 -0
- package/dist/types/features/jserrors/constants.d.ts +3 -0
- package/dist/types/features/jserrors/constants.d.ts.map +1 -0
- package/dist/types/features/jserrors/index.d.ts +2 -0
- package/dist/types/features/jserrors/index.d.ts.map +1 -0
- package/dist/types/features/jserrors/instrument/debug.d.ts +2 -0
- package/dist/types/features/jserrors/instrument/debug.d.ts.map +1 -0
- package/dist/types/features/jserrors/instrument/index.d.ts +22 -0
- package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -0
- package/dist/types/features/metrics/aggregate/index.d.ts +12 -0
- package/dist/types/features/metrics/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/metrics/constants.d.ts +6 -0
- package/dist/types/features/metrics/constants.d.ts.map +1 -0
- package/dist/types/features/metrics/index.d.ts +2 -0
- package/dist/types/features/metrics/index.d.ts.map +1 -0
- package/dist/types/features/metrics/instrument/index.d.ts +7 -0
- package/dist/types/features/metrics/instrument/index.d.ts.map +1 -0
- package/dist/types/features/metrics/instrument/workers-helper.d.ts +7 -0
- package/dist/types/features/metrics/instrument/workers-helper.d.ts.map +1 -0
- package/dist/types/features/page_action/aggregate/index.d.ts +24 -0
- package/dist/types/features/page_action/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/page_action/constants.d.ts +2 -0
- package/dist/types/features/page_action/constants.d.ts.map +1 -0
- package/dist/types/features/page_action/index.d.ts +2 -0
- package/dist/types/features/page_action/index.d.ts.map +1 -0
- package/dist/types/features/page_action/instrument/index.d.ts +6 -0
- package/dist/types/features/page_action/instrument/index.d.ts.map +1 -0
- package/dist/types/features/page_view_event/aggregate/index.d.ts +9 -0
- package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/page_view_event/aggregate/initialized-features.d.ts +8 -0
- package/dist/types/features/page_view_event/aggregate/initialized-features.d.ts.map +1 -0
- package/dist/types/features/page_view_event/constants.d.ts +5 -0
- package/dist/types/features/page_view_event/constants.d.ts.map +1 -0
- package/dist/types/features/page_view_event/index.d.ts +2 -0
- package/dist/types/features/page_view_event/index.d.ts.map +1 -0
- package/dist/types/features/page_view_event/instrument/index.d.ts +6 -0
- package/dist/types/features/page_view_event/instrument/index.d.ts.map +1 -0
- package/dist/types/features/page_view_timing/aggregate/index.d.ts +33 -0
- package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/page_view_timing/constants.d.ts +2 -0
- package/dist/types/features/page_view_timing/constants.d.ts.map +1 -0
- package/dist/types/features/page_view_timing/first-paint.d.ts +2 -0
- package/dist/types/features/page_view_timing/first-paint.d.ts.map +1 -0
- package/dist/types/features/page_view_timing/index.d.ts +2 -0
- package/dist/types/features/page_view_timing/index.d.ts.map +1 -0
- package/dist/types/features/page_view_timing/instrument/index.d.ts +6 -0
- package/dist/types/features/page_view_timing/instrument/index.d.ts.map +1 -0
- package/dist/types/features/page_view_timing/long-tasks.d.ts +2 -0
- package/dist/types/features/page_view_timing/long-tasks.d.ts.map +1 -0
- package/dist/types/features/session_trace/aggregate/index.d.ts +77 -0
- package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/session_trace/constants.d.ts +13 -0
- package/dist/types/features/session_trace/constants.d.ts.map +1 -0
- package/dist/types/features/session_trace/index.d.ts +2 -0
- package/dist/types/features/session_trace/index.d.ts.map +1 -0
- package/dist/types/features/session_trace/instrument/index.d.ts +11 -0
- package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -0
- package/dist/types/features/spa/aggregate/index.d.ts +25 -0
- package/dist/types/features/spa/aggregate/index.d.ts.map +1 -0
- package/dist/types/features/spa/aggregate/interaction-node.d.ts +15 -0
- package/dist/types/features/spa/aggregate/interaction-node.d.ts.map +1 -0
- package/dist/types/features/spa/aggregate/interaction.d.ts +20 -0
- package/dist/types/features/spa/aggregate/interaction.d.ts.map +1 -0
- package/dist/types/features/spa/aggregate/serializer.d.ts +15 -0
- package/dist/types/features/spa/aggregate/serializer.d.ts.map +1 -0
- package/dist/types/features/spa/constants.d.ts +23 -0
- package/dist/types/features/spa/constants.d.ts.map +1 -0
- package/dist/types/features/spa/index.d.ts +2 -0
- package/dist/types/features/spa/index.d.ts.map +1 -0
- package/dist/types/features/spa/instrument/index.d.ts +8 -0
- package/dist/types/features/spa/instrument/index.d.ts.map +1 -0
- package/dist/types/features/utils/aggregate-base.d.ts +4 -0
- package/dist/types/features/utils/aggregate-base.d.ts.map +1 -0
- package/dist/types/features/utils/feature-base.d.ts +23 -0
- package/dist/types/features/utils/feature-base.d.ts.map +1 -0
- package/dist/types/features/utils/handler-cache.d.ts +22 -0
- package/dist/types/features/utils/handler-cache.d.ts.map +1 -0
- package/dist/types/features/utils/instrument-base.d.ts +27 -0
- package/dist/types/features/utils/instrument-base.d.ts.map +1 -0
- package/dist/types/features/utils/lazy-loader.d.ts +13 -0
- package/dist/types/features/utils/lazy-loader.d.ts.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/loaders/agent.d.ts +20 -0
- package/dist/types/loaders/agent.d.ts.map +1 -0
- package/dist/types/loaders/api/api.d.ts +17 -0
- package/dist/types/loaders/api/api.d.ts.map +1 -0
- package/dist/types/loaders/api/apiAsync.d.ts +2 -0
- package/dist/types/loaders/api/apiAsync.d.ts.map +1 -0
- package/dist/types/loaders/browser-agent.d.ts +9 -0
- package/dist/types/loaders/browser-agent.d.ts.map +1 -0
- package/dist/types/loaders/configure/configure.d.ts +10 -0
- package/dist/types/loaders/configure/configure.d.ts.map +1 -0
- package/dist/types/loaders/features/enabled-features.d.ts +2 -0
- package/dist/types/loaders/features/enabled-features.d.ts.map +1 -0
- package/dist/types/loaders/features/featureDependencies.d.ts +3 -0
- package/dist/types/loaders/features/featureDependencies.d.ts.map +1 -0
- package/dist/types/loaders/features/features.d.ts +18 -0
- package/dist/types/loaders/features/features.d.ts.map +1 -0
- package/dist/types/loaders/micro-agent.d.ts +25 -0
- package/dist/types/loaders/micro-agent.d.ts.map +1 -0
- package/dist/types/loaders/worker-agent.d.ts +8 -0
- package/dist/types/loaders/worker-agent.d.ts.map +1 -0
- package/package.json +231 -69
- package/src/cdn/lite.js +18 -0
- package/src/cdn/polyfills/lite.js +7 -0
- package/src/cdn/polyfills/pro.js +7 -0
- package/src/cdn/polyfills/spa.js +7 -0
- package/src/cdn/polyfills.js +17 -0
- package/src/cdn/pro.js +27 -0
- package/src/cdn/spa.js +28 -0
- package/src/cdn/worker.js +21 -0
- package/src/common/aggregate/aggregator.js +171 -0
- package/src/common/browser-version/firefox-version.js +10 -0
- package/src/common/browser-version/ios-version.js +10 -0
- package/src/common/config/config.js +12 -0
- package/src/common/config/state/configurable.js +26 -0
- package/src/common/config/state/info.js +49 -0
- package/src/common/config/state/init.js +56 -0
- package/src/common/config/state/loader-config.js +25 -0
- package/src/common/config/state/originals.js +3 -0
- package/src/common/config/state/runtime.js +45 -0
- package/src/common/constants/environment-variables.js +11 -0
- package/src/common/context/shared-context.js +21 -0
- package/src/common/deny-list/deny-list.js +116 -0
- package/src/common/drain/drain.js +119 -0
- package/src/common/event-emitter/contextual-ee.js +159 -0
- package/src/common/event-emitter/handle.js +17 -0
- package/src/common/event-emitter/register-handler.js +25 -0
- package/src/common/event-listener/event-listener-opts.js +41 -0
- package/src/common/harvest/harvest-scheduler.js +112 -0
- package/src/common/harvest/harvest.js +248 -0
- package/src/common/ids/id.js +23 -0
- package/src/common/ids/unique-id.js +81 -0
- package/src/common/metrics/framework-detection.js +71 -0
- package/src/common/metrics/paint-metrics.js +6 -0
- package/src/common/serialize/bel-serializer.js +93 -0
- package/src/common/timing/nav-timing.js +70 -0
- package/src/common/timing/now.js +9 -0
- package/src/common/unload/eol.js +63 -0
- package/src/common/url/clean-url.js +10 -0
- package/src/common/url/encode.js +75 -0
- package/src/common/url/location.js +8 -0
- package/src/common/url/parse-url.js +71 -0
- package/src/common/url/protocol.js +19 -0
- package/src/common/util/console.js +11 -0
- package/src/common/util/data-size.js +21 -0
- package/src/common/util/feature-flags.js +38 -0
- package/src/common/util/get-or-set.js +34 -0
- package/src/common/util/global-scope.js +48 -0
- package/src/common/util/map-own.js +22 -0
- package/src/common/util/map-own.test.js +52 -0
- package/src/common/util/obfuscate.js +73 -0
- package/src/common/util/s-hash.js +14 -0
- package/src/common/util/single.js +18 -0
- package/src/common/util/stringify.js +42 -0
- package/src/common/util/submit-data.js +101 -0
- package/src/common/util/traverse.js +36 -0
- package/src/common/util/user-agent.js +56 -0
- package/src/common/window/load.js +15 -0
- package/src/common/window/nreum.js +110 -0
- package/src/common/window/page-visibility.js +24 -0
- package/src/common/window/session-storage.js +75 -0
- package/src/common/window/supports-performance-observer.js +10 -0
- package/src/common/wrap/index.js +18 -0
- package/src/common/wrap/wrap-console.js +47 -0
- package/src/common/wrap/wrap-events.js +106 -0
- package/src/common/wrap/wrap-fetch.js +109 -0
- package/src/common/wrap/wrap-function.js +248 -0
- package/src/common/wrap/wrap-history.js +48 -0
- package/src/common/wrap/wrap-jsonp.js +134 -0
- package/src/common/wrap/wrap-mutation.js +55 -0
- package/src/common/wrap/wrap-promise.js +165 -0
- package/src/common/wrap/wrap-raf.js +50 -0
- package/src/common/wrap/wrap-timer.js +67 -0
- package/src/common/wrap/wrap-xhr.js +213 -0
- package/src/features/ajax/aggregate/index.js +248 -0
- package/src/features/ajax/constants.js +3 -0
- package/src/features/ajax/index.js +1 -0
- package/src/features/ajax/instrument/distributed-tracing.js +166 -0
- package/src/features/ajax/instrument/index.js +380 -0
- package/src/features/ajax/instrument/response-size.js +18 -0
- package/src/features/jserrors/aggregate/canonical-function-name.js +14 -0
- package/src/features/jserrors/aggregate/canonical-function-name.test.js +13 -0
- package/src/features/jserrors/aggregate/compute-stack-trace.js +231 -0
- package/src/features/jserrors/aggregate/compute-stack-trace.test.js +297 -0
- package/src/features/jserrors/aggregate/format-stack-trace.js +30 -0
- package/src/features/jserrors/aggregate/format-stack-trace.test.js +39 -0
- package/src/features/jserrors/aggregate/index.js +310 -0
- package/src/features/jserrors/aggregate/string-hash-code.js +17 -0
- package/src/features/jserrors/aggregate/string-hash-code.test.js +12 -0
- package/src/features/jserrors/constants.js +4 -0
- package/src/features/jserrors/index.js +1 -0
- package/src/features/jserrors/instrument/debug.js +36 -0
- package/src/features/jserrors/instrument/index.js +149 -0
- package/src/features/metrics/aggregate/index.js +134 -0
- package/src/features/metrics/constants.js +7 -0
- package/src/features/metrics/index.js +1 -0
- package/src/features/metrics/instrument/index.js +44 -0
- package/src/features/metrics/instrument/workers-helper.js +110 -0
- package/src/features/page_action/aggregate/index.js +113 -0
- package/src/features/page_action/constants.js +3 -0
- package/src/features/page_action/index.js +1 -0
- package/src/features/page_action/instrument/index.js +15 -0
- package/src/features/page_view_event/aggregate/index.js +134 -0
- package/src/features/page_view_event/aggregate/initialized-features.js +31 -0
- package/src/features/page_view_event/constants.js +6 -0
- package/src/features/page_view_event/index.js +1 -0
- package/src/features/page_view_event/instrument/index.js +33 -0
- package/src/features/page_view_timing/aggregate/index.js +246 -0
- package/src/features/page_view_timing/constants.js +3 -0
- package/src/features/page_view_timing/first-paint.js +41 -0
- package/src/features/page_view_timing/index.js +1 -0
- package/src/features/page_view_timing/instrument/index.js +30 -0
- package/src/features/page_view_timing/long-tasks.js +60 -0
- package/src/features/session_trace/aggregate/index.js +410 -0
- package/src/features/session_trace/constants.js +15 -0
- package/src/features/session_trace/index.js +1 -0
- package/src/features/session_trace/instrument/index.js +126 -0
- package/src/features/spa/aggregate/index.js +738 -0
- package/src/features/spa/aggregate/interaction-node.js +85 -0
- package/src/features/spa/aggregate/interaction-node.test.js +17 -0
- package/src/features/spa/aggregate/interaction.js +112 -0
- package/src/features/spa/aggregate/serializer.js +198 -0
- package/src/features/spa/constants.js +36 -0
- package/src/features/spa/index.js +1 -0
- package/src/features/spa/instrument/index.js +112 -0
- package/src/features/utils/aggregate-base.js +7 -0
- package/src/features/utils/feature-base.js +51 -0
- package/src/features/utils/handler-cache.js +60 -0
- package/src/features/utils/instrument-base.js +68 -0
- package/src/features/utils/lazy-loader.js +37 -0
- package/src/index.js +15 -0
- package/src/loaders/agent.js +80 -0
- package/src/loaders/api/api.js +175 -0
- package/src/loaders/api/apiAsync.js +92 -0
- package/src/loaders/browser-agent.js +33 -0
- package/src/loaders/configure/configure.js +39 -0
- package/src/loaders/features/enabled-features.js +16 -0
- package/src/loaders/features/featureDependencies.js +26 -0
- package/src/loaders/features/features.js +25 -0
- package/src/loaders/micro-agent.js +84 -0
- package/src/loaders/worker-agent.js +24 -0
- package/dist/bundled/es5/index.js +0 -2
- package/dist/bundled/es5/index.js.map +0 -1
- package/dist/bundled/es6/index.js +0 -2
- package/dist/bundled/es6/index.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -19
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/types.d.ts +0 -94
- package/dist/cjs/types.js +0 -28
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/utils/api/api.d.ts +0 -10
- package/dist/cjs/utils/api/api.js +0 -40
- package/dist/cjs/utils/api/api.js.map +0 -1
- package/dist/cjs/utils/config/build-configs.d.ts +0 -6
- package/dist/cjs/utils/config/build-configs.js +0 -68
- package/dist/cjs/utils/config/build-configs.js.map +0 -1
- package/dist/cjs/utils/features/features.d.ts +0 -5
- package/dist/cjs/utils/features/features.js +0 -14
- package/dist/cjs/utils/features/features.js.map +0 -1
- package/dist/cjs/utils/features/initialize.d.ts +0 -5
- package/dist/cjs/utils/features/initialize.js +0 -51
- package/dist/cjs/utils/features/initialize.js.map +0 -1
- package/dist/es/index.d.ts +0 -19
- package/dist/es/index.js +0 -55
- package/dist/es/index.js.map +0 -1
- package/dist/es/types.d.ts +0 -94
- package/dist/es/types.js +0 -24
- package/dist/es/types.js.map +0 -1
- package/dist/es/utils/api/api.d.ts +0 -10
- package/dist/es/utils/api/api.js +0 -36
- package/dist/es/utils/api/api.js.map +0 -1
- package/dist/es/utils/config/build-configs.d.ts +0 -6
- package/dist/es/utils/config/build-configs.js +0 -64
- package/dist/es/utils/config/build-configs.js.map +0 -1
- package/dist/es/utils/features/features.d.ts +0 -5
- package/dist/es/utils/features/features.js +0 -10
- package/dist/es/utils/features/features.js.map +0 -1
- package/dist/es/utils/features/initialize.d.ts +0 -5
- package/dist/es/utils/features/initialize.js +0 -24
- package/dist/es/utils/features/initialize.js.map +0 -1
- package/dist/umd/index.d.ts +0 -19
- package/dist/umd/index.js +0 -69
- package/dist/umd/index.js.map +0 -1
- package/dist/umd/types.d.ts +0 -94
- package/dist/umd/types.js +0 -38
- package/dist/umd/types.js.map +0 -1
- package/dist/umd/utils/api/api.d.ts +0 -10
- package/dist/umd/utils/api/api.js +0 -50
- package/dist/umd/utils/api/api.js.map +0 -1
- package/dist/umd/utils/config/build-configs.d.ts +0 -6
- package/dist/umd/utils/config/build-configs.js +0 -78
- package/dist/umd/utils/config/build-configs.js.map +0 -1
- package/dist/umd/utils/features/features.d.ts +0 -5
- package/dist/umd/utils/features/features.js +0 -24
- package/dist/umd/utils/features/features.js.map +0 -1
- package/dist/umd/utils/features/initialize.d.ts +0 -5
- package/dist/umd/utils/features/initialize.js +0 -63
- package/dist/umd/utils/features/initialize.js.map +0 -1
- package/dist/webpack-analysis.html +0 -38
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ee = void 0;
|
|
7
|
+
exports.getOrSetContext = getOrSetContext;
|
|
8
|
+
var _nreum = require("../window/nreum");
|
|
9
|
+
var _getOrSet = require("../util/get-or-set");
|
|
10
|
+
var _mapOwn = require("../util/map-own");
|
|
11
|
+
var _config = require("../config/config");
|
|
12
|
+
/*
|
|
13
|
+
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
14
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
var ctxId = 'nr@context';
|
|
18
|
+
|
|
19
|
+
// create global emitter instance that can be shared among bundles
|
|
20
|
+
let nr = (0, _nreum.gosNREUM)();
|
|
21
|
+
var globalInstance;
|
|
22
|
+
exports.ee = globalInstance;
|
|
23
|
+
if (nr.ee) {
|
|
24
|
+
exports.ee = globalInstance = nr.ee;
|
|
25
|
+
} else {
|
|
26
|
+
exports.ee = globalInstance = ee(undefined, 'globalEE');
|
|
27
|
+
nr.ee = globalInstance;
|
|
28
|
+
}
|
|
29
|
+
function EventContext() {}
|
|
30
|
+
function ee(old, debugId) {
|
|
31
|
+
var handlers = {};
|
|
32
|
+
var bufferGroupMap = {};
|
|
33
|
+
var emitters = {};
|
|
34
|
+
// In cases where multiple agents can run on a page, the event backlogs of feature event emitters must be isolated
|
|
35
|
+
// to prevent event emitter context and buffers from "bubbling up" to other agents operating in the scope.
|
|
36
|
+
// An example of this is our MicroAgent loader package, which sets this property to true to prevent overlap.
|
|
37
|
+
var isolatedBacklog = false;
|
|
38
|
+
try {
|
|
39
|
+
// We only want to check the runtime configuration for `isolatedBacklog` if the event emitter belongs to a feature.
|
|
40
|
+
// For feature event emitters, the debugId will be an agentIdentifier with a length of 16. In contrast, some of our
|
|
41
|
+
// tests do not namespace the event emitter with an agentID and just use the parent (which has no ID).
|
|
42
|
+
isolatedBacklog = debugId.length !== 16 ? false : (0, _config.getRuntime)(debugId).isolatedBacklog;
|
|
43
|
+
} catch (err) {
|
|
44
|
+
// Do nothing for now.
|
|
45
|
+
}
|
|
46
|
+
var emitter = {
|
|
47
|
+
on: addEventListener,
|
|
48
|
+
addEventListener: addEventListener,
|
|
49
|
+
removeEventListener: removeEventListener,
|
|
50
|
+
emit: emit,
|
|
51
|
+
get: getOrCreate,
|
|
52
|
+
listeners: listeners,
|
|
53
|
+
context: context,
|
|
54
|
+
buffer: bufferEventsByGroup,
|
|
55
|
+
abort,
|
|
56
|
+
aborted: false,
|
|
57
|
+
isBuffering: isBuffering,
|
|
58
|
+
debugId,
|
|
59
|
+
backlog: isolatedBacklog ? {} : old && typeof old.backlog === 'object' ? old.backlog : {}
|
|
60
|
+
};
|
|
61
|
+
return emitter;
|
|
62
|
+
function context(contextOrStore) {
|
|
63
|
+
if (contextOrStore && contextOrStore instanceof EventContext) {
|
|
64
|
+
return contextOrStore;
|
|
65
|
+
} else if (contextOrStore) {
|
|
66
|
+
return (0, _getOrSet.getOrSet)(contextOrStore, ctxId, getNewContext);
|
|
67
|
+
} else {
|
|
68
|
+
return getNewContext();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function emit(type, args, contextOrStore, force, bubble) {
|
|
72
|
+
if (bubble !== false) bubble = true;
|
|
73
|
+
if (globalInstance.aborted && !force) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (old && bubble) old.emit(type, args, contextOrStore);
|
|
77
|
+
var ctx = context(contextOrStore);
|
|
78
|
+
var handlersArray = listeners(type);
|
|
79
|
+
var len = handlersArray.length;
|
|
80
|
+
|
|
81
|
+
// Apply each handler function in the order they were added
|
|
82
|
+
// to the context with the arguments
|
|
83
|
+
|
|
84
|
+
for (var i = 0; i < len; i++) handlersArray[i].apply(ctx, args);
|
|
85
|
+
|
|
86
|
+
// Buffer after emitting for consistent ordering
|
|
87
|
+
var bufferGroup = getBuffer()[bufferGroupMap[type]];
|
|
88
|
+
if (bufferGroup) {
|
|
89
|
+
bufferGroup.push([emitter, type, args, ctx]);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Return the context so that the module that emitted can see what was done.
|
|
93
|
+
return ctx;
|
|
94
|
+
}
|
|
95
|
+
function addEventListener(type, fn) {
|
|
96
|
+
// Retrieve type from handlers, if it doesn't exist assign the default and retrieve it.
|
|
97
|
+
handlers[type] = listeners(type).concat(fn);
|
|
98
|
+
}
|
|
99
|
+
function removeEventListener(type, fn) {
|
|
100
|
+
var listeners = handlers[type];
|
|
101
|
+
if (!listeners) return;
|
|
102
|
+
for (var i = 0; i < listeners.length; i++) {
|
|
103
|
+
if (listeners[i] === fn) {
|
|
104
|
+
listeners.splice(i, 1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function listeners(type) {
|
|
109
|
+
return handlers[type] || [];
|
|
110
|
+
}
|
|
111
|
+
function getOrCreate(name) {
|
|
112
|
+
return emitters[name] = emitters[name] || ee(emitter, name);
|
|
113
|
+
}
|
|
114
|
+
function bufferEventsByGroup(types, group) {
|
|
115
|
+
var eventBuffer = getBuffer();
|
|
116
|
+
|
|
117
|
+
// do not buffer events if agent has been aborted
|
|
118
|
+
if (emitter.aborted) return;
|
|
119
|
+
(0, _mapOwn.mapOwn)(types, function (i, type) {
|
|
120
|
+
group = group || 'feature';
|
|
121
|
+
bufferGroupMap[type] = group;
|
|
122
|
+
if (!(group in eventBuffer)) {
|
|
123
|
+
eventBuffer[group] = [];
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function isBuffering(type) {
|
|
128
|
+
var bufferGroup = getBuffer()[bufferGroupMap[type]];
|
|
129
|
+
return !!bufferGroup;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// buffer is associated with a base emitter, since there are two
|
|
133
|
+
// (global and scoped to the current bundle), it is now part of the emitter
|
|
134
|
+
function getBuffer() {
|
|
135
|
+
return emitter.backlog;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// get context object from store object, or create if does not exist
|
|
140
|
+
function getOrSetContext(obj) {
|
|
141
|
+
return (0, _getOrSet.getOrSet)(obj, ctxId, getNewContext);
|
|
142
|
+
}
|
|
143
|
+
function getNewContext() {
|
|
144
|
+
return new EventContext();
|
|
145
|
+
}
|
|
146
|
+
function abort() {
|
|
147
|
+
globalInstance.aborted = true;
|
|
148
|
+
globalInstance.backlog = {};
|
|
149
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.handle = handle;
|
|
7
|
+
exports.handleEE = void 0;
|
|
8
|
+
var _contextualEe = require("./contextual-ee");
|
|
9
|
+
/*
|
|
10
|
+
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
11
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
var handleEE = _contextualEe.ee.get('handle');
|
|
15
|
+
exports.handleEE = handleEE;
|
|
16
|
+
function handle(type, args, ctx, group, ee) {
|
|
17
|
+
if (ee) {
|
|
18
|
+
ee.buffer([type], group);
|
|
19
|
+
ee.emit(type, args, ctx);
|
|
20
|
+
} else {
|
|
21
|
+
handleEE.buffer([type], group);
|
|
22
|
+
handleEE.emit(type, args, ctx);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.defaultRegister = exports.registerHandler = defaultRegister;
|
|
7
|
+
var _handle = require("./handle");
|
|
8
|
+
/*
|
|
9
|
+
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
10
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
defaultRegister.on = registerWithSpecificEmitter;
|
|
14
|
+
var handlers = defaultRegister.handlers = {};
|
|
15
|
+
function defaultRegister(type, handler, group, ee) {
|
|
16
|
+
registerWithSpecificEmitter(ee || _handle.handleEE, handlers, type, handler, group);
|
|
17
|
+
}
|
|
18
|
+
function registerWithSpecificEmitter(ee, handlers, type, handler, group) {
|
|
19
|
+
if (!group) group = 'feature';
|
|
20
|
+
if (!ee) ee = _handle.handleEE;
|
|
21
|
+
var groupHandlers = handlers[group] = handlers[group] || {};
|
|
22
|
+
var list = groupHandlers[type] = groupHandlers[type] || [];
|
|
23
|
+
list.push([ee, handler]);
|
|
24
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.documentAddEventListener = documentAddEventListener;
|
|
7
|
+
exports.eventListenerOpts = eventListenerOpts;
|
|
8
|
+
exports.windowAddEventListener = windowAddEventListener;
|
|
9
|
+
var _globalScope = require("../util/global-scope");
|
|
10
|
+
/*
|
|
11
|
+
* See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#safely_detecting_option_support
|
|
12
|
+
*/
|
|
13
|
+
let passiveSupported = false;
|
|
14
|
+
let signalSupported = false;
|
|
15
|
+
try {
|
|
16
|
+
const options = {
|
|
17
|
+
get passive() {
|
|
18
|
+
// this function will be called when the browser attempts to access the passive property
|
|
19
|
+
passiveSupported = true;
|
|
20
|
+
return false;
|
|
21
|
+
},
|
|
22
|
+
get signal() {
|
|
23
|
+
signalSupported = true;
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
_globalScope.globalScope.addEventListener('test', null, options);
|
|
28
|
+
_globalScope.globalScope.removeEventListener('test', null, options);
|
|
29
|
+
} catch (err) {}
|
|
30
|
+
function eventListenerOpts(useCapture, abortSignal) {
|
|
31
|
+
return passiveSupported || signalSupported ? {
|
|
32
|
+
capture: !!useCapture,
|
|
33
|
+
passive: passiveSupported,
|
|
34
|
+
// passive defaults to false
|
|
35
|
+
signal: abortSignal
|
|
36
|
+
} : !!useCapture; // mainly just IE11 doesn't support third param options under EventTarget API
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Do not use this within the worker context. */
|
|
40
|
+
function windowAddEventListener(event, listener) {
|
|
41
|
+
let capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
42
|
+
window.addEventListener(event, listener, eventListenerOpts(capture));
|
|
43
|
+
}
|
|
44
|
+
/** Do not use this within the worker context. */
|
|
45
|
+
function documentAddEventListener(event, listener) {
|
|
46
|
+
let capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
47
|
+
document.addEventListener(event, listener, eventListenerOpts(capture));
|
|
48
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.HarvestScheduler = void 0;
|
|
7
|
+
var _submitData = require("../util/submit-data");
|
|
8
|
+
var _sharedContext = require("../context/shared-context");
|
|
9
|
+
var _harvest = require("./harvest");
|
|
10
|
+
var _eol = require("../unload/eol");
|
|
11
|
+
var _config = require("../config/config");
|
|
12
|
+
/*
|
|
13
|
+
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
14
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Periodically invokes harvest calls and handles retries
|
|
19
|
+
*/
|
|
20
|
+
class HarvestScheduler extends _sharedContext.SharedContext {
|
|
21
|
+
constructor(endpoint, opts, parent) {
|
|
22
|
+
super(parent); // gets any allowed properties from the parent and stores them in `sharedContext`
|
|
23
|
+
this.endpoint = endpoint;
|
|
24
|
+
this.opts = opts || {};
|
|
25
|
+
this.started = false;
|
|
26
|
+
this.timeoutHandle = null;
|
|
27
|
+
this.aborted = false; // this controls the per-interval and final harvests for the scheduler (currently per feature specific!)
|
|
28
|
+
|
|
29
|
+
this.harvest = new _harvest.Harvest(this.sharedContext);
|
|
30
|
+
(0, _eol.subscribeToEOL)(() => {
|
|
31
|
+
if (this.aborted) return;
|
|
32
|
+
|
|
33
|
+
// If opts.onUnload is defined, these are special actions to execute before attempting to send the final payload.
|
|
34
|
+
if (this.opts.onUnload) this.opts.onUnload();
|
|
35
|
+
this.runHarvest({
|
|
36
|
+
unload: true
|
|
37
|
+
});
|
|
38
|
+
}, (0, _config.getConfigurationValue)(this.sharedContext.agentIdentifier, 'allow_bfcache')); // TO DO: remove feature flag after rls stable
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
startTimer(interval, initialDelay) {
|
|
42
|
+
this.interval = interval;
|
|
43
|
+
this.started = true;
|
|
44
|
+
this.scheduleHarvest(initialDelay != null ? initialDelay : this.interval);
|
|
45
|
+
}
|
|
46
|
+
stopTimer() {
|
|
47
|
+
let permanently = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
48
|
+
this.aborted = permanently; // stopping permanently is same as aborting, but this function also cleans up the setTimeout loop
|
|
49
|
+
this.started = false;
|
|
50
|
+
if (this.timeoutHandle) {
|
|
51
|
+
clearTimeout(this.timeoutHandle);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
scheduleHarvest(delay, opts) {
|
|
55
|
+
if (this.timeoutHandle) return;
|
|
56
|
+
var timer = this;
|
|
57
|
+
if (delay == null) {
|
|
58
|
+
delay = this.interval;
|
|
59
|
+
}
|
|
60
|
+
this.timeoutHandle = setTimeout(() => {
|
|
61
|
+
timer.timeoutHandle = null;
|
|
62
|
+
timer.runHarvest(opts);
|
|
63
|
+
}, delay * 1000);
|
|
64
|
+
}
|
|
65
|
+
runHarvest(opts) {
|
|
66
|
+
if (this.aborted) return;
|
|
67
|
+
var scheduler = this;
|
|
68
|
+
if (this.opts.getPayload) {
|
|
69
|
+
// Ajax & PVT
|
|
70
|
+
var submitMethod = (0, _harvest.getSubmitMethod)(this.endpoint, opts);
|
|
71
|
+
if (!submitMethod) return false;
|
|
72
|
+
var retry = submitMethod.method === _submitData.submitData.xhr;
|
|
73
|
+
var payload = this.opts.getPayload({
|
|
74
|
+
retry: retry
|
|
75
|
+
});
|
|
76
|
+
if (payload) {
|
|
77
|
+
payload = Object.prototype.toString.call(payload) === '[object Array]' ? payload : [payload];
|
|
78
|
+
for (var i = 0; i < payload.length; i++) {
|
|
79
|
+
this.harvest.send(this.endpoint, payload[i], opts, submitMethod, onHarvestFinished);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
const runAfterSending = opts?.unload ? undefined : onHarvestFinished; // don't bother running onFinish handler if this is the final harvest
|
|
84
|
+
this.harvest.sendX(this.endpoint, opts, runAfterSending);
|
|
85
|
+
}
|
|
86
|
+
if (this.started) {
|
|
87
|
+
this.scheduleHarvest();
|
|
88
|
+
}
|
|
89
|
+
return;
|
|
90
|
+
function onHarvestFinished(result) {
|
|
91
|
+
if (result.blocked) scheduler.onHarvestBlocked(opts, result);else scheduler.onHarvestFinished(opts, result);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
onHarvestFinished(opts, result) {
|
|
95
|
+
if (this.opts.onFinished) {
|
|
96
|
+
this.opts.onFinished(result);
|
|
97
|
+
}
|
|
98
|
+
if (result.sent && result.retry) {
|
|
99
|
+
var delay = result.delay || this.opts.retryDelay;
|
|
100
|
+
// reschedule next harvest if should be delayed longer
|
|
101
|
+
if (this.started && delay) {
|
|
102
|
+
clearTimeout(this.timeoutHandle);
|
|
103
|
+
this.timeoutHandle = null;
|
|
104
|
+
this.scheduleHarvest(delay, opts);
|
|
105
|
+
} else if (!this.started && delay) {
|
|
106
|
+
// if not running on a timer, schedule a single retry
|
|
107
|
+
this.scheduleHarvest(delay, opts);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.HarvestScheduler = HarvestScheduler;
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Harvest = void 0;
|
|
7
|
+
exports.getSubmitMethod = getSubmitMethod;
|
|
8
|
+
var _mapOwn = require("../util/map-own");
|
|
9
|
+
var _encode = require("../url/encode");
|
|
10
|
+
var _stringify = require("../util/stringify");
|
|
11
|
+
var _submitData = require("../util/submit-data");
|
|
12
|
+
var _location = require("../url/location");
|
|
13
|
+
var _config = require("../config/config");
|
|
14
|
+
var _cleanUrl = require("../url/clean-url");
|
|
15
|
+
var _now = require("../timing/now");
|
|
16
|
+
var _eventListenerOpts = require("../event-listener/event-listener-opts");
|
|
17
|
+
var _obfuscate = require("../util/obfuscate");
|
|
18
|
+
var _traverse = require("../util/traverse");
|
|
19
|
+
var _sharedContext = require("../context/shared-context");
|
|
20
|
+
var _environmentVariables = require("../constants/environment-variables");
|
|
21
|
+
var _globalScope = require("../util/global-scope");
|
|
22
|
+
/*
|
|
23
|
+
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
24
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const haveSendBeacon = !!navigator.sendBeacon; // only the web window obj has sendBeacon at this time, so 'false' for other envs
|
|
28
|
+
|
|
29
|
+
class Harvest extends _sharedContext.SharedContext {
|
|
30
|
+
constructor(parent) {
|
|
31
|
+
super(parent); // gets any allowed properties from the parent and stores them in `sharedContext`
|
|
32
|
+
|
|
33
|
+
this.tooManyRequestsDelay = (0, _config.getConfigurationValue)(this.sharedContext.agentIdentifier, 'harvest.tooManyRequestsDelay') || 60;
|
|
34
|
+
this.obfuscator = new _obfuscate.Obfuscator(this.sharedContext);
|
|
35
|
+
this.getScheme = () => (0, _config.getConfigurationValue)(this.sharedContext.agentIdentifier, 'ssl') === false ? 'http' : 'https';
|
|
36
|
+
this._events = {};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Initiate a harvest from multiple sources. An event that corresponds to the endpoint
|
|
41
|
+
* name is emitted, which gives any listeners the opportunity to provide payload data.
|
|
42
|
+
*
|
|
43
|
+
* @param {string} endpoint - The endpoint of the harvest (jserrors, events, resources etc.)
|
|
44
|
+
*
|
|
45
|
+
* @param {object} opts
|
|
46
|
+
* @param {bool} opts.needResponse - Specify whether the caller expects a response data.
|
|
47
|
+
* @param {bool} opts.unload - Specify whether the call is a final harvest during page unload.
|
|
48
|
+
*/
|
|
49
|
+
sendX(endpoint, opts, cbFinished) {
|
|
50
|
+
var submitMethod = getSubmitMethod(endpoint, opts);
|
|
51
|
+
if (!submitMethod) return false;
|
|
52
|
+
var options = {
|
|
53
|
+
retry: submitMethod.method === _submitData.submitData.xhr
|
|
54
|
+
};
|
|
55
|
+
return this.obfuscator.shouldObfuscate() ? this.obfuscateAndSend(endpoint, this.createPayload(endpoint, options), opts, submitMethod, cbFinished) : this._send(endpoint, this.createPayload(endpoint, options), opts, submitMethod, cbFinished);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Initiate a harvest call.
|
|
60
|
+
*
|
|
61
|
+
* @param {string} endpoint - The endpoint of the harvest (jserrors, events, resources etc.)
|
|
62
|
+
* @param {object} nr - The loader singleton.
|
|
63
|
+
*
|
|
64
|
+
* @param {object} singlePayload - Object representing payload.
|
|
65
|
+
* @param {object} singlePayload.qs - Map of values that should be sent as part of the request query string.
|
|
66
|
+
* @param {string} singlePayload.body - String that should be sent as the body of the request.
|
|
67
|
+
* @param {string} singlePayload.body.e - Special case of body used for browser interactions.
|
|
68
|
+
*
|
|
69
|
+
* @param {object} opts
|
|
70
|
+
* @param {bool} opts.needResponse - Specify whether the caller expects a response data.
|
|
71
|
+
* @param {bool} opts.unload - Specify whether the call is a final harvest during page unload.
|
|
72
|
+
*/
|
|
73
|
+
send(endpoint, singlePayload, opts, submitMethod, cbFinished) {
|
|
74
|
+
var _this = this;
|
|
75
|
+
var makeBody = createAccumulator();
|
|
76
|
+
var makeQueryString = createAccumulator();
|
|
77
|
+
if (singlePayload.body) (0, _mapOwn.mapOwn)(singlePayload.body, makeBody);
|
|
78
|
+
if (singlePayload.qs) (0, _mapOwn.mapOwn)(singlePayload.qs, makeQueryString);
|
|
79
|
+
var payload = {
|
|
80
|
+
body: makeBody(),
|
|
81
|
+
qs: makeQueryString()
|
|
82
|
+
};
|
|
83
|
+
var caller = this.obfuscator.shouldObfuscate() ? function () {
|
|
84
|
+
return _this.obfuscateAndSend(...arguments);
|
|
85
|
+
} : function () {
|
|
86
|
+
return _this._send(...arguments);
|
|
87
|
+
};
|
|
88
|
+
return caller(endpoint, payload, opts, submitMethod, cbFinished);
|
|
89
|
+
}
|
|
90
|
+
obfuscateAndSend(endpoint, payload, opts, submitMethod, cbFinished) {
|
|
91
|
+
var _this2 = this;
|
|
92
|
+
(0, _traverse.applyFnToProps)(payload, function () {
|
|
93
|
+
return _this2.obfuscator.obfuscateString(...arguments);
|
|
94
|
+
}, 'string', ['e']);
|
|
95
|
+
return this._send(endpoint, payload, opts, submitMethod, cbFinished);
|
|
96
|
+
}
|
|
97
|
+
_send(endpoint, payload, opts, submitMethod, cbFinished) {
|
|
98
|
+
var info = (0, _config.getInfo)(this.sharedContext.agentIdentifier);
|
|
99
|
+
if (!info.errorBeacon) return false;
|
|
100
|
+
var agentRuntime = (0, _config.getRuntime)(this.sharedContext.agentIdentifier);
|
|
101
|
+
if (!payload.body) {
|
|
102
|
+
// no payload body? nothing to send, just run onfinish stuff and return
|
|
103
|
+
if (cbFinished) {
|
|
104
|
+
cbFinished({
|
|
105
|
+
sent: false
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
if (!opts) opts = {};
|
|
111
|
+
var url = this.getScheme() + '://' + info.errorBeacon + '/' + endpoint + '/1/' + info.licenseKey + this.baseQueryString();
|
|
112
|
+
if (payload.qs) url += (0, _encode.obj)(payload.qs, agentRuntime.maxBytes);
|
|
113
|
+
if (!submitMethod) {
|
|
114
|
+
submitMethod = getSubmitMethod(endpoint, opts);
|
|
115
|
+
}
|
|
116
|
+
var method = submitMethod.method;
|
|
117
|
+
var useBody = submitMethod.useBody;
|
|
118
|
+
var body;
|
|
119
|
+
var fullUrl = url;
|
|
120
|
+
if (useBody && endpoint === 'events') {
|
|
121
|
+
body = payload.body.e;
|
|
122
|
+
} else if (useBody) {
|
|
123
|
+
body = (0, _stringify.stringify)(payload.body);
|
|
124
|
+
} else {
|
|
125
|
+
fullUrl = url + (0, _encode.obj)(payload.body, agentRuntime.maxBytes);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Get bytes harvested per endpoint as a supportability metric. See metrics aggregator (on unload).
|
|
129
|
+
agentRuntime.bytesSent[endpoint] = (agentRuntime.bytesSent[endpoint] || 0) + body?.length || 0;
|
|
130
|
+
|
|
131
|
+
/* Since workers don't support sendBeacon right now, or Image(), they can only use XHR method.
|
|
132
|
+
Because they still do permit synch XHR, the idea is that at final harvest time (worker is closing),
|
|
133
|
+
we just make a BLOCKING request--trivial impact--with the remaining data as a temp fill-in for sendBeacon. */
|
|
134
|
+
var result = method(fullUrl, body, opts.unload && _globalScope.isWorkerScope);
|
|
135
|
+
if (cbFinished && method === _submitData.submitData.xhr) {
|
|
136
|
+
var xhr = result;
|
|
137
|
+
xhr.addEventListener('load', function () {
|
|
138
|
+
var result = {
|
|
139
|
+
sent: true
|
|
140
|
+
};
|
|
141
|
+
if (this.status === 429) {
|
|
142
|
+
result.retry = true;
|
|
143
|
+
result.delay = this.tooManyRequestsDelay;
|
|
144
|
+
} else if (this.status === 408 || this.status === 500 || this.status === 503) {
|
|
145
|
+
result.retry = true;
|
|
146
|
+
}
|
|
147
|
+
if (opts.needResponse) {
|
|
148
|
+
result.responseText = this.responseText;
|
|
149
|
+
}
|
|
150
|
+
cbFinished(result);
|
|
151
|
+
}, (0, _eventListenerOpts.eventListenerOpts)(false));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// if beacon request failed, retry with an alternative method -- will not happen for workers
|
|
155
|
+
if (!result && method === _submitData.submitData.beacon) {
|
|
156
|
+
method = _submitData.submitData.img;
|
|
157
|
+
result = method(url + (0, _encode.obj)(payload.body, agentRuntime.maxBytes));
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// The stuff that gets sent every time.
|
|
163
|
+
baseQueryString() {
|
|
164
|
+
var runtime = (0, _config.getRuntime)(this.sharedContext.agentIdentifier);
|
|
165
|
+
var info = (0, _config.getInfo)(this.sharedContext.agentIdentifier);
|
|
166
|
+
var location = (0, _cleanUrl.cleanURL)((0, _location.getLocation)());
|
|
167
|
+
var ref = this.obfuscator.shouldObfuscate() ? this.obfuscator.obfuscateString(location) : location;
|
|
168
|
+
return ['?a=' + info.applicationID, (0, _encode.param)('sa', info.sa ? '' + info.sa : ''), (0, _encode.param)('v', _environmentVariables.VERSION), transactionNameParam(info), (0, _encode.param)('ct', runtime.customTransaction), '&rst=' + (0, _now.now)(), '&ck=0',
|
|
169
|
+
// ck param DEPRECATED - still expected by backend
|
|
170
|
+
'&s=' + (runtime.sessionId || '0'),
|
|
171
|
+
// the 0 id encaps all untrackable and default traffic
|
|
172
|
+
(0, _encode.param)('ref', ref), (0, _encode.param)('ptid', runtime.ptid ? '' + runtime.ptid : '')].join('');
|
|
173
|
+
}
|
|
174
|
+
createPayload(type, options) {
|
|
175
|
+
var makeBody = createAccumulator();
|
|
176
|
+
var makeQueryString = createAccumulator();
|
|
177
|
+
var listeners = this._events[type] && this._events[type] || [];
|
|
178
|
+
for (var i = 0; i < listeners.length; i++) {
|
|
179
|
+
var singlePayload = listeners[i](options);
|
|
180
|
+
if (!singlePayload) continue;
|
|
181
|
+
if (singlePayload.body) (0, _mapOwn.mapOwn)(singlePayload.body, makeBody);
|
|
182
|
+
if (singlePayload.qs) (0, _mapOwn.mapOwn)(singlePayload.qs, makeQueryString);
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
body: makeBody(),
|
|
186
|
+
qs: makeQueryString()
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
on(type, listener) {
|
|
190
|
+
var listeners = this._events[type] || (this._events[type] = []);
|
|
191
|
+
listeners.push(listener);
|
|
192
|
+
}
|
|
193
|
+
resetListeners() {
|
|
194
|
+
(0, _mapOwn.mapOwn)(this._events, key => {
|
|
195
|
+
this._events[key] = [];
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.Harvest = Harvest;
|
|
200
|
+
function or(a, b) {
|
|
201
|
+
return a || b;
|
|
202
|
+
}
|
|
203
|
+
function getSubmitMethod(endpoint, opts) {
|
|
204
|
+
opts = opts || {};
|
|
205
|
+
var method;
|
|
206
|
+
var useBody;
|
|
207
|
+
if (opts.needResponse) {
|
|
208
|
+
// currently: only STN needs a response
|
|
209
|
+
useBody = true;
|
|
210
|
+
method = _submitData.submitData.xhr;
|
|
211
|
+
} else if (opts.unload && _globalScope.isBrowserScope) {
|
|
212
|
+
// all the features' final harvest; neither methods work outside window context
|
|
213
|
+
useBody = haveSendBeacon;
|
|
214
|
+
method = haveSendBeacon ? _submitData.submitData.beacon : _submitData.submitData.img; // really only IE doesn't have Beacon API for web browsers
|
|
215
|
+
} else {
|
|
216
|
+
// `submitData.beacon` was removed, there is an upper limit to the
|
|
217
|
+
// number of data allowed before it starts failing, so we save it only for page unloading
|
|
218
|
+
useBody = true;
|
|
219
|
+
method = _submitData.submitData.xhr;
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
method: method,
|
|
223
|
+
useBody: useBody
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Constructs the transaction name param for the beacon URL.
|
|
228
|
+
// Prefers the obfuscated transaction name over the plain text.
|
|
229
|
+
// Falls back to making up a name.
|
|
230
|
+
function transactionNameParam(info) {
|
|
231
|
+
if (info.transactionName) return (0, _encode.param)('to', info.transactionName);
|
|
232
|
+
return (0, _encode.param)('t', info.tNamePlain || 'Unnamed Transaction');
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// returns a function that can be called to accumulate values to a single object
|
|
236
|
+
// when the function is called without parameters, then the accumulator is returned
|
|
237
|
+
function createAccumulator() {
|
|
238
|
+
var accumulator = {};
|
|
239
|
+
var hasData = false;
|
|
240
|
+
return function (key, val) {
|
|
241
|
+
if (val && val.length) {
|
|
242
|
+
accumulator[key] = val;
|
|
243
|
+
hasData = true;
|
|
244
|
+
}
|
|
245
|
+
if (hasData) return accumulator;
|
|
246
|
+
};
|
|
247
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.id = id;
|
|
7
|
+
var _getOrSet = require("../util/get-or-set");
|
|
8
|
+
var _globalScope = require("../util/global-scope");
|
|
9
|
+
/*
|
|
10
|
+
* Copyright 2020 New Relic Corporation. All rights reserved.
|
|
11
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
// Start assigning ids at 1 so 0 can always be used for WindowOrWorkerGlobalScope, without
|
|
15
|
+
// actually setting it (which would create a global variable).
|
|
16
|
+
|
|
17
|
+
var index = 1;
|
|
18
|
+
var prop = 'nr@id';
|
|
19
|
+
|
|
20
|
+
// Always returns id of obj, may tag obj with an id in the process.
|
|
21
|
+
function id(obj) {
|
|
22
|
+
var type = typeof obj;
|
|
23
|
+
// We can only tag objects, functions, and arrays with ids.
|
|
24
|
+
// For all primitive values we instead return -1.
|
|
25
|
+
if (!obj || !(type === 'object' || type === 'function')) return -1;
|
|
26
|
+
if (obj === _globalScope.globalScope) return 0;
|
|
27
|
+
return (0, _getOrSet.getOrSet)(obj, prop, function () {
|
|
28
|
+
return index++;
|
|
29
|
+
});
|
|
30
|
+
}
|