@cloudcare/browser-core 3.1.10 → 3.1.12

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 (156) hide show
  1. package/cjs/browser/addEventListener.js.map +1 -1
  2. package/cjs/browser/cookie.js +2 -1
  3. package/cjs/browser/cookie.js.map +1 -1
  4. package/cjs/browser/fetchObservable.js.map +1 -1
  5. package/cjs/browser/htmlDomUtils.js +6 -1
  6. package/cjs/browser/htmlDomUtils.js.map +1 -1
  7. package/cjs/browser/pageExitObservable.js.map +1 -1
  8. package/cjs/browser/runOnReadyState.js.map +1 -1
  9. package/cjs/browser/scroll.js.map +1 -1
  10. package/cjs/browser/xhrObservable.js.map +1 -1
  11. package/cjs/configuration/configuration.js +13 -5
  12. package/cjs/configuration/configuration.js.map +1 -1
  13. package/cjs/configuration/transportConfiguration.js.map +1 -1
  14. package/cjs/console/consoleObservable.js +4 -2
  15. package/cjs/console/consoleObservable.js.map +1 -1
  16. package/cjs/dataMap.js +3 -1
  17. package/cjs/dataMap.js.map +1 -1
  18. package/cjs/error/trackRuntimeError.js.map +1 -1
  19. package/cjs/helper/boundedBuffer.js.map +1 -1
  20. package/cjs/helper/byteUtils.js.map +1 -1
  21. package/cjs/helper/catchUserErrors.js.map +1 -1
  22. package/cjs/helper/contextHistory.js.map +1 -1
  23. package/cjs/helper/createEventRateLimiter.js.map +1 -1
  24. package/cjs/helper/deviceInfo.js.map +1 -1
  25. package/cjs/helper/display.js.map +1 -1
  26. package/cjs/helper/enums.js.map +1 -1
  27. package/cjs/helper/errorTools.js.map +1 -1
  28. package/cjs/helper/eventEmitter.js.map +1 -1
  29. package/cjs/helper/getZoneJsOriginalValue.js.map +1 -1
  30. package/cjs/helper/instrumentMethod.js +7 -6
  31. package/cjs/helper/instrumentMethod.js.map +1 -1
  32. package/cjs/helper/lifeCycle.js +2 -0
  33. package/cjs/helper/lifeCycle.js.map +1 -1
  34. package/cjs/helper/limitModification.js.map +1 -1
  35. package/cjs/helper/mobileUtil.js.map +1 -1
  36. package/cjs/helper/monitor.js.map +1 -1
  37. package/cjs/helper/observable.js.map +1 -1
  38. package/cjs/helper/readBytesFromStream.js.map +1 -1
  39. package/cjs/helper/sanitize.js.map +1 -1
  40. package/cjs/helper/serialisation/contextManager.js.map +1 -1
  41. package/cjs/helper/serialisation/heavyCustomerDataWarning.js.map +1 -1
  42. package/cjs/helper/serialisation/jsonStringify.js.map +1 -1
  43. package/cjs/helper/serialisation/rowData.js.map +1 -1
  44. package/cjs/helper/serialisation/storedContextManager.js.map +1 -1
  45. package/cjs/helper/timer.js.map +1 -1
  46. package/cjs/helper/tools.js.map +1 -1
  47. package/cjs/helper/urlPolyfill.js.map +1 -1
  48. package/cjs/index.js.map +1 -1
  49. package/cjs/init.js.map +1 -1
  50. package/cjs/report/reportObservable.js.map +1 -1
  51. package/cjs/session/sessionConstants.js.map +1 -1
  52. package/cjs/session/sessionCookieStore.js.map +1 -1
  53. package/cjs/session/sessionManagement.js +7 -2
  54. package/cjs/session/sessionManagement.js.map +1 -1
  55. package/cjs/session/sessionStore.js +28 -4
  56. package/cjs/session/sessionStore.js.map +1 -1
  57. package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -1
  58. package/cjs/synthetics/usr.js.map +1 -1
  59. package/cjs/telemetry/telemetry.js.map +1 -1
  60. package/cjs/telemetry/types.js.map +1 -1
  61. package/cjs/tracekit/computeStackTrace.js.map +1 -1
  62. package/cjs/tracekit/index.js.map +1 -1
  63. package/cjs/tracekit/tracekit.js.map +1 -1
  64. package/cjs/transport/batch.js.map +1 -1
  65. package/cjs/transport/eventBridge.js.map +1 -1
  66. package/cjs/transport/flushController.js.map +1 -1
  67. package/cjs/transport/httpRequest.js.map +1 -1
  68. package/cjs/transport/index.js.map +1 -1
  69. package/cjs/transport/sendWithRetryStrategy.js.map +1 -1
  70. package/cjs/transport/startBatchWithReplica.js.map +1 -1
  71. package/cjs/user/index.js.map +1 -1
  72. package/cjs/user/user.js.map +1 -1
  73. package/cjs/worker.js.map +1 -1
  74. package/esm/browser/addEventListener.js.map +1 -1
  75. package/esm/browser/cookie.js +2 -1
  76. package/esm/browser/cookie.js.map +1 -1
  77. package/esm/browser/fetchObservable.js.map +1 -1
  78. package/esm/browser/htmlDomUtils.js +6 -1
  79. package/esm/browser/htmlDomUtils.js.map +1 -1
  80. package/esm/browser/pageExitObservable.js.map +1 -1
  81. package/esm/browser/runOnReadyState.js.map +1 -1
  82. package/esm/browser/scroll.js.map +1 -1
  83. package/esm/browser/xhrObservable.js.map +1 -1
  84. package/esm/configuration/configuration.js +13 -5
  85. package/esm/configuration/configuration.js.map +1 -1
  86. package/esm/configuration/transportConfiguration.js.map +1 -1
  87. package/esm/console/consoleObservable.js +5 -3
  88. package/esm/console/consoleObservable.js.map +1 -1
  89. package/esm/dataMap.js +3 -1
  90. package/esm/dataMap.js.map +1 -1
  91. package/esm/error/trackRuntimeError.js.map +1 -1
  92. package/esm/helper/boundedBuffer.js.map +1 -1
  93. package/esm/helper/byteUtils.js.map +1 -1
  94. package/esm/helper/catchUserErrors.js.map +1 -1
  95. package/esm/helper/contextHistory.js.map +1 -1
  96. package/esm/helper/createEventRateLimiter.js.map +1 -1
  97. package/esm/helper/deviceInfo.js.map +1 -1
  98. package/esm/helper/display.js.map +1 -1
  99. package/esm/helper/enums.js.map +1 -1
  100. package/esm/helper/errorTools.js.map +1 -1
  101. package/esm/helper/eventEmitter.js.map +1 -1
  102. package/esm/helper/getZoneJsOriginalValue.js.map +1 -1
  103. package/esm/helper/instrumentMethod.js +7 -6
  104. package/esm/helper/instrumentMethod.js.map +1 -1
  105. package/esm/helper/lifeCycle.js +2 -0
  106. package/esm/helper/lifeCycle.js.map +1 -1
  107. package/esm/helper/limitModification.js.map +1 -1
  108. package/esm/helper/mobileUtil.js.map +1 -1
  109. package/esm/helper/monitor.js.map +1 -1
  110. package/esm/helper/observable.js.map +1 -1
  111. package/esm/helper/readBytesFromStream.js.map +1 -1
  112. package/esm/helper/sanitize.js.map +1 -1
  113. package/esm/helper/serialisation/contextManager.js.map +1 -1
  114. package/esm/helper/serialisation/heavyCustomerDataWarning.js.map +1 -1
  115. package/esm/helper/serialisation/jsonStringify.js.map +1 -1
  116. package/esm/helper/serialisation/rowData.js.map +1 -1
  117. package/esm/helper/serialisation/storedContextManager.js.map +1 -1
  118. package/esm/helper/timer.js.map +1 -1
  119. package/esm/helper/tools.js.map +1 -1
  120. package/esm/helper/urlPolyfill.js.map +1 -1
  121. package/esm/index.js.map +1 -1
  122. package/esm/init.js.map +1 -1
  123. package/esm/report/reportObservable.js.map +1 -1
  124. package/esm/session/sessionConstants.js.map +1 -1
  125. package/esm/session/sessionCookieStore.js.map +1 -1
  126. package/esm/session/sessionManagement.js +7 -2
  127. package/esm/session/sessionManagement.js.map +1 -1
  128. package/esm/session/sessionStore.js +27 -6
  129. package/esm/session/sessionStore.js.map +1 -1
  130. package/esm/synthetics/syntheticsWorkerValues.js.map +1 -1
  131. package/esm/synthetics/usr.js.map +1 -1
  132. package/esm/telemetry/telemetry.js.map +1 -1
  133. package/esm/telemetry/types.js.map +1 -1
  134. package/esm/tracekit/computeStackTrace.js.map +1 -1
  135. package/esm/tracekit/index.js.map +1 -1
  136. package/esm/tracekit/tracekit.js.map +1 -1
  137. package/esm/transport/batch.js.map +1 -1
  138. package/esm/transport/eventBridge.js.map +1 -1
  139. package/esm/transport/flushController.js.map +1 -1
  140. package/esm/transport/httpRequest.js.map +1 -1
  141. package/esm/transport/index.js.map +1 -1
  142. package/esm/transport/sendWithRetryStrategy.js.map +1 -1
  143. package/esm/transport/startBatchWithReplica.js.map +1 -1
  144. package/esm/user/index.js.map +1 -1
  145. package/esm/user/user.js.map +1 -1
  146. package/esm/worker.js.map +1 -1
  147. package/package.json +2 -2
  148. package/src/browser/cookie.js +3 -1
  149. package/src/browser/htmlDomUtils.js +7 -1
  150. package/src/configuration/configuration.js +17 -9
  151. package/src/console/consoleObservable.js +8 -4
  152. package/src/dataMap.js +3 -1
  153. package/src/helper/instrumentMethod.js +5 -4
  154. package/src/helper/lifeCycle.js +2 -0
  155. package/src/session/sessionManagement.js +7 -2
  156. package/src/session/sessionStore.js +26 -7
@@ -1 +1 @@
1
- {"version":3,"file":"flushController.js","names":["Observable","clearTimeout","setTimeout","createFlushController","_ref","messagesLimit","bytesLimit","durationLimit","pageExitObservable","sessionExpireObservable","flushObservable","subscribe","event","flush","reason","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","notify","durationLimitTimeoutId","scheduleDurationLimitTimeout","undefined","getMessagesCount","notifyBeforeAddMessage","messageBytesCount","notifyAfterAddMessage","notifyAfterRemoveMessage"],"sources":["../../src/transport/flushController.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { clearTimeout, setTimeout } from '../helper/timer'\n\n// type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({\n messagesLimit,\n bytesLimit,\n durationLimit,\n pageExitObservable,\n sessionExpireObservable\n}) {\n var flushObservable = new Observable()\n\n pageExitObservable.subscribe(function (event) {\n return flush(event.reason)\n })\n sessionExpireObservable.subscribe(function () {\n return flush('session_expire')\n })\n\n var currentBytesCount = 0\n var currentMessagesCount = 0\n\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n var messagesCount = currentMessagesCount\n var bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount\n })\n }\n\n var durationLimitTimeoutId\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit')\n }, durationLimit)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable: flushObservable,\n getMessagesCount: function () {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage: function (messageBytesCount) {\n if (currentBytesCount + messageBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += messageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n */\n notifyAfterAddMessage: function () {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit')\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n },\n\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount\n currentMessagesCount -= 1\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout()\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,EAAEC,UAAU,QAAQ,iBAAiB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAAC,IAAA,EAMlC;EAAA,IALDC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVC,aAAa,GAAAH,IAAA,CAAbG,aAAa;IACbC,kBAAkB,GAAAJ,IAAA,CAAlBI,kBAAkB;IAClBC,uBAAuB,GAAAL,IAAA,CAAvBK,uBAAuB;EAEvB,IAAIC,eAAe,GAAG,IAAIV,UAAU,CAAC,CAAC;EAEtCQ,kBAAkB,CAACG,SAAS,CAAC,UAAUC,KAAK,EAAE;IAC5C,OAAOC,KAAK,CAACD,KAAK,CAACE,MAAM,CAAC;EAC5B,CAAC,CAAC;EACFL,uBAAuB,CAACE,SAAS,CAAC,YAAY;IAC5C,OAAOE,KAAK,CAAC,gBAAgB,CAAC;EAChC,CAAC,CAAC;EAEF,IAAIE,iBAAiB,GAAG,CAAC;EACzB,IAAIC,oBAAoB,GAAG,CAAC;EAE5B,SAASH,KAAKA,CAACI,WAAW,EAAE;IAC1B,IAAID,oBAAoB,KAAK,CAAC,EAAE;MAC9B;IACF;IAEA,IAAIE,aAAa,GAAGF,oBAAoB;IACxC,IAAIG,UAAU,GAAGJ,iBAAiB;IAElCC,oBAAoB,GAAG,CAAC;IACxBD,iBAAiB,GAAG,CAAC;IACrBK,0BAA0B,CAAC,CAAC;IAE5BV,eAAe,CAACW,MAAM,CAAC;MACrBP,MAAM,EAAEG,WAAW;MACnBC,aAAa,EAAEA,aAAa;MAC5BC,UAAU,EAAEA;IACd,CAAC,CAAC;EACJ;EAEA,IAAIG,sBAAsB;EAC1B,SAASC,4BAA4BA,CAAA,EAAG;IACtC,IAAID,sBAAsB,KAAKE,SAAS,EAAE;MACxCF,sBAAsB,GAAGpB,UAAU,CAAC,YAAY;QAC9CW,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,EAAEN,aAAa,CAAC;IACnB;EACF;EAEA,SAASa,0BAA0BA,CAAA,EAAG;IACpCnB,YAAY,CAACqB,sBAAsB,CAAC;IACpCA,sBAAsB,GAAGE,SAAS;EACpC;EAEA,OAAO;IACLd,eAAe,EAAEA,eAAe;IAChCe,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;MAC5B,OAAOT,oBAAoB;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIU,sBAAsB,EAAE,SAAAA,uBAAUC,iBAAiB,EAAE;MACnD,IAAIZ,iBAAiB,GAAGY,iBAAiB,IAAIrB,UAAU,EAAE;QACvDO,KAAK,CAAC,aAAa,CAAC;MACtB;MACA;MACA;MACA;MACAG,oBAAoB,IAAI,CAAC;MACzBD,iBAAiB,IAAIY,iBAAiB;MACtCJ,4BAA4B,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIK,qBAAqB,EAAE,SAAAA,sBAAA,EAAY;MACjC,IAAIZ,oBAAoB,IAAIX,aAAa,EAAE;QACzCQ,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,MAAM,IAAIE,iBAAiB,IAAIT,UAAU,EAAE;QAC1CO,KAAK,CAAC,aAAa,CAAC;MACtB;IACF,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIgB,wBAAwB,EAAE,SAAAA,yBAAUF,iBAAiB,EAAE;MACrDZ,iBAAiB,IAAIY,iBAAiB;MACtCX,oBAAoB,IAAI,CAAC;MACzB,IAAIA,oBAAoB,KAAK,CAAC,EAAE;QAC9BI,0BAA0B,CAAC,CAAC;MAC9B;IACF;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"flushController.js","names":["Observable","clearTimeout","setTimeout","createFlushController","_ref","messagesLimit","bytesLimit","durationLimit","pageExitObservable","sessionExpireObservable","flushObservable","subscribe","event","flush","reason","currentBytesCount","currentMessagesCount","flushReason","messagesCount","bytesCount","cancelDurationLimitTimeout","notify","durationLimitTimeoutId","scheduleDurationLimitTimeout","undefined","getMessagesCount","notifyBeforeAddMessage","messageBytesCount","notifyAfterAddMessage","notifyAfterRemoveMessage"],"sources":["../../src/transport/flushController.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { clearTimeout, setTimeout } from '../helper/timer'\n\n// type FlushReason = PageExitReason | 'duration_limit' | 'bytes_limit' | 'messages_limit' | 'session_expire'\n\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController({\n messagesLimit,\n bytesLimit,\n durationLimit,\n pageExitObservable,\n sessionExpireObservable\n}) {\n var flushObservable = new Observable()\n\n pageExitObservable.subscribe(function (event) {\n return flush(event.reason)\n })\n sessionExpireObservable.subscribe(function () {\n return flush('session_expire')\n })\n\n var currentBytesCount = 0\n var currentMessagesCount = 0\n\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return\n }\n\n var messagesCount = currentMessagesCount\n var bytesCount = currentBytesCount\n\n currentMessagesCount = 0\n currentBytesCount = 0\n cancelDurationLimitTimeout()\n\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount\n })\n }\n\n var durationLimitTimeoutId\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit')\n }, durationLimit)\n }\n }\n\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId)\n durationLimitTimeoutId = undefined\n }\n\n return {\n flushObservable: flushObservable,\n getMessagesCount: function () {\n return currentMessagesCount\n },\n\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n */\n notifyBeforeAddMessage: function (messageBytesCount) {\n if (currentBytesCount + messageBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1\n currentBytesCount += messageBytesCount\n scheduleDurationLimitTimeout()\n },\n\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n */\n notifyAfterAddMessage: function () {\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit')\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit')\n }\n },\n\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount\n currentMessagesCount -= 1\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout()\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,sBAAsB;AACjD,SAASC,YAAY,EAAEC,UAAU,QAAQ,iBAAiB;;AAE1D;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAAC,IAAA,EAMlC;EAAA,IALDC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVC,aAAa,GAAAH,IAAA,CAAbG,aAAa;IACbC,kBAAkB,GAAAJ,IAAA,CAAlBI,kBAAkB;IAClBC,uBAAuB,GAAAL,IAAA,CAAvBK,uBAAuB;EAEvB,IAAIC,eAAe,GAAG,IAAIV,UAAU,CAAC,CAAC;EAEtCQ,kBAAkB,CAACG,SAAS,CAAC,UAAUC,KAAK,EAAE;IAC5C,OAAOC,KAAK,CAACD,KAAK,CAACE,MAAM,CAAC;EAC5B,CAAC,CAAC;EACFL,uBAAuB,CAACE,SAAS,CAAC,YAAY;IAC5C,OAAOE,KAAK,CAAC,gBAAgB,CAAC;EAChC,CAAC,CAAC;EAEF,IAAIE,iBAAiB,GAAG,CAAC;EACzB,IAAIC,oBAAoB,GAAG,CAAC;EAE5B,SAASH,KAAKA,CAACI,WAAW,EAAE;IAC1B,IAAID,oBAAoB,KAAK,CAAC,EAAE;MAC9B;IACF;IAEA,IAAIE,aAAa,GAAGF,oBAAoB;IACxC,IAAIG,UAAU,GAAGJ,iBAAiB;IAElCC,oBAAoB,GAAG,CAAC;IACxBD,iBAAiB,GAAG,CAAC;IACrBK,0BAA0B,CAAC,CAAC;IAE5BV,eAAe,CAACW,MAAM,CAAC;MACrBP,MAAM,EAAEG,WAAW;MACnBC,aAAa,EAAEA,aAAa;MAC5BC,UAAU,EAAEA;IACd,CAAC,CAAC;EACJ;EAEA,IAAIG,sBAAsB;EAC1B,SAASC,4BAA4BA,CAAA,EAAG;IACtC,IAAID,sBAAsB,KAAKE,SAAS,EAAE;MACxCF,sBAAsB,GAAGpB,UAAU,CAAC,YAAY;QAC9CW,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,EAAEN,aAAa,CAAC;IACnB;EACF;EAEA,SAASa,0BAA0BA,CAAA,EAAG;IACpCnB,YAAY,CAACqB,sBAAsB,CAAC;IACpCA,sBAAsB,GAAGE,SAAS;EACpC;EAEA,OAAO;IACLd,eAAe,EAAEA,eAAe;IAChCe,gBAAgB,EAAE,SAAAA,iBAAA,EAAY;MAC5B,OAAOT,oBAAoB;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIU,sBAAsB,EAAE,SAAAA,uBAAUC,iBAAiB,EAAE;MACnD,IAAIZ,iBAAiB,GAAGY,iBAAiB,IAAIrB,UAAU,EAAE;QACvDO,KAAK,CAAC,aAAa,CAAC;MACtB;MACA;MACA;MACA;MACAG,oBAAoB,IAAI,CAAC;MACzBD,iBAAiB,IAAIY,iBAAiB;MACtCJ,4BAA4B,CAAC,CAAC;IAChC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIK,qBAAqB,EAAE,SAAAA,sBAAA,EAAY;MACjC,IAAIZ,oBAAoB,IAAIX,aAAa,EAAE;QACzCQ,KAAK,CAAC,gBAAgB,CAAC;MACzB,CAAC,MAAM,IAAIE,iBAAiB,IAAIT,UAAU,EAAE;QAC1CO,KAAK,CAAC,aAAa,CAAC;MACtB;IACF,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;IACIgB,wBAAwB,EAAE,SAAAA,yBAAUF,iBAAiB,EAAE;MACrDZ,iBAAiB,IAAIY,iBAAiB;MACtCX,oBAAoB,IAAI,CAAC;MACzB,IAAIA,oBAAoB,KAAK,CAAC,EAAE;QAC9BI,0BAA0B,CAAC,CAAC;MAC9B;IACF;EACF,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"httpRequest.js","names":["newRetryState","sendWithRetryStrategy","addEventListener","monitor","addBatchPrecision","url","indexOf","createHttpRequest","endpointUrl","bytesLimit","sendContentTypeByJson","reportError","contentType","undefined","retryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","Blob","type","isQueued","e","sendXHR","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","fetch","then","response","status","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url) {\n if (!url) return url\n return url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n sendContentTypeByJson,\n reportError\n) {\n var contentType = sendContentTypeByJson\n ? 'application/json; charset=UTF-8'\n : undefined\n var retryState = newRetryState()\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n contentType,\n payload,\n onResponse\n )\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, contentType, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, contentType, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (contentType) {\n beaconData = new Blob([data], {\n type: contentType\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n // reportBeaconError(e)\n }\n }\n sendXHR(url, contentType, data)\n}\n\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n contentType,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n if (contentType) {\n fetchOption.headers = {\n 'Content-Type': contentType\n }\n }\n fetch(url, fetchOption).then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n }),\n monitor(function () {\n // failed to queue the request\n sendXHR(url, contentType, data, onResponse)\n })\n )\n } else {\n sendXHR(url, contentType, data, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, contentType, data, onResponse) {\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (contentType) {\n //application/json; charset=UTF-8\n request.setRequestHeader('Content-Type', contentType)\n }\n\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,qBAAqB,QAAQ,yBAAyB;AAC9E,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,OAAO,QAAQ,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAiBA,CAACC,GAAG,EAAE;EAC9B,IAAI,CAACA,GAAG,EAAE,OAAOA,GAAG;EACpB,OAAOA,GAAG,IAAIA,GAAG,CAACC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,cAAc;AACrE;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,WAAW,EACXC,UAAU,EACVC,qBAAqB,EACrBC,WAAW,EACX;EACA,IAAIC,WAAW,GAAGF,qBAAqB,GACnC,iCAAiC,GACjCG,SAAS;EACb,IAAIC,UAAU,GAAGd,aAAa,CAAC,CAAC;EAChC,IAAIe,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAaC,OAAO,EAAEC,UAAU,EAAE;IACxD,OAAOC,sBAAsB,CAC3BV,WAAW,EACXC,UAAU,EACVG,WAAW,EACXI,OAAO,EACPC,UACF,CAAC;EACH,CAAC;EAED,OAAO;IACLE,IAAI,EAAE,SAAAA,KAAUH,OAAO,EAAE;MACvBf,qBAAqB,CACnBe,OAAO,EACPF,UAAU,EACVC,oBAAoB,EACpBP,WAAW,EACXG,WACF,CAAC;IACH,CAAC;IACD;AACJ;AACA;AACA;IACIS,UAAU,EAAE,SAAAA,WAAUJ,OAAO,EAAE;MAC7BK,kBAAkB,CAACb,WAAW,EAAEC,UAAU,EAAEG,WAAW,EAAEI,OAAO,CAAC;IACnE;EACF,CAAC;AACH;AAEA,SAASK,kBAAkBA,CAACb,WAAW,EAAEC,UAAU,EAAEG,WAAW,EAAEI,OAAO,EAAE;EACzE,IAAIM,IAAI,GAAGN,OAAO,CAACM,IAAI;EACvB,IAAIC,UAAU,GAAGP,OAAO,CAACO,UAAU;EACnC,IAAIlB,GAAG,GAAGD,iBAAiB,CAACI,WAAW,CAAC;EACxC,IAAIgB,YAAY,GAAG,CAAC,CAACC,SAAS,CAACC,UAAU,IAAIH,UAAU,GAAGd,UAAU;EACpE,IAAIe,YAAY,EAAE;IAChB,IAAI;MACF,IAAIG,UAAU;MACd,IAAIf,WAAW,EAAE;QACfe,UAAU,GAAG,IAAIC,IAAI,CAAC,CAACN,IAAI,CAAC,EAAE;UAC5BO,IAAI,EAAEjB;QACR,CAAC,CAAC;MACJ,CAAC,MAAM;QACLe,UAAU,GAAGL,IAAI;MACnB;MAEA,IAAIQ,QAAQ,GAAGL,SAAS,CAACC,UAAU,CAACrB,GAAG,EAAEsB,UAAU,CAAC;MAEpD,IAAIG,QAAQ,EAAE;QACZ;MACF;IACF,CAAC,CAAC,OAAOC,CAAC,EAAE;MACV;IAAA;EAEJ;EACAC,OAAO,CAAC3B,GAAG,EAAEO,WAAW,EAAEU,IAAI,CAAC;AACjC;AAEA,OAAO,SAASJ,sBAAsBA,CACpCV,WAAW,EACXC,UAAU,EACVG,WAAW,EACXI,OAAO,EACPC,UAAU,EACV;EACA,IAAIK,IAAI,GAAGN,OAAO,CAACM,IAAI;EACvB,IAAIC,UAAU,GAAGP,OAAO,CAACO,UAAU;EACnC,IAAIlB,GAAG,GAAGD,iBAAiB,CAACI,WAAW,CAAC;EACxC,IAAIyB,eAAe,GAAGC,oBAAoB,CAAC,CAAC,IAAIX,UAAU,GAAGd,UAAU;EACvE,IAAIwB,eAAe,EAAE;IACnB,IAAIE,WAAW,GAAG;MAChBC,MAAM,EAAE,MAAM;MACdC,IAAI,EAAEf,IAAI;MACVgB,SAAS,EAAE,IAAI;MACfC,IAAI,EAAE;IACR,CAAC;IACD,IAAI3B,WAAW,EAAE;MACfuB,WAAW,CAACK,OAAO,GAAG;QACpB,cAAc,EAAE5B;MAClB,CAAC;IACH;IACA6B,KAAK,CAACpC,GAAG,EAAE8B,WAAW,CAAC,CAACO,IAAI,CAC1BvC,OAAO,CAAC,UAAUwC,QAAQ,EAAE;MAC1B,IAAI,OAAO1B,UAAU,KAAK,UAAU,EAAE;QACpCA,UAAU,CAAC;UAAE2B,MAAM,EAAED,QAAQ,CAACC,MAAM;UAAEf,IAAI,EAAEc,QAAQ,CAACd;QAAK,CAAC,CAAC;MAC9D;IACF,CAAC,CAAC,EACF1B,OAAO,CAAC,YAAY;MAClB;MACA6B,OAAO,CAAC3B,GAAG,EAAEO,WAAW,EAAEU,IAAI,EAAEL,UAAU,CAAC;IAC7C,CAAC,CACH,CAAC;EACH,CAAC,MAAM;IACLe,OAAO,CAAC3B,GAAG,EAAEO,WAAW,EAAEU,IAAI,EAAEL,UAAU,CAAC;EAC7C;AACF;AAEA,SAASiB,oBAAoBA,CAAA,EAAG;EAC9B;EACA,IAAI;IACF,OAAOW,MAAM,CAACC,OAAO,IAAI,WAAW,IAAI,IAAIA,OAAO,CAAC,UAAU,CAAC;EACjE,CAAC,CAAC,OAAAC,OAAA,EAAM;IACN,OAAO,KAAK;EACd;AACF;AAEA,SAASf,OAAOA,CAAC3B,GAAG,EAAEO,WAAW,EAAEU,IAAI,EAAEL,UAAU,EAAE;EACnD,IAAM+B,OAAO,GAAG,IAAIC,cAAc,CAAC,CAAC;EACpCD,OAAO,CAACE,IAAI,CAAC,MAAM,EAAE7C,GAAG,EAAE,IAAI,CAAC;EAC/B,IAAIO,WAAW,EAAE;IACf;IACAoC,OAAO,CAACG,gBAAgB,CAAC,cAAc,EAAEvC,WAAW,CAAC;EACvD;EAEAV,gBAAgB,CACd8C,OAAO,EACP,SAAS,EACT,YAAY;IACV,IAAI,OAAO/B,UAAU,KAAK,UAAU,EAAE;MACpCA,UAAU,CAAC;QAAE2B,MAAM,EAAEI,OAAO,CAACJ;MAAO,CAAC,CAAC;IACxC;EACF,CAAC,EACD;IACEQ,IAAI,EAAE;EACR,CACF,CAAC;EACDJ,OAAO,CAAC7B,IAAI,CAACG,IAAI,CAAC;AACpB"}
1
+ {"version":3,"file":"httpRequest.js","names":["newRetryState","sendWithRetryStrategy","addEventListener","monitor","addBatchPrecision","url","indexOf","createHttpRequest","endpointUrl","bytesLimit","sendContentTypeByJson","reportError","contentType","undefined","retryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","Blob","type","isQueued","e","sendXHR","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","fetch","then","response","status","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url) {\n if (!url) return url\n return url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n sendContentTypeByJson,\n reportError\n) {\n var contentType = sendContentTypeByJson\n ? 'application/json; charset=UTF-8'\n : undefined\n var retryState = newRetryState()\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n contentType,\n payload,\n onResponse\n )\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, contentType, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, contentType, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (contentType) {\n beaconData = new Blob([data], {\n type: contentType\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n // reportBeaconError(e)\n }\n }\n sendXHR(url, contentType, data)\n}\n\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n contentType,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n if (contentType) {\n fetchOption.headers = {\n 'Content-Type': contentType\n }\n }\n fetch(url, fetchOption).then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n }),\n monitor(function () {\n // failed to queue the request\n sendXHR(url, contentType, data, onResponse)\n })\n )\n } else {\n sendXHR(url, contentType, data, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, contentType, data, onResponse) {\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (contentType) {\n //application/json; charset=UTF-8\n request.setRequestHeader('Content-Type', contentType)\n }\n\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createHttpRequest","Batch","processedMessageByDataMap","startBatchWithReplica","createFlushController","getEventBridge","canUseEventBridge"],"sources":["../../src/transport/index.js"],"sourcesContent":["export { createHttpRequest } from './httpRequest'\nexport { Batch, processedMessageByDataMap } from './batch'\nexport { startBatchWithReplica } from './startBatchWithReplica'\nexport { createFlushController } from './flushController'\nexport { getEventBridge, canUseEventBridge } from './eventBridge'\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,eAAe;AACjD,SAASC,KAAK,EAAEC,yBAAyB,QAAQ,SAAS;AAC1D,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,eAAe"}
1
+ {"version":3,"file":"index.js","names":["createHttpRequest","Batch","processedMessageByDataMap","startBatchWithReplica","createFlushController","getEventBridge","canUseEventBridge"],"sources":["../../src/transport/index.js"],"sourcesContent":["export { createHttpRequest } from './httpRequest'\nexport { Batch, processedMessageByDataMap } from './batch'\nexport { startBatchWithReplica } from './startBatchWithReplica'\nexport { createFlushController } from './flushController'\nexport { getEventBridge, canUseEventBridge } from './eventBridge'\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,eAAe;AACjD,SAASC,KAAK,EAAEC,yBAAyB,QAAQ,SAAS;AAC1D,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,eAAe","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"sendWithRetryStrategy.js","names":["clocksNow","ONE_SECOND","ONE_MEBI_BYTE","ONE_KIBI_BYTE","ErrorSource","setTimeout","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","TransportStatus","UP","FAILURE_DETECTED","DOWN","RetryReason","AFTER_SUCCESS","AFTER_RESUME","sendWithRetryStrategy","payload","state","sendStrategy","endpointUrl","reportError","transportStatus","queuedPayloads","size","bandwidthMonitor","canHandle","send","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","first","dequeue","currentBackoffTime","Math","min","responseData","add","response","remove","shouldRetryRequest","ongoingRequestCount","lastFailureStatus","status","reason","isFull","queueFullReported","message","source","AGENT","startClocks","previousQueue","newPayloadQueue","type","navigator","onLine","newRetryState","newBandwidthMonitor","queue","bytesCount","push","shift","length","ongoingByteCount"],"sources":["../../src/transport/sendWithRetryStrategy.js"],"sourcesContent":["import { clocksNow, ONE_SECOND } from '../helper/tools'\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../helper/byteUtils'\nimport { ErrorSource } from '../helper/errorTools'\nimport { setTimeout } from '../helper/timer'\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE\nexport var MAX_ONGOING_REQUESTS = 32\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE\nexport var MAX_BACKOFF_TIME = 256 * ONE_SECOND\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND\n\nvar TransportStatus = {\n UP: 0,\n FAILURE_DETECTED: 1,\n DOWN: 2\n}\n\nvar RetryReason = {\n AFTER_SUCCESS: 0,\n AFTER_RESUME: 1\n}\n\nexport function sendWithRetryStrategy(\n payload,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n) {\n if (\n state.transportStatus === TransportStatus.UP &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)\n ) {\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n return retryQueuedPayloads(\n RetryReason.AFTER_SUCCESS,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n )\n },\n onFailure: function () {\n state.queuedPayloads.enqueue(payload)\n scheduleRetry(state, sendStrategy, endpointUrl, reportError)\n }\n })\n } else {\n state.queuedPayloads.enqueue(payload)\n }\n}\n\nfunction scheduleRetry(state, sendStrategy, endpointUrl, reportError) {\n if (state.transportStatus !== TransportStatus.DOWN) {\n return\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first()\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n state.queuedPayloads.dequeue()\n\n state.currentBackoffTime = INITIAL_BACKOFF_TIME\n retryQueuedPayloads(\n RetryReason.AFTER_RESUME,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n )\n },\n onFailure: function () {\n state.currentBackoffTime = Math.min(\n MAX_BACKOFF_TIME,\n state.currentBackoffTime * 2\n )\n scheduleRetry(state, sendStrategy, endpointUrl, reportError)\n }\n })\n }, state.currentBackoffTime)\n}\n\nfunction send(payload, state, sendStrategy, responseData) {\n var onSuccess = responseData.onSuccess\n var onFailure = responseData.onFailure\n state.bandwidthMonitor.add(payload)\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload)\n if (!shouldRetryRequest(response)) {\n state.transportStatus = TransportStatus.UP\n onSuccess()\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0\n ? TransportStatus.FAILURE_DETECTED\n : TransportStatus.DOWN\n state.lastFailureStatus = response.status\n onFailure()\n }\n })\n}\n\nfunction retryQueuedPayloads(\n reason,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n) {\n if (\n reason === RetryReason.AFTER_SUCCESS &&\n state.queuedPayloads.isFull() &&\n !state.queueFullReported\n ) {\n reportError({\n message:\n 'Reached max ' +\n endpointUrl +\n ' events size queued for upload: ' +\n MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE +\n 'MiB',\n source: ErrorSource.AGENT,\n startClocks: clocksNow()\n })\n state.queueFullReported = true\n }\n var previousQueue = state.queuedPayloads\n state.queuedPayloads = newPayloadQueue()\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(\n previousQueue.dequeue(),\n state,\n sendStrategy,\n endpointUrl,\n reportError\n )\n }\n}\n\nfunction shouldRetryRequest(response) {\n return (\n response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n response.status >= 500)\n )\n}\nexport function newRetryState() {\n return {\n transportStatus: TransportStatus.UP,\n lastFailureStatus: 0,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false\n }\n}\n\nfunction newPayloadQueue() {\n var queue = []\n return {\n bytesCount: 0,\n enqueue: function (payload) {\n if (this.isFull()) {\n return\n }\n queue.push(payload)\n this.bytesCount += payload.bytesCount\n },\n first: function () {\n return queue[0]\n },\n dequeue: function () {\n var payload = queue.shift()\n if (payload) {\n this.bytesCount -= payload.bytesCount\n }\n return payload\n },\n size: function () {\n return queue.length\n },\n isFull: function () {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT\n }\n }\n}\n\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function (payload) {\n return (\n this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <=\n MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS)\n )\n },\n add: function (payload) {\n this.ongoingRequestCount += 1\n this.ongoingByteCount += payload.bytesCount\n },\n remove: function (payload) {\n this.ongoingRequestCount -= 1\n this.ongoingByteCount -= payload.bytesCount\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sendWithRetryStrategy.js","names":["clocksNow","ONE_SECOND","ONE_MEBI_BYTE","ONE_KIBI_BYTE","ErrorSource","setTimeout","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","TransportStatus","UP","FAILURE_DETECTED","DOWN","RetryReason","AFTER_SUCCESS","AFTER_RESUME","sendWithRetryStrategy","payload","state","sendStrategy","endpointUrl","reportError","transportStatus","queuedPayloads","size","bandwidthMonitor","canHandle","send","onSuccess","retryQueuedPayloads","onFailure","enqueue","scheduleRetry","first","dequeue","currentBackoffTime","Math","min","responseData","add","response","remove","shouldRetryRequest","ongoingRequestCount","lastFailureStatus","status","reason","isFull","queueFullReported","message","source","AGENT","startClocks","previousQueue","newPayloadQueue","type","navigator","onLine","newRetryState","newBandwidthMonitor","queue","bytesCount","push","shift","length","ongoingByteCount"],"sources":["../../src/transport/sendWithRetryStrategy.js"],"sourcesContent":["import { clocksNow, ONE_SECOND } from '../helper/tools'\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../helper/byteUtils'\nimport { ErrorSource } from '../helper/errorTools'\nimport { setTimeout } from '../helper/timer'\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE\nexport var MAX_ONGOING_REQUESTS = 32\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE\nexport var MAX_BACKOFF_TIME = 256 * ONE_SECOND\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND\n\nvar TransportStatus = {\n UP: 0,\n FAILURE_DETECTED: 1,\n DOWN: 2\n}\n\nvar RetryReason = {\n AFTER_SUCCESS: 0,\n AFTER_RESUME: 1\n}\n\nexport function sendWithRetryStrategy(\n payload,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n) {\n if (\n state.transportStatus === TransportStatus.UP &&\n state.queuedPayloads.size() === 0 &&\n state.bandwidthMonitor.canHandle(payload)\n ) {\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n return retryQueuedPayloads(\n RetryReason.AFTER_SUCCESS,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n )\n },\n onFailure: function () {\n state.queuedPayloads.enqueue(payload)\n scheduleRetry(state, sendStrategy, endpointUrl, reportError)\n }\n })\n } else {\n state.queuedPayloads.enqueue(payload)\n }\n}\n\nfunction scheduleRetry(state, sendStrategy, endpointUrl, reportError) {\n if (state.transportStatus !== TransportStatus.DOWN) {\n return\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first()\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n state.queuedPayloads.dequeue()\n\n state.currentBackoffTime = INITIAL_BACKOFF_TIME\n retryQueuedPayloads(\n RetryReason.AFTER_RESUME,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n )\n },\n onFailure: function () {\n state.currentBackoffTime = Math.min(\n MAX_BACKOFF_TIME,\n state.currentBackoffTime * 2\n )\n scheduleRetry(state, sendStrategy, endpointUrl, reportError)\n }\n })\n }, state.currentBackoffTime)\n}\n\nfunction send(payload, state, sendStrategy, responseData) {\n var onSuccess = responseData.onSuccess\n var onFailure = responseData.onFailure\n state.bandwidthMonitor.add(payload)\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload)\n if (!shouldRetryRequest(response)) {\n state.transportStatus = TransportStatus.UP\n onSuccess()\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus =\n state.bandwidthMonitor.ongoingRequestCount > 0\n ? TransportStatus.FAILURE_DETECTED\n : TransportStatus.DOWN\n state.lastFailureStatus = response.status\n onFailure()\n }\n })\n}\n\nfunction retryQueuedPayloads(\n reason,\n state,\n sendStrategy,\n endpointUrl,\n reportError\n) {\n if (\n reason === RetryReason.AFTER_SUCCESS &&\n state.queuedPayloads.isFull() &&\n !state.queueFullReported\n ) {\n reportError({\n message:\n 'Reached max ' +\n endpointUrl +\n ' events size queued for upload: ' +\n MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE +\n 'MiB',\n source: ErrorSource.AGENT,\n startClocks: clocksNow()\n })\n state.queueFullReported = true\n }\n var previousQueue = state.queuedPayloads\n state.queuedPayloads = newPayloadQueue()\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(\n previousQueue.dequeue(),\n state,\n sendStrategy,\n endpointUrl,\n reportError\n )\n }\n}\n\nfunction shouldRetryRequest(response) {\n return (\n response.type !== 'opaque' &&\n ((response.status === 0 && !navigator.onLine) ||\n response.status === 408 ||\n response.status === 429 ||\n response.status >= 500)\n )\n}\nexport function newRetryState() {\n return {\n transportStatus: TransportStatus.UP,\n lastFailureStatus: 0,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false\n }\n}\n\nfunction newPayloadQueue() {\n var queue = []\n return {\n bytesCount: 0,\n enqueue: function (payload) {\n if (this.isFull()) {\n return\n }\n queue.push(payload)\n this.bytesCount += payload.bytesCount\n },\n first: function () {\n return queue[0]\n },\n dequeue: function () {\n var payload = queue.shift()\n if (payload) {\n this.bytesCount -= payload.bytesCount\n }\n return payload\n },\n size: function () {\n return queue.length\n },\n isFull: function () {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT\n }\n }\n}\n\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function (payload) {\n return (\n this.ongoingRequestCount === 0 ||\n (this.ongoingByteCount + payload.bytesCount <=\n MAX_ONGOING_BYTES_COUNT &&\n this.ongoingRequestCount < MAX_ONGOING_REQUESTS)\n )\n },\n add: function (payload) {\n this.ongoingRequestCount += 1\n this.ongoingByteCount += payload.bytesCount\n },\n remove: function (payload) {\n this.ongoingRequestCount -= 1\n this.ongoingByteCount -= payload.bytesCount\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"startBatchWithReplica.js","names":["Batch","createHttpRequest","createFlushController","startBatchWithReplica","configuration","endpointUrl","reportError","pageExitObservable","sessionExpireObservable","primaryBatch","createBatch","batchBytesLimit","sendContentTypeByJson","messagesLimit","batchMessagesLimit","bytesLimit","durationLimit","flushTimeout","messageBytesLimit","add","message"],"sources":["../../src/transport/startBatchWithReplica.js"],"sourcesContent":["import { Batch } from './batch'\nimport { createHttpRequest } from './httpRequest'\nimport { createFlushController } from './flushController'\nexport function startBatchWithReplica(\n configuration,\n endpointUrl,\n reportError,\n pageExitObservable,\n sessionExpireObservable\n) {\n var primaryBatch = createBatch(endpointUrl)\n\n function createBatch(endpointUrl) {\n return new Batch(\n createHttpRequest(\n endpointUrl,\n configuration.batchBytesLimit,\n configuration.sendContentTypeByJson,\n reportError\n ),\n createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable\n }),\n configuration.messageBytesLimit,\n configuration.sendContentTypeByJson\n )\n }\n\n return {\n add: function (message) {\n primaryBatch.add(message)\n }\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,SAAS;AAC/B,SAASC,iBAAiB,QAAQ,eAAe;AACjD,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,OAAO,SAASC,qBAAqBA,CACnCC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,kBAAkB,EAClBC,uBAAuB,EACvB;EACA,IAAIC,YAAY,GAAGC,WAAW,CAACL,WAAW,CAAC;EAE3C,SAASK,WAAWA,CAACL,WAAW,EAAE;IAChC,OAAO,IAAIL,KAAK,CACdC,iBAAiB,CACfI,WAAW,EACXD,aAAa,CAACO,eAAe,EAC7BP,aAAa,CAACQ,qBAAqB,EACnCN,WACF,CAAC,EACDJ,qBAAqB,CAAC;MACpBW,aAAa,EAAET,aAAa,CAACU,kBAAkB;MAC/CC,UAAU,EAAEX,aAAa,CAACO,eAAe;MACzCK,aAAa,EAAEZ,aAAa,CAACa,YAAY;MACzCV,kBAAkB,EAAEA,kBAAkB;MACtCC,uBAAuB,EAAEA;IAC3B,CAAC,CAAC,EACFJ,aAAa,CAACc,iBAAiB,EAC/Bd,aAAa,CAACQ,qBAChB,CAAC;EACH;EAEA,OAAO;IACLO,GAAG,EAAE,SAAAA,IAAUC,OAAO,EAAE;MACtBX,YAAY,CAACU,GAAG,CAACC,OAAO,CAAC;IAC3B;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"startBatchWithReplica.js","names":["Batch","createHttpRequest","createFlushController","startBatchWithReplica","configuration","endpointUrl","reportError","pageExitObservable","sessionExpireObservable","primaryBatch","createBatch","batchBytesLimit","sendContentTypeByJson","messagesLimit","batchMessagesLimit","bytesLimit","durationLimit","flushTimeout","messageBytesLimit","add","message"],"sources":["../../src/transport/startBatchWithReplica.js"],"sourcesContent":["import { Batch } from './batch'\nimport { createHttpRequest } from './httpRequest'\nimport { createFlushController } from './flushController'\nexport function startBatchWithReplica(\n configuration,\n endpointUrl,\n reportError,\n pageExitObservable,\n sessionExpireObservable\n) {\n var primaryBatch = createBatch(endpointUrl)\n\n function createBatch(endpointUrl) {\n return new Batch(\n createHttpRequest(\n endpointUrl,\n configuration.batchBytesLimit,\n configuration.sendContentTypeByJson,\n reportError\n ),\n createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable\n }),\n configuration.messageBytesLimit,\n configuration.sendContentTypeByJson\n )\n }\n\n return {\n add: function (message) {\n primaryBatch.add(message)\n }\n }\n}\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,SAAS;AAC/B,SAASC,iBAAiB,QAAQ,eAAe;AACjD,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,OAAO,SAASC,qBAAqBA,CACnCC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,kBAAkB,EAClBC,uBAAuB,EACvB;EACA,IAAIC,YAAY,GAAGC,WAAW,CAACL,WAAW,CAAC;EAE3C,SAASK,WAAWA,CAACL,WAAW,EAAE;IAChC,OAAO,IAAIL,KAAK,CACdC,iBAAiB,CACfI,WAAW,EACXD,aAAa,CAACO,eAAe,EAC7BP,aAAa,CAACQ,qBAAqB,EACnCN,WACF,CAAC,EACDJ,qBAAqB,CAAC;MACpBW,aAAa,EAAET,aAAa,CAACU,kBAAkB;MAC/CC,UAAU,EAAEX,aAAa,CAACO,eAAe;MACzCK,aAAa,EAAEZ,aAAa,CAACa,YAAY;MACzCV,kBAAkB,EAAEA,kBAAkB;MACtCC,uBAAuB,EAAEA;IAC3B,CAAC,CAAC,EACFJ,aAAa,CAACc,iBAAiB,EAC/Bd,aAAa,CAACQ,qBAChB,CAAC;EACH;EAEA,OAAO;IACLO,GAAG,EAAE,SAAAA,IAAUC,OAAO,EAAE;MACtBX,YAAY,CAACU,GAAG,CAACC,OAAO,CAAC;IAC3B;EACF,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/user/index.js"],"sourcesContent":["export * from './user'\n"],"mappings":"AAAA,cAAc,QAAQ"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/user/index.js"],"sourcesContent":["export * from './user'\n"],"mappings":"AAAA,cAAc,QAAQ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","names":["display","assign","getType","each","sanitizeUser","newUser","user","keys","key","String","checkUser","isValid","error"],"sources":["../../src/user/user.js"],"sourcesContent":["import { display } from '../helper/display'\nimport { assign, getType, each } from '../helper/tools'\n\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser)\n var keys = ['id', 'name', 'email']\n each(keys, function (key) {\n if (key in user) {\n user[key] = String(user[key])\n }\n })\n\n return user\n}\n\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object'\n if (!isValid) {\n display.error('Unsupported user:', newUser)\n }\n return isValid\n}\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,MAAM,EAAEC,OAAO,EAAEC,IAAI,QAAQ,iBAAiB;;AAEvD;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,OAAO,EAAE;EACpC;EACA,IAAIC,IAAI,GAAGL,MAAM,CAAC,CAAC,CAAC,EAAEI,OAAO,CAAC;EAC9B,IAAIE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;EAClCJ,IAAI,CAACI,IAAI,EAAE,UAAUC,GAAG,EAAE;IACxB,IAAIA,GAAG,IAAIF,IAAI,EAAE;MACfA,IAAI,CAACE,GAAG,CAAC,GAAGC,MAAM,CAACH,IAAI,CAACE,GAAG,CAAC,CAAC;IAC/B;EACF,CAAC,CAAC;EAEF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA,OAAO,SAASI,SAASA,CAACL,OAAO,EAAE;EACjC,IAAIM,OAAO,GAAGT,OAAO,CAACG,OAAO,CAAC,KAAK,QAAQ;EAC3C,IAAI,CAACM,OAAO,EAAE;IACZX,OAAO,CAACY,KAAK,CAAC,mBAAmB,EAAEP,OAAO,CAAC;EAC7C;EACA,OAAOM,OAAO;AAChB"}
1
+ {"version":3,"file":"user.js","names":["display","assign","getType","each","sanitizeUser","newUser","user","keys","key","String","checkUser","isValid","error"],"sources":["../../src/user/user.js"],"sourcesContent":["import { display } from '../helper/display'\nimport { assign, getType, each } from '../helper/tools'\n\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser)\n var keys = ['id', 'name', 'email']\n each(keys, function (key) {\n if (key in user) {\n user[key] = String(user[key])\n }\n })\n\n return user\n}\n\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object'\n if (!isValid) {\n display.error('Unsupported user:', newUser)\n }\n return isValid\n}\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,MAAM,EAAEC,OAAO,EAAEC,IAAI,QAAQ,iBAAiB;;AAEvD;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,OAAO,EAAE;EACpC;EACA,IAAIC,IAAI,GAAGL,MAAM,CAAC,CAAC,CAAC,EAAEI,OAAO,CAAC;EAC9B,IAAIE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;EAClCJ,IAAI,CAACI,IAAI,EAAE,UAAUC,GAAG,EAAE;IACxB,IAAIA,GAAG,IAAIF,IAAI,EAAE;MACfA,IAAI,CAACE,GAAG,CAAC,GAAGC,MAAM,CAACH,IAAI,CAACE,GAAG,CAAC,CAAC;IAC/B;EACF,CAAC,CAAC;EAEF,OAAOF,IAAI;AACb;;AAEA;AACA;AACA;AACA,OAAO,SAASI,SAASA,CAACL,OAAO,EAAE;EACjC,IAAIM,OAAO,GAAGT,OAAO,CAACG,OAAO,CAAC,KAAK,QAAQ;EAC3C,IAAI,CAACM,OAAO,EAAE;IACZX,OAAO,CAACY,KAAK,CAAC,mBAAmB,EAAEP,OAAO,CAAC;EAC7C;EACA,OAAOM,OAAO;AAChB","ignoreList":[]}
package/esm/worker.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","names":["concatBuffers"],"sources":["../src/worker.js"],"sourcesContent":["export { concatBuffers } from './helper/byteUtils'\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,oBAAoB"}
1
+ {"version":3,"file":"worker.js","names":["concatBuffers"],"sources":["../src/worker.js"],"sourcesContent":["export { concatBuffers } from './helper/byteUtils'\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,oBAAoB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "3.1.10",
3
+ "version": "3.1.12",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "types/index.d.ts",
@@ -22,5 +22,5 @@
22
22
  "author": "dataflux",
23
23
  "license": "MIT",
24
24
  "description": "DataFlux RUM Web 端数据指标监控",
25
- "gitHead": "2361945f9933caee1559f4e3fd2c954488188844"
25
+ "gitHead": "01fca1d8b95bbd1e8e7936bda860af98bf76fa02"
26
26
  }
@@ -13,6 +13,7 @@ export function setCookie(name, value, expireDelay, options) {
13
13
  var sameSite = options && options.crossSite ? 'none' : 'strict'
14
14
  var domain = options && options.domain ? ';domain=' + options.domain : ''
15
15
  var secure = options && options.secure ? ';secure' : ''
16
+ var partitioned = options && options.partitioned ? ';partitioned' : ''
16
17
  document.cookie =
17
18
  name +
18
19
  '=' +
@@ -22,7 +23,8 @@ export function setCookie(name, value, expireDelay, options) {
22
23
  ';path=/;samesite=' +
23
24
  sameSite +
24
25
  domain +
25
- secure
26
+ secure +
27
+ partitioned
26
28
  }
27
29
 
28
30
  export function getCookie(name) {
@@ -29,7 +29,13 @@ export function hasChildNodes(node) {
29
29
  // return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes
30
30
  // }
31
31
  export function forEachChildNodes(node, callback) {
32
- node.childNodes.forEach(callback)
32
+ // node.childNodes.forEach(callback)
33
+ var child = node.firstChild
34
+
35
+ while (child) {
36
+ callback(child)
37
+ child = child.nextSibling
38
+ }
33
39
  if (isNodeShadowHost(node)) {
34
40
  callback(node.shadowRoot)
35
41
  }
@@ -119,9 +119,17 @@ export function validatePostRequestRequireParamsConfiguration(
119
119
  export function buildCookieOptions(initConfiguration) {
120
120
  var cookieOptions = {}
121
121
 
122
- cookieOptions.secure = mustUseSecureCookie(initConfiguration)
123
- cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie
124
-
122
+ // cookieOptions.secure = mustUseSecureCookie(initConfiguration)
123
+ // cookieOptions.crossSite = !!initConfiguration.useCrossSiteSessionCookie
124
+ cookieOptions.secure =
125
+ !!initConfiguration.useSecureSessionCookie ||
126
+ !!initConfiguration.usePartitionedCrossSiteSessionCookie ||
127
+ !!initConfiguration.useCrossSiteSessionCookie
128
+ cookieOptions.crossSite =
129
+ !!initConfiguration.usePartitionedCrossSiteSessionCookie ||
130
+ !!initConfiguration.useCrossSiteSessionCookie
131
+ cookieOptions.partitioned =
132
+ !!initConfiguration.usePartitionedCrossSiteSessionCookie
125
133
  if (initConfiguration.trackSessionAcrossSubdomains) {
126
134
  cookieOptions.domain = getCurrentSite()
127
135
  }
@@ -129,9 +137,9 @@ export function buildCookieOptions(initConfiguration) {
129
137
  return cookieOptions
130
138
  }
131
139
 
132
- function mustUseSecureCookie(initConfiguration) {
133
- return (
134
- !!initConfiguration.useSecureSessionCookie ||
135
- !!initConfiguration.useCrossSiteSessionCookie
136
- )
137
- }
140
+ // function mustUseSecureCookie(initConfiguration) {
141
+ // return (
142
+ // !!initConfiguration.useSecureSessionCookie ||
143
+ // !!initConfiguration.useCrossSiteSessionCookie
144
+ // )
145
+ // }
@@ -2,7 +2,8 @@ import { computeStackTrace } from '../tracekit'
2
2
  import {
3
3
  createHandlingStack,
4
4
  formatErrorMessage,
5
- toStackTraceString
5
+ toStackTraceString,
6
+ flattenErrorCauses
6
7
  } from '../helper/errorTools'
7
8
  import { mergeObservables, Observable } from '../helper/observable'
8
9
  import { find, map } from '../helper/tools'
@@ -38,7 +39,6 @@ function createConsoleObservable(api) {
38
39
  console[api] = originalConsoleApi
39
40
  }
40
41
  })
41
- return observable
42
42
  }
43
43
 
44
44
  function buildConsoleLog(params, api, handlingStack) {
@@ -46,7 +46,7 @@ function buildConsoleLog(params, api, handlingStack) {
46
46
  return formatConsoleParameters(param)
47
47
  }).join(' ')
48
48
  var stack
49
-
49
+ var causes
50
50
  if (api === ConsoleApiName.error) {
51
51
  var firstErrorParam = find(params, function (param) {
52
52
  return param instanceof Error
@@ -55,13 +55,17 @@ function buildConsoleLog(params, api, handlingStack) {
55
55
  ? toStackTraceString(computeStackTrace(firstErrorParam))
56
56
  : undefined
57
57
  message = 'console error: ' + message
58
+ causes = firstErrorParam
59
+ ? flattenErrorCauses(firstErrorParam, 'console')
60
+ : undefined
58
61
  }
59
62
 
60
63
  return {
61
64
  api: api,
62
65
  message: message,
63
66
  stack: stack,
64
- handlingStack: handlingStack
67
+ handlingStack: handlingStack,
68
+ causes: causes
65
69
  }
66
70
  }
67
71
 
package/src/dataMap.js CHANGED
@@ -107,7 +107,9 @@ export var dataMap = {
107
107
  fields: {
108
108
  duration: 'resource.duration',
109
109
  resource_size: 'resource.size',
110
- resource_encode_size: 'resource.encode_size',
110
+ resource_encode_size: 'resource.encoded_body_size',
111
+ resource_decode_size: 'resource.decoded_body_size',
112
+ resource_transfer_size: 'resource.transfer_size',
111
113
  resource_render_blocking_status: 'resource.render_blocking_status',
112
114
  resource_dns: 'resource.dns',
113
115
  resource_tcp: 'resource.tcp',
@@ -55,12 +55,13 @@ export function instrumentSetter(object, property, after) {
55
55
  ) {
56
56
  return { stop: noop }
57
57
  }
58
- // Using the patched `setTimeout` from Zone.js triggers a rendering loop in some Angular
59
- // component, see issue RUMF-1443
58
+ var stoppedInstrumentation = noop
60
59
  var instrumentation = function (thisObject, value) {
61
60
  // put hooked setter into event loop to avoid of set latency
62
61
  setTimeout(function () {
63
- after(thisObject, value)
62
+ if (instrumentation !== stoppedInstrumentation) {
63
+ after(thisObject, value)
64
+ }
64
65
  }, 0)
65
66
  }
66
67
 
@@ -82,7 +83,7 @@ export function instrumentSetter(object, property, after) {
82
83
  ) {
83
84
  Object.defineProperty(object, property, originalDescriptor)
84
85
  } else {
85
- instrumentation = noop
86
+ instrumentation = stoppedInstrumentation
86
87
  }
87
88
  }
88
89
  }
@@ -2,9 +2,11 @@ import { each, filter } from './tools'
2
2
  export var LifeCycleEventType = {
3
3
  PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',
4
4
  AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',
5
+ BEFORE_VIEW_CREATED: 'BEFORE_VIEW_CREATED',
5
6
  VIEW_CREATED: 'VIEW_CREATED',
6
7
  VIEW_UPDATED: 'VIEW_UPDATED',
7
8
  VIEW_ENDED: 'VIEW_ENDED',
9
+ AFTER_VIEW_ENDED: 'AFTER_VIEW_ENDED',
8
10
  SESSION_RENEWED: 'SESSION_RENEWED',
9
11
  SESSION_EXPIRED: 'SESSION_EXPIRED',
10
12
  PAGE_EXITED: 'PAGE_EXITED',
@@ -8,6 +8,7 @@ import { startSessionStore } from './sessionStore'
8
8
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants'
9
9
  import { DOM_EVENT } from '../helper/enums'
10
10
  import { clearInterval, setInterval } from '../helper/timer'
11
+ import { Observable } from '../helper/observable'
11
12
  export var VISIBILITY_CHECK_DELAY = ONE_MINUTE
12
13
  var SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY
13
14
  var stopCallbacks = []
@@ -17,6 +18,8 @@ export var startSessionManager = function (
17
18
  productKey,
18
19
  computeSessionState
19
20
  ) {
21
+ var renewObservable = new Observable()
22
+ var expireObservable = new Observable()
20
23
  var sessionStore = startSessionStore(options, productKey, computeSessionState)
21
24
  stopCallbacks.push(function () {
22
25
  return sessionStore.stop()
@@ -29,8 +32,10 @@ export var startSessionManager = function (
29
32
 
30
33
  sessionStore.renewObservable.subscribe(function () {
31
34
  sessionContextHistory.add(buildSessionContext(), relativeNow())
35
+ renewObservable.notify()
32
36
  })
33
37
  sessionStore.expireObservable.subscribe(function () {
38
+ expireObservable.notify()
34
39
  sessionContextHistory.closeActive(relativeNow())
35
40
  })
36
41
 
@@ -55,8 +60,8 @@ export var startSessionManager = function (
55
60
  findActiveSession: function (startTime) {
56
61
  return sessionContextHistory.find(startTime)
57
62
  },
58
- renewObservable: sessionStore.renewObservable,
59
- expireObservable: sessionStore.expireObservable,
63
+ renewObservable: renewObservable,
64
+ expireObservable: expireObservable,
60
65
  expire: sessionStore.expire
61
66
  }
62
67
  }
@@ -1,6 +1,6 @@
1
1
  import { COOKIE_ACCESS_DELAY } from '../browser/cookie'
2
2
  import { Observable } from '../helper/observable'
3
- import { dateNow, UUID, throttle } from '../helper/tools'
3
+ import { dateNow, UUID, throttle, ONE_SECOND } from '../helper/tools'
4
4
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants'
5
5
  import {
6
6
  retrieveSession,
@@ -9,6 +9,7 @@ import {
9
9
  } from './sessionCookieStore'
10
10
  import { clearInterval, setInterval } from '../helper/timer'
11
11
 
12
+ export var STORAGE_POLL_DELAY = ONE_SECOND
12
13
  /**
13
14
  * Different session concepts:
14
15
  * - tracked, the session has an id and is updated along the user navigation
@@ -19,10 +20,9 @@ export function startSessionStore(options, productKey, computeSessionState) {
19
20
  var renewObservable = new Observable()
20
21
  var expireObservable = new Observable()
21
22
 
22
- var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY)
23
+ var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)
23
24
  var sessionCache = retrieveActiveSession()
24
-
25
- function expandOrRenewSession() {
25
+ var _throttleExpandOrRenewSession = throttle(function () {
26
26
  var isTracked
27
27
  withCookieLockAccess({
28
28
  options: options,
@@ -38,7 +38,26 @@ export function startSessionStore(options, productKey, computeSessionState) {
38
38
  sessionCache = cookieSession
39
39
  }
40
40
  })
41
- }
41
+ }, STORAGE_POLL_DELAY)
42
+ var throttledExpandOrRenewSession = _throttleExpandOrRenewSession.throttled
43
+ var cancelExpandOrRenewSession = _throttleExpandOrRenewSession.cancel
44
+ // function expandOrRenewSession() {
45
+ // var isTracked
46
+ // withCookieLockAccess({
47
+ // options: options,
48
+ // process: function (cookieSession) {
49
+ // var synchronizedSession = synchronizeSession(cookieSession)
50
+ // isTracked = expandOrRenewCookie(synchronizedSession)
51
+ // return synchronizedSession
52
+ // },
53
+ // after: function (cookieSession) {
54
+ // if (isTracked && !hasSessionInCache()) {
55
+ // renewSession(cookieSession)
56
+ // }
57
+ // sessionCache = cookieSession
58
+ // }
59
+ // })
60
+ // }
42
61
 
43
62
  function expandSession() {
44
63
  withCookieLockAccess({
@@ -132,8 +151,7 @@ export function startSessionStore(options, productKey, computeSessionState) {
132
151
  }
133
152
 
134
153
  return {
135
- expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY)
136
- .throttled,
154
+ expandOrRenewSession: throttledExpandOrRenewSession,
137
155
  expandSession: expandSession,
138
156
  getSession: function () {
139
157
  return sessionCache
@@ -141,6 +159,7 @@ export function startSessionStore(options, productKey, computeSessionState) {
141
159
  renewObservable: renewObservable,
142
160
  expireObservable: expireObservable,
143
161
  expire: function () {
162
+ cancelExpandOrRenewSession()
144
163
  clearSession(options)
145
164
  synchronizeSession({})
146
165
  },