@newrelic/browser-agent 0.1.229 → 0.1.231

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 (587) hide show
  1. package/README.md +65 -2
  2. package/dist/cjs/common/browser-version/ios-version.js +4 -3
  3. package/dist/cjs/common/config/state/configurable.js +3 -2
  4. package/dist/cjs/common/config/state/info.js +1 -1
  5. package/dist/cjs/common/config/state/init.js +1 -1
  6. package/dist/cjs/common/config/state/loader-config.js +1 -1
  7. package/dist/cjs/common/config/state/runtime.js +6 -5
  8. package/dist/cjs/common/constants/env.cdn.js +29 -0
  9. package/dist/cjs/common/constants/env.js +32 -0
  10. package/dist/cjs/common/constants/env.npm.js +30 -0
  11. package/dist/cjs/common/context/shared-context.js +2 -1
  12. package/dist/cjs/common/drain/drain.js +9 -3
  13. package/dist/cjs/common/event-emitter/contextual-ee.test.js +282 -0
  14. package/dist/cjs/common/event-emitter/handle.test.js +58 -0
  15. package/dist/cjs/common/event-emitter/register-handler.test.js +55 -0
  16. package/dist/cjs/common/event-listener/event-listener-opts.js +4 -2
  17. package/dist/cjs/common/harvest/harvest-scheduler.js +2 -1
  18. package/dist/cjs/common/harvest/harvest.js +15 -4
  19. package/dist/cjs/common/ids/id.js +14 -6
  20. package/dist/cjs/common/ids/id.test.js +85 -0
  21. package/dist/cjs/common/ids/unique-id.js +75 -51
  22. package/dist/cjs/common/ids/unique-id.test.js +49 -0
  23. package/dist/cjs/common/timing/nav-timing.js +51 -30
  24. package/dist/cjs/common/timing/nav-timing.test.js +192 -0
  25. package/dist/cjs/common/url/clean-url.test.js +9 -0
  26. package/dist/cjs/common/url/encode.test.js +74 -0
  27. package/dist/cjs/common/url/location.js +4 -0
  28. package/dist/cjs/common/url/location.test.js +13 -0
  29. package/dist/cjs/common/url/parse-url.test.js +111 -0
  30. package/dist/cjs/common/url/protocol.js +2 -12
  31. package/dist/cjs/common/url/protocol.test.js +16 -0
  32. package/dist/cjs/common/util/console.js +2 -2
  33. package/dist/cjs/common/util/map-own.js +21 -14
  34. package/dist/cjs/common/util/map-own.test.js +49 -0
  35. package/dist/cjs/common/util/obfuscate.js +1 -1
  36. package/dist/cjs/common/util/submit-data.js +11 -3
  37. package/dist/cjs/common/window/page-visibility.js +4 -2
  38. package/dist/cjs/common/window/session-storage.js +56 -11
  39. package/dist/cjs/common/wrap/index.js +4 -4
  40. package/dist/cjs/common/wrap/wrap-events.js +10 -10
  41. package/dist/cjs/common/wrap/wrap-fetch.js +6 -8
  42. package/dist/cjs/common/wrap/wrap-function.js +4 -18
  43. package/dist/cjs/common/wrap/wrap-history.js +7 -6
  44. package/dist/cjs/common/wrap/wrap-jsonp.js +7 -6
  45. package/dist/cjs/common/wrap/wrap-mutation.js +7 -6
  46. package/dist/cjs/common/wrap/wrap-promise.js +11 -7
  47. package/dist/cjs/common/wrap/wrap-promise.test.js +119 -0
  48. package/dist/cjs/common/wrap/wrap-raf.js +6 -6
  49. package/dist/cjs/common/wrap/wrap-timer.js +6 -6
  50. package/dist/cjs/common/wrap/wrap-xhr.js +5 -6
  51. package/dist/cjs/features/ajax/aggregate/index.js +1 -1
  52. package/dist/cjs/features/ajax/instrument/index.js +2 -1
  53. package/dist/cjs/features/jserrors/aggregate/canonical-function-name.test.js +5 -4
  54. package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.js +1 -2
  55. package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.test.js +5 -5
  56. package/dist/cjs/features/jserrors/aggregate/format-stack-trace.test.js +6 -5
  57. package/dist/cjs/features/jserrors/aggregate/index.js +35 -14
  58. package/dist/cjs/features/jserrors/aggregate/string-hash-code.test.js +5 -4
  59. package/dist/cjs/features/jserrors/instrument/index.js +9 -12
  60. package/dist/cjs/features/metrics/aggregate/index.js +16 -6
  61. package/dist/cjs/features/metrics/instrument/index.js +2 -1
  62. package/dist/cjs/features/metrics/instrument/workers-helper.js +9 -6
  63. package/dist/cjs/features/page_action/aggregate/index.js +12 -4
  64. package/dist/cjs/features/page_action/instrument/index.js +2 -1
  65. package/dist/cjs/features/page_view_event/aggregate/index.js +25 -10
  66. package/dist/cjs/features/page_view_event/instrument/index.js +2 -1
  67. package/dist/cjs/features/page_view_timing/aggregate/index.js +90 -61
  68. package/dist/cjs/features/page_view_timing/instrument/index.js +2 -1
  69. package/dist/cjs/features/session_trace/aggregate/index.js +69 -26
  70. package/dist/cjs/features/session_trace/instrument/index.js +2 -1
  71. package/dist/cjs/features/spa/instrument/index.js +2 -1
  72. package/dist/cjs/features/utils/instrument-base.js +8 -3
  73. package/dist/cjs/features/utils/lazy-loader.js +1 -1
  74. package/dist/cjs/index.js +9 -9
  75. package/dist/cjs/loaders/agent.js +3 -2
  76. package/dist/cjs/loaders/api/api.js +90 -22
  77. package/dist/cjs/loaders/api/apiAsync.js +3 -3
  78. package/dist/cjs/loaders/configure/configure.js +13 -7
  79. package/dist/cjs/loaders/features/enabled-features.js +1 -1
  80. package/dist/cjs/loaders/micro-agent.js +20 -14
  81. package/dist/esm/common/browser-version/ios-version.js +4 -3
  82. package/dist/esm/common/config/state/configurable.js +3 -2
  83. package/dist/esm/common/config/state/info.js +1 -1
  84. package/dist/esm/common/config/state/init.js +1 -1
  85. package/dist/esm/common/config/state/loader-config.js +1 -1
  86. package/dist/esm/common/config/state/runtime.js +3 -2
  87. package/dist/esm/common/constants/env.cdn.js +20 -0
  88. package/dist/esm/common/constants/env.js +23 -0
  89. package/dist/esm/common/constants/env.npm.js +21 -0
  90. package/dist/esm/common/context/shared-context.js +2 -1
  91. package/dist/esm/common/drain/drain.js +9 -3
  92. package/dist/esm/common/event-emitter/contextual-ee.test.js +278 -0
  93. package/dist/esm/common/event-emitter/handle.test.js +54 -0
  94. package/dist/esm/common/event-emitter/register-handler.test.js +51 -0
  95. package/dist/esm/common/event-listener/event-listener-opts.js +4 -2
  96. package/dist/esm/common/harvest/harvest-scheduler.js +2 -1
  97. package/dist/esm/common/harvest/harvest.js +14 -3
  98. package/dist/esm/common/ids/id.js +16 -6
  99. package/dist/esm/common/ids/id.test.js +81 -0
  100. package/dist/esm/common/ids/unique-id.js +75 -51
  101. package/dist/esm/common/ids/unique-id.test.js +44 -0
  102. package/dist/esm/common/timing/nav-timing.js +51 -29
  103. package/dist/esm/common/timing/nav-timing.test.js +190 -0
  104. package/dist/esm/common/url/clean-url.test.js +7 -0
  105. package/dist/esm/common/url/encode.test.js +70 -0
  106. package/dist/esm/common/url/location.js +4 -0
  107. package/dist/esm/common/url/location.test.js +11 -0
  108. package/dist/esm/common/url/parse-url.test.js +107 -0
  109. package/dist/esm/common/url/protocol.js +3 -12
  110. package/dist/esm/common/url/protocol.test.js +14 -0
  111. package/dist/esm/common/util/console.js +2 -2
  112. package/dist/esm/common/util/map-own.js +19 -13
  113. package/dist/esm/common/util/map-own.test.js +47 -0
  114. package/dist/esm/common/util/obfuscate.js +2 -2
  115. package/dist/esm/common/util/submit-data.js +11 -3
  116. package/dist/esm/common/window/page-visibility.js +4 -2
  117. package/dist/esm/common/window/session-storage.js +54 -13
  118. package/dist/esm/common/wrap/index.js +3 -3
  119. package/dist/esm/common/wrap/wrap-events.js +11 -11
  120. package/dist/esm/common/wrap/wrap-fetch.js +7 -9
  121. package/dist/esm/common/wrap/wrap-function.js +4 -17
  122. package/dist/esm/common/wrap/wrap-history.js +8 -7
  123. package/dist/esm/common/wrap/wrap-jsonp.js +8 -7
  124. package/dist/esm/common/wrap/wrap-mutation.js +7 -6
  125. package/dist/esm/common/wrap/wrap-promise.js +11 -7
  126. package/dist/esm/common/wrap/wrap-promise.test.js +115 -0
  127. package/dist/esm/common/wrap/wrap-raf.js +7 -7
  128. package/dist/esm/common/wrap/wrap-timer.js +7 -7
  129. package/dist/esm/common/wrap/wrap-xhr.js +7 -8
  130. package/dist/esm/features/ajax/aggregate/index.js +1 -1
  131. package/dist/esm/features/ajax/instrument/index.js +2 -1
  132. package/dist/esm/features/jserrors/aggregate/canonical-function-name.test.js +5 -4
  133. package/dist/esm/features/jserrors/aggregate/compute-stack-trace.js +1 -2
  134. package/dist/esm/features/jserrors/aggregate/compute-stack-trace.test.js +5 -5
  135. package/dist/esm/features/jserrors/aggregate/format-stack-trace.test.js +6 -5
  136. package/dist/esm/features/jserrors/aggregate/index.js +35 -14
  137. package/dist/esm/features/jserrors/aggregate/string-hash-code.test.js +5 -4
  138. package/dist/esm/features/jserrors/instrument/index.js +9 -12
  139. package/dist/esm/features/metrics/aggregate/index.js +17 -7
  140. package/dist/esm/features/metrics/instrument/index.js +2 -1
  141. package/dist/esm/features/metrics/instrument/workers-helper.js +9 -6
  142. package/dist/esm/features/page_action/aggregate/index.js +12 -4
  143. package/dist/esm/features/page_action/instrument/index.js +2 -1
  144. package/dist/esm/features/page_view_event/aggregate/index.js +25 -10
  145. package/dist/esm/features/page_view_event/instrument/index.js +2 -1
  146. package/dist/esm/features/page_view_timing/aggregate/index.js +90 -61
  147. package/dist/esm/features/page_view_timing/instrument/index.js +2 -1
  148. package/dist/esm/features/session_trace/aggregate/index.js +69 -26
  149. package/dist/esm/features/session_trace/instrument/index.js +2 -1
  150. package/dist/esm/features/spa/instrument/index.js +2 -1
  151. package/dist/esm/features/utils/instrument-base.js +3 -2
  152. package/dist/esm/features/utils/lazy-loader.js +1 -1
  153. package/dist/esm/index.js +4 -4
  154. package/dist/esm/loaders/agent.js +3 -2
  155. package/dist/esm/loaders/api/api.js +85 -21
  156. package/dist/esm/loaders/api/apiAsync.js +3 -3
  157. package/dist/esm/loaders/configure/configure.js +14 -8
  158. package/dist/esm/loaders/features/enabled-features.js +1 -1
  159. package/dist/esm/loaders/micro-agent.js +18 -13
  160. package/dist/types/cdn/lite.d.ts +2 -0
  161. package/dist/types/cdn/lite.d.ts.map +1 -0
  162. package/dist/types/cdn/polyfills/lite.d.ts +2 -0
  163. package/dist/types/cdn/polyfills/lite.d.ts.map +1 -0
  164. package/dist/types/cdn/polyfills/pro.d.ts +2 -0
  165. package/dist/types/cdn/polyfills/pro.d.ts.map +1 -0
  166. package/dist/types/cdn/polyfills/spa.d.ts +2 -0
  167. package/dist/types/cdn/polyfills/spa.d.ts.map +1 -0
  168. package/dist/types/cdn/polyfills.d.ts +2 -0
  169. package/dist/types/cdn/polyfills.d.ts.map +1 -0
  170. package/dist/types/cdn/pro.d.ts +2 -0
  171. package/dist/types/cdn/pro.d.ts.map +1 -0
  172. package/dist/types/cdn/spa.d.ts +2 -0
  173. package/dist/types/cdn/spa.d.ts.map +1 -0
  174. package/dist/types/cdn/worker.d.ts +2 -0
  175. package/dist/types/cdn/worker.d.ts.map +1 -0
  176. package/dist/types/common/aggregate/aggregator.d.ts +11 -0
  177. package/dist/types/common/aggregate/aggregator.d.ts.map +1 -0
  178. package/dist/types/common/browser-version/firefox-version.d.ts +2 -0
  179. package/dist/types/common/browser-version/firefox-version.d.ts.map +1 -0
  180. package/dist/types/common/browser-version/ios-version.d.ts +3 -0
  181. package/dist/types/common/browser-version/ios-version.d.ts.map +1 -0
  182. package/dist/types/common/config/config.d.ts +13 -0
  183. package/dist/types/common/config/config.d.ts.map +1 -0
  184. package/dist/types/common/config/state/configurable.d.ts +4 -0
  185. package/dist/types/common/config/state/configurable.d.ts.map +1 -0
  186. package/dist/types/common/config/state/info.d.ts +4 -0
  187. package/dist/types/common/config/state/info.d.ts.map +1 -0
  188. package/dist/types/common/config/state/init.d.ts +4 -0
  189. package/dist/types/common/config/state/init.d.ts.map +1 -0
  190. package/dist/types/common/config/state/loader-config.d.ts +3 -0
  191. package/dist/types/common/config/state/loader-config.d.ts.map +1 -0
  192. package/dist/types/common/config/state/originals.d.ts +2 -0
  193. package/dist/types/common/config/state/originals.d.ts.map +1 -0
  194. package/dist/types/common/config/state/runtime.d.ts +3 -0
  195. package/dist/types/common/config/state/runtime.d.ts.map +1 -0
  196. package/dist/types/common/constants/env.cdn.d.ts +18 -0
  197. package/dist/types/common/constants/env.cdn.d.ts.map +1 -0
  198. package/dist/types/common/constants/env.d.ts +13 -0
  199. package/dist/types/common/constants/env.d.ts.map +1 -0
  200. package/dist/types/common/constants/env.npm.d.ts +19 -0
  201. package/dist/types/common/constants/env.npm.d.ts.map +1 -0
  202. package/dist/types/common/context/shared-context.d.ts +5 -0
  203. package/dist/types/common/context/shared-context.d.ts.map +1 -0
  204. package/dist/types/common/deny-list/deny-list.d.ts +12 -0
  205. package/dist/types/common/deny-list/deny-list.d.ts.map +1 -0
  206. package/dist/types/common/drain/drain.d.ts +17 -0
  207. package/dist/types/common/drain/drain.d.ts.map +1 -0
  208. package/dist/types/common/event-emitter/contextual-ee.d.ts +4 -0
  209. package/dist/types/common/event-emitter/contextual-ee.d.ts.map +1 -0
  210. package/dist/types/common/event-emitter/handle.d.ts +3 -0
  211. package/dist/types/common/event-emitter/handle.d.ts.map +1 -0
  212. package/dist/types/common/event-emitter/register-handler.d.ts +8 -0
  213. package/dist/types/common/event-emitter/register-handler.d.ts.map +1 -0
  214. package/dist/types/common/event-listener/event-listener-opts.d.ts +10 -0
  215. package/dist/types/common/event-listener/event-listener-opts.d.ts.map +1 -0
  216. package/dist/types/common/harvest/harvest-scheduler.d.ts +21 -0
  217. package/dist/types/common/harvest/harvest-scheduler.d.ts.map +1 -0
  218. package/dist/types/common/harvest/harvest.d.ts +58 -0
  219. package/dist/types/common/harvest/harvest.d.ts.map +1 -0
  220. package/dist/types/common/ids/id.d.ts +12 -0
  221. package/dist/types/common/ids/id.d.ts.map +1 -0
  222. package/dist/types/common/ids/unique-id.d.ts +28 -0
  223. package/dist/types/common/ids/unique-id.d.ts.map +1 -0
  224. package/dist/types/common/metrics/framework-detection.d.ts +2 -0
  225. package/dist/types/common/metrics/framework-detection.d.ts.map +1 -0
  226. package/dist/types/common/metrics/paint-metrics.d.ts +2 -0
  227. package/dist/types/common/metrics/paint-metrics.d.ts.map +1 -0
  228. package/dist/types/common/serialize/bel-serializer.d.ts +5 -0
  229. package/dist/types/common/serialize/bel-serializer.d.ts.map +1 -0
  230. package/dist/types/common/timing/nav-timing.d.ts +4 -0
  231. package/dist/types/common/timing/nav-timing.d.ts.map +1 -0
  232. package/dist/types/common/timing/now.d.ts +2 -0
  233. package/dist/types/common/timing/now.d.ts.map +1 -0
  234. package/dist/types/common/unload/eol.d.ts +8 -0
  235. package/dist/types/common/unload/eol.d.ts.map +1 -0
  236. package/dist/types/common/url/clean-url.d.ts +2 -0
  237. package/dist/types/common/url/clean-url.d.ts.map +1 -0
  238. package/dist/types/common/url/encode.d.ts +5 -0
  239. package/dist/types/common/url/encode.d.ts.map +1 -0
  240. package/dist/types/common/url/location.d.ts +6 -0
  241. package/dist/types/common/url/location.d.ts.map +1 -0
  242. package/dist/types/common/url/parse-url.d.ts +2 -0
  243. package/dist/types/common/url/parse-url.d.ts.map +1 -0
  244. package/dist/types/common/url/protocol.d.ts +2 -0
  245. package/dist/types/common/url/protocol.d.ts.map +1 -0
  246. package/dist/types/common/util/console.d.ts +8 -0
  247. package/dist/types/common/util/console.d.ts.map +1 -0
  248. package/dist/types/common/util/data-size.d.ts +2 -0
  249. package/dist/types/common/util/data-size.d.ts.map +1 -0
  250. package/dist/types/common/util/feature-flags.d.ts +3 -0
  251. package/dist/types/common/util/feature-flags.d.ts.map +1 -0
  252. package/dist/types/common/util/get-or-set.d.ts +2 -0
  253. package/dist/types/common/util/get-or-set.d.ts.map +1 -0
  254. package/dist/types/common/util/global-scope.d.ts +13 -0
  255. package/dist/types/common/util/global-scope.d.ts.map +1 -0
  256. package/dist/types/common/util/map-own.d.ts +3 -0
  257. package/dist/types/common/util/map-own.d.ts.map +1 -0
  258. package/dist/types/common/util/obfuscate.d.ts +8 -0
  259. package/dist/types/common/util/obfuscate.d.ts.map +1 -0
  260. package/dist/types/common/util/s-hash.d.ts +2 -0
  261. package/dist/types/common/util/s-hash.d.ts.map +1 -0
  262. package/dist/types/common/util/single.d.ts +2 -0
  263. package/dist/types/common/util/single.d.ts.map +1 -0
  264. package/dist/types/common/util/stringify.d.ts +8 -0
  265. package/dist/types/common/util/stringify.d.ts.map +1 -0
  266. package/dist/types/common/util/submit-data.d.ts +35 -0
  267. package/dist/types/common/util/submit-data.d.ts.map +1 -0
  268. package/dist/types/common/util/traverse.d.ts +2 -0
  269. package/dist/types/common/util/traverse.d.ts.map +1 -0
  270. package/dist/types/common/util/user-agent.d.ts +5 -0
  271. package/dist/types/common/util/user-agent.d.ts.map +1 -0
  272. package/dist/types/common/window/load.d.ts +3 -0
  273. package/dist/types/common/window/load.d.ts.map +1 -0
  274. package/dist/types/common/window/nreum.d.ts +14 -0
  275. package/dist/types/common/window/nreum.d.ts.map +1 -0
  276. package/dist/types/common/window/page-visibility.d.ts +7 -0
  277. package/dist/types/common/window/page-visibility.d.ts.map +1 -0
  278. package/dist/types/common/window/session-storage.d.ts +18 -0
  279. package/dist/types/common/window/session-storage.d.ts.map +1 -0
  280. package/dist/types/common/window/supports-performance-observer.d.ts +2 -0
  281. package/dist/types/common/window/supports-performance-observer.d.ts.map +1 -0
  282. package/dist/types/common/wrap/index.d.ts +11 -0
  283. package/dist/types/common/wrap/index.d.ts.map +1 -0
  284. package/dist/types/common/wrap/wrap-events.d.ts +17 -0
  285. package/dist/types/common/wrap/wrap-events.d.ts.map +1 -0
  286. package/dist/types/common/wrap/wrap-fetch.d.ts +18 -0
  287. package/dist/types/common/wrap/wrap-fetch.d.ts.map +1 -0
  288. package/dist/types/common/wrap/wrap-function.d.ts +28 -0
  289. package/dist/types/common/wrap/wrap-function.d.ts.map +1 -0
  290. package/dist/types/common/wrap/wrap-history.d.ts +16 -0
  291. package/dist/types/common/wrap/wrap-history.d.ts.map +1 -0
  292. package/dist/types/common/wrap/wrap-jsonp.d.ts +16 -0
  293. package/dist/types/common/wrap/wrap-jsonp.d.ts.map +1 -0
  294. package/dist/types/common/wrap/wrap-mutation.d.ts +16 -0
  295. package/dist/types/common/wrap/wrap-mutation.d.ts.map +1 -0
  296. package/dist/types/common/wrap/wrap-promise.d.ts +17 -0
  297. package/dist/types/common/wrap/wrap-promise.d.ts.map +1 -0
  298. package/dist/types/common/wrap/wrap-raf.d.ts +16 -0
  299. package/dist/types/common/wrap/wrap-raf.d.ts.map +1 -0
  300. package/dist/types/common/wrap/wrap-timer.d.ts +17 -0
  301. package/dist/types/common/wrap/wrap-timer.d.ts.map +1 -0
  302. package/dist/types/common/wrap/wrap-xhr.d.ts +16 -0
  303. package/dist/types/common/wrap/wrap-xhr.d.ts.map +1 -0
  304. package/dist/types/features/ajax/aggregate/index.d.ts +16 -0
  305. package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -0
  306. package/dist/types/features/ajax/constants.d.ts +2 -0
  307. package/dist/types/features/ajax/constants.d.ts.map +1 -0
  308. package/dist/types/features/ajax/index.d.ts +2 -0
  309. package/dist/types/features/ajax/index.d.ts.map +1 -0
  310. package/dist/types/features/ajax/instrument/distributed-tracing.d.ts +19 -0
  311. package/dist/types/features/ajax/instrument/distributed-tracing.d.ts.map +1 -0
  312. package/dist/types/features/ajax/instrument/index.d.ts +9 -0
  313. package/dist/types/features/ajax/instrument/index.d.ts.map +1 -0
  314. package/dist/types/features/ajax/instrument/response-size.d.ts +2 -0
  315. package/dist/types/features/ajax/instrument/response-size.d.ts.map +1 -0
  316. package/dist/types/features/jserrors/aggregate/canonical-function-name.d.ts +2 -0
  317. package/dist/types/features/jserrors/aggregate/canonical-function-name.d.ts.map +1 -0
  318. package/dist/types/features/jserrors/aggregate/compute-stack-trace.d.ts +22 -0
  319. package/dist/types/features/jserrors/aggregate/compute-stack-trace.d.ts.map +1 -0
  320. package/dist/types/features/jserrors/aggregate/format-stack-trace.d.ts +3 -0
  321. package/dist/types/features/jserrors/aggregate/format-stack-trace.d.ts.map +1 -0
  322. package/dist/types/features/jserrors/aggregate/index.d.ts +24 -0
  323. package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -0
  324. package/dist/types/features/jserrors/aggregate/string-hash-code.d.ts +2 -0
  325. package/dist/types/features/jserrors/aggregate/string-hash-code.d.ts.map +1 -0
  326. package/dist/types/features/jserrors/constants.d.ts +3 -0
  327. package/dist/types/features/jserrors/constants.d.ts.map +1 -0
  328. package/dist/types/features/jserrors/index.d.ts +2 -0
  329. package/dist/types/features/jserrors/index.d.ts.map +1 -0
  330. package/dist/types/features/jserrors/instrument/debug.d.ts +2 -0
  331. package/dist/types/features/jserrors/instrument/debug.d.ts.map +1 -0
  332. package/dist/types/features/jserrors/instrument/index.d.ts +22 -0
  333. package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -0
  334. package/dist/types/features/metrics/aggregate/index.d.ts +12 -0
  335. package/dist/types/features/metrics/aggregate/index.d.ts.map +1 -0
  336. package/dist/types/features/metrics/constants.d.ts +6 -0
  337. package/dist/types/features/metrics/constants.d.ts.map +1 -0
  338. package/dist/types/features/metrics/index.d.ts +2 -0
  339. package/dist/types/features/metrics/index.d.ts.map +1 -0
  340. package/dist/types/features/metrics/instrument/index.d.ts +6 -0
  341. package/dist/types/features/metrics/instrument/index.d.ts.map +1 -0
  342. package/dist/types/features/metrics/instrument/workers-helper.d.ts +7 -0
  343. package/dist/types/features/metrics/instrument/workers-helper.d.ts.map +1 -0
  344. package/dist/types/features/page_action/aggregate/index.d.ts +24 -0
  345. package/dist/types/features/page_action/aggregate/index.d.ts.map +1 -0
  346. package/dist/types/features/page_action/constants.d.ts +2 -0
  347. package/dist/types/features/page_action/constants.d.ts.map +1 -0
  348. package/dist/types/features/page_action/index.d.ts +2 -0
  349. package/dist/types/features/page_action/index.d.ts.map +1 -0
  350. package/dist/types/features/page_action/instrument/index.d.ts +6 -0
  351. package/dist/types/features/page_action/instrument/index.d.ts.map +1 -0
  352. package/dist/types/features/page_view_event/aggregate/index.d.ts +9 -0
  353. package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -0
  354. package/dist/types/features/page_view_event/aggregate/initialized-features.d.ts +8 -0
  355. package/dist/types/features/page_view_event/aggregate/initialized-features.d.ts.map +1 -0
  356. package/dist/types/features/page_view_event/constants.d.ts +5 -0
  357. package/dist/types/features/page_view_event/constants.d.ts.map +1 -0
  358. package/dist/types/features/page_view_event/index.d.ts +2 -0
  359. package/dist/types/features/page_view_event/index.d.ts.map +1 -0
  360. package/dist/types/features/page_view_event/instrument/index.d.ts +6 -0
  361. package/dist/types/features/page_view_event/instrument/index.d.ts.map +1 -0
  362. package/dist/types/features/page_view_timing/aggregate/index.d.ts +32 -0
  363. package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -0
  364. package/dist/types/features/page_view_timing/constants.d.ts +2 -0
  365. package/dist/types/features/page_view_timing/constants.d.ts.map +1 -0
  366. package/dist/types/features/page_view_timing/first-paint.d.ts +2 -0
  367. package/dist/types/features/page_view_timing/first-paint.d.ts.map +1 -0
  368. package/dist/types/features/page_view_timing/index.d.ts +2 -0
  369. package/dist/types/features/page_view_timing/index.d.ts.map +1 -0
  370. package/dist/types/features/page_view_timing/instrument/index.d.ts +6 -0
  371. package/dist/types/features/page_view_timing/instrument/index.d.ts.map +1 -0
  372. package/dist/types/features/page_view_timing/long-tasks.d.ts +2 -0
  373. package/dist/types/features/page_view_timing/long-tasks.d.ts.map +1 -0
  374. package/dist/types/features/session_trace/aggregate/index.d.ts +77 -0
  375. package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -0
  376. package/dist/types/features/session_trace/constants.d.ts +13 -0
  377. package/dist/types/features/session_trace/constants.d.ts.map +1 -0
  378. package/dist/types/features/session_trace/index.d.ts +2 -0
  379. package/dist/types/features/session_trace/index.d.ts.map +1 -0
  380. package/dist/types/features/session_trace/instrument/index.d.ts +11 -0
  381. package/dist/types/features/session_trace/instrument/index.d.ts.map +1 -0
  382. package/dist/types/features/spa/aggregate/index.d.ts +25 -0
  383. package/dist/types/features/spa/aggregate/index.d.ts.map +1 -0
  384. package/dist/types/features/spa/aggregate/interaction-node.d.ts +15 -0
  385. package/dist/types/features/spa/aggregate/interaction-node.d.ts.map +1 -0
  386. package/dist/types/features/spa/aggregate/interaction.d.ts +20 -0
  387. package/dist/types/features/spa/aggregate/interaction.d.ts.map +1 -0
  388. package/dist/types/features/spa/aggregate/serializer.d.ts +15 -0
  389. package/dist/types/features/spa/aggregate/serializer.d.ts.map +1 -0
  390. package/dist/types/features/spa/constants.d.ts +23 -0
  391. package/dist/types/features/spa/constants.d.ts.map +1 -0
  392. package/dist/types/features/spa/index.d.ts +2 -0
  393. package/dist/types/features/spa/index.d.ts.map +1 -0
  394. package/dist/types/features/spa/instrument/index.d.ts +8 -0
  395. package/dist/types/features/spa/instrument/index.d.ts.map +1 -0
  396. package/dist/types/features/utils/aggregate-base.d.ts +4 -0
  397. package/dist/types/features/utils/aggregate-base.d.ts.map +1 -0
  398. package/dist/types/features/utils/feature-base.d.ts +23 -0
  399. package/dist/types/features/utils/feature-base.d.ts.map +1 -0
  400. package/dist/types/features/utils/handler-cache.d.ts +22 -0
  401. package/dist/types/features/utils/handler-cache.d.ts.map +1 -0
  402. package/dist/types/features/utils/instrument-base.d.ts +27 -0
  403. package/dist/types/features/utils/instrument-base.d.ts.map +1 -0
  404. package/dist/types/features/utils/lazy-loader.d.ts +13 -0
  405. package/dist/types/features/utils/lazy-loader.d.ts.map +1 -0
  406. package/dist/types/index.d.ts +12 -0
  407. package/dist/types/index.d.ts.map +1 -0
  408. package/dist/types/loaders/agent.d.ts +20 -0
  409. package/dist/types/loaders/agent.d.ts.map +1 -0
  410. package/dist/types/loaders/api/api.d.ts +17 -0
  411. package/dist/types/loaders/api/api.d.ts.map +1 -0
  412. package/dist/types/loaders/api/apiAsync.d.ts +2 -0
  413. package/dist/types/loaders/api/apiAsync.d.ts.map +1 -0
  414. package/dist/types/loaders/browser-agent.d.ts +9 -0
  415. package/dist/types/loaders/browser-agent.d.ts.map +1 -0
  416. package/dist/types/loaders/configure/configure.d.ts +10 -0
  417. package/dist/types/loaders/configure/configure.d.ts.map +1 -0
  418. package/dist/types/loaders/features/enabled-features.d.ts +2 -0
  419. package/dist/types/loaders/features/enabled-features.d.ts.map +1 -0
  420. package/dist/types/loaders/features/featureDependencies.d.ts +3 -0
  421. package/dist/types/loaders/features/featureDependencies.d.ts.map +1 -0
  422. package/dist/types/loaders/features/features.d.ts +18 -0
  423. package/dist/types/loaders/features/features.d.ts.map +1 -0
  424. package/dist/types/loaders/micro-agent.d.ts +25 -0
  425. package/dist/types/loaders/micro-agent.d.ts.map +1 -0
  426. package/dist/types/loaders/worker-agent.d.ts +8 -0
  427. package/dist/types/loaders/worker-agent.d.ts.map +1 -0
  428. package/package.json +67 -59
  429. package/src/cdn/lite.js +18 -0
  430. package/src/cdn/polyfills/lite.js +7 -0
  431. package/src/cdn/polyfills/pro.js +7 -0
  432. package/src/cdn/polyfills/spa.js +7 -0
  433. package/src/cdn/polyfills.js +17 -0
  434. package/src/cdn/pro.js +27 -0
  435. package/src/cdn/spa.js +28 -0
  436. package/src/cdn/worker.js +21 -0
  437. package/src/common/aggregate/aggregator.js +171 -0
  438. package/src/common/browser-version/firefox-version.js +10 -0
  439. package/src/common/browser-version/ios-version.js +11 -0
  440. package/src/common/config/config.js +12 -0
  441. package/src/common/config/state/configurable.js +26 -0
  442. package/src/common/config/state/info.js +49 -0
  443. package/src/common/config/state/init.js +56 -0
  444. package/src/common/config/state/loader-config.js +25 -0
  445. package/src/common/config/state/originals.js +3 -0
  446. package/src/common/config/state/runtime.js +47 -0
  447. package/src/common/constants/env.cdn.js +20 -0
  448. package/src/common/constants/env.js +23 -0
  449. package/src/common/constants/env.npm.js +21 -0
  450. package/src/common/context/shared-context.js +21 -0
  451. package/src/common/deny-list/deny-list.js +116 -0
  452. package/src/common/drain/drain.js +119 -0
  453. package/src/common/event-emitter/contextual-ee.js +159 -0
  454. package/src/common/event-emitter/contextual-ee.test.js +310 -0
  455. package/src/common/event-emitter/handle.js +17 -0
  456. package/src/common/event-emitter/handle.test.js +56 -0
  457. package/src/common/event-emitter/register-handler.js +25 -0
  458. package/src/common/event-emitter/register-handler.test.js +61 -0
  459. package/src/common/event-listener/event-listener-opts.js +41 -0
  460. package/src/common/harvest/harvest-scheduler.js +112 -0
  461. package/src/common/harvest/harvest.js +248 -0
  462. package/src/common/ids/id.js +32 -0
  463. package/src/common/ids/id.test.js +92 -0
  464. package/src/common/ids/unique-id.js +104 -0
  465. package/src/common/ids/unique-id.test.js +58 -0
  466. package/src/common/metrics/framework-detection.js +71 -0
  467. package/src/common/metrics/paint-metrics.js +6 -0
  468. package/src/common/serialize/bel-serializer.js +93 -0
  469. package/src/common/timing/nav-timing.js +90 -0
  470. package/src/common/timing/nav-timing.test.js +161 -0
  471. package/src/common/timing/now.js +9 -0
  472. package/src/common/unload/eol.js +62 -0
  473. package/src/common/url/clean-url.js +10 -0
  474. package/src/common/url/clean-url.test.js +25 -0
  475. package/src/common/url/encode.js +75 -0
  476. package/src/common/url/encode.test.js +80 -0
  477. package/src/common/url/location.js +12 -0
  478. package/src/common/url/location.test.js +15 -0
  479. package/src/common/url/parse-url.js +70 -0
  480. package/src/common/url/parse-url.test.js +110 -0
  481. package/src/common/url/protocol.js +9 -0
  482. package/src/common/url/protocol.test.js +18 -0
  483. package/src/common/util/console.js +11 -0
  484. package/src/common/util/data-size.js +21 -0
  485. package/src/common/util/feature-flags.js +38 -0
  486. package/src/common/util/get-or-set.js +34 -0
  487. package/src/common/util/global-scope.js +47 -0
  488. package/src/common/util/map-own.js +22 -0
  489. package/src/common/util/map-own.test.js +52 -0
  490. package/src/common/util/obfuscate.js +73 -0
  491. package/src/common/util/s-hash.js +14 -0
  492. package/src/common/util/single.js +18 -0
  493. package/src/common/util/stringify.js +42 -0
  494. package/src/common/util/submit-data.js +101 -0
  495. package/src/common/util/traverse.js +36 -0
  496. package/src/common/util/user-agent.js +56 -0
  497. package/src/common/window/load.js +15 -0
  498. package/src/common/window/nreum.js +110 -0
  499. package/src/common/window/page-visibility.js +24 -0
  500. package/src/common/window/session-storage.js +75 -0
  501. package/src/common/window/supports-performance-observer.js +10 -0
  502. package/src/common/wrap/index.js +17 -0
  503. package/src/common/wrap/wrap-events.js +106 -0
  504. package/src/common/wrap/wrap-fetch.js +110 -0
  505. package/src/common/wrap/wrap-function.js +248 -0
  506. package/src/common/wrap/wrap-history.js +51 -0
  507. package/src/common/wrap/wrap-jsonp.js +136 -0
  508. package/src/common/wrap/wrap-mutation.js +58 -0
  509. package/src/common/wrap/wrap-promise.js +166 -0
  510. package/src/common/wrap/wrap-promise.test.js +140 -0
  511. package/src/common/wrap/wrap-raf.js +52 -0
  512. package/src/common/wrap/wrap-timer.js +69 -0
  513. package/src/common/wrap/wrap-xhr.js +214 -0
  514. package/src/features/ajax/aggregate/index.js +248 -0
  515. package/src/features/ajax/constants.js +3 -0
  516. package/src/features/ajax/index.js +1 -0
  517. package/src/features/ajax/instrument/distributed-tracing.js +166 -0
  518. package/src/features/ajax/instrument/index.js +380 -0
  519. package/src/features/ajax/instrument/response-size.js +18 -0
  520. package/src/features/jserrors/aggregate/canonical-function-name.js +14 -0
  521. package/src/features/jserrors/aggregate/canonical-function-name.test.js +13 -0
  522. package/src/features/jserrors/aggregate/compute-stack-trace.js +231 -0
  523. package/src/features/jserrors/aggregate/compute-stack-trace.test.js +297 -0
  524. package/src/features/jserrors/aggregate/format-stack-trace.js +30 -0
  525. package/src/features/jserrors/aggregate/format-stack-trace.test.js +39 -0
  526. package/src/features/jserrors/aggregate/index.js +310 -0
  527. package/src/features/jserrors/aggregate/string-hash-code.js +17 -0
  528. package/src/features/jserrors/aggregate/string-hash-code.test.js +12 -0
  529. package/src/features/jserrors/constants.js +4 -0
  530. package/src/features/jserrors/index.js +1 -0
  531. package/src/features/jserrors/instrument/debug.js +36 -0
  532. package/src/features/jserrors/instrument/index.js +151 -0
  533. package/src/features/metrics/aggregate/index.js +133 -0
  534. package/src/features/metrics/constants.js +7 -0
  535. package/src/features/metrics/index.js +1 -0
  536. package/src/features/metrics/instrument/index.js +14 -0
  537. package/src/features/metrics/instrument/workers-helper.js +113 -0
  538. package/src/features/page_action/aggregate/index.js +113 -0
  539. package/src/features/page_action/constants.js +3 -0
  540. package/src/features/page_action/index.js +1 -0
  541. package/src/features/page_action/instrument/index.js +15 -0
  542. package/src/features/page_view_event/aggregate/index.js +143 -0
  543. package/src/features/page_view_event/aggregate/initialized-features.js +31 -0
  544. package/src/features/page_view_event/constants.js +6 -0
  545. package/src/features/page_view_event/index.js +1 -0
  546. package/src/features/page_view_event/instrument/index.js +33 -0
  547. package/src/features/page_view_timing/aggregate/index.js +257 -0
  548. package/src/features/page_view_timing/constants.js +3 -0
  549. package/src/features/page_view_timing/first-paint.js +41 -0
  550. package/src/features/page_view_timing/index.js +1 -0
  551. package/src/features/page_view_timing/instrument/index.js +30 -0
  552. package/src/features/page_view_timing/long-tasks.js +60 -0
  553. package/src/features/session_trace/aggregate/index.js +413 -0
  554. package/src/features/session_trace/constants.js +15 -0
  555. package/src/features/session_trace/index.js +1 -0
  556. package/src/features/session_trace/instrument/index.js +127 -0
  557. package/src/features/spa/aggregate/index.js +738 -0
  558. package/src/features/spa/aggregate/interaction-node.js +85 -0
  559. package/src/features/spa/aggregate/interaction-node.test.js +17 -0
  560. package/src/features/spa/aggregate/interaction.js +112 -0
  561. package/src/features/spa/aggregate/serializer.js +198 -0
  562. package/src/features/spa/constants.js +36 -0
  563. package/src/features/spa/index.js +1 -0
  564. package/src/features/spa/instrument/index.js +114 -0
  565. package/src/features/utils/aggregate-base.js +7 -0
  566. package/src/features/utils/feature-base.js +51 -0
  567. package/src/features/utils/handler-cache.js +60 -0
  568. package/src/features/utils/instrument-base.js +68 -0
  569. package/src/features/utils/lazy-loader.js +37 -0
  570. package/src/index.js +15 -0
  571. package/src/loaders/agent.js +80 -0
  572. package/src/loaders/api/api.js +175 -0
  573. package/src/loaders/api/apiAsync.js +92 -0
  574. package/src/loaders/browser-agent.js +33 -0
  575. package/src/loaders/configure/configure.js +39 -0
  576. package/src/loaders/features/enabled-features.js +16 -0
  577. package/src/loaders/features/featureDependencies.js +26 -0
  578. package/src/loaders/features/features.js +25 -0
  579. package/src/loaders/micro-agent.js +84 -0
  580. package/src/loaders/worker-agent.js +24 -0
  581. package/dist/cjs/common/constants/environment-variables.js +0 -20
  582. package/dist/cjs/common/util/reduce.js +0 -22
  583. package/dist/cjs/common/window/top-level-callers.js +0 -23
  584. package/dist/esm/common/constants/environment-variables.js +0 -11
  585. package/dist/esm/common/util/reduce.js +0 -16
  586. package/dist/esm/common/window/top-level-callers.js +0 -17
  587. package/types.ts +0 -221
@@ -27,15 +27,13 @@ var _features = require("../../../loaders/features/features");
27
27
  class Aggregate extends _aggregateBase.AggregateBase {
28
28
  static featureName = _constants.FEATURE_NAME;
29
29
  constructor(agentIdentifier, aggregator) {
30
+ var _this;
30
31
  super(agentIdentifier, aggregator, _constants.FEATURE_NAME);
32
+ _this = this;
31
33
  this.timings = [];
32
34
  this.timingsSent = [];
33
35
  this.curSessEndRecorded = false;
34
- try {
35
- // we (only) need to track cls state because it's attached to other timing events rather than reported on change...
36
- this.clsSupported = PerformanceObserver.supportedEntryTypes.includes('layout-shift');
37
- this.cls = 0;
38
- } catch (e) {}
36
+ this.cls = null; // this should be null unless set to a numeric value by web-vitals so that we differentiate if CLS is supported
39
37
 
40
38
  /*! This is the section that used to be in the loader portion: !*/
41
39
  /* ------------------------------------------------------------ */
@@ -43,10 +41,11 @@ class Aggregate extends _aggregateBase.AggregateBase {
43
41
  this.alreadySent = new Set(); // since we don't support timings on BFCache restores, this tracks and helps cap metrics that web-vitals report more than once
44
42
 
45
43
  /* PerformancePaintTiming API - BFC is not yet supported. */
46
- (0, _firstPaint.onFirstPaint)(({
47
- name,
48
- value
49
- }) => {
44
+ (0, _firstPaint.onFirstPaint)(_ref => {
45
+ let {
46
+ name,
47
+ value
48
+ } = _ref;
50
49
  if (pageStartedHidden) return;
51
50
  this.addTiming(name.toLowerCase(), Math.floor(value));
52
51
  });
@@ -65,10 +64,11 @@ class Aggregate extends _aggregateBase.AggregateBase {
65
64
  }
66
65
  } catch (e) {}
67
66
  } else {
68
- (0, _webVitals.onFCP)(({
69
- name,
70
- value
71
- }) => {
67
+ (0, _webVitals.onFCP)(_ref2 => {
68
+ let {
69
+ name,
70
+ value
71
+ } = _ref2;
72
72
  if (pageStartedHidden || this.alreadySent.has(name)) return;
73
73
  this.alreadySent.add(name);
74
74
  this.addTiming(name.toLowerCase(), value);
@@ -76,12 +76,13 @@ class Aggregate extends _aggregateBase.AggregateBase {
76
76
  }
77
77
 
78
78
  /* First Input Delay (+"First Interaction") - As of WV v3, it still imperfectly tries to detect document vis state asap and isn't supposed to report if page starts hidden. */
79
- (0, _webVitals.onFID)(({
80
- name,
81
- value,
82
- entries
83
- }) => {
84
- if (pageStartedHidden || this.alreadySent.has(name)) return;
79
+ (0, _webVitals.onFID)(_ref3 => {
80
+ let {
81
+ name,
82
+ value,
83
+ entries
84
+ } = _ref3;
85
+ if (pageStartedHidden || this.alreadySent.has(name) || entries.length === 0) return;
85
86
  this.alreadySent.add(name);
86
87
 
87
88
  // CWV will only report one (THE) first-input entry to us; fid isn't reported if there are no user interactions occurs before the *first* page hiding.
@@ -95,59 +96,76 @@ class Aggregate extends _aggregateBase.AggregateBase {
95
96
  });
96
97
 
97
98
  /* Largest Contentful Paint - As of WV v3, it still imperfectly tries to detect document vis state asap and isn't supposed to report if page starts hidden. */
98
- (0, _webVitals.onLCP)(({
99
- name,
100
- value,
101
- entries
102
- }) => {
99
+ (0, _webVitals.onLCP)(_ref4 => {
100
+ let {
101
+ name,
102
+ value,
103
+ entries
104
+ } = _ref4;
103
105
  if (pageStartedHidden || this.alreadySent.has(name)) return;
104
106
  this.alreadySent.add(name);
105
-
106
- // CWV will only ever report one (THE) lcp entry to us; lcp is also only reported *once* on earlier(user interaction, page hidden).
107
- const lcpEntry = entries[entries.length - 1]; // this looks weird if we only expect one, but this is how cwv-attribution gets it so to be sure...
108
- const attrs = {
109
- size: lcpEntry.size,
110
- eid: lcpEntry.id
111
- };
112
- this.addConnectionAttributes(attrs);
113
- if (lcpEntry.url) {
114
- attrs['elUrl'] = (0, _cleanUrl.cleanURL)(lcpEntry.url);
115
- }
116
- if (lcpEntry.element && lcpEntry.element.tagName) {
117
- attrs['elTag'] = lcpEntry.element.tagName;
107
+ const attributes = {};
108
+ if (entries.length > 0) {
109
+ // CWV will only ever report one (THE) lcp entry to us; lcp is also only reported *once* on earlier(user interaction, page hidden).
110
+ const lcpEntry = entries[entries.length - 1]; // this looks weird if we only expect one, but this is how cwv-attribution gets it so to be sure...
111
+ attributes.size = lcpEntry.size;
112
+ attributes.eid = lcpEntry.id;
113
+ if (lcpEntry.url) {
114
+ attributes['elUrl'] = (0, _cleanUrl.cleanURL)(lcpEntry.url);
115
+ }
116
+ if (lcpEntry.element?.tagName) {
117
+ attributes['elTag'] = lcpEntry.element.tagName;
118
+ }
118
119
  }
119
- this.addTiming(name.toLowerCase(), value, attrs);
120
+ this.addConnectionAttributes(attributes);
121
+ this.addTiming(name.toLowerCase(), value, attributes);
120
122
  });
121
123
 
122
- /* Cumulative Layout Shift - We don't have to limit this callback since cls is stored as a state and only sent as attribute on other timings. */
123
- (0, _webVitals.onCLS)(({
124
- value
125
- }) => this.cls = value);
124
+ /* Cumulative Layout Shift - We don't have to limit this callback since cls is stored as a state and only sent as attribute on other timings.
125
+ reportAllChanges ensures our tracked cls has the most recent rolling value to attach to 'unload' and 'pagehide'. */
126
+ (0, _webVitals.onCLS)(_ref5 => {
127
+ let {
128
+ value
129
+ } = _ref5;
130
+ return this.cls = value;
131
+ }, {
132
+ reportAllChanges: true
133
+ });
126
134
 
127
135
  /* Interaction-to-Next-Paint */
128
- (0, _webVitals.onINP)(({
129
- name,
130
- value,
131
- id
132
- }) => this.addTiming(name.toLowerCase(), value, {
133
- metricId: id
134
- }));
136
+ (0, _webVitals.onINP)(_ref6 => {
137
+ let {
138
+ name,
139
+ value,
140
+ id
141
+ } = _ref6;
142
+ return this.addTiming(name.toLowerCase(), value, {
143
+ metricId: id
144
+ });
145
+ });
135
146
 
136
147
  /* PerformanceLongTaskTiming API */
137
148
  if ((0, _config.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.long_task') === true) {
138
- (0, _longTasks.onLongTask)(({
139
- name,
140
- value,
141
- info
142
- }) => this.addTiming(name.toLowerCase(), value, info)); // lt context is passed as 'info'=attrs in the timing node
149
+ (0, _longTasks.onLongTask)(_ref7 => {
150
+ let {
151
+ name,
152
+ value,
153
+ info
154
+ } = _ref7;
155
+ return this.addTiming(name.toLowerCase(), value, info);
156
+ }); // lt context is passed as 'info'=attrs in the timing node
143
157
  }
144
158
  /* ------------------------------------End of ex-loader section */
145
159
 
146
160
  /* It's important that CWV api, like "onLCP", is called before this scheduler is initialized. The reason is because they listen to the same
147
161
  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". */
148
162
  this.scheduler = new _harvestScheduler.HarvestScheduler('events', {
149
- onFinished: (...args) => this.onHarvestFinished(...args),
150
- getPayload: (...args) => this.prepareHarvest(...args)
163
+ onFinished: function () {
164
+ return _this.onHarvestFinished(...arguments);
165
+ },
166
+ getPayload: function () {
167
+ return _this.prepareHarvest(...arguments);
168
+ }
151
169
  }, this);
152
170
  (0, _registerHandler.registerHandler)('timing', (name, value, attrs) => this.addTiming(name, value, attrs), this.featureName, this.ee); // notice CLS is added to all timings via 4th param
153
171
  (0, _registerHandler.registerHandler)('docHidden', msTimestamp => this.endCurrentSession(msTimestamp), this.featureName, this.ee);
@@ -155,7 +173,7 @@ class Aggregate extends _aggregateBase.AggregateBase {
155
173
  const initialHarvestSeconds = (0, _config.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.initialHarvestSeconds') || 10;
156
174
  const harvestTimeSeconds = (0, _config.getConfigurationValue)(this.agentIdentifier, 'page_view_timing.harvestTimeSeconds') || 30;
157
175
  // send initial data sooner, then start regular
158
- this.ee.on(`drain-${this.featureName}`, () => {
176
+ this.ee.on("drain-".concat(this.featureName), () => {
159
177
  this.scheduler.startTimer(harvestTimeSeconds, initialHarvestSeconds);
160
178
  });
161
179
  (0, _drain.drain)(this.agentIdentifier, this.featureName);
@@ -189,15 +207,26 @@ class Aggregate extends _aggregateBase.AggregateBase {
189
207
  */
190
208
  recordPageUnload(timestamp) {
191
209
  this.addTiming('unload', timestamp, null);
192
- // Because window's pageHide commonly fires before vis change and the final harvest occurs on the earlier of the two, we also have to add that now or it won't make it into the last payload out.
210
+ /*
211
+ Issue: Because window's pageHide commonly fires BEFORE vis change and "final" harvest would happen at the former in this case, we also have to add our vis-change event now or it may not be sent.
212
+ Affected: Safari < v14.1/.5 ; versions that don't support 'visiilitychange' event
213
+ Impact: For affected w/o this, NR 'pageHide' attribute may not be sent. For other browsers w/o this, NR 'pageHide' gets fragmented into its own harvest call on page unloading because of dual EoL logic.
214
+ Mitigation: NR 'unload' and 'pageHide' are both recorded when window pageHide fires, rather than only recording 'unload'.
215
+ Future: When EoL can become the singular subscribeToVisibilityChange, it's likely endCurrentSession isn't needed here as 'unload'-'pageHide' can be untangled.
216
+ */
193
217
  this.endCurrentSession(timestamp);
194
218
  }
195
219
  addTiming(name, value, attrs) {
196
220
  attrs = attrs || {};
197
221
 
198
- // If CLS is supported, a cls value should exist and be reported, even at 0.
199
- // *cli Mar'23 - At this time, it remains attached to all timings. See NEWRELIC-6143.
200
- if (this.clsSupported) {
222
+ // If cls was set to another value by `onCLS`, then it's supported and is attached onto any timing but is omitted until such time.
223
+ /*
224
+ *cli Apr'23 - Convert attach-to-all -> attach-if-not-null. See NEWRELIC-6143.
225
+ Issue: Because NR 'pageHide' was only sent once with what is considered the "final" CLS value, in the case that 'pageHide' fires before 'load' happens, we incorrectly a final CLS of 0 for that page.
226
+ Mitigation: We've set initial CLS to null so that it's omitted from timings like 'pageHide' in that edge case. It should only be included if onCLS callback was executed at least once.
227
+ Future: onCLS value changes should be reported directly & CLS separated into its own timing node so it's not beholden to 'pageHide' firing. It'd also be possible to report the real final CLS.
228
+ */
229
+ if (this.cls !== null) {
201
230
  attrs['cls'] = this.cls;
202
231
  }
203
232
  this.timings.push({
@@ -19,7 +19,8 @@ var _globalScope = require("../../../common/util/global-scope");
19
19
 
20
20
  class Instrument extends _instrumentBase.InstrumentBase {
21
21
  static featureName = _constants.FEATURE_NAME;
22
- constructor(agentIdentifier, aggregator, auto = true) {
22
+ constructor(agentIdentifier, aggregator) {
23
+ let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
23
24
  super(agentIdentifier, aggregator, _constants.FEATURE_NAME, auto);
24
25
  if (!_globalScope.isBrowserScope) return; // CWV is irrelevant outside web context
25
26
 
@@ -7,7 +7,6 @@ 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 _mapOwn = require("../../../common/util/map-own");
10
- var _reduce = require("../../../common/util/reduce");
11
10
  var _stringify = require("../../../common/util/stringify");
12
11
  var _parseUrl = require("../../../common/url/parse-url");
13
12
  var _supportsPerformanceObserver = require("../../../common/window/supports-performance-observer");
@@ -27,9 +26,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
27
26
  class Aggregate extends _aggregateBase.AggregateBase {
28
27
  static featureName = _constants.FEATURE_NAME;
29
28
  constructor(agentIdentifier, aggregator) {
30
- super(agentIdentifier, aggregator, _constants.FEATURE_NAME);
31
-
29
+ var _this;
32
30
  // Very unlikely, but in case the existing XMLHttpRequest.prototype object on the page couldn't be wrapped.
31
+ super(agentIdentifier, aggregator, _constants.FEATURE_NAME);
32
+ _this = this;
33
33
  if (!(0, _config.getRuntime)(agentIdentifier).xhrWrappable) return;
34
34
  const handlerCache = new _handlerCache.HandlerCache();
35
35
  this.ptid = '';
@@ -87,7 +87,11 @@ class Aggregate extends _aggregateBase.AggregateBase {
87
87
  this.maxNodesPerHarvest = (0, _config.getConfigurationValue)(agentIdentifier, 'session_trace.maxNodesPerHarvest') || 1000;
88
88
  this.laststart = 0;
89
89
  (0, _registerHandler.registerHandler)('feat-stn', () => {
90
- this.storeTiming(window.performance.timing);
90
+ if (typeof PerformanceNavigationTiming !== 'undefined') {
91
+ this.storeTiming(window.performance?.getEntriesByType('navigation')?.[0] || {});
92
+ } else {
93
+ this.storeTiming(window.performance?.timing);
94
+ }
91
95
  var scheduler = new _harvestScheduler.HarvestScheduler('resources', {
92
96
  onFinished: onHarvestFinished.bind(this),
93
97
  retryDelay: this.harvestTimeSeconds
@@ -130,39 +134,78 @@ class Aggregate extends _aggregateBase.AggregateBase {
130
134
  }, this.featureName, this.ee);
131
135
 
132
136
  // register the handlers immediately... but let the handlerCache decide if the data should actually get stored...
133
- (0, _registerHandler.registerHandler)('bst', (...args) => handlerCache.settle(() => this.storeEvent(...args)), this.featureName, this.ee);
134
- (0, _registerHandler.registerHandler)('bstTimer', (...args) => handlerCache.settle(() => this.storeTimer(...args)), this.featureName, this.ee);
135
- (0, _registerHandler.registerHandler)('bstResource', (...args) => handlerCache.settle(() => this.storeResources(...args)), this.featureName, this.ee);
136
- (0, _registerHandler.registerHandler)('bstHist', (...args) => handlerCache.settle(() => this.storeHist(...args)), this.featureName, this.ee);
137
- (0, _registerHandler.registerHandler)('bstXhrAgg', (...args) => handlerCache.settle(() => this.storeXhrAgg(...args)), this.featureName, this.ee);
138
- (0, _registerHandler.registerHandler)('bstApi', (...args) => handlerCache.settle(() => this.storeSTN(...args)), this.featureName, this.ee);
139
- (0, _registerHandler.registerHandler)('errorAgg', (...args) => handlerCache.settle(() => this.storeErrorAgg(...args)), this.featureName, this.ee);
140
- (0, _registerHandler.registerHandler)('pvtAdded', (...args) => handlerCache.settle(() => this.processPVT(...args)), this.featureName, this.ee);
137
+ (0, _registerHandler.registerHandler)('bst', function () {
138
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
139
+ args[_key] = arguments[_key];
140
+ }
141
+ return handlerCache.settle(() => _this.storeEvent(...args));
142
+ }, this.featureName, this.ee);
143
+ (0, _registerHandler.registerHandler)('bstTimer', function () {
144
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
145
+ args[_key2] = arguments[_key2];
146
+ }
147
+ return handlerCache.settle(() => _this.storeTimer(...args));
148
+ }, this.featureName, this.ee);
149
+ (0, _registerHandler.registerHandler)('bstResource', function () {
150
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
151
+ args[_key3] = arguments[_key3];
152
+ }
153
+ return handlerCache.settle(() => _this.storeResources(...args));
154
+ }, this.featureName, this.ee);
155
+ (0, _registerHandler.registerHandler)('bstHist', function () {
156
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
157
+ args[_key4] = arguments[_key4];
158
+ }
159
+ return handlerCache.settle(() => _this.storeHist(...args));
160
+ }, this.featureName, this.ee);
161
+ (0, _registerHandler.registerHandler)('bstXhrAgg', function () {
162
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
163
+ args[_key5] = arguments[_key5];
164
+ }
165
+ return handlerCache.settle(() => _this.storeXhrAgg(...args));
166
+ }, this.featureName, this.ee);
167
+ (0, _registerHandler.registerHandler)('bstApi', function () {
168
+ for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
169
+ args[_key6] = arguments[_key6];
170
+ }
171
+ return handlerCache.settle(() => _this.storeSTN(...args));
172
+ }, this.featureName, this.ee);
173
+ (0, _registerHandler.registerHandler)('errorAgg', function () {
174
+ for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
175
+ args[_key7] = arguments[_key7];
176
+ }
177
+ return handlerCache.settle(() => _this.storeErrorAgg(...args));
178
+ }, this.featureName, this.ee);
179
+ (0, _registerHandler.registerHandler)('pvtAdded', function () {
180
+ for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
181
+ args[_key8] = arguments[_key8];
182
+ }
183
+ return handlerCache.settle(() => _this.processPVT(...args));
184
+ }, this.featureName, this.ee);
141
185
  (0, _drain.drain)(this.agentIdentifier, this.featureName);
142
186
  }
143
187
  processPVT(name, value, attrs) {
144
188
  var t = {};
145
189
  t[name] = value;
146
- this.storeTiming(t, true);
190
+ this.storeTiming(t);
147
191
  if (this.hasFID(name, attrs)) this.storeEvent({
148
192
  type: 'fid',
149
193
  target: 'document'
150
194
  }, 'document', value, value + attrs.fid);
151
195
  }
152
- storeTiming(_t, ignoreOffset) {
153
- var key;
154
- var val;
155
- var timeOffset;
156
- var dateNow = Date.now();
157
-
196
+ storeTiming(_t) {
158
197
  // loop iterates through prototype also (for FF)
159
- for (key in _t) {
160
- val = _t[key];
198
+ for (let key in _t) {
199
+ const val = _t[key];
200
+
201
+ // ignore size and status type nodes that do not map to timestamp metrics
202
+ const lck = key.toLowerCase();
203
+ if (lck.indexOf('size') >= 0 || lck.indexOf('status') >= 0) continue;
161
204
 
162
205
  // ignore inherited methods, meaningless 0 values, and bogus timestamps
163
206
  // that are in the future (Microsoft Edge seems to sometimes produce these)
164
- if (!(typeof val === 'number' && val > 0 && val < dateNow)) continue;
165
- timeOffset = !ignoreOffset ? _t[key] - (0, _config.getRuntime)(this.agentIdentifier).offset : _t[key];
207
+ if (!(typeof val === 'number' && val >= 0)) continue;
208
+ const timeOffset = Math.round(_t[key]);
166
209
  this.storeSTN({
167
210
  n: key,
168
211
  s: timeOffset,
@@ -296,10 +339,10 @@ class Aggregate extends _aggregateBase.AggregateBase {
296
339
  if (!(0, _supportsPerformanceObserver.supportsPerformanceObserver)()) {
297
340
  this.storeResources(window.performance.getEntriesByType('resource'));
298
341
  }
299
- var stns = (0, _reduce.reduce)((0, _mapOwn.mapOwn)(this.trace, (name, nodes) => {
342
+ var stns = (0, _mapOwn.mapOwn)(this.trace, (name, nodes) => {
300
343
  if (!(name in this.toAggregate)) return nodes;
301
- return (0, _reduce.reduce)((0, _mapOwn.mapOwn)((0, _reduce.reduce)(nodes.sort(this.byStart), this.smearEvtsByOrigin(name), {}), this.val), this.flatten, []);
302
- }), this.flatten, []);
344
+ return (0, _mapOwn.mapOwn)(nodes.sort(this.byStart).reduce(this.smearEvtsByOrigin(name), {}), this.val).reduce(this.flatten, []);
345
+ }).reduce(this.flatten, []);
303
346
  if (stns.length === 0) return {};
304
347
  if (retry) {
305
348
  this.sentTrace = this.trace;
@@ -37,7 +37,8 @@ const {
37
37
  const CRT = 'clearResourceTimings';
38
38
  class Instrument extends _instrumentBase.InstrumentBase {
39
39
  static featureName = FEATURE_NAME;
40
- constructor(agentIdentifier, aggregator, auto = true) {
40
+ constructor(agentIdentifier, aggregator) {
41
+ let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
41
42
  super(agentIdentifier, aggregator, FEATURE_NAME, auto);
42
43
  if (!_globalScope.isBrowserScope) return; // session traces not supported outside web env
43
44
 
@@ -32,7 +32,8 @@ const {
32
32
  } = CONSTANTS;
33
33
  class Instrument extends _instrumentBase.InstrumentBase {
34
34
  static featureName = FEATURE_NAME;
35
- constructor(agentIdentifier, aggregator, auto = true) {
35
+ constructor(agentIdentifier, aggregator) {
36
+ let auto = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
36
37
  super(agentIdentifier, aggregator, FEATURE_NAME, auto);
37
38
  if (!_globalScope.isBrowserScope) return; // SPA not supported outside web env
38
39
 
@@ -10,7 +10,11 @@ var _load = require("../../common/window/load");
10
10
  var _globalScope = require("../../common/util/global-scope");
11
11
  var _console = require("../../common/util/console");
12
12
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /**
14
+ * @file Defines `InstrumentBase` to be used as the super of the Instrument classes implemented by each feature.
15
+ * Inherits and executes the `checkConfiguration` method from [FeatureBase]{@link ./feature-base}, which also
16
+ * exposes the `blocked` property.
17
+ */
14
18
  /**
15
19
  * Base class for instrumenting a feature.
16
20
  * @extends FeatureBase
@@ -25,7 +29,8 @@ class InstrumentBase extends _featureBase.FeatureBase {
25
29
  * of its pooled instrumentation data handled by the agent's centralized drain functionality, rather than draining
26
30
  * immediately. Primarily useful for fine-grained control in tests.
27
31
  */
28
- constructor(agentIdentifier, aggregator, featureName, auto = true) {
32
+ constructor(agentIdentifier, aggregator, featureName) {
33
+ let auto = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
29
34
  super(agentIdentifier, aggregator, featureName);
30
35
  this.hasAggregator = false;
31
36
  this.auto = auto;
@@ -56,7 +61,7 @@ class InstrumentBase extends _featureBase.FeatureBase {
56
61
  } = await lazyLoader(this.featureName, 'aggregate');
57
62
  new Aggregate(this.agentIdentifier, this.aggregator);
58
63
  } catch (e) {
59
- (0, _console.warn)(`Downloading ${this.featureName} failed...`);
64
+ (0, _console.warn)("Downloading ".concat(this.featureName, " failed..."));
60
65
  this.abortHandler?.(); // undo any important alterations made to the page
61
66
 
62
67
  // not supported yet but nice to do: "abort" this agent's EE for this feature specifically
@@ -38,7 +38,7 @@ function lazyLoader(featureName, featurePart) {
38
38
  case _features.FEATURE_NAMES.spa:
39
39
  return Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "spa-aggregate" */'../spa/aggregate')));
40
40
  default:
41
- throw new Error(`Attempted to load unsupported agent feature: ${featureName} ${featurePart}`);
41
+ throw new Error("Attempted to load unsupported agent feature: ".concat(featureName, " ").concat(featurePart));
42
42
  }
43
43
  }
44
44
  }
package/dist/cjs/index.js CHANGED
@@ -3,22 +3,22 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "Ajax", {
6
+ Object.defineProperty(exports, "Agent", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _ajax.Ajax;
9
+ return _agent.Agent;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "BrowserAgent", {
12
+ Object.defineProperty(exports, "Ajax", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _browserAgent.BrowserAgent;
15
+ return _ajax.Ajax;
16
16
  }
17
17
  });
18
- Object.defineProperty(exports, "CustomAgent", {
18
+ Object.defineProperty(exports, "BrowserAgent", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _customAgent.CustomAgent;
21
+ return _browserAgent.BrowserAgent;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "JSErrors", {
@@ -69,9 +69,9 @@ Object.defineProperty(exports, "WorkerAgent", {
69
69
  return _workerAgent.WorkerAgent;
70
70
  }
71
71
  });
72
- var _customAgent = require("./custom-agent");
73
- var _browserAgent = require("./browser-agent");
74
- var _workerAgent = require("./worker-agent");
72
+ var _agent = require("./loaders/agent");
73
+ var _browserAgent = require("./loaders/browser-agent");
74
+ var _workerAgent = require("./loaders/worker-agent");
75
75
  var _ajax = require("./features/ajax");
76
76
  var _jserrors = require("./features/jserrors");
77
77
  var _metrics = require("./features/metrics");
@@ -26,7 +26,8 @@ var _stringify = require("../common/util/stringify");
26
26
  * sensitive to network load, this may result in smaller builds with slightly lower performance impact.
27
27
  */
28
28
  class Agent {
29
- constructor(options, agentIdentifier = (0, _uniqueId.generateRandomHexString)(16)) {
29
+ constructor(options) {
30
+ let agentIdentifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _uniqueId.generateRandomHexString)(16);
30
31
  this.agentIdentifier = agentIdentifier;
31
32
  this.sharedAggregator = new _aggregator.Aggregator({
32
33
  agentIdentifier: this.agentIdentifier
@@ -61,7 +62,7 @@ class Agent {
61
62
  if (enabledFeatures[f.featureName] || f.featureName === _features.FEATURE_NAMES.pageViewEvent) {
62
63
  const dependencies = (0, _featureDependencies.getFeatureDependencyNames)(f.featureName);
63
64
  const hasAllDeps = dependencies.every(x => enabledFeatures[x]);
64
- if (!hasAllDeps) (0, _console.warn)(`${f.featureName} is enabled but one or more dependent features has been disabled (${(0, _stringify.stringify)(dependencies)}). This may cause unintended consequences or missing data...`);
65
+ if (!hasAllDeps) (0, _console.warn)("".concat(f.featureName, " is enabled but one or more dependent features has been disabled (").concat((0, _stringify.stringify)(dependencies), "). This may cause unintended consequences or missing data..."));
65
66
  this.features[f.featureName] = new f(this.agentIdentifier, this.sharedAggregator);
66
67
  }
67
68
  });