@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
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.CUSTOM_ATTR_GROUP = void 0;
6
7
  exports.setAPI = setAPI;
7
- var _lodash = _interopRequireDefault(require("lodash._slice"));
8
+ exports.setTopLevelCallers = setTopLevelCallers;
8
9
  var _features = require("../features/features");
9
10
  var _config = require("../../common/config/config");
10
11
  var _handle = require("../../common/event-emitter/handle");
11
- var _mapOwn = require("../../common/util/map-own");
12
12
  var _contextualEe = require("../../common/event-emitter/contextual-ee");
13
13
  var _now = require("../../common/timing/now");
14
14
  var _drain = require("../../common/drain/drain");
@@ -16,9 +16,39 @@ var _load = require("../../common/window/load");
16
16
  var _globalScope = require("../../common/util/global-scope");
17
17
  var _console = require("../../common/util/console");
18
18
  var _constants = require("../../features/metrics/constants");
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ var _nreum = require("../../common/window/nreum");
20
+ var _sessionStorage = require("../../common/window/session-storage");
20
21
  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); }
21
- 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; }
22
+ 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; } /*
23
+ * Copyright 2020 New Relic Corporation. All rights reserved.
24
+ * SPDX-License-Identifier: Apache-2.0
25
+ */
26
+ const CUSTOM_ATTR_GROUP = 'CUSTOM/'; // the subgroup items should be stored under in storage API
27
+ exports.CUSTOM_ATTR_GROUP = CUSTOM_ATTR_GROUP;
28
+ function setTopLevelCallers() {
29
+ const nr = (0, _nreum.gosCDN)();
30
+ const funcs = ['setErrorHandler', 'finished', 'addToTrace', 'inlineHit', 'addRelease', 'addPageAction', 'setCurrentRouteName', 'setPageViewName', 'setCustomAttribute', 'interaction', 'noticeError', 'setUserId'];
31
+ funcs.forEach(f => {
32
+ nr[f] = function () {
33
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
34
+ args[_key] = arguments[_key];
35
+ }
36
+ return caller(f, ...args);
37
+ };
38
+ });
39
+ function caller(fnName) {
40
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
41
+ args[_key2 - 1] = arguments[_key2];
42
+ }
43
+ let returnVals = [];
44
+ Object.values(nr.initializedAgents).forEach(val => {
45
+ if (val.exposed && val.api[fnName]) {
46
+ returnVals.push(val.api[fnName](...args));
47
+ }
48
+ });
49
+ return returnVals.length > 1 ? returnVals : returnVals[0];
50
+ }
51
+ }
22
52
  function setAPI(agentIdentifier, forceDrain) {
23
53
  if (!forceDrain) (0, _drain.registerDrain)(agentIdentifier, 'api');
24
54
  const apiInterface = {};
@@ -29,27 +59,64 @@ function setAPI(agentIdentifier, forceDrain) {
29
59
  var spaPrefix = prefix + 'ixn-';
30
60
 
31
61
  // Setup stub functions that queue calls for later processing.
32
- (0, _mapOwn.mapOwn)(asyncApiFns, function (num, fnName) {
33
- apiInterface[fnName] = apiCall(prefix, fnName, true, 'api');
34
- });
62
+ asyncApiFns.forEach(fnName => apiInterface[fnName] = apiCall(prefix, fnName, true, 'api'));
35
63
  apiInterface.addPageAction = apiCall(prefix, 'addPageAction', true, _features.FEATURE_NAMES.pageAction);
36
64
  apiInterface.setCurrentRouteName = apiCall(prefix, 'routeName', true, _features.FEATURE_NAMES.spa);
37
65
  apiInterface.setPageViewName = function (name, host) {
38
66
  if (typeof name !== 'string') return;
39
67
  if (name.charAt(0) !== '/') name = '/' + name;
40
68
  (0, _config.getRuntime)(agentIdentifier).customTransaction = (host || 'http://custom.transaction') + name;
41
- return apiCall(prefix, 'setPageViewName', true, 'api')();
69
+ return apiCall(prefix, 'setPageViewName', true)();
42
70
  };
43
- apiInterface.setCustomAttribute = function (name, value) {
71
+
72
+ /**
73
+ * Attach the key-value attribute onto agent payloads. All browser events in NR will be affected.
74
+ * @param {string} key
75
+ * @param {string|number|null} value - null indicates the key should be removed or erased
76
+ * @param {string} apiName
77
+ * @param {boolean} addToBrowserStorage - whether this attribute should be stored in browser storage API and retrieved by the next agent context or initialization
78
+ * @returns @see apiCall
79
+ */
80
+ function appendJsAttribute(key, value, apiName, addToBrowserStorage) {
44
81
  const currentInfo = (0, _config.getInfo)(agentIdentifier);
45
- (0, _config.setInfo)(agentIdentifier, {
46
- ...currentInfo,
47
- jsAttributes: {
48
- ...currentInfo.jsAttributes,
49
- [name]: value
50
- }
51
- });
52
- return apiCall(prefix, 'setCustomAttribute', true, 'api')();
82
+ if (value === null) {
83
+ delete currentInfo.jsAttributes[key];
84
+ if (_globalScope.isBrowserScope) (0, _sessionStorage.removeFromBrowserStorage)(key, CUSTOM_ATTR_GROUP); // addToBrowserStorage flag isn't needed to unset keys from storage
85
+ } else {
86
+ (0, _config.setInfo)(agentIdentifier, {
87
+ ...currentInfo,
88
+ jsAttributes: {
89
+ ...currentInfo.jsAttributes,
90
+ [key]: value
91
+ }
92
+ });
93
+ if (_globalScope.isBrowserScope && addToBrowserStorage) (0, _sessionStorage.putInBrowserStorage)(key, value, CUSTOM_ATTR_GROUP);
94
+ }
95
+ return apiCall(prefix, apiName, true)();
96
+ }
97
+ apiInterface.setCustomAttribute = function (name, value) {
98
+ let persistAttribute = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
99
+ if (typeof name !== 'string') {
100
+ (0, _console.warn)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of <".concat(typeof name, "> was provided."));
101
+ return;
102
+ }
103
+ if (!(['string', 'number'].includes(typeof value) || value === null)) {
104
+ (0, _console.warn)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of <".concat(typeof value, "> was provided."));
105
+ return;
106
+ }
107
+ return appendJsAttribute(name, value, 'setCustomAttribute', persistAttribute);
108
+ };
109
+ /**
110
+ * Attach the 'enduser.id' attribute onto agent payloads. This may be used in NR queries to group all browser events by specific users.
111
+ * @param {string} value - unique user identifier; a null user id suggests none should exist
112
+ * @returns @see apiCall
113
+ */
114
+ apiInterface.setUserId = function (value) {
115
+ if (!(typeof value === 'string' || value === null)) {
116
+ (0, _console.warn)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of <".concat(typeof value, "> was provided."));
117
+ return;
118
+ }
119
+ return appendJsAttribute('enduser.id', value, 'setUserId', true);
53
120
  };
54
121
  apiInterface.interaction = function () {
55
122
  return new InteractionHandle().get();
@@ -77,13 +144,13 @@ function setAPI(agentIdentifier, forceDrain) {
77
144
  };
78
145
  }
79
146
  };
80
- (0, _mapOwn.mapOwn)('actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get'.split(','), function addApi(n, name) {
147
+ void ['actionText', 'setName', 'setAttribute', 'save', 'ignore', 'onEnd', 'getContext', 'end', 'get'].forEach(name => {
81
148
  InteractionApiProto[name] = apiCall(spaPrefix, name, undefined, _features.FEATURE_NAMES.spa);
82
149
  });
83
150
  function apiCall(prefix, name, notSpa, bufferGroup) {
84
151
  return function () {
85
152
  (0, _handle.handle)(_constants.SUPPORTABILITY_METRIC_CHANNEL, ['API/' + name + '/called'], undefined, _features.FEATURE_NAMES.metrics, instanceEE);
86
- (0, _handle.handle)(prefix + name, [(0, _now.now)()].concat((0, _lodash.default)(arguments)), notSpa ? null : this, bufferGroup, instanceEE);
153
+ if (bufferGroup) (0, _handle.handle)(prefix + name, [(0, _now.now)(), ...arguments], notSpa ? null : this, bufferGroup, instanceEE); // no bufferGroup means only the SM is emitted
87
154
  return notSpa ? void 0 : this;
88
155
  };
89
156
  }
@@ -98,9 +165,10 @@ function setAPI(agentIdentifier, forceDrain) {
98
165
  // try to stay out of the way of the window.load event, lazy load once that has finished.
99
166
  else (0, _load.onWindowLoad)(() => lazyLoad(), true);
100
167
  function lazyLoad() {
101
- Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "async-api" */'./apiAsync'))).then(({
102
- setAPI
103
- }) => {
168
+ Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "async-api" */'./apiAsync'))).then(_ref => {
169
+ let {
170
+ setAPI
171
+ } = _ref;
104
172
  setAPI(agentIdentifier);
105
173
  (0, _drain.drain)(agentIdentifier, 'api');
106
174
  }).catch(() => (0, _console.warn)('Downloading runtime APIs failed...'));
@@ -9,7 +9,6 @@ var _config = require("../../common/config/config");
9
9
  var _contextualEe = require("../../common/event-emitter/contextual-ee");
10
10
  var _handle = require("../../common/event-emitter/handle");
11
11
  var _registerHandler = require("../../common/event-emitter/register-handler");
12
- var _mapOwn = require("../../common/util/map-own");
13
12
  var _single = require("../../common/util/single");
14
13
  var _submitData = require("../../common/util/submit-data");
15
14
  var _globalScope = require("../../common/util/global-scope");
@@ -27,8 +26,9 @@ function setAPI(agentIdentifier) {
27
26
  };
28
27
 
29
28
  // Hook all of the api functions up to the queues/stubs created in loader/api.js
30
- (0, _mapOwn.mapOwn)(api, function (fnName, fn) {
31
- (0, _registerHandler.registerHandler)('api-' + fnName, fn, 'api', instanceEE);
29
+ Object.entries(api).forEach(_ref => {
30
+ let [fnName, fnCall] = _ref;
31
+ return (0, _registerHandler.registerHandler)('api-' + fnName, fnCall, 'api', instanceEE);
32
32
  });
33
33
 
34
34
  // All API functions get passed the time they were called as their
@@ -9,8 +9,11 @@ var _nreum = require("../../common/window/nreum");
9
9
  var _config = require("../../common/config/config");
10
10
  var _featureFlags = require("../../common/util/feature-flags");
11
11
  var _globalScope = require("../../common/util/global-scope");
12
- var _topLevelCallers = require("../../common/window/top-level-callers");
13
- function configure(agentIdentifier, opts = {}, loaderType, forceDrain) {
12
+ var _sessionStorage = require("../../common/window/session-storage");
13
+ function configure(agentIdentifier) {
14
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
15
+ let loaderType = arguments.length > 2 ? arguments[2] : undefined;
16
+ let forceDrain = arguments.length > 3 ? arguments[3] : undefined;
14
17
  let {
15
18
  init,
16
19
  info,
@@ -26,18 +29,21 @@ function configure(agentIdentifier, opts = {}, loaderType, forceDrain) {
26
29
  info = nr.info;
27
30
  loader_config = nr.loader_config;
28
31
  }
32
+ info.jsAttributes ??= {};
29
33
  if (_globalScope.isWorkerScope) {
30
34
  // add a default attr to all worker payloads
31
- info.jsAttributes = {
32
- ...info.jsAttributes,
33
- isWorker: true
34
- };
35
+ info.jsAttributes.isWorker = true;
36
+ }
37
+ if (_globalScope.isBrowserScope) {
38
+ // retrieve & re-add all of the persisted setCustomAttribute|setUserId k-v from previous page load(s)
39
+ let prevPageSessionJsAttrs = (0, _sessionStorage.getAllStorageItemsOfGroup)(_api.CUSTOM_ATTR_GROUP);
40
+ Object.assign(info.jsAttributes, prevPageSessionJsAttrs);
35
41
  }
36
42
  (0, _config.setInfo)(agentIdentifier, info);
37
43
  (0, _config.setConfiguration)(agentIdentifier, init || {});
38
44
  (0, _config.setLoaderConfig)(agentIdentifier, loader_config || {});
39
45
  (0, _config.setRuntime)(agentIdentifier, runtime);
40
- (0, _topLevelCallers.setTopLevelCallers)();
46
+ (0, _api.setTopLevelCallers)();
41
47
  const api = (0, _api.setAPI)(agentIdentifier, forceDrain);
42
48
  (0, _nreum.gosNREUMInitializedAgents)(agentIdentifier, api, 'api');
43
49
  (0, _nreum.gosNREUMInitializedAgents)(agentIdentifier, exposed, 'exposed');
@@ -8,7 +8,7 @@ var _features = require("./features");
8
8
  var _config = require("../../common/config/config");
9
9
  const featureNames = Object.values(_features.FEATURE_NAMES);
10
10
  function isEnabled(name, agentIdentifier) {
11
- return (0, _config.getConfigurationValue)(agentIdentifier, `${name}.enabled`) !== false;
11
+ return (0, _config.getConfigurationValue)(agentIdentifier, "".concat(name, ".enabled")) !== false;
12
12
  }
13
13
  function getEnabledFeatures(agentIdentifier) {
14
14
  const enabledFeatures = {};
@@ -13,7 +13,8 @@ var _config = require("../common/config/config");
13
13
  var _features = require("./features/features");
14
14
  var _console = require("../common/util/console");
15
15
  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); }
16
- 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; }
16
+ 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; } // loader files
17
+ // core files
17
18
  const nonAutoFeatures = [_features.FEATURE_NAMES.jserrors, _features.FEATURE_NAMES.pageAction];
18
19
  const autoFeatures = [_features.FEATURE_NAMES.metrics];
19
20
 
@@ -28,7 +29,8 @@ class MicroAgent {
28
29
  * @param {Object} options - Specifies features and runtime configuration,
29
30
  * @param {string=} agentIdentifier - The optional unique ID of the agent.
30
31
  */
31
- constructor(options, agentIdentifier = (0, _uniqueId.generateRandomHexString)(16)) {
32
+ constructor(options) {
33
+ let agentIdentifier = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _uniqueId.generateRandomHexString)(16);
32
34
  this.agentIdentifier = agentIdentifier;
33
35
  this.sharedAggregator = new _aggregator.Aggregator({
34
36
  agentIdentifier: this.agentIdentifier
@@ -56,13 +58,15 @@ class MicroAgent {
56
58
  autoFeatures.forEach(f => {
57
59
  if (enabledFeatures[f]) {
58
60
  // TODO - THIS does not work, the instrument switch in lazy loader increases the size of the worker build. Needs to be revisited
59
- Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "lazy-loader" */'../features/utils/lazy-loader'))).then(({
60
- lazyLoader
61
- }) => {
61
+ Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "lazy-loader" */'../features/utils/lazy-loader'))).then(_ref => {
62
+ let {
63
+ lazyLoader
64
+ } = _ref;
62
65
  return lazyLoader(f, 'instrument');
63
- }).then(({
64
- Instrument
65
- }) => {
66
+ }).then(_ref2 => {
67
+ let {
68
+ Instrument
69
+ } = _ref2;
66
70
  this.features[f] = new Instrument(this.agentIdentifier, this.sharedAggregator);
67
71
  }).catch(err => (0, _console.warn)('Something prevented the agent from being downloaded.'));
68
72
  }
@@ -71,13 +75,15 @@ class MicroAgent {
71
75
  if (enabledFeatures[f]) {
72
76
  // TODO - THIS does not work, the instrument switch in lazy loader increases the size of the worker build. Needs to be revisited
73
77
  // Parts of the lazy-loader were removed because webpack was transpiling them into the worker build, errantly inflating the build size.
74
- Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "lazy-loader" */'../features/utils/lazy-loader'))).then(({
75
- lazyLoader
76
- }) => {
78
+ Promise.resolve().then(() => _interopRequireWildcard(require( /* webpackChunkName: "lazy-loader" */'../features/utils/lazy-loader'))).then(_ref3 => {
79
+ let {
80
+ lazyLoader
81
+ } = _ref3;
77
82
  return lazyLoader(f, 'aggregate');
78
- }).then(({
79
- Aggregate
80
- }) => {
83
+ }).then(_ref4 => {
84
+ let {
85
+ Aggregate
86
+ } = _ref4;
81
87
  this.features[f] = new Aggregate(this.agentIdentifier, this.sharedAggregator);
82
88
  }).catch(err => (0, _console.warn)('Something prevented the agent from being downloaded.'));
83
89
  }
@@ -4,7 +4,8 @@ export const isiOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
4
4
 
5
5
  // Shared Web Workers introduced in iOS 16.0+ and n/a in 15.6-
6
6
  export const iOS_below16 = isiOS && Boolean(typeof SharedWorker === 'undefined');
7
- /* ^ It was discovered in Safari 14 (https://bugs.webkit.org/show_bug.cgi?id=225305) that the buffered flag in PerformanceObserver
8
- did not work. This affects our onFCP metric in particular since web-vitals uses that flag to retrieve paint timing entries.
9
- This was fixed in v16+.
7
+ /*
8
+ ^ It was discovered in Safari 14 (https://bugs.webkit.org/show_bug.cgi?id=225305) that the buffered flag in PerformanceObserver
9
+ did not work. This affects our onFCP metric in particular since web-vitals uses that flag to retrieve paint timing entries.
10
+ This was fixed in v16+.
10
11
  */
@@ -6,12 +6,13 @@ export class Configurable {
6
6
  if (!obj || typeof obj !== 'object') return warn('New setting a Configurable requires an object as input');
7
7
  if (!model || typeof model !== 'object') return warn('Setting a Configurable requires a model to set its initial properties');
8
8
  Object.assign(this, model);
9
- Object.entries(obj).forEach(([key, value]) => {
9
+ Object.entries(obj).forEach(_ref => {
10
+ let [key, value] = _ref;
10
11
  const frozenAttrs = getFrozenAttributes(key);
11
12
  if (frozenAttrs.length && value && typeof value === 'object') {
12
13
  frozenAttrs.forEach(attr => {
13
14
  if (attr in value) {
14
- warn(`"${attr}" is a protected attribute and can not be changed in feature ${key}. It will have no effect.`);
15
+ warn("\"".concat(attr, "\" is a protected attribute and can not be changed in feature ").concat(key, ". It will have no effect."));
15
16
  delete value[attr];
16
17
  }
17
18
  });
@@ -32,7 +32,7 @@ export function isValid(id) {
32
32
  }
33
33
  export function getInfo(id) {
34
34
  if (!id) throw new Error('All info objects require an agent identifier!');
35
- if (!_cache[id]) throw new Error(`Info for ${id} was never set`);
35
+ if (!_cache[id]) throw new Error("Info for ".concat(id, " was never set"));
36
36
  return _cache[id];
37
37
  }
38
38
  export function setInfo(id, obj) {
@@ -52,7 +52,7 @@ const model = {
52
52
  const _cache = {};
53
53
  export function getConfiguration(id) {
54
54
  if (!id) throw new Error('All configuration objects require an agent identifier!');
55
- if (!_cache[id]) throw new Error(`Configuration for ${id} was never set`);
55
+ if (!_cache[id]) throw new Error("Configuration for ".concat(id, " was never set"));
56
56
  return _cache[id];
57
57
  }
58
58
  export function setConfiguration(id, obj) {
@@ -11,7 +11,7 @@ const model = {
11
11
  const _cache = {};
12
12
  export function getLoaderConfig(id) {
13
13
  if (!id) throw new Error('All loader-config objects require an agent identifier!');
14
- if (!_cache[id]) throw new Error(`LoaderConfig for ${id} was never set`);
14
+ if (!_cache[id]) throw new Error("LoaderConfig for ".concat(id, " was never set"));
15
15
  return _cache[id];
16
16
  }
17
17
  export function setLoaderConfig(id, obj) {
@@ -4,10 +4,11 @@ import { gosNREUMInitializedAgents } from '../../window/nreum';
4
4
  import { getCurrentSessionIdOrMakeNew } from '../../window/session-storage';
5
5
  import { getConfigurationValue } from '../config';
6
6
  import { globalScope } from '../../util/global-scope';
7
- import { BUILD_ENV, DIST_METHOD, VERSION } from '../../constants/environment-variables';
7
+ import { BUILD_ENV, DIST_METHOD, VERSION } from "../../constants/env.npm";
8
8
  const model = agentId => {
9
9
  return {
10
10
  buildEnv: BUILD_ENV,
11
+ bytesSent: {},
11
12
  customTransaction: undefined,
12
13
  disabled: false,
13
14
  distMethod: DIST_METHOD,
@@ -31,7 +32,7 @@ const model = agentId => {
31
32
  const _cache = {};
32
33
  export function getRuntime(id) {
33
34
  if (!id) throw new Error('All runtime objects require an agent identifier!');
34
- if (!_cache[id]) throw new Error(`Runtime for ${id} was never set`);
35
+ if (!_cache[id]) throw new Error("Runtime for ".concat(id, " was never set"));
35
36
  return _cache[id];
36
37
  }
37
38
  export function setRuntime(id, obj) {
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file This file exposes CDN build environment variables. These variables will
3
+ * be overridden with babel.
4
+ */
5
+
6
+ /**
7
+ * Exposes the version of the agent
8
+ */
9
+ export const VERSION = "1.231.0";
10
+
11
+ /**
12
+ * Exposes the build type of the agent
13
+ * Valid values are LOCAL, PROD, DEV
14
+ */
15
+ export const BUILD_ENV = undefined;
16
+
17
+ /**
18
+ * Exposes the distribution method of the agent
19
+ */
20
+ export const DIST_METHOD = 'CDN';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file This file exposes build time environment variables that will be included in the
3
+ * build output of the agent. This file specifically contains the normal environment variables
4
+ * for the NPM agent build and will be overridden by webpack/babel during the build based on the
5
+ * type of build being performed.
6
+ */
7
+
8
+ import pkgJSON from '../../../package.json';
9
+
10
+ /**
11
+ * Exposes the version of the agent
12
+ */
13
+ export const VERSION = pkgJSON.version;
14
+
15
+ /**
16
+ * Exposes the build type of the agent
17
+ */
18
+ export const BUILD_ENV = 'NPM';
19
+
20
+ /**
21
+ * Exposes the distribution method of the agent
22
+ */
23
+ export const DIST_METHOD = 'NPM';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file This file exposes NPM build environment variables. These variables will
3
+ * be overridden with babel.
4
+ */
5
+
6
+ /**
7
+ * Exposes the version of the agent
8
+ */
9
+ export const VERSION = "1.231.0";
10
+
11
+ /**
12
+ * Exposes the build type of the agent
13
+ * Valid values are LOCAL, PROD, DEV
14
+ */
15
+ export const BUILD_ENV = 'NPM';
16
+
17
+ /**
18
+ * Exposes the distribution method of the agent
19
+ * Valid valuse are CDN, NPM
20
+ */
21
+ export const DIST_METHOD = 'NPM';
@@ -8,7 +8,8 @@ export class SharedContext {
8
8
  if (typeof context !== 'object') return warn('shared context requires an object as input');
9
9
  this.sharedContext = {};
10
10
  Object.assign(this.sharedContext, model);
11
- Object.entries(context).forEach(([key, value]) => {
11
+ Object.entries(context).forEach(_ref => {
12
+ let [key, value] = _ref;
12
13
  if (Object.keys(model).includes(key)) this.sharedContext[key] = value;
13
14
  });
14
15
  } catch (err) {
@@ -44,7 +44,9 @@ function curateRegistry(agentIdentifier) {
44
44
  * @param {string} agentIdentifier - A unique 16 character ID corresponding to an instantiated agent.
45
45
  * @param {string} featureName - A named group into which the feature's buffered events are bucketed.
46
46
  */
47
- export function drain(agentIdentifier = '', featureName = 'feature') {
47
+ export function drain() {
48
+ let agentIdentifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
49
+ let featureName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'feature';
48
50
  curateRegistry(agentIdentifier);
49
51
 
50
52
  // If the feature for the specified agent is not in the registry, that means the instrument file was bypassed.
@@ -58,9 +60,13 @@ export function drain(agentIdentifier = '', featureName = 'feature') {
58
60
  // Only when the event-groups for all features are ready to drain (staged) do we execute the drain. This has the effect
59
61
  // that the last feature to call drain triggers drain for all features.
60
62
  const items = Array.from(registry[agentIdentifier]);
61
- if (items.every(([key, values]) => values.staged)) {
63
+ if (items.every(_ref => {
64
+ let [key, values] = _ref;
65
+ return values.staged;
66
+ })) {
62
67
  items.sort((a, b) => a[1].priority - b[1].priority);
63
- items.forEach(([group]) => {
68
+ items.forEach(_ref2 => {
69
+ let [group] = _ref2;
64
70
  drainGroup(group);
65
71
  });
66
72
  }