@pratham.raval/browser-core 6.22.3

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 (710) hide show
  1. package/README.md +3 -0
  2. package/cjs/boot/displayAlreadyInitializedError.d.ts +2 -0
  3. package/cjs/boot/displayAlreadyInitializedError.js +10 -0
  4. package/cjs/boot/displayAlreadyInitializedError.js.map +1 -0
  5. package/cjs/boot/init.d.ts +14 -0
  6. package/cjs/boot/init.js +39 -0
  7. package/cjs/boot/init.js.map +1 -0
  8. package/cjs/browser/addEventListener.d.ts +87 -0
  9. package/cjs/browser/addEventListener.js +55 -0
  10. package/cjs/browser/addEventListener.js.map +1 -0
  11. package/cjs/browser/browser.types.d.ts +51 -0
  12. package/cjs/browser/browser.types.js +6 -0
  13. package/cjs/browser/browser.types.js.map +1 -0
  14. package/cjs/browser/cookie.d.ts +18 -0
  15. package/cjs/browser/cookie.js +101 -0
  16. package/cjs/browser/cookie.js.map +1 -0
  17. package/cjs/browser/fetchObservable.d.ts +25 -0
  18. package/cjs/browser/fetchObservable.js +79 -0
  19. package/cjs/browser/fetchObservable.js.map +1 -0
  20. package/cjs/browser/pageMayExitObservable.d.ts +14 -0
  21. package/cjs/browser/pageMayExitObservable.js +45 -0
  22. package/cjs/browser/pageMayExitObservable.js.map +1 -0
  23. package/cjs/browser/runOnReadyState.d.ts +5 -0
  24. package/cjs/browser/runOnReadyState.js +20 -0
  25. package/cjs/browser/runOnReadyState.js.map +1 -0
  26. package/cjs/browser/xhrObservable.d.ts +23 -0
  27. package/cjs/browser/xhrObservable.js +83 -0
  28. package/cjs/browser/xhrObservable.js.map +1 -0
  29. package/cjs/domain/allowedTrackingOrigins.d.ts +4 -0
  30. package/cjs/domain/allowedTrackingOrigins.js +25 -0
  31. package/cjs/domain/allowedTrackingOrigins.js.map +1 -0
  32. package/cjs/domain/bufferedData.d.ts +14 -0
  33. package/cjs/domain/bufferedData.js +22 -0
  34. package/cjs/domain/bufferedData.js.map +1 -0
  35. package/cjs/domain/configuration/configuration.d.ts +303 -0
  36. package/cjs/domain/configuration/configuration.js +152 -0
  37. package/cjs/domain/configuration/configuration.js.map +1 -0
  38. package/cjs/domain/configuration/endpointBuilder.d.ts +12 -0
  39. package/cjs/domain/configuration/endpointBuilder.js +78 -0
  40. package/cjs/domain/configuration/endpointBuilder.js.map +1 -0
  41. package/cjs/domain/configuration/index.d.ts +5 -0
  42. package/cjs/domain/configuration/index.js +16 -0
  43. package/cjs/domain/configuration/index.js.map +1 -0
  44. package/cjs/domain/configuration/transportConfiguration.d.ts +20 -0
  45. package/cjs/domain/configuration/transportConfiguration.js +54 -0
  46. package/cjs/domain/configuration/transportConfiguration.js.map +1 -0
  47. package/cjs/domain/connectivity/connectivity.d.ts +14 -0
  48. package/cjs/domain/connectivity/connectivity.js +14 -0
  49. package/cjs/domain/connectivity/connectivity.js.map +1 -0
  50. package/cjs/domain/connectivity/index.d.ts +1 -0
  51. package/cjs/domain/connectivity/index.js +18 -0
  52. package/cjs/domain/connectivity/index.js.map +1 -0
  53. package/cjs/domain/console/consoleObservable.d.ts +21 -0
  54. package/cjs/domain/console/consoleObservable.js +84 -0
  55. package/cjs/domain/console/consoleObservable.js.map +1 -0
  56. package/cjs/domain/context/contextConstants.d.ts +21 -0
  57. package/cjs/domain/context/contextConstants.js +18 -0
  58. package/cjs/domain/context/contextConstants.js.map +1 -0
  59. package/cjs/domain/context/contextManager.d.ts +19 -0
  60. package/cjs/domain/context/contextManager.js +60 -0
  61. package/cjs/domain/context/contextManager.js.map +1 -0
  62. package/cjs/domain/context/contextUtils.d.ts +5 -0
  63. package/cjs/domain/context/contextUtils.js +16 -0
  64. package/cjs/domain/context/contextUtils.js.map +1 -0
  65. package/cjs/domain/context/defineContextMethod.d.ts +6 -0
  66. package/cjs/domain/context/defineContextMethod.js +21 -0
  67. package/cjs/domain/context/defineContextMethod.js.map +1 -0
  68. package/cjs/domain/context/storeContextManager.d.ts +6 -0
  69. package/cjs/domain/context/storeContextManager.js +40 -0
  70. package/cjs/domain/context/storeContextManager.js.map +1 -0
  71. package/cjs/domain/contexts/accountContext.d.ts +26 -0
  72. package/cjs/domain/contexts/accountContext.js +33 -0
  73. package/cjs/domain/contexts/accountContext.js.map +1 -0
  74. package/cjs/domain/contexts/globalContext.d.ts +18 -0
  75. package/cjs/domain/contexts/globalContext.js +21 -0
  76. package/cjs/domain/contexts/globalContext.js.map +1 -0
  77. package/cjs/domain/contexts/rumInternalContext.type.d.ts +14 -0
  78. package/cjs/domain/contexts/rumInternalContext.type.js +3 -0
  79. package/cjs/domain/contexts/rumInternalContext.type.js.map +1 -0
  80. package/cjs/domain/contexts/userContext.d.ts +29 -0
  81. package/cjs/domain/contexts/userContext.js +45 -0
  82. package/cjs/domain/contexts/userContext.js.map +1 -0
  83. package/cjs/domain/deflate/deflate.types.d.ts +40 -0
  84. package/cjs/domain/deflate/deflate.types.js +3 -0
  85. package/cjs/domain/deflate/deflate.types.js.map +1 -0
  86. package/cjs/domain/deflate/index.d.ts +1 -0
  87. package/cjs/domain/deflate/index.js +18 -0
  88. package/cjs/domain/deflate/index.js.map +1 -0
  89. package/cjs/domain/error/error.d.ts +23 -0
  90. package/cjs/domain/error/error.js +74 -0
  91. package/cjs/domain/error/error.js.map +1 -0
  92. package/cjs/domain/error/error.types.d.ts +47 -0
  93. package/cjs/domain/error/error.types.js +13 -0
  94. package/cjs/domain/error/error.types.js.map +1 -0
  95. package/cjs/domain/error/trackRuntimeError.d.ts +11 -0
  96. package/cjs/domain/error/trackRuntimeError.js +48 -0
  97. package/cjs/domain/error/trackRuntimeError.js.map +1 -0
  98. package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  99. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +39 -0
  100. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  101. package/cjs/domain/extension/extensionUtils.d.ts +10 -0
  102. package/cjs/domain/extension/extensionUtils.js +30 -0
  103. package/cjs/domain/extension/extensionUtils.js.map +1 -0
  104. package/cjs/domain/intakeSites.d.ts +8 -0
  105. package/cjs/domain/intakeSites.js +11 -0
  106. package/cjs/domain/intakeSites.js.map +1 -0
  107. package/cjs/domain/report/browser.types.d.ts +34 -0
  108. package/cjs/domain/report/browser.types.js +3 -0
  109. package/cjs/domain/report/browser.types.js.map +1 -0
  110. package/cjs/domain/report/reportObservable.d.ts +14 -0
  111. package/cjs/domain/report/reportObservable.js +99 -0
  112. package/cjs/domain/report/reportObservable.js.map +1 -0
  113. package/cjs/domain/resourceUtils.d.ts +18 -0
  114. package/cjs/domain/resourceUtils.js +20 -0
  115. package/cjs/domain/resourceUtils.js.map +1 -0
  116. package/cjs/domain/session/oldCookiesMigration.d.ts +11 -0
  117. package/cjs/domain/session/oldCookiesMigration.js +40 -0
  118. package/cjs/domain/session/oldCookiesMigration.js.map +1 -0
  119. package/cjs/domain/session/sessionConstants.d.ts +15 -0
  120. package/cjs/domain/session/sessionConstants.js +16 -0
  121. package/cjs/domain/session/sessionConstants.js.map +1 -0
  122. package/cjs/domain/session/sessionManager.d.ts +28 -0
  123. package/cjs/domain/session/sessionManager.js +185 -0
  124. package/cjs/domain/session/sessionManager.js.map +1 -0
  125. package/cjs/domain/session/sessionState.d.ts +16 -0
  126. package/cjs/domain/session/sessionState.js +76 -0
  127. package/cjs/domain/session/sessionState.js.map +1 -0
  128. package/cjs/domain/session/sessionStateValidation.d.ts +3 -0
  129. package/cjs/domain/session/sessionStateValidation.js +11 -0
  130. package/cjs/domain/session/sessionStateValidation.js.map +1 -0
  131. package/cjs/domain/session/sessionStore.d.ts +38 -0
  132. package/cjs/domain/session/sessionStore.js +181 -0
  133. package/cjs/domain/session/sessionStore.js.map +1 -0
  134. package/cjs/domain/session/sessionStoreOperations.d.ts +12 -0
  135. package/cjs/domain/session/sessionStoreOperations.js +119 -0
  136. package/cjs/domain/session/sessionStoreOperations.js.map +1 -0
  137. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +8 -0
  138. package/cjs/domain/session/storeStrategies/sessionInCookie.js +56 -0
  139. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  140. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +4 -0
  141. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +41 -0
  142. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  143. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  144. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +5 -0
  145. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  146. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  147. package/cjs/domain/synthetics/syntheticsWorkerValues.js +31 -0
  148. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  149. package/cjs/domain/tags.d.ts +6 -0
  150. package/cjs/domain/tags.js +67 -0
  151. package/cjs/domain/tags.js.map +1 -0
  152. package/cjs/domain/telemetry/index.d.ts +4 -0
  153. package/cjs/domain/telemetry/index.js +28 -0
  154. package/cjs/domain/telemetry/index.js.map +1 -0
  155. package/cjs/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  156. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +9 -0
  157. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  158. package/cjs/domain/telemetry/telemetry.d.ts +56 -0
  159. package/cjs/domain/telemetry/telemetry.js +248 -0
  160. package/cjs/domain/telemetry/telemetry.js.map +1 -0
  161. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +858 -0
  162. package/cjs/domain/telemetry/telemetryEvent.types.js +7 -0
  163. package/cjs/domain/telemetry/telemetryEvent.types.js.map +1 -0
  164. package/cjs/domain/trackingConsent.d.ts +13 -0
  165. package/cjs/domain/trackingConsent.js +28 -0
  166. package/cjs/domain/trackingConsent.js.map +1 -0
  167. package/cjs/index.d.ts +100 -0
  168. package/cjs/index.js +193 -0
  169. package/cjs/index.js.map +1 -0
  170. package/cjs/tools/abstractHooks.d.ts +24 -0
  171. package/cjs/tools/abstractHooks.js +41 -0
  172. package/cjs/tools/abstractHooks.js.map +1 -0
  173. package/cjs/tools/abstractLifeCycle.d.ts +23 -0
  174. package/cjs/tools/abstractLifeCycle.js +28 -0
  175. package/cjs/tools/abstractLifeCycle.js.map +1 -0
  176. package/cjs/tools/boundedBuffer.d.ts +16 -0
  177. package/cjs/tools/boundedBuffer.js +32 -0
  178. package/cjs/tools/boundedBuffer.js.map +1 -0
  179. package/cjs/tools/catchUserErrors.d.ts +1 -0
  180. package/cjs/tools/catchUserErrors.js +15 -0
  181. package/cjs/tools/catchUserErrors.js.map +1 -0
  182. package/cjs/tools/display.d.ts +38 -0
  183. package/cjs/tools/display.js +44 -0
  184. package/cjs/tools/display.js.map +1 -0
  185. package/cjs/tools/encoder.d.ts +54 -0
  186. package/cjs/tools/encoder.js +40 -0
  187. package/cjs/tools/encoder.js.map +1 -0
  188. package/cjs/tools/experimentalFeatures.d.ts +20 -0
  189. package/cjs/tools/experimentalFeatures.js +49 -0
  190. package/cjs/tools/experimentalFeatures.js.map +1 -0
  191. package/cjs/tools/getZoneJsOriginalValue.d.ts +19 -0
  192. package/cjs/tools/getZoneJsOriginalValue.js +29 -0
  193. package/cjs/tools/getZoneJsOriginalValue.js.map +1 -0
  194. package/cjs/tools/globalObject.d.ts +19 -0
  195. package/cjs/tools/globalObject.js +44 -0
  196. package/cjs/tools/globalObject.js.map +1 -0
  197. package/cjs/tools/instrumentMethod.d.ts +75 -0
  198. package/cjs/tools/instrumentMethod.js +118 -0
  199. package/cjs/tools/instrumentMethod.js.map +1 -0
  200. package/cjs/tools/matchOption.d.ts +8 -0
  201. package/cjs/tools/matchOption.js +35 -0
  202. package/cjs/tools/matchOption.js.map +1 -0
  203. package/cjs/tools/mergeInto.d.ts +25 -0
  204. package/cjs/tools/mergeInto.js +98 -0
  205. package/cjs/tools/mergeInto.js.map +1 -0
  206. package/cjs/tools/monitor.d.ts +9 -0
  207. package/cjs/tools/monitor.js +62 -0
  208. package/cjs/tools/monitor.js.map +1 -0
  209. package/cjs/tools/observable.d.ts +30 -0
  210. package/cjs/tools/observable.js +89 -0
  211. package/cjs/tools/observable.js.map +1 -0
  212. package/cjs/tools/queueMicrotask.d.ts +1 -0
  213. package/cjs/tools/queueMicrotask.js +17 -0
  214. package/cjs/tools/queueMicrotask.js.map +1 -0
  215. package/cjs/tools/readBytesFromStream.d.ts +11 -0
  216. package/cjs/tools/readBytesFromStream.js +63 -0
  217. package/cjs/tools/readBytesFromStream.js.map +1 -0
  218. package/cjs/tools/requestIdleCallback.d.ts +12 -0
  219. package/cjs/tools/requestIdleCallback.js +35 -0
  220. package/cjs/tools/requestIdleCallback.js.map +1 -0
  221. package/cjs/tools/sendToExtension.d.ts +3 -0
  222. package/cjs/tools/sendToExtension.js +11 -0
  223. package/cjs/tools/sendToExtension.js.map +1 -0
  224. package/cjs/tools/serialisation/context.d.ts +9 -0
  225. package/cjs/tools/serialisation/context.js +3 -0
  226. package/cjs/tools/serialisation/context.js.map +1 -0
  227. package/cjs/tools/serialisation/jsonStringify.d.ts +13 -0
  228. package/cjs/tools/serialisation/jsonStringify.js +48 -0
  229. package/cjs/tools/serialisation/jsonStringify.js.map +1 -0
  230. package/cjs/tools/serialisation/sanitize.d.ts +18 -0
  231. package/cjs/tools/serialisation/sanitize.js +188 -0
  232. package/cjs/tools/serialisation/sanitize.js.map +1 -0
  233. package/cjs/tools/stackTrace/computeStackTrace.d.ts +25 -0
  234. package/cjs/tools/stackTrace/computeStackTrace.js +187 -0
  235. package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -0
  236. package/cjs/tools/stackTrace/handlingStack.d.ts +10 -0
  237. package/cjs/tools/stackTrace/handlingStack.js +46 -0
  238. package/cjs/tools/stackTrace/handlingStack.js.map +1 -0
  239. package/cjs/tools/taskQueue.d.ts +15 -0
  240. package/cjs/tools/taskQueue.js +54 -0
  241. package/cjs/tools/taskQueue.js.map +1 -0
  242. package/cjs/tools/timer.d.ts +5 -0
  243. package/cjs/tools/timer.js +22 -0
  244. package/cjs/tools/timer.js.map +1 -0
  245. package/cjs/tools/utils/arrayUtils.d.ts +3 -0
  246. package/cjs/tools/utils/arrayUtils.js +20 -0
  247. package/cjs/tools/utils/arrayUtils.js.map +1 -0
  248. package/cjs/tools/utils/browserDetection.d.ts +8 -0
  249. package/cjs/tools/utils/browserDetection.js +33 -0
  250. package/cjs/tools/utils/browserDetection.js.map +1 -0
  251. package/cjs/tools/utils/byteUtils.d.ts +8 -0
  252. package/cjs/tools/utils/byteUtils.js +30 -0
  253. package/cjs/tools/utils/byteUtils.js.map +1 -0
  254. package/cjs/tools/utils/functionUtils.d.ts +8 -0
  255. package/cjs/tools/utils/functionUtils.js +43 -0
  256. package/cjs/tools/utils/functionUtils.js.map +1 -0
  257. package/cjs/tools/utils/numberUtils.d.ts +9 -0
  258. package/cjs/tools/utils/numberUtils.js +24 -0
  259. package/cjs/tools/utils/numberUtils.js.map +1 -0
  260. package/cjs/tools/utils/objectUtils.d.ts +10 -0
  261. package/cjs/tools/utils/objectUtils.js +23 -0
  262. package/cjs/tools/utils/objectUtils.js.map +1 -0
  263. package/cjs/tools/utils/polyfills.d.ts +7 -0
  264. package/cjs/tools/utils/polyfills.js +23 -0
  265. package/cjs/tools/utils/polyfills.js.map +1 -0
  266. package/cjs/tools/utils/responseUtils.d.ts +2 -0
  267. package/cjs/tools/utils/responseUtils.js +17 -0
  268. package/cjs/tools/utils/responseUtils.js.map +1 -0
  269. package/cjs/tools/utils/stringUtils.d.ts +8 -0
  270. package/cjs/tools/utils/stringUtils.js +55 -0
  271. package/cjs/tools/utils/stringUtils.js.map +1 -0
  272. package/cjs/tools/utils/timeUtils.d.ts +53 -0
  273. package/cjs/tools/utils/timeUtils.js +101 -0
  274. package/cjs/tools/utils/timeUtils.js.map +1 -0
  275. package/cjs/tools/utils/timezone.d.ts +1 -0
  276. package/cjs/tools/utils/timezone.js +13 -0
  277. package/cjs/tools/utils/timezone.js.map +1 -0
  278. package/cjs/tools/utils/typeUtils.d.ts +4 -0
  279. package/cjs/tools/utils/typeUtils.js +16 -0
  280. package/cjs/tools/utils/typeUtils.js.map +1 -0
  281. package/cjs/tools/utils/urlPolyfill.d.ts +5 -0
  282. package/cjs/tools/utils/urlPolyfill.js +59 -0
  283. package/cjs/tools/utils/urlPolyfill.js.map +1 -0
  284. package/cjs/tools/valueHistory.d.ts +27 -0
  285. package/cjs/tools/valueHistory.js +104 -0
  286. package/cjs/tools/valueHistory.js.map +1 -0
  287. package/cjs/transport/batch.d.ts +16 -0
  288. package/cjs/transport/batch.js +108 -0
  289. package/cjs/transport/batch.js.map +1 -0
  290. package/cjs/transport/eventBridge.d.ts +21 -0
  291. package/cjs/transport/eventBridge.js +46 -0
  292. package/cjs/transport/eventBridge.js.map +1 -0
  293. package/cjs/transport/flushController.d.ts +58 -0
  294. package/cjs/transport/flushController.js +109 -0
  295. package/cjs/transport/flushController.js.map +1 -0
  296. package/cjs/transport/httpRequest.d.ts +51 -0
  297. package/cjs/transport/httpRequest.js +80 -0
  298. package/cjs/transport/httpRequest.js.map +1 -0
  299. package/cjs/transport/index.d.ts +7 -0
  300. package/cjs/transport/index.js +14 -0
  301. package/cjs/transport/index.js.map +1 -0
  302. package/cjs/transport/sendWithRetryStrategy.d.ts +41 -0
  303. package/cjs/transport/sendWithRetryStrategy.js +163 -0
  304. package/cjs/transport/sendWithRetryStrategy.js.map +1 -0
  305. package/esm/boot/displayAlreadyInitializedError.d.ts +2 -0
  306. package/esm/boot/displayAlreadyInitializedError.js +7 -0
  307. package/esm/boot/displayAlreadyInitializedError.js.map +1 -0
  308. package/esm/boot/init.d.ts +14 -0
  309. package/esm/boot/init.js +35 -0
  310. package/esm/boot/init.js.map +1 -0
  311. package/esm/browser/addEventListener.d.ts +87 -0
  312. package/esm/browser/addEventListener.js +51 -0
  313. package/esm/browser/addEventListener.js.map +1 -0
  314. package/esm/browser/browser.types.d.ts +51 -0
  315. package/esm/browser/browser.types.js +5 -0
  316. package/esm/browser/browser.types.js.map +1 -0
  317. package/esm/browser/cookie.d.ts +18 -0
  318. package/esm/browser/cookie.js +91 -0
  319. package/esm/browser/cookie.js.map +1 -0
  320. package/esm/browser/fetchObservable.d.ts +25 -0
  321. package/esm/browser/fetchObservable.js +75 -0
  322. package/esm/browser/fetchObservable.js.map +1 -0
  323. package/esm/browser/pageMayExitObservable.d.ts +14 -0
  324. package/esm/browser/pageMayExitObservable.js +40 -0
  325. package/esm/browser/pageMayExitObservable.js.map +1 -0
  326. package/esm/browser/runOnReadyState.d.ts +5 -0
  327. package/esm/browser/runOnReadyState.js +16 -0
  328. package/esm/browser/runOnReadyState.js.map +1 -0
  329. package/esm/browser/xhrObservable.d.ts +23 -0
  330. package/esm/browser/xhrObservable.js +80 -0
  331. package/esm/browser/xhrObservable.js.map +1 -0
  332. package/esm/domain/allowedTrackingOrigins.d.ts +4 -0
  333. package/esm/domain/allowedTrackingOrigins.js +21 -0
  334. package/esm/domain/allowedTrackingOrigins.js.map +1 -0
  335. package/esm/domain/bufferedData.d.ts +14 -0
  336. package/esm/domain/bufferedData.js +19 -0
  337. package/esm/domain/bufferedData.js.map +1 -0
  338. package/esm/domain/configuration/configuration.d.ts +303 -0
  339. package/esm/domain/configuration/configuration.js +146 -0
  340. package/esm/domain/configuration/configuration.js.map +1 -0
  341. package/esm/domain/configuration/endpointBuilder.d.ts +12 -0
  342. package/esm/domain/configuration/endpointBuilder.js +74 -0
  343. package/esm/domain/configuration/endpointBuilder.js.map +1 -0
  344. package/esm/domain/configuration/index.d.ts +5 -0
  345. package/esm/domain/configuration/index.js +4 -0
  346. package/esm/domain/configuration/index.js.map +1 -0
  347. package/esm/domain/configuration/transportConfiguration.d.ts +20 -0
  348. package/esm/domain/configuration/transportConfiguration.js +50 -0
  349. package/esm/domain/configuration/transportConfiguration.js.map +1 -0
  350. package/esm/domain/connectivity/connectivity.d.ts +14 -0
  351. package/esm/domain/connectivity/connectivity.js +11 -0
  352. package/esm/domain/connectivity/connectivity.js.map +1 -0
  353. package/esm/domain/connectivity/index.d.ts +1 -0
  354. package/esm/domain/connectivity/index.js +2 -0
  355. package/esm/domain/connectivity/index.js.map +1 -0
  356. package/esm/domain/console/consoleObservable.d.ts +21 -0
  357. package/esm/domain/console/consoleObservable.js +80 -0
  358. package/esm/domain/console/consoleObservable.js.map +1 -0
  359. package/esm/domain/context/contextConstants.d.ts +21 -0
  360. package/esm/domain/context/contextConstants.js +15 -0
  361. package/esm/domain/context/contextConstants.js.map +1 -0
  362. package/esm/domain/context/contextManager.d.ts +19 -0
  363. package/esm/domain/context/contextManager.js +57 -0
  364. package/esm/domain/context/contextManager.js.map +1 -0
  365. package/esm/domain/context/contextUtils.d.ts +5 -0
  366. package/esm/domain/context/contextUtils.js +13 -0
  367. package/esm/domain/context/contextUtils.js.map +1 -0
  368. package/esm/domain/context/defineContextMethod.d.ts +6 -0
  369. package/esm/domain/context/defineContextMethod.js +17 -0
  370. package/esm/domain/context/defineContextMethod.js.map +1 -0
  371. package/esm/domain/context/storeContextManager.d.ts +6 -0
  372. package/esm/domain/context/storeContextManager.js +35 -0
  373. package/esm/domain/context/storeContextManager.js.map +1 -0
  374. package/esm/domain/contexts/accountContext.d.ts +26 -0
  375. package/esm/domain/contexts/accountContext.js +29 -0
  376. package/esm/domain/contexts/accountContext.js.map +1 -0
  377. package/esm/domain/contexts/globalContext.d.ts +18 -0
  378. package/esm/domain/contexts/globalContext.js +17 -0
  379. package/esm/domain/contexts/globalContext.js.map +1 -0
  380. package/esm/domain/contexts/rumInternalContext.type.d.ts +14 -0
  381. package/esm/domain/contexts/rumInternalContext.type.js +2 -0
  382. package/esm/domain/contexts/rumInternalContext.type.js.map +1 -0
  383. package/esm/domain/contexts/userContext.d.ts +29 -0
  384. package/esm/domain/contexts/userContext.js +41 -0
  385. package/esm/domain/contexts/userContext.js.map +1 -0
  386. package/esm/domain/deflate/deflate.types.d.ts +40 -0
  387. package/esm/domain/deflate/deflate.types.js +2 -0
  388. package/esm/domain/deflate/deflate.types.js.map +1 -0
  389. package/esm/domain/deflate/index.d.ts +1 -0
  390. package/esm/domain/deflate/index.js +2 -0
  391. package/esm/domain/deflate/index.js.map +1 -0
  392. package/esm/domain/error/error.d.ts +23 -0
  393. package/esm/domain/error/error.js +65 -0
  394. package/esm/domain/error/error.js.map +1 -0
  395. package/esm/domain/error/error.types.d.ts +47 -0
  396. package/esm/domain/error/error.types.js +10 -0
  397. package/esm/domain/error/error.types.js.map +1 -0
  398. package/esm/domain/error/trackRuntimeError.d.ts +11 -0
  399. package/esm/domain/error/trackRuntimeError.js +43 -0
  400. package/esm/domain/error/trackRuntimeError.js.map +1 -0
  401. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +5 -0
  402. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +36 -0
  403. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -0
  404. package/esm/domain/extension/extensionUtils.d.ts +10 -0
  405. package/esm/domain/extension/extensionUtils.js +25 -0
  406. package/esm/domain/extension/extensionUtils.js.map +1 -0
  407. package/esm/domain/intakeSites.d.ts +8 -0
  408. package/esm/domain/intakeSites.js +8 -0
  409. package/esm/domain/intakeSites.js.map +1 -0
  410. package/esm/domain/report/browser.types.d.ts +34 -0
  411. package/esm/domain/report/browser.types.js +2 -0
  412. package/esm/domain/report/browser.types.js.map +1 -0
  413. package/esm/domain/report/reportObservable.d.ts +14 -0
  414. package/esm/domain/report/reportObservable.js +95 -0
  415. package/esm/domain/report/reportObservable.js.map +1 -0
  416. package/esm/domain/resourceUtils.d.ts +18 -0
  417. package/esm/domain/resourceUtils.js +17 -0
  418. package/esm/domain/resourceUtils.js.map +1 -0
  419. package/esm/domain/session/oldCookiesMigration.d.ts +11 -0
  420. package/esm/domain/session/oldCookiesMigration.js +36 -0
  421. package/esm/domain/session/oldCookiesMigration.js.map +1 -0
  422. package/esm/domain/session/sessionConstants.d.ts +15 -0
  423. package/esm/domain/session/sessionConstants.js +13 -0
  424. package/esm/domain/session/sessionConstants.js.map +1 -0
  425. package/esm/domain/session/sessionManager.d.ts +28 -0
  426. package/esm/domain/session/sessionManager.js +180 -0
  427. package/esm/domain/session/sessionManager.js.map +1 -0
  428. package/esm/domain/session/sessionState.d.ts +16 -0
  429. package/esm/domain/session/sessionState.js +66 -0
  430. package/esm/domain/session/sessionState.js.map +1 -0
  431. package/esm/domain/session/sessionStateValidation.d.ts +3 -0
  432. package/esm/domain/session/sessionStateValidation.js +7 -0
  433. package/esm/domain/session/sessionStateValidation.js.map +1 -0
  434. package/esm/domain/session/sessionStore.d.ts +38 -0
  435. package/esm/domain/session/sessionStore.js +175 -0
  436. package/esm/domain/session/sessionStore.js.map +1 -0
  437. package/esm/domain/session/sessionStoreOperations.d.ts +12 -0
  438. package/esm/domain/session/sessionStoreOperations.js +114 -0
  439. package/esm/domain/session/sessionStoreOperations.js.map +1 -0
  440. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +8 -0
  441. package/esm/domain/session/storeStrategies/sessionInCookie.js +50 -0
  442. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +1 -0
  443. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +4 -0
  444. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +37 -0
  445. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -0
  446. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -0
  447. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +2 -0
  448. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -0
  449. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +12 -0
  450. package/esm/domain/synthetics/syntheticsWorkerValues.js +24 -0
  451. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +1 -0
  452. package/esm/domain/tags.d.ts +6 -0
  453. package/esm/domain/tags.js +60 -0
  454. package/esm/domain/tags.js.map +1 -0
  455. package/esm/domain/telemetry/index.d.ts +4 -0
  456. package/esm/domain/telemetry/index.js +3 -0
  457. package/esm/domain/telemetry/index.js.map +1 -0
  458. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +18 -0
  459. package/esm/domain/telemetry/rawTelemetryEvent.types.js +6 -0
  460. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +1 -0
  461. package/esm/domain/telemetry/telemetry.d.ts +56 -0
  462. package/esm/domain/telemetry/telemetry.js +235 -0
  463. package/esm/domain/telemetry/telemetry.js.map +1 -0
  464. package/esm/domain/telemetry/telemetryEvent.types.d.ts +858 -0
  465. package/esm/domain/telemetry/telemetryEvent.types.js +6 -0
  466. package/esm/domain/telemetry/telemetryEvent.types.js.map +1 -0
  467. package/esm/domain/trackingConsent.d.ts +13 -0
  468. package/esm/domain/trackingConsent.js +24 -0
  469. package/esm/domain/trackingConsent.js.map +1 -0
  470. package/esm/index.d.ts +100 -0
  471. package/esm/index.js +76 -0
  472. package/esm/index.js.map +1 -0
  473. package/esm/tools/abstractHooks.d.ts +24 -0
  474. package/esm/tools/abstractHooks.js +37 -0
  475. package/esm/tools/abstractHooks.js.map +1 -0
  476. package/esm/tools/abstractLifeCycle.d.ts +23 -0
  477. package/esm/tools/abstractLifeCycle.js +24 -0
  478. package/esm/tools/abstractLifeCycle.js.map +1 -0
  479. package/esm/tools/boundedBuffer.d.ts +16 -0
  480. package/esm/tools/boundedBuffer.js +29 -0
  481. package/esm/tools/boundedBuffer.js.map +1 -0
  482. package/esm/tools/catchUserErrors.d.ts +1 -0
  483. package/esm/tools/catchUserErrors.js +12 -0
  484. package/esm/tools/catchUserErrors.js.map +1 -0
  485. package/esm/tools/display.d.ts +38 -0
  486. package/esm/tools/display.js +41 -0
  487. package/esm/tools/display.js.map +1 -0
  488. package/esm/tools/encoder.d.ts +54 -0
  489. package/esm/tools/encoder.js +37 -0
  490. package/esm/tools/encoder.js.map +1 -0
  491. package/esm/tools/experimentalFeatures.d.ts +20 -0
  492. package/esm/tools/experimentalFeatures.js +41 -0
  493. package/esm/tools/experimentalFeatures.js.map +1 -0
  494. package/esm/tools/getZoneJsOriginalValue.d.ts +19 -0
  495. package/esm/tools/getZoneJsOriginalValue.js +26 -0
  496. package/esm/tools/getZoneJsOriginalValue.js.map +1 -0
  497. package/esm/tools/globalObject.d.ts +19 -0
  498. package/esm/tools/globalObject.js +40 -0
  499. package/esm/tools/globalObject.js.map +1 -0
  500. package/esm/tools/instrumentMethod.d.ts +75 -0
  501. package/esm/tools/instrumentMethod.js +114 -0
  502. package/esm/tools/instrumentMethod.js.map +1 -0
  503. package/esm/tools/matchOption.d.ts +8 -0
  504. package/esm/tools/matchOption.js +31 -0
  505. package/esm/tools/matchOption.js.map +1 -0
  506. package/esm/tools/mergeInto.d.ts +25 -0
  507. package/esm/tools/mergeInto.js +93 -0
  508. package/esm/tools/mergeInto.js.map +1 -0
  509. package/esm/tools/monitor.d.ts +9 -0
  510. package/esm/tools/monitor.js +52 -0
  511. package/esm/tools/monitor.js.map +1 -0
  512. package/esm/tools/observable.d.ts +30 -0
  513. package/esm/tools/observable.js +83 -0
  514. package/esm/tools/observable.js.map +1 -0
  515. package/esm/tools/queueMicrotask.d.ts +1 -0
  516. package/esm/tools/queueMicrotask.js +14 -0
  517. package/esm/tools/queueMicrotask.js.map +1 -0
  518. package/esm/tools/readBytesFromStream.d.ts +11 -0
  519. package/esm/tools/readBytesFromStream.js +60 -0
  520. package/esm/tools/readBytesFromStream.js.map +1 -0
  521. package/esm/tools/requestIdleCallback.d.ts +12 -0
  522. package/esm/tools/requestIdleCallback.js +30 -0
  523. package/esm/tools/requestIdleCallback.js.map +1 -0
  524. package/esm/tools/sendToExtension.d.ts +3 -0
  525. package/esm/tools/sendToExtension.js +8 -0
  526. package/esm/tools/sendToExtension.js.map +1 -0
  527. package/esm/tools/serialisation/context.d.ts +9 -0
  528. package/esm/tools/serialisation/context.js +2 -0
  529. package/esm/tools/serialisation/context.js.map +1 -0
  530. package/esm/tools/serialisation/jsonStringify.d.ts +13 -0
  531. package/esm/tools/serialisation/jsonStringify.js +44 -0
  532. package/esm/tools/serialisation/jsonStringify.js.map +1 -0
  533. package/esm/tools/serialisation/sanitize.d.ts +18 -0
  534. package/esm/tools/serialisation/sanitize.js +185 -0
  535. package/esm/tools/serialisation/sanitize.js.map +1 -0
  536. package/esm/tools/stackTrace/computeStackTrace.d.ts +25 -0
  537. package/esm/tools/stackTrace/computeStackTrace.js +183 -0
  538. package/esm/tools/stackTrace/computeStackTrace.js.map +1 -0
  539. package/esm/tools/stackTrace/handlingStack.d.ts +10 -0
  540. package/esm/tools/stackTrace/handlingStack.js +41 -0
  541. package/esm/tools/stackTrace/handlingStack.js.map +1 -0
  542. package/esm/tools/taskQueue.d.ts +15 -0
  543. package/esm/tools/taskQueue.js +50 -0
  544. package/esm/tools/taskQueue.js.map +1 -0
  545. package/esm/tools/timer.d.ts +5 -0
  546. package/esm/tools/timer.js +16 -0
  547. package/esm/tools/timer.js.map +1 -0
  548. package/esm/tools/utils/arrayUtils.d.ts +3 -0
  549. package/esm/tools/utils/arrayUtils.js +15 -0
  550. package/esm/tools/utils/arrayUtils.js.map +1 -0
  551. package/esm/tools/utils/browserDetection.d.ts +8 -0
  552. package/esm/tools/utils/browserDetection.js +28 -0
  553. package/esm/tools/utils/browserDetection.js.map +1 -0
  554. package/esm/tools/utils/byteUtils.d.ts +8 -0
  555. package/esm/tools/utils/byteUtils.js +25 -0
  556. package/esm/tools/utils/byteUtils.js.map +1 -0
  557. package/esm/tools/utils/functionUtils.d.ts +8 -0
  558. package/esm/tools/utils/functionUtils.js +39 -0
  559. package/esm/tools/utils/functionUtils.js.map +1 -0
  560. package/esm/tools/utils/numberUtils.d.ts +9 -0
  561. package/esm/tools/utils/numberUtils.js +18 -0
  562. package/esm/tools/utils/numberUtils.js.map +1 -0
  563. package/esm/tools/utils/objectUtils.d.ts +10 -0
  564. package/esm/tools/utils/objectUtils.js +17 -0
  565. package/esm/tools/utils/objectUtils.js.map +1 -0
  566. package/esm/tools/utils/polyfills.d.ts +7 -0
  567. package/esm/tools/utils/polyfills.js +18 -0
  568. package/esm/tools/utils/polyfills.js.map +1 -0
  569. package/esm/tools/utils/responseUtils.d.ts +2 -0
  570. package/esm/tools/utils/responseUtils.js +13 -0
  571. package/esm/tools/utils/responseUtils.js.map +1 -0
  572. package/esm/tools/utils/stringUtils.d.ts +8 -0
  573. package/esm/tools/utils/stringUtils.js +49 -0
  574. package/esm/tools/utils/stringUtils.js.map +1 -0
  575. package/esm/tools/utils/timeUtils.d.ts +53 -0
  576. package/esm/tools/utils/timeUtils.js +84 -0
  577. package/esm/tools/utils/timeUtils.js.map +1 -0
  578. package/esm/tools/utils/timezone.d.ts +1 -0
  579. package/esm/tools/utils/timezone.js +10 -0
  580. package/esm/tools/utils/timezone.js.map +1 -0
  581. package/esm/tools/utils/typeUtils.d.ts +4 -0
  582. package/esm/tools/utils/typeUtils.js +13 -0
  583. package/esm/tools/utils/typeUtils.js.map +1 -0
  584. package/esm/tools/utils/urlPolyfill.d.ts +5 -0
  585. package/esm/tools/utils/urlPolyfill.js +52 -0
  586. package/esm/tools/utils/urlPolyfill.js.map +1 -0
  587. package/esm/tools/valueHistory.d.ts +27 -0
  588. package/esm/tools/valueHistory.js +100 -0
  589. package/esm/tools/valueHistory.js.map +1 -0
  590. package/esm/transport/batch.d.ts +16 -0
  591. package/esm/transport/batch.js +105 -0
  592. package/esm/transport/batch.js.map +1 -0
  593. package/esm/transport/eventBridge.d.ts +21 -0
  594. package/esm/transport/eventBridge.js +41 -0
  595. package/esm/transport/eventBridge.js.map +1 -0
  596. package/esm/transport/flushController.d.ts +58 -0
  597. package/esm/transport/flushController.js +106 -0
  598. package/esm/transport/flushController.js.map +1 -0
  599. package/esm/transport/httpRequest.d.ts +51 -0
  600. package/esm/transport/httpRequest.js +75 -0
  601. package/esm/transport/httpRequest.js.map +1 -0
  602. package/esm/transport/index.d.ts +7 -0
  603. package/esm/transport/index.js +5 -0
  604. package/esm/transport/index.js.map +1 -0
  605. package/esm/transport/sendWithRetryStrategy.d.ts +41 -0
  606. package/esm/transport/sendWithRetryStrategy.js +158 -0
  607. package/esm/transport/sendWithRetryStrategy.js.map +1 -0
  608. package/package.json +31 -0
  609. package/src/boot/displayAlreadyInitializedError.ts +8 -0
  610. package/src/boot/init.ts +55 -0
  611. package/src/browser/addEventListener.ts +145 -0
  612. package/src/browser/browser.types.ts +82 -0
  613. package/src/browser/cookie.ts +107 -0
  614. package/src/browser/fetchObservable.ts +127 -0
  615. package/src/browser/pageMayExitObservable.ts +56 -0
  616. package/src/browser/runOnReadyState.ts +25 -0
  617. package/src/browser/xhrObservable.ts +130 -0
  618. package/src/domain/allowedTrackingOrigins.ts +30 -0
  619. package/src/domain/bufferedData.ts +32 -0
  620. package/src/domain/configuration/configuration.ts +472 -0
  621. package/src/domain/configuration/endpointBuilder.ts +119 -0
  622. package/src/domain/configuration/index.ts +11 -0
  623. package/src/domain/configuration/transportConfiguration.ts +78 -0
  624. package/src/domain/connectivity/connectivity.ts +31 -0
  625. package/src/domain/connectivity/index.ts +1 -0
  626. package/src/domain/console/consoleObservable.ts +118 -0
  627. package/src/domain/context/contextConstants.ts +27 -0
  628. package/src/domain/context/contextManager.ts +85 -0
  629. package/src/domain/context/contextUtils.ts +14 -0
  630. package/src/domain/context/defineContextMethod.ts +31 -0
  631. package/src/domain/context/storeContextManager.ts +55 -0
  632. package/src/domain/contexts/accountContext.ts +47 -0
  633. package/src/domain/contexts/globalContext.ts +30 -0
  634. package/src/domain/contexts/rumInternalContext.type.ts +15 -0
  635. package/src/domain/contexts/userContext.ts +64 -0
  636. package/src/domain/deflate/deflate.types.ts +57 -0
  637. package/src/domain/deflate/index.ts +1 -0
  638. package/src/domain/error/error.ts +103 -0
  639. package/src/domain/error/error.types.ts +64 -0
  640. package/src/domain/error/trackRuntimeError.ts +50 -0
  641. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +46 -0
  642. package/src/domain/extension/extensionUtils.ts +28 -0
  643. package/src/domain/intakeSites.ts +17 -0
  644. package/src/domain/report/browser.types.ts +38 -0
  645. package/src/domain/report/reportObservable.ts +133 -0
  646. package/src/domain/resourceUtils.ts +21 -0
  647. package/src/domain/session/README.md +193 -0
  648. package/src/domain/session/oldCookiesMigration.ts +42 -0
  649. package/src/domain/session/sessionConstants.ts +19 -0
  650. package/src/domain/session/sessionManager.ts +244 -0
  651. package/src/domain/session/sessionState.ts +88 -0
  652. package/src/domain/session/sessionStateValidation.ts +9 -0
  653. package/src/domain/session/sessionStore.ts +244 -0
  654. package/src/domain/session/sessionStoreOperations.ts +131 -0
  655. package/src/domain/session/storeStrategies/sessionInCookie.ts +85 -0
  656. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +44 -0
  657. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +16 -0
  658. package/src/domain/synthetics/syntheticsWorkerValues.ts +38 -0
  659. package/src/domain/tags.ts +76 -0
  660. package/src/domain/telemetry/index.ts +22 -0
  661. package/src/domain/telemetry/rawTelemetryEvent.types.ts +22 -0
  662. package/src/domain/telemetry/telemetry.ts +345 -0
  663. package/src/domain/telemetry/telemetryEvent.types.ts +899 -0
  664. package/src/domain/trackingConsent.ts +34 -0
  665. package/src/index.ts +164 -0
  666. package/src/tools/abstractHooks.ts +72 -0
  667. package/src/tools/abstractLifeCycle.ts +46 -0
  668. package/src/tools/boundedBuffer.ts +45 -0
  669. package/src/tools/catchUserErrors.ts +11 -0
  670. package/src/tools/display.ts +56 -0
  671. package/src/tools/encoder.ts +103 -0
  672. package/src/tools/experimentalFeatures.ts +51 -0
  673. package/src/tools/getZoneJsOriginalValue.ts +38 -0
  674. package/src/tools/globalObject.ts +51 -0
  675. package/src/tools/instrumentMethod.ts +170 -0
  676. package/src/tools/matchOption.ts +31 -0
  677. package/src/tools/mergeInto.ts +177 -0
  678. package/src/tools/monitor.ts +72 -0
  679. package/src/tools/observable.ts +104 -0
  680. package/src/tools/queueMicrotask.ts +13 -0
  681. package/src/tools/readBytesFromStream.ts +77 -0
  682. package/src/tools/requestIdleCallback.ts +40 -0
  683. package/src/tools/sendToExtension.ts +14 -0
  684. package/src/tools/serialisation/context.ts +11 -0
  685. package/src/tools/serialisation/jsonStringify.ts +53 -0
  686. package/src/tools/serialisation/sanitize.ts +273 -0
  687. package/src/tools/stackTrace/computeStackTrace.ts +250 -0
  688. package/src/tools/stackTrace/handlingStack.ts +48 -0
  689. package/src/tools/taskQueue.ts +63 -0
  690. package/src/tools/timer.ts +21 -0
  691. package/src/tools/utils/arrayUtils.ts +15 -0
  692. package/src/tools/utils/browserDetection.ts +39 -0
  693. package/src/tools/utils/byteUtils.ts +35 -0
  694. package/src/tools/utils/functionUtils.ts +45 -0
  695. package/src/tools/utils/numberUtils.ts +20 -0
  696. package/src/tools/utils/objectUtils.ts +19 -0
  697. package/src/tools/utils/polyfills.ts +23 -0
  698. package/src/tools/utils/responseUtils.ts +12 -0
  699. package/src/tools/utils/stringUtils.ts +52 -0
  700. package/src/tools/utils/timeUtils.ts +117 -0
  701. package/src/tools/utils/timezone.ts +9 -0
  702. package/src/tools/utils/typeUtils.ts +12 -0
  703. package/src/tools/utils/urlPolyfill.ts +56 -0
  704. package/src/tools/valueHistory.ts +151 -0
  705. package/src/transport/batch.ts +144 -0
  706. package/src/transport/eventBridge.ts +61 -0
  707. package/src/transport/flushController.ts +144 -0
  708. package/src/transport/httpRequest.ts +164 -0
  709. package/src/transport/index.ts +7 -0
  710. package/src/transport/sendWithRetryStrategy.ts +222 -0
@@ -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 & string>(
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 && 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]> | undefined {
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,72 @@
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: any, ...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[]) => any>(fn: T): T {
32
+ return function (this: any) {
33
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
34
+ return callMonitored(fn, this, arguments as unknown as Parameters<T>)
35
+ } as unknown as T // consider output type has input type
36
+ }
37
+
38
+ export function callMonitored<T extends (...args: any[]) => any>(
39
+ fn: T,
40
+ context: ThisParameterType<T>,
41
+ args: Parameters<T>
42
+ ): ReturnType<T> | undefined
43
+ export function callMonitored<T extends (this: void) => any>(fn: T): ReturnType<T> | undefined
44
+ export function callMonitored<T extends (...args: any[]) => any>(
45
+ fn: T,
46
+ context?: any,
47
+ args?: any
48
+ ): ReturnType<T> | undefined {
49
+ try {
50
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
51
+ return fn.apply(context, args)
52
+ } catch (e) {
53
+ monitorError(e)
54
+ }
55
+ }
56
+
57
+ export function monitorError(e: unknown) {
58
+ displayIfDebugEnabled(e)
59
+ if (onMonitorErrorCollected) {
60
+ try {
61
+ onMonitorErrorCollected(e)
62
+ } catch (e) {
63
+ displayIfDebugEnabled(e)
64
+ }
65
+ }
66
+ }
67
+
68
+ export function displayIfDebugEnabled(...args: any[]) {
69
+ if (debugMode) {
70
+ display.error('[MONITOR]', ...args)
71
+ }
72
+ }
@@ -0,0 +1,104 @@
1
+ import { queueMicrotask } from './queueMicrotask'
2
+
3
+ export interface Subscription {
4
+ unsubscribe: () => void
5
+ }
6
+
7
+ type Observer<T> = (data: T) => void
8
+
9
+ // eslint-disable-next-line no-restricted-syntax
10
+ export class Observable<T> {
11
+ protected observers: Array<Observer<T>> = []
12
+ private onLastUnsubscribe?: () => void
13
+
14
+ constructor(private onFirstSubscribe?: (observable: Observable<T>) => (() => void) | void) {}
15
+
16
+ subscribe(observer: Observer<T>): Subscription {
17
+ this.addObserver(observer)
18
+ return {
19
+ unsubscribe: () => this.removeObserver(observer),
20
+ }
21
+ }
22
+
23
+ notify(data: T) {
24
+ this.observers.forEach((observer) => observer(data))
25
+ }
26
+
27
+ protected addObserver(observer: Observer<T>) {
28
+ this.observers.push(observer)
29
+ if (this.observers.length === 1 && this.onFirstSubscribe) {
30
+ this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined
31
+ }
32
+ }
33
+
34
+ protected removeObserver(observer: Observer<T>) {
35
+ this.observers = this.observers.filter((other) => observer !== other)
36
+ if (!this.observers.length && this.onLastUnsubscribe) {
37
+ this.onLastUnsubscribe()
38
+ }
39
+ }
40
+ }
41
+
42
+ export function mergeObservables<T>(...observables: Array<Observable<T>>) {
43
+ return new Observable<T>((globalObservable) => {
44
+ const subscriptions: Subscription[] = observables.map((observable) =>
45
+ observable.subscribe((data) => globalObservable.notify(data))
46
+ )
47
+ return () => subscriptions.forEach((subscription) => subscription.unsubscribe())
48
+ })
49
+ }
50
+
51
+ // eslint-disable-next-line no-restricted-syntax
52
+ export class BufferedObservable<T> extends Observable<T> {
53
+ private buffer: T[] = []
54
+
55
+ constructor(private maxBufferSize: number) {
56
+ super()
57
+ }
58
+
59
+ notify(data: T) {
60
+ this.buffer.push(data)
61
+ if (this.buffer.length > this.maxBufferSize) {
62
+ this.buffer.shift()
63
+ }
64
+ super.notify(data)
65
+ }
66
+
67
+ subscribe(observer: Observer<T>): Subscription {
68
+ let closed = false
69
+
70
+ const subscription = {
71
+ unsubscribe: () => {
72
+ closed = true
73
+ this.removeObserver(observer)
74
+ },
75
+ }
76
+
77
+ queueMicrotask(() => {
78
+ for (const data of this.buffer) {
79
+ if (closed) {
80
+ return
81
+ }
82
+ observer(data)
83
+ }
84
+
85
+ if (!closed) {
86
+ this.addObserver(observer)
87
+ }
88
+ })
89
+
90
+ return subscription
91
+ }
92
+
93
+ /**
94
+ * Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not
95
+ * needed anymore. This can be seen as a performance optimization, and things will work probably
96
+ * even if this method isn't called, but still useful to clarify our intent and lowering our
97
+ * memory impact.
98
+ */
99
+ unbuffer() {
100
+ queueMicrotask(() => {
101
+ this.maxBufferSize = this.buffer.length = 0
102
+ })
103
+ }
104
+ }
@@ -0,0 +1,13 @@
1
+ import { monitor } from './monitor'
2
+ import { globalObject } from './globalObject'
3
+
4
+ export function queueMicrotask(callback: () => void) {
5
+ const nativeImplementation = globalObject.queueMicrotask?.bind(globalObject)
6
+
7
+ if (typeof nativeImplementation === 'function') {
8
+ nativeImplementation(monitor(callback))
9
+ } else {
10
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises -- the callback is monitored, so it'll never throw
11
+ Promise.resolve().then(monitor(callback))
12
+ }
13
+ }
@@ -0,0 +1,77 @@
1
+ import { monitor } from './monitor'
2
+ import { noop } from './utils/functionUtils'
3
+
4
+ interface Options {
5
+ bytesLimit: number
6
+ collectStreamBody?: boolean
7
+ }
8
+ /**
9
+ * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of
10
+ * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit
11
+ * has been exceeded if more bytes were available.
12
+ */
13
+ export function readBytesFromStream(
14
+ stream: ReadableStream<Uint8Array>,
15
+ callback: (error?: Error, bytes?: Uint8Array, limitExceeded?: boolean) => void,
16
+ options: Options
17
+ ) {
18
+ const reader = stream.getReader()
19
+ const chunks: Uint8Array[] = []
20
+ let readBytesCount = 0
21
+
22
+ readMore()
23
+
24
+ function readMore() {
25
+ reader.read().then(
26
+ monitor((result: ReadableStreamReadResult<Uint8Array>) => {
27
+ if (result.done) {
28
+ onDone()
29
+ return
30
+ }
31
+
32
+ if (options.collectStreamBody) {
33
+ chunks.push(result.value)
34
+ }
35
+ readBytesCount += result.value.length
36
+
37
+ if (readBytesCount > options.bytesLimit) {
38
+ onDone()
39
+ } else {
40
+ readMore()
41
+ }
42
+ }),
43
+ monitor((error) => callback(error))
44
+ )
45
+ }
46
+
47
+ function onDone() {
48
+ reader.cancel().catch(
49
+ // we don't care if cancel fails, but we still need to catch the error to avoid reporting it
50
+ // as an unhandled rejection
51
+ noop
52
+ )
53
+
54
+ let bytes: Uint8Array | undefined
55
+ let limitExceeded: boolean | undefined
56
+ if (options.collectStreamBody) {
57
+ let completeBuffer: Uint8Array
58
+ if (chunks.length === 1) {
59
+ // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just
60
+ // use it directly.
61
+ completeBuffer = chunks[0]
62
+ } else {
63
+ // else, we need to copy buffers into a larger buffer to concatenate them.
64
+ completeBuffer = new Uint8Array(readBytesCount)
65
+ let offset = 0
66
+ chunks.forEach((chunk) => {
67
+ completeBuffer.set(chunk, offset)
68
+ offset += chunk.length
69
+ })
70
+ }
71
+ bytes = completeBuffer.slice(0, options.bytesLimit)
72
+ limitExceeded = completeBuffer.length > options.bytesLimit
73
+ }
74
+
75
+ callback(undefined, bytes, limitExceeded)
76
+ }
77
+ }
@@ -0,0 +1,40 @@
1
+ import { setTimeout, clearTimeout } from './timer'
2
+ import { monitor } from './monitor'
3
+ import { dateNow } from './utils/timeUtils'
4
+
5
+ // This type is not yet supported in TS 3.8. Imported from the TS source until we upgrade the
6
+ // minimum supported TS version.
7
+ // https://github.com/microsoft/TypeScript/blob/13c374a868c926f6a907666a5599992c1351b773/src/lib/dom.generated.d.ts#L9513-L9516
8
+ export interface IdleDeadline {
9
+ readonly didTimeout: boolean
10
+ timeRemaining(): DOMHighResTimeStamp
11
+ }
12
+
13
+ /**
14
+ * 'requestIdleCallback' with a shim.
15
+ */
16
+ export function requestIdleCallback(callback: (deadline: IdleDeadline) => void, opts?: { timeout?: number }) {
17
+ // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.
18
+ if (window.requestIdleCallback && window.cancelIdleCallback) {
19
+ const id = window.requestIdleCallback(monitor(callback), opts)
20
+ return () => window.cancelIdleCallback(id)
21
+ }
22
+ return requestIdleCallbackShim(callback)
23
+ }
24
+
25
+ export const MAX_TASK_TIME = 50
26
+
27
+ /*
28
+ * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback
29
+ * Note: there is no simple way to support the "timeout" option, so we ignore it.
30
+ */
31
+ export function requestIdleCallbackShim(callback: (deadline: IdleDeadline) => void) {
32
+ const start = dateNow()
33
+ const timeoutId = setTimeout(() => {
34
+ callback({
35
+ didTimeout: false,
36
+ timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),
37
+ })
38
+ }, 0)
39
+ return () => clearTimeout(timeoutId)
40
+ }
@@ -0,0 +1,14 @@
1
+ import { globalObject } from './globalObject'
2
+
3
+ interface BrowserWindow {
4
+ __ddBrowserSdkExtensionCallback?: (message: unknown) => void
5
+ }
6
+
7
+ type ExtensionMessageType = 'logs' | 'record' | 'rum' | 'telemetry'
8
+
9
+ export function sendToExtension(type: ExtensionMessageType, payload: unknown) {
10
+ const callback = (globalObject as BrowserWindow).__ddBrowserSdkExtensionCallback
11
+ if (callback) {
12
+ callback({ type, payload })
13
+ }
14
+ }