@kubesense/kubesense-browser-core 1.7.0 → 2.0.0-beta.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 (935) hide show
  1. package/LICENSE +1 -1
  2. package/cjs/boot/displayAlreadyInitializedError.js +6 -7
  3. package/cjs/boot/displayAlreadyInitializedError.js.map +1 -1
  4. package/cjs/boot/init.d.ts +1 -0
  5. package/cjs/boot/init.js +26 -34
  6. package/cjs/boot/init.js.map +1 -1
  7. package/cjs/browser/addEventListener.d.ts +12 -9
  8. package/cjs/browser/addEventListener.js +107 -50
  9. package/cjs/browser/addEventListener.js.map +1 -1
  10. package/cjs/browser/browser.types.d.ts +0 -24
  11. package/cjs/browser/cookie.d.ts +4 -1
  12. package/cjs/browser/cookie.js +76 -89
  13. package/cjs/browser/cookie.js.map +1 -1
  14. package/cjs/browser/cookieAccess.d.ts +18 -0
  15. package/cjs/browser/cookieAccess.js +129 -0
  16. package/cjs/browser/cookieAccess.js.map +1 -0
  17. package/cjs/browser/fetch.d.ts +9 -0
  18. package/cjs/browser/fetch.js +18 -0
  19. package/cjs/browser/fetch.js.map +1 -0
  20. package/cjs/browser/fetchObservable.d.ts +3 -3
  21. package/cjs/browser/fetchObservable.js +79 -92
  22. package/cjs/browser/fetchObservable.js.map +1 -1
  23. package/cjs/browser/pageMayExitObservable.d.ts +1 -2
  24. package/cjs/browser/pageMayExitObservable.js +53 -51
  25. package/cjs/browser/pageMayExitObservable.js.map +1 -1
  26. package/cjs/browser/runOnReadyState.d.ts +2 -3
  27. package/cjs/browser/runOnReadyState.js +18 -17
  28. package/cjs/browser/runOnReadyState.js.map +1 -1
  29. package/cjs/browser/webSocketObservable.d.ts +44 -0
  30. package/cjs/browser/webSocketObservable.js +92 -0
  31. package/cjs/browser/webSocketObservable.js.map +1 -0
  32. package/cjs/browser/xhrObservable.d.ts +8 -3
  33. package/cjs/browser/xhrObservable.js +64 -77
  34. package/cjs/browser/xhrObservable.js.map +1 -1
  35. package/cjs/domain/allowedTrackingOrigins.d.ts +2 -2
  36. package/cjs/domain/allowedTrackingOrigins.js +27 -23
  37. package/cjs/domain/allowedTrackingOrigins.js.map +1 -1
  38. package/cjs/domain/bufferedData.d.ts +20 -6
  39. package/cjs/domain/bufferedData.js +41 -19
  40. package/cjs/domain/bufferedData.js.map +1 -1
  41. package/cjs/domain/configuration/configuration.d.ts +169 -76
  42. package/cjs/domain/configuration/configuration.js +159 -128
  43. package/cjs/domain/configuration/configuration.js.map +1 -1
  44. package/cjs/domain/configuration/index.d.ts +5 -7
  45. package/cjs/domain/configuration/remoteSdkConfig.d.ts +26 -6
  46. package/cjs/domain/configuration/remoteSdkConfig.js +152 -159
  47. package/cjs/domain/configuration/remoteSdkConfig.js.map +1 -1
  48. package/cjs/domain/connectivity/connectivity.d.ts +2 -10
  49. package/cjs/domain/connectivity/connectivity.js +13 -13
  50. package/cjs/domain/connectivity/connectivity.js.map +1 -1
  51. package/cjs/domain/console/consoleObservable.d.ts +1 -1
  52. package/cjs/domain/console/consoleObservable.js +62 -74
  53. package/cjs/domain/console/consoleObservable.js.map +1 -1
  54. package/cjs/domain/context/contextConstants.js +24 -15
  55. package/cjs/domain/context/contextConstants.js.map +1 -1
  56. package/cjs/domain/context/contextManager.js +49 -53
  57. package/cjs/domain/context/contextManager.js.map +1 -1
  58. package/cjs/domain/context/contextUtils.js +11 -12
  59. package/cjs/domain/context/contextUtils.js.map +1 -1
  60. package/cjs/domain/context/defineContextMethod.d.ts +2 -2
  61. package/cjs/domain/context/defineContextMethod.js +15 -16
  62. package/cjs/domain/context/defineContextMethod.js.map +1 -1
  63. package/cjs/domain/context/storeContextManager.d.ts +1 -2
  64. package/cjs/domain/context/storeContextManager.js +31 -33
  65. package/cjs/domain/context/storeContextManager.js.map +1 -1
  66. package/cjs/domain/contexts/accountContext.d.ts +2 -2
  67. package/cjs/domain/contexts/accountContext.js +26 -29
  68. package/cjs/domain/contexts/accountContext.js.map +1 -1
  69. package/cjs/domain/contexts/globalContext.d.ts +2 -2
  70. package/cjs/domain/contexts/globalContext.js +17 -17
  71. package/cjs/domain/contexts/globalContext.js.map +1 -1
  72. package/cjs/domain/contexts/tabContext.d.ts +4 -0
  73. package/cjs/domain/contexts/tabContext.js +28 -0
  74. package/cjs/domain/contexts/tabContext.js.map +1 -0
  75. package/cjs/domain/contexts/telemetrySessionContext.d.ts +4 -0
  76. package/cjs/domain/contexts/telemetrySessionContext.js +17 -0
  77. package/cjs/domain/contexts/telemetrySessionContext.js.map +1 -0
  78. package/cjs/domain/contexts/userContext.d.ts +8 -3
  79. package/cjs/domain/contexts/userContext.js +79 -114
  80. package/cjs/domain/contexts/userContext.js.map +1 -1
  81. package/cjs/domain/deflate/deflate.types.js +11 -2
  82. package/cjs/domain/deflate/deflate.types.js.map +1 -1
  83. package/cjs/domain/error/error.d.ts +14 -6
  84. package/cjs/domain/error/error.js +101 -70
  85. package/cjs/domain/error/error.js.map +1 -1
  86. package/cjs/domain/error/error.types.d.ts +6 -4
  87. package/cjs/domain/error/error.types.js +24 -11
  88. package/cjs/domain/error/error.types.js.map +1 -1
  89. package/cjs/domain/error/isError.d.ts +2 -0
  90. package/cjs/domain/error/isError.js +14 -0
  91. package/cjs/domain/error/isError.js.map +1 -0
  92. package/cjs/domain/error/trackRuntimeError.d.ts +3 -2
  93. package/cjs/domain/error/trackRuntimeError.js +44 -41
  94. package/cjs/domain/error/trackRuntimeError.js.map +1 -1
  95. package/cjs/domain/eventRateLimiter/createEventRateLimiter.d.ts +1 -2
  96. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js +28 -38
  97. package/cjs/domain/eventRateLimiter/createEventRateLimiter.js.map +1 -1
  98. package/cjs/domain/extension/extensionUtils.js +20 -25
  99. package/cjs/domain/extension/extensionUtils.js.map +1 -1
  100. package/cjs/domain/geo/geocoding.js +64 -0
  101. package/cjs/domain/geo/geocoding.js.map +1 -0
  102. package/cjs/domain/geo/geolocation.js +72 -0
  103. package/cjs/domain/geo/geolocation.js.map +1 -0
  104. package/cjs/domain/report/reportObservable.d.ts +1 -2
  105. package/cjs/domain/report/reportObservable.js +76 -85
  106. package/cjs/domain/report/reportObservable.js.map +1 -1
  107. package/cjs/domain/resourceUtils.d.ts +1 -0
  108. package/cjs/domain/resourceUtils.js +20 -17
  109. package/cjs/domain/resourceUtils.js.map +1 -1
  110. package/cjs/domain/sampler.d.ts +11 -0
  111. package/cjs/domain/sampler.js +40 -0
  112. package/cjs/domain/sampler.js.map +1 -0
  113. package/cjs/domain/session/sessionConstants.d.ts +1 -0
  114. package/cjs/domain/session/sessionConstants.js +19 -13
  115. package/cjs/domain/session/sessionConstants.js.map +1 -1
  116. package/cjs/domain/session/sessionManager.d.ts +21 -13
  117. package/cjs/domain/session/sessionManager.js +254 -191
  118. package/cjs/domain/session/sessionManager.js.map +1 -1
  119. package/cjs/domain/session/sessionState.d.ts +10 -1
  120. package/cjs/domain/session/sessionState.js +72 -56
  121. package/cjs/domain/session/sessionState.js.map +1 -1
  122. package/cjs/domain/session/sessionStateValidation.js +7 -8
  123. package/cjs/domain/session/sessionStateValidation.js.map +1 -1
  124. package/cjs/domain/session/sessionStore.d.ts +4 -33
  125. package/cjs/domain/session/sessionStore.js +41 -181
  126. package/cjs/domain/session/sessionStore.js.map +1 -1
  127. package/cjs/domain/session/storeStrategies/sessionInCookie.d.ts +7 -11
  128. package/cjs/domain/session/storeStrategies/sessionInCookie.js +90 -96
  129. package/cjs/domain/session/storeStrategies/sessionInCookie.js.map +1 -1
  130. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.d.ts +1 -4
  131. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js +39 -38
  132. package/cjs/domain/session/storeStrategies/sessionInLocalStorage.js.map +1 -1
  133. package/cjs/domain/session/storeStrategies/sessionInMemory.d.ts +12 -0
  134. package/cjs/domain/session/storeStrategies/sessionInMemory.js +36 -0
  135. package/cjs/domain/session/storeStrategies/sessionInMemory.js.map +1 -0
  136. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.d.ts +16 -7
  137. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js +7 -4
  138. package/cjs/domain/session/storeStrategies/sessionStoreStrategy.js.map +1 -1
  139. package/cjs/domain/sourceCodeContext.d.ts +22 -0
  140. package/cjs/domain/sourceCodeContext.js +56 -0
  141. package/cjs/domain/sourceCodeContext.js.map +1 -0
  142. package/cjs/domain/synthetics/syntheticsWorkerValues.d.ts +9 -3
  143. package/cjs/domain/synthetics/syntheticsWorkerValues.js +37 -25
  144. package/cjs/domain/synthetics/syntheticsWorkerValues.js.map +1 -1
  145. package/cjs/domain/tags.d.ts +1 -2
  146. package/cjs/domain/tags.js +23 -57
  147. package/cjs/domain/tags.js.map +1 -1
  148. package/cjs/domain/telemetry/rawTelemetryEvent.types.js +8 -7
  149. package/cjs/domain/telemetry/rawTelemetryEvent.types.js.map +1 -1
  150. package/cjs/domain/telemetry/telemetry.d.ts +7 -8
  151. package/cjs/domain/telemetry/telemetry.js +192 -215
  152. package/cjs/domain/telemetry/telemetry.js.map +1 -1
  153. package/cjs/domain/telemetry/telemetryEvent.types.d.ts +161 -16
  154. package/cjs/domain/trackingConsent.d.ts +1 -0
  155. package/cjs/domain/trackingConsent.js +35 -24
  156. package/cjs/domain/trackingConsent.js.map +1 -1
  157. package/cjs/domain/userAgentData/userAgentData.js +65 -96
  158. package/cjs/domain/userAgentData/userAgentData.js.map +1 -1
  159. package/cjs/index.d.ts +34 -30
  160. package/cjs/index.js +297 -213
  161. package/cjs/tools/abstractLifeCycle.js +19 -26
  162. package/cjs/tools/abstractLifeCycle.js.map +1 -1
  163. package/cjs/tools/catchUserErrors.js +12 -12
  164. package/cjs/tools/catchUserErrors.js.map +1 -1
  165. package/cjs/tools/display.d.ts +1 -37
  166. package/cjs/tools/display.js +8 -43
  167. package/cjs/tools/display.js.map +1 -1
  168. package/cjs/tools/encoder.js +36 -37
  169. package/cjs/tools/encoder.js.map +1 -1
  170. package/cjs/tools/experimentalFeatures.d.ts +1 -4
  171. package/cjs/tools/experimentalFeatures.js +29 -40
  172. package/cjs/tools/experimentalFeatures.js.map +1 -1
  173. package/cjs/tools/getZoneJsOriginalValue.d.ts +1 -1
  174. package/cjs/tools/getZoneJsOriginalValue.js +22 -25
  175. package/cjs/tools/getZoneJsOriginalValue.js.map +1 -1
  176. package/cjs/tools/instrumentMethod.d.ts +57 -0
  177. package/cjs/tools/instrumentMethod.js +179 -112
  178. package/cjs/tools/instrumentMethod.js.map +1 -1
  179. package/cjs/tools/matchOption.d.ts +0 -1
  180. package/cjs/tools/matchOption.js +21 -31
  181. package/cjs/tools/matchOption.js.map +1 -1
  182. package/cjs/tools/mockable.d.ts +22 -0
  183. package/cjs/tools/mockable.js +28 -0
  184. package/cjs/tools/mockable.js.map +1 -0
  185. package/cjs/tools/observable.d.ts +3 -1
  186. package/cjs/tools/observable.js +75 -85
  187. package/cjs/tools/observable.js.map +1 -1
  188. package/cjs/tools/queueMicrotask.js +9 -14
  189. package/cjs/tools/queueMicrotask.js.map +1 -1
  190. package/cjs/tools/readBytesFromStream.d.ts +1 -6
  191. package/cjs/tools/readBytesFromStream.js +18 -25
  192. package/cjs/tools/readBytesFromStream.js.map +1 -1
  193. package/cjs/tools/requestIdleCallback.js +23 -29
  194. package/cjs/tools/requestIdleCallback.js.map +1 -1
  195. package/cjs/tools/sendToExtension.js +10 -8
  196. package/cjs/tools/sendToExtension.js.map +1 -1
  197. package/cjs/tools/serialisation/jsonStringify.js +37 -42
  198. package/cjs/tools/serialisation/jsonStringify.js.map +1 -1
  199. package/cjs/tools/serialisation/sanitize.d.ts +1 -0
  200. package/cjs/tools/serialisation/sanitize.js +112 -167
  201. package/cjs/tools/serialisation/sanitize.js.map +1 -1
  202. package/cjs/tools/serialisation/stringify.d.ts +2 -0
  203. package/cjs/tools/serialisation/stringify.js +18 -0
  204. package/cjs/tools/serialisation/stringify.js.map +1 -0
  205. package/cjs/tools/stackTrace/computeStackTrace.js +121 -159
  206. package/cjs/tools/stackTrace/computeStackTrace.js.map +1 -1
  207. package/cjs/tools/stackTrace/handlingStack.d.ts +1 -1
  208. package/cjs/tools/stackTrace/handlingStack.js +39 -38
  209. package/cjs/tools/stackTrace/handlingStack.js.map +1 -1
  210. package/cjs/tools/taskQueue.js +40 -49
  211. package/cjs/tools/taskQueue.js.map +1 -1
  212. package/cjs/tools/thenable.d.ts +8 -0
  213. package/cjs/tools/thenable.js +27 -0
  214. package/cjs/tools/thenable.js.map +1 -0
  215. package/cjs/tools/timer.d.ts +2 -1
  216. package/cjs/tools/timer.js +14 -13
  217. package/cjs/tools/timer.js.map +1 -1
  218. package/cjs/tools/utils/arrayUtils.d.ts +1 -0
  219. package/cjs/tools/utils/arrayUtils.js +17 -13
  220. package/cjs/tools/utils/arrayUtils.js.map +1 -1
  221. package/cjs/tools/utils/browserDetection.d.ts +1 -0
  222. package/cjs/tools/utils/browserDetection.js +25 -23
  223. package/cjs/tools/utils/browserDetection.js.map +1 -1
  224. package/cjs/tools/utils/byteUtils.js +20 -28
  225. package/cjs/tools/utils/byteUtils.js.map +1 -1
  226. package/cjs/tools/utils/functionUtils.js +33 -40
  227. package/cjs/tools/utils/functionUtils.js.map +1 -1
  228. package/cjs/tools/utils/numberUtils.d.ts +0 -6
  229. package/cjs/tools/utils/numberUtils.js +7 -18
  230. package/cjs/tools/utils/numberUtils.js.map +1 -1
  231. package/cjs/tools/utils/objectUtils.d.ts +2 -0
  232. package/cjs/tools/utils/objectUtils.js +27 -14
  233. package/cjs/tools/utils/objectUtils.js.map +1 -1
  234. package/cjs/tools/utils/polyfills.js +12 -16
  235. package/cjs/tools/utils/polyfills.js.map +1 -1
  236. package/cjs/tools/utils/responseUtils.js +11 -12
  237. package/cjs/tools/utils/responseUtils.js.map +1 -1
  238. package/cjs/tools/utils/stringUtils.d.ts +9 -0
  239. package/cjs/tools/utils/stringUtils.js +73 -77
  240. package/cjs/tools/utils/stringUtils.js.map +1 -1
  241. package/cjs/tools/utils/timezone.js +9 -10
  242. package/cjs/tools/utils/timezone.js.map +1 -1
  243. package/cjs/tools/valueHistory.d.ts +16 -3
  244. package/cjs/tools/valueHistory.js +113 -99
  245. package/cjs/tools/valueHistory.js.map +1 -1
  246. package/cjs/transport/batch.d.ts +11 -7
  247. package/cjs/transport/batch.js +93 -106
  248. package/cjs/transport/batch.js.map +1 -1
  249. package/cjs/transport/eventBridge.d.ts +6 -2
  250. package/cjs/transport/eventBridge.js +54 -38
  251. package/cjs/transport/eventBridge.js.map +1 -1
  252. package/cjs/transport/flushController.d.ts +6 -15
  253. package/cjs/transport/flushController.js +99 -118
  254. package/cjs/transport/flushController.js.map +1 -1
  255. package/cjs/transport/httpRequest.d.ts +8 -9
  256. package/cjs/transport/httpRequest.js +61 -97
  257. package/cjs/transport/httpRequest.js.map +1 -1
  258. package/cjs/transport/index.d.ts +3 -2
  259. package/cjs/transport/sendWithRetryStrategy.d.ts +9 -4
  260. package/cjs/transport/sendWithRetryStrategy.js +144 -148
  261. package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
  262. package/esm/boot/displayAlreadyInitializedError.mjs +9 -0
  263. package/esm/boot/displayAlreadyInitializedError.mjs.map +1 -0
  264. package/esm/boot/init.mjs +30 -0
  265. package/esm/boot/init.mjs.map +1 -0
  266. package/esm/browser/addEventListener.mjs +107 -0
  267. package/esm/browser/addEventListener.mjs.map +1 -0
  268. package/esm/browser/cookie.mjs +92 -0
  269. package/esm/browser/cookie.mjs.map +1 -0
  270. package/esm/browser/cookieAccess.mjs +124 -0
  271. package/esm/browser/cookieAccess.mjs.map +1 -0
  272. package/esm/browser/fetch.mjs +18 -0
  273. package/esm/browser/fetch.mjs.map +1 -0
  274. package/esm/browser/fetchObservable.mjs +89 -0
  275. package/esm/browser/fetchObservable.mjs.map +1 -0
  276. package/esm/browser/pageMayExitObservable.mjs +56 -0
  277. package/esm/browser/pageMayExitObservable.mjs.map +1 -0
  278. package/esm/browser/runOnReadyState.mjs +19 -0
  279. package/esm/browser/runOnReadyState.mjs.map +1 -0
  280. package/esm/browser/webSocketObservable.mjs +92 -0
  281. package/esm/browser/webSocketObservable.mjs.map +1 -0
  282. package/esm/browser/xhrObservable.mjs +73 -0
  283. package/esm/browser/xhrObservable.mjs.map +1 -0
  284. package/esm/domain/allowedTrackingOrigins.mjs +27 -0
  285. package/esm/domain/allowedTrackingOrigins.mjs.map +1 -0
  286. package/esm/domain/bufferedData.mjs +43 -0
  287. package/esm/domain/bufferedData.mjs.map +1 -0
  288. package/esm/domain/configuration/configuration.mjs +163 -0
  289. package/esm/domain/configuration/configuration.mjs.map +1 -0
  290. package/esm/domain/configuration/remoteSdkConfig.mjs +163 -0
  291. package/esm/domain/configuration/remoteSdkConfig.mjs.map +1 -0
  292. package/esm/domain/connectivity/connectivity.mjs +16 -0
  293. package/esm/domain/connectivity/connectivity.mjs.map +1 -0
  294. package/esm/domain/console/consoleObservable.mjs +72 -0
  295. package/esm/domain/console/consoleObservable.mjs.map +1 -0
  296. package/esm/domain/context/contextConstants.mjs +25 -0
  297. package/esm/domain/context/contextConstants.mjs.map +1 -0
  298. package/esm/domain/context/contextManager.mjs +55 -0
  299. package/esm/domain/context/contextManager.mjs.map +1 -0
  300. package/esm/domain/context/contextUtils.mjs +15 -0
  301. package/esm/domain/context/contextUtils.mjs.map +1 -0
  302. package/esm/domain/context/defineContextMethod.mjs +19 -0
  303. package/esm/domain/context/defineContextMethod.mjs.map +1 -0
  304. package/esm/domain/context/storeContextManager.mjs +36 -0
  305. package/esm/domain/context/storeContextManager.mjs.map +1 -0
  306. package/esm/domain/contexts/accountContext.mjs +29 -0
  307. package/esm/domain/contexts/accountContext.mjs.map +1 -0
  308. package/esm/domain/contexts/globalContext.mjs +20 -0
  309. package/esm/domain/contexts/globalContext.mjs.map +1 -0
  310. package/esm/domain/contexts/tabContext.mjs +27 -0
  311. package/esm/domain/contexts/tabContext.mjs.map +1 -0
  312. package/esm/domain/contexts/telemetrySessionContext.mjs +17 -0
  313. package/esm/domain/contexts/telemetrySessionContext.mjs.map +1 -0
  314. package/esm/domain/contexts/userContext.mjs +88 -0
  315. package/esm/domain/contexts/userContext.mjs.map +1 -0
  316. package/esm/domain/deflate/deflate.types.mjs +12 -0
  317. package/esm/domain/deflate/deflate.types.mjs.map +1 -0
  318. package/esm/domain/error/error.mjs +104 -0
  319. package/esm/domain/error/error.mjs.map +1 -0
  320. package/esm/domain/error/error.types.mjs +24 -0
  321. package/esm/domain/error/error.types.mjs.map +1 -0
  322. package/esm/domain/error/isError.mjs +13 -0
  323. package/esm/domain/error/isError.mjs.map +1 -0
  324. package/esm/domain/error/trackRuntimeError.mjs +49 -0
  325. package/esm/domain/error/trackRuntimeError.mjs.map +1 -0
  326. package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs +31 -0
  327. package/esm/domain/eventRateLimiter/createEventRateLimiter.mjs.map +1 -0
  328. package/esm/domain/extension/extensionUtils.mjs +23 -0
  329. package/esm/domain/extension/extensionUtils.mjs.map +1 -0
  330. package/esm/domain/geo/geocoding.mjs +60 -0
  331. package/esm/domain/geo/geocoding.mjs.map +1 -0
  332. package/esm/domain/geo/geolocation.mjs +69 -0
  333. package/esm/domain/geo/geolocation.mjs.map +1 -0
  334. package/esm/domain/report/reportObservable.mjs +89 -0
  335. package/esm/domain/report/reportObservable.mjs.map +1 -0
  336. package/esm/domain/resourceUtils.mjs +22 -0
  337. package/esm/domain/resourceUtils.mjs.map +1 -0
  338. package/esm/domain/sampler.mjs +37 -0
  339. package/esm/domain/sampler.mjs.map +1 -0
  340. package/esm/domain/session/sessionConstants.mjs +18 -0
  341. package/esm/domain/session/sessionConstants.mjs.map +1 -0
  342. package/esm/domain/session/sessionManager.mjs +258 -0
  343. package/esm/domain/session/sessionManager.mjs.map +1 -0
  344. package/esm/domain/session/sessionState.mjs +76 -0
  345. package/esm/domain/session/sessionState.mjs.map +1 -0
  346. package/esm/domain/session/sessionStateValidation.mjs +9 -0
  347. package/esm/domain/session/sessionStateValidation.mjs.map +1 -0
  348. package/esm/domain/session/sessionStore.mjs +45 -0
  349. package/esm/domain/session/sessionStore.mjs.map +1 -0
  350. package/esm/domain/session/storeStrategies/sessionInCookie.mjs +96 -0
  351. package/esm/domain/session/storeStrategies/sessionInCookie.mjs.map +1 -0
  352. package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs +42 -0
  353. package/esm/domain/session/storeStrategies/sessionInLocalStorage.mjs.map +1 -0
  354. package/esm/domain/session/storeStrategies/sessionInMemory.mjs +34 -0
  355. package/esm/domain/session/storeStrategies/sessionInMemory.mjs.map +1 -0
  356. package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs +7 -0
  357. package/esm/domain/session/storeStrategies/sessionStoreStrategy.mjs.map +1 -0
  358. package/esm/domain/sourceCodeContext.mjs +55 -0
  359. package/esm/domain/sourceCodeContext.mjs.map +1 -0
  360. package/esm/domain/synthetics/syntheticsWorkerValues.mjs +37 -0
  361. package/esm/domain/synthetics/syntheticsWorkerValues.mjs.map +1 -0
  362. package/esm/domain/tags.mjs +29 -0
  363. package/esm/domain/tags.mjs.map +1 -0
  364. package/esm/domain/telemetry/rawTelemetryEvent.types.mjs +10 -0
  365. package/esm/domain/telemetry/rawTelemetryEvent.types.mjs.map +1 -0
  366. package/esm/domain/telemetry/telemetry.mjs +210 -0
  367. package/esm/domain/telemetry/telemetry.mjs.map +1 -0
  368. package/esm/domain/trackingConsent.mjs +38 -0
  369. package/esm/domain/trackingConsent.mjs.map +1 -0
  370. package/esm/domain/userAgentData/userAgentData.mjs +77 -0
  371. package/esm/domain/userAgentData/userAgentData.mjs.map +1 -0
  372. package/esm/index.mjs +85 -0
  373. package/esm/tools/abstractLifeCycle.mjs +21 -0
  374. package/esm/tools/abstractLifeCycle.mjs.map +1 -0
  375. package/esm/tools/catchUserErrors.mjs +15 -0
  376. package/esm/tools/catchUserErrors.mjs.map +1 -0
  377. package/esm/tools/display.mjs +8 -0
  378. package/esm/tools/display.mjs.map +1 -0
  379. package/esm/tools/encoder.mjs +39 -0
  380. package/esm/tools/encoder.mjs.map +1 -0
  381. package/esm/tools/experimentalFeatures.mjs +35 -0
  382. package/esm/tools/experimentalFeatures.mjs.map +1 -0
  383. package/esm/tools/getZoneJsOriginalValue.mjs +26 -0
  384. package/esm/tools/getZoneJsOriginalValue.mjs.map +1 -0
  385. package/esm/tools/instrumentMethod.mjs +183 -0
  386. package/esm/tools/instrumentMethod.mjs.map +1 -0
  387. package/esm/tools/matchOption.mjs +25 -0
  388. package/esm/tools/matchOption.mjs.map +1 -0
  389. package/esm/tools/mockable.mjs +28 -0
  390. package/esm/tools/mockable.mjs.map +1 -0
  391. package/esm/tools/observable.mjs +77 -0
  392. package/esm/tools/observable.mjs.map +1 -0
  393. package/esm/tools/queueMicrotask.mjs +12 -0
  394. package/esm/tools/queueMicrotask.mjs.map +1 -0
  395. package/esm/tools/readBytesFromStream.mjs +21 -0
  396. package/esm/tools/readBytesFromStream.mjs.map +1 -0
  397. package/esm/tools/requestIdleCallback.mjs +28 -0
  398. package/esm/tools/requestIdleCallback.mjs.map +1 -0
  399. package/esm/tools/sendToExtension.mjs +13 -0
  400. package/esm/tools/sendToExtension.mjs.map +1 -0
  401. package/esm/tools/serialisation/jsonStringify.mjs +42 -0
  402. package/esm/tools/serialisation/jsonStringify.mjs.map +1 -0
  403. package/esm/tools/serialisation/sanitize.mjs +132 -0
  404. package/esm/tools/serialisation/sanitize.mjs.map +1 -0
  405. package/esm/tools/serialisation/stringify.mjs +17 -0
  406. package/esm/tools/serialisation/stringify.mjs.map +1 -0
  407. package/esm/tools/stackTrace/computeStackTrace.mjs +148 -0
  408. package/esm/tools/stackTrace/computeStackTrace.mjs.map +1 -0
  409. package/esm/tools/stackTrace/handlingStack.mjs +45 -0
  410. package/esm/tools/stackTrace/handlingStack.mjs.map +1 -0
  411. package/esm/tools/taskQueue.mjs +45 -0
  412. package/esm/tools/taskQueue.mjs.map +1 -0
  413. package/esm/tools/thenable.mjs +24 -0
  414. package/esm/tools/thenable.mjs.map +1 -0
  415. package/esm/tools/timer.mjs +20 -0
  416. package/esm/tools/timer.mjs.map +1 -0
  417. package/esm/tools/utils/arrayUtils.mjs +21 -0
  418. package/esm/tools/utils/arrayUtils.mjs.map +1 -0
  419. package/esm/tools/utils/browserDetection.mjs +31 -0
  420. package/esm/tools/utils/browserDetection.mjs.map +1 -0
  421. package/esm/tools/utils/byteUtils.mjs +23 -0
  422. package/esm/tools/utils/byteUtils.mjs.map +1 -0
  423. package/esm/tools/utils/functionUtils.mjs +35 -0
  424. package/esm/tools/utils/functionUtils.mjs.map +1 -0
  425. package/esm/tools/utils/numberUtils.mjs +11 -0
  426. package/esm/tools/utils/numberUtils.mjs.map +1 -0
  427. package/esm/tools/utils/objectUtils.mjs +31 -0
  428. package/esm/tools/utils/objectUtils.mjs.map +1 -0
  429. package/esm/tools/utils/polyfills.mjs +17 -0
  430. package/esm/tools/utils/polyfills.mjs.map +1 -0
  431. package/esm/tools/utils/responseUtils.mjs +15 -0
  432. package/esm/tools/utils/responseUtils.mjs.map +1 -0
  433. package/esm/tools/utils/stringUtils.mjs +81 -0
  434. package/esm/tools/utils/stringUtils.mjs.map +1 -0
  435. package/esm/tools/utils/timezone.mjs +12 -0
  436. package/esm/tools/utils/timezone.mjs.map +1 -0
  437. package/esm/tools/valueHistory.mjs +117 -0
  438. package/esm/tools/valueHistory.mjs.map +1 -0
  439. package/esm/transport/batch.mjs +96 -0
  440. package/esm/transport/batch.mjs.map +1 -0
  441. package/esm/transport/eventBridge.mjs +58 -0
  442. package/esm/transport/eventBridge.mjs.map +1 -0
  443. package/esm/transport/flushController.mjs +103 -0
  444. package/esm/transport/flushController.mjs.map +1 -0
  445. package/esm/transport/httpRequest.mjs +69 -0
  446. package/esm/transport/httpRequest.mjs.map +1 -0
  447. package/esm/transport/sendWithRetryStrategy.mjs +154 -0
  448. package/esm/transport/sendWithRetryStrategy.mjs.map +1 -0
  449. package/package.json +20 -11
  450. package/src/boot/displayAlreadyInitializedError.ts +4 -1
  451. package/src/boot/init.ts +3 -2
  452. package/src/browser/addEventListener.ts +43 -8
  453. package/src/browser/browser.types.ts +0 -32
  454. package/src/browser/cookie.ts +45 -30
  455. package/src/browser/cookieAccess.ts +172 -0
  456. package/src/browser/fetch.ts +14 -0
  457. package/src/browser/fetchObservable.ts +25 -26
  458. package/src/browser/pageMayExitObservable.ts +9 -5
  459. package/src/browser/runOnReadyState.ts +3 -8
  460. package/src/browser/webSocketObservable.ts +181 -0
  461. package/src/browser/xhrObservable.ts +22 -13
  462. package/src/domain/allowedTrackingOrigins.ts +7 -6
  463. package/src/domain/bufferedData.ts +41 -14
  464. package/src/domain/configuration/configuration.ts +121 -171
  465. package/src/domain/configuration/index.ts +6 -7
  466. package/src/domain/configuration/remoteSdkConfig.ts +65 -16
  467. package/src/domain/connectivity/connectivity.ts +11 -23
  468. package/src/domain/console/consoleObservable.ts +9 -5
  469. package/src/domain/context/contextManager.ts +6 -2
  470. package/src/domain/context/contextUtils.ts +1 -1
  471. package/src/domain/context/defineContextMethod.ts +4 -4
  472. package/src/domain/context/storeContextManager.ts +9 -6
  473. package/src/domain/contexts/accountContext.ts +5 -5
  474. package/src/domain/contexts/globalContext.ts +4 -5
  475. package/src/domain/contexts/tabContext.ts +43 -0
  476. package/src/domain/contexts/telemetrySessionContext.ts +26 -0
  477. package/src/domain/contexts/userContext.ts +21 -16
  478. package/src/domain/error/error.ts +83 -35
  479. package/src/domain/error/error.types.ts +6 -4
  480. package/src/domain/error/isError.ts +13 -0
  481. package/src/domain/error/trackRuntimeError.ts +11 -4
  482. package/src/domain/eventRateLimiter/createEventRateLimiter.ts +3 -9
  483. package/src/{tools/utils → domain/geo}/geocoding.ts +7 -18
  484. package/src/{tools/utils → domain/geo}/geolocation.ts +1 -1
  485. package/src/domain/report/reportObservable.ts +15 -8
  486. package/src/domain/resourceUtils.ts +1 -0
  487. package/src/domain/sampler.ts +59 -0
  488. package/src/domain/session/sessionConstants.ts +2 -1
  489. package/src/domain/session/sessionManager.ts +347 -178
  490. package/src/domain/session/sessionState.ts +71 -10
  491. package/src/domain/session/sessionStore.ts +53 -226
  492. package/src/domain/session/storeStrategies/sessionInCookie.ts +122 -107
  493. package/src/domain/session/storeStrategies/sessionInLocalStorage.ts +33 -21
  494. package/src/domain/session/storeStrategies/sessionInMemory.ts +55 -0
  495. package/src/domain/session/storeStrategies/sessionStoreStrategy.ts +28 -6
  496. package/src/domain/sourceCodeContext.ts +100 -0
  497. package/src/domain/synthetics/syntheticsWorkerValues.ts +47 -15
  498. package/src/domain/tags.ts +5 -19
  499. package/src/domain/telemetry/rawTelemetryEvent.types.ts +1 -1
  500. package/src/domain/telemetry/telemetry.ts +44 -52
  501. package/src/domain/telemetry/telemetryEvent.types.ts +177 -19
  502. package/src/domain/trackingConsent.ts +18 -3
  503. package/src/domain/userAgentData/userAgentData.ts +1 -1
  504. package/src/index.ts +59 -43
  505. package/src/tools/display.ts +2 -52
  506. package/src/tools/experimentalFeatures.ts +3 -4
  507. package/src/tools/getZoneJsOriginalValue.ts +3 -3
  508. package/src/tools/instrumentMethod.ts +228 -18
  509. package/src/tools/matchOption.ts +2 -6
  510. package/src/tools/mockable.ts +32 -0
  511. package/src/tools/observable.ts +11 -2
  512. package/src/tools/queueMicrotask.ts +8 -3
  513. package/src/tools/readBytesFromStream.ts +3 -12
  514. package/src/tools/requestIdleCallback.ts +2 -2
  515. package/src/tools/sendToExtension.ts +1 -1
  516. package/src/tools/serialisation/sanitize.ts +71 -64
  517. package/src/tools/serialisation/stringify.ts +18 -0
  518. package/src/tools/stackTrace/computeStackTrace.ts +19 -19
  519. package/src/tools/stackTrace/handlingStack.ts +15 -2
  520. package/src/tools/taskQueue.ts +5 -3
  521. package/src/tools/thenable.ts +23 -0
  522. package/src/tools/timer.ts +8 -7
  523. package/src/tools/utils/arrayUtils.ts +8 -2
  524. package/src/tools/utils/browserDetection.ts +8 -0
  525. package/src/tools/utils/byteUtils.ts +2 -6
  526. package/src/tools/utils/functionUtils.ts +2 -2
  527. package/src/tools/utils/numberUtils.ts +0 -12
  528. package/src/tools/utils/objectUtils.ts +20 -0
  529. package/src/tools/utils/stringUtils.ts +23 -1
  530. package/src/tools/valueHistory.ts +59 -18
  531. package/src/transport/batch.ts +50 -31
  532. package/src/transport/eventBridge.ts +24 -10
  533. package/src/transport/flushController.ts +22 -30
  534. package/src/transport/httpRequest.ts +18 -47
  535. package/src/transport/index.ts +3 -2
  536. package/src/transport/sendWithRetryStrategy.ts +29 -17
  537. package/cjs/browser/browser.types.js +0 -6
  538. package/cjs/browser/browser.types.js.map +0 -1
  539. package/cjs/domain/configuration/endpointBuilder.d.ts +0 -12
  540. package/cjs/domain/configuration/endpointBuilder.js +0 -66
  541. package/cjs/domain/configuration/endpointBuilder.js.map +0 -1
  542. package/cjs/domain/configuration/index.js +0 -44
  543. package/cjs/domain/configuration/index.js.map +0 -1
  544. package/cjs/domain/configuration/transportConfiguration.d.ts +0 -21
  545. package/cjs/domain/configuration/transportConfiguration.js +0 -58
  546. package/cjs/domain/configuration/transportConfiguration.js.map +0 -1
  547. package/cjs/domain/connectivity/index.js +0 -18
  548. package/cjs/domain/connectivity/index.js.map +0 -1
  549. package/cjs/domain/contexts/rumInternalContext.type.js +0 -3
  550. package/cjs/domain/contexts/rumInternalContext.type.js.map +0 -1
  551. package/cjs/domain/deflate/index.js +0 -18
  552. package/cjs/domain/deflate/index.js.map +0 -1
  553. package/cjs/domain/intakeSites.d.ts +0 -4
  554. package/cjs/domain/intakeSites.js +0 -7
  555. package/cjs/domain/intakeSites.js.map +0 -1
  556. package/cjs/domain/report/browser.types.js +0 -3
  557. package/cjs/domain/report/browser.types.js.map +0 -1
  558. package/cjs/domain/session/oldCookiesMigration.d.ts +0 -11
  559. package/cjs/domain/session/oldCookiesMigration.js +0 -40
  560. package/cjs/domain/session/oldCookiesMigration.js.map +0 -1
  561. package/cjs/domain/session/sessionStoreOperations.d.ts +0 -12
  562. package/cjs/domain/session/sessionStoreOperations.js +0 -119
  563. package/cjs/domain/session/sessionStoreOperations.js.map +0 -1
  564. package/cjs/domain/telemetry/index.js +0 -28
  565. package/cjs/domain/telemetry/index.js.map +0 -1
  566. package/cjs/domain/telemetry/telemetryEvent.types.js +0 -7
  567. package/cjs/domain/telemetry/telemetryEvent.types.js.map +0 -1
  568. package/cjs/domain/userAgentData/index.js +0 -18
  569. package/cjs/domain/userAgentData/index.js.map +0 -1
  570. package/cjs/index.js.map +0 -1
  571. package/cjs/tools/abstractHooks.d.ts +0 -24
  572. package/cjs/tools/abstractHooks.js +0 -41
  573. package/cjs/tools/abstractHooks.js.map +0 -1
  574. package/cjs/tools/boundedBuffer.d.ts +0 -16
  575. package/cjs/tools/boundedBuffer.js +0 -32
  576. package/cjs/tools/boundedBuffer.js.map +0 -1
  577. package/cjs/tools/globalObject.d.ts +0 -19
  578. package/cjs/tools/globalObject.js +0 -44
  579. package/cjs/tools/globalObject.js.map +0 -1
  580. package/cjs/tools/mergeInto.d.ts +0 -25
  581. package/cjs/tools/mergeInto.js +0 -98
  582. package/cjs/tools/mergeInto.js.map +0 -1
  583. package/cjs/tools/monitor.d.ts +0 -9
  584. package/cjs/tools/monitor.js +0 -61
  585. package/cjs/tools/monitor.js.map +0 -1
  586. package/cjs/tools/serialisation/context.js +0 -3
  587. package/cjs/tools/serialisation/context.js.map +0 -1
  588. package/cjs/tools/utils/geocoding.js +0 -80
  589. package/cjs/tools/utils/geocoding.js.map +0 -1
  590. package/cjs/tools/utils/geolocation.js +0 -77
  591. package/cjs/tools/utils/geolocation.js.map +0 -1
  592. package/cjs/tools/utils/timeUtils.d.ts +0 -53
  593. package/cjs/tools/utils/timeUtils.js +0 -101
  594. package/cjs/tools/utils/timeUtils.js.map +0 -1
  595. package/cjs/tools/utils/typeUtils.d.ts +0 -4
  596. package/cjs/tools/utils/typeUtils.js +0 -16
  597. package/cjs/tools/utils/typeUtils.js.map +0 -1
  598. package/cjs/tools/utils/urlPolyfill.d.ts +0 -5
  599. package/cjs/tools/utils/urlPolyfill.js +0 -59
  600. package/cjs/tools/utils/urlPolyfill.js.map +0 -1
  601. package/cjs/transport/index.js +0 -15
  602. package/cjs/transport/index.js.map +0 -1
  603. package/esm/boot/displayAlreadyInitializedError.d.ts +0 -2
  604. package/esm/boot/displayAlreadyInitializedError.js +0 -7
  605. package/esm/boot/displayAlreadyInitializedError.js.map +0 -1
  606. package/esm/boot/init.d.ts +0 -13
  607. package/esm/boot/init.js +0 -35
  608. package/esm/boot/init.js.map +0 -1
  609. package/esm/browser/addEventListener.d.ts +0 -87
  610. package/esm/browser/addEventListener.js +0 -51
  611. package/esm/browser/addEventListener.js.map +0 -1
  612. package/esm/browser/browser.types.d.ts +0 -51
  613. package/esm/browser/browser.types.js +0 -5
  614. package/esm/browser/browser.types.js.map +0 -1
  615. package/esm/browser/cookie.d.ts +0 -26
  616. package/esm/browser/cookie.js +0 -101
  617. package/esm/browser/cookie.js.map +0 -1
  618. package/esm/browser/fetchObservable.d.ts +0 -38
  619. package/esm/browser/fetchObservable.js +0 -99
  620. package/esm/browser/fetchObservable.js.map +0 -1
  621. package/esm/browser/pageMayExitObservable.d.ts +0 -14
  622. package/esm/browser/pageMayExitObservable.js +0 -51
  623. package/esm/browser/pageMayExitObservable.js.map +0 -1
  624. package/esm/browser/runOnReadyState.d.ts +0 -5
  625. package/esm/browser/runOnReadyState.js +0 -16
  626. package/esm/browser/runOnReadyState.js.map +0 -1
  627. package/esm/browser/xhrObservable.d.ts +0 -24
  628. package/esm/browser/xhrObservable.js +0 -83
  629. package/esm/browser/xhrObservable.js.map +0 -1
  630. package/esm/domain/allowedTrackingOrigins.d.ts +0 -4
  631. package/esm/domain/allowedTrackingOrigins.js +0 -21
  632. package/esm/domain/allowedTrackingOrigins.js.map +0 -1
  633. package/esm/domain/bufferedData.d.ts +0 -14
  634. package/esm/domain/bufferedData.js +0 -19
  635. package/esm/domain/bufferedData.js.map +0 -1
  636. package/esm/domain/configuration/configuration.d.ts +0 -284
  637. package/esm/domain/configuration/configuration.js +0 -129
  638. package/esm/domain/configuration/configuration.js.map +0 -1
  639. package/esm/domain/configuration/endpointBuilder.d.ts +0 -12
  640. package/esm/domain/configuration/endpointBuilder.js +0 -62
  641. package/esm/domain/configuration/endpointBuilder.js.map +0 -1
  642. package/esm/domain/configuration/index.d.ts +0 -8
  643. package/esm/domain/configuration/index.js +0 -6
  644. package/esm/domain/configuration/index.js.map +0 -1
  645. package/esm/domain/configuration/remoteSdkConfig.d.ts +0 -81
  646. package/esm/domain/configuration/remoteSdkConfig.js +0 -172
  647. package/esm/domain/configuration/remoteSdkConfig.js.map +0 -1
  648. package/esm/domain/configuration/transportConfiguration.d.ts +0 -21
  649. package/esm/domain/configuration/transportConfiguration.js +0 -54
  650. package/esm/domain/configuration/transportConfiguration.js.map +0 -1
  651. package/esm/domain/connectivity/connectivity.d.ts +0 -18
  652. package/esm/domain/connectivity/connectivity.js +0 -13
  653. package/esm/domain/connectivity/connectivity.js.map +0 -1
  654. package/esm/domain/connectivity/index.d.ts +0 -1
  655. package/esm/domain/connectivity/index.js +0 -2
  656. package/esm/domain/connectivity/index.js.map +0 -1
  657. package/esm/domain/console/consoleObservable.d.ts +0 -21
  658. package/esm/domain/console/consoleObservable.js +0 -80
  659. package/esm/domain/console/consoleObservable.js.map +0 -1
  660. package/esm/domain/context/contextConstants.d.ts +0 -21
  661. package/esm/domain/context/contextConstants.js +0 -15
  662. package/esm/domain/context/contextConstants.js.map +0 -1
  663. package/esm/domain/context/contextManager.d.ts +0 -19
  664. package/esm/domain/context/contextManager.js +0 -56
  665. package/esm/domain/context/contextManager.js.map +0 -1
  666. package/esm/domain/context/contextUtils.d.ts +0 -5
  667. package/esm/domain/context/contextUtils.js +0 -13
  668. package/esm/domain/context/contextUtils.js.map +0 -1
  669. package/esm/domain/context/defineContextMethod.d.ts +0 -6
  670. package/esm/domain/context/defineContextMethod.js +0 -17
  671. package/esm/domain/context/defineContextMethod.js.map +0 -1
  672. package/esm/domain/context/storeContextManager.d.ts +0 -6
  673. package/esm/domain/context/storeContextManager.js +0 -35
  674. package/esm/domain/context/storeContextManager.js.map +0 -1
  675. package/esm/domain/contexts/accountContext.d.ts +0 -26
  676. package/esm/domain/contexts/accountContext.js +0 -29
  677. package/esm/domain/contexts/accountContext.js.map +0 -1
  678. package/esm/domain/contexts/globalContext.d.ts +0 -18
  679. package/esm/domain/contexts/globalContext.js +0 -17
  680. package/esm/domain/contexts/globalContext.js.map +0 -1
  681. package/esm/domain/contexts/rumInternalContext.type.d.ts +0 -14
  682. package/esm/domain/contexts/rumInternalContext.type.js +0 -2
  683. package/esm/domain/contexts/rumInternalContext.type.js.map +0 -1
  684. package/esm/domain/contexts/userContext.d.ts +0 -32
  685. package/esm/domain/contexts/userContext.js +0 -120
  686. package/esm/domain/contexts/userContext.js.map +0 -1
  687. package/esm/domain/deflate/deflate.types.d.ts +0 -40
  688. package/esm/domain/deflate/deflate.types.js +0 -2
  689. package/esm/domain/deflate/deflate.types.js.map +0 -1
  690. package/esm/domain/deflate/index.d.ts +0 -1
  691. package/esm/domain/deflate/index.js +0 -2
  692. package/esm/domain/deflate/index.js.map +0 -1
  693. package/esm/domain/error/error.d.ts +0 -23
  694. package/esm/domain/error/error.js +0 -72
  695. package/esm/domain/error/error.js.map +0 -1
  696. package/esm/domain/error/error.types.d.ts +0 -47
  697. package/esm/domain/error/error.types.js +0 -10
  698. package/esm/domain/error/error.types.js.map +0 -1
  699. package/esm/domain/error/trackRuntimeError.d.ts +0 -11
  700. package/esm/domain/error/trackRuntimeError.js +0 -43
  701. package/esm/domain/error/trackRuntimeError.js.map +0 -1
  702. package/esm/domain/eventRateLimiter/createEventRateLimiter.d.ts +0 -5
  703. package/esm/domain/eventRateLimiter/createEventRateLimiter.js +0 -38
  704. package/esm/domain/eventRateLimiter/createEventRateLimiter.js.map +0 -1
  705. package/esm/domain/extension/extensionUtils.d.ts +0 -10
  706. package/esm/domain/extension/extensionUtils.js +0 -25
  707. package/esm/domain/extension/extensionUtils.js.map +0 -1
  708. package/esm/domain/intakeSites.d.ts +0 -4
  709. package/esm/domain/intakeSites.js +0 -4
  710. package/esm/domain/intakeSites.js.map +0 -1
  711. package/esm/domain/report/browser.types.d.ts +0 -34
  712. package/esm/domain/report/browser.types.js +0 -2
  713. package/esm/domain/report/browser.types.js.map +0 -1
  714. package/esm/domain/report/reportObservable.d.ts +0 -14
  715. package/esm/domain/report/reportObservable.js +0 -95
  716. package/esm/domain/report/reportObservable.js.map +0 -1
  717. package/esm/domain/resourceUtils.d.ts +0 -18
  718. package/esm/domain/resourceUtils.js +0 -17
  719. package/esm/domain/resourceUtils.js.map +0 -1
  720. package/esm/domain/session/oldCookiesMigration.d.ts +0 -11
  721. package/esm/domain/session/oldCookiesMigration.js +0 -36
  722. package/esm/domain/session/oldCookiesMigration.js.map +0 -1
  723. package/esm/domain/session/sessionConstants.d.ts +0 -15
  724. package/esm/domain/session/sessionConstants.js +0 -13
  725. package/esm/domain/session/sessionConstants.js.map +0 -1
  726. package/esm/domain/session/sessionManager.d.ts +0 -28
  727. package/esm/domain/session/sessionManager.js +0 -196
  728. package/esm/domain/session/sessionManager.js.map +0 -1
  729. package/esm/domain/session/sessionState.d.ts +0 -16
  730. package/esm/domain/session/sessionState.js +0 -60
  731. package/esm/domain/session/sessionState.js.map +0 -1
  732. package/esm/domain/session/sessionStateValidation.d.ts +0 -3
  733. package/esm/domain/session/sessionStateValidation.js +0 -7
  734. package/esm/domain/session/sessionStateValidation.js.map +0 -1
  735. package/esm/domain/session/sessionStore.d.ts +0 -38
  736. package/esm/domain/session/sessionStore.js +0 -180
  737. package/esm/domain/session/sessionStore.js.map +0 -1
  738. package/esm/domain/session/sessionStoreOperations.d.ts +0 -12
  739. package/esm/domain/session/sessionStoreOperations.js +0 -114
  740. package/esm/domain/session/sessionStoreOperations.js.map +0 -1
  741. package/esm/domain/session/storeStrategies/sessionInCookie.d.ts +0 -12
  742. package/esm/domain/session/storeStrategies/sessionInCookie.js +0 -98
  743. package/esm/domain/session/storeStrategies/sessionInCookie.js.map +0 -1
  744. package/esm/domain/session/storeStrategies/sessionInLocalStorage.d.ts +0 -6
  745. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js +0 -37
  746. package/esm/domain/session/storeStrategies/sessionInLocalStorage.js.map +0 -1
  747. package/esm/domain/session/storeStrategies/sessionStoreStrategy.d.ts +0 -16
  748. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js +0 -2
  749. package/esm/domain/session/storeStrategies/sessionStoreStrategy.js.map +0 -1
  750. package/esm/domain/synthetics/syntheticsWorkerValues.d.ts +0 -12
  751. package/esm/domain/synthetics/syntheticsWorkerValues.js +0 -24
  752. package/esm/domain/synthetics/syntheticsWorkerValues.js.map +0 -1
  753. package/esm/domain/tags.d.ts +0 -6
  754. package/esm/domain/tags.js +0 -59
  755. package/esm/domain/tags.js.map +0 -1
  756. package/esm/domain/telemetry/index.d.ts +0 -4
  757. package/esm/domain/telemetry/index.js +0 -3
  758. package/esm/domain/telemetry/index.js.map +0 -1
  759. package/esm/domain/telemetry/rawTelemetryEvent.types.d.ts +0 -18
  760. package/esm/domain/telemetry/rawTelemetryEvent.types.js +0 -6
  761. package/esm/domain/telemetry/rawTelemetryEvent.types.js.map +0 -1
  762. package/esm/domain/telemetry/telemetry.d.ts +0 -56
  763. package/esm/domain/telemetry/telemetry.js +0 -232
  764. package/esm/domain/telemetry/telemetry.js.map +0 -1
  765. package/esm/domain/telemetry/telemetryEvent.types.d.ts +0 -866
  766. package/esm/domain/telemetry/telemetryEvent.types.js +0 -6
  767. package/esm/domain/telemetry/telemetryEvent.types.js.map +0 -1
  768. package/esm/domain/trackingConsent.d.ts +0 -13
  769. package/esm/domain/trackingConsent.js +0 -24
  770. package/esm/domain/trackingConsent.js.map +0 -1
  771. package/esm/domain/userAgentData/index.d.ts +0 -1
  772. package/esm/domain/userAgentData/index.js +0 -2
  773. package/esm/domain/userAgentData/index.js.map +0 -1
  774. package/esm/domain/userAgentData/userAgentData.d.ts +0 -22
  775. package/esm/domain/userAgentData/userAgentData.js +0 -105
  776. package/esm/domain/userAgentData/userAgentData.js.map +0 -1
  777. package/esm/index.d.ts +0 -104
  778. package/esm/index.js +0 -79
  779. package/esm/index.js.map +0 -1
  780. package/esm/tools/abstractHooks.d.ts +0 -24
  781. package/esm/tools/abstractHooks.js +0 -37
  782. package/esm/tools/abstractHooks.js.map +0 -1
  783. package/esm/tools/abstractLifeCycle.d.ts +0 -23
  784. package/esm/tools/abstractLifeCycle.js +0 -24
  785. package/esm/tools/abstractLifeCycle.js.map +0 -1
  786. package/esm/tools/boundedBuffer.d.ts +0 -16
  787. package/esm/tools/boundedBuffer.js +0 -29
  788. package/esm/tools/boundedBuffer.js.map +0 -1
  789. package/esm/tools/catchUserErrors.d.ts +0 -1
  790. package/esm/tools/catchUserErrors.js +0 -12
  791. package/esm/tools/catchUserErrors.js.map +0 -1
  792. package/esm/tools/display.d.ts +0 -38
  793. package/esm/tools/display.js +0 -41
  794. package/esm/tools/display.js.map +0 -1
  795. package/esm/tools/encoder.d.ts +0 -54
  796. package/esm/tools/encoder.js +0 -37
  797. package/esm/tools/encoder.js.map +0 -1
  798. package/esm/tools/experimentalFeatures.d.ts +0 -21
  799. package/esm/tools/experimentalFeatures.js +0 -42
  800. package/esm/tools/experimentalFeatures.js.map +0 -1
  801. package/esm/tools/getZoneJsOriginalValue.d.ts +0 -19
  802. package/esm/tools/getZoneJsOriginalValue.js +0 -26
  803. package/esm/tools/getZoneJsOriginalValue.js.map +0 -1
  804. package/esm/tools/globalObject.d.ts +0 -19
  805. package/esm/tools/globalObject.js +0 -40
  806. package/esm/tools/globalObject.js.map +0 -1
  807. package/esm/tools/instrumentMethod.d.ts +0 -75
  808. package/esm/tools/instrumentMethod.js +0 -114
  809. package/esm/tools/instrumentMethod.js.map +0 -1
  810. package/esm/tools/matchOption.d.ts +0 -8
  811. package/esm/tools/matchOption.js +0 -31
  812. package/esm/tools/matchOption.js.map +0 -1
  813. package/esm/tools/mergeInto.d.ts +0 -25
  814. package/esm/tools/mergeInto.js +0 -93
  815. package/esm/tools/mergeInto.js.map +0 -1
  816. package/esm/tools/monitor.d.ts +0 -9
  817. package/esm/tools/monitor.js +0 -51
  818. package/esm/tools/monitor.js.map +0 -1
  819. package/esm/tools/observable.d.ts +0 -30
  820. package/esm/tools/observable.js +0 -83
  821. package/esm/tools/observable.js.map +0 -1
  822. package/esm/tools/queueMicrotask.d.ts +0 -1
  823. package/esm/tools/queueMicrotask.js +0 -14
  824. package/esm/tools/queueMicrotask.js.map +0 -1
  825. package/esm/tools/readBytesFromStream.d.ts +0 -10
  826. package/esm/tools/readBytesFromStream.js +0 -25
  827. package/esm/tools/readBytesFromStream.js.map +0 -1
  828. package/esm/tools/requestIdleCallback.d.ts +0 -12
  829. package/esm/tools/requestIdleCallback.js +0 -30
  830. package/esm/tools/requestIdleCallback.js.map +0 -1
  831. package/esm/tools/sendToExtension.d.ts +0 -3
  832. package/esm/tools/sendToExtension.js +0 -8
  833. package/esm/tools/sendToExtension.js.map +0 -1
  834. package/esm/tools/serialisation/context.d.ts +0 -9
  835. package/esm/tools/serialisation/context.js +0 -2
  836. package/esm/tools/serialisation/context.js.map +0 -1
  837. package/esm/tools/serialisation/jsonStringify.d.ts +0 -13
  838. package/esm/tools/serialisation/jsonStringify.js +0 -44
  839. package/esm/tools/serialisation/jsonStringify.js.map +0 -1
  840. package/esm/tools/serialisation/sanitize.d.ts +0 -18
  841. package/esm/tools/serialisation/sanitize.js +0 -185
  842. package/esm/tools/serialisation/sanitize.js.map +0 -1
  843. package/esm/tools/stackTrace/computeStackTrace.d.ts +0 -25
  844. package/esm/tools/stackTrace/computeStackTrace.js +0 -183
  845. package/esm/tools/stackTrace/computeStackTrace.js.map +0 -1
  846. package/esm/tools/stackTrace/handlingStack.d.ts +0 -10
  847. package/esm/tools/stackTrace/handlingStack.js +0 -41
  848. package/esm/tools/stackTrace/handlingStack.js.map +0 -1
  849. package/esm/tools/taskQueue.d.ts +0 -15
  850. package/esm/tools/taskQueue.js +0 -50
  851. package/esm/tools/taskQueue.js.map +0 -1
  852. package/esm/tools/timer.d.ts +0 -5
  853. package/esm/tools/timer.js +0 -16
  854. package/esm/tools/timer.js.map +0 -1
  855. package/esm/tools/utils/arrayUtils.d.ts +0 -3
  856. package/esm/tools/utils/arrayUtils.js +0 -15
  857. package/esm/tools/utils/arrayUtils.js.map +0 -1
  858. package/esm/tools/utils/browserDetection.d.ts +0 -8
  859. package/esm/tools/utils/browserDetection.js +0 -28
  860. package/esm/tools/utils/browserDetection.js.map +0 -1
  861. package/esm/tools/utils/byteUtils.d.ts +0 -8
  862. package/esm/tools/utils/byteUtils.js +0 -29
  863. package/esm/tools/utils/byteUtils.js.map +0 -1
  864. package/esm/tools/utils/functionUtils.d.ts +0 -8
  865. package/esm/tools/utils/functionUtils.js +0 -39
  866. package/esm/tools/utils/functionUtils.js.map +0 -1
  867. package/esm/tools/utils/geocoding.d.ts +0 -60
  868. package/esm/tools/utils/geocoding.js +0 -73
  869. package/esm/tools/utils/geocoding.js.map +0 -1
  870. package/esm/tools/utils/geolocation.d.ts +0 -24
  871. package/esm/tools/utils/geolocation.js +0 -71
  872. package/esm/tools/utils/geolocation.js.map +0 -1
  873. package/esm/tools/utils/numberUtils.d.ts +0 -8
  874. package/esm/tools/utils/numberUtils.js +0 -17
  875. package/esm/tools/utils/numberUtils.js.map +0 -1
  876. package/esm/tools/utils/objectUtils.d.ts +0 -10
  877. package/esm/tools/utils/objectUtils.js +0 -17
  878. package/esm/tools/utils/objectUtils.js.map +0 -1
  879. package/esm/tools/utils/polyfills.d.ts +0 -7
  880. package/esm/tools/utils/polyfills.js +0 -18
  881. package/esm/tools/utils/polyfills.js.map +0 -1
  882. package/esm/tools/utils/responseUtils.d.ts +0 -2
  883. package/esm/tools/utils/responseUtils.js +0 -13
  884. package/esm/tools/utils/responseUtils.js.map +0 -1
  885. package/esm/tools/utils/stringUtils.d.ts +0 -23
  886. package/esm/tools/utils/stringUtils.js +0 -84
  887. package/esm/tools/utils/stringUtils.js.map +0 -1
  888. package/esm/tools/utils/timeUtils.d.ts +0 -53
  889. package/esm/tools/utils/timeUtils.js +0 -84
  890. package/esm/tools/utils/timeUtils.js.map +0 -1
  891. package/esm/tools/utils/timezone.d.ts +0 -1
  892. package/esm/tools/utils/timezone.js +0 -10
  893. package/esm/tools/utils/timezone.js.map +0 -1
  894. package/esm/tools/utils/typeUtils.d.ts +0 -4
  895. package/esm/tools/utils/typeUtils.js +0 -13
  896. package/esm/tools/utils/typeUtils.js.map +0 -1
  897. package/esm/tools/utils/urlPolyfill.d.ts +0 -5
  898. package/esm/tools/utils/urlPolyfill.js +0 -52
  899. package/esm/tools/utils/urlPolyfill.js.map +0 -1
  900. package/esm/tools/valueHistory.d.ts +0 -27
  901. package/esm/tools/valueHistory.js +0 -100
  902. package/esm/tools/valueHistory.js.map +0 -1
  903. package/esm/transport/batch.d.ts +0 -16
  904. package/esm/transport/batch.js +0 -106
  905. package/esm/transport/batch.js.map +0 -1
  906. package/esm/transport/eventBridge.d.ts +0 -21
  907. package/esm/transport/eventBridge.js +0 -41
  908. package/esm/transport/eventBridge.js.map +0 -1
  909. package/esm/transport/flushController.d.ts +0 -65
  910. package/esm/transport/flushController.js +0 -119
  911. package/esm/transport/flushController.js.map +0 -1
  912. package/esm/transport/httpRequest.d.ts +0 -57
  913. package/esm/transport/httpRequest.js +0 -101
  914. package/esm/transport/httpRequest.js.map +0 -1
  915. package/esm/transport/index.d.ts +0 -7
  916. package/esm/transport/index.js +0 -5
  917. package/esm/transport/index.js.map +0 -1
  918. package/esm/transport/sendWithRetryStrategy.d.ts +0 -41
  919. package/esm/transport/sendWithRetryStrategy.js +0 -158
  920. package/esm/transport/sendWithRetryStrategy.js.map +0 -1
  921. package/src/domain/configuration/endpointBuilder.ts +0 -105
  922. package/src/domain/configuration/transportConfiguration.ts +0 -86
  923. package/src/domain/intakeSites.ts +0 -6
  924. package/src/domain/session/oldCookiesMigration.ts +0 -42
  925. package/src/domain/session/sessionStoreOperations.ts +0 -131
  926. package/src/tools/abstractHooks.ts +0 -72
  927. package/src/tools/boundedBuffer.ts +0 -44
  928. package/src/tools/globalObject.ts +0 -51
  929. package/src/tools/mergeInto.ts +0 -177
  930. package/src/tools/monitor.ts +0 -71
  931. package/src/tools/utils/timeUtils.ts +0 -117
  932. package/src/tools/utils/typeUtils.ts +0 -12
  933. package/src/tools/utils/urlPolyfill.ts +0 -55
  934. /package/cjs/{tools/utils → domain/geo}/geocoding.d.ts +0 -0
  935. /package/cjs/{tools/utils → domain/geo}/geolocation.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experimentalFeatures.mjs","names":[],"sources":["../../src/tools/experimentalFeatures.ts"],"sourcesContent":["/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\n\nimport { objectHasValue } from './utils/objectUtils'\n\n// eslint-disable-next-line no-restricted-syntax\nexport enum ExperimentalFeature {\n // `session_replay_record_canvas` gated `sessionReplayCanvasRecording` until canvas recording became a\n // regular option in 2.0.0. An application still passing it is unaffected: unknown flags are ignored.\n TRACK_INTAKE_REQUESTS = 'track_intake_requests',\n TRACK_WEBSOCKETS = 'track_websockets',\n}\n\nconst enabledExperimentalFeatures: Set<ExperimentalFeature> = new Set()\n\nexport function initFeatureFlags(enableExperimentalFeatures: string[] | undefined) {\n if (Array.isArray(enableExperimentalFeatures)) {\n addExperimentalFeatures(\n enableExperimentalFeatures.filter((flag): flag is ExperimentalFeature =>\n objectHasValue(ExperimentalFeature, flag)\n )\n )\n }\n}\n\nexport function addExperimentalFeatures(enabledFeatures: ExperimentalFeature[]): void {\n enabledFeatures.forEach((flag) => {\n enabledExperimentalFeatures.add(flag)\n })\n}\n\nexport function isExperimentalFeatureEnabled(featureName: ExperimentalFeature): boolean {\n return enabledExperimentalFeatures.has(featureName)\n}\n\nexport function resetExperimentalFeatures(): void {\n enabledExperimentalFeatures.clear()\n}\n\nexport function getExperimentalFeatures(): Set<ExperimentalFeature> {\n return enabledExperimentalFeatures\n}\n"],"mappings":";;;;;;;;;;;AAeA,IAAY,sBAAL,yBAAA,qBAAA;CAGL,oBAAA,2BAAA;CACA,oBAAA,sBAAA;;AACF,EAAA,CAAA,CAAA;AAEA,MAAM,8CAAwD,IAAI,IAAI;AAEtE,SAAgB,iBAAiB,4BAAkD;CACjF,IAAI,MAAM,QAAQ,0BAA0B,GAC1C,wBACE,2BAA2B,QAAQ,SACjC,eAAe,qBAAqB,IAAI,CAC1C,CACF;AAEJ;AAEA,SAAgB,wBAAwB,iBAA8C;CACpF,gBAAgB,SAAS,SAAS;EAChC,4BAA4B,IAAI,IAAI;CACtC,CAAC;AACH;AAEA,SAAgB,6BAA6B,aAA2C;CACtF,OAAO,4BAA4B,IAAI,WAAW;AACpD;AAMA,SAAgB,0BAAoD;CAClE,OAAO;AACT"}
@@ -0,0 +1,26 @@
1
+ import { globalObject } from "@kubesense/kubesense-js-core/util";
2
+ //#region src/tools/getZoneJsOriginalValue.ts
3
+ /**
4
+ * Gets the original value for a DOM API that was potentially patched by Zone.js.
5
+ *
6
+ * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original
7
+ * value of the patched functions/constructors/methods in a hidden property prefixed by
8
+ * __zone_symbol__.
9
+ *
10
+ * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to
11
+ * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to
12
+ * use the original DOM API instead of the one patched by Zone.js.
13
+ *
14
+ * [1]: https://github.com/angular/angular/tree/main/packages/zone.js
15
+ */
16
+ function getZoneJsOriginalValue(target, name) {
17
+ const browserWindow = globalObject;
18
+ let original;
19
+ if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === "function") original = target[browserWindow.Zone.__symbol__(name)];
20
+ if (!original) original = target[name];
21
+ return original;
22
+ }
23
+ //#endregion
24
+ export { getZoneJsOriginalValue };
25
+
26
+ //# sourceMappingURL=getZoneJsOriginalValue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getZoneJsOriginalValue.mjs","names":[],"sources":["../../src/tools/getZoneJsOriginalValue.ts"],"sourcesContent":["import { globalObject } from '@kubesense/kubesense-js-core/util'\n\nexport interface BrowserWindowWithZoneJs {\n Zone?: {\n // All Zone.js versions expose the __symbol__ method, but we observed that some website have a\n // 'Zone' global variable unrelated to Zone.js, so let's consider this method optional\n // nonetheless.\n __symbol__?: (name: string) => string\n }\n}\n\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue<Target, Name extends keyof Target & string>(\n target: Target,\n name: Name\n): Target[Name] {\n const browserWindow = globalObject as BrowserWindowWithZoneJs\n let original: Target[Name] | undefined\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = (target as any)[browserWindow.Zone.__symbol__(name)]\n }\n if (!original) {\n original = target[name]\n }\n return original\n}\n"],"mappings":";;;;;;;;;;;;;;;AAwBA,SAAgB,uBACd,QACA,MACc;CACd,MAAM,gBAAgB;CACtB,IAAI;CACJ,IAAI,cAAc,QAAQ,OAAO,cAAc,KAAK,eAAe,YACjE,WAAY,OAAe,cAAc,KAAK,WAAW,IAAI;CAE/D,IAAI,CAAC,UACH,WAAW,OAAO;CAEpB,OAAO;AACT"}
@@ -0,0 +1,183 @@
1
+ import { setTimeout } from "./timer.mjs";
2
+ import { noop } from "./utils/functionUtils.mjs";
3
+ import { createHandlingStack } from "./stackTrace/handlingStack.mjs";
4
+ import { callMonitored } from "@kubesense/kubesense-js-core/monitor";
5
+ //#region src/tools/instrumentMethod.ts
6
+ /**
7
+ * Instruments a method on a object, calling the given callback before the original method is
8
+ * invoked. The callback receives an object with information about the method call.
9
+ *
10
+ * This function makes sure that we are "good citizens" regarding third party instrumentations: when
11
+ * removing the instrumentation, the original method is usually restored, but if a third party
12
+ * instrumentation was set after ours, we keep it in place and just replace our instrumentation with
13
+ * a noop.
14
+ *
15
+ * Note: it is generally better to instrument methods that are "owned" by the object instead of ones
16
+ * that are inherited from the prototype chain. Example:
17
+ * * do: `instrumentMethod(Array.prototype, 'push', ...)`
18
+ * * don't: `instrumentMethod([], 'push', ...)`
19
+ *
20
+ * This method is also used to set event handler properties (ex: window.onerror = ...), as it has
21
+ * the same requirements as instrumenting a method:
22
+ * * if the event handler is already set by a third party, we need to call it and not just blindly
23
+ * override it.
24
+ * * if the event handler is set by a third party after us, we need to keep it in place when
25
+ * removing ours.
26
+ *
27
+ * To instrument a constructor @see {@link instrumentConstructor}.
28
+ *
29
+ * @example
30
+ *
31
+ * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {
32
+ * console.log('Before calling fetch on', target, 'with parameters', parameters)
33
+ *
34
+ * onPostCall((result) => {
35
+ * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)
36
+ * })
37
+ * })
38
+ */
39
+ function instrumentMethod(targetPrototype, method, onPreCall, { computeHandlingStack } = {}) {
40
+ let original = targetPrototype[method];
41
+ if (typeof original !== "function") {
42
+ if (method in targetPrototype && typeof method === "string" && method.startsWith("on")) original = noop;
43
+ else return { stop: noop };
44
+ }
45
+ let stopped = false;
46
+ const instrumentation = function() {
47
+ if (stopped) return original.apply(this, arguments);
48
+ const parameters = Array.from(arguments);
49
+ return notifyInstrumentation(onPreCall, {
50
+ target: this,
51
+ parameters,
52
+ handlingStack: computeHandlingStack ? createHandlingStack("instrumented method") : void 0
53
+ }, () => original.apply(this, parameters));
54
+ };
55
+ const { stop: restoreOriginal } = replaceWithInstrumentation(targetPrototype, method, original, instrumentation);
56
+ return { stop: () => {
57
+ stopped = true;
58
+ restoreOriginal();
59
+ } };
60
+ }
61
+ /**
62
+ * Instruments a constructor on an object (typically a global, e.g. `window.WebSocket`), calling the
63
+ * given callback before the original constructor is invoked. The callback receives an object with
64
+ * information about the constructor call, and can register an `onPostCall` callback to be notified
65
+ * with the constructed instance.
66
+ *
67
+ * Like `instrumentMethod`, this is a "good citizen" regarding third party instrumentations: stopping
68
+ * restores the original constructor unless a third party replaced it afterwards.
69
+ *
70
+ * The wrapper preserves the original prototype (so `instanceof` keeps working), the original
71
+ * `new.target` (so constructors that inspect it behave as if not instrumented), the original
72
+ * static members (e.g. `WebSocket.OPEN`), and `instance.constructor ===` so checks like
73
+ * `new WebSocket(url).constructor === WebSocket` stay true.
74
+ *
75
+ * @see {@link preserveConstructorShape} for limitations on static members preservation.
76
+ * @example
77
+ *
78
+ * instrumentConstructor(window, 'WebSocket', ({ parameters, onPostCall }) => {
79
+ * console.log('Before constructing WebSocket with parameters', parameters)
80
+ *
81
+ * onPostCall((instance) => {
82
+ * console.log('Constructed WebSocket instance', instance)
83
+ * })
84
+ * })
85
+ */
86
+ function instrumentConstructor(container, constructor, onPreCall, { computeHandlingStack } = {}) {
87
+ const original = container[constructor];
88
+ if (typeof original !== "function") return { stop: noop };
89
+ let stopped = false;
90
+ const instrumentation = function() {
91
+ if (!new.target) return Reflect.apply(original, this, Array.from(arguments));
92
+ const newTarget = new.target === instrumentation ? original : new.target;
93
+ if (stopped) return Reflect.construct(original, arguments, newTarget);
94
+ const parameters = Array.from(arguments);
95
+ return notifyInstrumentation(onPreCall, {
96
+ parameters,
97
+ handlingStack: computeHandlingStack ? createHandlingStack("instrumented constructor") : void 0
98
+ }, () => Reflect.construct(original, parameters, newTarget));
99
+ };
100
+ const restorePrototypeConstructor = preserveConstructorShape(instrumentation, original);
101
+ const { stop: restoreOriginal } = replaceWithInstrumentation(container, constructor, original, instrumentation);
102
+ return { stop: () => {
103
+ stopped = true;
104
+ restorePrototypeConstructor();
105
+ restoreOriginal();
106
+ } };
107
+ }
108
+ /**
109
+ * Replaces `targetPrototype[method]` with the provided instrumentation and
110
+ * returns a `stop` function restoring the original (unless a third party replaced us afterwards).
111
+ */
112
+ function replaceWithInstrumentation(targetPrototype, method, original, instrumentation) {
113
+ targetPrototype[method] = instrumentation;
114
+ return { stop: () => {
115
+ if (targetPrototype[method] === instrumentation) targetPrototype[method] = original;
116
+ } };
117
+ }
118
+ /**
119
+ * Runs the pre-call callback (injecting the `onPostCall` registration), invokes the original
120
+ * method/constructor, then runs the registered post-call callback with the result.
121
+ *
122
+ * Note: the handling stack must be computed by the caller (at the topmost position of the call
123
+ * stack), so it is part of `baseCallInfo` rather than computed here.
124
+ */
125
+ function notifyInstrumentation(onPreCall, baseCallInfo, invokeOriginal) {
126
+ let postCallCallback;
127
+ callMonitored(onPreCall, null, [{
128
+ ...baseCallInfo,
129
+ onPostCall: (callback) => {
130
+ postCallCallback = callback;
131
+ }
132
+ }]);
133
+ const result = invokeOriginal();
134
+ if (postCallCallback) callMonitored(postCallCallback, null, [result]);
135
+ return result;
136
+ }
137
+ /**
138
+ * Copies the original constructor prototype and other static members onto the instrumentation, so that
139
+ * `instanceof` checks keep working and statics such as `WebSocket.OPEN` remain available while
140
+ * instrumented.
141
+ *
142
+ * Returns a function that restores `prototype.constructor` to its prior descriptor; call it
143
+ * before restoring the global property in `stop()`.
144
+ */
145
+ function preserveConstructorShape(instrumentation, original) {
146
+ /**
147
+ * Limitation: Only the original's *own* static members are copied. Statics inherited through the
148
+ * constructor's prototype chain (e.g. `class Child extends Parent` where `Parent` defines statics)
149
+ * are not preserved, since the instrumentation still inherits from `Function.prototype`. This is
150
+ * acceptable for the globals we instrument (e.g. `WebSocket`, whose own statics are the only ones
151
+ * that matter), but we would need to delegate the static prototype chain to support subclassed
152
+ * constructors with meaningful inherited statics.
153
+ */
154
+ for (const key of [].concat(Object.getOwnPropertyNames(original), Object.getOwnPropertySymbols(original))) {
155
+ const descriptor = Object.getOwnPropertyDescriptor(original, key);
156
+ Object.defineProperty(instrumentation, key, descriptor);
157
+ }
158
+ const { stop: restoreOriginalConstructor } = replaceWithInstrumentation(original.prototype, "constructor", original.prototype.constructor, instrumentation);
159
+ return restoreOriginalConstructor;
160
+ }
161
+ function instrumentSetter(targetPrototype, property, after) {
162
+ const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);
163
+ if (!originalDescriptor?.set || !originalDescriptor.configurable) return { stop: noop };
164
+ const stoppedInstrumentation = noop;
165
+ let instrumentation = (target, value) => {
166
+ setTimeout(() => {
167
+ if (instrumentation !== stoppedInstrumentation) after(target, value);
168
+ }, 0);
169
+ };
170
+ const instrumentationWrapper = function(value) {
171
+ originalDescriptor.set.call(this, value);
172
+ instrumentation(this, value);
173
+ };
174
+ Object.defineProperty(targetPrototype, property, { set: instrumentationWrapper });
175
+ return { stop: () => {
176
+ if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) Object.defineProperty(targetPrototype, property, originalDescriptor);
177
+ instrumentation = stoppedInstrumentation;
178
+ } };
179
+ }
180
+ //#endregion
181
+ export { instrumentConstructor, instrumentMethod, instrumentSetter };
182
+
183
+ //# sourceMappingURL=instrumentMethod.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentMethod.mjs","names":[],"sources":["../../src/tools/instrumentMethod.ts"],"sourcesContent":["import { callMonitored } from '@kubesense/kubesense-js-core/monitor'\nimport { setTimeout } from './timer'\nimport { noop } from './utils/functionUtils'\nimport { createHandlingStack } from './stackTrace/handlingStack'\n\n/**\n * Object passed to the callback of an instrumented method call. See `instrumentMethod` for more\n * info.\n */\nexport interface InstrumentedMethodCall<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> {\n /**\n * The target object on which the method was called.\n */\n target: TARGET\n\n /**\n * The parameters with which the method was called.\n *\n * Note: if needed, parameters can be mutated by the instrumentation\n */\n parameters: Parameters<TARGET[METHOD]>\n\n /**\n * Registers a callback that will be called after the original method is called, with the method\n * result passed as argument.\n */\n onPostCall: (callback: PostCallCallback<TARGET, METHOD>) => void\n\n /**\n * The stack trace of the method call.\n */\n handlingStack?: string\n}\n\ntype PostCallCallback<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET> = (\n result: ReturnType<TARGET[METHOD]>\n) => void\n\ntype ConstructorParametersOf<CONSTRUCTOR> = CONSTRUCTOR extends new (...args: infer P) => any ? P : never\ntype ConstructorInstanceOf<CONSTRUCTOR> = CONSTRUCTOR extends new (...args: any[]) => infer R ? R : never\n\ntype AnyConstructor = abstract new (...args: any[]) => any\n\n/**\n * Object passed to the callback of an instrumented constructor call. See `instrumentConstructor`\n * for more info.\n */\nexport interface InstrumentedConstructorCall<CONSTRUCTOR> {\n /**\n * The parameters with which the constructor was called.\n *\n * Note: if needed, parameters can be mutated by the instrumentation\n */\n parameters: ConstructorParametersOf<CONSTRUCTOR>\n\n /**\n * Registers a callback that will be called after the original constructor is called, with the\n * constructed instance passed as argument.\n */\n onPostCall: (callback: (result: ConstructorInstanceOf<CONSTRUCTOR>) => void) => void\n\n /**\n * The stack trace of the constructor call.\n */\n handlingStack?: string\n}\n\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * To instrument a constructor @see {@link instrumentConstructor}.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET>(\n targetPrototype: TARGET,\n method: METHOD,\n onPreCall: (this: null, callInfos: InstrumentedMethodCall<TARGET, METHOD>) => void,\n { computeHandlingStack }: { computeHandlingStack?: boolean } = {}\n) {\n let original = targetPrototype[method]\n\n if (typeof original !== 'function') {\n if (method in targetPrototype && typeof method === 'string' && method.startsWith('on')) {\n original = noop as TARGET[METHOD]\n } else {\n return { stop: noop }\n }\n }\n\n let stopped = false\n\n const instrumentation = function (this: TARGET): ReturnType<TARGET[METHOD]> {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments)\n }\n\n const parameters = Array.from(arguments) as Parameters<TARGET[METHOD]>\n\n return notifyInstrumentation<InstrumentedMethodCall<TARGET, METHOD>, ReturnType<TARGET[METHOD]>>(\n onPreCall,\n {\n target: this,\n parameters,\n handlingStack: computeHandlingStack ? createHandlingStack('instrumented method') : undefined,\n },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call -- TARGET[METHOD] is any under the index signature; value is verified as a function above\n () => original.apply(this, parameters)\n )\n } as TARGET[METHOD]\n\n const { stop: restoreOriginal } = replaceWithInstrumentation(targetPrototype, method, original, instrumentation)\n\n return {\n stop: () => {\n stopped = true\n restoreOriginal()\n },\n }\n}\n\n/**\n * Instruments a constructor on an object (typically a global, e.g. `window.WebSocket`), calling the\n * given callback before the original constructor is invoked. The callback receives an object with\n * information about the constructor call, and can register an `onPostCall` callback to be notified\n * with the constructed instance.\n *\n * Like `instrumentMethod`, this is a \"good citizen\" regarding third party instrumentations: stopping\n * restores the original constructor unless a third party replaced it afterwards.\n *\n * The wrapper preserves the original prototype (so `instanceof` keeps working), the original\n * `new.target` (so constructors that inspect it behave as if not instrumented), the original\n * static members (e.g. `WebSocket.OPEN`), and `instance.constructor ===` so checks like\n * `new WebSocket(url).constructor === WebSocket` stay true.\n *\n * @see {@link preserveConstructorShape} for limitations on static members preservation.\n * @example\n *\n * instrumentConstructor(window, 'WebSocket', ({ parameters, onPostCall }) => {\n * console.log('Before constructing WebSocket with parameters', parameters)\n *\n * onPostCall((instance) => {\n * console.log('Constructed WebSocket instance', instance)\n * })\n * })\n */\nexport function instrumentConstructor<CONTAINER extends { [key: string]: any }, CONSTRUCTOR extends keyof CONTAINER>(\n container: CONTAINER,\n constructor: CONSTRUCTOR,\n onPreCall: (this: null, callInfos: InstrumentedConstructorCall<CONTAINER[CONSTRUCTOR]>) => void,\n { computeHandlingStack }: { computeHandlingStack?: boolean } = {}\n) {\n const original = container[constructor]\n\n if (typeof original !== 'function') {\n return { stop: noop }\n }\n\n let stopped = false\n\n const instrumentation = function (this: unknown): ConstructorInstanceOf<CONTAINER[CONSTRUCTOR]> {\n // Bare `[[Call]]` (no `new`): delegate through `[[Call]]` and skip `onPreCall`. Otherwise we\n // would notify instrumentation before the original rejects or returns, unlike the native\n // constructor (e.g. `WebSocket(url)` or `class {}()` without `new`).\n if (!new.target) {\n return Reflect.apply(original, this, Array.from(arguments)) as ConstructorInstanceOf<CONTAINER[CONSTRUCTOR]>\n }\n\n // When `new` is used on this instrumented property, `new.target` is this wrapper. Passing\n // it through to Reflect.construct would expose the wrong new.target inside the original\n // body. If a subclass extends the wrapper, or a third party wraps us and their class is\n // instantiated, `new.target` is that outer constructor and must be preserved.\n const newTarget = new.target === instrumentation ? original : new.target\n\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return Reflect.construct(\n original,\n arguments as unknown as ConstructorParametersOf<CONTAINER[CONSTRUCTOR]>,\n newTarget\n )\n }\n\n const parameters = Array.from(arguments) as ConstructorParametersOf<CONTAINER[CONSTRUCTOR]>\n\n return notifyInstrumentation<\n InstrumentedConstructorCall<CONTAINER[CONSTRUCTOR]>,\n ConstructorInstanceOf<CONTAINER[CONSTRUCTOR]>\n >(\n onPreCall,\n {\n parameters,\n handlingStack: computeHandlingStack ? createHandlingStack('instrumented constructor') : undefined,\n },\n () =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n Reflect.construct(original, parameters, newTarget)\n )\n } as CONTAINER[CONSTRUCTOR]\n\n const restorePrototypeConstructor = preserveConstructorShape(instrumentation, original)\n const { stop: restoreOriginal } = replaceWithInstrumentation(container, constructor, original, instrumentation)\n\n return {\n stop: () => {\n stopped = true\n restorePrototypeConstructor()\n restoreOriginal()\n },\n }\n}\n\n/**\n * Replaces `targetPrototype[method]` with the provided instrumentation and\n * returns a `stop` function restoring the original (unless a third party replaced us afterwards).\n */\nfunction replaceWithInstrumentation<TARGET extends { [key: string]: any }, METHOD extends keyof TARGET>(\n targetPrototype: TARGET,\n method: METHOD,\n original: TARGET[METHOD],\n instrumentation: TARGET[METHOD]\n) {\n targetPrototype[method] = instrumentation\n\n return {\n stop: () => {\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original\n }\n },\n }\n}\n\n/**\n * Runs the pre-call callback (injecting the `onPostCall` registration), invokes the original\n * method/constructor, then runs the registered post-call callback with the result.\n *\n * Note: the handling stack must be computed by the caller (at the topmost position of the call\n * stack), so it is part of `baseCallInfo` rather than computed here.\n */\nfunction notifyInstrumentation<CALL_INFO extends InstrumentationCallbacks<RESULT>, RESULT>(\n onPreCall: (this: null, callInfo: CALL_INFO) => void,\n baseCallInfo: Omit<CALL_INFO, 'onPostCall'>,\n invokeOriginal: () => RESULT\n): RESULT {\n let postCallCallback: ((result: RESULT) => void) | undefined\n\n callMonitored(onPreCall, null, [\n {\n ...baseCallInfo,\n onPostCall: (callback: (result: RESULT) => void) => {\n postCallCallback = callback\n },\n } as CALL_INFO,\n ])\n\n const result = invokeOriginal()\n\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result])\n }\n\n return result\n}\n\ninterface InstrumentationCallbacks<RESULT> {\n onPostCall: (callback: (result: RESULT) => void) => void\n handlingStack?: string\n}\n\n/**\n * Copies the original constructor prototype and other static members onto the instrumentation, so that\n * `instanceof` checks keep working and statics such as `WebSocket.OPEN` remain available while\n * instrumented.\n *\n * Returns a function that restores `prototype.constructor` to its prior descriptor; call it\n * before restoring the global property in `stop()`.\n */\nfunction preserveConstructorShape(instrumentation: AnyConstructor, original: AnyConstructor): () => void {\n /**\n * Limitation: Only the original's *own* static members are copied. Statics inherited through the\n * constructor's prototype chain (e.g. `class Child extends Parent` where `Parent` defines statics)\n * are not preserved, since the instrumentation still inherits from `Function.prototype`. This is\n * acceptable for the globals we instrument (e.g. `WebSocket`, whose own statics are the only ones\n * that matter), but we would need to delegate the static prototype chain to support subclassed\n * constructors with meaningful inherited statics.\n */\n for (const key of ([] as PropertyKey[]).concat(\n Object.getOwnPropertyNames(original),\n Object.getOwnPropertySymbols(original)\n )) {\n const descriptor = Object.getOwnPropertyDescriptor(original, key) as PropertyDescriptor\n Object.defineProperty(instrumentation, key, descriptor)\n }\n\n /*\n * Limitation: Repointing `constructor` on this shared prototype affects every instance whose\n * `[[Prototype]]` is this object, including instances created before instrumentation, because\n * `constructor` is inherited rather than snapshotted per instance. Code that held `original` (or\n * whatever was in `prototype.constructor` before) as the canonical constructor and expects reference\n * equality to that value for the lifetime of the page can observe a behavior change while RUM is\n * active; restoring on `stop()` fixes this. In practice the SDK initializes as early as possible,\n * which narrows the window where pre-instrument instances exist.\n */\n const { stop: restoreOriginalConstructor } = replaceWithInstrumentation(\n original.prototype,\n 'constructor',\n original.prototype.constructor,\n instrumentation\n )\n\n return restoreOriginalConstructor\n}\n\nexport function instrumentSetter<TARGET extends { [key: string]: any }, PROPERTY extends keyof TARGET>(\n targetPrototype: TARGET,\n property: PROPERTY,\n after: (target: TARGET, value: TARGET[PROPERTY]) => void\n) {\n const originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property)\n if (!originalDescriptor?.set || !originalDescriptor.configurable) {\n return { stop: noop }\n }\n\n const stoppedInstrumentation = noop\n let instrumentation = (target: TARGET, value: TARGET[PROPERTY]) => {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(() => {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value)\n }\n }, 0)\n }\n\n const instrumentationWrapper = function (this: TARGET, value: TARGET[PROPERTY]) {\n originalDescriptor.set!.call(this, value)\n instrumentation(this, value)\n }\n\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper,\n })\n\n return {\n stop: () => {\n if (Object.getOwnPropertyDescriptor(targetPrototype, property)?.set === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor)\n }\n instrumentation = stoppedInstrumentation\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGA,SAAgB,iBACd,iBACA,QACA,WACA,EAAE,yBAA6D,CAAC,GAChE;CACA,IAAI,WAAW,gBAAgB;CAE/B,IAAI,OAAO,aAAa,YAAY;EAClC,IAAI,UAAU,mBAAmB,OAAO,WAAW,YAAY,OAAO,WAAW,IAAI,GACnF,WAAW;OAEX,OAAO,EAAE,MAAM,KAAK;CAExB;CAEA,IAAI,UAAU;CAEd,MAAM,kBAAkB,WAAoD;EAC1E,IAAI,SAEF,OAAO,SAAS,MAAM,MAAM,SAAS;EAGvC,MAAM,aAAa,MAAM,KAAK,SAAS;EAEvC,OAAO,sBACL,WACA;GACE,QAAQ;GACR;GACA,eAAe,uBAAuB,oBAAoB,qBAAqB,IAAI,KAAA;EACrF,SAEM,SAAS,MAAM,MAAM,UAAU,CACvC;CACF;CAEA,MAAM,EAAE,MAAM,oBAAoB,2BAA2B,iBAAiB,QAAQ,UAAU,eAAe;CAE/G,OAAO,EACL,YAAY;EACV,UAAU;EACV,gBAAgB;CAClB,EACF;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,sBACd,WACA,aACA,WACA,EAAE,yBAA6D,CAAC,GAChE;CACA,MAAM,WAAW,UAAU;CAE3B,IAAI,OAAO,aAAa,YACtB,OAAO,EAAE,MAAM,KAAK;CAGtB,IAAI,UAAU;CAEd,MAAM,kBAAkB,WAAwE;EAI9F,IAAI,CAAC,YACH,OAAO,QAAQ,MAAM,UAAU,MAAM,MAAM,KAAK,SAAS,CAAC;EAO5D,MAAM,YAAY,eAAe,kBAAkB,WAAW;EAE9D,IAAI,SAEF,OAAO,QAAQ,UACb,UACA,WACA,SACF;EAGF,MAAM,aAAa,MAAM,KAAK,SAAS;EAEvC,OAAO,sBAIL,WACA;GACE;GACA,eAAe,uBAAuB,oBAAoB,0BAA0B,IAAI,KAAA;EAC1F,SAGE,QAAQ,UAAU,UAAU,YAAY,SAAS,CACrD;CACF;CAEA,MAAM,8BAA8B,yBAAyB,iBAAiB,QAAQ;CACtF,MAAM,EAAE,MAAM,oBAAoB,2BAA2B,WAAW,aAAa,UAAU,eAAe;CAE9G,OAAO,EACL,YAAY;EACV,UAAU;EACV,4BAA4B;EAC5B,gBAAgB;CAClB,EACF;AACF;;;;;AAMA,SAAS,2BACP,iBACA,QACA,UACA,iBACA;CACA,gBAAgB,UAAU;CAE1B,OAAO,EACL,YAAY;EAEV,IAAI,gBAAgB,YAAY,iBAC9B,gBAAgB,UAAU;CAE9B,EACF;AACF;;;;;;;;AASA,SAAS,sBACP,WACA,cACA,gBACQ;CACR,IAAI;CAEJ,cAAc,WAAW,MAAM,CAC7B;EACE,GAAG;EACH,aAAa,aAAuC;GAClD,mBAAmB;EACrB;CACF,CACF,CAAC;CAED,MAAM,SAAS,eAAe;CAE9B,IAAI,kBACF,cAAc,kBAAkB,MAAM,CAAC,MAAM,CAAC;CAGhD,OAAO;AACT;;;;;;;;;AAeA,SAAS,yBAAyB,iBAAiC,UAAsC;;;;;;;;;CASvG,KAAK,MAAM,OAAQ,CAAC,CAAC,CAAmB,OACtC,OAAO,oBAAoB,QAAQ,GACnC,OAAO,sBAAsB,QAAQ,CACvC,GAAG;EACD,MAAM,aAAa,OAAO,yBAAyB,UAAU,GAAG;EAChE,OAAO,eAAe,iBAAiB,KAAK,UAAU;CACxD;CAWA,MAAM,EAAE,MAAM,+BAA+B,2BAC3C,SAAS,WACT,eACA,SAAS,UAAU,aACnB,eACF;CAEA,OAAO;AACT;AAEA,SAAgB,iBACd,iBACA,UACA,OACA;CACA,MAAM,qBAAqB,OAAO,yBAAyB,iBAAiB,QAAQ;CACpF,IAAI,CAAC,oBAAoB,OAAO,CAAC,mBAAmB,cAClD,OAAO,EAAE,MAAM,KAAK;CAGtB,MAAM,yBAAyB;CAC/B,IAAI,mBAAmB,QAAgB,UAA4B;EAEjE,iBAAiB;GACf,IAAI,oBAAoB,wBACtB,MAAM,QAAQ,KAAK;EAEvB,GAAG,CAAC;CACN;CAEA,MAAM,yBAAyB,SAAwB,OAAyB;EAC9E,mBAAmB,IAAK,KAAK,MAAM,KAAK;EACxC,gBAAgB,MAAM,KAAK;CAC7B;CAEA,OAAO,eAAe,iBAAiB,UAAU,EAC/C,KAAK,uBACP,CAAC;CAED,OAAO,EACL,YAAY;EACV,IAAI,OAAO,yBAAyB,iBAAiB,QAAQ,CAAC,EAAE,QAAQ,wBACtE,OAAO,eAAe,iBAAiB,UAAU,kBAAkB;EAErE,kBAAkB;CACpB,EACF;AACF"}
@@ -0,0 +1,25 @@
1
+ import { display } from "./display.mjs";
2
+ //#region src/tools/matchOption.ts
3
+ /**
4
+ * Returns true if value can be matched by at least one of the provided MatchOptions.
5
+ * When comparing strings, setting useStartsWith to true will compare the value with the start of
6
+ * the option, instead of requiring an exact match.
7
+ */
8
+ function matchList(list, value, useStartsWith = false) {
9
+ return list.some((item) => {
10
+ try {
11
+ if (typeof item === "function") return item(value);
12
+ else if (item instanceof RegExp) {
13
+ item.lastIndex = 0;
14
+ return item.test(value);
15
+ } else if (typeof item === "string") return useStartsWith ? value.startsWith(item) : item === value;
16
+ } catch (e) {
17
+ display.error(e);
18
+ }
19
+ return false;
20
+ });
21
+ }
22
+ //#endregion
23
+ export { matchList };
24
+
25
+ //# sourceMappingURL=matchOption.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchOption.mjs","names":[],"sources":["../../src/tools/matchOption.ts"],"sourcesContent":["import { display } from './display'\n\nexport type MatchOption = string | RegExp | ((value: string) => boolean)\n\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list: MatchOption[], value: string, useStartsWith = false): boolean {\n return list.some((item) => {\n try {\n if (typeof item === 'function') {\n return item(value)\n } else if (item instanceof RegExp) {\n // Prevent stateful matching\n item.lastIndex = 0\n return item.test(value)\n } else if (typeof item === 'string') {\n return useStartsWith ? value.startsWith(item) : item === value\n }\n } catch (e) {\n display.error(e)\n }\n return false\n })\n}\n"],"mappings":";;;;;;;AASA,SAAgB,UAAU,MAAqB,OAAe,gBAAgB,OAAgB;CAC5F,OAAO,KAAK,MAAM,SAAS;EACzB,IAAI;GACF,IAAI,OAAO,SAAS,YAClB,OAAO,KAAK,KAAK;QACZ,IAAI,gBAAgB,QAAQ;IAEjC,KAAK,YAAY;IACjB,OAAO,KAAK,KAAK,KAAK;GACxB,OAAO,IAAI,OAAO,SAAS,UACzB,OAAO,gBAAgB,MAAM,WAAW,IAAI,IAAI,SAAS;EAE7D,SAAS,GAAG;GACV,QAAQ,MAAM,CAAC;EACjB;EACA,OAAO;CACT,CAAC;AACH"}
@@ -0,0 +1,28 @@
1
+ //#region src/tools/mockable.ts
2
+ /**
3
+ * Wraps a value to make it mockable in tests. In production builds, this is a no-op
4
+ * that returns the value as-is. In test builds, it checks if a mock replacement has
5
+ * been registered and returns that instead.
6
+ *
7
+ * @example
8
+ * // In source file:
9
+ * import { mockable } from '../tools/mockable'
10
+ * export function formatNavigationEntry(): string {
11
+ * const navigationEntry = mockable(getNavigationEntry)()
12
+ * ...
13
+ * }
14
+ *
15
+ * // In test file:
16
+ * import { replaceMockable } from '@kubesense/kubesense-browser-core/test'
17
+ * it('...', () => {
18
+ * replaceMockable(getNavigationEntry, () => FAKE_NAVIGATION_ENTRY)
19
+ * expect(formatNavigationEntry()).toEqual(...)
20
+ * })
21
+ */
22
+ function mockable(value) {
23
+ return value;
24
+ }
25
+ //#endregion
26
+ export { mockable };
27
+
28
+ //# sourceMappingURL=mockable.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockable.mjs","names":[],"sources":["../../src/tools/mockable.ts"],"sourcesContent":["declare const __BUILD_ENV__SDK_VERSION__: string\n\nexport const mockableReplacements = new Map<unknown, unknown>()\n\n/**\n * Wraps a value to make it mockable in tests. In production builds, this is a no-op\n * that returns the value as-is. In test builds, it checks if a mock replacement has\n * been registered and returns that instead.\n *\n * @example\n * // In source file:\n * import { mockable } from '../tools/mockable'\n * export function formatNavigationEntry(): string {\n * const navigationEntry = mockable(getNavigationEntry)()\n * ...\n * }\n *\n * // In test file:\n * import { replaceMockable } from '@kubesense/kubesense-browser-core/test'\n * it('...', () => {\n * replaceMockable(getNavigationEntry, () => FAKE_NAVIGATION_ENTRY)\n * expect(formatNavigationEntry()).toEqual(...)\n * })\n */\nexport function mockable<T>(value: T): T {\n // In test builds, return a wrapper that checks for mocks at call time\n if (__BUILD_ENV__SDK_VERSION__ === 'test' && mockableReplacements.has(value)) {\n return mockableReplacements.get(value)! as T\n }\n // In production, return the value as-is\n return value\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,SAAY,OAAa;CAMvC,OAAO;AACT"}
@@ -0,0 +1,77 @@
1
+ import { queueMicrotask } from "./queueMicrotask.mjs";
2
+ //#region src/tools/observable.ts
3
+ var Observable = class {
4
+ constructor(onFirstSubscribe) {
5
+ this.onFirstSubscribe = onFirstSubscribe;
6
+ this.observers = [];
7
+ }
8
+ subscribe(observer) {
9
+ this.addObserver(observer);
10
+ return { unsubscribe: () => this.removeObserver(observer) };
11
+ }
12
+ notify(data) {
13
+ this.observers.forEach((observer) => observer(data));
14
+ }
15
+ addObserver(observer) {
16
+ this.observers.push(observer);
17
+ if (this.observers.length === 1 && this.onFirstSubscribe) this.onLastUnsubscribe = this.onFirstSubscribe(this) || void 0;
18
+ }
19
+ removeObserver(observer) {
20
+ this.observers = this.observers.filter((other) => observer !== other);
21
+ if (!this.observers.length && this.onLastUnsubscribe) this.onLastUnsubscribe();
22
+ }
23
+ };
24
+ function mergeObservables(...observables) {
25
+ return new Observable((globalObservable) => {
26
+ const subscriptions = observables.map((observable) => observable.subscribe((data) => globalObservable.notify(data)));
27
+ return () => subscriptions.forEach((subscription) => subscription.unsubscribe());
28
+ });
29
+ }
30
+ var BufferedObservable = class extends Observable {
31
+ constructor(maxBufferSize, onDrop) {
32
+ super();
33
+ this.maxBufferSize = maxBufferSize;
34
+ this.onDrop = onDrop;
35
+ this.buffer = [];
36
+ this.droppedCount = 0;
37
+ }
38
+ notify(data) {
39
+ this.buffer.push(data);
40
+ if (this.buffer.length > this.maxBufferSize) {
41
+ this.buffer.shift();
42
+ this.droppedCount++;
43
+ }
44
+ super.notify(data);
45
+ }
46
+ subscribe(observer) {
47
+ let closed = false;
48
+ const subscription = { unsubscribe: () => {
49
+ closed = true;
50
+ this.removeObserver(observer);
51
+ } };
52
+ queueMicrotask(() => {
53
+ for (const data of this.buffer) {
54
+ if (closed) return;
55
+ observer(data);
56
+ }
57
+ if (!closed) this.addObserver(observer);
58
+ });
59
+ return subscription;
60
+ }
61
+ /**
62
+ * Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not
63
+ * needed anymore. This can be seen as a performance optimization, and things will work probably
64
+ * even if this method isn't called, but still useful to clarify our intent and lowering our
65
+ * memory impact.
66
+ */
67
+ unbuffer() {
68
+ queueMicrotask(() => {
69
+ if (this.droppedCount > 0 && this.onDrop) this.onDrop(this.droppedCount);
70
+ this.maxBufferSize = this.buffer.length = 0;
71
+ });
72
+ }
73
+ };
74
+ //#endregion
75
+ export { BufferedObservable, Observable, mergeObservables };
76
+
77
+ //# sourceMappingURL=observable.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable.mjs","names":[],"sources":["../../src/tools/observable.ts"],"sourcesContent":["import { queueMicrotask } from './queueMicrotask'\n\nexport interface Subscription {\n unsubscribe: () => void\n}\n\ntype Observer<T> = (data: T) => void\n\n// eslint-disable-next-line no-restricted-syntax\nexport class Observable<T> {\n protected observers: Array<Observer<T>> = []\n private onLastUnsubscribe?: () => void\n\n constructor(private onFirstSubscribe?: (observable: Observable<T>) => (() => void) | void) {}\n\n subscribe(observer: Observer<T>): Subscription {\n this.addObserver(observer)\n return {\n unsubscribe: () => this.removeObserver(observer),\n }\n }\n\n notify(data: T) {\n this.observers.forEach((observer) => observer(data))\n }\n\n protected addObserver(observer: Observer<T>) {\n this.observers.push(observer)\n if (this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined\n }\n }\n\n protected removeObserver(observer: Observer<T>) {\n this.observers = this.observers.filter((other) => observer !== other)\n if (!this.observers.length && this.onLastUnsubscribe) {\n this.onLastUnsubscribe()\n }\n }\n}\n\nexport function mergeObservables<T>(...observables: Array<Observable<T>>) {\n return new Observable<T>((globalObservable) => {\n const subscriptions: Subscription[] = observables.map((observable) =>\n observable.subscribe((data) => globalObservable.notify(data))\n )\n return () => subscriptions.forEach((subscription) => subscription.unsubscribe())\n })\n}\n\n// eslint-disable-next-line no-restricted-syntax\nexport class BufferedObservable<T> extends Observable<T> {\n private buffer: T[] = []\n private droppedCount = 0\n\n constructor(\n private maxBufferSize: number,\n private onDrop?: (count: number) => void\n ) {\n super()\n }\n\n notify(data: T) {\n this.buffer.push(data)\n if (this.buffer.length > this.maxBufferSize) {\n this.buffer.shift()\n this.droppedCount++\n }\n super.notify(data)\n }\n\n subscribe(observer: Observer<T>): Subscription {\n let closed = false\n\n const subscription = {\n unsubscribe: () => {\n closed = true\n this.removeObserver(observer)\n },\n }\n\n queueMicrotask(() => {\n for (const data of this.buffer) {\n if (closed) {\n return\n }\n observer(data)\n }\n\n if (!closed) {\n this.addObserver(observer)\n }\n })\n\n return subscription\n }\n\n /**\n * Drop buffered data and don't buffer future data. This is to avoid leaking memory when it's not\n * needed anymore. This can be seen as a performance optimization, and things will work probably\n * even if this method isn't called, but still useful to clarify our intent and lowering our\n * memory impact.\n */\n unbuffer() {\n queueMicrotask(() => {\n if (this.droppedCount > 0 && this.onDrop) {\n this.onDrop(this.droppedCount)\n }\n this.maxBufferSize = this.buffer.length = 0\n })\n }\n}\n"],"mappings":";;AASA,IAAa,aAAb,MAA2B;CAIzB,YAAY,kBAA+E;EAAvE,KAAA,mBAAA;EAHsB,KAAA,YAAA,CAAC;CAGiD;CAE5F,UAAU,UAAqC;EAC7C,KAAK,YAAY,QAAQ;EACzB,OAAO,EACL,mBAAmB,KAAK,eAAe,QAAQ,EACjD;CACF;CAEA,OAAO,MAAS;EACd,KAAK,UAAU,SAAS,aAAa,SAAS,IAAI,CAAC;CACrD;CAEA,YAAsB,UAAuB;EAC3C,KAAK,UAAU,KAAK,QAAQ;EAC5B,IAAI,KAAK,UAAU,WAAW,KAAK,KAAK,kBACtC,KAAK,oBAAoB,KAAK,iBAAiB,IAAI,KAAK,KAAA;CAE5D;CAEA,eAAyB,UAAuB;EAC9C,KAAK,YAAY,KAAK,UAAU,QAAQ,UAAU,aAAa,KAAK;EACpE,IAAI,CAAC,KAAK,UAAU,UAAU,KAAK,mBACjC,KAAK,kBAAkB;CAE3B;AACF;AAEA,SAAgB,iBAAoB,GAAG,aAAmC;CACxE,OAAO,IAAI,YAAe,qBAAqB;EAC7C,MAAM,gBAAgC,YAAY,KAAK,eACrD,WAAW,WAAW,SAAS,iBAAiB,OAAO,IAAI,CAAC,CAC9D;EACA,aAAa,cAAc,SAAS,iBAAiB,aAAa,YAAY,CAAC;CACjF,CAAC;AACH;AAGA,IAAa,qBAAb,cAA2C,WAAc;CAIvD,YACE,eACA,QACA;EACA,MAAM;EAHE,KAAA,gBAAA;EACA,KAAA,SAAA;EALY,KAAA,SAAA,CAAC;EACA,KAAA,eAAA;CAOvB;CAEA,OAAO,MAAS;EACd,KAAK,OAAO,KAAK,IAAI;EACrB,IAAI,KAAK,OAAO,SAAS,KAAK,eAAe;GAC3C,KAAK,OAAO,MAAM;GAClB,KAAK;EACP;EACA,MAAM,OAAO,IAAI;CACnB;CAEA,UAAU,UAAqC;EAC7C,IAAI,SAAS;EAEb,MAAM,eAAe,EACnB,mBAAmB;GACjB,SAAS;GACT,KAAK,eAAe,QAAQ;EAC9B,EACF;EAEA,qBAAqB;GACnB,KAAK,MAAM,QAAQ,KAAK,QAAQ;IAC9B,IAAI,QACF;IAEF,SAAS,IAAI;GACf;GAEA,IAAI,CAAC,QACH,KAAK,YAAY,QAAQ;EAE7B,CAAC;EAED,OAAO;CACT;;;;;;;CAQA,WAAW;EACT,qBAAqB;GACnB,IAAI,KAAK,eAAe,KAAK,KAAK,QAChC,KAAK,OAAO,KAAK,YAAY;GAE/B,KAAK,gBAAgB,KAAK,OAAO,SAAS;EAC5C,CAAC;CACH;AACF"}
@@ -0,0 +1,12 @@
1
+ import { globalObject } from "@kubesense/kubesense-js-core/util";
2
+ import { monitor } from "@kubesense/kubesense-js-core/monitor";
3
+ //#region src/tools/queueMicrotask.ts
4
+ function queueMicrotask(callback) {
5
+ const nativeImplementation = globalObject.queueMicrotask;
6
+ if (typeof nativeImplementation === "function") nativeImplementation(monitor(callback));
7
+ else Promise.resolve().then(monitor(callback));
8
+ }
9
+ //#endregion
10
+ export { queueMicrotask };
11
+
12
+ //# sourceMappingURL=queueMicrotask.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queueMicrotask.mjs","names":[],"sources":["../../src/tools/queueMicrotask.ts"],"sourcesContent":["import { globalObject } from '@kubesense/kubesense-js-core/util'\nimport { monitor } from '@kubesense/kubesense-js-core/monitor'\n\nexport function queueMicrotask(callback: () => void) {\n // Intentionally avoid .bind(globalObject): in some environments (e.g. Selenium GeckoDriver's\n // executeScript), globalThis is not a proper global object, so calling the bound function throws\n // 'queueMicrotask called on an object that does not implement interface Window'. Calling it as an\n // unbound method is fine, as the proper global object will be used implicitly.\n // See https://github.com/mozilla/geckodriver/issues/1798\n const nativeImplementation = globalObject.queueMicrotask\n\n if (typeof nativeImplementation === 'function') {\n nativeImplementation(monitor(callback))\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- the callback is monitored, so it'll never throw\n Promise.resolve().then(monitor(callback))\n }\n}\n"],"mappings":";;;AAGA,SAAgB,eAAe,UAAsB;CAMnD,MAAM,uBAAuB,aAAa;CAE1C,IAAI,OAAO,yBAAyB,YAClC,qBAAqB,QAAQ,QAAQ,CAAC;MAGtC,QAAQ,QAAQ,CAAC,CAAC,KAAK,QAAQ,QAAQ,CAAC;AAE5C"}
@@ -0,0 +1,21 @@
1
+ import { noop } from "./utils/functionUtils.mjs";
2
+ import { concatBuffers } from "./utils/byteUtils.mjs";
3
+ //#region src/tools/readBytesFromStream.ts
4
+ /**
5
+ * Read bytes from a ReadableStream until the end of the stream.
6
+ */
7
+ async function readBytesFromStream(stream) {
8
+ const reader = stream.getReader();
9
+ const chunks = [];
10
+ while (true) {
11
+ const result = await reader.read();
12
+ if (result.done) break;
13
+ chunks.push(result.value);
14
+ }
15
+ reader.cancel().catch(noop);
16
+ return concatBuffers(chunks);
17
+ }
18
+ //#endregion
19
+ export { readBytesFromStream };
20
+
21
+ //# sourceMappingURL=readBytesFromStream.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readBytesFromStream.mjs","names":[],"sources":["../../src/tools/readBytesFromStream.ts"],"sourcesContent":["import type { Uint8ArrayBuffer } from './utils/byteUtils'\nimport { concatBuffers } from './utils/byteUtils'\nimport { noop } from './utils/functionUtils'\n\n/**\n * Read bytes from a ReadableStream until the end of the stream.\n */\nexport async function readBytesFromStream(stream: ReadableStream<Uint8ArrayBuffer>) {\n const reader = stream.getReader()\n const chunks: Uint8ArrayBuffer[] = []\n\n while (true) {\n const result = await reader.read()\n if (result.done) {\n break\n }\n\n chunks.push(result.value)\n }\n\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop\n )\n\n return concatBuffers(chunks)\n}\n"],"mappings":";;;;;;AAOA,eAAsB,oBAAoB,QAA0C;CAClF,MAAM,SAAS,OAAO,UAAU;CAChC,MAAM,SAA6B,CAAC;CAEpC,OAAO,MAAM;EACX,MAAM,SAAS,MAAM,OAAO,KAAK;EACjC,IAAI,OAAO,MACT;EAGF,OAAO,KAAK,OAAO,KAAK;CAC1B;CAEA,OAAO,OAAO,CAAC,CAAC,MAGd,IACF;CAEA,OAAO,cAAc,MAAM;AAC7B"}
@@ -0,0 +1,28 @@
1
+ import { clearTimeout, setTimeout } from "./timer.mjs";
2
+ import { monitor } from "@kubesense/kubesense-js-core/monitor";
3
+ import { dateNow } from "@kubesense/kubesense-js-core/time";
4
+ //#region src/tools/requestIdleCallback.ts
5
+ /**
6
+ * 'requestIdleCallback' with a shim.
7
+ */
8
+ function requestIdleCallback(callback, opts) {
9
+ if (window.requestIdleCallback && window.cancelIdleCallback) {
10
+ const id = window.requestIdleCallback(monitor(callback), opts);
11
+ return () => window.cancelIdleCallback(id);
12
+ }
13
+ return requestIdleCallbackShim(callback);
14
+ }
15
+ function requestIdleCallbackShim(callback) {
16
+ const start = dateNow();
17
+ const timeoutId = setTimeout(() => {
18
+ callback({
19
+ didTimeout: false,
20
+ timeRemaining: () => Math.max(0, 50 - (dateNow() - start))
21
+ });
22
+ }, 0);
23
+ return () => clearTimeout(timeoutId);
24
+ }
25
+ //#endregion
26
+ export { requestIdleCallback, requestIdleCallbackShim };
27
+
28
+ //# sourceMappingURL=requestIdleCallback.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestIdleCallback.mjs","names":[],"sources":["../../src/tools/requestIdleCallback.ts"],"sourcesContent":["import { dateNow } from '@kubesense/kubesense-js-core/time'\nimport { monitor } from '@kubesense/kubesense-js-core/monitor'\nimport { setTimeout, clearTimeout } from './timer'\n\n// This type is not yet supported in TS 3.8. Imported from the TS source until we upgrade the\n// minimum supported TS version.\n// https://github.com/microsoft/TypeScript/blob/13c374a868c926f6a907666a5599992c1351b773/src/lib/dom.generated.d.ts#L9513-L9516\nexport interface IdleDeadline {\n readonly didTimeout: boolean\n timeRemaining(): DOMHighResTimeStamp\n}\n\n/**\n * 'requestIdleCallback' with a shim.\n */\nexport function requestIdleCallback(callback: (deadline: IdleDeadline) => void, opts?: { timeout?: number }) {\n // Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n if (window.requestIdleCallback && window.cancelIdleCallback) {\n const id = window.requestIdleCallback(monitor(callback), opts)\n return () => window.cancelIdleCallback(id)\n }\n return requestIdleCallbackShim(callback)\n}\n\nexport const MAX_TASK_TIME = 50\n\n/*\n * Shim from https://developer.chrome.com/blog/using-requestidlecallback#checking_for_requestidlecallback\n * Note: there is no simple way to support the \"timeout\" option, so we ignore it.\n */\nexport function requestIdleCallbackShim(callback: (deadline: IdleDeadline) => void) {\n const start = dateNow()\n const timeoutId = setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining: () => Math.max(0, MAX_TASK_TIME - (dateNow() - start)),\n })\n }, 0)\n return () => clearTimeout(timeoutId)\n}\n"],"mappings":";;;;;;;AAeA,SAAgB,oBAAoB,UAA4C,MAA6B;CAE3G,IAAI,OAAO,uBAAuB,OAAO,oBAAoB;EAC3D,MAAM,KAAK,OAAO,oBAAoB,QAAQ,QAAQ,GAAG,IAAI;EAC7D,aAAa,OAAO,mBAAmB,EAAE;CAC3C;CACA,OAAO,wBAAwB,QAAQ;AACzC;AAQA,SAAgB,wBAAwB,UAA4C;CAClF,MAAM,QAAQ,QAAQ;CACtB,MAAM,YAAY,iBAAiB;EACjC,SAAS;GACP,YAAY;GACZ,qBAAqB,KAAK,IAAI,GAAA,MAAoB,QAAQ,IAAI,MAAM;EACtE,CAAC;CACH,GAAG,CAAC;CACJ,aAAa,aAAa,SAAS;AACrC"}
@@ -0,0 +1,13 @@
1
+ import { globalObject } from "@kubesense/kubesense-js-core/util";
2
+ //#region src/tools/sendToExtension.ts
3
+ function sendToExtension(type, payload) {
4
+ const callback = globalObject.__kubesenseBrowserSdkExtensionCallback;
5
+ if (callback) callback({
6
+ type,
7
+ payload
8
+ });
9
+ }
10
+ //#endregion
11
+ export { sendToExtension };
12
+
13
+ //# sourceMappingURL=sendToExtension.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendToExtension.mjs","names":[],"sources":["../../src/tools/sendToExtension.ts"],"sourcesContent":["import { globalObject } from '@kubesense/kubesense-js-core/util'\n\ninterface BrowserWindow {\n __kubesenseBrowserSdkExtensionCallback?: (message: unknown) => void\n}\n\ntype ExtensionMessageType = 'logs' | 'record' | 'rum' | 'telemetry'\n\nexport function sendToExtension(type: ExtensionMessageType, payload: unknown) {\n const callback = (globalObject as BrowserWindow).__kubesenseBrowserSdkExtensionCallback\n if (callback) {\n callback({ type, payload })\n }\n}\n"],"mappings":";;AAQA,SAAgB,gBAAgB,MAA4B,SAAkB;CAC5E,MAAM,WAAY,aAA+B;CACjD,IAAI,UACF,SAAS;EAAE;EAAM;CAAQ,CAAC;AAE9B"}
@@ -0,0 +1,42 @@
1
+ import { noop } from "../utils/functionUtils.mjs";
2
+ //#region src/tools/serialisation/jsonStringify.ts
3
+ /**
4
+ * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that
5
+ * because some sites badly override toJSON on certain objects. Removing all toJSON methods from
6
+ * nested values would be too costly, so we just detach them from the root value, and native classes
7
+ * used to build JSON values (Array and Object).
8
+ *
9
+ * Note: this still assumes that JSON.stringify is correct.
10
+ */
11
+ function jsonStringify(value, replacer, space) {
12
+ if (typeof value !== "object" || value === null) return JSON.stringify(value);
13
+ const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);
14
+ const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);
15
+ const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));
16
+ const restoreValueToJson = detachToJsonMethod(value);
17
+ try {
18
+ return JSON.stringify(value, replacer, space);
19
+ } catch {
20
+ return "<error: unable to serialize object>";
21
+ } finally {
22
+ restoreObjectPrototypeToJson();
23
+ restoreArrayPrototypeToJson();
24
+ restoreValuePrototypeToJson();
25
+ restoreValueToJson();
26
+ }
27
+ }
28
+ function detachToJsonMethod(value) {
29
+ const object = value;
30
+ const objectToJson = object.toJSON;
31
+ if (objectToJson) {
32
+ delete object.toJSON;
33
+ return () => {
34
+ object.toJSON = objectToJson;
35
+ };
36
+ }
37
+ return noop;
38
+ }
39
+ //#endregion
40
+ export { detachToJsonMethod, jsonStringify };
41
+
42
+ //# sourceMappingURL=jsonStringify.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonStringify.mjs","names":[],"sources":["../../../src/tools/serialisation/jsonStringify.ts"],"sourcesContent":["import { noop } from '../utils/functionUtils'\n\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(\n value: unknown,\n replacer?: Array<string | number>,\n space?: string | number\n): string | undefined {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value)\n }\n\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n const restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n const restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n const restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value))\n const restoreValueToJson = detachToJsonMethod(value)\n\n try {\n return JSON.stringify(value, replacer, space)\n } catch {\n return '<error: unable to serialize object>'\n } finally {\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n restoreValuePrototypeToJson()\n restoreValueToJson()\n }\n}\n\nexport interface ObjectWithToJsonMethod {\n toJSON?: () => unknown\n}\n\nexport function detachToJsonMethod(value: object) {\n const object = value as ObjectWithToJsonMethod\n const objectToJson = object.toJSON\n if (objectToJson) {\n delete object.toJSON\n return () => {\n object.toJSON = objectToJson\n }\n }\n return noop\n}\n"],"mappings":";;;;;;;;;;AAUA,SAAgB,cACd,OACA,UACA,OACoB;CACpB,IAAI,OAAO,UAAU,YAAY,UAAU,MACzC,OAAO,KAAK,UAAU,KAAK;CAK7B,MAAM,+BAA+B,mBAAmB,OAAO,SAAS;CACxE,MAAM,8BAA8B,mBAAmB,MAAM,SAAS;CACtE,MAAM,8BAA8B,mBAAmB,OAAO,eAAe,KAAK,CAAC;CACnF,MAAM,qBAAqB,mBAAmB,KAAK;CAEnD,IAAI;EACF,OAAO,KAAK,UAAU,OAAO,UAAU,KAAK;CAC9C,QAAQ;EACN,OAAO;CACT,UAAU;EACR,6BAA6B;EAC7B,4BAA4B;EAC5B,4BAA4B;EAC5B,mBAAmB;CACrB;AACF;AAMA,SAAgB,mBAAmB,OAAe;CAChD,MAAM,SAAS;CACf,MAAM,eAAe,OAAO;CAC5B,IAAI,cAAc;EAChB,OAAO,OAAO;EACd,aAAa;GACX,OAAO,SAAS;EAClB;CACF;CACA,OAAO;AACT"}