@newrelic/browser-agent 1.263.0 → 1.265.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +2 -2
  3. package/dist/cjs/cdn/experimental.js +3 -7
  4. package/dist/cjs/cdn/pro.js +2 -2
  5. package/dist/cjs/cdn/spa.js +2 -2
  6. package/dist/cjs/common/aggregate/aggregator.js +2 -3
  7. package/dist/cjs/common/config/{state/configurable.js → configurable.js} +1 -1
  8. package/dist/cjs/common/config/{state/info.js → info.js} +1 -1
  9. package/dist/cjs/common/config/{state/init.js → init.js} +11 -8
  10. package/dist/cjs/common/config/{state/loader-config.js → loader-config.js} +1 -1
  11. package/dist/cjs/common/config/{state/runtime.js → runtime.js} +16 -5
  12. package/dist/cjs/common/constants/agent-constants.js +8 -0
  13. package/dist/cjs/common/constants/env.cdn.js +1 -1
  14. package/dist/cjs/common/constants/env.npm.js +1 -1
  15. package/dist/cjs/common/constants/runtime.js +1 -3
  16. package/dist/cjs/common/context/shared-context.js +1 -2
  17. package/dist/cjs/common/dispatch/global-event.js +1 -2
  18. package/dist/cjs/common/drain/drain.js +12 -18
  19. package/dist/cjs/common/event-emitter/contextual-ee.js +3 -4
  20. package/dist/cjs/common/event-listener/event-listener-opts.js +2 -6
  21. package/dist/cjs/common/harvest/harvest-scheduler.js +1 -2
  22. package/dist/cjs/common/harvest/harvest.js +30 -57
  23. package/dist/cjs/common/serialize/bel-serializer.js +6 -11
  24. package/dist/cjs/common/session/session-entity.js +10 -13
  25. package/dist/cjs/common/timing/nav-timing.js +1 -3
  26. package/dist/cjs/common/timing/time-keeper.js +16 -6
  27. package/dist/cjs/common/url/encode.js +3 -7
  28. package/dist/cjs/common/util/console.js +2 -0
  29. package/dist/cjs/common/util/invoke.js +6 -16
  30. package/dist/cjs/common/util/obfuscate.js +97 -53
  31. package/dist/cjs/common/util/submit-data.js +17 -21
  32. package/dist/cjs/common/util/text.js +9 -0
  33. package/dist/cjs/common/util/traverse.js +1 -3
  34. package/dist/cjs/common/vitals/cumulative-layout-shift.js +5 -6
  35. package/dist/cjs/common/vitals/first-contentful-paint.js +4 -5
  36. package/dist/cjs/common/vitals/first-input-delay.js +4 -5
  37. package/dist/cjs/common/vitals/interaction-to-next-paint.js +5 -6
  38. package/dist/cjs/common/vitals/largest-contentful-paint.js +4 -5
  39. package/dist/cjs/common/vitals/time-to-first-byte.js +4 -5
  40. package/dist/cjs/common/vitals/vital-metric.js +5 -7
  41. package/dist/cjs/common/window/nreum.js +2 -1
  42. package/dist/cjs/common/window/page-visibility.js +1 -4
  43. package/dist/cjs/common/wrap/wrap-events.js +1 -4
  44. package/dist/cjs/common/wrap/wrap-promise.js +1 -4
  45. package/dist/cjs/common/wrap/wrap-websocket.js +74 -0
  46. package/dist/cjs/features/ajax/aggregate/chunk.js +4 -3
  47. package/dist/cjs/features/ajax/aggregate/gql.js +4 -5
  48. package/dist/cjs/features/ajax/aggregate/index.js +19 -22
  49. package/dist/cjs/features/ajax/constants.js +2 -3
  50. package/dist/cjs/features/ajax/instrument/distributed-tracing.js +9 -8
  51. package/dist/cjs/features/ajax/instrument/index.js +14 -12
  52. package/dist/cjs/features/generic_events/aggregate/index.js +128 -0
  53. package/dist/cjs/features/generic_events/constants.js +10 -0
  54. package/dist/cjs/features/generic_events/index.js +12 -0
  55. package/dist/cjs/features/generic_events/instrument/index.js +27 -0
  56. package/dist/cjs/features/jserrors/aggregate/index.js +25 -44
  57. package/dist/cjs/features/jserrors/instrument/index.js +4 -4
  58. package/dist/cjs/features/logging/aggregate/index.js +33 -36
  59. package/dist/cjs/features/logging/constants.js +2 -3
  60. package/dist/cjs/features/logging/instrument/index.js +5 -6
  61. package/dist/cjs/features/logging/shared/log.js +1 -3
  62. package/dist/cjs/features/logging/shared/utils.js +2 -4
  63. package/dist/cjs/features/metrics/aggregate/index.js +34 -17
  64. package/dist/cjs/features/metrics/aggregate/websocket-detection.js +34 -0
  65. package/dist/cjs/features/metrics/constants.js +4 -2
  66. package/dist/cjs/features/metrics/instrument/index.js +12 -4
  67. package/dist/cjs/features/page_action/instrument/index.js +14 -10
  68. package/dist/cjs/features/page_view_event/aggregate/index.js +19 -39
  69. package/dist/cjs/features/page_view_event/aggregate/initialized-features.js +1 -1
  70. package/dist/cjs/features/page_view_event/instrument/index.js +4 -4
  71. package/dist/cjs/features/page_view_timing/aggregate/index.js +23 -39
  72. package/dist/cjs/features/page_view_timing/instrument/index.js +4 -4
  73. package/dist/cjs/features/session_replay/aggregate/index.js +35 -42
  74. package/dist/cjs/features/session_replay/constants.js +1 -5
  75. package/dist/cjs/features/session_replay/instrument/index.js +5 -9
  76. package/dist/cjs/features/session_replay/shared/recorder-events.js +25 -20
  77. package/dist/cjs/features/session_replay/shared/recorder.js +17 -13
  78. package/dist/cjs/features/session_replay/shared/stylesheet-evaluator.js +2 -2
  79. package/dist/cjs/features/session_replay/shared/utils.js +5 -4
  80. package/dist/cjs/features/session_trace/aggregate/index.js +25 -42
  81. package/dist/cjs/features/session_trace/aggregate/trace/storage.js +5 -3
  82. package/dist/cjs/features/session_trace/instrument/index.js +8 -7
  83. package/dist/cjs/features/soft_navigations/aggregate/ajax-node.js +1 -1
  84. package/dist/cjs/features/soft_navigations/aggregate/index.js +22 -30
  85. package/dist/cjs/features/soft_navigations/aggregate/initial-page-load-interaction.js +2 -2
  86. package/dist/cjs/features/soft_navigations/aggregate/interaction.js +4 -5
  87. package/dist/cjs/features/soft_navigations/instrument/index.js +14 -13
  88. package/dist/cjs/features/spa/aggregate/index.js +17 -28
  89. package/dist/cjs/features/spa/aggregate/interaction.js +7 -6
  90. package/dist/cjs/features/spa/aggregate/serializer.js +4 -5
  91. package/dist/cjs/features/spa/constants.js +2 -2
  92. package/dist/cjs/features/spa/instrument/index.js +20 -19
  93. package/dist/cjs/features/utils/agent-session.js +6 -4
  94. package/dist/cjs/features/utils/aggregate-base.js +17 -10
  95. package/dist/cjs/features/utils/event-buffer.js +132 -0
  96. package/dist/cjs/features/utils/feature-gates.js +2 -2
  97. package/dist/cjs/features/utils/instrument-base.js +7 -8
  98. package/dist/cjs/features/utils/lazy-feature-loader.js +12 -12
  99. package/dist/cjs/features/utils/nr1-debugger.js +1 -3
  100. package/dist/cjs/index.js +21 -0
  101. package/dist/cjs/loaders/agent-base.js +4 -12
  102. package/dist/cjs/loaders/agent.js +7 -2
  103. package/dist/cjs/loaders/api/api.js +23 -35
  104. package/dist/cjs/loaders/api/apiAsync.js +10 -13
  105. package/dist/cjs/loaders/browser-agent.js +4 -3
  106. package/dist/cjs/loaders/configure/configure.js +16 -15
  107. package/dist/cjs/loaders/features/enabled-features.js +2 -2
  108. package/dist/cjs/loaders/features/features.js +8 -4
  109. package/dist/cjs/loaders/micro-agent.js +16 -15
  110. package/dist/esm/cdn/experimental.js +2 -5
  111. package/dist/esm/cdn/pro.js +2 -2
  112. package/dist/esm/cdn/spa.js +2 -2
  113. package/dist/esm/common/aggregate/aggregator.js +2 -3
  114. package/dist/esm/common/config/{state/configurable.js → configurable.js} +1 -1
  115. package/dist/esm/common/config/{state/info.js → info.js} +1 -1
  116. package/dist/esm/common/config/{state/init.js → init.js} +11 -8
  117. package/dist/esm/common/config/{state/loader-config.js → loader-config.js} +1 -1
  118. package/dist/esm/common/config/{state/runtime.js → runtime.js} +17 -5
  119. package/dist/esm/common/constants/agent-constants.js +2 -0
  120. package/dist/esm/common/constants/env.cdn.js +1 -1
  121. package/dist/esm/common/constants/env.npm.js +1 -1
  122. package/dist/esm/common/constants/runtime.js +0 -2
  123. package/dist/esm/common/context/shared-context.js +1 -2
  124. package/dist/esm/common/dispatch/global-event.js +1 -2
  125. package/dist/esm/common/drain/drain.js +12 -18
  126. package/dist/esm/common/event-emitter/contextual-ee.js +2 -3
  127. package/dist/esm/common/event-listener/event-listener-opts.js +2 -6
  128. package/dist/esm/common/harvest/harvest-scheduler.js +1 -2
  129. package/dist/esm/common/harvest/harvest.js +24 -51
  130. package/dist/esm/common/serialize/bel-serializer.js +6 -11
  131. package/dist/esm/common/session/session-entity.js +10 -13
  132. package/dist/esm/common/timing/nav-timing.js +1 -3
  133. package/dist/esm/common/timing/time-keeper.js +15 -5
  134. package/dist/esm/common/url/encode.js +3 -7
  135. package/dist/esm/common/util/console.js +2 -0
  136. package/dist/esm/common/util/invoke.js +6 -16
  137. package/dist/esm/common/util/obfuscate.js +96 -49
  138. package/dist/esm/common/util/submit-data.js +17 -21
  139. package/dist/esm/common/util/text.js +3 -0
  140. package/dist/esm/common/util/traverse.js +1 -3
  141. package/dist/esm/common/vitals/cumulative-layout-shift.js +5 -6
  142. package/dist/esm/common/vitals/first-contentful-paint.js +4 -5
  143. package/dist/esm/common/vitals/first-input-delay.js +4 -5
  144. package/dist/esm/common/vitals/interaction-to-next-paint.js +5 -6
  145. package/dist/esm/common/vitals/largest-contentful-paint.js +4 -5
  146. package/dist/esm/common/vitals/time-to-first-byte.js +4 -5
  147. package/dist/esm/common/vitals/vital-metric.js +5 -7
  148. package/dist/esm/common/window/nreum.js +2 -1
  149. package/dist/esm/common/window/page-visibility.js +1 -4
  150. package/dist/esm/common/wrap/wrap-events.js +1 -4
  151. package/dist/esm/common/wrap/wrap-promise.js +1 -4
  152. package/dist/esm/common/wrap/wrap-websocket.js +67 -0
  153. package/dist/esm/features/ajax/aggregate/chunk.js +3 -2
  154. package/dist/esm/features/ajax/aggregate/gql.js +4 -5
  155. package/dist/esm/features/ajax/aggregate/index.js +16 -19
  156. package/dist/esm/features/ajax/constants.js +1 -2
  157. package/dist/esm/features/ajax/instrument/distributed-tracing.js +2 -1
  158. package/dist/esm/features/ajax/instrument/index.js +10 -8
  159. package/dist/esm/features/generic_events/aggregate/index.js +120 -0
  160. package/dist/esm/features/generic_events/constants.js +4 -0
  161. package/dist/esm/features/generic_events/index.js +1 -0
  162. package/dist/esm/features/generic_events/instrument/index.js +20 -0
  163. package/dist/esm/features/jserrors/aggregate/index.js +20 -39
  164. package/dist/esm/features/jserrors/instrument/index.js +3 -3
  165. package/dist/esm/features/logging/aggregate/index.js +31 -34
  166. package/dist/esm/features/logging/constants.js +1 -2
  167. package/dist/esm/features/logging/instrument/index.js +4 -5
  168. package/dist/esm/features/logging/shared/log.js +1 -3
  169. package/dist/esm/features/logging/shared/utils.js +2 -4
  170. package/dist/esm/features/metrics/aggregate/index.js +28 -11
  171. package/dist/esm/features/metrics/aggregate/websocket-detection.js +29 -0
  172. package/dist/esm/features/metrics/constants.js +3 -1
  173. package/dist/esm/features/metrics/instrument/index.js +12 -4
  174. package/dist/esm/features/page_action/instrument/index.js +14 -9
  175. package/dist/esm/features/page_view_event/aggregate/index.js +17 -37
  176. package/dist/esm/features/page_view_event/aggregate/initialized-features.js +1 -1
  177. package/dist/esm/features/page_view_event/instrument/index.js +3 -3
  178. package/dist/esm/features/page_view_timing/aggregate/index.js +20 -36
  179. package/dist/esm/features/page_view_timing/instrument/index.js +3 -3
  180. package/dist/esm/features/session_replay/aggregate/index.js +25 -32
  181. package/dist/esm/features/session_replay/constants.js +0 -4
  182. package/dist/esm/features/session_replay/index.js +1 -7
  183. package/dist/esm/features/session_replay/instrument/index.js +5 -8
  184. package/dist/esm/features/session_replay/shared/recorder-events.js +25 -20
  185. package/dist/esm/features/session_replay/shared/recorder.js +14 -10
  186. package/dist/esm/features/session_replay/shared/stylesheet-evaluator.js +2 -2
  187. package/dist/esm/features/session_replay/shared/utils.js +3 -2
  188. package/dist/esm/features/session_trace/aggregate/index.js +20 -37
  189. package/dist/esm/features/session_trace/aggregate/trace/storage.js +5 -3
  190. package/dist/esm/features/session_trace/instrument/index.js +5 -4
  191. package/dist/esm/features/soft_navigations/aggregate/ajax-node.js +1 -1
  192. package/dist/esm/features/soft_navigations/aggregate/index.js +21 -29
  193. package/dist/esm/features/soft_navigations/aggregate/initial-page-load-interaction.js +1 -1
  194. package/dist/esm/features/soft_navigations/aggregate/interaction.js +2 -3
  195. package/dist/esm/features/soft_navigations/instrument/index.js +11 -10
  196. package/dist/esm/features/spa/aggregate/index.js +11 -22
  197. package/dist/esm/features/spa/aggregate/interaction.js +6 -5
  198. package/dist/esm/features/spa/aggregate/serializer.js +2 -3
  199. package/dist/esm/features/spa/constants.js +2 -2
  200. package/dist/esm/features/spa/instrument/index.js +12 -11
  201. package/dist/esm/features/utils/agent-session.js +3 -1
  202. package/dist/esm/features/utils/aggregate-base.js +16 -9
  203. package/dist/esm/features/utils/event-buffer.js +126 -0
  204. package/dist/esm/features/utils/feature-gates.js +1 -1
  205. package/dist/esm/features/utils/instrument-base.js +6 -7
  206. package/dist/esm/features/utils/lazy-feature-loader.js +12 -12
  207. package/dist/esm/features/utils/nr1-debugger.js +1 -3
  208. package/dist/esm/index.js +3 -0
  209. package/dist/esm/loaders/agent-base.js +4 -12
  210. package/dist/esm/loaders/agent.js +7 -2
  211. package/dist/esm/loaders/api/api.js +18 -30
  212. package/dist/esm/loaders/api/apiAsync.js +3 -6
  213. package/dist/esm/loaders/browser-agent.js +3 -2
  214. package/dist/esm/loaders/configure/configure.js +9 -8
  215. package/dist/esm/loaders/features/enabled-features.js +1 -1
  216. package/dist/esm/loaders/features/features.js +8 -4
  217. package/dist/esm/loaders/micro-agent.js +11 -10
  218. package/dist/types/common/aggregate/aggregator.d.ts.map +1 -1
  219. package/dist/types/common/config/configurable.d.ts.map +1 -0
  220. package/dist/types/common/config/info.d.ts.map +1 -0
  221. package/dist/types/common/config/init.d.ts.map +1 -0
  222. package/dist/types/common/config/loader-config.d.ts.map +1 -0
  223. package/dist/types/common/config/runtime.d.ts.map +1 -0
  224. package/dist/types/common/constants/agent-constants.d.ts +3 -0
  225. package/dist/types/common/constants/agent-constants.d.ts.map +1 -0
  226. package/dist/types/common/constants/runtime.d.ts +0 -1
  227. package/dist/types/common/constants/runtime.d.ts.map +1 -1
  228. package/dist/types/common/harvest/harvest.d.ts +1 -7
  229. package/dist/types/common/harvest/harvest.d.ts.map +1 -1
  230. package/dist/types/common/serialize/bel-serializer.d.ts.map +1 -1
  231. package/dist/types/common/timing/time-keeper.d.ts +9 -2
  232. package/dist/types/common/timing/time-keeper.d.ts.map +1 -1
  233. package/dist/types/common/url/encode.d.ts.map +1 -1
  234. package/dist/types/common/util/console.d.ts.map +1 -1
  235. package/dist/types/common/util/obfuscate.d.ts +78 -6
  236. package/dist/types/common/util/obfuscate.d.ts.map +1 -1
  237. package/dist/types/common/util/submit-data.d.ts.map +1 -1
  238. package/dist/types/common/util/text.d.ts +2 -0
  239. package/dist/types/common/util/text.d.ts.map +1 -0
  240. package/dist/types/common/window/nreum.d.ts.map +1 -1
  241. package/dist/types/common/wrap/wrap-websocket.d.ts +4 -0
  242. package/dist/types/common/wrap/wrap-websocket.d.ts.map +1 -0
  243. package/dist/types/features/ajax/aggregate/chunk.d.ts.map +1 -1
  244. package/dist/types/features/ajax/aggregate/index.d.ts +2 -3
  245. package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -1
  246. package/dist/types/features/ajax/constants.d.ts +0 -1
  247. package/dist/types/features/ajax/constants.d.ts.map +1 -1
  248. package/dist/types/features/ajax/instrument/distributed-tracing.d.ts.map +1 -1
  249. package/dist/types/features/ajax/instrument/index.d.ts +1 -0
  250. package/dist/types/features/ajax/instrument/index.d.ts.map +1 -1
  251. package/dist/types/features/{page_action → generic_events}/aggregate/index.d.ts +10 -10
  252. package/dist/types/features/generic_events/aggregate/index.d.ts.map +1 -0
  253. package/dist/types/features/generic_events/constants.d.ts +4 -0
  254. package/dist/types/features/generic_events/constants.d.ts.map +1 -0
  255. package/dist/types/features/generic_events/index.d.ts +2 -0
  256. package/dist/types/features/generic_events/index.d.ts.map +1 -0
  257. package/dist/types/features/generic_events/instrument/index.d.ts +7 -0
  258. package/dist/types/features/generic_events/instrument/index.d.ts.map +1 -0
  259. package/dist/types/features/jserrors/aggregate/index.d.ts +2 -2
  260. package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
  261. package/dist/types/features/jserrors/instrument/index.d.ts +1 -0
  262. package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -1
  263. package/dist/types/features/logging/aggregate/index.d.ts +4 -7
  264. package/dist/types/features/logging/aggregate/index.d.ts.map +1 -1
  265. package/dist/types/features/logging/constants.d.ts +0 -1
  266. package/dist/types/features/logging/constants.d.ts.map +1 -1
  267. package/dist/types/features/logging/instrument/index.d.ts +1 -0
  268. package/dist/types/features/logging/instrument/index.d.ts.map +1 -1
  269. package/dist/types/features/metrics/aggregate/index.d.ts.map +1 -1
  270. package/dist/types/features/metrics/aggregate/websocket-detection.d.ts +12 -0
  271. package/dist/types/features/metrics/aggregate/websocket-detection.d.ts.map +1 -0
  272. package/dist/types/features/metrics/constants.d.ts +1 -0
  273. package/dist/types/features/metrics/constants.d.ts.map +1 -1
  274. package/dist/types/features/metrics/instrument/index.d.ts +1 -0
  275. package/dist/types/features/metrics/instrument/index.d.ts.map +1 -1
  276. package/dist/types/features/page_action/instrument/index.d.ts +9 -4
  277. package/dist/types/features/page_action/instrument/index.d.ts.map +1 -1
  278. package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -1
  279. package/dist/types/features/page_view_event/instrument/index.d.ts +1 -0
  280. package/dist/types/features/page_view_event/instrument/index.d.ts.map +1 -1
  281. package/dist/types/features/page_view_timing/aggregate/index.d.ts +2 -2
  282. package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -1
  283. package/dist/types/features/page_view_timing/instrument/index.d.ts +1 -0
  284. package/dist/types/features/page_view_timing/instrument/index.d.ts.map +1 -1
  285. package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
  286. package/dist/types/features/session_replay/constants.d.ts +0 -4
  287. package/dist/types/features/session_replay/constants.d.ts.map +1 -1
  288. package/dist/types/features/session_replay/instrument/index.d.ts +1 -0
  289. package/dist/types/features/session_replay/instrument/index.d.ts.map +1 -1
  290. package/dist/types/features/session_replay/shared/recorder-events.d.ts +6 -6
  291. package/dist/types/features/session_replay/shared/recorder-events.d.ts.map +1 -1
  292. package/dist/types/features/session_replay/shared/recorder.d.ts +2 -2
  293. package/dist/types/features/session_replay/shared/recorder.d.ts.map +1 -1
  294. package/dist/types/features/session_replay/shared/utils.d.ts.map +1 -1
  295. package/dist/types/features/session_trace/aggregate/index.d.ts +2 -2
  296. package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
  297. package/dist/types/features/session_trace/aggregate/trace/storage.d.ts +1 -1
  298. package/dist/types/features/session_trace/aggregate/trace/storage.d.ts.map +1 -1
  299. package/dist/types/features/session_trace/instrument/index.d.ts +1 -0
  300. package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -1
  301. package/dist/types/features/soft_navigations/aggregate/index.d.ts +3 -3
  302. package/dist/types/features/soft_navigations/aggregate/index.d.ts.map +1 -1
  303. package/dist/types/features/soft_navigations/instrument/index.d.ts +1 -0
  304. package/dist/types/features/soft_navigations/instrument/index.d.ts.map +1 -1
  305. package/dist/types/features/spa/aggregate/index.d.ts +2 -2
  306. package/dist/types/features/spa/aggregate/index.d.ts.map +1 -1
  307. package/dist/types/features/spa/aggregate/interaction.d.ts.map +1 -1
  308. package/dist/types/features/spa/aggregate/serializer.d.ts.map +1 -1
  309. package/dist/types/features/spa/constants.d.ts.map +1 -1
  310. package/dist/types/features/spa/instrument/index.d.ts +1 -0
  311. package/dist/types/features/spa/instrument/index.d.ts.map +1 -1
  312. package/dist/types/features/utils/agent-session.d.ts.map +1 -1
  313. package/dist/types/features/utils/aggregate-base.d.ts +1 -0
  314. package/dist/types/features/utils/aggregate-base.d.ts.map +1 -1
  315. package/dist/types/features/utils/event-buffer.d.ts +72 -0
  316. package/dist/types/features/utils/event-buffer.d.ts.map +1 -0
  317. package/dist/types/features/utils/instrument-base.d.ts +1 -0
  318. package/dist/types/features/utils/instrument-base.d.ts.map +1 -1
  319. package/dist/types/index.d.ts +3 -0
  320. package/dist/types/loaders/agent-base.d.ts +1 -2
  321. package/dist/types/loaders/agent-base.d.ts.map +1 -1
  322. package/dist/types/loaders/agent.d.ts.map +1 -1
  323. package/dist/types/loaders/api/api.d.ts.map +1 -1
  324. package/dist/types/loaders/browser-agent.d.ts.map +1 -1
  325. package/dist/types/loaders/configure/configure.d.ts.map +1 -1
  326. package/dist/types/loaders/features/features.d.ts +1 -0
  327. package/dist/types/loaders/features/features.d.ts.map +1 -1
  328. package/dist/types/loaders/micro-agent.d.ts.map +1 -1
  329. package/package.json +67 -52
  330. package/src/cdn/experimental.js +2 -4
  331. package/src/cdn/pro.js +2 -2
  332. package/src/cdn/spa.js +2 -2
  333. package/src/common/aggregate/aggregator.js +2 -3
  334. package/src/common/config/__mocks__/info.js +3 -0
  335. package/src/common/config/__mocks__/init.js +3 -0
  336. package/src/common/config/__mocks__/loader-config.js +2 -0
  337. package/src/common/config/__mocks__/runtime.js +2 -0
  338. package/src/common/config/{state/configurable.js → configurable.js} +1 -1
  339. package/src/common/config/{state/info.js → info.js} +1 -1
  340. package/src/common/config/{state/init.js → init.js} +7 -6
  341. package/src/common/config/{state/loader-config.js → loader-config.js} +1 -1
  342. package/src/common/config/{state/runtime.js → runtime.js} +19 -5
  343. package/src/common/constants/agent-constants.js +2 -0
  344. package/src/common/constants/runtime.js +0 -2
  345. package/src/common/drain/drain.js +8 -6
  346. package/src/common/event-emitter/contextual-ee.js +1 -1
  347. package/src/common/harvest/harvest.js +10 -24
  348. package/src/common/serialize/bel-serializer.js +6 -9
  349. package/src/common/session/session-entity.js +4 -4
  350. package/src/common/timing/__mocks__/time-keeper.js +6 -2
  351. package/src/common/timing/time-keeper.js +15 -5
  352. package/src/common/url/encode.js +2 -3
  353. package/src/common/util/__mocks__/console.js +1 -0
  354. package/src/common/util/__mocks__/obfuscate.js +5 -8
  355. package/src/common/util/console.js +2 -0
  356. package/src/common/util/obfuscate.js +94 -50
  357. package/src/common/util/submit-data.js +0 -1
  358. package/src/common/util/text.js +6 -0
  359. package/src/common/window/__mocks__/nreum.js +1 -1
  360. package/src/common/window/nreum.js +2 -1
  361. package/src/common/wrap/wrap-websocket.js +73 -0
  362. package/src/features/ajax/aggregate/chunk.js +3 -2
  363. package/src/features/ajax/aggregate/index.js +20 -19
  364. package/src/features/ajax/constants.js +0 -2
  365. package/src/features/ajax/instrument/distributed-tracing.js +2 -1
  366. package/src/features/ajax/instrument/index.js +9 -5
  367. package/src/features/generic_events/aggregate/index.js +139 -0
  368. package/src/features/generic_events/constants.js +5 -0
  369. package/src/features/generic_events/index.js +1 -0
  370. package/src/features/generic_events/instrument/index.js +24 -0
  371. package/src/features/jserrors/aggregate/index.js +18 -9
  372. package/src/features/jserrors/instrument/index.js +2 -0
  373. package/src/features/logging/aggregate/index.js +39 -31
  374. package/src/features/logging/constants.js +0 -2
  375. package/src/features/logging/instrument/index.js +2 -0
  376. package/src/features/logging/shared/utils.js +1 -1
  377. package/src/features/metrics/aggregate/index.js +24 -9
  378. package/src/features/metrics/aggregate/websocket-detection.js +31 -0
  379. package/src/features/metrics/constants.js +3 -0
  380. package/src/features/metrics/instrument/index.js +13 -1
  381. package/src/features/page_action/instrument/index.js +11 -6
  382. package/src/features/page_view_event/aggregate/index.js +8 -23
  383. package/src/features/page_view_event/aggregate/initialized-features.js +1 -1
  384. package/src/features/page_view_event/instrument/index.js +2 -0
  385. package/src/features/page_view_timing/aggregate/index.js +15 -18
  386. package/src/features/page_view_timing/instrument/index.js +2 -0
  387. package/src/features/session_replay/aggregate/index.js +13 -9
  388. package/src/features/session_replay/constants.js +0 -4
  389. package/src/features/session_replay/index.js +1 -7
  390. package/src/features/session_replay/instrument/index.js +3 -4
  391. package/src/features/session_replay/shared/recorder-events.js +27 -20
  392. package/src/features/session_replay/shared/recorder.js +13 -6
  393. package/src/features/session_replay/shared/stylesheet-evaluator.js +2 -2
  394. package/src/features/session_replay/shared/utils.js +3 -2
  395. package/src/features/session_trace/aggregate/index.js +16 -7
  396. package/src/features/session_trace/aggregate/trace/storage.js +6 -1
  397. package/src/features/session_trace/instrument/index.js +4 -1
  398. package/src/features/soft_navigations/aggregate/ajax-node.js +1 -1
  399. package/src/features/soft_navigations/aggregate/index.js +13 -15
  400. package/src/features/soft_navigations/aggregate/initial-page-load-interaction.js +1 -1
  401. package/src/features/soft_navigations/aggregate/interaction.js +1 -1
  402. package/src/features/soft_navigations/instrument/index.js +9 -5
  403. package/src/features/spa/aggregate/index.js +12 -20
  404. package/src/features/spa/aggregate/interaction.js +6 -5
  405. package/src/features/spa/aggregate/serializer.js +2 -3
  406. package/src/features/spa/constants.js +2 -2
  407. package/src/features/spa/instrument/index.js +9 -3
  408. package/src/features/utils/agent-session.js +3 -1
  409. package/src/features/utils/aggregate-base.js +13 -3
  410. package/src/features/utils/event-buffer.js +126 -0
  411. package/src/features/utils/feature-gates.js +1 -1
  412. package/src/features/utils/instrument-base.js +2 -1
  413. package/src/features/utils/lazy-feature-loader.js +2 -2
  414. package/src/index.js +3 -0
  415. package/src/loaders/agent-base.js +2 -6
  416. package/src/loaders/agent.js +7 -2
  417. package/src/loaders/api/api.js +3 -2
  418. package/src/loaders/api/apiAsync.js +2 -2
  419. package/src/loaders/browser-agent.js +5 -3
  420. package/src/loaders/configure/configure.js +9 -2
  421. package/src/loaders/features/enabled-features.js +1 -1
  422. package/src/loaders/features/features.js +8 -4
  423. package/src/loaders/micro-agent.js +5 -2
  424. package/dist/cjs/cdn/polyfills/lite.js +0 -16
  425. package/dist/cjs/cdn/polyfills/pro.js +0 -21
  426. package/dist/cjs/cdn/polyfills/spa.js +0 -22
  427. package/dist/cjs/cdn/polyfills.js +0 -24
  428. package/dist/cjs/common/config/config.js +0 -76
  429. package/dist/cjs/common/config/state/originals.js +0 -8
  430. package/dist/cjs/common/util/map-own.js +0 -31
  431. package/dist/cjs/common/wrap/index.js +0 -61
  432. package/dist/cjs/features/page_action/aggregate/index.js +0 -121
  433. package/dist/esm/cdn/polyfills/lite.js +0 -14
  434. package/dist/esm/cdn/polyfills/pro.js +0 -19
  435. package/dist/esm/cdn/polyfills/spa.js +0 -20
  436. package/dist/esm/cdn/polyfills.js +0 -27
  437. package/dist/esm/common/config/config.js +0 -11
  438. package/dist/esm/common/config/state/originals.js +0 -2
  439. package/dist/esm/common/util/map-own.js +0 -24
  440. package/dist/esm/common/wrap/index.js +0 -13
  441. package/dist/esm/features/page_action/aggregate/index.js +0 -114
  442. package/dist/types/cdn/polyfills/lite.d.ts +0 -2
  443. package/dist/types/cdn/polyfills/lite.d.ts.map +0 -1
  444. package/dist/types/cdn/polyfills/pro.d.ts +0 -2
  445. package/dist/types/cdn/polyfills/pro.d.ts.map +0 -1
  446. package/dist/types/cdn/polyfills/spa.d.ts +0 -2
  447. package/dist/types/cdn/polyfills/spa.d.ts.map +0 -1
  448. package/dist/types/cdn/polyfills.d.ts +0 -2
  449. package/dist/types/cdn/polyfills.d.ts.map +0 -1
  450. package/dist/types/common/config/config.d.ts +0 -13
  451. package/dist/types/common/config/config.d.ts.map +0 -1
  452. package/dist/types/common/config/state/configurable.d.ts.map +0 -1
  453. package/dist/types/common/config/state/info.d.ts.map +0 -1
  454. package/dist/types/common/config/state/init.d.ts.map +0 -1
  455. package/dist/types/common/config/state/loader-config.d.ts.map +0 -1
  456. package/dist/types/common/config/state/originals.d.ts +0 -2
  457. package/dist/types/common/config/state/originals.d.ts.map +0 -1
  458. package/dist/types/common/config/state/runtime.d.ts.map +0 -1
  459. package/dist/types/common/util/map-own.d.ts +0 -3
  460. package/dist/types/common/util/map-own.d.ts.map +0 -1
  461. package/dist/types/common/wrap/index.d.ts +0 -10
  462. package/dist/types/common/wrap/index.d.ts.map +0 -1
  463. package/dist/types/features/page_action/aggregate/index.d.ts.map +0 -1
  464. package/src/cdn/polyfills/lite.js +0 -20
  465. package/src/cdn/polyfills/pro.js +0 -30
  466. package/src/cdn/polyfills/spa.js +0 -32
  467. package/src/cdn/polyfills.js +0 -27
  468. package/src/common/config/__mocks__/config.js +0 -11
  469. package/src/common/config/config.js +0 -12
  470. package/src/common/config/state/originals.js +0 -3
  471. package/src/common/util/map-own.js +0 -22
  472. package/src/common/wrap/index.js +0 -16
  473. package/src/features/page_action/aggregate/index.js +0 -114
  474. /package/dist/types/common/config/{state/configurable.d.ts → configurable.d.ts} +0 -0
  475. /package/dist/types/common/config/{state/info.d.ts → info.d.ts} +0 -0
  476. /package/dist/types/common/config/{state/init.d.ts → init.d.ts} +0 -0
  477. /package/dist/types/common/config/{state/loader-config.d.ts → loader-config.d.ts} +0 -0
  478. /package/dist/types/common/config/{state/runtime.d.ts → runtime.d.ts} +0 -0
@@ -3,20 +3,24 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Instrument = void 0;
7
- var _instrumentBase = require("../../utils/instrument-base");
8
- var _constants = require("../constants");
6
+ exports.PageAction = exports.Instrument = void 0;
7
+ var _generic_events = require("../../generic_events");
9
8
  /*
10
9
  * Copyright 2020 New Relic Corporation. All rights reserved.
11
10
  * SPDX-License-Identifier: Apache-2.0
12
11
  */
13
12
 
14
- class Instrument extends _instrumentBase.InstrumentBase {
15
- static featureName = _constants.FEATURE_NAME;
16
- constructor(agentIdentifier, aggregator) {
17
- let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
18
- super(agentIdentifier, aggregator, _constants.FEATURE_NAME, auto);
19
- this.importAggregator();
13
+ /**
14
+ * @deprecated This feature has been replaced by Generic Events. Use/Import `GenericEvents` instead. This wrapper will be removed in a future release
15
+ */
16
+ class Instrument extends _generic_events.GenericEvents {
17
+ constructor(agentIdentifier, aggregator, auto = true) {
18
+ super(agentIdentifier, aggregator, auto);
20
19
  }
21
20
  }
22
- exports.Instrument = Instrument;
21
+
22
+ /**
23
+ * @deprecated This feature has been replaced by Generic Events. Use/Import `GenericEvents` instead. This wrapper will be removed in a future release
24
+ */
25
+ exports.Instrument = Instrument;
26
+ const PageAction = exports.PageAction = Instrument;
@@ -7,7 +7,8 @@ exports.Aggregate = void 0;
7
7
  var _runtime = require("../../../common/constants/runtime");
8
8
  var _navTiming = require("../../../common/timing/nav-timing");
9
9
  var _stringify = require("../../../common/util/stringify");
10
- var _config = require("../../../common/config/config");
10
+ var _info = require("../../../common/config/info");
11
+ var _runtime2 = require("../../../common/config/runtime");
11
12
  var _harvest = require("../../../common/harvest/harvest");
12
13
  var CONSTANTS = _interopRequireWildcard(require("../constants"));
13
14
  var _initializedFeatures = require("./initialized-features");
@@ -17,12 +18,9 @@ var _aggregateBase = require("../../utils/aggregate-base");
17
18
  var _firstContentfulPaint = require("../../../common/vitals/first-contentful-paint");
18
19
  var _firstPaint = require("../../../common/vitals/first-paint");
19
20
  var _timeToFirstByte = require("../../../common/vitals/time-to-first-byte");
20
- var _drain = require("../../../common/drain/drain");
21
- var _features = require("../../../loaders/features/features");
22
- var _handle = require("../../../common/event-emitter/handle");
23
- var _constants2 = require("../../metrics/constants");
24
21
  var _now = require("../../../common/timing/now");
25
22
  var _timeKeeper = require("../../../common/timing/time-keeper");
23
+ var _traverse = require("../../../common/util/traverse");
26
24
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
25
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
26
  class Aggregate extends _aggregateBase.AggregateBase {
@@ -33,16 +31,15 @@ class Aggregate extends _aggregateBase.AggregateBase {
33
31
  this.firstByteToWindowLoad = 0; // our "frontend" duration
34
32
  this.firstByteToDomContent = 0; // our "dom processing" duration
35
33
  this.timeKeeper = new _timeKeeper.TimeKeeper(this.agentIdentifier);
36
- if (!(0, _config.isConfigured)(agentIdentifier)) {
34
+ if (!(0, _info.isValid)(agentIdentifier)) {
37
35
  this.ee.abort();
38
36
  return (0, _console.warn)(43);
39
37
  }
40
38
  if (_runtime.isBrowserScope) {
41
- _timeToFirstByte.timeToFirstByte.subscribe(_ref => {
42
- let {
43
- value,
44
- attrs
45
- } = _ref;
39
+ _timeToFirstByte.timeToFirstByte.subscribe(({
40
+ value,
41
+ attrs
42
+ }) => {
46
43
  const navEntry = attrs.navigationEntry;
47
44
  this.timeToFirstByte = Math.max(value, this.timeToFirstByte);
48
45
  this.firstByteToWindowLoad = Math.max(Math.round(navEntry.loadEventEnd - this.timeToFirstByte), this.firstByteToWindowLoad); // our "frontend" duration
@@ -56,8 +53,8 @@ class Aggregate extends _aggregateBase.AggregateBase {
56
53
  }
57
54
  }
58
55
  sendRum() {
59
- const info = (0, _config.getInfo)(this.agentIdentifier);
60
- const agentRuntime = (0, _config.getRuntime)(this.agentIdentifier);
56
+ const info = (0, _info.getInfo)(this.agentIdentifier);
57
+ const agentRuntime = (0, _runtime2.getRuntime)(this.agentIdentifier);
61
58
  const harvester = new _harvest.Harvest(this);
62
59
  if (info.queueTime) this.aggregator.store('measures', 'qt', {
63
60
  value: info.queueTime
@@ -84,8 +81,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
84
81
  ac: info.account,
85
82
  pr: info.product,
86
83
  af: (0, _initializedFeatures.getActivatedFeaturesFlags)(this.agentIdentifier).join(','),
87
- ...Object.entries(this.aggregator.get('measures') || {}).reduce((aggregator, _ref2) => {
88
- let [metricName, measure] = _ref2;
84
+ ...Object.entries(this.aggregator.get('measures') || {}).reduce((aggregator, [metricName, measure]) => {
89
85
  aggregator[metricName] = measure.params?.value;
90
86
  return aggregator;
91
87
  }, {}),
@@ -97,9 +93,9 @@ class Aggregate extends _aggregateBase.AggregateBase {
97
93
 
98
94
  let body;
99
95
  if (typeof info.jsAttributes === 'object' && Object.keys(info.jsAttributes).length > 0) {
100
- body = {
96
+ body = (0, _traverse.applyFnToProps)({
101
97
  ja: info.jsAttributes
102
- };
98
+ }, this.obfuscator.obfuscateString.bind(this.obfuscator), 'string');
103
99
  }
104
100
  if (_runtime.globalScope.performance) {
105
101
  if (typeof PerformanceNavigationTiming !== 'undefined') {
@@ -122,7 +118,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
122
118
  queryParameters.fp = _firstPaint.firstPaint.current.value;
123
119
  queryParameters.fcp = _firstContentfulPaint.firstContentfulPaint.current.value;
124
120
  if (this.timeKeeper?.ready) {
125
- queryParameters.timestamp = this.timeKeeper.convertRelativeTimestamp((0, _now.now)());
121
+ queryParameters.timestamp = Math.floor(this.timeKeeper.correctAbsoluteTimestamp(this.timeKeeper.convertRelativeTimestamp((0, _now.now)())));
126
122
  }
127
123
  const rumStartTime = (0, _now.now)();
128
124
  harvester.send({
@@ -135,12 +131,11 @@ class Aggregate extends _aggregateBase.AggregateBase {
135
131
  needResponse: true,
136
132
  sendEmptyBody: true
137
133
  },
138
- cbFinished: _ref3 => {
139
- let {
140
- status,
141
- responseText,
142
- xhr
143
- } = _ref3;
134
+ cbFinished: ({
135
+ status,
136
+ responseText,
137
+ xhr
138
+ }) => {
144
139
  const rumEndTime = (0, _now.now)();
145
140
  if (status >= 400 || status === 0) {
146
141
  // Adding retry logic for the rum call will be a separate change
@@ -151,22 +146,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
151
146
  this.timeKeeper.processRumRequest(xhr, rumStartTime, rumEndTime);
152
147
  if (!this.timeKeeper.ready) throw new Error('TimeKeeper not ready');
153
148
  agentRuntime.timeKeeper = this.timeKeeper;
154
-
155
- // Check if the time diff is such that we need to capture a supportability metric
156
- if (this.timeKeeper.localTimeDiff >= 12 * 60 * 60 * 1000) {
157
- (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ['PVE/NRTime/Calculation/DiffExceed12Hrs'], undefined, _features.FEATURE_NAMES.metrics, this.ee);
158
- } else if (this.timeKeeper.localTimeDiff >= 6 * 60 * 60 * 1000) {
159
- (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ['PVE/NRTime/Calculation/DiffExceed6Hrs'], undefined, _features.FEATURE_NAMES.metrics, this.ee);
160
- } else if (this.timeKeeper.localTimeDiff >= 60 * 60 * 1000) {
161
- (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ['PVE/NRTime/Calculation/DiffExceed1Hrs'], undefined, _features.FEATURE_NAMES.metrics, this.ee);
162
- }
163
149
  } catch (error) {
164
- if (error?.message?.indexOf('invalid format') > 0) {
165
- (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ['PVE/NRTime/Calculation/InvalidFormat'], undefined, _features.FEATURE_NAMES.metrics, this.ee);
166
- } else {
167
- (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ['PVE/NRTime/Calculation/Failed'], undefined, _features.FEATURE_NAMES.metrics, this.ee);
168
- }
169
- (0, _drain.drain)(this.agentIdentifier, _features.FEATURE_NAMES.metrics, true);
170
150
  this.ee.abort();
171
151
  (0, _console.warn)(17, error);
172
152
  return;
@@ -24,7 +24,7 @@ function getActivatedFeaturesFlags(agentId) {
24
24
  case _features.FEATURE_NAMES.jserrors:
25
25
  flagArr.push('err');
26
26
  break;
27
- case _features.FEATURE_NAMES.pageAction:
27
+ case _features.FEATURE_NAMES.genericEvents:
28
28
  flagArr.push('ins');
29
29
  break;
30
30
  case _features.FEATURE_NAMES.sessionTrace:
@@ -3,17 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Instrument = void 0;
6
+ exports.PageViewEvent = exports.Instrument = void 0;
7
7
  var _instrumentBase = require("../../utils/instrument-base");
8
8
  var CONSTANTS = _interopRequireWildcard(require("../constants"));
9
9
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
10
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
11
  class Instrument extends _instrumentBase.InstrumentBase {
12
12
  static featureName = CONSTANTS.FEATURE_NAME;
13
- constructor(agentIdentifier, aggregator) {
14
- let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
13
+ constructor(agentIdentifier, aggregator, auto = true) {
15
14
  super(agentIdentifier, aggregator, CONSTANTS.FEATURE_NAME, auto);
16
15
  this.importAggregator();
17
16
  }
18
17
  }
19
- exports.Instrument = Instrument;
18
+ exports.Instrument = Instrument;
19
+ const PageViewEvent = exports.PageViewEvent = Instrument;
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.Aggregate = void 0;
7
7
  var _belSerializer = require("../../../common/serialize/bel-serializer");
8
- var _mapOwn = require("../../../common/util/map-own");
9
8
  var _harvestScheduler = require("../../../common/harvest/harvest-scheduler");
10
9
  var _registerHandler = require("../../../common/event-emitter/register-handler");
11
10
  var _handle = require("../../../common/event-emitter/handle");
12
- var _config = require("../../../common/config/config");
11
+ var _info = require("../../../common/config/info");
12
+ var _init = require("../../../common/config/init");
13
13
  var _constants = require("../constants");
14
14
  var _features = require("../../../loaders/features/features");
15
15
  var _aggregateBase = require("../../utils/aggregate-base");
@@ -23,6 +23,7 @@ var _timeToFirstByte = require("../../../common/vitals/time-to-first-byte");
23
23
  var _longTask = require("../../../common/vitals/long-task");
24
24
  var _pageVisibility = require("../../../common/window/page-visibility");
25
25
  var _constants2 = require("../../../common/vitals/constants");
26
+ var _eventBuffer = require("../../utils/event-buffer");
26
27
  /*
27
28
  * Copyright 2020 New Relic Corporation. All rights reserved.
28
29
  * SPDX-License-Identifier: Apache-2.0
@@ -30,25 +31,21 @@ var _constants2 = require("../../../common/vitals/constants");
30
31
 
31
32
  class Aggregate extends _aggregateBase.AggregateBase {
32
33
  static featureName = _constants.FEATURE_NAME;
33
- #handleVitalMetric = _ref => {
34
- let {
35
- name,
36
- value,
37
- attrs
38
- } = _ref;
34
+ #handleVitalMetric = ({
35
+ name,
36
+ value,
37
+ attrs
38
+ }) => {
39
39
  this.addTiming(name, value, attrs);
40
40
  };
41
41
  constructor(agentIdentifier, aggregator) {
42
- var _this;
43
42
  super(agentIdentifier, aggregator, _constants.FEATURE_NAME);
44
- _this = this;
45
- this.timings = [];
46
- this.timingsSent = [];
43
+ this.timings = new _eventBuffer.EventBuffer();
47
44
  this.curSessEndRecorded = false;
48
- if ((0, _config.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.long_task') === true) _longTask.longTask.subscribe(this.#handleVitalMetric);
45
+ if ((0, _init.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.long_task') === true) _longTask.longTask.subscribe(this.#handleVitalMetric);
49
46
  (0, _registerHandler.registerHandler)('docHidden', msTimestamp => this.endCurrentSession(msTimestamp), this.featureName, this.ee);
50
47
  (0, _registerHandler.registerHandler)('winPagehide', msTimestamp => this.recordPageUnload(msTimestamp), this.featureName, this.ee);
51
- const harvestTimeSeconds = (0, _config.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.harvestTimeSeconds') || 30;
48
+ const harvestTimeSeconds = (0, _init.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.harvestTimeSeconds') || 30;
52
49
  this.waitForFlags([]).then(() => {
53
50
  /* It's important that CWV api, like "onLCP", is called before the **scheduler** is initialized. The reason is because they listen to the same
54
51
  on vis change or pagehide events, and we'd want ex. onLCP to record the timing (win the race) before we try to send "final harvest". */
@@ -57,10 +54,9 @@ class Aggregate extends _aggregateBase.AggregateBase {
57
54
  _firstInputDelay.firstInputDelay.subscribe(this.#handleVitalMetric);
58
55
  _largestContentfulPaint.largestContentfulPaint.subscribe(this.#handleVitalMetric);
59
56
  _interactionToNextPaint.interactionToNextPaint.subscribe(this.#handleVitalMetric);
60
- _timeToFirstByte.timeToFirstByte.subscribe(_ref2 => {
61
- let {
62
- attrs
63
- } = _ref2;
57
+ _timeToFirstByte.timeToFirstByte.subscribe(({
58
+ attrs
59
+ }) => {
64
60
  this.addTiming('load', Math.round(attrs.navigationEntry.loadEventEnd));
65
61
  });
66
62
  (0, _pageVisibility.subscribeToVisibilityChange)(() => {
@@ -77,12 +73,8 @@ class Aggregate extends _aggregateBase.AggregateBase {
77
73
  }, true); // CLS node should only reports on vis change rather than on every change
78
74
 
79
75
  const scheduler = new _harvestScheduler.HarvestScheduler('events', {
80
- onFinished: function () {
81
- return _this.onHarvestFinished(...arguments);
82
- },
83
- getPayload: function () {
84
- return _this.prepareHarvest(...arguments);
85
- }
76
+ onFinished: (...args) => this.onHarvestFinished(...args),
77
+ getPayload: (...args) => this.prepareHarvest(...args)
86
78
  }, this);
87
79
  scheduler.startTimer(harvestTimeSeconds);
88
80
  this.drain();
@@ -130,7 +122,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
130
122
  if (name !== _constants2.VITAL_NAMES.CUMULATIVE_LAYOUT_SHIFT && _cumulativeLayoutShift.cumulativeLayoutShift.current.value >= 0) {
131
123
  attrs.cls = _cumulativeLayoutShift.cumulativeLayoutShift.current.value;
132
124
  }
133
- this.timings.push({
125
+ this.timings.add({
134
126
  name,
135
127
  value,
136
128
  attrs
@@ -138,16 +130,13 @@ class Aggregate extends _aggregateBase.AggregateBase {
138
130
  (0, _handle.handle)('pvtAdded', [name, value, attrs], undefined, _features.FEATURE_NAMES.sessionTrace, this.ee);
139
131
  }
140
132
  onHarvestFinished(result) {
141
- if (result.retry && this.timingsSent.length > 0) {
142
- this.timings.unshift(...this.timingsSent);
143
- this.timingsSent = [];
144
- }
133
+ if (result.retry && this.timings.held.hasData) this.timings.unhold();else this.timings.held.clear();
145
134
  }
146
135
  appendGlobalCustomAttributes(timing) {
147
136
  var timingAttributes = timing.attrs || {};
148
- var customAttributes = (0, _config.getInfo)(this.agentIdentifier).jsAttributes || {};
137
+ var customAttributes = (0, _info.getInfo)(this.agentIdentifier).jsAttributes || {};
149
138
  var reservedAttributes = ['size', 'eid', 'cls', 'type', 'fid', 'elTag', 'elUrl', 'net-type', 'net-etype', 'net-rtt', 'net-dlink'];
150
- (0, _mapOwn.mapOwn)(customAttributes, function (key, val) {
139
+ Object.entries(customAttributes || {}).forEach(([key, val]) => {
151
140
  if (reservedAttributes.indexOf(key) < 0) {
152
141
  timingAttributes[key] = val;
153
142
  }
@@ -156,14 +145,9 @@ class Aggregate extends _aggregateBase.AggregateBase {
156
145
 
157
146
  // serialize and return current timing data, clear and save current data for retry
158
147
  prepareHarvest(options) {
159
- if (this.timings.length === 0) return;
160
- var payload = this.getPayload(this.timings);
161
- if (options.retry) {
162
- for (var i = 0; i < this.timings.length; i++) {
163
- this.timingsSent.push(this.timings[i]);
164
- }
165
- }
166
- this.timings = [];
148
+ if (!this.timings.hasData) return;
149
+ var payload = this.getPayload(this.timings.buffer);
150
+ if (options.retry) this.timings.hold();else this.timings.clear();
167
151
  return {
168
152
  body: {
169
153
  e: payload
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Instrument = void 0;
6
+ exports.PageViewTiming = exports.Instrument = void 0;
7
7
  var _handle = require("../../../common/event-emitter/handle");
8
8
  var _pageVisibility = require("../../../common/window/page-visibility");
9
9
  var _eventListenerOpts = require("../../../common/event-listener/event-listener-opts");
@@ -18,8 +18,7 @@ var _now = require("../../../common/timing/now");
18
18
 
19
19
  class Instrument extends _instrumentBase.InstrumentBase {
20
20
  static featureName = _constants.FEATURE_NAME;
21
- constructor(agentIdentifier, aggregator) {
22
- let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
21
+ constructor(agentIdentifier, aggregator, auto = true) {
23
22
  super(agentIdentifier, aggregator, _constants.FEATURE_NAME, auto);
24
23
  if (!_runtime.isBrowserScope) return; // CWV is irrelevant outside web context
25
24
 
@@ -31,4 +30,5 @@ class Instrument extends _instrumentBase.InstrumentBase {
31
30
  this.importAggregator();
32
31
  }
33
32
  }
34
- exports.Instrument = Instrument;
33
+ exports.Instrument = Instrument;
34
+ const PageViewTiming = exports.PageViewTiming = Instrument;
@@ -7,12 +7,14 @@ exports.Aggregate = void 0;
7
7
  var _registerHandler = require("../../../common/event-emitter/register-handler");
8
8
  var _harvestScheduler = require("../../../common/harvest/harvest-scheduler");
9
9
  var _constants = require("../constants");
10
- var _config = require("../../../common/config/config");
10
+ var _info = require("../../../common/config/info");
11
+ var _init = require("../../../common/config/init");
12
+ var _runtime = require("../../../common/config/runtime");
11
13
  var _aggregateBase = require("../../utils/aggregate-base");
12
14
  var _sharedChannel = require("../../../common/constants/shared-channel");
13
15
  var _encode = require("../../../common/url/encode");
14
16
  var _console = require("../../../common/util/console");
15
- var _runtime = require("../../../common/constants/runtime");
17
+ var _runtime2 = require("../../../common/constants/runtime");
16
18
  var _constants2 = require("../../metrics/constants");
17
19
  var _handle = require("../../../common/event-emitter/handle");
18
20
  var _features = require("../../../loaders/features/features");
@@ -23,16 +25,13 @@ var _stylesheetEvaluator = require("../shared/stylesheet-evaluator");
23
25
  var _drain = require("../../../common/drain/drain");
24
26
  var _now = require("../../../common/timing/now");
25
27
  var _utils = require("../shared/utils");
28
+ var _agentConstants = require("../../../common/constants/agent-constants");
26
29
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
27
30
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /*
28
31
  * Copyright 2023 New Relic Corporation. All rights reserved.
29
32
  * SPDX-License-Identifier: Apache-2.0
30
33
  */ /**
31
34
  * @file Records, aggregates, and harvests session replay data.
32
- *
33
- * NOTE: This code is under development and dormant. It will not download to instrumented pages or record any data.
34
- * It is not production ready, and is not intended to be imported or implemented in any build of the browser agent until
35
- * functionality is validated and a full user experience is curated.
36
35
  */
37
36
  class Aggregate extends _aggregateBase.AggregateBase {
38
37
  static featureName = _constants.FEATURE_NAME;
@@ -42,7 +41,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
42
41
  constructor(agentIdentifier, aggregator, args) {
43
42
  super(agentIdentifier, aggregator, _constants.FEATURE_NAME);
44
43
  /** The interval to harvest at. This gets overridden if the size of the payload exceeds certain thresholds */
45
- this.harvestTimeSeconds = (0, _config.getConfigurationValue)(this.agentIdentifier, 'session_replay.harvestTimeSeconds') || 60;
44
+ this.harvestTimeSeconds = (0, _init.getConfigurationValue)(this.agentIdentifier, 'session_replay.harvestTimeSeconds') || 60;
46
45
  /** Set once the recorder has fully initialized after flag checks and sampling */
47
46
  this.initialized = false;
48
47
  /** Set once the feature has been "aborted" to prevent other side-effects from continuing */
@@ -78,7 +77,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
78
77
  // if the mode changed on a different tab, it needs to update this instance to match
79
78
  const {
80
79
  session
81
- } = (0, _config.getRuntime)(this.agentIdentifier);
80
+ } = (0, _runtime.getRuntime)(this.agentIdentifier);
82
81
  this.mode = session.state.sessionReplayMode;
83
82
  if (!this.initialized || this.mode === _constants3.MODE.OFF) return;
84
83
  this.recorder?.startRecording();
@@ -112,9 +111,8 @@ class Aggregate extends _aggregateBase.AggregateBase {
112
111
  inline_stylesheet,
113
112
  inline_images,
114
113
  collect_fonts
115
- } = (0, _config.getConfigurationValue)(this.agentIdentifier, 'session_replay');
116
- this.waitForFlags(['srs', 'sr']).then(_ref => {
117
- let [srMode, entitled] = _ref;
114
+ } = (0, _init.getConfigurationValue)(this.agentIdentifier, 'session_replay');
115
+ this.waitForFlags(['srs', 'sr']).then(([srMode, entitled]) => {
118
116
  this.entitled = !!entitled;
119
117
  if (!this.entitled) {
120
118
  (0, _drain.deregisterDrain)(this.agentIdentifier, this.featureName);
@@ -148,7 +146,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
148
146
  handleError(e) {
149
147
  if (this.recorder) this.recorder.currentBufferTarget.hasError = true;
150
148
  // run once
151
- if (this.mode === _constants3.MODE.ERROR && _runtime.globalScope?.document.visibilityState === 'visible') {
149
+ if (this.mode === _constants3.MODE.ERROR && _runtime2.globalScope?.document.visibilityState === 'visible') {
152
150
  this.switchToFull();
153
151
  }
154
152
  }
@@ -188,7 +186,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
188
186
  const {
189
187
  session,
190
188
  timeKeeper
191
- } = (0, _config.getRuntime)(this.agentIdentifier);
189
+ } = (0, _runtime.getRuntime)(this.agentIdentifier);
192
190
  this.timeKeeper = timeKeeper;
193
191
  if (this.recorder?.parent.trigger === _constants.TRIGGERS.API && this.recorder?.recording) {
194
192
  this.mode = _constants3.MODE.FULL;
@@ -206,7 +204,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
206
204
  // Do not change the webpackChunkName or it will break the webpack nrba-chunking plugin
207
205
  const {
208
206
  Recorder
209
- } = await Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "recorder" */'../shared/recorder')));
207
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require(/* webpackChunkName: "recorder" */'../shared/recorder')));
210
208
  this.recorder = new Recorder(this);
211
209
  this.recorder.currentBufferTarget.hasError = this.errorNoticed;
212
210
  } catch (err) {
@@ -245,17 +243,16 @@ class Aggregate extends _aggregateBase.AggregateBase {
245
243
  const {
246
244
  gzipSync,
247
245
  strToU8
248
- } = await Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "compressor" */'fflate')));
246
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require(/* webpackChunkName: "compressor" */'fflate')));
249
247
  this.gzipper = gzipSync;
250
248
  this.u8 = strToU8;
251
249
  } catch (err) {
252
250
  // compressor failed to load, but we can still record without compression as a last ditch effort
253
251
  }
254
252
  }
255
- prepareHarvest() {
256
- let {
257
- opts
258
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
253
+ prepareHarvest({
254
+ opts
255
+ } = {}) {
259
256
  if (!this.recorder || !this.timeKeeper?.ready) return;
260
257
  const recorderEvents = this.recorder.getEvents();
261
258
  // get the event type and use that to trigger another harvest if needed
@@ -268,11 +265,10 @@ class Aggregate extends _aggregateBase.AggregateBase {
268
265
  (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ['SessionReplay/Harvest/Attempts'], undefined, _features.FEATURE_NAMES.metrics, this.ee);
269
266
  let len = 0;
270
267
  if (!!this.gzipper && !!this.u8) {
271
- payload.body = this.gzipper(this.u8("[".concat(payload.body.map(_ref2 => {
272
- let {
273
- __serialized,
274
- ...e
275
- } = _ref2;
268
+ payload.body = this.gzipper(this.u8("[".concat(payload.body.map(({
269
+ __serialized,
270
+ ...e
271
+ }) => {
276
272
  if (e.__newrelic && __serialized) return __serialized;
277
273
  const output = {
278
274
  ...e
@@ -286,11 +282,10 @@ class Aggregate extends _aggregateBase.AggregateBase {
286
282
  len = payload.body.length;
287
283
  this.scheduler.opts.gzip = true;
288
284
  } else {
289
- payload.body = payload.body.map(_ref3 => {
290
- let {
291
- __serialized,
292
- ...node
293
- } = _ref3;
285
+ payload.body = payload.body.map(({
286
+ __serialized,
287
+ ...node
288
+ }) => {
294
289
  if (node.__newrelic) return node;
295
290
  const output = {
296
291
  ...node
@@ -302,14 +297,14 @@ class Aggregate extends _aggregateBase.AggregateBase {
302
297
  len = (0, _stringify.stringify)(payload.body).length;
303
298
  this.scheduler.opts.gzip = false;
304
299
  }
305
- if (len > _constants.MAX_PAYLOAD_SIZE) {
300
+ if (len > _agentConstants.MAX_PAYLOAD_SIZE) {
306
301
  this.abort(_constants.ABORT_REASONS.TOO_BIG, len);
307
302
  return;
308
303
  }
309
304
  // TODO -- Gracefully handle the buffer for retries.
310
305
  const {
311
306
  session
312
- } = (0, _config.getRuntime)(this.agentIdentifier);
307
+ } = (0, _runtime.getRuntime)(this.agentIdentifier);
313
308
  if (!session.state.sessionReplaySentFirstChunk) this.syncWithSessionManager({
314
309
  sessionReplaySentFirstChunk: true
315
310
  });
@@ -325,8 +320,8 @@ class Aggregate extends _aggregateBase.AggregateBase {
325
320
  getHarvestContents(recorderEvents) {
326
321
  recorderEvents ??= this.recorder.getEvents();
327
322
  let events = recorderEvents.events;
328
- const agentRuntime = (0, _config.getRuntime)(this.agentIdentifier);
329
- const info = (0, _config.getInfo)(this.agentIdentifier);
323
+ const agentRuntime = (0, _runtime.getRuntime)(this.agentIdentifier);
324
+ const info = (0, _info.getInfo)(this.agentIdentifier);
330
325
  const endUserId = info.jsAttributes?.['enduser.id'];
331
326
 
332
327
  // do not let the first node be a full snapshot node, since this NEEDS to be preceded by a meta node
@@ -349,8 +344,9 @@ class Aggregate extends _aggregateBase.AggregateBase {
349
344
  const relativeNow = (0, _now.now)();
350
345
  const firstEventTimestamp = this.getCorrectedTimestamp(events[0]); // from rrweb node
351
346
  const lastEventTimestamp = this.getCorrectedTimestamp(events[events.length - 1]); // from rrweb node
352
- const firstTimestamp = firstEventTimestamp || this.timeKeeper.correctAbsoluteTimestamp(recorderEvents.cycleTimestamp); // from rrweb node || from when the harvest cycle started
353
- const lastTimestamp = lastEventTimestamp || this.timeKeeper.convertRelativeTimestamp(relativeNow);
347
+ // from rrweb node || from when the harvest cycle started
348
+ const firstTimestamp = firstEventTimestamp || Math.floor(this.timeKeeper.correctAbsoluteTimestamp(this.timeKeeper.correctAbsoluteTimestamp(recorderEvents.cycleTimestamp)));
349
+ const lastTimestamp = lastEventTimestamp || Math.floor(this.timeKeeper.correctAbsoluteTimestamp(this.timeKeeper.convertRelativeTimestamp(relativeNow)));
354
350
  const agentMetadata = agentRuntime.appMetadata?.agents?.[0] || {};
355
351
  return {
356
352
  qs: {
@@ -387,7 +383,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
387
383
  'payload.type': recorderEvents.type,
388
384
  // customer-defined data should go last so that if it exceeds the query param padding limit it will be truncated instead of important attrs
389
385
  ...(endUserId && {
390
- 'enduser.id': endUserId
386
+ 'enduser.id': this.obfuscator.obfuscateString(endUserId)
391
387
  })
392
388
  // The Query Param is being arbitrarily limited in length here. It is also applied when estimating the size of the payload in getPayloadSize()
393
389
  }, _constants.QUERY_PARAM_PADDING).substring(1) // remove the leading '&'
@@ -418,9 +414,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
418
414
  }
419
415
 
420
416
  /** Abort the feature, once aborted it will not resume */
421
- abort() {
422
- let reason = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
423
- let data = arguments.length > 1 ? arguments[1] : undefined;
417
+ abort(reason = {}, data) {
424
418
  (0, _console.warn)(33, reason.message);
425
419
  (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, ["SessionReplay/Abort/".concat(reason.sm), data], undefined, _features.FEATURE_NAMES.metrics, this.ee);
426
420
  this.blocked = true;
@@ -433,11 +427,10 @@ class Aggregate extends _aggregateBase.AggregateBase {
433
427
  this.ee.emit('REPLAY_ABORTED');
434
428
  while (this.recorder?.getEvents().events.length) this.recorder?.clearBuffer?.();
435
429
  }
436
- syncWithSessionManager() {
437
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
430
+ syncWithSessionManager(state = {}) {
438
431
  const {
439
432
  session
440
- } = (0, _config.getRuntime)(this.agentIdentifier);
433
+ } = (0, _runtime.getRuntime)(this.agentIdentifier);
441
434
  session.write(state);
442
435
  }
443
436
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TRIGGERS = exports.SR_EVENT_EMITTER_TYPES = exports.RRWEB_EVENT_TYPES = exports.QUERY_PARAM_PADDING = exports.MAX_PAYLOAD_SIZE = exports.IDEAL_PAYLOAD_SIZE = exports.FEATURE_NAME = exports.CHECKOUT_MS = exports.AVG_COMPRESSION = exports.ABORT_REASONS = void 0;
6
+ exports.TRIGGERS = exports.SR_EVENT_EMITTER_TYPES = exports.RRWEB_EVENT_TYPES = exports.QUERY_PARAM_PADDING = exports.FEATURE_NAME = exports.CHECKOUT_MS = exports.AVG_COMPRESSION = exports.ABORT_REASONS = void 0;
7
7
  var _constants = require("../../common/session/constants");
8
8
  var _features = require("../../loaders/features/features");
9
9
  const FEATURE_NAME = exports.FEATURE_NAME = _features.FEATURE_NAMES.sessionReplay;
@@ -22,10 +22,6 @@ const RRWEB_EVENT_TYPES = exports.RRWEB_EVENT_TYPES = {
22
22
  Meta: 4,
23
23
  Custom: 5
24
24
  };
25
- /** Vortex caps payload sizes at 1MB */
26
- const MAX_PAYLOAD_SIZE = exports.MAX_PAYLOAD_SIZE = 1000000;
27
- /** Unloading caps around 64kb */
28
- const IDEAL_PAYLOAD_SIZE = exports.IDEAL_PAYLOAD_SIZE = 64000;
29
25
  /** Interval between forcing new full snapshots -- 15 seconds in error mode (x2), 5 minutes in full mode */
30
26
  const CHECKOUT_MS = exports.CHECKOUT_MS = {
31
27
  [_constants.MODE.ERROR]: 15000,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Instrument = void 0;
6
+ exports.SessionReplay = exports.Instrument = void 0;
7
7
  var _handle = require("../../../common/event-emitter/handle");
8
8
  var _constants = require("../../../common/session/constants");
9
9
  var _instrumentBase = require("../../utils/instrument-base");
@@ -15,16 +15,11 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
15
15
  * SPDX-License-Identifier: Apache-2.0
16
16
  */ /**
17
17
  * @file Primes the Session Replay feature for lazy loading.
18
- *
19
- * NOTE: This code is under development and dormant. It will not download to instrumented pages or record any data.
20
- * It is not production ready, and is not intended to be imported or implemented in any build of the browser agent until
21
- * functionality is validated and a full user experience is curated.
22
18
  */
23
19
  class Instrument extends _instrumentBase.InstrumentBase {
24
20
  static featureName = _constants2.FEATURE_NAME;
25
21
  #mode;
26
- constructor(agentIdentifier, aggregator) {
27
- let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
22
+ constructor(agentIdentifier, aggregator, auto = true) {
28
23
  super(agentIdentifier, aggregator, _constants2.FEATURE_NAME, auto);
29
24
  let session;
30
25
  this.replayRunning = false;
@@ -79,7 +74,7 @@ class Instrument extends _instrumentBase.InstrumentBase {
79
74
  try {
80
75
  const {
81
76
  Recorder
82
- } = await Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "recorder" */'../shared/recorder')));
77
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require(/* webpackChunkName: "recorder" */'../shared/recorder')));
83
78
 
84
79
  // If startReplay() has been used by this point, we must record in full mode regardless of session preload:
85
80
  // Note: recorder starts here with w/e the mode is at this time, but this may be changed later (see #apiStartOrRestartReplay else-case)
@@ -121,4 +116,5 @@ class Instrument extends _instrumentBase.InstrumentBase {
121
116
  }
122
117
  }
123
118
  }
124
- exports.Instrument = Instrument;
119
+ exports.Instrument = Instrument;
120
+ const SessionReplay = exports.SessionReplay = Instrument;