@newrelic/browser-agent 1.235.0 → 1.237.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 (389) hide show
  1. package/README.md +41 -1
  2. package/dist/cjs/common/config/state/init.js +4 -0
  3. package/dist/cjs/common/config/state/runtime.js +6 -5
  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/deny-list/deny-list.js +14 -10
  8. package/dist/cjs/common/event-listener/event-listener-opts.js +3 -3
  9. package/dist/cjs/common/harvest/harvest-scheduler.js +22 -19
  10. package/dist/cjs/common/harvest/harvest.js +154 -148
  11. package/dist/cjs/common/harvest/types.js +54 -0
  12. package/dist/cjs/common/ids/id.js +2 -2
  13. package/dist/cjs/common/ids/unique-id.js +3 -3
  14. package/dist/cjs/common/session/session-entity.js +2 -2
  15. package/dist/cjs/common/timer/interaction-timer.js +2 -2
  16. package/dist/cjs/common/unload/eol.js +10 -11
  17. package/dist/cjs/common/url/canonicalize-url.js +2 -2
  18. package/dist/cjs/common/url/parse-url.js +3 -3
  19. package/dist/cjs/common/url/protocol.js +2 -2
  20. package/dist/cjs/common/util/submit-data.js +31 -81
  21. package/dist/cjs/common/window/nreum.js +14 -14
  22. package/dist/cjs/common/wrap/wrap-events.js +3 -3
  23. package/dist/cjs/common/wrap/wrap-fetch.js +5 -5
  24. package/dist/cjs/common/wrap/wrap-history.js +2 -2
  25. package/dist/cjs/common/wrap/wrap-jsonp.js +14 -8
  26. package/dist/cjs/common/wrap/wrap-mutation.js +2 -2
  27. package/dist/cjs/common/wrap/wrap-promise.js +2 -2
  28. package/dist/cjs/common/wrap/wrap-raf.js +2 -2
  29. package/dist/cjs/common/wrap/wrap-timer.js +4 -4
  30. package/dist/cjs/common/wrap/wrap-xhr.js +3 -3
  31. package/dist/cjs/features/ajax/aggregate/index.js +25 -28
  32. package/dist/cjs/features/ajax/instrument/distributed-tracing.js +2 -2
  33. package/dist/cjs/features/ajax/instrument/index.js +6 -7
  34. package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.js +1 -1
  35. package/dist/cjs/features/jserrors/aggregate/index.js +7 -4
  36. package/dist/cjs/features/jserrors/constants.js +2 -4
  37. package/dist/cjs/features/jserrors/instrument/index.js +80 -89
  38. package/dist/cjs/features/jserrors/instrument/uncaught-error.js +22 -0
  39. package/dist/cjs/features/metrics/aggregate/framework-detection.js +2 -2
  40. package/dist/cjs/features/metrics/aggregate/index.js +3 -3
  41. package/dist/cjs/features/page_action/aggregate/index.js +3 -3
  42. package/dist/cjs/features/page_view_event/aggregate/index.js +10 -11
  43. package/dist/cjs/features/page_view_event/aggregate/initialized-features.js +23 -19
  44. package/dist/cjs/features/page_view_event/instrument/index.js +2 -2
  45. package/dist/cjs/features/page_view_timing/aggregate/index.js +3 -5
  46. package/dist/cjs/features/page_view_timing/instrument/index.js +2 -2
  47. package/dist/cjs/features/session_replay/aggregate/index.js +65 -34
  48. package/dist/cjs/features/session_replay/replay-mode.js +2 -2
  49. package/dist/cjs/features/session_trace/aggregate/index.js +3 -4
  50. package/dist/cjs/features/session_trace/instrument/index.js +2 -2
  51. package/dist/cjs/features/spa/aggregate/index.js +1 -1
  52. package/dist/cjs/features/spa/instrument/index.js +2 -2
  53. package/dist/cjs/features/utils/instrument-base.js +12 -15
  54. package/dist/cjs/index.js +7 -0
  55. package/dist/cjs/loaders/agent-base.js +87 -0
  56. package/dist/cjs/loaders/agent.js +48 -1
  57. package/dist/cjs/loaders/api/api.js +3 -3
  58. package/dist/cjs/loaders/api/apiAsync.js +6 -4
  59. package/dist/cjs/loaders/api/interaction-types.js +87 -0
  60. package/dist/cjs/loaders/configure/configure.js +4 -3
  61. package/dist/cjs/loaders/micro-agent.js +32 -39
  62. package/dist/esm/common/config/state/init.js +4 -0
  63. package/dist/esm/common/config/state/runtime.js +3 -2
  64. package/dist/esm/common/constants/env.cdn.js +2 -2
  65. package/dist/esm/common/constants/env.npm.js +1 -1
  66. package/dist/esm/common/constants/runtime.js +38 -0
  67. package/dist/esm/common/deny-list/deny-list.js +14 -10
  68. package/dist/esm/common/event-listener/event-listener-opts.js +1 -1
  69. package/dist/esm/common/harvest/harvest-scheduler.js +21 -20
  70. package/dist/esm/common/harvest/harvest.js +150 -146
  71. package/dist/esm/common/harvest/types.js +47 -0
  72. package/dist/esm/common/ids/id.js +1 -1
  73. package/dist/esm/common/ids/unique-id.js +1 -1
  74. package/dist/esm/common/session/session-entity.js +1 -1
  75. package/dist/esm/common/timer/interaction-timer.js +1 -1
  76. package/dist/esm/common/unload/eol.js +1 -2
  77. package/dist/esm/common/url/canonicalize-url.js +1 -1
  78. package/dist/esm/common/url/parse-url.js +1 -1
  79. package/dist/esm/common/url/protocol.js +1 -1
  80. package/dist/esm/common/util/submit-data.js +29 -78
  81. package/dist/esm/common/window/nreum.js +1 -1
  82. package/dist/esm/common/wrap/wrap-events.js +1 -1
  83. package/dist/esm/common/wrap/wrap-fetch.js +1 -1
  84. package/dist/esm/common/wrap/wrap-history.js +1 -1
  85. package/dist/esm/common/wrap/wrap-jsonp.js +13 -7
  86. package/dist/esm/common/wrap/wrap-mutation.js +1 -1
  87. package/dist/esm/common/wrap/wrap-promise.js +1 -1
  88. package/dist/esm/common/wrap/wrap-raf.js +1 -1
  89. package/dist/esm/common/wrap/wrap-timer.js +1 -1
  90. package/dist/esm/common/wrap/wrap-xhr.js +1 -1
  91. package/dist/esm/features/ajax/aggregate/index.js +26 -29
  92. package/dist/esm/features/ajax/instrument/distributed-tracing.js +1 -1
  93. package/dist/esm/features/ajax/instrument/index.js +1 -2
  94. package/dist/esm/features/jserrors/aggregate/compute-stack-trace.js +1 -1
  95. package/dist/esm/features/jserrors/aggregate/index.js +6 -3
  96. package/dist/esm/features/jserrors/constants.js +1 -2
  97. package/dist/esm/features/jserrors/instrument/index.js +79 -88
  98. package/dist/esm/features/jserrors/instrument/uncaught-error.js +15 -0
  99. package/dist/esm/features/metrics/aggregate/framework-detection.js +1 -1
  100. package/dist/esm/features/metrics/aggregate/index.js +1 -1
  101. package/dist/esm/features/page_action/aggregate/index.js +1 -1
  102. package/dist/esm/features/page_view_event/aggregate/index.js +1 -2
  103. package/dist/esm/features/page_view_event/aggregate/initialized-features.js +23 -19
  104. package/dist/esm/features/page_view_event/instrument/index.js +1 -1
  105. package/dist/esm/features/page_view_timing/aggregate/index.js +2 -4
  106. package/dist/esm/features/page_view_timing/instrument/index.js +1 -1
  107. package/dist/esm/features/session_replay/aggregate/index.js +65 -34
  108. package/dist/esm/features/session_replay/replay-mode.js +2 -2
  109. package/dist/esm/features/session_trace/aggregate/index.js +3 -4
  110. package/dist/esm/features/session_trace/instrument/index.js +1 -1
  111. package/dist/esm/features/spa/aggregate/index.js +1 -1
  112. package/dist/esm/features/spa/instrument/index.js +1 -1
  113. package/dist/esm/features/utils/instrument-base.js +11 -14
  114. package/dist/esm/index.js +1 -4
  115. package/dist/esm/loaders/agent-base.js +80 -0
  116. package/dist/esm/loaders/agent.js +48 -1
  117. package/dist/esm/loaders/api/api.js +2 -2
  118. package/dist/esm/loaders/api/apiAsync.js +3 -3
  119. package/dist/esm/loaders/api/interaction-types.js +80 -0
  120. package/dist/esm/loaders/configure/configure.js +4 -3
  121. package/dist/esm/loaders/micro-agent.js +32 -39
  122. package/dist/types/common/config/state/init.d.ts.map +1 -1
  123. package/dist/types/common/config/state/runtime.d.ts.map +1 -1
  124. package/dist/types/common/constants/runtime.d.ts +29 -0
  125. package/dist/types/common/constants/runtime.d.ts.map +1 -0
  126. package/dist/types/common/event-emitter/register-handler.d.ts +1 -1
  127. package/dist/types/common/harvest/harvest-scheduler.d.ts +1 -1
  128. package/dist/types/common/harvest/harvest-scheduler.d.ts.map +1 -1
  129. package/dist/types/common/harvest/harvest.d.ts +49 -38
  130. package/dist/types/common/harvest/harvest.d.ts.map +1 -1
  131. package/dist/types/common/harvest/types.d.ts +100 -0
  132. package/dist/types/common/harvest/types.d.ts.map +1 -0
  133. package/dist/types/common/session/session-entity.d.ts +6 -6
  134. package/dist/types/common/unload/eol.d.ts.map +1 -1
  135. package/dist/types/common/util/submit-data.d.ts +44 -64
  136. package/dist/types/common/util/submit-data.d.ts.map +1 -1
  137. package/dist/types/common/window/nreum.d.ts +2 -2
  138. package/dist/types/common/wrap/wrap-jsonp.d.ts.map +1 -1
  139. package/dist/types/features/ajax/aggregate/index.d.ts +5 -5
  140. package/dist/types/features/ajax/aggregate/index.d.ts.map +1 -1
  141. package/dist/types/features/ajax/instrument/index.d.ts.map +1 -1
  142. package/dist/types/features/jserrors/aggregate/index.d.ts +1 -1
  143. package/dist/types/features/jserrors/aggregate/index.d.ts.map +1 -1
  144. package/dist/types/features/jserrors/constants.d.ts +0 -1
  145. package/dist/types/features/jserrors/constants.d.ts.map +1 -1
  146. package/dist/types/features/jserrors/instrument/index.d.ts +0 -13
  147. package/dist/types/features/jserrors/instrument/index.d.ts.map +1 -1
  148. package/dist/types/features/jserrors/instrument/uncaught-error.d.ts +15 -0
  149. package/dist/types/features/jserrors/instrument/uncaught-error.d.ts.map +1 -0
  150. package/dist/types/features/metrics/aggregate/endpoint-map.d.ts +5 -5
  151. package/dist/types/features/page_view_event/aggregate/index.d.ts.map +1 -1
  152. package/dist/types/features/page_view_event/aggregate/initialized-features.d.ts.map +1 -1
  153. package/dist/types/features/page_view_timing/aggregate/index.d.ts.map +1 -1
  154. package/dist/types/features/session_replay/aggregate/index.d.ts +16 -30
  155. package/dist/types/features/session_replay/aggregate/index.d.ts.map +1 -1
  156. package/dist/types/features/session_trace/aggregate/index.d.ts.map +1 -1
  157. package/dist/types/features/utils/instrument-base.d.ts.map +1 -1
  158. package/dist/types/index.d.ts +1 -0
  159. package/dist/types/loaders/agent-base.d.ts +59 -0
  160. package/dist/types/loaders/agent-base.d.ts.map +1 -0
  161. package/dist/types/loaders/agent.d.ts +39 -5
  162. package/dist/types/loaders/agent.d.ts.map +1 -1
  163. package/dist/types/loaders/api/interaction-types.d.ts +122 -0
  164. package/dist/types/loaders/api/interaction-types.d.ts.map +1 -0
  165. package/dist/types/loaders/configure/configure.d.ts.map +1 -1
  166. package/dist/types/loaders/features/features.d.ts +9 -9
  167. package/dist/types/loaders/micro-agent.d.ts +6 -6
  168. package/dist/types/loaders/micro-agent.d.ts.map +1 -1
  169. package/package.json +6 -1
  170. package/src/common/config/__mocks__/config.js +11 -0
  171. package/src/common/config/state/init.js +2 -1
  172. package/src/common/config/state/runtime.js +3 -2
  173. package/src/common/constants/__mocks__/env.js +3 -0
  174. package/src/common/constants/__mocks__/runtime.js +8 -0
  175. package/src/common/constants/env.cdn.test.js +7 -0
  176. package/src/common/constants/env.npm.test.js +7 -0
  177. package/src/common/constants/env.test.js +7 -0
  178. package/src/common/constants/runtime.js +71 -0
  179. package/src/common/constants/runtime.test.js +168 -0
  180. package/src/common/context/__mocks__/shared-context.js +8 -0
  181. package/src/common/deny-list/deny-list.js +11 -11
  182. package/src/common/deny-list/deny-list.test.js +31 -0
  183. package/src/common/event-listener/__mocks__/event-listener-opts.js +7 -0
  184. package/src/common/event-listener/event-listener-opts.js +1 -1
  185. package/src/common/harvest/__mocks__/harvest.js +13 -0
  186. package/src/common/harvest/harvest-scheduler.js +21 -20
  187. package/src/common/harvest/harvest-scheduler.test.js +496 -0
  188. package/src/common/harvest/harvest.js +142 -134
  189. package/src/common/harvest/harvest.test.js +798 -0
  190. package/src/common/harvest/types.js +47 -0
  191. package/src/common/ids/id.js +1 -1
  192. package/src/common/ids/unique-id.js +1 -1
  193. package/src/common/session/__mocks__/session-entity.js +25 -0
  194. package/src/common/session/session-entity.component-test.js +1 -1
  195. package/src/common/session/session-entity.js +1 -1
  196. package/src/common/timer/interaction-timer.js +1 -1
  197. package/src/common/timing/__mocks__/now.js +1 -0
  198. package/src/common/unload/__mocks__/eol.js +1 -0
  199. package/src/common/unload/eol.js +1 -2
  200. package/src/common/url/__mocks__/clean-url.js +1 -0
  201. package/src/common/url/__mocks__/encode.js +7 -0
  202. package/src/common/url/__mocks__/location.js +1 -0
  203. package/src/common/url/canonicalize-url.js +1 -1
  204. package/src/common/url/canonicalize-url.test.js +2 -2
  205. package/src/common/url/parse-url.js +1 -1
  206. package/src/common/url/parse-url.test.js +3 -3
  207. package/src/common/url/protocol.js +1 -1
  208. package/src/common/util/__mocks__/obfuscate.js +10 -0
  209. package/src/common/util/__mocks__/stringify.js +1 -0
  210. package/src/common/util/__mocks__/submit-data.js +5 -0
  211. package/src/common/util/__mocks__/traverse.js +1 -0
  212. package/src/common/util/submit-data.js +22 -58
  213. package/src/common/util/submit-data.test.js +30 -73
  214. package/src/common/window/nreum.js +1 -1
  215. package/src/common/wrap/wrap-events.js +1 -1
  216. package/src/common/wrap/wrap-fetch.js +1 -1
  217. package/src/common/wrap/wrap-history.js +1 -1
  218. package/src/common/wrap/wrap-jsonp.js +12 -7
  219. package/src/common/wrap/wrap-mutation.js +1 -1
  220. package/src/common/wrap/wrap-promise.js +1 -1
  221. package/src/common/wrap/wrap-promise.test.js +2 -2
  222. package/src/common/wrap/wrap-raf.js +1 -1
  223. package/src/common/wrap/wrap-timer.js +1 -1
  224. package/src/common/wrap/wrap-xhr.js +1 -1
  225. package/src/features/ajax/aggregate/index.js +26 -32
  226. package/src/features/ajax/instrument/distributed-tracing.js +1 -1
  227. package/src/features/ajax/instrument/index.js +1 -2
  228. package/src/features/jserrors/aggregate/compute-stack-trace.js +1 -1
  229. package/src/features/jserrors/aggregate/compute-stack-trace.test.js +1 -1
  230. package/src/features/jserrors/aggregate/index.js +7 -3
  231. package/src/features/jserrors/constants.js +0 -1
  232. package/src/features/jserrors/instrument/index.js +92 -88
  233. package/src/features/jserrors/instrument/uncaught-error.js +15 -0
  234. package/src/features/metrics/aggregate/framework-detection.js +1 -1
  235. package/src/features/metrics/aggregate/framework-detection.test.js +2 -2
  236. package/src/features/metrics/aggregate/index.js +1 -1
  237. package/src/features/page_action/aggregate/index.js +1 -1
  238. package/src/features/page_view_event/aggregate/index.js +1 -2
  239. package/src/features/page_view_event/aggregate/initialized-features.js +18 -14
  240. package/src/features/page_view_event/instrument/index.js +1 -1
  241. package/src/features/page_view_timing/aggregate/index.js +2 -4
  242. package/src/features/page_view_timing/instrument/index.js +1 -1
  243. package/src/features/session_replay/aggregate/index.component-test.js +17 -56
  244. package/src/features/session_replay/aggregate/index.js +47 -28
  245. package/src/features/session_replay/replay-mode.js +2 -2
  246. package/src/features/session_trace/aggregate/index.js +3 -4
  247. package/src/features/session_trace/instrument/index.js +1 -1
  248. package/src/features/spa/aggregate/index.js +1 -1
  249. package/src/features/spa/instrument/index.js +1 -1
  250. package/src/features/utils/agent-session.test.js +2 -2
  251. package/src/features/utils/instrument-base.js +11 -14
  252. package/src/features/utils/instrument-base.test.js +29 -3
  253. package/src/index.js +1 -3
  254. package/src/loaders/agent-base.js +81 -0
  255. package/src/loaders/agent.js +50 -1
  256. package/src/loaders/api/api.js +2 -2
  257. package/src/loaders/api/apiAsync.js +3 -3
  258. package/src/loaders/api/interaction-types.js +80 -0
  259. package/src/loaders/configure/configure.js +5 -4
  260. package/src/loaders/micro-agent.js +30 -31
  261. package/dist/cjs/common/browser-version/firefox-version.js +0 -17
  262. package/dist/cjs/common/browser-version/ios-version.js +0 -19
  263. package/dist/cjs/common/event-emitter/contextual-ee.test.js +0 -282
  264. package/dist/cjs/common/event-emitter/handle.test.js +0 -58
  265. package/dist/cjs/common/event-emitter/register-handler.test.js +0 -55
  266. package/dist/cjs/common/harvest/harvest-scheduler.component-test.js +0 -39
  267. package/dist/cjs/common/harvest/harvest.component-test.js +0 -224
  268. package/dist/cjs/common/ids/id.test.js +0 -85
  269. package/dist/cjs/common/ids/unique-id.test.js +0 -49
  270. package/dist/cjs/common/session/session-entity.component-test.js +0 -497
  271. package/dist/cjs/common/storage/local-storage.test.js +0 -14
  272. package/dist/cjs/common/timer/interaction-timer.component-test.js +0 -216
  273. package/dist/cjs/common/timer/timer.test.js +0 -105
  274. package/dist/cjs/common/timing/nav-timing.test.js +0 -192
  275. package/dist/cjs/common/url/canonicalize-url.test.js +0 -38
  276. package/dist/cjs/common/url/clean-url.test.js +0 -9
  277. package/dist/cjs/common/url/encode.component-test.js +0 -74
  278. package/dist/cjs/common/url/location.test.js +0 -13
  279. package/dist/cjs/common/url/parse-url.test.js +0 -111
  280. package/dist/cjs/common/url/protocol.component-test.js +0 -15
  281. package/dist/cjs/common/util/console.test.js +0 -30
  282. package/dist/cjs/common/util/data-size.test.js +0 -64
  283. package/dist/cjs/common/util/feature-flags.test.js +0 -84
  284. package/dist/cjs/common/util/get-or-set.test.js +0 -47
  285. package/dist/cjs/common/util/global-scope.js +0 -27
  286. package/dist/cjs/common/util/global-scope.test.js +0 -72
  287. package/dist/cjs/common/util/invoke.test.js +0 -49
  288. package/dist/cjs/common/util/map-own.test.js +0 -49
  289. package/dist/cjs/common/util/obfuscate.component-test.js +0 -129
  290. package/dist/cjs/common/util/stringify.test.js +0 -48
  291. package/dist/cjs/common/util/submit-data.test.js +0 -245
  292. package/dist/cjs/common/util/traverse.test.js +0 -44
  293. package/dist/cjs/common/wrap/wrap-promise.test.js +0 -119
  294. package/dist/cjs/features/jserrors/aggregate/canonical-function-name.test.js +0 -31
  295. package/dist/cjs/features/jserrors/aggregate/compute-stack-trace.test.js +0 -383
  296. package/dist/cjs/features/jserrors/aggregate/format-stack-trace.test.js +0 -40
  297. package/dist/cjs/features/jserrors/aggregate/string-hash-code.test.js +0 -27
  298. package/dist/cjs/features/jserrors/instrument/debug.js +0 -40
  299. package/dist/cjs/features/metrics/aggregate/framework-detection.test.js +0 -137
  300. package/dist/cjs/features/metrics/aggregate/polyfill-detection.es5.test.js +0 -17
  301. package/dist/cjs/features/metrics/aggregate/polyfill-detection.test.js +0 -165
  302. package/dist/cjs/features/session_replay/aggregate/index.component-test.js +0 -457
  303. package/dist/cjs/features/spa/aggregate/interaction-node.test.js +0 -16
  304. package/dist/cjs/features/utils/agent-session.test.js +0 -211
  305. package/dist/cjs/features/utils/aggregate-base.test.js +0 -110
  306. package/dist/cjs/features/utils/feature-base.test.js +0 -42
  307. package/dist/cjs/features/utils/handler-cache.test.js +0 -53
  308. package/dist/cjs/features/utils/instrument-base.test.js +0 -179
  309. package/dist/cjs/features/utils/lazy-feature-loader.test.js +0 -30
  310. package/dist/esm/common/browser-version/firefox-version.js +0 -10
  311. package/dist/esm/common/browser-version/ios-version.js +0 -11
  312. package/dist/esm/common/event-emitter/contextual-ee.test.js +0 -278
  313. package/dist/esm/common/event-emitter/handle.test.js +0 -54
  314. package/dist/esm/common/event-emitter/register-handler.test.js +0 -51
  315. package/dist/esm/common/harvest/harvest-scheduler.component-test.js +0 -37
  316. package/dist/esm/common/harvest/harvest.component-test.js +0 -222
  317. package/dist/esm/common/ids/id.test.js +0 -81
  318. package/dist/esm/common/ids/unique-id.test.js +0 -44
  319. package/dist/esm/common/session/session-entity.component-test.js +0 -495
  320. package/dist/esm/common/storage/local-storage.test.js +0 -12
  321. package/dist/esm/common/timer/interaction-timer.component-test.js +0 -214
  322. package/dist/esm/common/timer/timer.test.js +0 -103
  323. package/dist/esm/common/timing/nav-timing.test.js +0 -190
  324. package/dist/esm/common/url/canonicalize-url.test.js +0 -34
  325. package/dist/esm/common/url/clean-url.test.js +0 -7
  326. package/dist/esm/common/url/encode.component-test.js +0 -70
  327. package/dist/esm/common/url/location.test.js +0 -11
  328. package/dist/esm/common/url/parse-url.test.js +0 -107
  329. package/dist/esm/common/url/protocol.component-test.js +0 -13
  330. package/dist/esm/common/util/console.test.js +0 -28
  331. package/dist/esm/common/util/data-size.test.js +0 -60
  332. package/dist/esm/common/util/feature-flags.test.js +0 -80
  333. package/dist/esm/common/util/get-or-set.test.js +0 -45
  334. package/dist/esm/common/util/global-scope.js +0 -17
  335. package/dist/esm/common/util/global-scope.test.js +0 -70
  336. package/dist/esm/common/util/invoke.test.js +0 -47
  337. package/dist/esm/common/util/map-own.test.js +0 -47
  338. package/dist/esm/common/util/obfuscate.component-test.js +0 -125
  339. package/dist/esm/common/util/stringify.test.js +0 -46
  340. package/dist/esm/common/util/submit-data.test.js +0 -241
  341. package/dist/esm/common/util/traverse.test.js +0 -42
  342. package/dist/esm/common/wrap/wrap-promise.test.js +0 -115
  343. package/dist/esm/features/jserrors/aggregate/canonical-function-name.test.js +0 -29
  344. package/dist/esm/features/jserrors/aggregate/compute-stack-trace.test.js +0 -379
  345. package/dist/esm/features/jserrors/aggregate/format-stack-trace.test.js +0 -38
  346. package/dist/esm/features/jserrors/aggregate/string-hash-code.test.js +0 -25
  347. package/dist/esm/features/jserrors/instrument/debug.js +0 -38
  348. package/dist/esm/features/metrics/aggregate/framework-detection.test.js +0 -133
  349. package/dist/esm/features/metrics/aggregate/polyfill-detection.es5.test.js +0 -15
  350. package/dist/esm/features/metrics/aggregate/polyfill-detection.test.js +0 -163
  351. package/dist/esm/features/session_replay/aggregate/index.component-test.js +0 -453
  352. package/dist/esm/features/spa/aggregate/interaction-node.test.js +0 -14
  353. package/dist/esm/features/utils/agent-session.test.js +0 -207
  354. package/dist/esm/features/utils/aggregate-base.test.js +0 -108
  355. package/dist/esm/features/utils/feature-base.test.js +0 -40
  356. package/dist/esm/features/utils/handler-cache.test.js +0 -51
  357. package/dist/esm/features/utils/instrument-base.test.js +0 -175
  358. package/dist/esm/features/utils/lazy-feature-loader.test.js +0 -29
  359. package/dist/types/common/browser-version/firefox-version.d.ts +0 -2
  360. package/dist/types/common/browser-version/firefox-version.d.ts.map +0 -1
  361. package/dist/types/common/browser-version/ios-version.d.ts +0 -3
  362. package/dist/types/common/browser-version/ios-version.d.ts.map +0 -1
  363. package/dist/types/common/harvest/harvest-scheduler.component-test.d.ts +0 -2
  364. package/dist/types/common/harvest/harvest-scheduler.component-test.d.ts.map +0 -1
  365. package/dist/types/common/harvest/harvest.component-test.d.ts +0 -2
  366. package/dist/types/common/harvest/harvest.component-test.d.ts.map +0 -1
  367. package/dist/types/common/session/session-entity.component-test.d.ts +0 -2
  368. package/dist/types/common/session/session-entity.component-test.d.ts.map +0 -1
  369. package/dist/types/common/timer/interaction-timer.component-test.d.ts +0 -2
  370. package/dist/types/common/timer/interaction-timer.component-test.d.ts.map +0 -1
  371. package/dist/types/common/url/encode.component-test.d.ts +0 -2
  372. package/dist/types/common/url/encode.component-test.d.ts.map +0 -1
  373. package/dist/types/common/url/protocol.component-test.d.ts +0 -2
  374. package/dist/types/common/url/protocol.component-test.d.ts.map +0 -1
  375. package/dist/types/common/util/global-scope.d.ts +0 -5
  376. package/dist/types/common/util/global-scope.d.ts.map +0 -1
  377. package/dist/types/common/util/obfuscate.component-test.d.ts +0 -2
  378. package/dist/types/common/util/obfuscate.component-test.d.ts.map +0 -1
  379. package/dist/types/features/jserrors/instrument/debug.d.ts +0 -2
  380. package/dist/types/features/jserrors/instrument/debug.d.ts.map +0 -1
  381. package/dist/types/features/session_replay/aggregate/index.component-test.d.ts +0 -2
  382. package/dist/types/features/session_replay/aggregate/index.component-test.d.ts.map +0 -1
  383. package/src/common/browser-version/firefox-version.js +0 -10
  384. package/src/common/browser-version/ios-version.js +0 -11
  385. package/src/common/harvest/harvest-scheduler.component-test.js +0 -25
  386. package/src/common/harvest/harvest.component-test.js +0 -169
  387. package/src/common/util/global-scope.js +0 -23
  388. package/src/common/util/global-scope.test.js +0 -87
  389. package/src/features/jserrors/instrument/debug.js +0 -36
@@ -1,81 +0,0 @@
1
- let idFn;
2
- beforeEach(async () => {
3
- idFn = (await import('./id')).id;
4
- });
5
- afterEach(() => {
6
- jest.resetModules();
7
- jest.clearAllMocks();
8
- });
9
- test.each([{
10
- input: undefined,
11
- expected: -1,
12
- title: 'id of undefined is -1'
13
- }, {
14
- input: null,
15
- expected: -1,
16
- title: 'id of null is -1'
17
- }, {
18
- input: 2,
19
- expected: -1,
20
- title: 'id of number is -1'
21
- }, {
22
- input: 'foo',
23
- expected: -1,
24
- title: 'id of string is -1'
25
- }])('$title', _ref => {
26
- let {
27
- input,
28
- expected
29
- } = _ref;
30
- const result = idFn(input);
31
- expect(typeof result).toEqual('number');
32
- expect(result).toEqual(expected);
33
- });
34
- test('id values increment sequentially', () => {
35
- const inputA = {};
36
- const inputB = {};
37
- const resultA = idFn(inputA);
38
- const resultB = idFn(inputB);
39
- expect(resultA - resultB).toEqual(-1);
40
- });
41
- test('id is correctly assigned to function type', () => {
42
- const input = jest.fn();
43
- const result = idFn(input);
44
- expect(result).toEqual(1);
45
- expect(input['nr@id']).toEqual(1);
46
- });
47
- test('id is correctly assigned to object type', () => {
48
- const input = {};
49
- const result = idFn(input);
50
- expect(result).toEqual(1);
51
- expect(input['nr@id']).toEqual(1);
52
- });
53
- test('id is the same when called twice on the same input', () => {
54
- const input = {};
55
- const result1 = idFn(input);
56
- const result2 = idFn(input);
57
- expect(result1).toEqual(1);
58
- expect(result2).toEqual(1);
59
- expect(input['nr@id']).toEqual(1);
60
- });
61
- test('id is zero on global scope', async () => {
62
- const result = idFn(global);
63
- expect(result).toEqual(0);
64
- });
65
- test('id on prototype is correctly inherited', () => {
66
- const fn = jest.fn();
67
- const a = {};
68
- idFn(a);
69
- fn.prototype = a;
70
- const b = new fn();
71
- expect(b['nr@id']).toEqual(a['nr@id']);
72
- });
73
- test('id on prototype is different from instance', () => {
74
- const fn = jest.fn();
75
- const a = {};
76
- idFn(a);
77
- fn.prototype = a;
78
- const b = new fn();
79
- const result = idFn(b);
80
- expect(b['nr@id']).toEqual(result);
81
- });
@@ -1,44 +0,0 @@
1
- import crypto from 'crypto';
2
- import * as uniqueId from './unique-id';
3
- const getRandomValues = jest.fn(arr => crypto.randomBytes(arr.length));
4
- afterEach(() => {
5
- delete global.crypto;
6
- });
7
- describe('generateUuid', () => {
8
- const uuidv4Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
9
- test('should generate a uuidv4 that matches the expected format', () => {
10
- const id = uniqueId.generateUuid();
11
- expect(uuidv4Regex.test(id)).toEqual(true);
12
- });
13
- test('should support using native crypto library', () => {
14
- global.crypto = {
15
- getRandomValues
16
- };
17
- const id = uniqueId.generateUuid();
18
- expect(uuidv4Regex.test(id)).toEqual(true);
19
- expect(getRandomValues).toHaveBeenCalledTimes(1);
20
- });
21
- });
22
- describe('generateRandomHexString', () => {
23
- const hexRegex = /^[0-9a-f]{8}$/;
24
- test('should generate a valid hex string', () => {
25
- const id = uniqueId.generateRandomHexString(8);
26
- expect(hexRegex.test(id)).toEqual(true);
27
- });
28
- test('should support using native crypto library', () => {
29
- global.crypto = {
30
- getRandomValues
31
- };
32
- const id = uniqueId.generateRandomHexString(8);
33
- expect(hexRegex.test(id)).toEqual(true);
34
- expect(getRandomValues).toHaveBeenCalledTimes(1);
35
- });
36
- });
37
- test('generateSpanId should generate a 16 character hex string', () => {
38
- const id = uniqueId.generateSpanId();
39
- expect(/^[0-9a-f]{16}$/.test(id)).toEqual(true);
40
- });
41
- test('generateTraceId should generate a 32 character hex string', () => {
42
- const id = uniqueId.generateTraceId();
43
- expect(/^[0-9a-f]{32}$/.test(id)).toEqual(true);
44
- });
@@ -1,495 +0,0 @@
1
- import { PREFIX } from './constants';
2
- import { SessionEntity } from './session-entity';
3
- const agentIdentifier = 'test_agent_identifier';
4
- const key = 'test_key';
5
- const value = 'test_value';
6
- class LocalMemory {
7
- constructor() {
8
- let initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
9
- this.state = initialState;
10
- }
11
- get(key) {
12
- try {
13
- return this.state[key];
14
- } catch (err) {
15
- return '';
16
- }
17
- }
18
- set(key, value) {
19
- try {
20
- if (value === undefined || value === null) return this.remove(key);
21
- this.state[key] = value;
22
- } catch (err) {
23
- return;
24
- }
25
- }
26
- remove(key) {
27
- try {
28
- delete this.state[key];
29
- } catch (err) {
30
- return;
31
- }
32
- }
33
- }
34
- jest.mock('../timer/timer');
35
- jest.mock('../timer/interaction-timer');
36
- jest.useFakeTimers();
37
- const mockBrowserScope = jest.fn().mockImplementation(() => true);
38
- jest.mock('../util/global-scope', () => ({
39
- __esModule: true,
40
- get isBrowserScope() {
41
- return mockBrowserScope();
42
- },
43
- get globalScope() {
44
- return global.window;
45
- }
46
- }));
47
- let storage;
48
- beforeEach(() => {
49
- jest.restoreAllMocks();
50
- mockBrowserScope.mockReturnValue(true);
51
- storage = new LocalMemory();
52
- });
53
- describe('constructor', () => {
54
- test('must use required fields', () => {
55
- try {
56
- expect(new SessionEntity({})).toThrow(new Error('Missing Required Fields'));
57
- } catch (err) {}
58
- });
59
- test('top-level properties are set and exposed', () => {
60
- const session = new SessionEntity({
61
- agentIdentifier,
62
- key,
63
- storage
64
- });
65
- expect(session).toMatchObject({
66
- agentIdentifier: expect.any(String),
67
- key: expect.any(String),
68
- expiresMs: expect.any(Number),
69
- expiresTimer: expect.any(Object),
70
- inactiveMs: expect.any(Number),
71
- inactiveTimer: expect.any(Object),
72
- isNew: expect.any(Boolean),
73
- storage: expect.any(Object),
74
- state: expect.objectContaining({
75
- value: expect.any(String),
76
- expiresAt: expect.any(Number),
77
- inactiveAt: expect.any(Number),
78
- sessionReplay: expect.any(Number),
79
- sessionTraceMode: expect.any(Number)
80
- })
81
- });
82
- });
83
- test('can use sane defaults', () => {
84
- const session = new SessionEntity({
85
- agentIdentifier,
86
- key,
87
- storage
88
- });
89
- expect(session.state).toEqual(expect.objectContaining({
90
- value: expect.any(String),
91
- expiresAt: expect.any(Number),
92
- inactiveAt: expect.any(Number),
93
- updatedAt: expect.any(Number),
94
- sessionReplay: expect.any(Number),
95
- sessionTraceMode: expect.any(Number)
96
- }));
97
- });
98
- test('expiresAt is the correct future timestamp - new session', () => {
99
- const now = Date.now();
100
- jest.setSystemTime(now);
101
- const session = new SessionEntity({
102
- agentIdentifier,
103
- key,
104
- storage,
105
- expiresMs: 100
106
- });
107
- expect(session.state.expiresAt).toEqual(now + 100);
108
- });
109
- test('expiresAt is the correct future timestamp - existing session', () => {
110
- const now = Date.now();
111
- jest.setSystemTime(now);
112
- const existingData = new LocalMemory({
113
- ["".concat(PREFIX, "_").concat(key)]: {
114
- value,
115
- expiresAt: now + 5000,
116
- inactiveAt: Infinity,
117
- updatedAt: now,
118
- sessionReplay: 0,
119
- sessionTraceMode: 0,
120
- custom: {}
121
- }
122
- });
123
- const session = new SessionEntity({
124
- agentIdentifier,
125
- key,
126
- expiresMs: 100,
127
- storage: existingData
128
- });
129
- expect(session.state.expiresAt).toEqual(now + 5000);
130
- });
131
- test('expiresAt never expires if 0', () => {
132
- const session = new SessionEntity({
133
- agentIdentifier,
134
- key,
135
- storage,
136
- expiresMs: 0
137
- });
138
- expect(session.state.expiresAt).toEqual(Infinity);
139
- });
140
- test('inactiveAt is the correct future timestamp - new session', () => {
141
- const now = Date.now();
142
- jest.setSystemTime(now);
143
- const session = new SessionEntity({
144
- agentIdentifier,
145
- key,
146
- storage,
147
- inactiveMs: 100
148
- });
149
- expect(session.state.inactiveAt).toEqual(now + 100);
150
- });
151
- test('inactiveAt is the correct future timestamp - existing session', () => {
152
- const now = Date.now();
153
- jest.setSystemTime(now);
154
- const existingData = new LocalMemory({
155
- ["".concat(PREFIX, "_").concat(key)]: {
156
- value,
157
- inactiveAt: now + 5000,
158
- expiresAt: Infinity,
159
- updatedAt: now,
160
- sessionReplay: 0,
161
- sessionTraceMode: 0,
162
- custom: {}
163
- }
164
- });
165
- const session = new SessionEntity({
166
- agentIdentifier,
167
- key,
168
- inactiveMs: 100,
169
- storage: existingData
170
- });
171
- expect(session.state.inactiveAt).toEqual(now + 5000);
172
- });
173
- test('inactiveAt never expires if 0', () => {
174
- const session = new SessionEntity({
175
- agentIdentifier,
176
- key,
177
- storage,
178
- inactiveMs: 0
179
- });
180
- expect(session.state.inactiveAt).toEqual(Infinity);
181
- });
182
- test('should handle isNew', () => {
183
- const newSession = new SessionEntity({
184
- agentIdentifier,
185
- key,
186
- storage,
187
- expiresMs: 10
188
- });
189
- expect(newSession.isNew).toBeTruthy();
190
- const newStorage = new LocalMemory({
191
- ["".concat(PREFIX, "_").concat(key)]: {
192
- value,
193
- expiresAt: Infinity,
194
- inactiveAt: Infinity,
195
- updatedAt: Date.now(),
196
- sessionReplay: 0,
197
- sessionTraceMode: 0,
198
- custom: {}
199
- }
200
- });
201
- const existingSession = new SessionEntity({
202
- agentIdentifier,
203
- key,
204
- expiresMs: 10,
205
- storage: newStorage
206
- });
207
- expect(existingSession.isNew).toBeFalsy();
208
- });
209
- test('invalid stored values sets new defaults', () => {
210
- // missing required fields
211
- const storage = new LocalMemory({
212
- ["".concat(PREFIX, "_").concat(key)]: {
213
- invalid_fields: true
214
- }
215
- });
216
- const session = new SessionEntity({
217
- agentIdentifier,
218
- key,
219
- storage
220
- });
221
- expect(session.state).toEqual(expect.objectContaining({
222
- value: expect.any(String),
223
- expiresAt: expect.any(Number),
224
- inactiveAt: expect.any(Number),
225
- updatedAt: expect.any(Number),
226
- sessionReplay: expect.any(Number),
227
- sessionTraceMode: expect.any(Number)
228
- }));
229
- });
230
- test('expired expiresAt value in storage sets new defaults', () => {
231
- const now = Date.now();
232
- jest.setSystemTime(now);
233
- const storage = new LocalMemory({
234
- ["".concat(PREFIX, "_").concat(key)]: {
235
- value,
236
- expiresAt: now - 100,
237
- inactiveAt: Infinity
238
- }
239
- });
240
- const session = new SessionEntity({
241
- agentIdentifier,
242
- key,
243
- storage
244
- });
245
- expect(session.state).toEqual(expect.objectContaining({
246
- value: expect.any(String),
247
- expiresAt: expect.any(Number),
248
- inactiveAt: expect.any(Number),
249
- updatedAt: expect.any(Number),
250
- sessionReplay: expect.any(Number),
251
- sessionTraceMode: expect.any(Number)
252
- }));
253
- });
254
- test('expired inactiveAt value in storage sets new defaults', () => {
255
- const now = Date.now();
256
- jest.setSystemTime(now);
257
- const storage = new LocalMemory({
258
- ["".concat(PREFIX, "_").concat(key)]: {
259
- value,
260
- inactiveAt: now - 100,
261
- expiresAt: Infinity
262
- }
263
- });
264
- const session = new SessionEntity({
265
- agentIdentifier,
266
- key,
267
- storage
268
- });
269
- expect(session.state).toEqual(expect.objectContaining({
270
- value: expect.any(String),
271
- expiresAt: expect.any(Number),
272
- inactiveAt: expect.any(Number),
273
- updatedAt: expect.any(Number),
274
- sessionReplay: expect.any(Number),
275
- sessionTraceMode: expect.any(Number)
276
- }));
277
- });
278
- });
279
- describe('reset()', () => {
280
- test('should create new default values when resetting', () => {
281
- const now = Date.now();
282
- jest.setSystemTime(now);
283
- const session = new SessionEntity({
284
- agentIdentifier,
285
- key,
286
- storage,
287
- expiresMs: 10
288
- });
289
- const sessionVal = session.value;
290
- expect(session.state.value).toBeTruthy();
291
- session.reset();
292
- expect(session.state.value).toBeTruthy();
293
- expect(session.state.value).not.toEqual(sessionVal);
294
- });
295
- test('custom data should be wiped on reset', () => {
296
- const now = Date.now();
297
- jest.setSystemTime(now);
298
- const session = new SessionEntity({
299
- agentIdentifier,
300
- key,
301
- storage,
302
- expiresMs: 10
303
- });
304
- session.syncCustomAttribute('test', 123);
305
- expect(session.state.custom.test).toEqual(123);
306
- expect(session.read().custom.test).toEqual(123);
307
-
308
- // simulate a timer expiring
309
- session.reset();
310
- expect(session.state.custom?.test).toEqual(undefined);
311
- expect(session.read()?.custom?.test).toEqual(undefined);
312
- });
313
- });
314
- describe('read()', () => {
315
- test('"new" sessions get data from read()', () => {
316
- const newSession = new SessionEntity({
317
- agentIdentifier,
318
- key,
319
- storage,
320
- expiresMs: 10
321
- });
322
- expect(newSession.isNew).toBeTruthy();
323
- expect(newSession.read()).toEqual(expect.objectContaining({
324
- value: expect.any(String),
325
- expiresAt: expect.any(Number),
326
- inactiveAt: expect.any(Number),
327
- sessionReplay: expect.any(Number),
328
- sessionTraceMode: expect.any(Number)
329
- }));
330
- });
331
- test('"pre-existing" sessions get data from read()', () => {
332
- const storage = new LocalMemory({
333
- ["".concat(PREFIX, "_").concat(key)]: {
334
- value,
335
- expiresAt: Infinity,
336
- inactiveAt: Infinity,
337
- updatedAt: Date.now(),
338
- sessionReplay: 0,
339
- sessionTraceMode: 0,
340
- custom: {}
341
- }
342
- });
343
- const session = new SessionEntity({
344
- agentIdentifier,
345
- key,
346
- storage
347
- });
348
- expect(session.isNew).toBeFalsy();
349
- expect(session.read()).toEqual(expect.objectContaining({
350
- value,
351
- expiresAt: Infinity,
352
- inactiveAt: Infinity
353
- }));
354
- });
355
- });
356
- describe('write()', () => {
357
- test('write() sets data to top-level wrapper', () => {
358
- const session = new SessionEntity({
359
- agentIdentifier,
360
- key,
361
- storage
362
- });
363
- expect(session.state.value).not.toEqual(value);
364
- expect(session.state.expiresAt).not.toEqual(Infinity);
365
- expect(session.state.inactiveAt).not.toEqual(Infinity);
366
- session.write({
367
- ...session.state,
368
- value,
369
- expiresAt: Infinity,
370
- inactiveAt: Infinity
371
- });
372
- expect(session.state.value).toEqual(value);
373
- expect(session.state.expiresAt).toEqual(Infinity);
374
- expect(session.state.inactiveAt).toEqual(Infinity);
375
- });
376
- test('write() sets data that read() can access', () => {
377
- const now = Date.now();
378
- jest.setSystemTime(now);
379
- const session = new SessionEntity({
380
- agentIdentifier,
381
- key,
382
- storage
383
- });
384
- session.write({
385
- ...session.state,
386
- value,
387
- expiresAt: now + 100,
388
- inactiveAt: now + 100
389
- });
390
- const read = session.read();
391
- expect(read.value).toEqual(value);
392
- expect(read.expiresAt).toEqual(now + 100);
393
- expect(read.inactiveAt).toEqual(now + 100);
394
- });
395
- test('write() does not run with invalid data', () => {
396
- const session = new SessionEntity({
397
- agentIdentifier,
398
- key,
399
- storage
400
- });
401
- let out = session.write();
402
- expect(out).toEqual(undefined);
403
- out = session.write('string');
404
- expect(out).toEqual(undefined);
405
- out = session.write(123);
406
- expect(out).toEqual(undefined);
407
- out = session.write(true);
408
- expect(out).toEqual(undefined);
409
- out = session.write(false);
410
- expect(out).toEqual(undefined);
411
- });
412
- });
413
- describe('refresh()', () => {
414
- test('refresh sets inactiveAt to future time', () => {
415
- const now = Date.now();
416
- jest.setSystemTime(now);
417
- const session = new SessionEntity({
418
- agentIdentifier,
419
- key,
420
- storage,
421
- inactiveMs: 100
422
- });
423
- expect(session.state.inactiveAt).toEqual(now + 100);
424
- jest.setSystemTime(now + 1000);
425
- session.refresh();
426
- expect(session.state.inactiveAt).toEqual(now + 100 + 1000);
427
- });
428
- test('refresh resets the entity if expiresTimer is invalid', () => {
429
- const now = Date.now();
430
- jest.setSystemTime(now);
431
- const session = new SessionEntity({
432
- agentIdentifier,
433
- key,
434
- storage,
435
- value
436
- });
437
- expect(session.state.value).toEqual(value);
438
- session.write({
439
- ...session.state,
440
- expiresAt: now - 1
441
- });
442
- session.refresh();
443
- expect(session.state.value).not.toEqual(value);
444
- });
445
- test('refresh resets the entity if inactiveTimer is invalid', () => {
446
- const now = Date.now();
447
- jest.setSystemTime(now);
448
- const session = new SessionEntity({
449
- agentIdentifier,
450
- key,
451
- storage,
452
- value
453
- });
454
- expect(session.state.value).toEqual(value);
455
- session.write({
456
- ...session.state,
457
- inactiveAt: now - 1
458
- });
459
- session.refresh();
460
- expect(session.state.value).not.toEqual(value);
461
- });
462
- });
463
- describe('syncCustomAttribute()', () => {
464
- test('Custom data can be managed by session entity', () => {
465
- const session = new SessionEntity({
466
- agentIdentifier,
467
- key,
468
- storage
469
- });
470
-
471
- // if custom has never been set, and a "delete" action is triggered, do nothing
472
- session.syncCustomAttribute('test', null);
473
- expect(session?.state?.custom?.test).toEqual(undefined);
474
- session.syncCustomAttribute('test', 1);
475
- expect(session?.state?.custom?.test).toEqual(1);
476
- session.syncCustomAttribute('test', 'string');
477
- expect(session?.state?.custom?.test).toEqual('string');
478
- session.syncCustomAttribute('test', false);
479
- expect(session?.state?.custom?.test).toEqual(false);
480
-
481
- // null specifically deletes the object completely
482
- session.syncCustomAttribute('test', null);
483
- expect(session?.state?.custom?.test).toEqual(undefined);
484
- });
485
- test('Only runs in browser scope', () => {
486
- mockBrowserScope.mockReturnValue(false);
487
- const session = new SessionEntity({
488
- agentIdentifier,
489
- key,
490
- storage
491
- });
492
- session.syncCustomAttribute('test', 1);
493
- expect(session.read().custom?.test).toEqual(undefined);
494
- });
495
- });
@@ -1,12 +0,0 @@
1
- import { LocalStorage } from './local-storage';
2
- test('Local-memory', () => {
3
- const LS = new LocalStorage();
4
- LS.set('test', 1);
5
- expect(LS.get('test')).toEqual('1');
6
- LS.set('test');
7
- expect(LS.get('test')).toEqual(undefined);
8
- LS.set('test', 2);
9
- expect(LS.get('test')).toEqual('2');
10
- LS.remove('test');
11
- expect(LS.get('test')).toEqual(undefined);
12
- });