@grafana/faro-core 1.0.1 → 1.0.4

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 (288) hide show
  1. package/dist/bundle/faro-core.iife.js +1 -1
  2. package/dist/cjs/metas/types.js.map +1 -1
  3. package/dist/cjs/testUtils/mockTransport.js +4 -1
  4. package/dist/cjs/testUtils/mockTransport.js.map +1 -1
  5. package/dist/cjs/transports/base.js.map +1 -1
  6. package/dist/cjs/transports/types.js.map +1 -1
  7. package/dist/cjs/version.js +1 -1
  8. package/dist/cjs/version.js.map +1 -1
  9. package/dist/esm/metas/types.js.map +1 -1
  10. package/dist/esm/testUtils/mockTransport.js +3 -1
  11. package/dist/esm/testUtils/mockTransport.js.map +1 -1
  12. package/dist/esm/transports/base.js.map +1 -1
  13. package/dist/esm/transports/types.js.map +1 -1
  14. package/dist/esm/version.js +1 -1
  15. package/dist/esm/version.js.map +1 -1
  16. package/dist/spec/core/src/api/events/index.js +6 -0
  17. package/dist/spec/core/src/api/events/index.js.map +1 -0
  18. package/dist/spec/core/src/api/events/initialize.js +44 -0
  19. package/dist/spec/core/src/api/events/initialize.js.map +1 -0
  20. package/dist/spec/core/src/api/events/initialize.test.js +86 -0
  21. package/dist/spec/core/src/api/events/initialize.test.js.map +1 -0
  22. package/dist/spec/core/src/api/events/types.js +3 -0
  23. package/dist/spec/core/src/api/events/types.js.map +1 -0
  24. package/dist/spec/core/src/api/exceptions/const.js +5 -0
  25. package/dist/spec/core/src/api/exceptions/const.js.map +1 -0
  26. package/dist/spec/core/src/api/exceptions/index.js +8 -0
  27. package/dist/spec/core/src/api/exceptions/index.js.map +1 -0
  28. package/dist/spec/core/src/api/exceptions/initialize.js +58 -0
  29. package/dist/spec/core/src/api/exceptions/initialize.js.map +1 -0
  30. package/dist/spec/core/src/api/exceptions/initialize.test.js +133 -0
  31. package/dist/spec/core/src/api/exceptions/initialize.test.js.map +1 -0
  32. package/dist/spec/core/src/api/exceptions/types.js +3 -0
  33. package/dist/spec/core/src/api/exceptions/types.js.map +1 -0
  34. package/dist/spec/core/src/api/index.js +8 -0
  35. package/dist/spec/core/src/api/index.js.map +1 -0
  36. package/dist/spec/core/src/api/initialize.js +27 -0
  37. package/dist/spec/core/src/api/initialize.js.map +1 -0
  38. package/dist/spec/core/src/api/logs/index.js +6 -0
  39. package/dist/spec/core/src/api/logs/index.js.map +1 -0
  40. package/dist/spec/core/src/api/logs/initialize.js +54 -0
  41. package/dist/spec/core/src/api/logs/initialize.js.map +1 -0
  42. package/dist/spec/core/src/api/logs/initialize.test.js +82 -0
  43. package/dist/spec/core/src/api/logs/initialize.test.js.map +1 -0
  44. package/dist/spec/core/src/api/logs/types.js +3 -0
  45. package/dist/spec/core/src/api/logs/types.js.map +1 -0
  46. package/dist/spec/core/src/api/measurements/index.js +6 -0
  47. package/dist/spec/core/src/api/measurements/index.js.map +1 -0
  48. package/dist/spec/core/src/api/measurements/initialize.js +50 -0
  49. package/dist/spec/core/src/api/measurements/initialize.js.map +1 -0
  50. package/dist/spec/core/src/api/measurements/initialize.test.js +117 -0
  51. package/dist/spec/core/src/api/measurements/initialize.test.js.map +1 -0
  52. package/dist/spec/core/src/api/measurements/types.js +3 -0
  53. package/dist/spec/core/src/api/measurements/types.js.map +1 -0
  54. package/dist/spec/core/src/api/meta/index.js +6 -0
  55. package/dist/spec/core/src/api/meta/index.js.map +1 -0
  56. package/dist/spec/core/src/api/meta/initialize.js +49 -0
  57. package/dist/spec/core/src/api/meta/initialize.js.map +1 -0
  58. package/dist/spec/core/src/api/meta/types.js +3 -0
  59. package/dist/spec/core/src/api/meta/types.js.map +1 -0
  60. package/dist/spec/core/src/api/traces/index.js +6 -0
  61. package/dist/spec/core/src/api/traces/index.js.map +1 -0
  62. package/dist/spec/core/src/api/traces/initialize.js +49 -0
  63. package/dist/spec/core/src/api/traces/initialize.js.map +1 -0
  64. package/dist/spec/core/src/api/traces/types.js +3 -0
  65. package/dist/spec/core/src/api/traces/types.js.map +1 -0
  66. package/dist/spec/core/src/api/types.js +3 -0
  67. package/dist/spec/core/src/api/types.js.map +1 -0
  68. package/dist/spec/core/src/config/const.js +5 -0
  69. package/dist/spec/core/src/config/const.js.map +1 -0
  70. package/dist/spec/core/src/config/index.js +6 -0
  71. package/dist/spec/core/src/config/index.js.map +1 -0
  72. package/dist/spec/core/src/config/types.js +3 -0
  73. package/dist/spec/core/src/config/types.js.map +1 -0
  74. package/dist/spec/core/src/extensions/baseExtension.js +57 -0
  75. package/dist/spec/core/src/extensions/baseExtension.js.map +1 -0
  76. package/dist/spec/core/src/extensions/index.js +6 -0
  77. package/dist/spec/core/src/extensions/index.js.map +1 -0
  78. package/dist/spec/core/src/extensions/types.js +3 -0
  79. package/dist/spec/core/src/extensions/types.js.map +1 -0
  80. package/dist/spec/core/src/faro.test.js +40 -0
  81. package/dist/spec/core/src/faro.test.js.map +1 -0
  82. package/dist/spec/core/src/globalObject/globalObject.js +6 -0
  83. package/dist/spec/core/src/globalObject/globalObject.js.map +1 -0
  84. package/dist/spec/core/src/globalObject/index.js +6 -0
  85. package/dist/spec/core/src/globalObject/index.js.map +1 -0
  86. package/dist/spec/core/src/index.js +75 -0
  87. package/dist/spec/core/src/index.js.map +1 -0
  88. package/dist/spec/core/src/initialize.js +32 -0
  89. package/dist/spec/core/src/initialize.js.map +1 -0
  90. package/dist/spec/core/src/instrumentations/base.js +31 -0
  91. package/dist/spec/core/src/instrumentations/base.js.map +1 -0
  92. package/dist/spec/core/src/instrumentations/index.js +10 -0
  93. package/dist/spec/core/src/instrumentations/index.js.map +1 -0
  94. package/dist/spec/core/src/instrumentations/initialize.js +71 -0
  95. package/dist/spec/core/src/instrumentations/initialize.js.map +1 -0
  96. package/dist/spec/core/src/instrumentations/registerInitial.js +9 -0
  97. package/dist/spec/core/src/instrumentations/registerInitial.js.map +1 -0
  98. package/dist/spec/core/src/instrumentations/types.js +3 -0
  99. package/dist/spec/core/src/instrumentations/types.js.map +1 -0
  100. package/dist/spec/core/src/internalLogger/const.js +22 -0
  101. package/dist/spec/core/src/internalLogger/const.js.map +1 -0
  102. package/dist/spec/core/src/internalLogger/createInternalLogger.js +65 -0
  103. package/dist/spec/core/src/internalLogger/createInternalLogger.js.map +1 -0
  104. package/dist/spec/core/src/internalLogger/index.js +13 -0
  105. package/dist/spec/core/src/internalLogger/index.js.map +1 -0
  106. package/dist/spec/core/src/internalLogger/initialize.js +12 -0
  107. package/dist/spec/core/src/internalLogger/initialize.js.map +1 -0
  108. package/dist/spec/core/src/internalLogger/types.js +3 -0
  109. package/dist/spec/core/src/internalLogger/types.js.map +1 -0
  110. package/dist/spec/core/src/metas/index.js +8 -0
  111. package/dist/spec/core/src/metas/index.js.map +1 -0
  112. package/dist/spec/core/src/metas/initialize.js +52 -0
  113. package/dist/spec/core/src/metas/initialize.js.map +1 -0
  114. package/dist/spec/core/src/metas/initialize.test.js +20 -0
  115. package/dist/spec/core/src/metas/initialize.test.js.map +1 -0
  116. package/dist/spec/core/src/metas/registerInitial.js +42 -0
  117. package/dist/spec/core/src/metas/registerInitial.js.map +1 -0
  118. package/dist/spec/core/src/metas/types.js +3 -0
  119. package/dist/spec/core/src/metas/types.js.map +1 -0
  120. package/dist/spec/core/src/sdk/const.js +5 -0
  121. package/dist/spec/core/src/sdk/const.js.map +1 -0
  122. package/dist/spec/core/src/sdk/faroGlobalObject.js +23 -0
  123. package/dist/spec/core/src/sdk/faroGlobalObject.js.map +1 -0
  124. package/dist/spec/core/src/sdk/index.js +13 -0
  125. package/dist/spec/core/src/sdk/index.js.map +1 -0
  126. package/dist/spec/core/src/sdk/internalFaroGlobalObject.js +29 -0
  127. package/dist/spec/core/src/sdk/internalFaroGlobalObject.js.map +1 -0
  128. package/dist/spec/core/src/sdk/registerFaro.js +25 -0
  129. package/dist/spec/core/src/sdk/registerFaro.js.map +1 -0
  130. package/dist/spec/core/src/sdk/types.js +3 -0
  131. package/dist/spec/core/src/sdk/types.js.map +1 -0
  132. package/dist/spec/core/src/semantic.js +12 -0
  133. package/dist/spec/core/src/semantic.js.map +1 -0
  134. package/dist/spec/core/src/testUtils/index.js +14 -0
  135. package/dist/spec/core/src/testUtils/index.js.map +1 -0
  136. package/dist/spec/core/src/testUtils/mockConfig.js +25 -0
  137. package/dist/spec/core/src/testUtils/mockConfig.js.map +1 -0
  138. package/dist/spec/core/src/testUtils/mockInternalLogger.js +12 -0
  139. package/dist/spec/core/src/testUtils/mockInternalLogger.js.map +1 -0
  140. package/dist/spec/core/src/testUtils/mockStacktraceParser.js +21 -0
  141. package/dist/spec/core/src/testUtils/mockStacktraceParser.js.map +1 -0
  142. package/dist/spec/core/src/testUtils/mockTransport.js +44 -0
  143. package/dist/spec/core/src/testUtils/mockTransport.js.map +1 -0
  144. package/dist/spec/core/src/testUtils/testPromise.js +15 -0
  145. package/dist/spec/core/src/testUtils/testPromise.js.map +1 -0
  146. package/dist/spec/core/src/transports/base.js +31 -0
  147. package/dist/spec/core/src/transports/base.js.map +1 -0
  148. package/dist/spec/core/src/transports/const.js +20 -0
  149. package/dist/spec/core/src/transports/const.js.map +1 -0
  150. package/dist/spec/core/src/transports/index.js +15 -0
  151. package/dist/spec/core/src/transports/index.js.map +1 -0
  152. package/dist/spec/core/src/transports/initialize.js +151 -0
  153. package/dist/spec/core/src/transports/initialize.js.map +1 -0
  154. package/dist/spec/core/src/transports/registerInitial.js +11 -0
  155. package/dist/spec/core/src/transports/registerInitial.js.map +1 -0
  156. package/dist/spec/core/src/transports/transports.test.js +139 -0
  157. package/dist/spec/core/src/transports/transports.test.js.map +1 -0
  158. package/dist/spec/core/src/transports/types.js +3 -0
  159. package/dist/spec/core/src/transports/types.js.map +1 -0
  160. package/dist/spec/core/src/transports/utils.js +13 -0
  161. package/dist/spec/core/src/transports/utils.js.map +1 -0
  162. package/dist/spec/core/src/unpatchedConsole/const.js +16 -0
  163. package/dist/spec/core/src/unpatchedConsole/const.js.map +1 -0
  164. package/dist/spec/core/src/unpatchedConsole/index.js +9 -0
  165. package/dist/spec/core/src/unpatchedConsole/index.js.map +1 -0
  166. package/dist/spec/core/src/unpatchedConsole/initialize.js +12 -0
  167. package/dist/spec/core/src/unpatchedConsole/initialize.js.map +1 -0
  168. package/dist/spec/core/src/unpatchedConsole/types.js +3 -0
  169. package/dist/spec/core/src/unpatchedConsole/types.js.map +1 -0
  170. package/dist/spec/core/src/utils/baseObject.js +3 -0
  171. package/dist/spec/core/src/utils/baseObject.js.map +1 -0
  172. package/dist/spec/core/src/utils/deepEqual.js +62 -0
  173. package/dist/spec/core/src/utils/deepEqual.js.map +1 -0
  174. package/dist/spec/core/src/utils/deepEqual.test.js +103 -0
  175. package/dist/spec/core/src/utils/deepEqual.test.js.map +1 -0
  176. package/dist/spec/core/src/utils/getCurrentTimestamp.js +8 -0
  177. package/dist/spec/core/src/utils/getCurrentTimestamp.js.map +1 -0
  178. package/dist/spec/core/src/utils/index.js +47 -0
  179. package/dist/spec/core/src/utils/index.js.map +1 -0
  180. package/dist/spec/core/src/utils/is.js +53 -0
  181. package/dist/spec/core/src/utils/is.js.map +1 -0
  182. package/dist/spec/core/src/utils/logLevels.js +22 -0
  183. package/dist/spec/core/src/utils/logLevels.js.map +1 -0
  184. package/dist/spec/core/src/utils/noop.js +6 -0
  185. package/dist/spec/core/src/utils/noop.js.map +1 -0
  186. package/dist/spec/core/src/utils/promiseBuffer.js +43 -0
  187. package/dist/spec/core/src/utils/promiseBuffer.js.map +1 -0
  188. package/dist/spec/core/src/utils/promiseBuffer.test.js +146 -0
  189. package/dist/spec/core/src/utils/promiseBuffer.test.js.map +1 -0
  190. package/dist/spec/core/src/utils/shortId.js +12 -0
  191. package/dist/spec/core/src/utils/shortId.js.map +1 -0
  192. package/dist/spec/core/src/version.js +6 -0
  193. package/dist/spec/core/src/version.js.map +1 -0
  194. package/dist/types/core/src/api/events/index.d.ts +2 -0
  195. package/dist/types/core/src/api/events/initialize.d.ts +8 -0
  196. package/dist/types/core/src/api/events/initialize.test.d.ts +1 -0
  197. package/dist/types/core/src/api/events/types.d.ts +15 -0
  198. package/dist/types/core/src/api/exceptions/const.d.ts +1 -0
  199. package/dist/types/core/src/api/exceptions/index.d.ts +3 -0
  200. package/dist/types/core/src/api/exceptions/initialize.d.ts +8 -0
  201. package/dist/types/core/src/api/exceptions/initialize.test.d.ts +1 -0
  202. package/dist/types/core/src/api/exceptions/types.d.ts +32 -0
  203. package/dist/types/core/src/api/index.d.ts +9 -0
  204. package/dist/types/core/src/api/initialize.d.ts +7 -0
  205. package/dist/types/core/src/api/logs/index.d.ts +2 -0
  206. package/dist/types/core/src/api/logs/initialize.d.ts +8 -0
  207. package/dist/types/core/src/api/logs/initialize.test.d.ts +1 -0
  208. package/dist/types/core/src/api/logs/types.d.ts +18 -0
  209. package/dist/types/core/src/api/measurements/index.d.ts +2 -0
  210. package/dist/types/core/src/api/measurements/initialize.d.ts +8 -0
  211. package/dist/types/core/src/api/measurements/initialize.test.d.ts +1 -0
  212. package/dist/types/core/src/api/measurements/types.d.ts +17 -0
  213. package/dist/types/core/src/api/meta/index.d.ts +2 -0
  214. package/dist/types/core/src/api/meta/initialize.d.ts +7 -0
  215. package/dist/types/core/src/api/meta/types.d.ts +10 -0
  216. package/dist/types/core/src/api/traces/index.d.ts +2 -0
  217. package/dist/types/core/src/api/traces/initialize.d.ts +7 -0
  218. package/dist/types/core/src/api/traces/types.d.ts +20 -0
  219. package/dist/types/core/src/api/types.d.ts +8 -0
  220. package/dist/types/core/src/config/const.d.ts +1 -0
  221. package/dist/types/core/src/config/index.d.ts +2 -0
  222. package/dist/types/core/src/config/types.d.ts +27 -0
  223. package/dist/types/core/src/extensions/baseExtension.d.ts +15 -0
  224. package/dist/types/core/src/extensions/index.d.ts +2 -0
  225. package/dist/types/core/src/extensions/types.d.ts +16 -0
  226. package/dist/types/core/src/faro.test.d.ts +1 -0
  227. package/dist/types/core/src/globalObject/globalObject.d.ts +7 -0
  228. package/dist/types/core/src/globalObject/index.d.ts +2 -0
  229. package/dist/types/core/src/index.d.ts +24 -0
  230. package/dist/types/core/src/initialize.d.ts +3 -0
  231. package/dist/types/core/src/instrumentations/base.d.ts +9 -0
  232. package/dist/types/core/src/instrumentations/index.d.ts +4 -0
  233. package/dist/types/core/src/instrumentations/initialize.d.ts +8 -0
  234. package/dist/types/core/src/instrumentations/registerInitial.d.ts +2 -0
  235. package/dist/types/core/src/instrumentations/types.d.ts +14 -0
  236. package/dist/types/core/src/internalLogger/const.d.ts +11 -0
  237. package/dist/types/core/src/internalLogger/createInternalLogger.d.ts +4 -0
  238. package/dist/types/core/src/internalLogger/index.d.ts +4 -0
  239. package/dist/types/core/src/internalLogger/initialize.d.ts +5 -0
  240. package/dist/types/core/src/internalLogger/types.d.ts +7 -0
  241. package/dist/types/core/src/metas/index.d.ts +3 -0
  242. package/dist/types/core/src/metas/initialize.d.ts +5 -0
  243. package/dist/types/core/src/metas/initialize.test.d.ts +1 -0
  244. package/dist/types/core/src/metas/registerInitial.d.ts +2 -0
  245. package/dist/types/core/src/metas/types.d.ts +67 -0
  246. package/dist/types/core/src/sdk/const.d.ts +1 -0
  247. package/dist/types/core/src/sdk/faroGlobalObject.d.ts +2 -0
  248. package/dist/types/core/src/sdk/index.d.ts +4 -0
  249. package/dist/types/core/src/sdk/internalFaroGlobalObject.d.ts +4 -0
  250. package/dist/types/core/src/sdk/registerFaro.d.ts +10 -0
  251. package/dist/types/core/src/sdk/types.d.ts +18 -0
  252. package/dist/types/core/src/semantic.d.ts +8 -0
  253. package/dist/types/core/src/testUtils/index.d.ts +6 -0
  254. package/dist/types/core/src/testUtils/mockConfig.d.ts +2 -0
  255. package/dist/types/core/src/testUtils/mockInternalLogger.d.ts +2 -0
  256. package/dist/types/core/src/testUtils/mockStacktraceParser.d.ts +2 -0
  257. package/dist/types/core/src/testUtils/mockTransport.d.ts +12 -0
  258. package/dist/types/core/src/testUtils/testPromise.d.ts +7 -0
  259. package/dist/types/core/src/transports/base.d.ts +6 -0
  260. package/dist/types/core/src/transports/const.d.ts +8 -0
  261. package/dist/types/core/src/transports/index.d.ts +6 -0
  262. package/dist/types/core/src/transports/initialize.d.ts +8 -0
  263. package/dist/types/core/src/transports/registerInitial.d.ts +2 -0
  264. package/dist/types/core/src/transports/transports.test.d.ts +1 -0
  265. package/dist/types/core/src/transports/types.d.ts +37 -0
  266. package/dist/types/core/src/transports/utils.d.ts +2 -0
  267. package/dist/types/core/src/unpatchedConsole/const.d.ts +2 -0
  268. package/dist/types/core/src/unpatchedConsole/index.d.ts +3 -0
  269. package/dist/types/core/src/unpatchedConsole/initialize.d.ts +4 -0
  270. package/dist/types/core/src/unpatchedConsole/types.d.ts +1 -0
  271. package/dist/types/core/src/utils/baseObject.d.ts +6 -0
  272. package/dist/types/core/src/utils/deepEqual.d.ts +1 -0
  273. package/dist/types/core/src/utils/deepEqual.test.d.ts +1 -0
  274. package/dist/types/core/src/utils/getCurrentTimestamp.d.ts +1 -0
  275. package/dist/types/core/src/utils/index.d.ts +10 -0
  276. package/dist/types/core/src/utils/is.d.ts +31 -0
  277. package/dist/types/core/src/utils/logLevels.d.ts +10 -0
  278. package/dist/types/core/src/utils/noop.d.ts +1 -0
  279. package/dist/types/core/src/utils/promiseBuffer.d.ts +14 -0
  280. package/dist/types/core/src/utils/promiseBuffer.test.d.ts +1 -0
  281. package/dist/types/core/src/utils/shortId.d.ts +1 -0
  282. package/dist/types/core/src/version.d.ts +1 -0
  283. package/dist/types/metas/types.d.ts +6 -0
  284. package/dist/types/testUtils/mockTransport.d.ts +2 -2
  285. package/dist/types/transports/base.d.ts +1 -1
  286. package/dist/types/transports/types.d.ts +1 -1
  287. package/dist/types/version.d.ts +1 -1
  288. package/package.json +4 -4
@@ -1 +1 @@
1
- var GrafanaFaroCore=function(e){"use strict";function n(e,n){return typeof e===n}function t(e,n){return Object.prototype.toString.call(e)===`[object ${n}]`}function r(e,n){try{return e instanceof n}catch(e){return!1}}const o=e=>n(e,"undefined"),a=e=>n(e,"null"),i=e=>n(e,"string"),s=e=>n(e,"number")&&!isNaN(e)||n(e,"bigint"),u=e=>!a(e)&&n(e,"object"),l=e=>n(e,"function"),g=e=>t(e,"Array"),c=!o(Event),d="undefined"!=typeof Error,p="undefined"!=typeof Element,f="undefined"!=typeof Map;function m(e,t){if(e===t)return!0;if(n(e,"number")&&isNaN(e))return n(t,"number")&&isNaN(t);const r=g(e),o=g(t);if(r!==o)return!1;if(r&&o){const n=e.length;if(n!==t.length)return!1;for(let r=n;0!=r--;)if(!m(e[r],t[r]))return!1;return!0}const a=u(e),i=u(t);if(a!==i)return!1;if(e&&t&&a&&i){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;for(let r of n)if(!m(e[r],t[r]))return!1;return!0}return!1}function b(){return(new Date).toISOString()}var v;e.LogLevel=void 0,(v=e.LogLevel||(e.LogLevel={})).TRACE="trace",v.DEBUG="debug",v.INFO="info",v.LOG="log",v.WARN="warn",v.ERROR="error";const y=e.LogLevel.LOG,E=[e.LogLevel.TRACE,e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.LOG,e.LogLevel.WARN,e.LogLevel.ERROR];function h(){}const I="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";var L;e.TransportItemType=void 0,(L=e.TransportItemType||(e.TransportItemType={})).EXCEPTION="exception",L.LOG="log",L.MEASUREMENT="measurement",L.TRACE="trace",L.EVENT="event";const T={[e.TransportItemType.EXCEPTION]:"exceptions",[e.TransportItemType.LOG]:"logs",[e.TransportItemType.MEASUREMENT]:"measurements",[e.TransportItemType.TRACE]:"traces",[e.TransportItemType.EVENT]:"events"};function O(n){return t=>{if(t.type===e.TransportItemType.EXCEPTION&&t.payload){const e=t.payload,r=`${e.type}: ${e.value}`;if(function(e,n){return e.some((e=>i(e)?n.includes(e):!!n.match(e)))}(n,r))return null}return t}}var R;e.InternalLoggerLevel=void 0,(R=e.InternalLoggerLevel||(e.InternalLoggerLevel={}))[R.OFF=0]="OFF",R[R.ERROR=1]="ERROR",R[R.WARN=2]="WARN",R[R.INFO=3]="INFO",R[R.VERBOSE=4]="VERBOSE";const S={debug:h,error:h,info:h,prefix:"Faro",warn:h},x=e.InternalLoggerLevel.ERROR,A=Object.assign({},console);let j=A;function N(e){var n;return j=null!==(n=e.unpatchedConsole)&&void 0!==n?n:j,j}function k(n=A,t=x){const r=S;return t>e.InternalLoggerLevel.OFF&&(r.error=t>=e.InternalLoggerLevel.ERROR?function(...e){n.error(`${r.prefix}\n`,...e)}:h,r.warn=t>=e.InternalLoggerLevel.WARN?function(...e){n.warn(`${r.prefix}\n`,...e)}:h,r.info=t>=e.InternalLoggerLevel.INFO?function(...e){n.info(`${r.prefix}\n`,...e)}:h,r.debug=t>=e.InternalLoggerLevel.VERBOSE?function(...e){n.debug(`${r.prefix}\n`,...e)}:h),r}let C=S;function P(e,n){return C=k(e,n.internalLoggerLevel),C}class w{constructor(){this.unpatchedConsole=A,this.internalLogger=S,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}const F="Error";let $;function D(n,t,r,o,i){t.debug("Initializing API");const s=function(n,t,r,o,a){let i;return t.debug("Initializing traces API"),{getOTEL:()=>i,getTraceContext:()=>{const e=null==i?void 0:i.trace.getSpanContext(i.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,n)=>{t.debug("Initializing OpenTelemetry"),i={trace:e,context:n}},isOTELInitialized:()=>!!i,pushTraces:n=>{try{const r={type:e.TransportItemType.TRACE,payload:n,meta:o.value};t.debug("Pushing trace\n",r),a.execute(r)}catch(e){t.error("Error pushing trace\n",e)}}}}(0,t,0,o,i);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},s),function(n,t,r,o,i,s){var u;t.debug("Initializing exceptions API");let l=null;$=null!==(u=r.parseStacktrace)&&void 0!==u?u:$;const g=e=>{t.debug("Changing stacktrace parser"),$=null!=e?e:$};return g(r.parseStacktrace),{changeStacktraceParser:g,getStacktraceParser:()=>$,pushError:(n,{skipDedupe:u,stackFrames:g,type:c}={})=>{c=c||n.name||F;const d={meta:o.value,payload:{type:c,value:n.message,timestamp:b(),trace:s.getTraceContext()},type:e.TransportItemType.EXCEPTION};(null==(g=null!=g?g:n.stack?null==$?void 0:$(n).frames:void 0)?void 0:g.length)&&(d.payload.stacktrace={frames:g});const p={type:d.payload.type,value:d.payload.value,stackTrace:d.payload.stacktrace};u||!r.dedupe||a(l)||!m(p,l)?(l=p,t.debug("Pushing exception\n",d),i.execute(d)):t.debug("Skipping error push because it is the same as the last one\n",d.payload)}}}(0,t,r,o,i,s)),function(e,n,t,r,o){let a,i,s;n.debug("Initializing meta API");const u=e=>{i&&r.remove(i),i={user:e},r.add(i)},l=e=>{a&&r.remove(a),a={session:e},r.add(a)};return{setUser:u,resetUser:u,setSession:l,resetSession:l,getSession:()=>r.value.session,setView:e=>{s&&r.remove(s),s={view:e},r.add(s)},getView:()=>r.value.view}}(0,t,0,o)),function(n,t,r,o,i,s){t.debug("Initializing logs API");let u=null;return{pushLog:(n,{context:l,level:g,skipDedupe:c}={})=>{try{const d={type:e.TransportItemType.LOG,payload:{message:n.map((e=>{try{return String(e)}catch(e){return""}})).join(" "),level:null!=g?g:y,context:null!=l?l:{},timestamp:b(),trace:s.getTraceContext()},meta:o.value},p={message:d.payload.message,level:d.payload.level,context:d.payload.context};if(!c&&r.dedupe&&!a(u)&&m(p,u))return void t.debug("Skipping log push because it is the same as the last one\n",d.payload);u=p,t.debug("Pushing log\n",d),i.execute(d)}catch(e){t.error("Error pushing log\n",e)}}}}(0,t,r,o,i,s)),function(n,t,r,o,i,s){t.debug("Initializing measurements API");let u=null;return{pushMeasurement:(n,{skipDedupe:l}={})=>{var g;try{const c={type:e.TransportItemType.MEASUREMENT,payload:Object.assign(Object.assign({},n),{trace:s.getTraceContext(),timestamp:null!==(g=n.timestamp)&&void 0!==g?g:b()}),meta:o.value},d={type:c.payload.type,values:c.payload.values};if(!l&&r.dedupe&&!a(u)&&m(d,u))return void t.debug("Skipping measurement push because it is the same as the last one\n",c.payload);u=d,t.debug("Pushing measurement\n",c),i.execute(c)}catch(e){t.error("Error pushing measurement\n",e)}}}}(0,t,r,o,i,s)),function(n,t,r,o,i,s){let u=null;return{pushEvent:(n,l,g,{skipDedupe:c}={})=>{try{const d={meta:o.value,payload:{name:n,domain:null!=g?g:r.eventDomain,attributes:l,timestamp:b(),trace:s.getTraceContext()},type:e.TransportItemType.EVENT},p={name:d.payload.name,attributes:d.payload.attributes,domain:d.payload.domain};if(!c&&r.dedupe&&!a(u)&&m(p,u))return void t.debug("Skipping event push because it is the same as the last one\n",d.payload);u=p,t.debug("Pushing event\n",d),i.execute(d)}catch(e){t.error("Error pushing event",e)}}}}(0,t,r,o,i,s))}const G="undefined"==typeof window?global:window;const B="1.0.1";const z="_faroInternal";function M(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(G,z,{configurable:!1,enumerable:!1,writable:!1,value:e}))}function U(){return z in G}function V(n,t,r,o,a,i,s){return t.debug("Initializing Faro"),e.faro={api:i,config:r,instrumentations:s,internalLogger:t,metas:o,pause:a.pause,transports:a,unpatchedConsole:n,unpause:a.unpause},M(e.faro),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in G)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(G,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(e.faro),e.faro}e.faro={};return e.BaseExtension=w,e.BaseInstrumentation=class extends w{constructor(){super(...arguments),this.api={},this.transports={}}},e.BaseTransport=class extends w{getIgnoreUrls(){return[]}},e.Conventions={EventNames:{CLICK:"click",NAVIGATION:"navigation",SESSION_START:"session_start",VIEW_CHANGED:"view_changed"}},e.VERSION=B,e.allLogLevels=E,e.createInternalLogger=k,e.createPromiseBuffer=function(e){const{size:n,concurrency:t}=e,r=[];let o=0;const a=()=>{if(o<t&&r.length){const{producer:e,resolve:n,reject:t}=r.shift();o++,e().then((e=>{o--,a(),n(e)}),(e=>{o--,a(),t(e)}))}};return{add:e=>{if(r.length+o>=n)throw new Error("Task buffer full");return new Promise(((n,t)=>{r.push({producer:e,resolve:n,reject:t}),a()}))}}},e.deepEqual=m,e.defaultExceptionType=F,e.defaultGlobalObjectKey="faro",e.defaultInternalLoggerLevel=x,e.defaultLogLevel=y,e.defaultUnpatchedConsole=A,e.genShortID=function(e=10){return Array.from(Array(e)).map((()=>I[Math.floor(Math.random()*I.length)])).join("")},e.getCurrentTimestamp=b,e.getInternalFaroFromGlobalObject=function(){return G[z]},e.getTransportBody=function(n){return{[T[n.type]]:n.type===e.TransportItemType.TRACE?n.payload:[n.payload],meta:n.meta}},e.globalObject=G,e.initializeFaro=function(e){const n=N(e),t=P(n,e);if(U()&&!e.isolate)return void t.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');t.debug("Initializing");const r=function(e,n,t){let r=[],o=[];const a=()=>r.reduce(((e,n)=>Object.assign(e,l(n)?n():n)),{}),i=()=>{if(o.length){const e=a();o.forEach((n=>n(e)))}};return{add:(...e)=>{n.debug("Adding metas\n",e),r.push(...e),i()},remove:(...e)=>{n.debug("Removing metas\n",e),r=r.filter((n=>!e.includes(n))),i()},addListener:e=>{n.debug("Adding metas listener\n",e),o.push(e)},removeListener:e=>{n.debug("Removing metas listener\n",e),o=o.filter((n=>n!==e))},get value(){return a()}}}(0,t),o=function(e,n,t,r){n.debug("Initializing transports");const o=[];let a=t.paused,i=[];return{add:(...a)=>{n.debug("Adding transports"),a.forEach((a=>{n.debug(`Adding "${a.name}" transport`),o.some((e=>e===a))?n.warn(`Transport ${a.name} is already added`):(a.unpatchedConsole=e,a.internalLogger=n,a.config=t,a.metas=r,o.push(a))}))},addBeforeSendHooks:(...e)=>{n.debug("Adding beforeSendHooks\n",i),e.forEach((e=>{e&&i.push(e)}))},addIgnoreErrorsPatterns:(...e)=>{n.debug("Adding ignoreErrorsPatterns\n",e),e.forEach((e=>{e&&i.push(O(e))}))},getBeforeSendHooks:()=>[...i],execute:e=>{if(!a){let t=e;for(const e of i){const n=e(t);if(null===n)return;t=n}for(const e of o)n.debug(`Transporting item using ${e.name}\n`,t),e.send(t)}},isPaused:()=>a,pause:()=>{n.debug("Pausing transports"),a=!0},remove:(...e)=>{n.debug("Removing transports"),e.forEach((e=>{n.debug(`Removing "${e.name}" transport`);const t=o.indexOf(e);-1!==t?o.splice(t,1):n.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{i.filter((n=>!e.includes(n)))},get transports(){return[...o]},unpause:()=>{n.debug("Unpausing transports"),a=!1}}}(n,t,e,r),a=D(0,t,e,r,o),i=function(e,n,t,r,o,a){n.debug("Initializing instrumentations");const i=[];return{add:(...s)=>{n.debug("Adding instrumentations"),s.forEach((s=>{n.debug(`Adding "${s.name}" instrumentation`),i.some((e=>e.name===s.name))?n.warn(`Instrumentation ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=n,s.config=t,s.metas=r,s.transports=o,s.api=a,i.push(s),s.initialize())}))},get instrumentations(){return[...i]},remove:(...e)=>{n.debug("Removing instrumentations"),e.forEach((e=>{var t,r;n.debug(`Removing "${e.name}" instrumentation`);const o=i.reduce(((n,t,r)=>null===n&&t.name===e.name?r:null),null);o?(null===(r=(t=i[o]).destroy)||void 0===r||r.call(t),i.splice(o,1)):n.warn(`Instrumentation "${e.name}" is not added`)}))}}}(n,t,e,r,o,a),s=V(n,t,e,r,o,a,i);return function(e){var n;const t={sdk:{name:"@grafana/faro-core",version:B,integrations:e.config.instrumentations.map((({name:e,version:n})=>({name:e,version:n})))}};e.config.session&&e.api.setSession(e.config.session),e.config.app&&(t.app=e.config.app),e.config.user&&(t.user=e.config.user),e.config.view&&(t.view=e.config.view),e.metas.add(t,...null!==(n=e.config.metas)&&void 0!==n?n:[])}(s),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend),e.transports.addIgnoreErrorsPatterns(e.config.ignoreErrors)}(s),function(e){e.instrumentations.add(...e.config.instrumentations)}(s),s},e.internalGlobalObjectKey=z,e.isArray=g,e.isBoolean=e=>n(e,"boolean"),e.isDomError=e=>t(e,"DOMError"),e.isDomException=e=>t(e,"DOMException"),e.isElement=e=>p&&r(e,Element),e.isElementDefined=p,e.isError=e=>d&&r(e,Error),e.isErrorDefined=d,e.isErrorEvent=e=>t(e,"ErrorEvent"),e.isEvent=e=>c&&r(e,Event),e.isEventDefined=c,e.isFunction=l,e.isInstanceOf=r,e.isInt=e=>s(e)&&Number.isInteger(e),e.isInternalFaroOnGlobalObject=U,e.isMap=e=>f&&r(e,Map),e.isMapDefined=f,e.isNull=a,e.isNumber=s,e.isObject=u,e.isPrimitive=e=>!u(e)&&!l(e),e.isRegExp=e=>t(e,"RegExp"),e.isString=i,e.isSymbol=e=>n(e,"symbol"),e.isSyntheticEvent=e=>u(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e,e.isThenable=e=>l(null==e?void 0:e.then),e.isToString=t,e.isTypeof=n,e.isUndefined=o,e.noop=h,e.setInternalFaroOnGlobalObject=M,e.transportItemTypeToBodyKey=T,e}({});
1
+ var GrafanaFaroCore=function(e){"use strict";function n(e,n){return typeof e===n}function t(e,n){return Object.prototype.toString.call(e)===`[object ${n}]`}function r(e,n){try{return e instanceof n}catch(e){return!1}}const o=e=>n(e,"undefined"),a=e=>n(e,"null"),i=e=>n(e,"string"),s=e=>n(e,"number")&&!isNaN(e)||n(e,"bigint"),u=e=>!a(e)&&n(e,"object"),l=e=>n(e,"function"),g=e=>t(e,"Array"),c=!o(Event),d="undefined"!=typeof Error,p="undefined"!=typeof Element,f="undefined"!=typeof Map;function m(e,t){if(e===t)return!0;if(n(e,"number")&&isNaN(e))return n(t,"number")&&isNaN(t);const r=g(e),o=g(t);if(r!==o)return!1;if(r&&o){const n=e.length;if(n!==t.length)return!1;for(let r=n;0!=r--;)if(!m(e[r],t[r]))return!1;return!0}const a=u(e),i=u(t);if(a!==i)return!1;if(e&&t&&a&&i){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;for(let r of n)if(!m(e[r],t[r]))return!1;return!0}return!1}function b(){return(new Date).toISOString()}var v;e.LogLevel=void 0,(v=e.LogLevel||(e.LogLevel={})).TRACE="trace",v.DEBUG="debug",v.INFO="info",v.LOG="log",v.WARN="warn",v.ERROR="error";const y=e.LogLevel.LOG,E=[e.LogLevel.TRACE,e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.LOG,e.LogLevel.WARN,e.LogLevel.ERROR];function h(){}const I="abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789";var L;e.TransportItemType=void 0,(L=e.TransportItemType||(e.TransportItemType={})).EXCEPTION="exception",L.LOG="log",L.MEASUREMENT="measurement",L.TRACE="trace",L.EVENT="event";const T={[e.TransportItemType.EXCEPTION]:"exceptions",[e.TransportItemType.LOG]:"logs",[e.TransportItemType.MEASUREMENT]:"measurements",[e.TransportItemType.TRACE]:"traces",[e.TransportItemType.EVENT]:"events"};function O(n){return t=>{if(t.type===e.TransportItemType.EXCEPTION&&t.payload){const e=t.payload,r=`${e.type}: ${e.value}`;if(function(e,n){return e.some((e=>i(e)?n.includes(e):!!n.match(e)))}(n,r))return null}return t}}var R;e.InternalLoggerLevel=void 0,(R=e.InternalLoggerLevel||(e.InternalLoggerLevel={}))[R.OFF=0]="OFF",R[R.ERROR=1]="ERROR",R[R.WARN=2]="WARN",R[R.INFO=3]="INFO",R[R.VERBOSE=4]="VERBOSE";const S={debug:h,error:h,info:h,prefix:"Faro",warn:h},x=e.InternalLoggerLevel.ERROR,A=Object.assign({},console);let j=A;function N(e){var n;return j=null!==(n=e.unpatchedConsole)&&void 0!==n?n:j,j}function k(n=A,t=x){const r=S;return t>e.InternalLoggerLevel.OFF&&(r.error=t>=e.InternalLoggerLevel.ERROR?function(...e){n.error(`${r.prefix}\n`,...e)}:h,r.warn=t>=e.InternalLoggerLevel.WARN?function(...e){n.warn(`${r.prefix}\n`,...e)}:h,r.info=t>=e.InternalLoggerLevel.INFO?function(...e){n.info(`${r.prefix}\n`,...e)}:h,r.debug=t>=e.InternalLoggerLevel.VERBOSE?function(...e){n.debug(`${r.prefix}\n`,...e)}:h),r}let C=S;function P(e,n){return C=k(e,n.internalLoggerLevel),C}class w{constructor(){this.unpatchedConsole=A,this.internalLogger=S,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}const F="Error";let $;function D(n,t,r,o,i){t.debug("Initializing API");const s=function(n,t,r,o,a){let i;return t.debug("Initializing traces API"),{getOTEL:()=>i,getTraceContext:()=>{const e=null==i?void 0:i.trace.getSpanContext(i.context.active());return e?{trace_id:e.traceId,span_id:e.spanId}:void 0},initOTEL:(e,n)=>{t.debug("Initializing OpenTelemetry"),i={trace:e,context:n}},isOTELInitialized:()=>!!i,pushTraces:n=>{try{const r={type:e.TransportItemType.TRACE,payload:n,meta:o.value};t.debug("Pushing trace\n",r),a.execute(r)}catch(e){t.error("Error pushing trace\n",e)}}}}(0,t,0,o,i);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},s),function(n,t,r,o,i,s){var u;t.debug("Initializing exceptions API");let l=null;$=null!==(u=r.parseStacktrace)&&void 0!==u?u:$;const g=e=>{t.debug("Changing stacktrace parser"),$=null!=e?e:$};return g(r.parseStacktrace),{changeStacktraceParser:g,getStacktraceParser:()=>$,pushError:(n,{skipDedupe:u,stackFrames:g,type:c}={})=>{c=c||n.name||F;const d={meta:o.value,payload:{type:c,value:n.message,timestamp:b(),trace:s.getTraceContext()},type:e.TransportItemType.EXCEPTION};(null==(g=null!=g?g:n.stack?null==$?void 0:$(n).frames:void 0)?void 0:g.length)&&(d.payload.stacktrace={frames:g});const p={type:d.payload.type,value:d.payload.value,stackTrace:d.payload.stacktrace};u||!r.dedupe||a(l)||!m(p,l)?(l=p,t.debug("Pushing exception\n",d),i.execute(d)):t.debug("Skipping error push because it is the same as the last one\n",d.payload)}}}(0,t,r,o,i,s)),function(e,n,t,r,o){let a,i,s;n.debug("Initializing meta API");const u=e=>{i&&r.remove(i),i={user:e},r.add(i)},l=e=>{a&&r.remove(a),a={session:e},r.add(a)};return{setUser:u,resetUser:u,setSession:l,resetSession:l,getSession:()=>r.value.session,setView:e=>{s&&r.remove(s),s={view:e},r.add(s)},getView:()=>r.value.view}}(0,t,0,o)),function(n,t,r,o,i,s){t.debug("Initializing logs API");let u=null;return{pushLog:(n,{context:l,level:g,skipDedupe:c}={})=>{try{const d={type:e.TransportItemType.LOG,payload:{message:n.map((e=>{try{return String(e)}catch(e){return""}})).join(" "),level:null!=g?g:y,context:null!=l?l:{},timestamp:b(),trace:s.getTraceContext()},meta:o.value},p={message:d.payload.message,level:d.payload.level,context:d.payload.context};if(!c&&r.dedupe&&!a(u)&&m(p,u))return void t.debug("Skipping log push because it is the same as the last one\n",d.payload);u=p,t.debug("Pushing log\n",d),i.execute(d)}catch(e){t.error("Error pushing log\n",e)}}}}(0,t,r,o,i,s)),function(n,t,r,o,i,s){t.debug("Initializing measurements API");let u=null;return{pushMeasurement:(n,{skipDedupe:l}={})=>{var g;try{const c={type:e.TransportItemType.MEASUREMENT,payload:Object.assign(Object.assign({},n),{trace:s.getTraceContext(),timestamp:null!==(g=n.timestamp)&&void 0!==g?g:b()}),meta:o.value},d={type:c.payload.type,values:c.payload.values};if(!l&&r.dedupe&&!a(u)&&m(d,u))return void t.debug("Skipping measurement push because it is the same as the last one\n",c.payload);u=d,t.debug("Pushing measurement\n",c),i.execute(c)}catch(e){t.error("Error pushing measurement\n",e)}}}}(0,t,r,o,i,s)),function(n,t,r,o,i,s){let u=null;return{pushEvent:(n,l,g,{skipDedupe:c}={})=>{try{const d={meta:o.value,payload:{name:n,domain:null!=g?g:r.eventDomain,attributes:l,timestamp:b(),trace:s.getTraceContext()},type:e.TransportItemType.EVENT},p={name:d.payload.name,attributes:d.payload.attributes,domain:d.payload.domain};if(!c&&r.dedupe&&!a(u)&&m(p,u))return void t.debug("Skipping event push because it is the same as the last one\n",d.payload);u=p,t.debug("Pushing event\n",d),i.execute(d)}catch(e){t.error("Error pushing event",e)}}}}(0,t,r,o,i,s))}const G="undefined"==typeof window?global:window;const B="1.0.4";const z="_faroInternal";function M(e){e.config.isolate?e.internalLogger.debug("Skipping registering internal Faro instance on global object"):(e.internalLogger.debug("Registering internal Faro instance on global object"),Object.defineProperty(G,z,{configurable:!1,enumerable:!1,writable:!1,value:e}))}function U(){return z in G}function V(n,t,r,o,a,i,s){return t.debug("Initializing Faro"),e.faro={api:i,config:r,instrumentations:s,internalLogger:t,metas:o,pause:a.pause,transports:a,unpatchedConsole:n,unpause:a.unpause},M(e.faro),function(e){if(e.config.preventGlobalExposure)e.internalLogger.debug("Skipping registering public Faro instance in the global scope");else{if(e.internalLogger.debug(`Registering public faro reference in the global scope using "${e.config.globalObjectKey}" key`),e.config.globalObjectKey in G)return void e.internalLogger.warn(`Skipping global registration due to key "${e.config.globalObjectKey}" being used already. Please set "globalObjectKey" to something else or set "preventGlobalExposure" to "true"`);Object.defineProperty(G,e.config.globalObjectKey,{configurable:!1,writable:!1,value:e})}}(e.faro),e.faro}e.faro={};return e.BaseExtension=w,e.BaseInstrumentation=class extends w{constructor(){super(...arguments),this.api={},this.transports={}}},e.BaseTransport=class extends w{getIgnoreUrls(){return[]}},e.Conventions={EventNames:{CLICK:"click",NAVIGATION:"navigation",SESSION_START:"session_start",VIEW_CHANGED:"view_changed"}},e.VERSION=B,e.allLogLevels=E,e.createInternalLogger=k,e.createPromiseBuffer=function(e){const{size:n,concurrency:t}=e,r=[];let o=0;const a=()=>{if(o<t&&r.length){const{producer:e,resolve:n,reject:t}=r.shift();o++,e().then((e=>{o--,a(),n(e)}),(e=>{o--,a(),t(e)}))}};return{add:e=>{if(r.length+o>=n)throw new Error("Task buffer full");return new Promise(((n,t)=>{r.push({producer:e,resolve:n,reject:t}),a()}))}}},e.deepEqual=m,e.defaultExceptionType=F,e.defaultGlobalObjectKey="faro",e.defaultInternalLoggerLevel=x,e.defaultLogLevel=y,e.defaultUnpatchedConsole=A,e.genShortID=function(e=10){return Array.from(Array(e)).map((()=>I[Math.floor(Math.random()*I.length)])).join("")},e.getCurrentTimestamp=b,e.getInternalFaroFromGlobalObject=function(){return G[z]},e.getTransportBody=function(n){return{[T[n.type]]:n.type===e.TransportItemType.TRACE?n.payload:[n.payload],meta:n.meta}},e.globalObject=G,e.initializeFaro=function(e){const n=N(e),t=P(n,e);if(U()&&!e.isolate)return void t.error('Faro is already registered. Either add instrumentations, transports etc. to the global faro instance or use the "isolate" property');t.debug("Initializing");const r=function(e,n,t){let r=[],o=[];const a=()=>r.reduce(((e,n)=>Object.assign(e,l(n)?n():n)),{}),i=()=>{if(o.length){const e=a();o.forEach((n=>n(e)))}};return{add:(...e)=>{n.debug("Adding metas\n",e),r.push(...e),i()},remove:(...e)=>{n.debug("Removing metas\n",e),r=r.filter((n=>!e.includes(n))),i()},addListener:e=>{n.debug("Adding metas listener\n",e),o.push(e)},removeListener:e=>{n.debug("Removing metas listener\n",e),o=o.filter((n=>n!==e))},get value(){return a()}}}(0,t),o=function(e,n,t,r){n.debug("Initializing transports");const o=[];let a=t.paused,i=[];return{add:(...a)=>{n.debug("Adding transports"),a.forEach((a=>{n.debug(`Adding "${a.name}" transport`),o.some((e=>e===a))?n.warn(`Transport ${a.name} is already added`):(a.unpatchedConsole=e,a.internalLogger=n,a.config=t,a.metas=r,o.push(a))}))},addBeforeSendHooks:(...e)=>{n.debug("Adding beforeSendHooks\n",i),e.forEach((e=>{e&&i.push(e)}))},addIgnoreErrorsPatterns:(...e)=>{n.debug("Adding ignoreErrorsPatterns\n",e),e.forEach((e=>{e&&i.push(O(e))}))},getBeforeSendHooks:()=>[...i],execute:e=>{if(!a){let t=e;for(const e of i){const n=e(t);if(null===n)return;t=n}for(const e of o)n.debug(`Transporting item using ${e.name}\n`,t),e.send(t)}},isPaused:()=>a,pause:()=>{n.debug("Pausing transports"),a=!0},remove:(...e)=>{n.debug("Removing transports"),e.forEach((e=>{n.debug(`Removing "${e.name}" transport`);const t=o.indexOf(e);-1!==t?o.splice(t,1):n.warn(`Transport "${e.name}" is not added`)}))},removeBeforeSendHooks:(...e)=>{i.filter((n=>!e.includes(n)))},get transports(){return[...o]},unpause:()=>{n.debug("Unpausing transports"),a=!1}}}(n,t,e,r),a=D(0,t,e,r,o),i=function(e,n,t,r,o,a){n.debug("Initializing instrumentations");const i=[];return{add:(...s)=>{n.debug("Adding instrumentations"),s.forEach((s=>{n.debug(`Adding "${s.name}" instrumentation`),i.some((e=>e.name===s.name))?n.warn(`Instrumentation ${s.name} is already added`):(s.unpatchedConsole=e,s.internalLogger=n,s.config=t,s.metas=r,s.transports=o,s.api=a,i.push(s),s.initialize())}))},get instrumentations(){return[...i]},remove:(...e)=>{n.debug("Removing instrumentations"),e.forEach((e=>{var t,r;n.debug(`Removing "${e.name}" instrumentation`);const o=i.reduce(((n,t,r)=>null===n&&t.name===e.name?r:null),null);o?(null===(r=(t=i[o]).destroy)||void 0===r||r.call(t),i.splice(o,1)):n.warn(`Instrumentation "${e.name}" is not added`)}))}}}(n,t,e,r,o,a),s=V(n,t,e,r,o,a,i);return function(e){var n;const t={sdk:{name:"@grafana/faro-core",version:B,integrations:e.config.instrumentations.map((({name:e,version:n})=>({name:e,version:n})))}};e.config.session&&e.api.setSession(e.config.session),e.config.app&&(t.app=e.config.app),e.config.user&&(t.user=e.config.user),e.config.view&&(t.view=e.config.view),e.metas.add(t,...null!==(n=e.config.metas)&&void 0!==n?n:[])}(s),function(e){e.transports.add(...e.config.transports),e.transports.addBeforeSendHooks(e.config.beforeSend),e.transports.addIgnoreErrorsPatterns(e.config.ignoreErrors)}(s),function(e){e.instrumentations.add(...e.config.instrumentations)}(s),s},e.internalGlobalObjectKey=z,e.isArray=g,e.isBoolean=e=>n(e,"boolean"),e.isDomError=e=>t(e,"DOMError"),e.isDomException=e=>t(e,"DOMException"),e.isElement=e=>p&&r(e,Element),e.isElementDefined=p,e.isError=e=>d&&r(e,Error),e.isErrorDefined=d,e.isErrorEvent=e=>t(e,"ErrorEvent"),e.isEvent=e=>c&&r(e,Event),e.isEventDefined=c,e.isFunction=l,e.isInstanceOf=r,e.isInt=e=>s(e)&&Number.isInteger(e),e.isInternalFaroOnGlobalObject=U,e.isMap=e=>f&&r(e,Map),e.isMapDefined=f,e.isNull=a,e.isNumber=s,e.isObject=u,e.isPrimitive=e=>!u(e)&&!l(e),e.isRegExp=e=>t(e,"RegExp"),e.isString=i,e.isSymbol=e=>n(e,"symbol"),e.isSyntheticEvent=e=>u(e)&&"nativeEvent"in e&&"preventDefault"in e&&"stopPropagation"in e,e.isThenable=e=>l(null==e?void 0:e.then),e.isToString=t,e.isTypeof=n,e.isUndefined=o,e.noop=h,e.setInternalFaroOnGlobalObject=M,e.transportItemTypeToBodyKey=T,e}({});
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metas/types.ts"],"names":[],"mappings":"","sourcesContent":["export type MetaGetter<P = Partial<Meta>> = () => P;\n\nexport type MetaItem<P = Partial<Meta>> = P | MetaGetter<P>;\n\nexport type MetasListener = (value: Meta) => void;\n\nexport interface Metas {\n add: (...getters: MetaItem[]) => void;\n remove: (...getters: MetaItem[]) => void;\n addListener: (listener: MetasListener) => void;\n removeListener: (listener: MetasListener) => void;\n value: Meta;\n}\n\nexport type MetaAttributes = Record<string, string>;\n\nexport interface MetaSDKIntegration {\n name?: string;\n version?: string;\n}\n\nexport interface MetaSDK {\n name?: string;\n version?: string;\n integrations?: MetaSDKIntegration[];\n}\n\nexport interface MetaApp {\n name?: string;\n release?: string;\n version?: string;\n environment?: string;\n}\n\nexport interface MetaUser {\n email?: string;\n id?: string;\n username?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaSession {\n id?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaPage {\n id?: string;\n url?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaBrowser {\n name?: string;\n version?: string;\n os?: string;\n mobile?: boolean;\n userAgent?: string;\n language?: string;\n}\n\nexport interface MetaView {\n name: string;\n}\n\nexport interface Meta {\n sdk?: MetaSDK;\n app?: MetaApp;\n user?: MetaUser;\n session?: MetaSession;\n page?: MetaPage;\n browser?: MetaBrowser;\n view?: MetaView;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metas/types.ts"],"names":[],"mappings":"","sourcesContent":["export type MetaGetter<P = Partial<Meta>> = () => P;\n\nexport type MetaItem<P = Partial<Meta>> = P | MetaGetter<P>;\n\nexport type MetasListener = (value: Meta) => void;\n\nexport interface Metas {\n add: (...getters: MetaItem[]) => void;\n remove: (...getters: MetaItem[]) => void;\n addListener: (listener: MetasListener) => void;\n removeListener: (listener: MetasListener) => void;\n value: Meta;\n}\n\nexport type MetaAttributes = Record<string, string>;\n\nexport interface MetaSDKIntegration {\n name?: string;\n version?: string;\n}\n\nexport interface MetaSDK {\n name?: string;\n version?: string;\n integrations?: MetaSDKIntegration[];\n}\n\nexport interface MetaApp {\n name?: string;\n release?: string;\n version?: string;\n environment?: string;\n}\n\nexport interface MetaUser {\n email?: string;\n id?: string;\n username?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaSession {\n id?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaPage {\n id?: string;\n url?: string;\n attributes?: MetaAttributes;\n}\n\ninterface NavigatorUABrandVersion {\n brand?: string;\n version?: string;\n}\n\nexport interface MetaBrowser {\n name?: string;\n version?: string;\n os?: string;\n mobile?: boolean;\n userAgent?: string;\n language?: string;\n brands?: NavigatorUABrandVersion[] | string;\n}\n\nexport interface MetaView {\n name: string;\n}\n\nexport interface Meta {\n sdk?: MetaSDK;\n app?: MetaApp;\n user?: MetaUser;\n session?: MetaSession;\n page?: MetaPage;\n browser?: MetaBrowser;\n view?: MetaView;\n}\n"]}
@@ -17,6 +17,7 @@ var __extends = (this && this.__extends) || (function () {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.MockTransport = void 0;
19
19
  var transports_1 = require("../transports");
20
+ var utils_1 = require("../utils");
20
21
  var version_1 = require("../version");
21
22
  var MockTransport = /** @class */ (function (_super) {
22
23
  __extends(MockTransport, _super);
@@ -30,7 +31,9 @@ var MockTransport = /** @class */ (function (_super) {
30
31
  return _this;
31
32
  }
32
33
  MockTransport.prototype.send = function (item) {
33
- this.items.push(item);
34
+ var _a;
35
+ var items = (0, utils_1.isArray)(item) ? item : [item];
36
+ (_a = this.items).push.apply(_a, items);
34
37
  };
35
38
  MockTransport.prototype.getIgnoreUrls = function () {
36
39
  return this.ignoreURLs;
@@ -1 +1 @@
1
- {"version":3,"file":"mockTransport.js","sourceRoot":"","sources":["../../../src/testUtils/mockTransport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,4CAA8C;AAE9C,sCAAqC;AAErC;IAAmC,iCAAa;IAM9C,uBAAoB,UAAyB;QAAzB,2BAAA,EAAA,eAAyB;QAA7C,YACE,iBAAO,SACR;QAFmB,gBAAU,GAAV,UAAU,CAAe;QALpC,UAAI,GAAG,yBAAyB,CAAC;QACjC,aAAO,GAAG,iBAAO,CAAC;QAE3B,WAAK,GAAoB,EAAE,CAAC;;IAI5B,CAAC;IAED,4BAAI,GAAJ,UAAK,IAAmB;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEQ,qCAAa,GAAtB;QACE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACH,oBAAC;AAAD,CAAC,AAjBD,CAAmC,0BAAa,GAiB/C;AAjBY,sCAAa","sourcesContent":["import type { Patterns } from '../config';\nimport { BaseTransport } from '../transports';\nimport type { Transport, TransportItem } from '../transports';\nimport { VERSION } from '../version';\n\nexport class MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n items: TransportItem[] = [];\n\n constructor(private ignoreURLs: Patterns = []) {\n super();\n }\n\n send(item: TransportItem): void | Promise<void> {\n this.items.push(item);\n }\n\n override getIgnoreUrls(): Patterns {\n return this.ignoreURLs;\n }\n}\n"]}
1
+ {"version":3,"file":"mockTransport.js","sourceRoot":"","sources":["../../../src/testUtils/mockTransport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,4CAA8C;AAE9C,kCAAmC;AACnC,sCAAqC;AAErC;IAAmC,iCAAa;IAM9C,uBAAoB,UAAyB;QAAzB,2BAAA,EAAA,eAAyB;QAA7C,YACE,iBAAO,SACR;QAFmB,gBAAU,GAAV,UAAU,CAAe;QALpC,UAAI,GAAG,yBAAyB,CAAC;QACjC,aAAO,GAAG,iBAAO,CAAC;QAE3B,WAAK,GAAoB,EAAE,CAAC;;IAI5B,CAAC;IAED,4BAAI,GAAJ,UAAK,IAAqC;;QACxC,IAAM,KAAK,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAA,KAAA,IAAI,CAAC,KAAK,CAAA,CAAC,IAAI,WAAI,KAAK,EAAE;IAC5B,CAAC;IAEQ,qCAAa,GAAtB;QACE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACH,oBAAC;AAAD,CAAC,AAlBD,CAAmC,0BAAa,GAkB/C;AAlBY,sCAAa","sourcesContent":["import type { Patterns } from '../config';\nimport { BaseTransport } from '../transports';\nimport type { Transport, TransportItem } from '../transports';\nimport { isArray } from '../utils';\nimport { VERSION } from '../version';\n\nexport class MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n items: TransportItem[] = [];\n\n constructor(private ignoreURLs: Patterns = []) {\n super();\n }\n\n send(item: TransportItem | TransportItem[]): void | Promise<void> {\n const items = isArray(item) ? item : [item];\n this.items.push(...items);\n }\n\n override getIgnoreUrls(): Patterns {\n return this.ignoreURLs;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/transports/base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,4CAA8C;AAI9C;IAA4C,iCAAa;IAAzD;;IAMA,CAAC;IAHC,qCAAa,GAAb;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IACH,oBAAC;AAAD,CAAC,AAND,CAA4C,0BAAa,GAMxD;AANqB,sCAAa","sourcesContent":["import { BaseExtension } from '../extensions';\n\nimport type { Transport, TransportItem } from './types';\n\nexport abstract class BaseTransport extends BaseExtension implements Transport {\n abstract send(item: TransportItem): void | Promise<void>;\n\n getIgnoreUrls(): Array<string | RegExp> {\n return [];\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/transports/base.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,4CAA8C;AAI9C;IAA4C,iCAAa;IAAzD;;IAMA,CAAC;IAHC,qCAAa,GAAb;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IACH,oBAAC;AAAD,CAAC,AAND,CAA4C,0BAAa,GAMxD;AANqB,sCAAa","sourcesContent":["import { BaseExtension } from '../extensions';\n\nimport type { Transport, TransportItem } from './types';\n\nexport abstract class BaseTransport extends BaseExtension implements Transport {\n abstract send(item: TransportItem | TransportItem[]): void | Promise<void>;\n\n getIgnoreUrls(): Array<string | RegExp> {\n return [];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(item: TransportItem): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n}\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n addIgnoreErrorsPatterns: (...ignoreErrorsPatterns: Array<Patterns | undefined>) => void;\n execute: (transportItem: TransportItem) => void;\n getBeforeSendHooks: () => BeforeSendHook[];\n isPaused: () => boolean;\n remove: (...transports: Transport[]) => void;\n removeBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n transports: Transport[];\n pause: () => void;\n unpause: () => void;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(items: TransportItem | TransportItem[]): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n}\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n addIgnoreErrorsPatterns: (...ignoreErrorsPatterns: Array<Patterns | undefined>) => void;\n execute: (transportItem: TransportItem) => void;\n getBeforeSendHooks: () => BeforeSendHook[];\n isPaused: () => boolean;\n remove: (...transports: Transport[]) => void;\n removeBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n transports: Transport[];\n pause: () => void;\n unpause: () => void;\n}\n"]}
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // auto-generated by bin/genVersion.ts
5
- exports.VERSION = '1.0.1';
5
+ exports.VERSION = '1.0.4';
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.0.1';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACzB,QAAA,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.0.4';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metas/types.ts"],"names":[],"mappings":"","sourcesContent":["export type MetaGetter<P = Partial<Meta>> = () => P;\n\nexport type MetaItem<P = Partial<Meta>> = P | MetaGetter<P>;\n\nexport type MetasListener = (value: Meta) => void;\n\nexport interface Metas {\n add: (...getters: MetaItem[]) => void;\n remove: (...getters: MetaItem[]) => void;\n addListener: (listener: MetasListener) => void;\n removeListener: (listener: MetasListener) => void;\n value: Meta;\n}\n\nexport type MetaAttributes = Record<string, string>;\n\nexport interface MetaSDKIntegration {\n name?: string;\n version?: string;\n}\n\nexport interface MetaSDK {\n name?: string;\n version?: string;\n integrations?: MetaSDKIntegration[];\n}\n\nexport interface MetaApp {\n name?: string;\n release?: string;\n version?: string;\n environment?: string;\n}\n\nexport interface MetaUser {\n email?: string;\n id?: string;\n username?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaSession {\n id?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaPage {\n id?: string;\n url?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaBrowser {\n name?: string;\n version?: string;\n os?: string;\n mobile?: boolean;\n userAgent?: string;\n language?: string;\n}\n\nexport interface MetaView {\n name: string;\n}\n\nexport interface Meta {\n sdk?: MetaSDK;\n app?: MetaApp;\n user?: MetaUser;\n session?: MetaSession;\n page?: MetaPage;\n browser?: MetaBrowser;\n view?: MetaView;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metas/types.ts"],"names":[],"mappings":"","sourcesContent":["export type MetaGetter<P = Partial<Meta>> = () => P;\n\nexport type MetaItem<P = Partial<Meta>> = P | MetaGetter<P>;\n\nexport type MetasListener = (value: Meta) => void;\n\nexport interface Metas {\n add: (...getters: MetaItem[]) => void;\n remove: (...getters: MetaItem[]) => void;\n addListener: (listener: MetasListener) => void;\n removeListener: (listener: MetasListener) => void;\n value: Meta;\n}\n\nexport type MetaAttributes = Record<string, string>;\n\nexport interface MetaSDKIntegration {\n name?: string;\n version?: string;\n}\n\nexport interface MetaSDK {\n name?: string;\n version?: string;\n integrations?: MetaSDKIntegration[];\n}\n\nexport interface MetaApp {\n name?: string;\n release?: string;\n version?: string;\n environment?: string;\n}\n\nexport interface MetaUser {\n email?: string;\n id?: string;\n username?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaSession {\n id?: string;\n attributes?: MetaAttributes;\n}\n\nexport interface MetaPage {\n id?: string;\n url?: string;\n attributes?: MetaAttributes;\n}\n\ninterface NavigatorUABrandVersion {\n brand?: string;\n version?: string;\n}\n\nexport interface MetaBrowser {\n name?: string;\n version?: string;\n os?: string;\n mobile?: boolean;\n userAgent?: string;\n language?: string;\n brands?: NavigatorUABrandVersion[] | string;\n}\n\nexport interface MetaView {\n name: string;\n}\n\nexport interface Meta {\n sdk?: MetaSDK;\n app?: MetaApp;\n user?: MetaUser;\n session?: MetaSession;\n page?: MetaPage;\n browser?: MetaBrowser;\n view?: MetaView;\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { BaseTransport } from '../transports';
2
+ import { isArray } from '../utils';
2
3
  import { VERSION } from '../version';
3
4
  export class MockTransport extends BaseTransport {
4
5
  constructor(ignoreURLs = []) {
@@ -9,7 +10,8 @@ export class MockTransport extends BaseTransport {
9
10
  this.items = [];
10
11
  }
11
12
  send(item) {
12
- this.items.push(item);
13
+ const items = isArray(item) ? item : [item];
14
+ this.items.push(...items);
13
15
  }
14
16
  getIgnoreUrls() {
15
17
  return this.ignoreURLs;
@@ -1 +1 @@
1
- {"version":3,"file":"mockTransport.js","sourceRoot":"","sources":["../../../src/testUtils/mockTransport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,aAAc,SAAQ,aAAa;IAM9C,YAAoB,aAAuB,EAAE;QAC3C,KAAK,EAAE,CAAC;QADU,eAAU,GAAV,UAAU,CAAe;QALpC,SAAI,GAAG,yBAAyB,CAAC;QACjC,YAAO,GAAG,OAAO,CAAC;QAE3B,UAAK,GAAoB,EAAE,CAAC;IAI5B,CAAC;IAED,IAAI,CAAC,IAAmB;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAEQ,aAAa;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF","sourcesContent":["import type { Patterns } from '../config';\nimport { BaseTransport } from '../transports';\nimport type { Transport, TransportItem } from '../transports';\nimport { VERSION } from '../version';\n\nexport class MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n items: TransportItem[] = [];\n\n constructor(private ignoreURLs: Patterns = []) {\n super();\n }\n\n send(item: TransportItem): void | Promise<void> {\n this.items.push(item);\n }\n\n override getIgnoreUrls(): Patterns {\n return this.ignoreURLs;\n }\n}\n"]}
1
+ {"version":3,"file":"mockTransport.js","sourceRoot":"","sources":["../../../src/testUtils/mockTransport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,aAAc,SAAQ,aAAa;IAM9C,YAAoB,aAAuB,EAAE;QAC3C,KAAK,EAAE,CAAC;QADU,eAAU,GAAV,UAAU,CAAe;QALpC,SAAI,GAAG,yBAAyB,CAAC;QACjC,YAAO,GAAG,OAAO,CAAC;QAE3B,UAAK,GAAoB,EAAE,CAAC;IAI5B,CAAC;IAED,IAAI,CAAC,IAAqC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEQ,aAAa;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF","sourcesContent":["import type { Patterns } from '../config';\nimport { BaseTransport } from '../transports';\nimport type { Transport, TransportItem } from '../transports';\nimport { isArray } from '../utils';\nimport { VERSION } from '../version';\n\nexport class MockTransport extends BaseTransport implements Transport {\n readonly name = '@grafana/transport-mock';\n readonly version = VERSION;\n\n items: TransportItem[] = [];\n\n constructor(private ignoreURLs: Patterns = []) {\n super();\n }\n\n send(item: TransportItem | TransportItem[]): void | Promise<void> {\n const items = isArray(item) ? item : [item];\n this.items.push(...items);\n }\n\n override getIgnoreUrls(): Patterns {\n return this.ignoreURLs;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,MAAM,OAAgB,aAAc,SAAQ,aAAa;IAGvD,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;CACF","sourcesContent":["import { BaseExtension } from '../extensions';\n\nimport type { Transport, TransportItem } from './types';\n\nexport abstract class BaseTransport extends BaseExtension implements Transport {\n abstract send(item: TransportItem): void | Promise<void>;\n\n getIgnoreUrls(): Array<string | RegExp> {\n return [];\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI9C,MAAM,OAAgB,aAAc,SAAQ,aAAa;IAGvD,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;CACF","sourcesContent":["import { BaseExtension } from '../extensions';\n\nimport type { Transport, TransportItem } from './types';\n\nexport abstract class BaseTransport extends BaseExtension implements Transport {\n abstract send(item: TransportItem | TransportItem[]): void | Promise<void>;\n\n getIgnoreUrls(): Array<string | RegExp> {\n return [];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(item: TransportItem): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n}\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n addIgnoreErrorsPatterns: (...ignoreErrorsPatterns: Array<Patterns | undefined>) => void;\n execute: (transportItem: TransportItem) => void;\n getBeforeSendHooks: () => BeforeSendHook[];\n isPaused: () => boolean;\n remove: (...transports: Transport[]) => void;\n removeBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n transports: Transport[];\n pause: () => void;\n unpause: () => void;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/transports/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { APIEvent, EventEvent, ExceptionEvent, LogEvent, MeasurementEvent, TraceEvent } from '../api';\nimport type { Patterns } from '../config';\nimport type { Extension } from '../extensions';\nimport type { Meta } from '../metas';\n\nimport type { TransportItemType } from './const';\n\nexport type TransportItemPayload<P = APIEvent> = P;\n\nexport type BeforeSendHook<P = APIEvent> = (item: TransportItem<P>) => TransportItem<P> | null;\n\nexport interface TransportItem<P = APIEvent> {\n type: TransportItemType;\n payload: TransportItemPayload<P>;\n meta: Meta;\n}\n\nexport interface Transport extends Extension {\n send(items: TransportItem | TransportItem[]): void | Promise<void>;\n\n // returns URLs to be ignored by tracing, to not cause a feedback loop\n getIgnoreUrls(): Patterns;\n}\n\nexport interface TransportBody {\n meta: Meta;\n\n exceptions?: ExceptionEvent[];\n logs?: LogEvent[];\n measurements?: MeasurementEvent[];\n traces?: TraceEvent;\n events?: EventEvent[];\n}\n\nexport interface Transports {\n add: (...transports: Transport[]) => void;\n addBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n addIgnoreErrorsPatterns: (...ignoreErrorsPatterns: Array<Patterns | undefined>) => void;\n execute: (transportItem: TransportItem) => void;\n getBeforeSendHooks: () => BeforeSendHook[];\n isPaused: () => boolean;\n remove: (...transports: Transport[]) => void;\n removeBeforeSendHooks: (...hooks: Array<BeforeSendHook | undefined>) => void;\n transports: Transport[];\n pause: () => void;\n unpause: () => void;\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  // auto-generated by bin/genVersion.ts
2
- export const VERSION = '1.0.1';
2
+ export const VERSION = '1.0.4';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.0.1';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC","sourcesContent":["// auto-generated by bin/genVersion.ts\nexport const VERSION = '1.0.4';\n"]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeEventsAPI = void 0;
4
+ var initialize_1 = require("./initialize");
5
+ Object.defineProperty(exports, "initializeEventsAPI", { enumerable: true, get: function () { return initialize_1.initializeEventsAPI; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/api/events/index.ts"],"names":[],"mappings":";;;AACA,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA","sourcesContent":["export type { EventAttributes, EventEvent, EventsAPI } from './types';\nexport { initializeEventsAPI } from './initialize';\n"]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeEventsAPI = void 0;
4
+ var transports_1 = require("../../transports");
5
+ var utils_1 = require("../../utils");
6
+ function initializeEventsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {
7
+ var lastPayload = null;
8
+ var pushEvent = function (name, attributes, domain, _a) {
9
+ var _b = _a === void 0 ? {} : _a, skipDedupe = _b.skipDedupe;
10
+ try {
11
+ var item = {
12
+ meta: metas.value,
13
+ payload: {
14
+ name: name,
15
+ domain: domain !== null && domain !== void 0 ? domain : config.eventDomain,
16
+ attributes: attributes,
17
+ timestamp: (0, utils_1.getCurrentTimestamp)(),
18
+ trace: tracesApi.getTraceContext(),
19
+ },
20
+ type: transports_1.TransportItemType.EVENT,
21
+ };
22
+ var testingPayload = {
23
+ name: item.payload.name,
24
+ attributes: item.payload.attributes,
25
+ domain: item.payload.domain,
26
+ };
27
+ if (!skipDedupe && config.dedupe && !(0, utils_1.isNull)(lastPayload) && (0, utils_1.deepEqual)(testingPayload, lastPayload)) {
28
+ internalLogger.debug('Skipping event push because it is the same as the last one\n', item.payload);
29
+ return;
30
+ }
31
+ lastPayload = testingPayload;
32
+ internalLogger.debug('Pushing event\n', item);
33
+ transports.execute(item);
34
+ }
35
+ catch (err) {
36
+ internalLogger.error('Error pushing event', err);
37
+ }
38
+ };
39
+ return {
40
+ pushEvent: pushEvent,
41
+ };
42
+ }
43
+ exports.initializeEventsAPI = initializeEventsAPI;
44
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/events/initialize.ts"],"names":[],"mappings":";;;AAGA,+CAAgF;AAEhF,qCAAqE;AAKrE,SAAgB,mBAAmB,CACjC,iBAAmC,EACnC,cAA8B,EAC9B,MAAc,EACd,KAAY,EACZ,UAAsB,EACtB,SAAoB;IAEpB,IAAI,WAAW,GAA8D,IAAI,CAAC;IAElF,IAAM,SAAS,GAA2B,UAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAmB;YAAnB,qBAAiB,EAAE,KAAA,EAAjB,UAAU,gBAAA;QAC/E,IAAI;YACF,IAAM,IAAI,GAA8B;gBACtC,IAAI,EAAE,KAAK,CAAC,KAAK;gBACjB,OAAO,EAAE;oBACP,IAAI,MAAA;oBACJ,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,MAAM,CAAC,WAAW;oBACpC,UAAU,YAAA;oBACV,SAAS,EAAE,IAAA,2BAAmB,GAAE;oBAChC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE;iBACnC;gBACD,IAAI,EAAE,8BAAiB,CAAC,KAAK;aAC9B,CAAC;YAEF,IAAM,cAAc,GAAG;gBACrB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;gBACnC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;aAC5B,CAAC;YAEF,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAA,cAAM,EAAC,WAAW,CAAC,IAAI,IAAA,iBAAS,EAAC,cAAc,EAAE,WAAW,CAAC,EAAE;gBAClG,cAAc,CAAC,KAAK,CAAC,8DAA8D,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEnG,OAAO;aACR;YAED,WAAW,GAAG,cAAc,CAAC;YAE7B,cAAc,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YAE9C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC1B;QAAC,OAAO,GAAG,EAAE;YACZ,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;SAClD;IACH,CAAC,CAAC;IAEF,OAAO;QACL,SAAS,WAAA;KACV,CAAC;AACJ,CAAC;AAjDD,kDAiDC","sourcesContent":["import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItem, TransportItemType, Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport type { TracesAPI } from '../traces';\n\nimport type { EventEvent, EventsAPI } from './types';\n\nexport function initializeEventsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): EventsAPI {\n let lastPayload: Pick<EventEvent, 'name' | 'domain' | 'attributes'> | null = null;\n\n const pushEvent: EventsAPI['pushEvent'] = (name, attributes, domain, { skipDedupe } = {}) => {\n try {\n const item: TransportItem<EventEvent> = {\n meta: metas.value,\n payload: {\n name,\n domain: domain ?? config.eventDomain,\n attributes,\n timestamp: getCurrentTimestamp(),\n trace: tracesApi.getTraceContext(),\n },\n type: TransportItemType.EVENT,\n };\n\n const testingPayload = {\n name: item.payload.name,\n attributes: item.payload.attributes,\n domain: item.payload.domain,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping event push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing event\\n', item);\n\n transports.execute(item);\n } catch (err) {\n internalLogger.error('Error pushing event', err);\n }\n };\n\n return {\n pushEvent,\n };\n}\n"]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var initialize_1 = require("../../initialize");
4
+ var testUtils_1 = require("../../testUtils");
5
+ describe('api.events', function () {
6
+ function createAPI(_a) {
7
+ var _b = _a === void 0 ? { dedupe: true } : _a, dedupe = _b.dedupe;
8
+ var transport = new testUtils_1.MockTransport();
9
+ var config = (0, testUtils_1.mockConfig)({
10
+ dedupe: dedupe,
11
+ transports: [transport],
12
+ });
13
+ var api = (0, initialize_1.initializeFaro)(config).api;
14
+ return [api, transport];
15
+ }
16
+ describe('pushEvent', function () {
17
+ var api;
18
+ var transport;
19
+ beforeEach(function () {
20
+ var _a;
21
+ _a = createAPI(), api = _a[0], transport = _a[1];
22
+ });
23
+ describe('Filtering', function () {
24
+ it('filters the same event', function () {
25
+ api.pushEvent('test', {
26
+ a: '1',
27
+ });
28
+ expect(transport.items).toHaveLength(1);
29
+ api.pushEvent('test', {
30
+ a: '1',
31
+ });
32
+ expect(transport.items).toHaveLength(1);
33
+ });
34
+ it("doesn't filter events with same name and partially same values", function () {
35
+ api.pushEvent('test', {
36
+ a: '1',
37
+ });
38
+ expect(transport.items).toHaveLength(1);
39
+ api.pushEvent('test', {
40
+ a: '1',
41
+ b: '2',
42
+ });
43
+ expect(transport.items).toHaveLength(2);
44
+ });
45
+ it("doesn't filter events with different name and same values", function () {
46
+ api.pushEvent('test1', {
47
+ a: '1',
48
+ });
49
+ expect(transport.items).toHaveLength(1);
50
+ api.pushEvent('test2', {
51
+ a: '1',
52
+ });
53
+ expect(transport.items).toHaveLength(2);
54
+ });
55
+ it("filters an event and doesn't filter the next different one", function () {
56
+ api.pushEvent('test1', {
57
+ a: '1',
58
+ });
59
+ expect(transport.items).toHaveLength(1);
60
+ api.pushEvent('test1', {
61
+ a: '1',
62
+ });
63
+ expect(transport.items).toHaveLength(1);
64
+ api.pushEvent('test2', {
65
+ b: '1',
66
+ });
67
+ expect(transport.items).toHaveLength(2);
68
+ });
69
+ it("doesn't filter when dedupe is false", function () {
70
+ var _a;
71
+ _a = createAPI({ dedupe: false }), api = _a[0], transport = _a[1];
72
+ api.pushEvent('test');
73
+ expect(transport.items).toHaveLength(1);
74
+ api.pushEvent('test');
75
+ expect(transport.items).toHaveLength(2);
76
+ });
77
+ it("doesn't filter when skipDedupe is true", function () {
78
+ api.pushEvent('test');
79
+ expect(transport.items).toHaveLength(1);
80
+ api.pushEvent('test', {}, undefined, { skipDedupe: true });
81
+ expect(transport.items).toHaveLength(2);
82
+ });
83
+ });
84
+ });
85
+ });
86
+ //# sourceMappingURL=initialize.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.test.js","sourceRoot":"","sources":["../../../../../../src/api/events/initialize.test.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAClD,6CAA4D;AAG5D,QAAQ,CAAC,YAAY,EAAE;IACrB,SAAS,SAAS,CAAC,EAAkD;YAAlD,qBAAkC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAA,EAAhD,MAAM,YAAA;QACzB,IAAM,SAAS,GAAG,IAAI,yBAAa,EAAE,CAAC;QACtC,IAAM,MAAM,GAAG,IAAA,sBAAU,EAAC;YACxB,MAAM,QAAA;YACN,UAAU,EAAE,CAAC,SAAS,CAAC;SACxB,CAAC,CAAC;QAEK,IAAA,GAAG,GAAK,IAAA,2BAAc,EAAC,MAAM,CAAC,IAA3B,CAA4B;QAEvC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,WAAW,EAAE;QACpB,IAAI,GAAQ,CAAC;QACb,IAAI,SAAwB,CAAC;QAE7B,UAAU,CAAC;;YACT,KAAmB,SAAS,EAAE,EAA7B,GAAG,QAAA,EAAE,SAAS,QAAA,CAAgB;QACjC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE;YACpB,EAAE,CAAC,wBAAwB,EAAE;gBAC3B,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;oBACpB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;oBACpB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gEAAgE,EAAE;gBACnE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;oBACpB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;oBACpB,CAAC,EAAE,GAAG;oBACN,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2DAA2D,EAAE;gBAC9D,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;oBACrB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;oBACrB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,4DAA4D,EAAE;gBAC/D,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;oBACrB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;oBACrB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;oBACrB,CAAC,EAAE,GAAG;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qCAAqC,EAAE;;gBACxC,KAAmB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAA9C,GAAG,QAAA,EAAE,SAAS,QAAA,CAAiC;gBAEhD,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wCAAwC,EAAE;gBAC3C,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACtB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAExC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { initializeFaro } from '../../initialize';\nimport { mockConfig, MockTransport } from '../../testUtils';\nimport type { API } from '../types';\n\ndescribe('api.events', () => {\n function createAPI({ dedupe }: { dedupe: boolean } = { dedupe: true }): [API, MockTransport] {\n const transport = new MockTransport();\n const config = mockConfig({\n dedupe,\n transports: [transport],\n });\n\n const { api } = initializeFaro(config);\n\n return [api, transport];\n }\n\n describe('pushEvent', () => {\n let api: API;\n let transport: MockTransport;\n\n beforeEach(() => {\n [api, transport] = createAPI();\n });\n\n describe('Filtering', () => {\n it('filters the same event', () => {\n api.pushEvent('test', {\n a: '1',\n });\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test', {\n a: '1',\n });\n expect(transport.items).toHaveLength(1);\n });\n\n it(\"doesn't filter events with same name and partially same values\", () => {\n api.pushEvent('test', {\n a: '1',\n });\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test', {\n a: '1',\n b: '2',\n });\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter events with different name and same values\", () => {\n api.pushEvent('test1', {\n a: '1',\n });\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test2', {\n a: '1',\n });\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"filters an event and doesn't filter the next different one\", () => {\n api.pushEvent('test1', {\n a: '1',\n });\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test1', {\n a: '1',\n });\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test2', {\n b: '1',\n });\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter when dedupe is false\", () => {\n [api, transport] = createAPI({ dedupe: false });\n\n api.pushEvent('test');\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test');\n expect(transport.items).toHaveLength(2);\n });\n\n it(\"doesn't filter when skipDedupe is true\", () => {\n api.pushEvent('test');\n expect(transport.items).toHaveLength(1);\n\n api.pushEvent('test', {}, undefined, { skipDedupe: true });\n expect(transport.items).toHaveLength(2);\n });\n });\n });\n});\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/api/events/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { TraceContext } from '../traces';\n\nexport type EventAttributes = Record<string, string>;\n\nexport interface EventEvent {\n name: string;\n timestamp: string;\n\n domain?: string;\n attributes?: EventAttributes;\n trace?: TraceContext;\n}\n\nexport interface PushEventOptions {\n skipDedupe?: boolean;\n}\n\nexport interface EventsAPI {\n pushEvent: (name: string, attributes?: EventAttributes, domain?: string, options?: PushEventOptions) => void;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultExceptionType = void 0;
4
+ exports.defaultExceptionType = 'Error';
5
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,OAAO,CAAC","sourcesContent":["export const defaultExceptionType = 'Error';\n"]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeExceptionsAPI = exports.defaultExceptionType = void 0;
4
+ var const_1 = require("./const");
5
+ Object.defineProperty(exports, "defaultExceptionType", { enumerable: true, get: function () { return const_1.defaultExceptionType; } });
6
+ var initialize_1 = require("./initialize");
7
+ Object.defineProperty(exports, "initializeExceptionsAPI", { enumerable: true, get: function () { return initialize_1.initializeExceptionsAPI; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/index.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AAAtC,6GAAA,oBAAoB,OAAA;AAE7B,2CAAuD;AAA9C,qHAAA,uBAAuB,OAAA","sourcesContent":["export { defaultExceptionType } from './const';\n\nexport { initializeExceptionsAPI } from './initialize';\n\nexport type {\n ExceptionEvent,\n ExceptionStackFrame,\n ExceptionsAPI,\n ExtendedError,\n PushErrorOptions,\n Stacktrace,\n StacktraceParser,\n} from './types';\n"]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeExceptionsAPI = void 0;
4
+ var transports_1 = require("../../transports");
5
+ var utils_1 = require("../../utils");
6
+ var const_1 = require("./const");
7
+ var stacktraceParser;
8
+ function initializeExceptionsAPI(_unpatchedConsole, internalLogger, config, metas, transports, tracesApi) {
9
+ var _a;
10
+ internalLogger.debug('Initializing exceptions API');
11
+ var lastPayload = null;
12
+ stacktraceParser = (_a = config.parseStacktrace) !== null && _a !== void 0 ? _a : stacktraceParser;
13
+ var changeStacktraceParser = function (newStacktraceParser) {
14
+ internalLogger.debug('Changing stacktrace parser');
15
+ stacktraceParser = newStacktraceParser !== null && newStacktraceParser !== void 0 ? newStacktraceParser : stacktraceParser;
16
+ };
17
+ var getStacktraceParser = function () { return stacktraceParser; };
18
+ var pushError = function (error, _a) {
19
+ var _b = _a === void 0 ? {} : _a, skipDedupe = _b.skipDedupe, stackFrames = _b.stackFrames, type = _b.type;
20
+ type = type || error.name || const_1.defaultExceptionType;
21
+ var item = {
22
+ meta: metas.value,
23
+ payload: {
24
+ type: type,
25
+ value: error.message,
26
+ timestamp: (0, utils_1.getCurrentTimestamp)(),
27
+ trace: tracesApi.getTraceContext(),
28
+ },
29
+ type: transports_1.TransportItemType.EXCEPTION,
30
+ };
31
+ stackFrames = stackFrames !== null && stackFrames !== void 0 ? stackFrames : (error.stack ? stacktraceParser === null || stacktraceParser === void 0 ? void 0 : stacktraceParser(error).frames : undefined);
32
+ if (stackFrames === null || stackFrames === void 0 ? void 0 : stackFrames.length) {
33
+ item.payload.stacktrace = {
34
+ frames: stackFrames,
35
+ };
36
+ }
37
+ var testingPayload = {
38
+ type: item.payload.type,
39
+ value: item.payload.value,
40
+ stackTrace: item.payload.stacktrace,
41
+ };
42
+ if (!skipDedupe && config.dedupe && !(0, utils_1.isNull)(lastPayload) && (0, utils_1.deepEqual)(testingPayload, lastPayload)) {
43
+ internalLogger.debug('Skipping error push because it is the same as the last one\n', item.payload);
44
+ return;
45
+ }
46
+ lastPayload = testingPayload;
47
+ internalLogger.debug('Pushing exception\n', item);
48
+ transports.execute(item);
49
+ };
50
+ changeStacktraceParser(config.parseStacktrace);
51
+ return {
52
+ changeStacktraceParser: changeStacktraceParser,
53
+ getStacktraceParser: getStacktraceParser,
54
+ pushError: pushError,
55
+ };
56
+ }
57
+ exports.initializeExceptionsAPI = initializeExceptionsAPI;
58
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../src/api/exceptions/initialize.ts"],"names":[],"mappings":";;;AAGA,+CAAqD;AAGrD,qCAAqE;AAGrE,iCAA+C;AAG/C,IAAI,gBAA8C,CAAC;AAEnD,SAAgB,uBAAuB,CACrC,iBAAmC,EACnC,cAA8B,EAC9B,MAAc,EACd,KAAY,EACZ,UAAsB,EACtB,SAAoB;;IAEpB,cAAc,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEpD,IAAI,WAAW,GAAiE,IAAI,CAAC;IAErF,gBAAgB,GAAG,MAAA,MAAM,CAAC,eAAe,mCAAI,gBAAgB,CAAC;IAE9D,IAAM,sBAAsB,GAA4C,UAAC,mBAAmB;QAC1F,cAAc,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAEnD,gBAAgB,GAAG,mBAAmB,aAAnB,mBAAmB,cAAnB,mBAAmB,GAAI,gBAAgB,CAAC;IAC7D,CAAC,CAAC;IAEF,IAAM,mBAAmB,GAAyC,cAAM,OAAA,gBAAgB,EAAhB,CAAgB,CAAC;IAEzF,IAAM,SAAS,GAA+B,UAAC,KAAK,EAAE,EAAsC;YAAtC,qBAAoC,EAAE,KAAA,EAApC,UAAU,gBAAA,EAAE,WAAW,iBAAA,EAAE,IAAI,UAAA;QACnF,IAAI,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,4BAAoB,CAAC;QAElD,IAAM,IAAI,GAAkC;YAC1C,IAAI,EAAE,KAAK,CAAC,KAAK;YACjB,OAAO,EAAE;gBACP,IAAI,MAAA;gBACJ,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,SAAS,EAAE,IAAA,2BAAmB,GAAE;gBAChC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE;aACnC;YACD,IAAI,EAAE,8BAAiB,CAAC,SAAS;SAClC,CAAC;QAEF,WAAW,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAE1F,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG;gBACxB,MAAM,EAAE,WAAW;aACpB,CAAC;SACH;QAED,IAAM,cAAc,GAAG;YACrB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;SACpC,CAAC;QAEF,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAA,cAAM,EAAC,WAAW,CAAC,IAAI,IAAA,iBAAS,EAAC,cAAc,EAAE,WAAW,CAAC,EAAE;YAClG,cAAc,CAAC,KAAK,CAAC,8DAA8D,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnG,OAAO;SACR;QAED,WAAW,GAAG,cAAc,CAAC;QAE7B,cAAc,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAElD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAE/C,OAAO;QACL,sBAAsB,wBAAA;QACtB,mBAAmB,qBAAA;QACnB,SAAS,WAAA;KACV,CAAC;AACJ,CAAC;AAtED,0DAsEC","sourcesContent":["import type { Config } from '../../config';\nimport type { InternalLogger } from '../../internalLogger';\nimport type { Metas } from '../../metas';\nimport { TransportItemType } from '../../transports';\nimport type { TransportItem, Transports } from '../../transports';\nimport type { UnpatchedConsole } from '../../unpatchedConsole';\nimport { deepEqual, getCurrentTimestamp, isNull } from '../../utils';\nimport type { TracesAPI } from '../traces';\n\nimport { defaultExceptionType } from './const';\nimport type { ExceptionEvent, ExceptionsAPI, StacktraceParser } from './types';\n\nlet stacktraceParser: StacktraceParser | undefined;\n\nexport function initializeExceptionsAPI(\n _unpatchedConsole: UnpatchedConsole,\n internalLogger: InternalLogger,\n config: Config,\n metas: Metas,\n transports: Transports,\n tracesApi: TracesAPI\n): ExceptionsAPI {\n internalLogger.debug('Initializing exceptions API');\n\n let lastPayload: Pick<ExceptionEvent, 'type' | 'value' | 'stacktrace'> | null = null;\n\n stacktraceParser = config.parseStacktrace ?? stacktraceParser;\n\n const changeStacktraceParser: ExceptionsAPI['changeStacktraceParser'] = (newStacktraceParser) => {\n internalLogger.debug('Changing stacktrace parser');\n\n stacktraceParser = newStacktraceParser ?? stacktraceParser;\n };\n\n const getStacktraceParser: ExceptionsAPI['getStacktraceParser'] = () => stacktraceParser;\n\n const pushError: ExceptionsAPI['pushError'] = (error, { skipDedupe, stackFrames, type } = {}) => {\n type = type || error.name || defaultExceptionType;\n\n const item: TransportItem<ExceptionEvent> = {\n meta: metas.value,\n payload: {\n type,\n value: error.message,\n timestamp: getCurrentTimestamp(),\n trace: tracesApi.getTraceContext(),\n },\n type: TransportItemType.EXCEPTION,\n };\n\n stackFrames = stackFrames ?? (error.stack ? stacktraceParser?.(error).frames : undefined);\n\n if (stackFrames?.length) {\n item.payload.stacktrace = {\n frames: stackFrames,\n };\n }\n\n const testingPayload = {\n type: item.payload.type,\n value: item.payload.value,\n stackTrace: item.payload.stacktrace,\n };\n\n if (!skipDedupe && config.dedupe && !isNull(lastPayload) && deepEqual(testingPayload, lastPayload)) {\n internalLogger.debug('Skipping error push because it is the same as the last one\\n', item.payload);\n\n return;\n }\n\n lastPayload = testingPayload;\n\n internalLogger.debug('Pushing exception\\n', item);\n\n transports.execute(item);\n };\n\n changeStacktraceParser(config.parseStacktrace);\n\n return {\n changeStacktraceParser,\n getStacktraceParser,\n pushError,\n };\n}\n"]}