@kubesense/kubesense-browser-core 1.0.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 (725) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/cjs/boot/displayAlreadyInitializedError.d.ts +2 -0
  4. package/cjs/boot/displayAlreadyInitializedError.js +10 -0
  5. package/cjs/boot/displayAlreadyInitializedError.js.map +1 -0
  6. package/cjs/boot/init.d.ts +13 -0
  7. package/cjs/boot/init.js +39 -0
  8. package/cjs/boot/init.js.map +1 -0
  9. package/cjs/browser/addEventListener.d.ts +87 -0
  10. package/cjs/browser/addEventListener.js +55 -0
  11. package/cjs/browser/addEventListener.js.map +1 -0
  12. package/cjs/browser/browser.types.d.ts +51 -0
  13. package/cjs/browser/browser.types.js +6 -0
  14. package/cjs/browser/browser.types.js.map +1 -0
  15. package/cjs/browser/cookie.d.ts +26 -0
  16. package/cjs/browser/cookie.js +112 -0
  17. package/cjs/browser/cookie.js.map +1 -0
  18. package/cjs/browser/fetchObservable.d.ts +38 -0
  19. package/cjs/browser/fetchObservable.js +103 -0
  20. package/cjs/browser/fetchObservable.js.map +1 -0
  21. package/cjs/browser/pageMayExitObservable.d.ts +14 -0
  22. package/cjs/browser/pageMayExitObservable.js +45 -0
  23. package/cjs/browser/pageMayExitObservable.js.map +1 -0
  24. package/cjs/browser/runOnReadyState.d.ts +5 -0
  25. package/cjs/browser/runOnReadyState.js +20 -0
  26. package/cjs/browser/runOnReadyState.js.map +1 -0
  27. package/cjs/browser/xhrObservable.d.ts +24 -0
  28. package/cjs/browser/xhrObservable.js +86 -0
  29. package/cjs/browser/xhrObservable.js.map +1 -0
  30. package/cjs/domain/allowedTrackingOrigins.d.ts +4 -0
  31. package/cjs/domain/allowedTrackingOrigins.js +25 -0
  32. package/cjs/domain/allowedTrackingOrigins.js.map +1 -0
  33. package/cjs/domain/bufferedData.d.ts +14 -0
  34. package/cjs/domain/bufferedData.js +22 -0
  35. package/cjs/domain/bufferedData.js.map +1 -0
  36. package/cjs/domain/configuration/configuration.d.ts +284 -0
  37. package/cjs/domain/configuration/configuration.js +135 -0
  38. package/cjs/domain/configuration/configuration.js.map +1 -0
  39. package/cjs/domain/configuration/endpointBuilder.d.ts +12 -0
  40. package/cjs/domain/configuration/endpointBuilder.js +66 -0
  41. package/cjs/domain/configuration/endpointBuilder.js.map +1 -0
  42. package/cjs/domain/configuration/index.d.ts +6 -0
  43. package/cjs/domain/configuration/index.js +31 -0
  44. package/cjs/domain/configuration/index.js.map +1 -0
  45. package/cjs/domain/configuration/transportConfiguration.d.ts +21 -0
  46. package/cjs/domain/configuration/transportConfiguration.js +58 -0
  47. package/cjs/domain/configuration/transportConfiguration.js.map +1 -0
  48. package/cjs/domain/connectivity/connectivity.d.ts +14 -0
  49. package/cjs/domain/connectivity/connectivity.js +14 -0
  50. package/cjs/domain/connectivity/connectivity.js.map +1 -0
  51. package/cjs/domain/connectivity/index.d.ts +1 -0
  52. package/cjs/domain/connectivity/index.js +18 -0
  53. package/cjs/domain/connectivity/index.js.map +1 -0
  54. package/cjs/domain/console/consoleObservable.d.ts +21 -0
  55. package/cjs/domain/console/consoleObservable.js +84 -0
  56. package/cjs/domain/console/consoleObservable.js.map +1 -0
  57. package/cjs/domain/context/contextConstants.d.ts +21 -0
  58. package/cjs/domain/context/contextConstants.js +18 -0
  59. package/cjs/domain/context/contextConstants.js.map +1 -0
  60. package/cjs/domain/context/contextManager.d.ts +19 -0
  61. package/cjs/domain/context/contextManager.js +59 -0
  62. package/cjs/domain/context/contextManager.js.map +1 -0
  63. package/cjs/domain/context/contextUtils.d.ts +5 -0
  64. package/cjs/domain/context/contextUtils.js +16 -0
  65. package/cjs/domain/context/contextUtils.js.map +1 -0
  66. package/cjs/domain/context/defineContextMethod.d.ts +6 -0
  67. package/cjs/domain/context/defineContextMethod.js +21 -0
  68. package/cjs/domain/context/defineContextMethod.js.map +1 -0
  69. package/cjs/domain/context/storeContextManager.d.ts +6 -0
  70. package/cjs/domain/context/storeContextManager.js +40 -0
  71. package/cjs/domain/context/storeContextManager.js.map +1 -0
  72. package/cjs/domain/contexts/accountContext.d.ts +26 -0
  73. package/cjs/domain/contexts/accountContext.js +33 -0
  74. package/cjs/domain/contexts/accountContext.js.map +1 -0
  75. package/cjs/domain/contexts/globalContext.d.ts +18 -0
  76. package/cjs/domain/contexts/globalContext.js +21 -0
  77. package/cjs/domain/contexts/globalContext.js.map +1 -0
  78. package/cjs/domain/contexts/rumInternalContext.type.d.ts +14 -0
  79. package/cjs/domain/contexts/rumInternalContext.type.js +3 -0
  80. package/cjs/domain/contexts/rumInternalContext.type.js.map +1 -0
  81. package/cjs/domain/contexts/userContext.d.ts +31 -0
  82. package/cjs/domain/contexts/userContext.js +120 -0
  83. package/cjs/domain/contexts/userContext.js.map +1 -0
  84. package/cjs/domain/deflate/deflate.types.d.ts +40 -0
  85. package/cjs/domain/deflate/deflate.types.js +3 -0
  86. package/cjs/domain/deflate/deflate.types.js.map +1 -0
  87. package/cjs/domain/deflate/index.d.ts +1 -0
  88. package/cjs/domain/deflate/index.js +18 -0
  89. package/cjs/domain/deflate/index.js.map +1 -0
  90. package/cjs/domain/error/error.d.ts +23 -0
  91. package/cjs/domain/error/error.js +81 -0
  92. package/cjs/domain/error/error.js.map +1 -0
  93. package/cjs/domain/error/error.types.d.ts +47 -0
  94. package/cjs/domain/error/error.types.js +13 -0
  95. package/cjs/domain/error/error.types.js.map +1 -0
  96. package/cjs/domain/error/trackRuntimeError.d.ts +11 -0
  97. package/cjs/domain/error/trackRuntimeError.js +48 -0
  98. package/cjs/domain/error/trackRuntimeError.js.map +1 -0
  99. package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  100. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +41 -0
  101. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  102. package/cjs/domain/extension/extensionUtils.d.ts +10 -0
  103. package/cjs/domain/extension/extensionUtils.js +30 -0
  104. package/cjs/domain/extension/extensionUtils.js.map +1 -0
  105. package/cjs/domain/intakeSites.d.ts +4 -0
  106. package/cjs/domain/intakeSites.js +7 -0
  107. package/cjs/domain/intakeSites.js.map +1 -0
  108. package/cjs/domain/report/browser.types.d.ts +34 -0
  109. package/cjs/domain/report/browser.types.js +3 -0
  110. package/cjs/domain/report/browser.types.js.map +1 -0
  111. package/cjs/domain/report/reportObservable.d.ts +14 -0
  112. package/cjs/domain/report/reportObservable.js +99 -0
  113. package/cjs/domain/report/reportObservable.js.map +1 -0
  114. package/cjs/domain/resourceUtils.d.ts +18 -0
  115. package/cjs/domain/resourceUtils.js +20 -0
  116. package/cjs/domain/resourceUtils.js.map +1 -0
  117. package/cjs/domain/session/oldCookiesMigration.d.ts +11 -0
  118. package/cjs/domain/session/oldCookiesMigration.js +40 -0
  119. package/cjs/domain/session/oldCookiesMigration.js.map +1 -0
  120. package/cjs/domain/session/sessionConstants.d.ts +15 -0
  121. package/cjs/domain/session/sessionConstants.js +16 -0
  122. package/cjs/domain/session/sessionConstants.js.map +1 -0
  123. package/cjs/domain/session/sessionManager.d.ts +28 -0
  124. package/cjs/domain/session/sessionManager.js +201 -0
  125. package/cjs/domain/session/sessionManager.js.map +1 -0
  126. package/cjs/domain/session/sessionState.d.ts +16 -0
  127. package/cjs/domain/session/sessionState.js +70 -0
  128. package/cjs/domain/session/sessionState.js.map +1 -0
  129. package/cjs/domain/session/sessionStateValidation.d.ts +3 -0
  130. package/cjs/domain/session/sessionStateValidation.js +11 -0
  131. package/cjs/domain/session/sessionStateValidation.js.map +1 -0
  132. package/cjs/domain/session/sessionStore.d.ts +38 -0
  133. package/cjs/domain/session/sessionStore.js +186 -0
  134. package/cjs/domain/session/sessionStore.js.map +1 -0
  135. package/cjs/domain/session/sessionStoreOperations.d.ts +12 -0
  136. package/cjs/domain/session/sessionStoreOperations.js +119 -0
  137. package/cjs/domain/session/sessionStoreOperations.js.map +1 -0
  138. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +12 -0
  139. package/cjs/domain/session/storeStrategies/sessionInCookie.js +104 -0
  140. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  141. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
  142. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +42 -0
  143. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  144. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  145. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +5 -0
  146. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  147. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  148. package/cjs/domain/synthetics/syntheticsWorkerValues.js +31 -0
  149. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  150. package/cjs/domain/tags.d.ts +6 -0
  151. package/cjs/domain/tags.js +66 -0
  152. package/cjs/domain/tags.js.map +1 -0
  153. package/cjs/domain/telemetry/index.d.ts +4 -0
  154. package/cjs/domain/telemetry/index.js +28 -0
  155. package/cjs/domain/telemetry/index.js.map +1 -0
  156. package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  157. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +9 -0
  158. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  159. package/cjs/domain/telemetry/telemetry.d.ts +56 -0
  160. package/cjs/domain/telemetry/telemetry.js +245 -0
  161. package/cjs/domain/telemetry/telemetry.js.map +1 -0
  162. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +866 -0
  163. package/cjs/domain/telemetry/telemetryEvent.types.js +7 -0
  164. package/cjs/domain/telemetry/telemetryEvent.types.js.map +1 -0
  165. package/cjs/domain/trackingConsent.d.ts +13 -0
  166. package/cjs/domain/trackingConsent.js +28 -0
  167. package/cjs/domain/trackingConsent.js.map +1 -0
  168. package/cjs/domain/userAgentData/index.d.ts +1 -0
  169. package/cjs/domain/userAgentData/index.js +18 -0
  170. package/cjs/domain/userAgentData/index.js.map +1 -0
  171. package/cjs/domain/userAgentData/userAgentData.d.ts +22 -0
  172. package/cjs/domain/userAgentData/userAgentData.js +109 -0
  173. package/cjs/domain/userAgentData/userAgentData.js.map +1 -0
  174. package/cjs/index.d.ts +101 -0
  175. package/cjs/index.js +199 -0
  176. package/cjs/index.js.map +1 -0
  177. package/cjs/tools/abstractHooks.d.ts +24 -0
  178. package/cjs/tools/abstractHooks.js +41 -0
  179. package/cjs/tools/abstractHooks.js.map +1 -0
  180. package/cjs/tools/abstractLifeCycle.d.ts +23 -0
  181. package/cjs/tools/abstractLifeCycle.js +28 -0
  182. package/cjs/tools/abstractLifeCycle.js.map +1 -0
  183. package/cjs/tools/boundedBuffer.d.ts +16 -0
  184. package/cjs/tools/boundedBuffer.js +32 -0
  185. package/cjs/tools/boundedBuffer.js.map +1 -0
  186. package/cjs/tools/catchUserErrors.d.ts +1 -0
  187. package/cjs/tools/catchUserErrors.js +15 -0
  188. package/cjs/tools/catchUserErrors.js.map +1 -0
  189. package/cjs/tools/display.d.ts +38 -0
  190. package/cjs/tools/display.js +44 -0
  191. package/cjs/tools/display.js.map +1 -0
  192. package/cjs/tools/encoder.d.ts +54 -0
  193. package/cjs/tools/encoder.js +40 -0
  194. package/cjs/tools/encoder.js.map +1 -0
  195. package/cjs/tools/experimentalFeatures.d.ts +21 -0
  196. package/cjs/tools/experimentalFeatures.js +50 -0
  197. package/cjs/tools/experimentalFeatures.js.map +1 -0
  198. package/cjs/tools/getZoneJsOriginalValue.d.ts +19 -0
  199. package/cjs/tools/getZoneJsOriginalValue.js +29 -0
  200. package/cjs/tools/getZoneJsOriginalValue.js.map +1 -0
  201. package/cjs/tools/globalObject.d.ts +19 -0
  202. package/cjs/tools/globalObject.js +44 -0
  203. package/cjs/tools/globalObject.js.map +1 -0
  204. package/cjs/tools/instrumentMethod.d.ts +75 -0
  205. package/cjs/tools/instrumentMethod.js +118 -0
  206. package/cjs/tools/instrumentMethod.js.map +1 -0
  207. package/cjs/tools/matchOption.d.ts +8 -0
  208. package/cjs/tools/matchOption.js +35 -0
  209. package/cjs/tools/matchOption.js.map +1 -0
  210. package/cjs/tools/mergeInto.d.ts +25 -0
  211. package/cjs/tools/mergeInto.js +98 -0
  212. package/cjs/tools/mergeInto.js.map +1 -0
  213. package/cjs/tools/monitor.d.ts +9 -0
  214. package/cjs/tools/monitor.js +61 -0
  215. package/cjs/tools/monitor.js.map +1 -0
  216. package/cjs/tools/observable.d.ts +30 -0
  217. package/cjs/tools/observable.js +89 -0
  218. package/cjs/tools/observable.js.map +1 -0
  219. package/cjs/tools/queueMicrotask.d.ts +1 -0
  220. package/cjs/tools/queueMicrotask.js +17 -0
  221. package/cjs/tools/queueMicrotask.js.map +1 -0
  222. package/cjs/tools/readBytesFromStream.d.ts +10 -0
  223. package/cjs/tools/readBytesFromStream.js +28 -0
  224. package/cjs/tools/readBytesFromStream.js.map +1 -0
  225. package/cjs/tools/requestIdleCallback.d.ts +12 -0
  226. package/cjs/tools/requestIdleCallback.js +35 -0
  227. package/cjs/tools/requestIdleCallback.js.map +1 -0
  228. package/cjs/tools/sendToExtension.d.ts +3 -0
  229. package/cjs/tools/sendToExtension.js +11 -0
  230. package/cjs/tools/sendToExtension.js.map +1 -0
  231. package/cjs/tools/serialisation/context.d.ts +9 -0
  232. package/cjs/tools/serialisation/context.js +3 -0
  233. package/cjs/tools/serialisation/context.js.map +1 -0
  234. package/cjs/tools/serialisation/jsonStringify.d.ts +13 -0
  235. package/cjs/tools/serialisation/jsonStringify.js +48 -0
  236. package/cjs/tools/serialisation/jsonStringify.js.map +1 -0
  237. package/cjs/tools/serialisation/sanitize.d.ts +18 -0
  238. package/cjs/tools/serialisation/sanitize.js +188 -0
  239. package/cjs/tools/serialisation/sanitize.js.map +1 -0
  240. package/cjs/tools/stackTrace/computeStackTrace.d.ts +25 -0
  241. package/cjs/tools/stackTrace/computeStackTrace.js +187 -0
  242. package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -0
  243. package/cjs/tools/stackTrace/handlingStack.d.ts +10 -0
  244. package/cjs/tools/stackTrace/handlingStack.js +46 -0
  245. package/cjs/tools/stackTrace/handlingStack.js.map +1 -0
  246. package/cjs/tools/taskQueue.d.ts +15 -0
  247. package/cjs/tools/taskQueue.js +54 -0
  248. package/cjs/tools/taskQueue.js.map +1 -0
  249. package/cjs/tools/timer.d.ts +5 -0
  250. package/cjs/tools/timer.js +22 -0
  251. package/cjs/tools/timer.js.map +1 -0
  252. package/cjs/tools/utils/arrayUtils.d.ts +3 -0
  253. package/cjs/tools/utils/arrayUtils.js +20 -0
  254. package/cjs/tools/utils/arrayUtils.js.map +1 -0
  255. package/cjs/tools/utils/browserDetection.d.ts +8 -0
  256. package/cjs/tools/utils/browserDetection.js +33 -0
  257. package/cjs/tools/utils/browserDetection.js.map +1 -0
  258. package/cjs/tools/utils/byteUtils.d.ts +8 -0
  259. package/cjs/tools/utils/byteUtils.js +34 -0
  260. package/cjs/tools/utils/byteUtils.js.map +1 -0
  261. package/cjs/tools/utils/functionUtils.d.ts +8 -0
  262. package/cjs/tools/utils/functionUtils.js +43 -0
  263. package/cjs/tools/utils/functionUtils.js.map +1 -0
  264. package/cjs/tools/utils/numberUtils.d.ts +8 -0
  265. package/cjs/tools/utils/numberUtils.js +23 -0
  266. package/cjs/tools/utils/numberUtils.js.map +1 -0
  267. package/cjs/tools/utils/objectUtils.d.ts +10 -0
  268. package/cjs/tools/utils/objectUtils.js +23 -0
  269. package/cjs/tools/utils/objectUtils.js.map +1 -0
  270. package/cjs/tools/utils/polyfills.d.ts +7 -0
  271. package/cjs/tools/utils/polyfills.js +23 -0
  272. package/cjs/tools/utils/polyfills.js.map +1 -0
  273. package/cjs/tools/utils/responseUtils.d.ts +2 -0
  274. package/cjs/tools/utils/responseUtils.js +17 -0
  275. package/cjs/tools/utils/responseUtils.js.map +1 -0
  276. package/cjs/tools/utils/stringUtils.d.ts +23 -0
  277. package/cjs/tools/utils/stringUtils.js +91 -0
  278. package/cjs/tools/utils/stringUtils.js.map +1 -0
  279. package/cjs/tools/utils/timeUtils.d.ts +53 -0
  280. package/cjs/tools/utils/timeUtils.js +101 -0
  281. package/cjs/tools/utils/timeUtils.js.map +1 -0
  282. package/cjs/tools/utils/timezone.d.ts +1 -0
  283. package/cjs/tools/utils/timezone.js +13 -0
  284. package/cjs/tools/utils/timezone.js.map +1 -0
  285. package/cjs/tools/utils/typeUtils.d.ts +4 -0
  286. package/cjs/tools/utils/typeUtils.js +16 -0
  287. package/cjs/tools/utils/typeUtils.js.map +1 -0
  288. package/cjs/tools/utils/urlPolyfill.d.ts +5 -0
  289. package/cjs/tools/utils/urlPolyfill.js +59 -0
  290. package/cjs/tools/utils/urlPolyfill.js.map +1 -0
  291. package/cjs/tools/valueHistory.d.ts +27 -0
  292. package/cjs/tools/valueHistory.js +104 -0
  293. package/cjs/tools/valueHistory.js.map +1 -0
  294. package/cjs/transport/batch.d.ts +16 -0
  295. package/cjs/transport/batch.js +110 -0
  296. package/cjs/transport/batch.js.map +1 -0
  297. package/cjs/transport/eventBridge.d.ts +21 -0
  298. package/cjs/transport/eventBridge.js +46 -0
  299. package/cjs/transport/eventBridge.js.map +1 -0
  300. package/cjs/transport/flushController.d.ts +65 -0
  301. package/cjs/transport/flushController.js +123 -0
  302. package/cjs/transport/flushController.js.map +1 -0
  303. package/cjs/transport/httpRequest.d.ts +57 -0
  304. package/cjs/transport/httpRequest.js +107 -0
  305. package/cjs/transport/httpRequest.js.map +1 -0
  306. package/cjs/transport/index.d.ts +7 -0
  307. package/cjs/transport/index.js +15 -0
  308. package/cjs/transport/index.js.map +1 -0
  309. package/cjs/transport/sendWithRetryStrategy.d.ts +41 -0
  310. package/cjs/transport/sendWithRetryStrategy.js +163 -0
  311. package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
  312. package/esm/boot/displayAlreadyInitializedError.d.ts +2 -0
  313. package/esm/boot/displayAlreadyInitializedError.js +7 -0
  314. package/esm/boot/displayAlreadyInitializedError.js.map +1 -0
  315. package/esm/boot/init.d.ts +13 -0
  316. package/esm/boot/init.js +35 -0
  317. package/esm/boot/init.js.map +1 -0
  318. package/esm/browser/addEventListener.d.ts +87 -0
  319. package/esm/browser/addEventListener.js +51 -0
  320. package/esm/browser/addEventListener.js.map +1 -0
  321. package/esm/browser/browser.types.d.ts +51 -0
  322. package/esm/browser/browser.types.js +5 -0
  323. package/esm/browser/browser.types.js.map +1 -0
  324. package/esm/browser/cookie.d.ts +26 -0
  325. package/esm/browser/cookie.js +101 -0
  326. package/esm/browser/cookie.js.map +1 -0
  327. package/esm/browser/fetchObservable.d.ts +38 -0
  328. package/esm/browser/fetchObservable.js +99 -0
  329. package/esm/browser/fetchObservable.js.map +1 -0
  330. package/esm/browser/pageMayExitObservable.d.ts +14 -0
  331. package/esm/browser/pageMayExitObservable.js +40 -0
  332. package/esm/browser/pageMayExitObservable.js.map +1 -0
  333. package/esm/browser/runOnReadyState.d.ts +5 -0
  334. package/esm/browser/runOnReadyState.js +16 -0
  335. package/esm/browser/runOnReadyState.js.map +1 -0
  336. package/esm/browser/xhrObservable.d.ts +24 -0
  337. package/esm/browser/xhrObservable.js +83 -0
  338. package/esm/browser/xhrObservable.js.map +1 -0
  339. package/esm/domain/allowedTrackingOrigins.d.ts +4 -0
  340. package/esm/domain/allowedTrackingOrigins.js +21 -0
  341. package/esm/domain/allowedTrackingOrigins.js.map +1 -0
  342. package/esm/domain/bufferedData.d.ts +14 -0
  343. package/esm/domain/bufferedData.js +19 -0
  344. package/esm/domain/bufferedData.js.map +1 -0
  345. package/esm/domain/configuration/configuration.d.ts +284 -0
  346. package/esm/domain/configuration/configuration.js +129 -0
  347. package/esm/domain/configuration/configuration.js.map +1 -0
  348. package/esm/domain/configuration/endpointBuilder.d.ts +12 -0
  349. package/esm/domain/configuration/endpointBuilder.js +62 -0
  350. package/esm/domain/configuration/endpointBuilder.js.map +1 -0
  351. package/esm/domain/configuration/index.d.ts +6 -0
  352. package/esm/domain/configuration/index.js +5 -0
  353. package/esm/domain/configuration/index.js.map +1 -0
  354. package/esm/domain/configuration/transportConfiguration.d.ts +21 -0
  355. package/esm/domain/configuration/transportConfiguration.js +54 -0
  356. package/esm/domain/configuration/transportConfiguration.js.map +1 -0
  357. package/esm/domain/connectivity/connectivity.d.ts +14 -0
  358. package/esm/domain/connectivity/connectivity.js +11 -0
  359. package/esm/domain/connectivity/connectivity.js.map +1 -0
  360. package/esm/domain/connectivity/index.d.ts +1 -0
  361. package/esm/domain/connectivity/index.js +2 -0
  362. package/esm/domain/connectivity/index.js.map +1 -0
  363. package/esm/domain/console/consoleObservable.d.ts +21 -0
  364. package/esm/domain/console/consoleObservable.js +80 -0
  365. package/esm/domain/console/consoleObservable.js.map +1 -0
  366. package/esm/domain/context/contextConstants.d.ts +21 -0
  367. package/esm/domain/context/contextConstants.js +15 -0
  368. package/esm/domain/context/contextConstants.js.map +1 -0
  369. package/esm/domain/context/contextManager.d.ts +19 -0
  370. package/esm/domain/context/contextManager.js +56 -0
  371. package/esm/domain/context/contextManager.js.map +1 -0
  372. package/esm/domain/context/contextUtils.d.ts +5 -0
  373. package/esm/domain/context/contextUtils.js +13 -0
  374. package/esm/domain/context/contextUtils.js.map +1 -0
  375. package/esm/domain/context/defineContextMethod.d.ts +6 -0
  376. package/esm/domain/context/defineContextMethod.js +17 -0
  377. package/esm/domain/context/defineContextMethod.js.map +1 -0
  378. package/esm/domain/context/storeContextManager.d.ts +6 -0
  379. package/esm/domain/context/storeContextManager.js +35 -0
  380. package/esm/domain/context/storeContextManager.js.map +1 -0
  381. package/esm/domain/contexts/accountContext.d.ts +26 -0
  382. package/esm/domain/contexts/accountContext.js +29 -0
  383. package/esm/domain/contexts/accountContext.js.map +1 -0
  384. package/esm/domain/contexts/globalContext.d.ts +18 -0
  385. package/esm/domain/contexts/globalContext.js +17 -0
  386. package/esm/domain/contexts/globalContext.js.map +1 -0
  387. package/esm/domain/contexts/rumInternalContext.type.d.ts +14 -0
  388. package/esm/domain/contexts/rumInternalContext.type.js +2 -0
  389. package/esm/domain/contexts/rumInternalContext.type.js.map +1 -0
  390. package/esm/domain/contexts/userContext.d.ts +31 -0
  391. package/esm/domain/contexts/userContext.js +116 -0
  392. package/esm/domain/contexts/userContext.js.map +1 -0
  393. package/esm/domain/deflate/deflate.types.d.ts +40 -0
  394. package/esm/domain/deflate/deflate.types.js +2 -0
  395. package/esm/domain/deflate/deflate.types.js.map +1 -0
  396. package/esm/domain/deflate/index.d.ts +1 -0
  397. package/esm/domain/deflate/index.js +2 -0
  398. package/esm/domain/deflate/index.js.map +1 -0
  399. package/esm/domain/error/error.d.ts +23 -0
  400. package/esm/domain/error/error.js +72 -0
  401. package/esm/domain/error/error.js.map +1 -0
  402. package/esm/domain/error/error.types.d.ts +47 -0
  403. package/esm/domain/error/error.types.js +10 -0
  404. package/esm/domain/error/error.types.js.map +1 -0
  405. package/esm/domain/error/trackRuntimeError.d.ts +11 -0
  406. package/esm/domain/error/trackRuntimeError.js +43 -0
  407. package/esm/domain/error/trackRuntimeError.js.map +1 -0
  408. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  409. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +38 -0
  410. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  411. package/esm/domain/extension/extensionUtils.d.ts +10 -0
  412. package/esm/domain/extension/extensionUtils.js +25 -0
  413. package/esm/domain/extension/extensionUtils.js.map +1 -0
  414. package/esm/domain/intakeSites.d.ts +4 -0
  415. package/esm/domain/intakeSites.js +4 -0
  416. package/esm/domain/intakeSites.js.map +1 -0
  417. package/esm/domain/report/browser.types.d.ts +34 -0
  418. package/esm/domain/report/browser.types.js +2 -0
  419. package/esm/domain/report/browser.types.js.map +1 -0
  420. package/esm/domain/report/reportObservable.d.ts +14 -0
  421. package/esm/domain/report/reportObservable.js +95 -0
  422. package/esm/domain/report/reportObservable.js.map +1 -0
  423. package/esm/domain/resourceUtils.d.ts +18 -0
  424. package/esm/domain/resourceUtils.js +17 -0
  425. package/esm/domain/resourceUtils.js.map +1 -0
  426. package/esm/domain/session/oldCookiesMigration.d.ts +11 -0
  427. package/esm/domain/session/oldCookiesMigration.js +36 -0
  428. package/esm/domain/session/oldCookiesMigration.js.map +1 -0
  429. package/esm/domain/session/sessionConstants.d.ts +15 -0
  430. package/esm/domain/session/sessionConstants.js +13 -0
  431. package/esm/domain/session/sessionConstants.js.map +1 -0
  432. package/esm/domain/session/sessionManager.d.ts +28 -0
  433. package/esm/domain/session/sessionManager.js +196 -0
  434. package/esm/domain/session/sessionManager.js.map +1 -0
  435. package/esm/domain/session/sessionState.d.ts +16 -0
  436. package/esm/domain/session/sessionState.js +60 -0
  437. package/esm/domain/session/sessionState.js.map +1 -0
  438. package/esm/domain/session/sessionStateValidation.d.ts +3 -0
  439. package/esm/domain/session/sessionStateValidation.js +7 -0
  440. package/esm/domain/session/sessionStateValidation.js.map +1 -0
  441. package/esm/domain/session/sessionStore.d.ts +38 -0
  442. package/esm/domain/session/sessionStore.js +180 -0
  443. package/esm/domain/session/sessionStore.js.map +1 -0
  444. package/esm/domain/session/sessionStoreOperations.d.ts +12 -0
  445. package/esm/domain/session/sessionStoreOperations.js +114 -0
  446. package/esm/domain/session/sessionStoreOperations.js.map +1 -0
  447. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +12 -0
  448. package/esm/domain/session/storeStrategies/sessionInCookie.js +98 -0
  449. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  450. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +6 -0
  451. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +37 -0
  452. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  453. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  454. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +2 -0
  455. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  456. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  457. package/esm/domain/synthetics/syntheticsWorkerValues.js +24 -0
  458. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  459. package/esm/domain/tags.d.ts +6 -0
  460. package/esm/domain/tags.js +59 -0
  461. package/esm/domain/tags.js.map +1 -0
  462. package/esm/domain/telemetry/index.d.ts +4 -0
  463. package/esm/domain/telemetry/index.js +3 -0
  464. package/esm/domain/telemetry/index.js.map +1 -0
  465. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  466. package/esm/domain/telemetry/rawTelemetryEvent.types.js +6 -0
  467. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  468. package/esm/domain/telemetry/telemetry.d.ts +56 -0
  469. package/esm/domain/telemetry/telemetry.js +232 -0
  470. package/esm/domain/telemetry/telemetry.js.map +1 -0
  471. package/esm/domain/telemetry/telemetryEvent.types.d.ts +866 -0
  472. package/esm/domain/telemetry/telemetryEvent.types.js +6 -0
  473. package/esm/domain/telemetry/telemetryEvent.types.js.map +1 -0
  474. package/esm/domain/trackingConsent.d.ts +13 -0
  475. package/esm/domain/trackingConsent.js +24 -0
  476. package/esm/domain/trackingConsent.js.map +1 -0
  477. package/esm/domain/userAgentData/index.d.ts +1 -0
  478. package/esm/domain/userAgentData/index.js +2 -0
  479. package/esm/domain/userAgentData/index.js.map +1 -0
  480. package/esm/domain/userAgentData/userAgentData.d.ts +22 -0
  481. package/esm/domain/userAgentData/userAgentData.js +105 -0
  482. package/esm/domain/userAgentData/userAgentData.js.map +1 -0
  483. package/esm/index.d.ts +101 -0
  484. package/esm/index.js +77 -0
  485. package/esm/index.js.map +1 -0
  486. package/esm/tools/abstractHooks.d.ts +24 -0
  487. package/esm/tools/abstractHooks.js +37 -0
  488. package/esm/tools/abstractHooks.js.map +1 -0
  489. package/esm/tools/abstractLifeCycle.d.ts +23 -0
  490. package/esm/tools/abstractLifeCycle.js +24 -0
  491. package/esm/tools/abstractLifeCycle.js.map +1 -0
  492. package/esm/tools/boundedBuffer.d.ts +16 -0
  493. package/esm/tools/boundedBuffer.js +29 -0
  494. package/esm/tools/boundedBuffer.js.map +1 -0
  495. package/esm/tools/catchUserErrors.d.ts +1 -0
  496. package/esm/tools/catchUserErrors.js +12 -0
  497. package/esm/tools/catchUserErrors.js.map +1 -0
  498. package/esm/tools/display.d.ts +38 -0
  499. package/esm/tools/display.js +41 -0
  500. package/esm/tools/display.js.map +1 -0
  501. package/esm/tools/encoder.d.ts +54 -0
  502. package/esm/tools/encoder.js +37 -0
  503. package/esm/tools/encoder.js.map +1 -0
  504. package/esm/tools/experimentalFeatures.d.ts +21 -0
  505. package/esm/tools/experimentalFeatures.js +42 -0
  506. package/esm/tools/experimentalFeatures.js.map +1 -0
  507. package/esm/tools/getZoneJsOriginalValue.d.ts +19 -0
  508. package/esm/tools/getZoneJsOriginalValue.js +26 -0
  509. package/esm/tools/getZoneJsOriginalValue.js.map +1 -0
  510. package/esm/tools/globalObject.d.ts +19 -0
  511. package/esm/tools/globalObject.js +40 -0
  512. package/esm/tools/globalObject.js.map +1 -0
  513. package/esm/tools/instrumentMethod.d.ts +75 -0
  514. package/esm/tools/instrumentMethod.js +114 -0
  515. package/esm/tools/instrumentMethod.js.map +1 -0
  516. package/esm/tools/matchOption.d.ts +8 -0
  517. package/esm/tools/matchOption.js +31 -0
  518. package/esm/tools/matchOption.js.map +1 -0
  519. package/esm/tools/mergeInto.d.ts +25 -0
  520. package/esm/tools/mergeInto.js +93 -0
  521. package/esm/tools/mergeInto.js.map +1 -0
  522. package/esm/tools/monitor.d.ts +9 -0
  523. package/esm/tools/monitor.js +51 -0
  524. package/esm/tools/monitor.js.map +1 -0
  525. package/esm/tools/observable.d.ts +30 -0
  526. package/esm/tools/observable.js +83 -0
  527. package/esm/tools/observable.js.map +1 -0
  528. package/esm/tools/queueMicrotask.d.ts +1 -0
  529. package/esm/tools/queueMicrotask.js +14 -0
  530. package/esm/tools/queueMicrotask.js.map +1 -0
  531. package/esm/tools/readBytesFromStream.d.ts +10 -0
  532. package/esm/tools/readBytesFromStream.js +25 -0
  533. package/esm/tools/readBytesFromStream.js.map +1 -0
  534. package/esm/tools/requestIdleCallback.d.ts +12 -0
  535. package/esm/tools/requestIdleCallback.js +30 -0
  536. package/esm/tools/requestIdleCallback.js.map +1 -0
  537. package/esm/tools/sendToExtension.d.ts +3 -0
  538. package/esm/tools/sendToExtension.js +8 -0
  539. package/esm/tools/sendToExtension.js.map +1 -0
  540. package/esm/tools/serialisation/context.d.ts +9 -0
  541. package/esm/tools/serialisation/context.js +2 -0
  542. package/esm/tools/serialisation/context.js.map +1 -0
  543. package/esm/tools/serialisation/jsonStringify.d.ts +13 -0
  544. package/esm/tools/serialisation/jsonStringify.js +44 -0
  545. package/esm/tools/serialisation/jsonStringify.js.map +1 -0
  546. package/esm/tools/serialisation/sanitize.d.ts +18 -0
  547. package/esm/tools/serialisation/sanitize.js +185 -0
  548. package/esm/tools/serialisation/sanitize.js.map +1 -0
  549. package/esm/tools/stackTrace/computeStackTrace.d.ts +25 -0
  550. package/esm/tools/stackTrace/computeStackTrace.js +183 -0
  551. package/esm/tools/stackTrace/computeStackTrace.js.map +1 -0
  552. package/esm/tools/stackTrace/handlingStack.d.ts +10 -0
  553. package/esm/tools/stackTrace/handlingStack.js +41 -0
  554. package/esm/tools/stackTrace/handlingStack.js.map +1 -0
  555. package/esm/tools/taskQueue.d.ts +15 -0
  556. package/esm/tools/taskQueue.js +50 -0
  557. package/esm/tools/taskQueue.js.map +1 -0
  558. package/esm/tools/timer.d.ts +5 -0
  559. package/esm/tools/timer.js +16 -0
  560. package/esm/tools/timer.js.map +1 -0
  561. package/esm/tools/utils/arrayUtils.d.ts +3 -0
  562. package/esm/tools/utils/arrayUtils.js +15 -0
  563. package/esm/tools/utils/arrayUtils.js.map +1 -0
  564. package/esm/tools/utils/browserDetection.d.ts +8 -0
  565. package/esm/tools/utils/browserDetection.js +28 -0
  566. package/esm/tools/utils/browserDetection.js.map +1 -0
  567. package/esm/tools/utils/byteUtils.d.ts +8 -0
  568. package/esm/tools/utils/byteUtils.js +29 -0
  569. package/esm/tools/utils/byteUtils.js.map +1 -0
  570. package/esm/tools/utils/functionUtils.d.ts +8 -0
  571. package/esm/tools/utils/functionUtils.js +39 -0
  572. package/esm/tools/utils/functionUtils.js.map +1 -0
  573. package/esm/tools/utils/numberUtils.d.ts +8 -0
  574. package/esm/tools/utils/numberUtils.js +17 -0
  575. package/esm/tools/utils/numberUtils.js.map +1 -0
  576. package/esm/tools/utils/objectUtils.d.ts +10 -0
  577. package/esm/tools/utils/objectUtils.js +17 -0
  578. package/esm/tools/utils/objectUtils.js.map +1 -0
  579. package/esm/tools/utils/polyfills.d.ts +7 -0
  580. package/esm/tools/utils/polyfills.js +18 -0
  581. package/esm/tools/utils/polyfills.js.map +1 -0
  582. package/esm/tools/utils/responseUtils.d.ts +2 -0
  583. package/esm/tools/utils/responseUtils.js +13 -0
  584. package/esm/tools/utils/responseUtils.js.map +1 -0
  585. package/esm/tools/utils/stringUtils.d.ts +23 -0
  586. package/esm/tools/utils/stringUtils.js +84 -0
  587. package/esm/tools/utils/stringUtils.js.map +1 -0
  588. package/esm/tools/utils/timeUtils.d.ts +53 -0
  589. package/esm/tools/utils/timeUtils.js +84 -0
  590. package/esm/tools/utils/timeUtils.js.map +1 -0
  591. package/esm/tools/utils/timezone.d.ts +1 -0
  592. package/esm/tools/utils/timezone.js +10 -0
  593. package/esm/tools/utils/timezone.js.map +1 -0
  594. package/esm/tools/utils/typeUtils.d.ts +4 -0
  595. package/esm/tools/utils/typeUtils.js +13 -0
  596. package/esm/tools/utils/typeUtils.js.map +1 -0
  597. package/esm/tools/utils/urlPolyfill.d.ts +5 -0
  598. package/esm/tools/utils/urlPolyfill.js +52 -0
  599. package/esm/tools/utils/urlPolyfill.js.map +1 -0
  600. package/esm/tools/valueHistory.d.ts +27 -0
  601. package/esm/tools/valueHistory.js +100 -0
  602. package/esm/tools/valueHistory.js.map +1 -0
  603. package/esm/transport/batch.d.ts +16 -0
  604. package/esm/transport/batch.js +106 -0
  605. package/esm/transport/batch.js.map +1 -0
  606. package/esm/transport/eventBridge.d.ts +21 -0
  607. package/esm/transport/eventBridge.js +41 -0
  608. package/esm/transport/eventBridge.js.map +1 -0
  609. package/esm/transport/flushController.d.ts +65 -0
  610. package/esm/transport/flushController.js +119 -0
  611. package/esm/transport/flushController.js.map +1 -0
  612. package/esm/transport/httpRequest.d.ts +57 -0
  613. package/esm/transport/httpRequest.js +101 -0
  614. package/esm/transport/httpRequest.js.map +1 -0
  615. package/esm/transport/index.d.ts +7 -0
  616. package/esm/transport/index.js +5 -0
  617. package/esm/transport/index.js.map +1 -0
  618. package/esm/transport/sendWithRetryStrategy.d.ts +41 -0
  619. package/esm/transport/sendWithRetryStrategy.js +158 -0
  620. package/esm/transport/sendWithRetryStrategy.js.map +1 -0
  621. package/package.json +28 -0
  622. package/src/boot/displayAlreadyInitializedError.ts +8 -0
  623. package/src/boot/init.ts +54 -0
  624. package/src/browser/addEventListener.ts +145 -0
  625. package/src/browser/browser.types.ts +84 -0
  626. package/src/browser/cookie.ts +122 -0
  627. package/src/browser/fetchObservable.ts +167 -0
  628. package/src/browser/pageMayExitObservable.ts +56 -0
  629. package/src/browser/runOnReadyState.ts +25 -0
  630. package/src/browser/xhrObservable.ts +134 -0
  631. package/src/domain/allowedTrackingOrigins.ts +29 -0
  632. package/src/domain/bufferedData.ts +32 -0
  633. package/src/domain/configuration/configuration.ts +409 -0
  634. package/src/domain/configuration/endpointBuilder.ts +105 -0
  635. package/src/domain/configuration/index.ts +12 -0
  636. package/src/domain/configuration/transportConfiguration.ts +86 -0
  637. package/src/domain/connectivity/connectivity.ts +31 -0
  638. package/src/domain/connectivity/index.ts +1 -0
  639. package/src/domain/console/consoleObservable.ts +118 -0
  640. package/src/domain/context/contextConstants.ts +27 -0
  641. package/src/domain/context/contextManager.ts +81 -0
  642. package/src/domain/context/contextUtils.ts +14 -0
  643. package/src/domain/context/defineContextMethod.ts +31 -0
  644. package/src/domain/context/storeContextManager.ts +55 -0
  645. package/src/domain/contexts/accountContext.ts +47 -0
  646. package/src/domain/contexts/globalContext.ts +30 -0
  647. package/src/domain/contexts/rumInternalContext.type.ts +15 -0
  648. package/src/domain/contexts/userContext.ts +148 -0
  649. package/src/domain/deflate/deflate.types.ts +57 -0
  650. package/src/domain/deflate/index.ts +1 -0
  651. package/src/domain/error/error.ts +127 -0
  652. package/src/domain/error/error.types.ts +64 -0
  653. package/src/domain/error/trackRuntimeError.ts +50 -0
  654. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +49 -0
  655. package/src/domain/extension/extensionUtils.ts +28 -0
  656. package/src/domain/intakeSites.ts +6 -0
  657. package/src/domain/report/browser.types.ts +38 -0
  658. package/src/domain/report/reportObservable.ts +133 -0
  659. package/src/domain/resourceUtils.ts +21 -0
  660. package/src/domain/session/README.md +193 -0
  661. package/src/domain/session/oldCookiesMigration.ts +42 -0
  662. package/src/domain/session/sessionConstants.ts +19 -0
  663. package/src/domain/session/sessionManager.ts +262 -0
  664. package/src/domain/session/sessionState.ts +83 -0
  665. package/src/domain/session/sessionStateValidation.ts +9 -0
  666. package/src/domain/session/sessionStore.ts +250 -0
  667. package/src/domain/session/sessionStoreOperations.ts +131 -0
  668. package/src/domain/session/storeStrategies/sessionInCookie.ts +146 -0
  669. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +44 -0
  670. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +16 -0
  671. package/src/domain/synthetics/syntheticsWorkerValues.ts +38 -0
  672. package/src/domain/tags.ts +75 -0
  673. package/src/domain/telemetry/index.ts +22 -0
  674. package/src/domain/telemetry/rawTelemetryEvent.types.ts +22 -0
  675. package/src/domain/telemetry/telemetry.ts +344 -0
  676. package/src/domain/telemetry/telemetryEvent.types.ts +907 -0
  677. package/src/domain/trackingConsent.ts +34 -0
  678. package/src/domain/userAgentData/index.ts +1 -0
  679. package/src/domain/userAgentData/userAgentData.ts +163 -0
  680. package/src/index.ts +169 -0
  681. package/src/tools/abstractHooks.ts +72 -0
  682. package/src/tools/abstractLifeCycle.ts +46 -0
  683. package/src/tools/boundedBuffer.ts +44 -0
  684. package/src/tools/catchUserErrors.ts +11 -0
  685. package/src/tools/display.ts +56 -0
  686. package/src/tools/encoder.ts +103 -0
  687. package/src/tools/experimentalFeatures.ts +52 -0
  688. package/src/tools/getZoneJsOriginalValue.ts +38 -0
  689. package/src/tools/globalObject.ts +51 -0
  690. package/src/tools/instrumentMethod.ts +170 -0
  691. package/src/tools/matchOption.ts +31 -0
  692. package/src/tools/mergeInto.ts +177 -0
  693. package/src/tools/monitor.ts +71 -0
  694. package/src/tools/observable.ts +103 -0
  695. package/src/tools/queueMicrotask.ts +13 -0
  696. package/src/tools/readBytesFromStream.ts +37 -0
  697. package/src/tools/requestIdleCallback.ts +40 -0
  698. package/src/tools/sendToExtension.ts +14 -0
  699. package/src/tools/serialisation/context.ts +11 -0
  700. package/src/tools/serialisation/jsonStringify.ts +53 -0
  701. package/src/tools/serialisation/sanitize.ts +273 -0
  702. package/src/tools/stackTrace/computeStackTrace.ts +251 -0
  703. package/src/tools/stackTrace/handlingStack.ts +48 -0
  704. package/src/tools/taskQueue.ts +63 -0
  705. package/src/tools/timer.ts +21 -0
  706. package/src/tools/utils/arrayUtils.ts +16 -0
  707. package/src/tools/utils/browserDetection.ts +39 -0
  708. package/src/tools/utils/byteUtils.ts +40 -0
  709. package/src/tools/utils/functionUtils.ts +45 -0
  710. package/src/tools/utils/numberUtils.ts +19 -0
  711. package/src/tools/utils/objectUtils.ts +19 -0
  712. package/src/tools/utils/polyfills.ts +23 -0
  713. package/src/tools/utils/responseUtils.ts +12 -0
  714. package/src/tools/utils/stringUtils.ts +86 -0
  715. package/src/tools/utils/timeUtils.ts +117 -0
  716. package/src/tools/utils/timezone.ts +9 -0
  717. package/src/tools/utils/typeUtils.ts +12 -0
  718. package/src/tools/utils/urlPolyfill.ts +55 -0
  719. package/src/tools/valueHistory.ts +151 -0
  720. package/src/transport/batch.ts +144 -0
  721. package/src/transport/eventBridge.ts +60 -0
  722. package/src/transport/flushController.ts +150 -0
  723. package/src/transport/httpRequest.ts +191 -0
  724. package/src/transport/index.ts +7 -0
  725. package/src/transport/sendWithRetryStrategy.ts +222 -0
@@ -0,0 +1,103 @@
1
+ import type { Uint8ArrayBuffer } from './utils/byteUtils'
2
+ import { computeBytesCount } from './utils/byteUtils'
3
+
4
+ export interface Encoder<Output extends string | Uint8ArrayBuffer = string | Uint8ArrayBuffer> {
5
+ /**
6
+ * Whether this encoder might call the provided callbacks asynchronously
7
+ */
8
+ isAsync: boolean
9
+
10
+ /**
11
+ * Whether some data has been written since the last finish() or finishSync() call
12
+ */
13
+ isEmpty: boolean
14
+
15
+ /**
16
+ * Write a string to be encoded.
17
+ *
18
+ * This operation can be synchronous or asynchronous depending on the encoder implementation.
19
+ *
20
+ * If specified, the callback will be invoked when the operation finishes, unless the operation is
21
+ * asynchronous and finish() or finishSync() is called in the meantime.
22
+ */
23
+ write(data: string, callback?: (additionalEncodedBytesCount: number) => void): void
24
+
25
+ /**
26
+ * Waits for pending data to be encoded and resets the encoder state.
27
+ *
28
+ * This operation can be synchronous or asynchronous depending on the encoder implementation.
29
+ *
30
+ * The callback will be invoked when the operation finishes, unless the operation is asynchronous
31
+ * and another call to finish() or finishSync() occurs in the meantime.
32
+ */
33
+ finish(callback: (result: EncoderResult<Output>) => void): void
34
+
35
+ /**
36
+ * Resets the encoder state then returns the encoded data and any potential pending data directly,
37
+ * discarding all pending write operations and finish() callbacks.
38
+ */
39
+ finishSync(): EncoderResult<Output> & { pendingData: string }
40
+
41
+ /**
42
+ * Returns a rough estimation of the bytes count if the data was encoded.
43
+ */
44
+ estimateEncodedBytesCount(data: string): number
45
+ }
46
+
47
+ export interface EncoderResult<Output extends string | Uint8ArrayBuffer = string | Uint8ArrayBuffer> {
48
+ output: Output
49
+ outputBytesCount: number
50
+
51
+ /**
52
+ * An encoding type supported by HTTP Content-Encoding, if applicable.
53
+ * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding#directives
54
+ */
55
+ encoding?: 'deflate'
56
+
57
+ /**
58
+ * Total bytes count of the input strings encoded to UTF-8.
59
+ */
60
+ rawBytesCount: number
61
+ }
62
+
63
+ export function createIdentityEncoder(): Encoder<string> {
64
+ let output = ''
65
+ let outputBytesCount = 0
66
+
67
+ return {
68
+ isAsync: false,
69
+
70
+ get isEmpty() {
71
+ return !output
72
+ },
73
+
74
+ write(data, callback) {
75
+ const additionalEncodedBytesCount = computeBytesCount(data)
76
+ outputBytesCount += additionalEncodedBytesCount
77
+ output += data
78
+ if (callback) {
79
+ callback(additionalEncodedBytesCount)
80
+ }
81
+ },
82
+
83
+ finish(callback) {
84
+ callback(this.finishSync())
85
+ },
86
+
87
+ finishSync() {
88
+ const result = {
89
+ output,
90
+ outputBytesCount,
91
+ rawBytesCount: outputBytesCount,
92
+ pendingData: '',
93
+ }
94
+ output = ''
95
+ outputBytesCount = 0
96
+ return result
97
+ },
98
+
99
+ estimateEncodedBytesCount(data) {
100
+ return data.length
101
+ },
102
+ }
103
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * LIMITATION:
3
+ * For NPM setup, this feature flag singleton is shared between RUM and Logs product.
4
+ * This means that an experimental flag set on the RUM product will be set on the Logs product.
5
+ * So keep in mind that in certain configurations, your experimental feature flag may affect other products.
6
+ *
7
+ * FORMAT:
8
+ * All feature flags should be snake_cased
9
+ */
10
+ // We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary
11
+ // string is an expected feature flag
12
+
13
+ import { objectHasValue } from './utils/objectUtils'
14
+
15
+ // eslint-disable-next-line no-restricted-syntax
16
+ export enum ExperimentalFeature {
17
+ TRACK_INTAKE_REQUESTS = 'track_intake_requests',
18
+ USE_TREE_WALKER_FOR_ACTION_NAME = 'use_tree_walker_for_action_name',
19
+ FEATURE_OPERATION_VITAL = 'feature_operation_vital',
20
+ SHORT_SESSION_INVESTIGATION = 'short_session_investigation',
21
+ AVOID_FETCH_KEEPALIVE = 'avoid_fetch_keepalive',
22
+ }
23
+
24
+ const enabledExperimentalFeatures: Set<ExperimentalFeature> = new Set()
25
+
26
+ export function initFeatureFlags(enableExperimentalFeatures: string[] | undefined) {
27
+ if (Array.isArray(enableExperimentalFeatures)) {
28
+ addExperimentalFeatures(
29
+ enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>
30
+ objectHasValue(ExperimentalFeature, flag)
31
+ )
32
+ )
33
+ }
34
+ }
35
+
36
+ export function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void {
37
+ enabledFeatures.forEach((flag) => {
38
+ enabledExperimentalFeatures.add(flag)
39
+ })
40
+ }
41
+
42
+ export function isExperimentalFeatureEnabled(featureName: ExperimentalFeature): boolean {
43
+ return enabledExperimentalFeatures.has(featureName)
44
+ }
45
+
46
+ export function resetExperimentalFeatures(): void {
47
+ enabledExperimentalFeatures.clear()
48
+ }
49
+
50
+ export function getExperimentalFeatures(): Set<ExperimentalFeature> {
51
+ return enabledExperimentalFeatures
52
+ }
@@ -0,0 +1,38 @@
1
+ import { getGlobalObject } from './globalObject'
2
+
3
+ export interface BrowserWindowWithZoneJs extends Window {
4
+ Zone?: {
5
+ // All Zone.js versions expose the __symbol__ method, but we observed that some website have a
6
+ // 'Zone' global variable unrelated to Zone.js, so let's consider this method optional
7
+ // nonetheless.
8
+ __symbol__?: (name: string) => string
9
+ }
10
+ }
11
+
12
+ /**
13
+ * Gets the original value for a DOM API that was potentially patched by Zone.js.
14
+ *
15
+ * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original
16
+ * value of the patched functions/constructors/methods in a hidden property prefixed by
17
+ * __zone_symbol__.
18
+ *
19
+ * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to
20
+ * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to
21
+ * use the original DOM API instead of the one patched by Zone.js.
22
+ *
23
+ * [1]: https://github.com/angular/angular/tree/main/packages/zone.js
24
+ */
25
+ export function getZoneJsOriginalValue<Target, Name extends keyof Target & string>(
26
+ target: Target,
27
+ name: Name
28
+ ): Target[Name] {
29
+ const browserWindow = getGlobalObject<BrowserWindowWithZoneJs>()
30
+ let original: Target[Name] | undefined
31
+ if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {
32
+ original = (target as any)[browserWindow.Zone.__symbol__(name)]
33
+ }
34
+ if (!original) {
35
+ original = target[name]
36
+ }
37
+ return original
38
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * inspired by https://mathiasbynens.be/notes/globalthis
3
+ */
4
+
5
+ // Extend/Create the WorkerGlobalScope interface to avoid issues when used in a non-browser tsconfig environment
6
+ interface WorkerGlobalScope {
7
+ empty: never
8
+ }
9
+
10
+ // Utility type to enforce that exactly one of the two types is used
11
+ type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }
12
+ type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U
13
+
14
+ export type GlobalObject = XOR<Window, WorkerGlobalScope>
15
+
16
+ export function getGlobalObject<T = typeof globalThis>(): T {
17
+ if (typeof globalThis === 'object') {
18
+ return globalThis as unknown as T
19
+ }
20
+ Object.defineProperty(Object.prototype, '_kubesense_temp_', {
21
+ get() {
22
+ return this as object
23
+ },
24
+ configurable: true,
25
+ })
26
+ // @ts-ignore _kubesense_temp is defined using defineProperty
27
+ let globalObject: unknown = _kubesense_temp_
28
+ // @ts-ignore _kubesense_temp is defined using defineProperty
29
+ delete Object.prototype._kubesense_temp_
30
+ if (typeof globalObject !== 'object') {
31
+ // on safari _kubesense_temp_ is available on window but not globally
32
+ // fallback on other browser globals check
33
+ if (typeof self === 'object') {
34
+ globalObject = self
35
+ } else if (typeof window === 'object') {
36
+ globalObject = window
37
+ } else {
38
+ globalObject = {}
39
+ }
40
+ }
41
+ return globalObject as T
42
+ }
43
+
44
+ /**
45
+ * Cached reference to the global object so it can be imported and re-used without
46
+ * re-evaluating the heavyweight fallback logic in `getGlobalObject()`.
47
+ */
48
+ // eslint-disable-next-line local-rules/disallow-side-effects
49
+ export const globalObject = getGlobalObject<GlobalObject>()
50
+
51
+ export const isWorkerEnvironment = 'WorkerGlobalScope' in globalObject
@@ -0,0 +1,170 @@
1
+ import { setTimeout } from './timer'
2
+ import { callMonitored } from './monitor'
3
+ import { noop } from './utils/functionUtils'
4
+ import { createHandlingStack } from './stackTrace/handlingStack'
5
+
6
+ /**
7
+ * Object passed to the callback of an instrumented method call. See `instrumentMethod` for more
8
+ * info.
9
+ */
10
+ export interface InstrumentedMethodCall<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> {
11
+ /**
12
+ * The target object on which the method was called.
13
+ */
14
+ target: TARGET
15
+
16
+ /**
17
+ * The parameters with which the method was called.
18
+ *
19
+ * Note: if needed, parameters can be mutated by the instrumentation
20
+ */
21
+ parameters: Parameters<TARGET[METHOD]>
22
+
23
+ /**
24
+ * Registers a callback that will be called after the original method is called, with the method
25
+ * result passed as argument.
26
+ */
27
+ onPostCall: (callback: PostCallCallback<TARGET, METHOD>) => void
28
+
29
+ /**
30
+ * The stack trace of the method call.
31
+ */
32
+ handlingStack?: string
33
+ }
34
+
35
+ type PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> = (
36
+ result: ReturnType<TARGET[METHOD]>
37
+ ) => void
38
+
39
+ /**
40
+ * Instruments a method on a object, calling the given callback before the original method is
41
+ * invoked. The callback receives an object with information about the method call.
42
+ *
43
+ * This function makes sure that we are "good citizens" regarding third party instrumentations: when
44
+ * removing the instrumentation, the original method is usually restored, but if a third party
45
+ * instrumentation was set after ours, we keep it in place and just replace our instrumentation with
46
+ * a noop.
47
+ *
48
+ * Note: it is generally better to instrument methods that are "owned" by the object instead of ones
49
+ * that are inherited from the prototype chain. Example:
50
+ * * do: `instrumentMethod(Array.prototype, 'push', ...)`
51
+ * * don't: `instrumentMethod([], 'push', ...)`
52
+ *
53
+ * This method is also used to set event handler properties (ex: window.onerror = ...), as it has
54
+ * the same requirements as instrumenting a method:
55
+ * * if the event handler is already set by a third party, we need to call it and not just blindly
56
+ * override it.
57
+ * * if the event handler is set by a third party after us, we need to keep it in place when
58
+ * removing ours.
59
+ *
60
+ * @example
61
+ *
62
+ * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {
63
+ * console.log('Before calling fetch on', target, 'with parameters', parameters)
64
+ *
65
+ * onPostCall((result) => {
66
+ * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)
67
+ * })
68
+ * })
69
+ */
70
+ export function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET>(
71
+ targetPrototype: TARGET,
72
+ method: METHOD,
73
+ onPreCall: (this: null, callInfos: InstrumentedMethodCall<TARGET, METHOD>) => void,
74
+ { computeHandlingStack }: { computeHandlingStack?: boolean } = {}
75
+ ) {
76
+ let original = targetPrototype[method]
77
+
78
+ if (typeof original !== 'function') {
79
+ if (method in targetPrototype && typeof method === 'string' && method.startsWith('on')) {
80
+ original = noop as TARGET[METHOD]
81
+ } else {
82
+ return { stop: noop }
83
+ }
84
+ }
85
+
86
+ let stopped = false
87
+
88
+ const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]> {
89
+ if (stopped) {
90
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
91
+ return original.apply(this, arguments as unknown as Parameters<TARGET[METHOD]>)
92
+ }
93
+
94
+ const parameters = Array.from(arguments) as Parameters<TARGET[METHOD]>
95
+
96
+ let postCallCallback: PostCallCallback<TARGET, METHOD> | undefined
97
+
98
+ callMonitored(onPreCall, null, [
99
+ {
100
+ target: this,
101
+ parameters,
102
+ onPostCall: (callback) => {
103
+ postCallCallback = callback
104
+ },
105
+ handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,
106
+ },
107
+ ])
108
+
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
110
+ const result = original.apply(this, parameters)
111
+
112
+ if (postCallCallback) {
113
+ callMonitored(postCallCallback, null, [result])
114
+ }
115
+
116
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
117
+ return result
118
+ }
119
+
120
+ targetPrototype[method] = instrumentation as TARGET[METHOD]
121
+
122
+ return {
123
+ stop: () => {
124
+ stopped = true
125
+ // If the instrumentation has been removed by a third party, keep the last one
126
+ if (targetPrototype[method] === instrumentation) {
127
+ targetPrototype[method] = original
128
+ }
129
+ },
130
+ }
131
+ }
132
+
133
+ export function instrumentSetter<TARGET extends { [key: string]: any }, PROPERTY extends keyof TARGET>(
134
+ targetPrototype: TARGET,
135
+ property: PROPERTY,
136
+ after: (target: TARGET, value: TARGET[PROPERTY]) => void
137
+ ) {
138
+ const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)
139
+ if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {
140
+ return { stop: noop }
141
+ }
142
+
143
+ const stoppedInstrumentation = noop
144
+ let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {
145
+ // put hooked setter into event loop to avoid of set latency
146
+ setTimeout(() => {
147
+ if (instrumentation !== stoppedInstrumentation) {
148
+ after(target, value)
149
+ }
150
+ }, 0)
151
+ }
152
+
153
+ const instrumentationWrapper = function (this: TARGET, value: TARGET[PROPERTY]) {
154
+ originalDescriptor.set!.call(this, value)
155
+ instrumentation(this, value)
156
+ }
157
+
158
+ Object.defineProperty(targetPrototype, property, {
159
+ set: instrumentationWrapper,
160
+ })
161
+
162
+ return {
163
+ stop: () => {
164
+ if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) {
165
+ Object.defineProperty(targetPrototype, property, originalDescriptor)
166
+ }
167
+ instrumentation = stoppedInstrumentation
168
+ },
169
+ }
170
+ }
@@ -0,0 +1,31 @@
1
+ import { display } from './display'
2
+ import { getType } from './utils/typeUtils'
3
+
4
+ export type MatchOption = string | RegExp | ((value: string) => boolean)
5
+
6
+ export function isMatchOption(item: unknown): item is MatchOption {
7
+ const itemType = getType(item)
8
+ return itemType === 'string' || itemType === 'function' || item instanceof RegExp
9
+ }
10
+
11
+ /**
12
+ * Returns true if value can be matched by at least one of the provided MatchOptions.
13
+ * When comparing strings, setting useStartsWith to true will compare the value with the start of
14
+ * the option, instead of requiring an exact match.
15
+ */
16
+ export function matchList(list: MatchOption[], value: string, useStartsWith = false): boolean {
17
+ return list.some((item) => {
18
+ try {
19
+ if (typeof item === 'function') {
20
+ return item(value)
21
+ } else if (item instanceof RegExp) {
22
+ return item.test(value)
23
+ } else if (typeof item === 'string') {
24
+ return useStartsWith ? value.startsWith(item) : item === value
25
+ }
26
+ } catch (e) {
27
+ display.error(e)
28
+ }
29
+ return false
30
+ })
31
+ }
@@ -0,0 +1,177 @@
1
+ import { getType } from './utils/typeUtils'
2
+
3
+ type Merged<TDestination, TSource> =
4
+ // case 1 - source is undefined - return destination
5
+ TSource extends undefined
6
+ ? TDestination
7
+ : // case 2 - destination is undefined - return source
8
+ TDestination extends undefined
9
+ ? TSource
10
+ : // case 3 - source is an array - see if it merges or overwrites
11
+ TSource extends any[]
12
+ ? TDestination extends any[]
13
+ ? TDestination & TSource
14
+ : TSource
15
+ : // case 4 - source is an object - see if it merges or overwrites
16
+ TSource extends object
17
+ ? TDestination extends object
18
+ ? TDestination extends any[]
19
+ ? TSource
20
+ : TDestination & TSource
21
+ : TSource
22
+ : // case 5 - cannot merge - return source
23
+ TSource
24
+
25
+ /**
26
+ * Iterate over source and affect its sub values into destination, recursively.
27
+ * If the source and destination can't be merged, return source.
28
+ */
29
+ export function mergeInto<D, S>(
30
+ destination: D,
31
+ source: S,
32
+ circularReferenceChecker = createCircularReferenceChecker()
33
+ ): Merged<D, S> {
34
+ // ignore the source if it is undefined
35
+ if (source === undefined) {
36
+ return destination as Merged<D, S>
37
+ }
38
+
39
+ if (typeof source !== 'object' || source === null) {
40
+ // primitive values - just return source
41
+ return source as Merged<D, S>
42
+ } else if (source instanceof Date) {
43
+ return new Date(source.getTime()) as unknown as Merged<D, S>
44
+ } else if (source instanceof RegExp) {
45
+ const flags =
46
+ source.flags ||
47
+ // old browsers compatibility
48
+ [
49
+ source.global ? 'g' : '',
50
+ source.ignoreCase ? 'i' : '',
51
+ source.multiline ? 'm' : '',
52
+ source.sticky ? 'y' : '',
53
+ source.unicode ? 'u' : '',
54
+ ].join('')
55
+ return new RegExp(source.source, flags) as unknown as Merged<D, S>
56
+ }
57
+
58
+ if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {
59
+ // remove circular references
60
+ return undefined as unknown as Merged<D, S>
61
+ } else if (Array.isArray(source)) {
62
+ const merged: any[] = Array.isArray(destination) ? destination : []
63
+ for (let i = 0; i < source.length; ++i) {
64
+ merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker)
65
+ }
66
+ return merged as unknown as Merged<D, S>
67
+ }
68
+
69
+ const merged = getType(destination) === 'object' ? (destination as Record<any, any>) : {}
70
+ for (const key in source) {
71
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
72
+ merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker)
73
+ }
74
+ }
75
+ return merged as unknown as Merged<D, S>
76
+ }
77
+
78
+ /**
79
+ * A simplistic implementation of a deep clone algorithm.
80
+ * Caveats:
81
+ * - It doesn't maintain prototype chains - don't use with instances of custom classes.
82
+ * - It doesn't handle Map and Set
83
+ */
84
+ export function deepClone<T>(value: T): T {
85
+ return mergeInto(undefined, value) as T
86
+ }
87
+
88
+ type Combined<A, B> = A extends null ? B : B extends null ? A : Merged<A, B>
89
+
90
+ /*
91
+ * Performs a deep merge of objects and arrays.
92
+ * - Arguments won't be mutated
93
+ * - Object and arrays in the output value are de-referenced ("deep cloned")
94
+ * - Arrays values are merged index by index
95
+ * - Objects are merged by keys
96
+ * - Values get replaced, unless undefined
97
+ */
98
+ export function combine<A, B>(a: A, b: B): Combined<A, B>
99
+ export function combine<A, B, C>(a: A, b: B, c: C): Combined<Combined<A, B>, C>
100
+ export function combine<A, B, C, D>(a: A, b: B, c: C, d: D): Combined<Combined<Combined<A, B>, C>, D>
101
+ export function combine<A, B, C, D, E>(
102
+ a: A,
103
+ b: B,
104
+ c: C,
105
+ d: D,
106
+ e: E
107
+ ): Combined<Combined<Combined<Combined<A, B>, C>, D>, E>
108
+ export function combine<A, B, C, D, E, F>(
109
+ a: A,
110
+ b: B,
111
+ c: C,
112
+ d: D,
113
+ e: E,
114
+ f: F
115
+ ): Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>
116
+ export function combine<A, B, C, D, E, F, G>(
117
+ a: A,
118
+ b: B,
119
+ c: C,
120
+ d: D,
121
+ e: E,
122
+ f: F,
123
+ g: G
124
+ ): Combined<Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>, G>
125
+ export function combine<A, B, C, D, E, F, G, H>(
126
+ a: A,
127
+ b: B,
128
+ c: C,
129
+ d: D,
130
+ e: E,
131
+ f: F,
132
+ g: G,
133
+ h: H
134
+ ): Combined<Combined<Combined<Combined<Combined<Combined<Combined<A, B>, C>, D>, E>, F>, G>, H>
135
+ export function combine(...sources: any[]): unknown {
136
+ let destination: any
137
+
138
+ for (const source of sources) {
139
+ // Ignore any undefined or null sources.
140
+ if (source === undefined || source === null) {
141
+ continue
142
+ }
143
+
144
+ destination = mergeInto(destination, source)
145
+ }
146
+
147
+ return destination as unknown
148
+ }
149
+
150
+ interface CircularReferenceChecker {
151
+ hasAlreadyBeenSeen(value: any): boolean
152
+ }
153
+
154
+ function createCircularReferenceChecker(): CircularReferenceChecker {
155
+ if (typeof WeakSet !== 'undefined') {
156
+ const set: WeakSet<any> = new WeakSet()
157
+ return {
158
+ hasAlreadyBeenSeen(value) {
159
+ const has = set.has(value)
160
+ if (!has) {
161
+ set.add(value)
162
+ }
163
+ return has
164
+ },
165
+ }
166
+ }
167
+ const array: any[] = []
168
+ return {
169
+ hasAlreadyBeenSeen(value) {
170
+ const has = array.indexOf(value) >= 0
171
+ if (!has) {
172
+ array.push(value)
173
+ }
174
+ return has
175
+ },
176
+ }
177
+ }
@@ -0,0 +1,71 @@
1
+ import { display } from './display'
2
+
3
+ let onMonitorErrorCollected: undefined | ((error: unknown) => void)
4
+ let debugMode = false
5
+
6
+ export function startMonitorErrorCollection(newOnMonitorErrorCollected: (error: unknown) => void) {
7
+ onMonitorErrorCollected = newOnMonitorErrorCollected
8
+ }
9
+
10
+ export function setDebugMode(newDebugMode: boolean) {
11
+ debugMode = newDebugMode
12
+ }
13
+
14
+ export function resetMonitor() {
15
+ onMonitorErrorCollected = undefined
16
+ debugMode = false
17
+ }
18
+
19
+ export function monitored<T extends (...params: any[]) => unknown>(
20
+ _: any,
21
+ __: string,
22
+ descriptor: TypedPropertyDescriptor<T>
23
+ ) {
24
+ const originalMethod = descriptor.value!
25
+ descriptor.value = function (this: ThisParameterType<T>, ...args: Parameters<T>) {
26
+ const decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod
27
+ return decorated.apply(this, args) as ReturnType<T>
28
+ } as T
29
+ }
30
+
31
+ export function monitor<T extends (...args: any[]) => unknown>(fn: T): T {
32
+ return function (this: ThisParameterType<T>, ...args: Parameters<T>) {
33
+ return callMonitored(fn, this, args)
34
+ } as unknown as T // consider output type has input type
35
+ }
36
+
37
+ export function callMonitored<T extends (...args: any[]) => unknown>(
38
+ fn: T,
39
+ context: ThisParameterType<T>,
40
+ args: Parameters<T>
41
+ ): ReturnType<T> | undefined
42
+ export function callMonitored<T extends (this: void) => unknown>(fn: T): ReturnType<T> | undefined
43
+ export function callMonitored<T extends (...args: any[]) => unknown>(
44
+ fn: T,
45
+ context?: any,
46
+ args?: any
47
+ ): ReturnType<T> | undefined {
48
+ try {
49
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
50
+ return fn.apply(context, args) as ReturnType<T>
51
+ } catch (e) {
52
+ monitorError(e)
53
+ }
54
+ }
55
+
56
+ export function monitorError(e: unknown) {
57
+ displayIfDebugEnabled(e)
58
+ if (onMonitorErrorCollected) {
59
+ try {
60
+ onMonitorErrorCollected(e)
61
+ } catch (e) {
62
+ displayIfDebugEnabled(e)
63
+ }
64
+ }
65
+ }
66
+
67
+ export function displayIfDebugEnabled(...args: unknown[]) {
68
+ if (debugMode) {
69
+ display.error('[MONITOR]', ...args)
70
+ }
71
+ }