@newrelic/browser-agent 1.235.0 → 1.236.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/README.md +41 -1
  2. package/dist/cjs/common/config/state/init.js +3 -0
  3. package/dist/cjs/common/config/state/runtime.js +4 -4
  4. package/dist/cjs/common/constants/env.cdn.js +2 -2
  5. package/dist/cjs/common/constants/env.npm.js +1 -1
  6. package/dist/cjs/common/constants/runtime.js +52 -0
  7. package/dist/cjs/common/event-listener/event-listener-opts.js +3 -3
  8. package/dist/cjs/common/harvest/harvest-scheduler.js +22 -19
  9. package/dist/cjs/common/harvest/harvest.js +163 -144
  10. package/dist/cjs/common/harvest/types.js +54 -0
  11. package/dist/cjs/common/ids/id.js +2 -2
  12. package/dist/cjs/common/ids/unique-id.js +3 -3
  13. package/dist/cjs/common/session/session-entity.js +2 -2
  14. package/dist/cjs/common/timer/interaction-timer.js +2 -2
  15. package/dist/cjs/common/unload/eol.js +10 -11
  16. package/dist/cjs/common/url/canonicalize-url.js +2 -2
  17. package/dist/cjs/common/url/parse-url.js +3 -3
  18. package/dist/cjs/common/url/protocol.js +2 -2
  19. package/dist/cjs/common/util/submit-data.js +58 -76
  20. package/dist/cjs/common/window/nreum.js +14 -14
  21. package/dist/cjs/common/wrap/wrap-events.js +3 -3
  22. package/dist/cjs/common/wrap/wrap-fetch.js +5 -5
  23. package/dist/cjs/common/wrap/wrap-history.js +2 -2
  24. package/dist/cjs/common/wrap/wrap-jsonp.js +2 -2
  25. package/dist/cjs/common/wrap/wrap-mutation.js +2 -2
  26. package/dist/cjs/common/wrap/wrap-promise.js +2 -2
  27. package/dist/cjs/common/wrap/wrap-raf.js +2 -2
  28. package/dist/cjs/common/wrap/wrap-timer.js +4 -4
  29. package/dist/cjs/common/wrap/wrap-xhr.js +3 -3
  30. package/dist/cjs/features/ajax/aggregate/index.js +1 -1
  31. package/dist/cjs/features/ajax/instrument/distributed-tracing.js +2 -2
  32. package/dist/cjs/features/ajax/instrument/index.js +6 -7
  33. package/dist/cjs/features/jserrors/aggregate/index.js +7 -4
  34. package/dist/cjs/features/jserrors/instrument/index.js +4 -4
  35. package/dist/cjs/features/metrics/aggregate/framework-detection.js +2 -2
  36. package/dist/cjs/features/metrics/aggregate/index.js +3 -3
  37. package/dist/cjs/features/page_action/aggregate/index.js +3 -3
  38. package/dist/cjs/features/page_view_event/aggregate/index.js +10 -11
  39. package/dist/cjs/features/page_view_event/instrument/index.js +2 -2
  40. package/dist/cjs/features/page_view_timing/aggregate/index.js +3 -5
  41. package/dist/cjs/features/page_view_timing/instrument/index.js +2 -2
  42. package/dist/cjs/features/session_replay/replay-mode.js +2 -2
  43. package/dist/cjs/features/session_trace/instrument/index.js +2 -2
  44. package/dist/cjs/features/spa/aggregate/index.js +1 -1
  45. package/dist/cjs/features/spa/instrument/index.js +2 -2
  46. package/dist/cjs/features/utils/instrument-base.js +6 -7
  47. package/dist/cjs/index.js +7 -0
  48. package/dist/cjs/loaders/agent.js +7 -0
  49. package/dist/cjs/loaders/api/api.js +2 -2
  50. package/dist/cjs/loaders/api/apiAsync.js +6 -4
  51. package/dist/cjs/loaders/configure/configure.js +2 -2
  52. package/dist/cjs/loaders/micro-agent.js +29 -38
  53. package/dist/esm/common/config/state/init.js +3 -0
  54. package/dist/esm/common/config/state/runtime.js +1 -1
  55. package/dist/esm/common/constants/env.cdn.js +2 -2
  56. package/dist/esm/common/constants/env.npm.js +1 -1
  57. package/dist/esm/common/constants/runtime.js +38 -0
  58. package/dist/esm/common/event-listener/event-listener-opts.js +1 -1
  59. package/dist/esm/common/harvest/harvest-scheduler.js +21 -20
  60. package/dist/esm/common/harvest/harvest.js +160 -142
  61. package/dist/esm/common/harvest/types.js +47 -0
  62. package/dist/esm/common/ids/id.js +1 -1
  63. package/dist/esm/common/ids/unique-id.js +1 -1
  64. package/dist/esm/common/session/session-entity.js +1 -1
  65. package/dist/esm/common/timer/interaction-timer.js +1 -1
  66. package/dist/esm/common/unload/eol.js +1 -2
  67. package/dist/esm/common/url/canonicalize-url.js +1 -1
  68. package/dist/esm/common/url/parse-url.js +1 -1
  69. package/dist/esm/common/url/protocol.js +1 -1
  70. package/dist/esm/common/util/submit-data.js +55 -73
  71. package/dist/esm/common/window/nreum.js +1 -1
  72. package/dist/esm/common/wrap/wrap-events.js +1 -1
  73. package/dist/esm/common/wrap/wrap-fetch.js +1 -1
  74. package/dist/esm/common/wrap/wrap-history.js +1 -1
  75. package/dist/esm/common/wrap/wrap-jsonp.js +1 -1
  76. package/dist/esm/common/wrap/wrap-mutation.js +1 -1
  77. package/dist/esm/common/wrap/wrap-promise.js +1 -1
  78. package/dist/esm/common/wrap/wrap-raf.js +1 -1
  79. package/dist/esm/common/wrap/wrap-timer.js +1 -1
  80. package/dist/esm/common/wrap/wrap-xhr.js +1 -1
  81. package/dist/esm/features/ajax/aggregate/index.js +1 -1
  82. package/dist/esm/features/ajax/instrument/distributed-tracing.js +1 -1
  83. package/dist/esm/features/ajax/instrument/index.js +1 -2
  84. package/dist/esm/features/jserrors/aggregate/index.js +6 -3
  85. package/dist/esm/features/jserrors/instrument/index.js +1 -1
  86. package/dist/esm/features/metrics/aggregate/framework-detection.js +1 -1
  87. package/dist/esm/features/metrics/aggregate/index.js +1 -1
  88. package/dist/esm/features/page_action/aggregate/index.js +1 -1
  89. package/dist/esm/features/page_view_event/aggregate/index.js +1 -2
  90. package/dist/esm/features/page_view_event/instrument/index.js +1 -1
  91. package/dist/esm/features/page_view_timing/aggregate/index.js +2 -4
  92. package/dist/esm/features/page_view_timing/instrument/index.js +1 -1
  93. package/dist/esm/features/session_replay/replay-mode.js +2 -2
  94. package/dist/esm/features/session_trace/instrument/index.js +1 -1
  95. package/dist/esm/features/spa/aggregate/index.js +1 -1
  96. package/dist/esm/features/spa/instrument/index.js +1 -1
  97. package/dist/esm/features/utils/instrument-base.js +4 -5
  98. package/dist/esm/index.js +1 -4
  99. package/dist/esm/loaders/agent.js +7 -0
  100. package/dist/esm/loaders/api/api.js +1 -1
  101. package/dist/esm/loaders/api/apiAsync.js +3 -3
  102. package/dist/esm/loaders/configure/configure.js +1 -1
  103. package/dist/esm/loaders/micro-agent.js +29 -38
  104. package/dist/types/common/config/state/init.d.ts.map +1 -1
  105. package/dist/types/common/constants/runtime.d.ts +29 -0
  106. package/dist/types/common/constants/runtime.d.ts.map +1 -0
  107. package/dist/types/common/harvest/harvest-scheduler.d.ts +1 -1
  108. package/dist/types/common/harvest/harvest-scheduler.d.ts.map +1 -1
  109. package/dist/types/common/harvest/harvest.d.ts +49 -38
  110. package/dist/types/common/harvest/harvest.d.ts.map +1 -1
  111. package/dist/types/common/harvest/types.d.ts +100 -0
  112. package/dist/types/common/harvest/types.d.ts.map +1 -0
  113. package/dist/types/common/unload/eol.d.ts.map +1 -1
  114. package/dist/types/common/util/submit-data.d.ts +62 -64
  115. package/dist/types/common/util/submit-data.d.ts.map +1 -1
  116. package/dist/types/features/ajax/instrument/index.d.ts.map +1 -1
  117. package/dist/types/features/jserrors/aggregate/index.d.ts +1 -1
  118. package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
  119. package/dist/types/features/jserrors/instrument/index.d.ts +1 -1
  120. package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -1
  121. package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -1
  122. package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -1
  123. package/dist/types/index.d.ts +1 -0
  124. package/dist/types/loaders/agent.d.ts +4 -4
  125. package/dist/types/loaders/agent.d.ts.map +1 -1
  126. package/dist/types/loaders/micro-agent.d.ts +3 -4
  127. package/dist/types/loaders/micro-agent.d.ts.map +1 -1
  128. package/package.json +6 -1
  129. package/src/common/config/__mocks__/config.js +11 -0
  130. package/src/common/config/state/init.js +1 -0
  131. package/src/common/config/state/runtime.js +1 -1
  132. package/src/common/constants/__mocks__/env.js +3 -0
  133. package/src/common/constants/__mocks__/runtime.js +8 -0
  134. package/src/common/constants/env.cdn.test.js +7 -0
  135. package/src/common/constants/env.npm.test.js +7 -0
  136. package/src/common/constants/env.test.js +7 -0
  137. package/src/common/constants/runtime.js +71 -0
  138. package/src/common/constants/runtime.test.js +168 -0
  139. package/src/common/context/__mocks__/shared-context.js +8 -0
  140. package/src/common/event-listener/__mocks__/event-listener-opts.js +7 -0
  141. package/src/common/event-listener/event-listener-opts.js +1 -1
  142. package/src/common/harvest/__mocks__/harvest.js +13 -0
  143. package/src/common/harvest/harvest-scheduler.js +21 -20
  144. package/src/common/harvest/harvest-scheduler.test.js +496 -0
  145. package/src/common/harvest/harvest.js +147 -130
  146. package/src/common/harvest/harvest.test.js +818 -0
  147. package/src/common/harvest/types.js +47 -0
  148. package/src/common/ids/id.js +1 -1
  149. package/src/common/ids/unique-id.js +1 -1
  150. package/src/common/session/__mocks__/session-entity.js +25 -0
  151. package/src/common/session/session-entity.component-test.js +1 -1
  152. package/src/common/session/session-entity.js +1 -1
  153. package/src/common/timer/interaction-timer.js +1 -1
  154. package/src/common/timing/__mocks__/now.js +1 -0
  155. package/src/common/unload/__mocks__/eol.js +1 -0
  156. package/src/common/unload/eol.js +1 -2
  157. package/src/common/url/__mocks__/clean-url.js +1 -0
  158. package/src/common/url/__mocks__/encode.js +7 -0
  159. package/src/common/url/__mocks__/location.js +1 -0
  160. package/src/common/url/canonicalize-url.js +1 -1
  161. package/src/common/url/canonicalize-url.test.js +2 -2
  162. package/src/common/url/parse-url.js +1 -1
  163. package/src/common/url/parse-url.test.js +3 -3
  164. package/src/common/url/protocol.js +1 -1
  165. package/src/common/util/__mocks__/obfuscate.js +10 -0
  166. package/src/common/util/__mocks__/stringify.js +1 -0
  167. package/src/common/util/__mocks__/submit-data.js +6 -0
  168. package/src/common/util/__mocks__/traverse.js +1 -0
  169. package/src/common/util/submit-data.js +39 -53
  170. package/src/common/util/submit-data.test.js +81 -68
  171. package/src/common/window/nreum.js +1 -1
  172. package/src/common/wrap/wrap-events.js +1 -1
  173. package/src/common/wrap/wrap-fetch.js +1 -1
  174. package/src/common/wrap/wrap-history.js +1 -1
  175. package/src/common/wrap/wrap-jsonp.js +1 -1
  176. package/src/common/wrap/wrap-mutation.js +1 -1
  177. package/src/common/wrap/wrap-promise.js +1 -1
  178. package/src/common/wrap/wrap-promise.test.js +2 -2
  179. package/src/common/wrap/wrap-raf.js +1 -1
  180. package/src/common/wrap/wrap-timer.js +1 -1
  181. package/src/common/wrap/wrap-xhr.js +1 -1
  182. package/src/features/ajax/aggregate/index.js +1 -1
  183. package/src/features/ajax/instrument/distributed-tracing.js +1 -1
  184. package/src/features/ajax/instrument/index.js +1 -2
  185. package/src/features/jserrors/aggregate/compute-stack-trace.test.js +1 -1
  186. package/src/features/jserrors/aggregate/index.js +7 -3
  187. package/src/features/jserrors/instrument/index.js +1 -1
  188. package/src/features/metrics/aggregate/framework-detection.js +1 -1
  189. package/src/features/metrics/aggregate/framework-detection.test.js +2 -2
  190. package/src/features/metrics/aggregate/index.js +1 -1
  191. package/src/features/page_action/aggregate/index.js +1 -1
  192. package/src/features/page_view_event/aggregate/index.js +1 -2
  193. package/src/features/page_view_event/instrument/index.js +1 -1
  194. package/src/features/page_view_timing/aggregate/index.js +2 -4
  195. package/src/features/page_view_timing/instrument/index.js +1 -1
  196. package/src/features/session_replay/replay-mode.js +2 -2
  197. package/src/features/session_trace/instrument/index.js +1 -1
  198. package/src/features/spa/aggregate/index.js +1 -1
  199. package/src/features/spa/instrument/index.js +1 -1
  200. package/src/features/utils/agent-session.test.js +2 -2
  201. package/src/features/utils/instrument-base.js +5 -5
  202. package/src/features/utils/instrument-base.test.js +22 -3
  203. package/src/index.js +1 -3
  204. package/src/loaders/agent.js +8 -0
  205. package/src/loaders/api/api.js +1 -1
  206. package/src/loaders/api/apiAsync.js +3 -3
  207. package/src/loaders/configure/configure.js +1 -1
  208. package/src/loaders/micro-agent.js +26 -30
  209. package/dist/cjs/common/browser-version/firefox-version.js +0 -17
  210. package/dist/cjs/common/browser-version/ios-version.js +0 -19
  211. package/dist/cjs/common/event-emitter/contextual-ee.test.js +0 -282
  212. package/dist/cjs/common/event-emitter/handle.test.js +0 -58
  213. package/dist/cjs/common/event-emitter/register-handler.test.js +0 -55
  214. package/dist/cjs/common/harvest/harvest-scheduler.component-test.js +0 -39
  215. package/dist/cjs/common/harvest/harvest.component-test.js +0 -224
  216. package/dist/cjs/common/ids/id.test.js +0 -85
  217. package/dist/cjs/common/ids/unique-id.test.js +0 -49
  218. package/dist/cjs/common/session/session-entity.component-test.js +0 -497
  219. package/dist/cjs/common/storage/local-storage.test.js +0 -14
  220. package/dist/cjs/common/timer/interaction-timer.component-test.js +0 -216
  221. package/dist/cjs/common/timer/timer.test.js +0 -105
  222. package/dist/cjs/common/timing/nav-timing.test.js +0 -192
  223. package/dist/cjs/common/url/canonicalize-url.test.js +0 -38
  224. package/dist/cjs/common/url/clean-url.test.js +0 -9
  225. package/dist/cjs/common/url/encode.component-test.js +0 -74
  226. package/dist/cjs/common/url/location.test.js +0 -13
  227. package/dist/cjs/common/url/parse-url.test.js +0 -111
  228. package/dist/cjs/common/url/protocol.component-test.js +0 -15
  229. package/dist/cjs/common/util/console.test.js +0 -30
  230. package/dist/cjs/common/util/data-size.test.js +0 -64
  231. package/dist/cjs/common/util/feature-flags.test.js +0 -84
  232. package/dist/cjs/common/util/get-or-set.test.js +0 -47
  233. package/dist/cjs/common/util/global-scope.js +0 -27
  234. package/dist/cjs/common/util/global-scope.test.js +0 -72
  235. package/dist/cjs/common/util/invoke.test.js +0 -49
  236. package/dist/cjs/common/util/map-own.test.js +0 -49
  237. package/dist/cjs/common/util/obfuscate.component-test.js +0 -129
  238. package/dist/cjs/common/util/stringify.test.js +0 -48
  239. package/dist/cjs/common/util/submit-data.test.js +0 -245
  240. package/dist/cjs/common/util/traverse.test.js +0 -44
  241. package/dist/cjs/common/wrap/wrap-promise.test.js +0 -119
  242. package/dist/cjs/features/jserrors/aggregate/canonical-function-name.test.js +0 -31
  243. package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.test.js +0 -383
  244. package/dist/cjs/features/jserrors/aggregate/format-stack-trace.test.js +0 -40
  245. package/dist/cjs/features/jserrors/aggregate/string-hash-code.test.js +0 -27
  246. package/dist/cjs/features/metrics/aggregate/framework-detection.test.js +0 -137
  247. package/dist/cjs/features/metrics/aggregate/polyfill-detection.es5.test.js +0 -17
  248. package/dist/cjs/features/metrics/aggregate/polyfill-detection.test.js +0 -165
  249. package/dist/cjs/features/session_replay/aggregate/index.component-test.js +0 -457
  250. package/dist/cjs/features/spa/aggregate/interaction-node.test.js +0 -16
  251. package/dist/cjs/features/utils/agent-session.test.js +0 -211
  252. package/dist/cjs/features/utils/aggregate-base.test.js +0 -110
  253. package/dist/cjs/features/utils/feature-base.test.js +0 -42
  254. package/dist/cjs/features/utils/handler-cache.test.js +0 -53
  255. package/dist/cjs/features/utils/instrument-base.test.js +0 -179
  256. package/dist/cjs/features/utils/lazy-feature-loader.test.js +0 -30
  257. package/dist/esm/common/browser-version/firefox-version.js +0 -10
  258. package/dist/esm/common/browser-version/ios-version.js +0 -11
  259. package/dist/esm/common/event-emitter/contextual-ee.test.js +0 -278
  260. package/dist/esm/common/event-emitter/handle.test.js +0 -54
  261. package/dist/esm/common/event-emitter/register-handler.test.js +0 -51
  262. package/dist/esm/common/harvest/harvest-scheduler.component-test.js +0 -37
  263. package/dist/esm/common/harvest/harvest.component-test.js +0 -222
  264. package/dist/esm/common/ids/id.test.js +0 -81
  265. package/dist/esm/common/ids/unique-id.test.js +0 -44
  266. package/dist/esm/common/session/session-entity.component-test.js +0 -495
  267. package/dist/esm/common/storage/local-storage.test.js +0 -12
  268. package/dist/esm/common/timer/interaction-timer.component-test.js +0 -214
  269. package/dist/esm/common/timer/timer.test.js +0 -103
  270. package/dist/esm/common/timing/nav-timing.test.js +0 -190
  271. package/dist/esm/common/url/canonicalize-url.test.js +0 -34
  272. package/dist/esm/common/url/clean-url.test.js +0 -7
  273. package/dist/esm/common/url/encode.component-test.js +0 -70
  274. package/dist/esm/common/url/location.test.js +0 -11
  275. package/dist/esm/common/url/parse-url.test.js +0 -107
  276. package/dist/esm/common/url/protocol.component-test.js +0 -13
  277. package/dist/esm/common/util/console.test.js +0 -28
  278. package/dist/esm/common/util/data-size.test.js +0 -60
  279. package/dist/esm/common/util/feature-flags.test.js +0 -80
  280. package/dist/esm/common/util/get-or-set.test.js +0 -45
  281. package/dist/esm/common/util/global-scope.js +0 -17
  282. package/dist/esm/common/util/global-scope.test.js +0 -70
  283. package/dist/esm/common/util/invoke.test.js +0 -47
  284. package/dist/esm/common/util/map-own.test.js +0 -47
  285. package/dist/esm/common/util/obfuscate.component-test.js +0 -125
  286. package/dist/esm/common/util/stringify.test.js +0 -46
  287. package/dist/esm/common/util/submit-data.test.js +0 -241
  288. package/dist/esm/common/util/traverse.test.js +0 -42
  289. package/dist/esm/common/wrap/wrap-promise.test.js +0 -115
  290. package/dist/esm/features/jserrors/aggregate/canonical-function-name.test.js +0 -29
  291. package/dist/esm/features/jserrors/aggregate/compute-stack-trace.test.js +0 -379
  292. package/dist/esm/features/jserrors/aggregate/format-stack-trace.test.js +0 -38
  293. package/dist/esm/features/jserrors/aggregate/string-hash-code.test.js +0 -25
  294. package/dist/esm/features/metrics/aggregate/framework-detection.test.js +0 -133
  295. package/dist/esm/features/metrics/aggregate/polyfill-detection.es5.test.js +0 -15
  296. package/dist/esm/features/metrics/aggregate/polyfill-detection.test.js +0 -163
  297. package/dist/esm/features/session_replay/aggregate/index.component-test.js +0 -453
  298. package/dist/esm/features/spa/aggregate/interaction-node.test.js +0 -14
  299. package/dist/esm/features/utils/agent-session.test.js +0 -207
  300. package/dist/esm/features/utils/aggregate-base.test.js +0 -108
  301. package/dist/esm/features/utils/feature-base.test.js +0 -40
  302. package/dist/esm/features/utils/handler-cache.test.js +0 -51
  303. package/dist/esm/features/utils/instrument-base.test.js +0 -175
  304. package/dist/esm/features/utils/lazy-feature-loader.test.js +0 -29
  305. package/dist/types/common/browser-version/firefox-version.d.ts +0 -2
  306. package/dist/types/common/browser-version/firefox-version.d.ts.map +0 -1
  307. package/dist/types/common/browser-version/ios-version.d.ts +0 -3
  308. package/dist/types/common/browser-version/ios-version.d.ts.map +0 -1
  309. package/dist/types/common/harvest/harvest-scheduler.component-test.d.ts +0 -2
  310. package/dist/types/common/harvest/harvest-scheduler.component-test.d.ts.map +0 -1
  311. package/dist/types/common/harvest/harvest.component-test.d.ts +0 -2
  312. package/dist/types/common/harvest/harvest.component-test.d.ts.map +0 -1
  313. package/dist/types/common/session/session-entity.component-test.d.ts +0 -2
  314. package/dist/types/common/session/session-entity.component-test.d.ts.map +0 -1
  315. package/dist/types/common/timer/interaction-timer.component-test.d.ts +0 -2
  316. package/dist/types/common/timer/interaction-timer.component-test.d.ts.map +0 -1
  317. package/dist/types/common/url/encode.component-test.d.ts +0 -2
  318. package/dist/types/common/url/encode.component-test.d.ts.map +0 -1
  319. package/dist/types/common/url/protocol.component-test.d.ts +0 -2
  320. package/dist/types/common/url/protocol.component-test.d.ts.map +0 -1
  321. package/dist/types/common/util/global-scope.d.ts +0 -5
  322. package/dist/types/common/util/global-scope.d.ts.map +0 -1
  323. package/dist/types/common/util/obfuscate.component-test.d.ts +0 -2
  324. package/dist/types/common/util/obfuscate.component-test.d.ts.map +0 -1
  325. package/dist/types/features/session_replay/aggregate/index.component-test.d.ts +0 -2
  326. package/dist/types/features/session_replay/aggregate/index.component-test.d.ts.map +0 -1
  327. package/src/common/browser-version/firefox-version.js +0 -10
  328. package/src/common/browser-version/ios-version.js +0 -11
  329. package/src/common/harvest/harvest-scheduler.component-test.js +0 -25
  330. package/src/common/harvest/harvest.component-test.js +0 -169
  331. package/src/common/util/global-scope.js +0 -23
  332. package/src/common/util/global-scope.test.js +0 -87
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.component-test.d.ts","sourceRoot":"","sources":["../../../../src/common/url/protocol.component-test.js"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export const isBrowserScope: boolean;
2
- export const isWorkerScope: boolean;
3
- export let globalScope: typeof globalThis;
4
- export const initialLocation: string;
5
- //# sourceMappingURL=global-scope.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-scope.d.ts","sourceRoot":"","sources":["../../../../src/common/util/global-scope.js"],"names":[],"mappings":"AAEA,qCAC2D;AAE3D,oCACgG;AAEhG,0CAYI;AAEJ,qCAAwD"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=obfuscate.component-test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"obfuscate.component-test.d.ts","sourceRoot":"","sources":["../../../../src/common/util/obfuscate.component-test.js"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.component-test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.component-test.d.ts","sourceRoot":"","sources":["../../../../../src/features/session_replay/aggregate/index.component-test.js"],"names":[],"mappings":""}
@@ -1,10 +0,0 @@
1
- /*
2
- * Copyright 2020 New Relic Corporation. All rights reserved.
3
- * SPDX-License-Identifier: Apache-2.0
4
- */
5
-
6
- /* eslint-disable no-useless-escape */
7
-
8
- export var ffVersion = 0
9
- var match = navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/)
10
- if (match) ffVersion = +match[1]
@@ -1,11 +0,0 @@
1
- export const isiOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent)
2
-
3
- /* Feature detection to get our version(s). */
4
-
5
- // Shared Web Workers introduced in iOS 16.0+ and n/a in 15.6-
6
- export const iOS_below16 = isiOS && Boolean(typeof SharedWorker === 'undefined')
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+.
11
- */
@@ -1,25 +0,0 @@
1
- import { setConfiguration } from '../config/state/init'
2
- import { HarvestScheduler } from './harvest-scheduler'
3
-
4
- describe('runHarvest', () => {
5
- test('should re-schedule harvest even if there is no accumulated data', () => {
6
- setConfiguration('asdf', {})
7
- const scheduler = new HarvestScheduler('events', { getPayload: jest.fn() }, { agentIdentifier: 'asdf', ee: { on: jest.fn() } })
8
- scheduler.started = true
9
- jest.spyOn(scheduler, 'scheduleHarvest')
10
- scheduler.runHarvest()
11
- expect(scheduler.opts.getPayload()).toBeFalsy()
12
- expect(scheduler.scheduleHarvest).toHaveBeenCalledTimes(1)
13
- })
14
-
15
- test('should also re-schedule harvest if there is accumulated data', () => {
16
- setConfiguration('asdf', {})
17
- const scheduler = new HarvestScheduler('events', { getPayload: jest.fn().mockImplementation(() => 'payload') }, { agentIdentifier: 'asdf', ee: { on: jest.fn() } })
18
- scheduler.started = true
19
- scheduler.harvest._send = () => {}
20
- jest.spyOn(scheduler, 'scheduleHarvest')
21
- scheduler.runHarvest()
22
- expect(scheduler.opts.getPayload()).toBeTruthy()
23
- expect(scheduler.scheduleHarvest).toHaveBeenCalledTimes(1)
24
- })
25
- })
@@ -1,169 +0,0 @@
1
- import { submitData } from '../util/submit-data'
2
- import { Harvest } from './harvest'
3
-
4
- jest.mock('../context/shared-context', () => ({
5
- __esModule: true,
6
- SharedContext: function () {
7
- this.sharedContext = {
8
- agentIdentifier: 'abcd'
9
- }
10
- }
11
- }))
12
- jest.mock('../config/config', () => ({
13
- __esModule: true,
14
- getConfigurationValue: jest.fn(),
15
- getInfo: jest.fn().mockReturnValue({
16
- errorBeacon: 'example.com',
17
- licenseKey: 'abcd'
18
- }),
19
- getRuntime: jest.fn().mockReturnValue({
20
- bytesSent: {},
21
- queryBytesSent: {}
22
- })
23
- }))
24
- jest.mock('../util/submit-data', () => ({
25
- __esModule: true,
26
- submitData: {
27
- xhr: jest.fn(() => ({
28
- addEventListener: jest.fn()
29
- })),
30
- beacon: jest.fn(),
31
- img: jest.fn()
32
- }
33
- }))
34
-
35
- describe('sendX', () => {
36
- test.each([null, undefined, false])('should not send request when body is empty and sendEmptyBody is %s', (sendEmptyBody) => {
37
- const sendCallback = jest.fn()
38
- const harvester = new Harvest()
39
- harvester.on('jserrors', () => ({
40
- body: {},
41
- qs: {}
42
- }))
43
-
44
- harvester.sendX({ endpoint: 'jserrors', cbFinished: sendCallback })
45
-
46
- expect(sendCallback).toHaveBeenCalledWith({ sent: false })
47
- expect(submitData.xhr).not.toHaveBeenCalled()
48
- expect(submitData.img).not.toHaveBeenCalled()
49
- expect(submitData.beacon).not.toHaveBeenCalled()
50
- })
51
-
52
- test('should send request when body is empty and sendEmptyBody is true', () => {
53
- const harvester = new Harvest()
54
- harvester.on('jserrors', () => ({
55
- body: {},
56
- qs: {}
57
- }))
58
-
59
- harvester.sendX({ endpoint: 'jserrors', opts: { sendEmptyBody: true }, cbFinished: jest.fn() })
60
-
61
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
62
- url: expect.stringContaining('https://example.com/jserrors/1/abcd?'),
63
- body: undefined
64
- }))
65
- expect(submitData.img).not.toHaveBeenCalled()
66
- expect(submitData.beacon).not.toHaveBeenCalled()
67
- })
68
-
69
- test.each([null, undefined, []])('should remove %s values from the body and query string when sending', (emptyValue) => {
70
- const harvester = new Harvest()
71
- harvester.on('jserrors', () => ({
72
- body: { bar: 'foo', empty: emptyValue },
73
- qs: { foo: 'bar', empty: emptyValue }
74
- }))
75
-
76
- harvester.sendX({ endpoint: 'jserrors', cbFinished: jest.fn() })
77
-
78
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
79
- url: expect.stringContaining('&foo=bar'),
80
- body: JSON.stringify({ bar: 'foo' })
81
- }))
82
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
83
- url: expect.not.stringContaining('&empty'),
84
- body: expect.not.stringContaining('empty')
85
- }))
86
- expect(submitData.img).not.toHaveBeenCalled()
87
- expect(submitData.beacon).not.toHaveBeenCalled()
88
- })
89
-
90
- test.each([1, false, true])('should not remove value %s (when it doesn\'t have a length) from the body and query string when sending', (nonStringValue) => {
91
- const harvester = new Harvest()
92
- harvester.on('jserrors', () => ({
93
- body: { bar: 'foo', nonString: nonStringValue },
94
- qs: { foo: 'bar', nonString: nonStringValue }
95
- }))
96
-
97
- harvester.sendX({ endpoint: 'jserrors', cbFinished: jest.fn() })
98
-
99
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
100
- url: expect.stringContaining(`&nonString=${nonStringValue}`),
101
- body: JSON.stringify({ bar: 'foo', nonString: nonStringValue })
102
- }))
103
- expect(submitData.img).not.toHaveBeenCalled()
104
- expect(submitData.beacon).not.toHaveBeenCalled()
105
- })
106
- })
107
-
108
- describe('send', () => {
109
- test.each([null, undefined, false])('should not send request when body is empty and sendEmptyBody is %s', (sendEmptyBody) => {
110
- const sendCallback = jest.fn()
111
- const harvester = new Harvest()
112
-
113
- harvester.send({ endpoint: 'rum', payload: { qs: {}, body: {} }, opts: { sendEmptyBody }, cbFinished: sendCallback })
114
-
115
- expect(sendCallback).toHaveBeenCalledWith({ sent: false })
116
- expect(submitData.xhr).not.toHaveBeenCalled()
117
- expect(submitData.img).not.toHaveBeenCalled()
118
- expect(submitData.beacon).not.toHaveBeenCalled()
119
- })
120
-
121
- test('should send request when body is empty and sendEmptyBody is true', () => {
122
- const harvester = new Harvest()
123
-
124
- harvester.send({ endpoint: 'rum', payload: { qs: {}, body: {} }, opts: { sendEmptyBody: true } })
125
-
126
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
127
- url: expect.stringContaining('https://example.com/1/abcd?'),
128
- body: undefined
129
- }))
130
- expect(submitData.img).not.toHaveBeenCalled()
131
- expect(submitData.beacon).not.toHaveBeenCalled()
132
- })
133
-
134
- test.each([null, undefined, []])('should remove %s values from the body and query string when sending', (emptyValue) => {
135
- const harvester = new Harvest()
136
-
137
- harvester.send({
138
- endpoint: 'rum',
139
- payload: { qs: { foo: 'bar', empty: emptyValue }, body: { bar: 'foo', empty: emptyValue } }
140
- })
141
-
142
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
143
- url: expect.stringContaining('&foo=bar'),
144
- body: JSON.stringify({ bar: 'foo' })
145
- }))
146
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
147
- url: expect.not.stringContaining('&empty'),
148
- body: expect.not.stringContaining('empty')
149
- }))
150
- expect(submitData.img).not.toHaveBeenCalled()
151
- expect(submitData.beacon).not.toHaveBeenCalled()
152
- })
153
-
154
- test.each([1, false, true])('should not remove value %s (when it doesn\'t have a length) from the body and query string when sending', (nonStringValue) => {
155
- const harvester = new Harvest()
156
-
157
- harvester.send({
158
- endpoint: 'rum',
159
- payload: { qs: { foo: 'bar', nonString: nonStringValue }, body: { bar: 'foo', nonString: nonStringValue } }
160
- })
161
-
162
- expect(submitData.xhr).toHaveBeenCalledWith(expect.objectContaining({
163
- url: expect.stringContaining(`&nonString=${nonStringValue}`),
164
- body: JSON.stringify({ bar: 'foo', nonString: nonStringValue })
165
- }))
166
- expect(submitData.img).not.toHaveBeenCalled()
167
- expect(submitData.beacon).not.toHaveBeenCalled()
168
- })
169
- })
@@ -1,23 +0,0 @@
1
- /* global globalThis, WorkerGlobalScope, WorkerNavigator */
2
-
3
- export const isBrowserScope =
4
- Boolean(typeof window !== 'undefined' && window.document)
5
-
6
- export const isWorkerScope =
7
- Boolean(typeof WorkerGlobalScope !== 'undefined' && self.navigator instanceof WorkerNavigator)
8
-
9
- export let globalScope = (() => {
10
- if (isBrowserScope) {
11
- return window
12
- } else if (isWorkerScope) {
13
- if (typeof globalThis !== 'undefined' && globalThis instanceof WorkerGlobalScope) {
14
- return globalThis
15
- } else if (self instanceof WorkerGlobalScope) {
16
- return self
17
- }
18
- }
19
-
20
- throw new Error('New Relic browser agent shutting down due to error: Unable to locate global scope. This is possibly due to code redefining browser global variables like "self" and "window".')
21
- })()
22
-
23
- export const initialLocation = '' + globalScope.location
@@ -1,87 +0,0 @@
1
- /*
2
- The global-scope module contains exports that are defined once at the time
3
- of importing the module. For this reason, the module must be dynamically
4
- imported in each test case.
5
-
6
- A scope must always exist or importing the module will throw an error. Use
7
- `enableWorkerScope` to enable the worker scope. Be sure to call `disableWorkerScope`
8
- before any calls to `expect` or the test will fail with an error from Jest.
9
- */
10
-
11
- import { faker } from '@faker-js/faker'
12
-
13
- afterEach(() => {
14
- jest.restoreAllMocks()
15
- jest.resetModules()
16
- })
17
-
18
- test('should indicate a browser scope', async () => {
19
- jest.spyOn(global, 'window', 'get').mockReturnValue({ document: {} })
20
-
21
- const globalScopeModule = await import('./global-scope')
22
-
23
- expect(globalScopeModule.isBrowserScope).toBe(true)
24
- expect(globalScopeModule.isWorkerScope).toBe(false)
25
- expect(globalScopeModule.globalScope).toBe(global.window)
26
- })
27
-
28
- test('should indicate a worker scope', async () => {
29
- enableWorkerScope()
30
- const globalScopeModule = await import('./global-scope')
31
- const mockedGlobalThis = global.globalThis
32
- disableWorkerScope()
33
-
34
- expect(globalScopeModule.isBrowserScope).toBe(false)
35
- expect(globalScopeModule.isWorkerScope).toBe(true)
36
- expect(globalScopeModule.globalScope).toBe(mockedGlobalThis)
37
- })
38
-
39
- test('should return the self global', async () => {
40
- enableWorkerScope()
41
- jest.replaceProperty(global, 'globalThis', null)
42
- jest.spyOn(global, 'self', 'get').mockReturnValue(new global.WorkerGlobalScope())
43
-
44
- const globalScopeModule = await import('./global-scope')
45
- const mockedGlobalSelf = global.self
46
- disableWorkerScope()
47
-
48
- expect(globalScopeModule.isBrowserScope).toBe(false)
49
- expect(globalScopeModule.isWorkerScope).toBe(true)
50
- expect(globalScopeModule.globalScope).toBe(mockedGlobalSelf)
51
- })
52
-
53
- test('should throw an error when a scope cannot be defined', async () => {
54
- jest.spyOn(global, 'window', 'get').mockReturnValue(undefined)
55
-
56
- await expect(() => import('./global-scope')).rejects.toThrow()
57
- })
58
-
59
- test('should immediately store the current location', async () => {
60
- const url = faker.internet.url()
61
- jest.spyOn(window, 'location', 'get').mockReturnValue(url)
62
-
63
- const globalScopeModule = await import('./global-scope')
64
-
65
- expect(globalScopeModule.initialLocation).toBe(url)
66
- })
67
-
68
- function enableWorkerScope () {
69
- jest.spyOn(global, 'window', 'get').mockReturnValue(undefined)
70
-
71
- class WorkerNavigator {}
72
- class WorkerGlobalScope {
73
- navigator = new WorkerNavigator()
74
- }
75
- global.WorkerGlobalScope = WorkerGlobalScope
76
- global.WorkerNavigator = WorkerNavigator
77
-
78
- jest.spyOn(global, 'navigator', 'get').mockReturnValue(new global.WorkerNavigator())
79
- jest.replaceProperty(global, 'globalThis', new WorkerGlobalScope())
80
- }
81
-
82
- function disableWorkerScope () {
83
- delete global.WorkerGlobalScope
84
- delete global.WorkerNavigator
85
-
86
- jest.restoreAllMocks()
87
- }