@newrelic/browser-agent 1.264.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 (407) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/common/aggregate/aggregator.js +1 -2
  3. package/dist/cjs/common/config/{state/configurable.js → configurable.js} +1 -1
  4. package/dist/cjs/common/config/{state/info.js → info.js} +1 -1
  5. package/dist/cjs/common/config/{state/init.js → init.js} +5 -5
  6. package/dist/cjs/common/config/{state/loader-config.js → loader-config.js} +1 -1
  7. package/dist/cjs/common/config/{state/runtime.js → runtime.js} +16 -5
  8. package/dist/cjs/common/constants/agent-constants.js +8 -0
  9. package/dist/cjs/common/constants/env.cdn.js +1 -1
  10. package/dist/cjs/common/constants/env.npm.js +1 -1
  11. package/dist/cjs/common/context/shared-context.js +1 -2
  12. package/dist/cjs/common/dispatch/global-event.js +1 -2
  13. package/dist/cjs/common/drain/drain.js +10 -16
  14. package/dist/cjs/common/event-emitter/contextual-ee.js +3 -4
  15. package/dist/cjs/common/event-listener/event-listener-opts.js +2 -6
  16. package/dist/cjs/common/harvest/harvest-scheduler.js +1 -2
  17. package/dist/cjs/common/harvest/harvest.js +29 -56
  18. package/dist/cjs/common/serialize/bel-serializer.js +6 -11
  19. package/dist/cjs/common/session/session-entity.js +9 -12
  20. package/dist/cjs/common/timing/nav-timing.js +1 -3
  21. package/dist/cjs/common/timing/time-keeper.js +16 -6
  22. package/dist/cjs/common/url/encode.js +2 -4
  23. package/dist/cjs/common/util/console.js +2 -0
  24. package/dist/cjs/common/util/invoke.js +6 -16
  25. package/dist/cjs/common/util/obfuscate.js +97 -53
  26. package/dist/cjs/common/util/submit-data.js +17 -20
  27. package/dist/cjs/common/util/text.js +9 -0
  28. package/dist/cjs/common/util/traverse.js +1 -3
  29. package/dist/cjs/common/vitals/cumulative-layout-shift.js +5 -6
  30. package/dist/cjs/common/vitals/first-contentful-paint.js +4 -5
  31. package/dist/cjs/common/vitals/first-input-delay.js +4 -5
  32. package/dist/cjs/common/vitals/interaction-to-next-paint.js +5 -6
  33. package/dist/cjs/common/vitals/largest-contentful-paint.js +4 -5
  34. package/dist/cjs/common/vitals/time-to-first-byte.js +4 -5
  35. package/dist/cjs/common/vitals/vital-metric.js +6 -8
  36. package/dist/cjs/common/window/nreum.js +2 -1
  37. package/dist/cjs/common/window/page-visibility.js +1 -4
  38. package/dist/cjs/common/wrap/wrap-events.js +1 -4
  39. package/dist/cjs/common/wrap/wrap-promise.js +1 -4
  40. package/dist/cjs/common/wrap/wrap-websocket.js +74 -0
  41. package/dist/cjs/features/ajax/aggregate/chunk.js +4 -3
  42. package/dist/cjs/features/ajax/aggregate/gql.js +4 -5
  43. package/dist/cjs/features/ajax/aggregate/index.js +20 -23
  44. package/dist/cjs/features/ajax/constants.js +2 -3
  45. package/dist/cjs/features/ajax/instrument/distributed-tracing.js +9 -8
  46. package/dist/cjs/features/ajax/instrument/index.js +15 -13
  47. package/dist/cjs/features/generic_events/aggregate/index.js +49 -58
  48. package/dist/cjs/features/generic_events/constants.js +4 -2
  49. package/dist/cjs/features/generic_events/instrument/index.js +7 -7
  50. package/dist/cjs/features/jserrors/aggregate/index.js +24 -44
  51. package/dist/cjs/features/jserrors/instrument/index.js +5 -5
  52. package/dist/cjs/features/logging/aggregate/index.js +34 -37
  53. package/dist/cjs/features/logging/constants.js +2 -3
  54. package/dist/cjs/features/logging/instrument/index.js +6 -7
  55. package/dist/cjs/features/logging/shared/log.js +1 -3
  56. package/dist/cjs/features/logging/shared/utils.js +2 -4
  57. package/dist/cjs/features/metrics/aggregate/index.js +35 -18
  58. package/dist/cjs/features/metrics/aggregate/websocket-detection.js +34 -0
  59. package/dist/cjs/features/metrics/constants.js +4 -2
  60. package/dist/cjs/features/metrics/instrument/index.js +13 -5
  61. package/dist/cjs/features/page_action/instrument/index.js +8 -4
  62. package/dist/cjs/features/page_view_event/aggregate/index.js +20 -40
  63. package/dist/cjs/features/page_view_event/instrument/index.js +5 -5
  64. package/dist/cjs/features/page_view_timing/aggregate/index.js +24 -40
  65. package/dist/cjs/features/page_view_timing/instrument/index.js +5 -5
  66. package/dist/cjs/features/session_replay/aggregate/index.js +37 -44
  67. package/dist/cjs/features/session_replay/constants.js +1 -5
  68. package/dist/cjs/features/session_replay/instrument/index.js +6 -10
  69. package/dist/cjs/features/session_replay/shared/recorder-events.js +25 -20
  70. package/dist/cjs/features/session_replay/shared/recorder.js +17 -13
  71. package/dist/cjs/features/session_replay/shared/stylesheet-evaluator.js +3 -3
  72. package/dist/cjs/features/session_replay/shared/utils.js +5 -4
  73. package/dist/cjs/features/session_trace/aggregate/index.js +26 -43
  74. package/dist/cjs/features/session_trace/aggregate/trace/storage.js +7 -5
  75. package/dist/cjs/features/session_trace/instrument/index.js +9 -8
  76. package/dist/cjs/features/soft_navigations/aggregate/ajax-node.js +1 -1
  77. package/dist/cjs/features/soft_navigations/aggregate/bel-node.js +1 -1
  78. package/dist/cjs/features/soft_navigations/aggregate/index.js +23 -31
  79. package/dist/cjs/features/soft_navigations/aggregate/initial-page-load-interaction.js +2 -2
  80. package/dist/cjs/features/soft_navigations/aggregate/interaction.js +9 -10
  81. package/dist/cjs/features/soft_navigations/instrument/index.js +15 -14
  82. package/dist/cjs/features/spa/aggregate/index.js +17 -27
  83. package/dist/cjs/features/spa/aggregate/interaction.js +7 -6
  84. package/dist/cjs/features/spa/aggregate/serializer.js +3 -3
  85. package/dist/cjs/features/spa/constants.js +2 -2
  86. package/dist/cjs/features/spa/instrument/index.js +21 -20
  87. package/dist/cjs/features/utils/agent-session.js +6 -4
  88. package/dist/cjs/features/utils/aggregate-base.js +15 -10
  89. package/dist/cjs/features/utils/event-buffer.js +132 -0
  90. package/dist/cjs/features/utils/feature-gates.js +2 -2
  91. package/dist/cjs/features/utils/instrument-base.js +7 -8
  92. package/dist/cjs/features/utils/lazy-feature-loader.js +11 -11
  93. package/dist/cjs/features/utils/nr1-debugger.js +1 -3
  94. package/dist/cjs/loaders/agent-base.js +4 -8
  95. package/dist/cjs/loaders/agent.js +7 -2
  96. package/dist/cjs/loaders/api/api.js +22 -34
  97. package/dist/cjs/loaders/api/apiAsync.js +9 -12
  98. package/dist/cjs/loaders/configure/configure.js +12 -12
  99. package/dist/cjs/loaders/features/enabled-features.js +2 -2
  100. package/dist/cjs/loaders/micro-agent.js +15 -14
  101. package/dist/esm/common/aggregate/aggregator.js +1 -2
  102. package/dist/esm/common/config/{state/configurable.js → configurable.js} +1 -1
  103. package/dist/esm/common/config/{state/info.js → info.js} +1 -1
  104. package/dist/esm/common/config/{state/init.js → init.js} +5 -5
  105. package/dist/esm/common/config/{state/loader-config.js → loader-config.js} +1 -1
  106. package/dist/esm/common/config/{state/runtime.js → runtime.js} +17 -5
  107. package/dist/esm/common/constants/agent-constants.js +2 -0
  108. package/dist/esm/common/constants/env.cdn.js +1 -1
  109. package/dist/esm/common/constants/env.npm.js +1 -1
  110. package/dist/esm/common/context/shared-context.js +1 -2
  111. package/dist/esm/common/dispatch/global-event.js +1 -2
  112. package/dist/esm/common/drain/drain.js +10 -16
  113. package/dist/esm/common/event-emitter/contextual-ee.js +2 -3
  114. package/dist/esm/common/event-listener/event-listener-opts.js +2 -6
  115. package/dist/esm/common/harvest/harvest-scheduler.js +1 -2
  116. package/dist/esm/common/harvest/harvest.js +21 -48
  117. package/dist/esm/common/serialize/bel-serializer.js +6 -11
  118. package/dist/esm/common/session/session-entity.js +8 -11
  119. package/dist/esm/common/timing/nav-timing.js +1 -3
  120. package/dist/esm/common/timing/time-keeper.js +15 -5
  121. package/dist/esm/common/url/encode.js +2 -4
  122. package/dist/esm/common/util/console.js +2 -0
  123. package/dist/esm/common/util/invoke.js +6 -16
  124. package/dist/esm/common/util/obfuscate.js +96 -49
  125. package/dist/esm/common/util/submit-data.js +17 -20
  126. package/dist/esm/common/util/text.js +3 -0
  127. package/dist/esm/common/util/traverse.js +1 -3
  128. package/dist/esm/common/vitals/cumulative-layout-shift.js +5 -6
  129. package/dist/esm/common/vitals/first-contentful-paint.js +4 -5
  130. package/dist/esm/common/vitals/first-input-delay.js +4 -5
  131. package/dist/esm/common/vitals/interaction-to-next-paint.js +5 -6
  132. package/dist/esm/common/vitals/largest-contentful-paint.js +4 -5
  133. package/dist/esm/common/vitals/time-to-first-byte.js +4 -5
  134. package/dist/esm/common/vitals/vital-metric.js +6 -8
  135. package/dist/esm/common/window/nreum.js +2 -1
  136. package/dist/esm/common/window/page-visibility.js +1 -4
  137. package/dist/esm/common/wrap/wrap-events.js +1 -4
  138. package/dist/esm/common/wrap/wrap-promise.js +1 -4
  139. package/dist/esm/common/wrap/wrap-websocket.js +67 -0
  140. package/dist/esm/features/ajax/aggregate/chunk.js +3 -2
  141. package/dist/esm/features/ajax/aggregate/gql.js +4 -5
  142. package/dist/esm/features/ajax/aggregate/index.js +17 -20
  143. package/dist/esm/features/ajax/constants.js +1 -2
  144. package/dist/esm/features/ajax/instrument/distributed-tracing.js +2 -1
  145. package/dist/esm/features/ajax/instrument/index.js +11 -9
  146. package/dist/esm/features/generic_events/aggregate/index.js +41 -50
  147. package/dist/esm/features/generic_events/constants.js +3 -1
  148. package/dist/esm/features/generic_events/instrument/index.js +5 -5
  149. package/dist/esm/features/jserrors/aggregate/index.js +19 -39
  150. package/dist/esm/features/jserrors/instrument/index.js +4 -4
  151. package/dist/esm/features/logging/aggregate/index.js +32 -35
  152. package/dist/esm/features/logging/constants.js +1 -2
  153. package/dist/esm/features/logging/instrument/index.js +5 -6
  154. package/dist/esm/features/logging/shared/log.js +1 -3
  155. package/dist/esm/features/logging/shared/utils.js +2 -4
  156. package/dist/esm/features/metrics/aggregate/index.js +29 -12
  157. package/dist/esm/features/metrics/aggregate/websocket-detection.js +29 -0
  158. package/dist/esm/features/metrics/constants.js +3 -1
  159. package/dist/esm/features/metrics/instrument/index.js +13 -5
  160. package/dist/esm/features/page_action/instrument/index.js +7 -3
  161. package/dist/esm/features/page_view_event/aggregate/index.js +18 -38
  162. package/dist/esm/features/page_view_event/instrument/index.js +4 -4
  163. package/dist/esm/features/page_view_timing/aggregate/index.js +21 -37
  164. package/dist/esm/features/page_view_timing/instrument/index.js +4 -4
  165. package/dist/esm/features/session_replay/aggregate/index.js +27 -34
  166. package/dist/esm/features/session_replay/constants.js +0 -4
  167. package/dist/esm/features/session_replay/index.js +1 -7
  168. package/dist/esm/features/session_replay/instrument/index.js +6 -9
  169. package/dist/esm/features/session_replay/shared/recorder-events.js +25 -20
  170. package/dist/esm/features/session_replay/shared/recorder.js +14 -10
  171. package/dist/esm/features/session_replay/shared/stylesheet-evaluator.js +3 -3
  172. package/dist/esm/features/session_replay/shared/utils.js +3 -2
  173. package/dist/esm/features/session_trace/aggregate/index.js +21 -38
  174. package/dist/esm/features/session_trace/aggregate/trace/storage.js +7 -5
  175. package/dist/esm/features/session_trace/instrument/index.js +6 -5
  176. package/dist/esm/features/soft_navigations/aggregate/ajax-node.js +1 -1
  177. package/dist/esm/features/soft_navigations/aggregate/bel-node.js +1 -1
  178. package/dist/esm/features/soft_navigations/aggregate/index.js +22 -30
  179. package/dist/esm/features/soft_navigations/aggregate/initial-page-load-interaction.js +1 -1
  180. package/dist/esm/features/soft_navigations/aggregate/interaction.js +7 -8
  181. package/dist/esm/features/soft_navigations/instrument/index.js +12 -11
  182. package/dist/esm/features/spa/aggregate/index.js +11 -21
  183. package/dist/esm/features/spa/aggregate/interaction.js +6 -5
  184. package/dist/esm/features/spa/aggregate/serializer.js +1 -1
  185. package/dist/esm/features/spa/constants.js +2 -2
  186. package/dist/esm/features/spa/instrument/index.js +13 -12
  187. package/dist/esm/features/utils/agent-session.js +3 -1
  188. package/dist/esm/features/utils/aggregate-base.js +13 -8
  189. package/dist/esm/features/utils/event-buffer.js +126 -0
  190. package/dist/esm/features/utils/feature-gates.js +1 -1
  191. package/dist/esm/features/utils/instrument-base.js +6 -7
  192. package/dist/esm/features/utils/lazy-feature-loader.js +11 -11
  193. package/dist/esm/features/utils/nr1-debugger.js +1 -3
  194. package/dist/esm/loaders/agent-base.js +4 -8
  195. package/dist/esm/loaders/agent.js +7 -2
  196. package/dist/esm/loaders/api/api.js +17 -29
  197. package/dist/esm/loaders/api/apiAsync.js +2 -5
  198. package/dist/esm/loaders/configure/configure.js +5 -5
  199. package/dist/esm/loaders/features/enabled-features.js +1 -1
  200. package/dist/esm/loaders/micro-agent.js +10 -9
  201. package/dist/types/common/config/configurable.d.ts.map +1 -0
  202. package/dist/types/common/config/info.d.ts.map +1 -0
  203. package/dist/types/common/config/init.d.ts.map +1 -0
  204. package/dist/types/common/config/loader-config.d.ts.map +1 -0
  205. package/dist/types/common/config/runtime.d.ts.map +1 -0
  206. package/dist/types/common/constants/agent-constants.d.ts +3 -0
  207. package/dist/types/common/constants/agent-constants.d.ts.map +1 -0
  208. package/dist/types/common/drain/drain.d.ts.map +1 -1
  209. package/dist/types/common/harvest/harvest.d.ts +1 -7
  210. package/dist/types/common/harvest/harvest.d.ts.map +1 -1
  211. package/dist/types/common/serialize/bel-serializer.d.ts.map +1 -1
  212. package/dist/types/common/timing/time-keeper.d.ts +9 -2
  213. package/dist/types/common/timing/time-keeper.d.ts.map +1 -1
  214. package/dist/types/common/util/console.d.ts.map +1 -1
  215. package/dist/types/common/util/obfuscate.d.ts +78 -6
  216. package/dist/types/common/util/obfuscate.d.ts.map +1 -1
  217. package/dist/types/common/util/text.d.ts +2 -0
  218. package/dist/types/common/util/text.d.ts.map +1 -0
  219. package/dist/types/common/window/nreum.d.ts.map +1 -1
  220. package/dist/types/common/wrap/wrap-websocket.d.ts +4 -0
  221. package/dist/types/common/wrap/wrap-websocket.d.ts.map +1 -0
  222. package/dist/types/features/ajax/aggregate/chunk.d.ts.map +1 -1
  223. package/dist/types/features/ajax/aggregate/index.d.ts +2 -3
  224. package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -1
  225. package/dist/types/features/ajax/constants.d.ts +0 -1
  226. package/dist/types/features/ajax/constants.d.ts.map +1 -1
  227. package/dist/types/features/ajax/instrument/distributed-tracing.d.ts.map +1 -1
  228. package/dist/types/features/ajax/instrument/index.d.ts +1 -0
  229. package/dist/types/features/ajax/instrument/index.d.ts.map +1 -1
  230. package/dist/types/features/generic_events/aggregate/index.d.ts +6 -8
  231. package/dist/types/features/generic_events/aggregate/index.d.ts.map +1 -1
  232. package/dist/types/features/generic_events/constants.d.ts +2 -0
  233. package/dist/types/features/generic_events/constants.d.ts.map +1 -1
  234. package/dist/types/features/generic_events/instrument/index.d.ts +1 -0
  235. package/dist/types/features/generic_events/instrument/index.d.ts.map +1 -1
  236. package/dist/types/features/jserrors/aggregate/index.d.ts +2 -2
  237. package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
  238. package/dist/types/features/jserrors/instrument/index.d.ts +1 -0
  239. package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -1
  240. package/dist/types/features/logging/aggregate/index.d.ts +4 -7
  241. package/dist/types/features/logging/aggregate/index.d.ts.map +1 -1
  242. package/dist/types/features/logging/constants.d.ts +0 -1
  243. package/dist/types/features/logging/constants.d.ts.map +1 -1
  244. package/dist/types/features/logging/instrument/index.d.ts +1 -0
  245. package/dist/types/features/logging/instrument/index.d.ts.map +1 -1
  246. package/dist/types/features/metrics/aggregate/index.d.ts.map +1 -1
  247. package/dist/types/features/metrics/aggregate/websocket-detection.d.ts +12 -0
  248. package/dist/types/features/metrics/aggregate/websocket-detection.d.ts.map +1 -0
  249. package/dist/types/features/metrics/constants.d.ts +1 -0
  250. package/dist/types/features/metrics/constants.d.ts.map +1 -1
  251. package/dist/types/features/metrics/instrument/index.d.ts +1 -0
  252. package/dist/types/features/metrics/instrument/index.d.ts.map +1 -1
  253. package/dist/types/features/page_action/instrument/index.d.ts +4 -0
  254. package/dist/types/features/page_action/instrument/index.d.ts.map +1 -1
  255. package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -1
  256. package/dist/types/features/page_view_event/instrument/index.d.ts +1 -0
  257. package/dist/types/features/page_view_event/instrument/index.d.ts.map +1 -1
  258. package/dist/types/features/page_view_timing/aggregate/index.d.ts +2 -2
  259. package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -1
  260. package/dist/types/features/page_view_timing/instrument/index.d.ts +1 -0
  261. package/dist/types/features/page_view_timing/instrument/index.d.ts.map +1 -1
  262. package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
  263. package/dist/types/features/session_replay/constants.d.ts +0 -4
  264. package/dist/types/features/session_replay/constants.d.ts.map +1 -1
  265. package/dist/types/features/session_replay/instrument/index.d.ts +1 -0
  266. package/dist/types/features/session_replay/instrument/index.d.ts.map +1 -1
  267. package/dist/types/features/session_replay/shared/recorder-events.d.ts +6 -6
  268. package/dist/types/features/session_replay/shared/recorder-events.d.ts.map +1 -1
  269. package/dist/types/features/session_replay/shared/recorder.d.ts +2 -2
  270. package/dist/types/features/session_replay/shared/recorder.d.ts.map +1 -1
  271. package/dist/types/features/session_replay/shared/utils.d.ts.map +1 -1
  272. package/dist/types/features/session_trace/aggregate/index.d.ts +2 -2
  273. package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
  274. package/dist/types/features/session_trace/aggregate/trace/storage.d.ts +1 -1
  275. package/dist/types/features/session_trace/aggregate/trace/storage.d.ts.map +1 -1
  276. package/dist/types/features/session_trace/instrument/index.d.ts +1 -0
  277. package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -1
  278. package/dist/types/features/soft_navigations/aggregate/index.d.ts +3 -3
  279. package/dist/types/features/soft_navigations/aggregate/index.d.ts.map +1 -1
  280. package/dist/types/features/soft_navigations/instrument/index.d.ts +1 -0
  281. package/dist/types/features/soft_navigations/instrument/index.d.ts.map +1 -1
  282. package/dist/types/features/spa/aggregate/index.d.ts +2 -2
  283. package/dist/types/features/spa/aggregate/index.d.ts.map +1 -1
  284. package/dist/types/features/spa/aggregate/interaction.d.ts.map +1 -1
  285. package/dist/types/features/spa/constants.d.ts.map +1 -1
  286. package/dist/types/features/spa/instrument/index.d.ts +1 -0
  287. package/dist/types/features/spa/instrument/index.d.ts.map +1 -1
  288. package/dist/types/features/utils/agent-session.d.ts.map +1 -1
  289. package/dist/types/features/utils/aggregate-base.d.ts +1 -0
  290. package/dist/types/features/utils/aggregate-base.d.ts.map +1 -1
  291. package/dist/types/features/utils/event-buffer.d.ts +72 -0
  292. package/dist/types/features/utils/event-buffer.d.ts.map +1 -0
  293. package/dist/types/features/utils/instrument-base.d.ts +1 -0
  294. package/dist/types/features/utils/instrument-base.d.ts.map +1 -1
  295. package/dist/types/loaders/agent-base.d.ts +1 -1
  296. package/dist/types/loaders/agent.d.ts.map +1 -1
  297. package/dist/types/loaders/api/api.d.ts.map +1 -1
  298. package/dist/types/loaders/configure/configure.d.ts.map +1 -1
  299. package/dist/types/loaders/micro-agent.d.ts.map +1 -1
  300. package/package.json +55 -59
  301. package/src/common/config/__mocks__/info.js +3 -0
  302. package/src/common/config/__mocks__/init.js +3 -0
  303. package/src/common/config/__mocks__/loader-config.js +2 -0
  304. package/src/common/config/__mocks__/runtime.js +2 -0
  305. package/src/common/config/{state/configurable.js → configurable.js} +1 -1
  306. package/src/common/config/{state/info.js → info.js} +1 -1
  307. package/src/common/config/{state/init.js → init.js} +5 -5
  308. package/src/common/config/{state/loader-config.js → loader-config.js} +1 -1
  309. package/src/common/config/{state/runtime.js → runtime.js} +19 -5
  310. package/src/common/constants/agent-constants.js +2 -0
  311. package/src/common/drain/drain.js +5 -2
  312. package/src/common/event-emitter/contextual-ee.js +1 -1
  313. package/src/common/harvest/harvest.js +7 -21
  314. package/src/common/serialize/bel-serializer.js +5 -7
  315. package/src/common/session/session-entity.js +2 -2
  316. package/src/common/timing/__mocks__/time-keeper.js +6 -2
  317. package/src/common/timing/time-keeper.js +15 -5
  318. package/src/common/util/__mocks__/console.js +1 -0
  319. package/src/common/util/__mocks__/obfuscate.js +5 -8
  320. package/src/common/util/console.js +2 -0
  321. package/src/common/util/obfuscate.js +94 -50
  322. package/src/common/util/text.js +6 -0
  323. package/src/common/window/__mocks__/nreum.js +1 -1
  324. package/src/common/window/nreum.js +2 -1
  325. package/src/common/wrap/wrap-websocket.js +73 -0
  326. package/src/features/ajax/aggregate/chunk.js +3 -2
  327. package/src/features/ajax/aggregate/index.js +20 -19
  328. package/src/features/ajax/constants.js +0 -2
  329. package/src/features/ajax/instrument/distributed-tracing.js +2 -1
  330. package/src/features/ajax/instrument/index.js +9 -5
  331. package/src/features/generic_events/aggregate/index.js +43 -37
  332. package/src/features/generic_events/constants.js +2 -0
  333. package/src/features/generic_events/instrument/index.js +3 -1
  334. package/src/features/jserrors/aggregate/index.js +14 -4
  335. package/src/features/jserrors/instrument/index.js +2 -0
  336. package/src/features/logging/aggregate/index.js +39 -31
  337. package/src/features/logging/constants.js +0 -2
  338. package/src/features/logging/instrument/index.js +2 -0
  339. package/src/features/logging/shared/utils.js +1 -1
  340. package/src/features/metrics/aggregate/index.js +24 -9
  341. package/src/features/metrics/aggregate/websocket-detection.js +31 -0
  342. package/src/features/metrics/constants.js +3 -0
  343. package/src/features/metrics/instrument/index.js +13 -1
  344. package/src/features/page_action/instrument/index.js +5 -0
  345. package/src/features/page_view_event/aggregate/index.js +8 -23
  346. package/src/features/page_view_event/instrument/index.js +2 -0
  347. package/src/features/page_view_timing/aggregate/index.js +14 -16
  348. package/src/features/page_view_timing/instrument/index.js +2 -0
  349. package/src/features/session_replay/aggregate/index.js +13 -9
  350. package/src/features/session_replay/constants.js +0 -4
  351. package/src/features/session_replay/index.js +1 -7
  352. package/src/features/session_replay/instrument/index.js +3 -4
  353. package/src/features/session_replay/shared/recorder-events.js +27 -20
  354. package/src/features/session_replay/shared/recorder.js +13 -6
  355. package/src/features/session_replay/shared/stylesheet-evaluator.js +2 -2
  356. package/src/features/session_replay/shared/utils.js +3 -2
  357. package/src/features/session_trace/aggregate/index.js +16 -7
  358. package/src/features/session_trace/aggregate/trace/storage.js +6 -1
  359. package/src/features/session_trace/instrument/index.js +4 -1
  360. package/src/features/soft_navigations/aggregate/ajax-node.js +1 -1
  361. package/src/features/soft_navigations/aggregate/index.js +13 -15
  362. package/src/features/soft_navigations/aggregate/initial-page-load-interaction.js +1 -1
  363. package/src/features/soft_navigations/aggregate/interaction.js +1 -1
  364. package/src/features/soft_navigations/instrument/index.js +9 -5
  365. package/src/features/spa/aggregate/index.js +11 -18
  366. package/src/features/spa/aggregate/interaction.js +5 -3
  367. package/src/features/spa/aggregate/serializer.js +1 -1
  368. package/src/features/spa/constants.js +2 -2
  369. package/src/features/spa/instrument/index.js +9 -3
  370. package/src/features/utils/agent-session.js +3 -1
  371. package/src/features/utils/aggregate-base.js +10 -2
  372. package/src/features/utils/event-buffer.js +126 -0
  373. package/src/features/utils/feature-gates.js +1 -1
  374. package/src/features/utils/instrument-base.js +2 -1
  375. package/src/loaders/agent-base.js +2 -2
  376. package/src/loaders/agent.js +7 -2
  377. package/src/loaders/api/api.js +2 -1
  378. package/src/loaders/api/apiAsync.js +1 -1
  379. package/src/loaders/configure/configure.js +4 -1
  380. package/src/loaders/features/enabled-features.js +1 -1
  381. package/src/loaders/micro-agent.js +4 -1
  382. package/dist/cjs/common/config/config.js +0 -76
  383. package/dist/cjs/common/config/state/originals.js +0 -8
  384. package/dist/cjs/common/wrap/index.js +0 -61
  385. package/dist/esm/common/config/config.js +0 -11
  386. package/dist/esm/common/config/state/originals.js +0 -2
  387. package/dist/esm/common/wrap/index.js +0 -13
  388. package/dist/types/common/config/config.d.ts +0 -13
  389. package/dist/types/common/config/config.d.ts.map +0 -1
  390. package/dist/types/common/config/state/configurable.d.ts.map +0 -1
  391. package/dist/types/common/config/state/info.d.ts.map +0 -1
  392. package/dist/types/common/config/state/init.d.ts.map +0 -1
  393. package/dist/types/common/config/state/loader-config.d.ts.map +0 -1
  394. package/dist/types/common/config/state/originals.d.ts +0 -2
  395. package/dist/types/common/config/state/originals.d.ts.map +0 -1
  396. package/dist/types/common/config/state/runtime.d.ts.map +0 -1
  397. package/dist/types/common/wrap/index.d.ts +0 -10
  398. package/dist/types/common/wrap/index.d.ts.map +0 -1
  399. package/src/common/config/__mocks__/config.js +0 -11
  400. package/src/common/config/config.js +0 -12
  401. package/src/common/config/state/originals.js +0 -3
  402. package/src/common/wrap/index.js +0 -16
  403. /package/dist/types/common/config/{state/configurable.d.ts → configurable.d.ts} +0 -0
  404. /package/dist/types/common/config/{state/info.d.ts → info.d.ts} +0 -0
  405. /package/dist/types/common/config/{state/init.d.ts → init.d.ts} +0 -0
  406. /package/dist/types/common/config/{state/loader-config.d.ts → loader-config.d.ts} +0 -0
  407. /package/dist/types/common/config/{state/runtime.d.ts → runtime.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,30 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.265.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.264.0...v1.265.0) (2024-08-30)
7
+
8
+
9
+ ### Features
10
+
11
+ * add payload size evaluation to generic events feature ([#1152](https://github.com/newrelic/newrelic-browser-agent/issues/1152)) ([65d9d11](https://github.com/newrelic/newrelic-browser-agent/commit/65d9d11172df4a3abe750c3d110b53ad65ae4319))
12
+ * Add WebSocket wrapper and supportability metrics ([#1159](https://github.com/newrelic/newrelic-browser-agent/issues/1159)) ([7b4ab87](https://github.com/newrelic/newrelic-browser-agent/commit/7b4ab87ae28450cc97f6a84f3176e0c9f8698d76))
13
+ * Configure Session Replay to wait for DOMContentLoaded ([#1164](https://github.com/newrelic/newrelic-browser-agent/issues/1164)) ([84bd299](https://github.com/newrelic/newrelic-browser-agent/commit/84bd29981675660d8f47a0f49235005e7be11947))
14
+ * removing internal barrel exports ([#1158](https://github.com/newrelic/newrelic-browser-agent/issues/1158)) ([2e29a6e](https://github.com/newrelic/newrelic-browser-agent/commit/2e29a6e3c9d7a6a099b73aff59682a1e38008072))
15
+ * Standardize Feature Buffering Behavior ([#1155](https://github.com/newrelic/newrelic-browser-agent/issues/1155)) ([d070a43](https://github.com/newrelic/newrelic-browser-agent/commit/d070a4315df35ace82e20b8b2c69044bf8504c92))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * Ensure drain target is a valid event emitter before subscribing ([#1167](https://github.com/newrelic/newrelic-browser-agent/issues/1167)) ([187d31f](https://github.com/newrelic/newrelic-browser-agent/commit/187d31fe0fd95e75907742a7c49779683a6b040c))
21
+ * fix duplicative log payloads on unload ([#1166](https://github.com/newrelic/newrelic-browser-agent/issues/1166)) ([52bb088](https://github.com/newrelic/newrelic-browser-agent/commit/52bb08880215c40abf080a2bf1c80a29c7ad3324))
22
+ * relative timestamps in session trace ([#1142](https://github.com/newrelic/newrelic-browser-agent/issues/1142)) ([378b1fb](https://github.com/newrelic/newrelic-browser-agent/commit/378b1fb49ca5732e0c1b704920143b966102cfb6))
23
+ * Updated Logging API function ([#1147](https://github.com/newrelic/newrelic-browser-agent/issues/1147)) ([bf2e980](https://github.com/newrelic/newrelic-browser-agent/commit/bf2e98056c2ad214421918fb4938a08b6213590e))
24
+
25
+
26
+ ### Security Fixes
27
+
28
+ * apply obfuscation rules to session trace ([#1149](https://github.com/newrelic/newrelic-browser-agent/issues/1149)) ([fbc6f9d](https://github.com/newrelic/newrelic-browser-agent/commit/fbc6f9d31a33515e05d70e190c9c8da198fa4415))
29
+
6
30
  ## [1.264.0](https://github.com/newrelic/newrelic-browser-agent/compare/v1.263.0...v1.264.0) (2024-08-06)
7
31
 
8
32
 
@@ -95,8 +95,7 @@ function aggregateMetrics(newMetrics, oldMetrics) {
95
95
  count: 0
96
96
  };
97
97
  oldMetrics.count += 1;
98
- Object.entries(newMetrics || {}).forEach(_ref => {
99
- let [key, value] = _ref;
98
+ Object.entries(newMetrics || {}).forEach(([key, value]) => {
100
99
  oldMetrics[key] = updateMetric(value, oldMetrics[key]);
101
100
  });
102
101
  return oldMetrics;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getModeledObject = getModeledObject;
7
- var _console = require("../../util/console");
7
+ var _console = require("../util/console");
8
8
  function getModeledObject(obj, model) {
9
9
  try {
10
10
  if (!obj || typeof obj !== 'object') return (0, _console.warn)(3);
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getInfo = getInfo;
7
7
  exports.isValid = isValid;
8
8
  exports.setInfo = setInfo;
9
- var _nreum = require("../../window/nreum");
9
+ var _nreum = require("../window/nreum");
10
10
  var _configurable = require("./configurable");
11
11
  const model = {
12
12
  // preset defaults
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getConfiguration = getConfiguration;
7
7
  exports.getConfigurationValue = getConfigurationValue;
8
8
  exports.setConfiguration = setConfiguration;
9
- var _constants = require("../../../features/logging/constants");
10
- var _querySelector = require("../../dom/query-selector");
11
- var _constants2 = require("../../session/constants");
12
- var _console = require("../../util/console");
13
- var _nreum = require("../../window/nreum");
9
+ var _constants = require("../../features/logging/constants");
10
+ var _querySelector = require("../dom/query-selector");
11
+ var _constants2 = require("../session/constants");
12
+ var _console = require("../util/console");
13
+ var _nreum = require("../window/nreum");
14
14
  var _configurable = require("./configurable");
15
15
  const nrMask = '[data-nr-mask]';
16
16
  const model = () => {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getLoaderConfig = getLoaderConfig;
7
7
  exports.setLoaderConfig = setLoaderConfig;
8
- var _nreum = require("../../window/nreum");
8
+ var _nreum = require("../window/nreum");
9
9
  var _configurable = require("./configurable");
10
10
  const model = {
11
11
  accountID: undefined,
@@ -6,9 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getRuntime = getRuntime;
7
7
  exports.setRuntime = setRuntime;
8
8
  var _configurable = require("./configurable");
9
- var _nreum = require("../../window/nreum");
10
- var _runtime = require("../../constants/runtime");
11
- var _env = require("../../constants/env.npm");
9
+ var _nreum = require("../window/nreum");
10
+ var _runtime = require("../constants/runtime");
11
+ var _env = require("../constants/env.npm");
12
+ /**
13
+ * Module level count of harvests. This property will auto-increment each time it is accessed.
14
+ * @type {number}
15
+ */
16
+ let harvestCount = 0;
12
17
  const readonly = {
13
18
  buildEnv: _env.BUILD_ENV,
14
19
  distMethod: _env.DIST_METHOD,
@@ -29,8 +34,8 @@ const model = {
29
34
  appMetadata: {},
30
35
  session: undefined,
31
36
  denyList: undefined,
32
- harvestCount: 0,
33
- timeKeeper: undefined
37
+ timeKeeper: undefined,
38
+ obfuscator: undefined
34
39
  };
35
40
  const _cache = {};
36
41
  function getRuntime(id) {
@@ -44,6 +49,12 @@ function setRuntime(id, obj) {
44
49
  ...(0, _configurable.getModeledObject)(obj, model),
45
50
  ...readonly
46
51
  };
52
+ if (!Object.hasOwnProperty.call(_cache[id], 'harvestCount')) {
53
+ // Harvest count needs to be added as a getter so the variable is updated each time it is accessed
54
+ Object.defineProperty(_cache[id], 'harvestCount', {
55
+ get: () => ++harvestCount
56
+ });
57
+ }
47
58
  const agentInst = (0, _nreum.getNREUMInitializedAgent)(id);
48
59
  if (agentInst) agentInst.runtime = _cache[id];
49
60
  }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MAX_PAYLOAD_SIZE = exports.IDEAL_PAYLOAD_SIZE = void 0;
7
+ const IDEAL_PAYLOAD_SIZE = exports.IDEAL_PAYLOAD_SIZE = 64000;
8
+ const MAX_PAYLOAD_SIZE = exports.MAX_PAYLOAD_SIZE = 1000000;
@@ -12,7 +12,7 @@ exports.VERSION = exports.RRWEB_VERSION = exports.DIST_METHOD = exports.BUILD_EN
12
12
  /**
13
13
  * Exposes the version of the agent
14
14
  */
15
- const VERSION = exports.VERSION = "1.264.0";
15
+ const VERSION = exports.VERSION = "1.265.0";
16
16
 
17
17
  /**
18
18
  * Exposes the build type of the agent
@@ -12,7 +12,7 @@ exports.VERSION = exports.RRWEB_VERSION = exports.DIST_METHOD = exports.BUILD_EN
12
12
  /**
13
13
  * Exposes the version of the agent
14
14
  */
15
- const VERSION = exports.VERSION = "1.264.0";
15
+ const VERSION = exports.VERSION = "1.265.0";
16
16
 
17
17
  /**
18
18
  * Exposes the build type of the agent
@@ -15,8 +15,7 @@ class SharedContext {
15
15
  if (typeof context !== 'object') return (0, _console.warn)(8);
16
16
  this.sharedContext = {};
17
17
  Object.assign(this.sharedContext, model);
18
- Object.entries(context).forEach(_ref => {
19
- let [key, value] = _ref;
18
+ Object.entries(context).forEach(([key, value]) => {
20
19
  if (Object.keys(model).includes(key)) this.sharedContext[key] = value;
21
20
  });
22
21
  } catch (err) {
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.dispatchGlobalEvent = dispatchGlobalEvent;
7
7
  var _runtime = require("../constants/runtime");
8
8
  const GLOBAL_EVENT_NAMESPACE = 'newrelic';
9
- function dispatchGlobalEvent() {
10
- let detail = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
9
+ function dispatchGlobalEvent(detail = {}) {
11
10
  try {
12
11
  _runtime.globalScope.dispatchEvent(new CustomEvent(GLOBAL_EVENT_NAMESPACE, {
13
12
  detail
@@ -9,6 +9,7 @@ exports.registerDrain = registerDrain;
9
9
  var _contextualEe = require("../event-emitter/contextual-ee");
10
10
  var _registerHandler = require("../event-emitter/register-handler");
11
11
  var _features = require("../../loaders/features/features");
12
+ var _eventContext = require("../event-emitter/event-context");
12
13
  /*
13
14
  * Copyright 2020 New Relic Corporation. All rights reserved.
14
15
  * SPDX-License-Identifier: Apache-2.0
@@ -64,10 +65,7 @@ function curateRegistry(agentIdentifier) {
64
65
  * @param {string} featureName - A named group into which the feature's buffered events are bucketed.
65
66
  * @param {boolean} force - Whether to force the drain to occur immediately, bypassing the registry and staging logic.
66
67
  */
67
- function drain() {
68
- let agentIdentifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
69
- let featureName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'feature';
70
- let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
68
+ function drain(agentIdentifier = '', featureName = 'feature', force = false) {
71
69
  curateRegistry(agentIdentifier);
72
70
  // If the feature for the specified agent is not in the registry, that means the instrument file was bypassed.
73
71
  // This could happen in tests, or loaders that directly import the aggregator. In these cases it is safe to
@@ -84,13 +82,9 @@ function checkCanDrainAll(agentIdentifier) {
84
82
  // Only when the event-groups for all features are ready to drain (staged) do we execute the drain. This has the effect
85
83
  // that the last feature to call drain triggers drain for all features.
86
84
  const items = Array.from(registry[agentIdentifier]);
87
- if (items.every(_ref => {
88
- let [key, values] = _ref;
89
- return values.staged;
90
- })) {
85
+ if (items.every(([key, values]) => values.staged)) {
91
86
  items.sort((a, b) => a[1].priority - b[1].priority);
92
- items.forEach(_ref2 => {
93
- let [group] = _ref2;
87
+ items.forEach(([group]) => {
94
88
  registry[agentIdentifier].delete(group);
95
89
  drainGroup(agentIdentifier, group);
96
90
  });
@@ -102,8 +96,7 @@ function checkCanDrainAll(agentIdentifier) {
102
96
  * the subscribed handlers for the group.
103
97
  * @param {*} group - The name of a particular feature's event "bucket".
104
98
  */
105
- function drainGroup(agentIdentifier, group) {
106
- let activateGroup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
99
+ function drainGroup(agentIdentifier, group, activateGroup = true) {
107
100
  const baseEE = agentIdentifier ? _contextualEe.ee.get(agentIdentifier) : _contextualEe.ee;
108
101
  const handlers = _registerHandler.registerHandler.handlers; // other storage in registerHandler
109
102
  if (baseEE.aborted || !baseEE.backlog || !handlers) return;
@@ -118,11 +111,12 @@ function drainGroup(agentIdentifier, group) {
118
111
  // eslint-disable-line no-unmodified-loop-condition
119
112
  emitEvent(bufferedEventsInGroup[i], groupHandlers);
120
113
  }
121
- Object.entries(groupHandlers).forEach(_ref3 => {
122
- let [eventType, handlerRegistrationList] = _ref3;
114
+ Object.entries(groupHandlers).forEach(([eventType, handlerRegistrationList]) => {
123
115
  Object.values(handlerRegistrationList || {}).forEach(registration => {
124
- // registration is an array of: [targetEE, eventHandler]
125
- registration[0].on(eventType, registration[1]);
116
+ // registration *should* be an array of: [targetEE, eventHandler]
117
+ // certain browser polyfills of .values and .entries pass the prototype methods into the callback,
118
+ // which breaks this assumption and throws errors. So we make sure here that we only call .on() if its an actual NR EE
119
+ if (registration[0]?.on && registration[0]?.context() instanceof _eventContext.EventContext) registration[0].on(eventType, registration[1]);
126
120
  });
127
121
  });
128
122
  }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.ee = exports.contextId = void 0;
7
7
  var _nreum = require("../window/nreum");
8
8
  var _getOrSet = require("../util/get-or-set");
9
- var _config = require("../config/config");
9
+ var _runtime = require("../config/runtime");
10
10
  var _eventContext = require("./event-context");
11
11
  var _bundleId = require("../ids/bundle-id");
12
12
  /*
@@ -36,7 +36,7 @@ function ee(old, debugId) {
36
36
  // We only want to check the runtime configuration for `isolatedBacklog` if the event emitter belongs to a feature.
37
37
  // For feature event emitters, the debugId will be an agentIdentifier with a length of 16. In contrast, some of our
38
38
  // tests do not namespace the event emitter with an agentID and just use the parent (which has no ID).
39
- isolatedBacklog = debugId.length !== 16 ? false : (0, _config.getRuntime)(debugId).isolatedBacklog;
39
+ isolatedBacklog = debugId.length !== 16 ? false : (0, _runtime.getRuntime)(debugId).isolatedBacklog;
40
40
  } catch (err) {
41
41
  // Do nothing for now.
42
42
  }
@@ -129,8 +129,7 @@ function ee(old, debugId) {
129
129
 
130
130
  // do not buffer events if agent has been aborted
131
131
  if (emitter.aborted) return;
132
- Object.entries(types || {}).forEach(_ref => {
133
- let [_, type] = _ref;
132
+ Object.entries(types || {}).forEach(([_, type]) => {
134
133
  bufferGroupMap[type] = group;
135
134
  if (!(group in eventBuffer)) {
136
135
  eventBuffer[group] = [];
@@ -37,14 +37,10 @@ function eventListenerOpts(useCapture, abortSignal) {
37
37
  }
38
38
 
39
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
- let abortSignal = arguments.length > 3 ? arguments[3] : undefined;
40
+ function windowAddEventListener(event, listener, capture = false, abortSignal) {
43
41
  window.addEventListener(event, listener, eventListenerOpts(capture, abortSignal));
44
42
  }
45
43
  /** Do not use this within the worker context. */
46
- function documentAddEventListener(event, listener) {
47
- let capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
48
- let abortSignal = arguments.length > 3 ? arguments[3] : undefined;
44
+ function documentAddEventListener(event, listener, capture = false, abortSignal) {
49
45
  document.addEventListener(event, listener, eventListenerOpts(capture, abortSignal));
50
46
  }
@@ -69,8 +69,7 @@ class HarvestScheduler extends _sharedContext.SharedContext {
69
69
  this.started = true;
70
70
  this.scheduleHarvest(initialDelay != null ? initialDelay : this.interval);
71
71
  }
72
- stopTimer() {
73
- let permanently = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
72
+ stopTimer(permanently = false) {
74
73
  this.aborted = permanently; // stopping permanently is same as aborting, but this function also cleans up the setTimeout loop
75
74
  this.started = false;
76
75
  if (this.timeoutHandle) {
@@ -8,14 +8,14 @@ var _encode = require("../url/encode");
8
8
  var _stringify = require("../util/stringify");
9
9
  var submitData = _interopRequireWildcard(require("../util/submit-data"));
10
10
  var _location = require("../url/location");
11
- var _config = require("../config/config");
11
+ var _info = require("../config/info");
12
+ var _init = require("../config/init");
13
+ var _runtime = require("../config/runtime");
12
14
  var _cleanUrl = require("../url/clean-url");
13
15
  var _eventListenerOpts = require("../event-listener/event-listener-opts");
14
- var _obfuscate = require("../util/obfuscate");
15
- var _traverse = require("../util/traverse");
16
16
  var _sharedContext = require("../context/shared-context");
17
17
  var _env = require("../constants/env.npm");
18
- var _runtime = require("../constants/runtime");
18
+ var _runtime2 = require("../constants/runtime");
19
19
  var _console = require("../util/console");
20
20
  var _now = require("../timing/now");
21
21
  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); }
@@ -38,8 +38,8 @@ class Harvest extends _sharedContext.SharedContext {
38
38
  constructor(parent) {
39
39
  super(parent); // gets any allowed properties from the parent and stores them in `sharedContext`
40
40
 
41
- this.tooManyRequestsDelay = (0, _config.getConfigurationValue)(this.sharedContext.agentIdentifier, 'harvest.tooManyRequestsDelay') || 60;
42
- this.obfuscator = new _obfuscate.Obfuscator(this.sharedContext);
41
+ this.tooManyRequestsDelay = (0, _init.getConfigurationValue)(this.sharedContext.agentIdentifier, 'harvest.tooManyRequestsDelay') || 60;
42
+ this.obfuscator = (0, _runtime.getRuntime)(this.sharedContext.agentIdentifier).obfuscator;
43
43
  this._events = {};
44
44
  }
45
45
 
@@ -49,8 +49,7 @@ class Harvest extends _sharedContext.SharedContext {
49
49
  * Note: Used by page_action
50
50
  * @param {NetworkSendSpec} spec Specification for sending data
51
51
  */
52
- sendX() {
53
- let spec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
52
+ sendX(spec = {}) {
54
53
  const submitMethod = submitData.getSubmitMethod({
55
54
  isFinalHarvest: spec.opts?.unload
56
55
  });
@@ -59,7 +58,7 @@ class Harvest extends _sharedContext.SharedContext {
59
58
  isFinalHarvest: spec.opts?.unload === true
60
59
  };
61
60
  const payload = this.createPayload(spec.endpoint, options);
62
- const caller = this.obfuscator.shouldObfuscate() ? this.obfuscateAndSend.bind(this) : this._send.bind(this);
61
+ const caller = this._send.bind(this);
63
62
  return caller({
64
63
  ...spec,
65
64
  payload,
@@ -71,31 +70,11 @@ class Harvest extends _sharedContext.SharedContext {
71
70
  * Initiate a harvest call.
72
71
  * @param {NetworkSendSpec} spec Specification for sending data
73
72
  */
74
- send() {
75
- let spec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76
- const caller = this.obfuscator.shouldObfuscate() ? this.obfuscateAndSend.bind(this) : this._send.bind(this);
73
+ send(spec = {}) {
74
+ const caller = this._send.bind(this);
77
75
  return caller(spec);
78
76
  }
79
77
 
80
- /**
81
- * Apply obfuscation rules to the payload and then initial the harvest network call.
82
- * @param {NetworkSendSpec} spec Specification for sending data
83
- */
84
- obfuscateAndSend() {
85
- var _this = this;
86
- let spec = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
87
- const {
88
- payload = {}
89
- } = spec;
90
- (0, _traverse.applyFnToProps)(payload, function () {
91
- return _this.obfuscator.obfuscateString(...arguments);
92
- }, 'string', ['e']);
93
- return this._send({
94
- ...spec,
95
- payload
96
- });
97
- }
98
-
99
78
  /**
100
79
  * Initiate a harvest call. Typically used by `sendX` and `send` methods or called directly
101
80
  * for raw network calls.
@@ -103,20 +82,19 @@ class Harvest extends _sharedContext.SharedContext {
103
82
  * @returns {boolean} True if the network call succeeded. For final harvest calls, the return
104
83
  * value should not be relied upon because network calls will be made asynchronously.
105
84
  */
106
- _send(_ref) {
107
- let {
108
- endpoint,
109
- payload = {},
110
- opts = {},
111
- submitMethod,
112
- cbFinished,
113
- customUrl,
114
- raw,
115
- includeBaseParams = true
116
- } = _ref;
117
- const info = (0, _config.getInfo)(this.sharedContext.agentIdentifier);
85
+ _send({
86
+ endpoint,
87
+ payload = {},
88
+ opts = {},
89
+ submitMethod,
90
+ cbFinished,
91
+ customUrl,
92
+ raw,
93
+ includeBaseParams = true
94
+ }) {
95
+ const info = (0, _info.getInfo)(this.sharedContext.agentIdentifier);
118
96
  if (!info.errorBeacon) return false;
119
- const agentRuntime = (0, _config.getRuntime)(this.sharedContext.agentIdentifier);
97
+ const agentRuntime = (0, _runtime.getRuntime)(this.sharedContext.agentIdentifier);
120
98
  let {
121
99
  body,
122
100
  qs
@@ -130,7 +108,7 @@ class Harvest extends _sharedContext.SharedContext {
130
108
  }
131
109
  return false;
132
110
  }
133
- const init = (0, _config.getConfiguration)(this.sharedContext.agentIdentifier);
111
+ const init = (0, _init.getConfiguration)(this.sharedContext.agentIdentifier);
134
112
  const protocol = init.ssl === false ? 'http' : 'https';
135
113
  const perceviedBeacon = init.proxy.beacon || info.errorBeacon;
136
114
  const endpointURLPart = endpoint !== 'rum' ? "/".concat(endpoint) : '';
@@ -175,7 +153,7 @@ class Harvest extends _sharedContext.SharedContext {
175
153
  let result = submitMethod({
176
154
  url: fullUrl,
177
155
  body,
178
- sync: opts.unload && _runtime.isWorkerScope,
156
+ sync: opts.unload && _runtime2.isWorkerScope,
179
157
  headers
180
158
  });
181
159
  if (!opts.unload && cbFinished && submitMethod === submitData.xhr) {
@@ -201,17 +179,14 @@ class Harvest extends _sharedContext.SharedContext {
201
179
  cbFinished(cbResult);
202
180
  }, (0, _eventListenerOpts.eventListenerOpts)(false));
203
181
  }
204
- const runtime = (0, _config.getRuntime)(this.sharedContext.agentIdentifier);
205
- runtime.harvestCount++;
206
182
  return result;
207
183
  }
208
184
 
209
185
  // The stuff that gets sent every time.
210
186
  baseQueryString(qs, endpoint) {
211
- const runtime = (0, _config.getRuntime)(this.sharedContext.agentIdentifier);
212
- const info = (0, _config.getInfo)(this.sharedContext.agentIdentifier);
213
- const location = (0, _cleanUrl.cleanURL)((0, _location.getLocation)());
214
- const ref = this.obfuscator.shouldObfuscate() ? this.obfuscator.obfuscateString(location) : location;
187
+ const runtime = (0, _runtime.getRuntime)(this.sharedContext.agentIdentifier);
188
+ const info = (0, _info.getInfo)(this.sharedContext.agentIdentifier);
189
+ const ref = this.obfuscator.obfuscateString((0, _cleanUrl.cleanURL)((0, _location.getLocation)()));
215
190
  const hr = runtime?.session?.state.sessionReplayMode === 1 && endpoint !== 'jserrors';
216
191
  const qps = ['a=' + info.applicationID, (0, _encode.param)('sa', info.sa ? '' + info.sa : ''), (0, _encode.param)('v', _env.VERSION), transactionNameParam(info), (0, _encode.param)('ct', runtime.customTransaction), '&rst=' + (0, _now.now)(), '&ck=0',
217
192
  // ck param DEPRECATED - still expected by backend
@@ -262,13 +237,11 @@ class Harvest extends _sharedContext.SharedContext {
262
237
  * @param {HarvestPayload} payload Payload to be sent to the endpoint.
263
238
  * @returns {HarvestPayload} Cleaned payload payload to be sent to the endpoint.
264
239
  */
265
- cleanPayload() {
266
- let payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
240
+ cleanPayload(payload = {}) {
267
241
  const clean = input => {
268
242
  if (typeof Uint8Array !== 'undefined' && input instanceof Uint8Array || Array.isArray(input)) return input;
269
243
  if (typeof input === 'string') return input.length > 0 ? input : null;
270
- return Object.entries(input || {}).reduce((accumulator, _ref2) => {
271
- let [key, value] = _ref2;
244
+ return Object.entries(input || {}).reduce((accumulator, [key, value]) => {
272
245
  if (typeof value === 'number' || typeof value === 'string' && value.length > 0 || typeof value === 'object' && Object.keys(value || {}).length > 0) {
273
246
  accumulator[key] = value;
274
247
  }
@@ -8,7 +8,7 @@ exports.getAddStringContext = getAddStringContext;
8
8
  exports.nullable = nullable;
9
9
  exports.numeric = numeric;
10
10
  var _stringify = require("../util/stringify");
11
- var _obfuscate = require("../util/obfuscate");
11
+ var _runtime = require("../config/runtime");
12
12
  /*
13
13
  * Copyright 2020 New Relic Corporation. All rights reserved.
14
14
  * SPDX-License-Identifier: Apache-2.0
@@ -26,17 +26,13 @@ function numeric(n, noDefault) {
26
26
  return n === undefined || n === 0 ? '' : Math.floor(n).toString(36);
27
27
  }
28
28
  function getAddStringContext(agentIdentifier) {
29
- // eslint-disable-next-line
30
- var stringTable = Object.hasOwnProperty('create') ? Object.create(null) : {};
31
- var stringTableIdx = 0;
29
+ let stringTableIdx = 0;
30
+ const stringTable = Object.prototype.hasOwnProperty.call(Object, 'create') ? Object.create(null) : {};
31
+ const obfuscator = (0, _runtime.getRuntime)(agentIdentifier).obfuscator;
32
32
  return addString;
33
33
  function addString(str) {
34
34
  if (typeof str === 'undefined' || str === '') return '';
35
- var obfuscator = new _obfuscate.Obfuscator({
36
- agentIdentifier
37
- });
38
- str = String(str);
39
- if (obfuscator.shouldObfuscate()) str = obfuscator.obfuscateString(str);
35
+ str = obfuscator.obfuscateString(String(str));
40
36
  if (hasOwnProp.call(stringTable, str)) {
41
37
  return numeric(stringTable[str], true);
42
38
  } else {
@@ -47,8 +43,7 @@ function getAddStringContext(agentIdentifier) {
47
43
  }
48
44
  function addCustomAttributes(attrs, addString) {
49
45
  var attrParts = [];
50
- Object.entries(attrs || {}).forEach(_ref => {
51
- let [key, val] = _ref;
46
+ Object.entries(attrs || {}).forEach(([key, val]) => {
52
47
  if (attrParts.length >= MAX_ATTRIBUTES) return;
53
48
  var type = 5;
54
49
  var serializedValue;
@@ -12,8 +12,8 @@ var _timer = require("../timer/timer");
12
12
  var _runtime = require("../constants/runtime");
13
13
  var _constants = require("./constants");
14
14
  var _interactionTimer = require("../timer/interaction-timer");
15
- var _wrap = require("../wrap");
16
- var _configurable = require("../config/state/configurable");
15
+ var _wrapEvents = require("../wrap/wrap-events");
16
+ var _configurable = require("../config/configurable");
17
17
  var _handle = require("../event-emitter/handle");
18
18
  var _constants2 = require("../../features/metrics/constants");
19
19
  var _features = require("../../loaders/features/features");
@@ -56,7 +56,7 @@ class SessionEntity {
56
56
  // key is intended to act as the k=v pair
57
57
  this.key = key;
58
58
  this.ee = _contextualEe.ee.get(agentIdentifier);
59
- (0, _wrap.wrapEvents)(this.ee);
59
+ (0, _wrapEvents.wrapEvents)(this.ee);
60
60
  this.setup(opts);
61
61
 
62
62
  /**
@@ -74,12 +74,11 @@ class SessionEntity {
74
74
  });
75
75
  }
76
76
  }
77
- setup(_ref) {
78
- let {
79
- value = (0, _uniqueId.generateRandomHexString)(16),
80
- expiresMs = _constants.DEFAULT_EXPIRES_MS,
81
- inactiveMs = _constants.DEFAULT_INACTIVE_MS
82
- } = _ref;
77
+ setup({
78
+ value = (0, _uniqueId.generateRandomHexString)(16),
79
+ expiresMs = _constants.DEFAULT_EXPIRES_MS,
80
+ inactiveMs = _constants.DEFAULT_INACTIVE_MS
81
+ }) {
83
82
  /** Ensure that certain properties are preserved across a reset if already set */
84
83
  const persistentAttributes = {
85
84
  serverTimeDiff: this.state.serverTimeDiff || model.serverTimeDiff
@@ -287,9 +286,7 @@ class SessionEntity {
287
286
  if (type === 'inactive') tag = 'Session/Inactive/Seen';
288
287
  if (tag) (0, _handle.handle)(_constants2.SUPPORTABILITY_METRIC_CHANNEL, [tag, value], undefined, _features.FEATURE_NAMES.metrics, this.ee);
289
288
  }
290
- getDuration() {
291
- let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state;
292
- let useUpdatedAt = arguments.length > 1 ? arguments[1] : undefined;
289
+ getDuration(data = this.state, useUpdatedAt) {
293
290
  const startingTimestamp = data.expiresAt - this.expiresMs;
294
291
  const endingTimestamp = !useUpdatedAt ? data.updatedAt : Date.now();
295
292
  return endingTimestamp - startingTimestamp;
@@ -43,9 +43,7 @@ function getPntType(type) {
43
43
  };
44
44
  return types[type];
45
45
  }
46
- function addPT(offset, pt) {
47
- let v = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
48
- let isL1Api = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
46
+ function addPT(offset, pt, v = {}, isL1Api = false) {
49
47
  if (!pt) return;
50
48
  v.of = offset;
51
49
  handleValue(v.of, v, 'n', true);
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TimeKeeper = void 0;
7
7
  var _runtime = require("../constants/runtime");
8
- var _config = require("../config/config");
8
+ var _runtime2 = require("../config/runtime");
9
9
  const rfc2616Regex = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), ([0-3][0-9]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([0-9]{4}) ([01][0-9]|2[0-3])(:[0-5][0-9]){2} GMT$/;
10
10
 
11
11
  /**
@@ -40,7 +40,7 @@ class TimeKeeper {
40
40
  */
41
41
  #ready = false;
42
42
  constructor(agentIdentifier) {
43
- this.#session = (0, _config.getRuntime)(agentIdentifier)?.session;
43
+ this.#session = (0, _runtime2.getRuntime)(agentIdentifier)?.session;
44
44
  this.processStoredDiff();
45
45
  }
46
46
  get ready() {
@@ -87,21 +87,31 @@ class TimeKeeper {
87
87
 
88
88
  /**
89
89
  * Converts a page origin relative time to an absolute timestamp
90
- * corrected to NR server time.
90
+ * using the user's local clock.
91
91
  * @param relativeTime {number} The relative time of the event in milliseconds
92
92
  * @returns {number} Corrected unix/epoch timestamp
93
93
  */
94
94
  convertRelativeTimestamp(relativeTime) {
95
- return Math.floor(this.#correctedOriginTime + relativeTime);
95
+ return _runtime.originTime + relativeTime;
96
96
  }
97
97
 
98
98
  /**
99
- * Corrects an event timestamp to NR server time.
99
+ * Converts an absolute timestamp to a relative timestamp using the
100
+ * user's local clock.
101
+ * @param timestamp
102
+ * @returns {number}
103
+ */
104
+ convertAbsoluteTimestamp(timestamp) {
105
+ return timestamp - _runtime.originTime;
106
+ }
107
+
108
+ /**
109
+ * Corrects an absolute timestamp to NR server time.
100
110
  * @param timestamp {number} The unix/epoch timestamp of the event with milliseconds
101
111
  * @return {number} Corrected unix/epoch timestamp
102
112
  */
103
113
  correctAbsoluteTimestamp(timestamp) {
104
- return Math.floor(timestamp - this.#localTimeDiff);
114
+ return timestamp - this.#localTimeDiff;
105
115
  }
106
116
 
107
117
  /** Process the session entity and use the info to set the main time calculations if present */