@cloudcare/browser-core 3.1.24 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/cjs/browser/pageExitObservable.js +1 -1
  2. package/cjs/browser/pageExitObservable.js.map +1 -1
  3. package/cjs/console/consoleObservable.js +17 -9
  4. package/cjs/console/consoleObservable.js.map +1 -1
  5. package/cjs/dataMap.js +11 -2
  6. package/cjs/dataMap.js.map +1 -1
  7. package/cjs/helper/boundedBuffer.js +21 -17
  8. package/cjs/helper/boundedBuffer.js.map +1 -1
  9. package/cjs/helper/connectivity.js +16 -0
  10. package/cjs/helper/connectivity.js.map +1 -0
  11. package/cjs/helper/display.js +15 -12
  12. package/cjs/helper/display.js.map +1 -1
  13. package/cjs/helper/displayAlreadyInitializedError.js +13 -0
  14. package/cjs/helper/displayAlreadyInitializedError.js.map +1 -0
  15. package/cjs/helper/encoder.js +43 -0
  16. package/cjs/helper/encoder.js.map +1 -0
  17. package/cjs/helper/lifeCycle.js +0 -1
  18. package/cjs/helper/lifeCycle.js.map +1 -1
  19. package/cjs/helper/monitor.js +6 -6
  20. package/cjs/helper/monitor.js.map +1 -1
  21. package/cjs/helper/serialisation/jsonStringify.js.map +1 -1
  22. package/cjs/index.js +33 -0
  23. package/cjs/index.js.map +1 -1
  24. package/cjs/report/reportObservable.js +26 -20
  25. package/cjs/report/reportObservable.js.map +1 -1
  26. package/cjs/telemetry/telemetry.js +60 -31
  27. package/cjs/telemetry/telemetry.js.map +1 -1
  28. package/cjs/telemetry/types.js +2 -1
  29. package/cjs/telemetry/types.js.map +1 -1
  30. package/cjs/transport/batch.js +129 -79
  31. package/cjs/transport/batch.js.map +1 -1
  32. package/cjs/transport/flushController.js +18 -5
  33. package/cjs/transport/flushController.js.map +1 -1
  34. package/cjs/transport/httpRequest.js +35 -22
  35. package/cjs/transport/httpRequest.js.map +1 -1
  36. package/cjs/transport/index.js +4 -4
  37. package/cjs/transport/index.js.map +1 -1
  38. package/cjs/transport/startBatchWithReplica.js +26 -10
  39. package/cjs/transport/startBatchWithReplica.js.map +1 -1
  40. package/esm/browser/pageExitObservable.js +1 -1
  41. package/esm/browser/pageExitObservable.js.map +1 -1
  42. package/esm/console/consoleObservable.js +18 -10
  43. package/esm/console/consoleObservable.js.map +1 -1
  44. package/esm/dataMap.js +11 -2
  45. package/esm/dataMap.js.map +1 -1
  46. package/esm/helper/boundedBuffer.js +21 -16
  47. package/esm/helper/boundedBuffer.js.map +1 -1
  48. package/esm/helper/connectivity.js +10 -0
  49. package/esm/helper/connectivity.js.map +1 -0
  50. package/esm/helper/display.js +12 -11
  51. package/esm/helper/display.js.map +1 -1
  52. package/esm/helper/displayAlreadyInitializedError.js +7 -0
  53. package/esm/helper/displayAlreadyInitializedError.js.map +1 -0
  54. package/esm/helper/encoder.js +37 -0
  55. package/esm/helper/encoder.js.map +1 -0
  56. package/esm/helper/lifeCycle.js +0 -1
  57. package/esm/helper/lifeCycle.js.map +1 -1
  58. package/esm/helper/monitor.js +6 -6
  59. package/esm/helper/monitor.js.map +1 -1
  60. package/esm/helper/serialisation/jsonStringify.js.map +1 -1
  61. package/esm/index.js +3 -0
  62. package/esm/index.js.map +1 -1
  63. package/esm/report/reportObservable.js +27 -21
  64. package/esm/report/reportObservable.js.map +1 -1
  65. package/esm/telemetry/telemetry.js +57 -31
  66. package/esm/telemetry/telemetry.js.map +1 -1
  67. package/esm/telemetry/types.js +2 -1
  68. package/esm/telemetry/types.js.map +1 -1
  69. package/esm/transport/batch.js +127 -77
  70. package/esm/transport/batch.js.map +1 -1
  71. package/esm/transport/flushController.js +18 -5
  72. package/esm/transport/flushController.js.map +1 -1
  73. package/esm/transport/httpRequest.js +35 -22
  74. package/esm/transport/httpRequest.js.map +1 -1
  75. package/esm/transport/index.js +1 -1
  76. package/esm/transport/index.js.map +1 -1
  77. package/esm/transport/startBatchWithReplica.js +27 -11
  78. package/esm/transport/startBatchWithReplica.js.map +1 -1
  79. package/package.json +2 -2
  80. package/src/browser/pageExitObservable.js +2 -2
  81. package/src/console/consoleObservable.js +22 -14
  82. package/src/dataMap.js +11 -2
  83. package/src/helper/boundedBuffer.js +21 -14
  84. package/src/helper/connectivity.js +11 -0
  85. package/src/helper/display.js +16 -14
  86. package/src/helper/displayAlreadyInitializedError.js +7 -0
  87. package/src/helper/encoder.js +43 -0
  88. package/src/helper/lifeCycle.js +0 -1
  89. package/src/helper/monitor.js +6 -6
  90. package/src/helper/serialisation/jsonStringify.js +1 -1
  91. package/src/index.js +3 -0
  92. package/src/report/reportObservable.js +43 -27
  93. package/src/telemetry/telemetry.js +60 -37
  94. package/src/telemetry/types.js +2 -1
  95. package/src/transport/batch.js +154 -89
  96. package/src/transport/flushController.js +19 -6
  97. package/src/transport/httpRequest.js +34 -35
  98. package/src/transport/index.js +1 -1
  99. package/src/transport/startBatchWithReplica.js +25 -14
  100. package/types/index.d.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"jsonStringify.js","names":["noop","jsonStringify","value","replacer","space","_typeof","JSON","stringify","restoreObjectPrototypeToJson","detachToJsonMethod","Object","prototype","restoreArrayPrototypeToJson","Array","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","_unused","object","objectToJson","toJSON"],"sources":["../../../src/helper/serialisation/jsonStringify.js"],"sourcesContent":["import { noop } from '../tools'\n\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value)\n }\n\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n var restoreValuePrototypeToJson = detachToJsonMethod(\n Object.getPrototypeOf(value)\n )\n var restoreValueToJson = detachToJsonMethod(value)\n\n try {\n return JSON.stringify(value, replacer, space)\n } catch {\n return '<error: unable to serialize object>'\n } finally {\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n restoreValuePrototypeToJson()\n restoreValueToJson()\n }\n}\n\nexport function detachToJsonMethod(value) {\n const object = value\n const objectToJson = object.toJSON\n if (objectToJson) {\n delete object.toJSON\n return () => {\n object.toJSON = objectToJson\n }\n }\n return noop\n}\n"],"mappings":";AAAA,SAASA,IAAI,QAAQ,UAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,KAAK,EAAEC,QAAQ,EAAEC,KAAK,EAAE;EACpD,IAAIC,OAAA,CAAOH,KAAK,MAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;IAC/C,OAAOI,IAAI,CAACC,SAAS,CAACL,KAAK,CAAC;EAC9B;;EAEA;EACA;EACA,IAAIM,4BAA4B,GAAGC,kBAAkB,CAACC,MAAM,CAACC,SAAS,CAAC;EACvE,IAAIC,2BAA2B,GAAGH,kBAAkB,CAACI,KAAK,CAACF,SAAS,CAAC;EACrE,IAAIG,2BAA2B,GAAGL,kBAAkB,CAClDC,MAAM,CAACK,cAAc,CAACb,KAAK,CAC7B,CAAC;EACD,IAAIc,kBAAkB,GAAGP,kBAAkB,CAACP,KAAK,CAAC;EAElD,IAAI;IACF,OAAOI,IAAI,CAACC,SAAS,CAACL,KAAK,EAAEC,QAAQ,EAAEC,KAAK,CAAC;EAC/C,CAAC,CAAC,OAAAa,OAAA,EAAM;IACN,OAAO,qCAAqC;EAC9C,CAAC,SAAS;IACRT,4BAA4B,CAAC,CAAC;IAC9BI,2BAA2B,CAAC,CAAC;IAC7BE,2BAA2B,CAAC,CAAC;IAC7BE,kBAAkB,CAAC,CAAC;EACtB;AACF;AAEA,OAAO,SAASP,kBAAkBA,CAACP,KAAK,EAAE;EACxC,IAAMgB,MAAM,GAAGhB,KAAK;EACpB,IAAMiB,YAAY,GAAGD,MAAM,CAACE,MAAM;EAClC,IAAID,YAAY,EAAE;IAChB,OAAOD,MAAM,CAACE,MAAM;IACpB,OAAO,YAAM;MACXF,MAAM,CAACE,MAAM,GAAGD,YAAY;IAC9B,CAAC;EACH;EACA,OAAOnB,IAAI;AACb","ignoreList":[]}
1
+ {"version":3,"file":"jsonStringify.js","names":["noop","jsonStringify","value","replacer","space","_typeof","JSON","stringify","restoreObjectPrototypeToJson","detachToJsonMethod","Object","prototype","restoreArrayPrototypeToJson","Array","restoreValuePrototypeToJson","getPrototypeOf","restoreValueToJson","_unused","object","objectToJson","toJSON"],"sources":["../../../src/helper/serialisation/jsonStringify.js"],"sourcesContent":["import { noop } from '../tools'\n\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value)\n }\n\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype)\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype)\n var restoreValuePrototypeToJson = detachToJsonMethod(\n Object.getPrototypeOf(value)\n )\n var restoreValueToJson = detachToJsonMethod(value)\n\n try {\n return JSON.stringify(value, replacer, space)\n } catch {\n return '<error: unable to serialize object>'\n } finally {\n restoreObjectPrototypeToJson()\n restoreArrayPrototypeToJson()\n restoreValuePrototypeToJson()\n restoreValueToJson()\n }\n}\n\nexport function detachToJsonMethod(value) {\n const object = value\n const objectToJson = object.toJSON\n if (objectToJson) {\n delete object.toJSON\n return function () {\n object.toJSON = objectToJson\n }\n }\n return noop\n}\n"],"mappings":";AAAA,SAASA,IAAI,QAAQ,UAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,KAAK,EAAEC,QAAQ,EAAEC,KAAK,EAAE;EACpD,IAAIC,OAAA,CAAOH,KAAK,MAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;IAC/C,OAAOI,IAAI,CAACC,SAAS,CAACL,KAAK,CAAC;EAC9B;;EAEA;EACA;EACA,IAAIM,4BAA4B,GAAGC,kBAAkB,CAACC,MAAM,CAACC,SAAS,CAAC;EACvE,IAAIC,2BAA2B,GAAGH,kBAAkB,CAACI,KAAK,CAACF,SAAS,CAAC;EACrE,IAAIG,2BAA2B,GAAGL,kBAAkB,CAClDC,MAAM,CAACK,cAAc,CAACb,KAAK,CAC7B,CAAC;EACD,IAAIc,kBAAkB,GAAGP,kBAAkB,CAACP,KAAK,CAAC;EAElD,IAAI;IACF,OAAOI,IAAI,CAACC,SAAS,CAACL,KAAK,EAAEC,QAAQ,EAAEC,KAAK,CAAC;EAC/C,CAAC,CAAC,OAAAa,OAAA,EAAM;IACN,OAAO,qCAAqC;EAC9C,CAAC,SAAS;IACRT,4BAA4B,CAAC,CAAC;IAC9BI,2BAA2B,CAAC,CAAC;IAC7BE,2BAA2B,CAAC,CAAC;IAC7BE,kBAAkB,CAAC,CAAC;EACtB;AACF;AAEA,OAAO,SAASP,kBAAkBA,CAACP,KAAK,EAAE;EACxC,IAAMgB,MAAM,GAAGhB,KAAK;EACpB,IAAMiB,YAAY,GAAGD,MAAM,CAACE,MAAM;EAClC,IAAID,YAAY,EAAE;IAChB,OAAOD,MAAM,CAACE,MAAM;IACpB,OAAO,YAAY;MACjBF,MAAM,CAACE,MAAM,GAAGD,YAAY;IAC9B,CAAC;EACH;EACA,OAAOnB,IAAI;AACb","ignoreList":[]}
package/esm/index.js CHANGED
@@ -46,8 +46,11 @@ export * from './helper/serialisation/heavyCustomerDataWarning';
46
46
  export * from './helper/serialisation/jsonStringify';
47
47
  export * from './helper/serialisation/rowData';
48
48
  export * from './helper/serialisation/storedContextManager';
49
+ export * from './helper/encoder';
49
50
  export * from './user';
50
51
  export * from './helper/polyfills';
51
52
  export * from './telemetry/telemetry';
52
53
  export * from './helper/catchUserErrors';
54
+ export * from './helper/connectivity';
55
+ export * from './helper/displayAlreadyInitializedError';
53
56
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["export * from './helper/boundedBuffer'\nexport * from './helper/valueHistory'\nexport * from './helper/deviceInfo'\nexport * from './helper/enums'\nexport * from './helper/instrumentMethod'\nexport * from './helper/errorTools'\nexport * from './helper/byteUtils'\nexport * from './error/trackRuntimeError'\nexport * from './console/consoleObservable'\nexport * from './report/reportObservable'\nexport * from './helper/display'\nexport * from './helper/monitor'\nexport * from './helper/sanitize'\nexport * from './helper/eventEmitter'\nexport * from './helper/lifeCycle'\nexport * from './helper/limitModification'\nexport * from './helper/createEventRateLimiter'\nexport * from './helper/observable'\nexport * from './helper/tools'\nexport * from './helper/urlPolyfill'\nexport * from './helper/mobileUtil'\nexport * from './helper/getZoneJsOriginalValue'\nexport * from './helper/timer'\nexport * from './helper/readBytesFromStream'\nexport * from './tracekit'\nexport * from './configuration/configuration'\nexport * from './configuration/transportConfiguration'\nexport * from './browser/cookie'\nexport * from './browser/fetchObservable'\nexport * from './browser/xhrObservable'\nexport * from './browser/pageExitObservable'\nexport * from './browser/htmlDomUtils'\nexport * from './browser/addEventListener'\nexport * from './browser/runOnReadyState'\nexport * from './browser/scroll'\n\nexport * from './dataMap'\nexport * from './init'\nexport * from './session/sessionManagement'\nexport * from './session/sessionConstants'\nexport * from './session/sessionCookieStore'\nexport * from './session/sessionStore'\nexport * from './transport'\nexport * from './synthetics/syntheticsWorkerValues'\n\nexport * from './helper/serialisation/contextManager'\nexport * from './helper/serialisation/heavyCustomerDataWarning'\nexport * from './helper/serialisation/jsonStringify'\nexport * from './helper/serialisation/rowData'\nexport * from './helper/serialisation/storedContextManager'\nexport * from './user'\nexport * from './helper/polyfills'\nexport * from './telemetry/telemetry'\nexport * from './helper/catchUserErrors'\n"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,2BAA2B;AACzC,cAAc,qBAAqB;AACnC,cAAc,oBAAoB;AAClC,cAAc,2BAA2B;AACzC,cAAc,6BAA6B;AAC3C,cAAc,2BAA2B;AACzC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,uBAAuB;AACrC,cAAc,oBAAoB;AAClC,cAAc,4BAA4B;AAC1C,cAAc,iCAAiC;AAC/C,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,sBAAsB;AACpC,cAAc,qBAAqB;AACnC,cAAc,iCAAiC;AAC/C,cAAc,gBAAgB;AAC9B,cAAc,8BAA8B;AAC5C,cAAc,YAAY;AAC1B,cAAc,+BAA+B;AAC7C,cAAc,wCAAwC;AACtD,cAAc,kBAAkB;AAChC,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AACvC,cAAc,8BAA8B;AAC5C,cAAc,wBAAwB;AACtC,cAAc,4BAA4B;AAC1C,cAAc,2BAA2B;AACzC,cAAc,kBAAkB;AAEhC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,6BAA6B;AAC3C,cAAc,4BAA4B;AAC1C,cAAc,8BAA8B;AAC5C,cAAc,wBAAwB;AACtC,cAAc,aAAa;AAC3B,cAAc,qCAAqC;AAEnD,cAAc,uCAAuC;AACrD,cAAc,iDAAiD;AAC/D,cAAc,sCAAsC;AACpD,cAAc,gCAAgC;AAC9C,cAAc,6CAA6C;AAC3D,cAAc,QAAQ;AACtB,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,0BAA0B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["export * from './helper/boundedBuffer'\nexport * from './helper/valueHistory'\nexport * from './helper/deviceInfo'\nexport * from './helper/enums'\nexport * from './helper/instrumentMethod'\nexport * from './helper/errorTools'\nexport * from './helper/byteUtils'\nexport * from './error/trackRuntimeError'\nexport * from './console/consoleObservable'\nexport * from './report/reportObservable'\nexport * from './helper/display'\nexport * from './helper/monitor'\nexport * from './helper/sanitize'\nexport * from './helper/eventEmitter'\nexport * from './helper/lifeCycle'\nexport * from './helper/limitModification'\nexport * from './helper/createEventRateLimiter'\nexport * from './helper/observable'\nexport * from './helper/tools'\nexport * from './helper/urlPolyfill'\nexport * from './helper/mobileUtil'\nexport * from './helper/getZoneJsOriginalValue'\nexport * from './helper/timer'\nexport * from './helper/readBytesFromStream'\nexport * from './tracekit'\nexport * from './configuration/configuration'\nexport * from './configuration/transportConfiguration'\nexport * from './browser/cookie'\nexport * from './browser/fetchObservable'\nexport * from './browser/xhrObservable'\nexport * from './browser/pageExitObservable'\nexport * from './browser/htmlDomUtils'\nexport * from './browser/addEventListener'\nexport * from './browser/runOnReadyState'\nexport * from './browser/scroll'\n\nexport * from './dataMap'\nexport * from './init'\nexport * from './session/sessionManagement'\nexport * from './session/sessionConstants'\nexport * from './session/sessionCookieStore'\nexport * from './session/sessionStore'\nexport * from './transport'\nexport * from './synthetics/syntheticsWorkerValues'\n\nexport * from './helper/serialisation/contextManager'\nexport * from './helper/serialisation/heavyCustomerDataWarning'\nexport * from './helper/serialisation/jsonStringify'\nexport * from './helper/serialisation/rowData'\nexport * from './helper/serialisation/storedContextManager'\nexport * from './helper/encoder'\nexport * from './user'\nexport * from './helper/polyfills'\nexport * from './telemetry/telemetry'\nexport * from './helper/catchUserErrors'\nexport * from './helper/connectivity'\nexport * from './helper/displayAlreadyInitializedError'\n"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,uBAAuB;AACrC,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,2BAA2B;AACzC,cAAc,qBAAqB;AACnC,cAAc,oBAAoB;AAClC,cAAc,2BAA2B;AACzC,cAAc,6BAA6B;AAC3C,cAAc,2BAA2B;AACzC,cAAc,kBAAkB;AAChC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,uBAAuB;AACrC,cAAc,oBAAoB;AAClC,cAAc,4BAA4B;AAC1C,cAAc,iCAAiC;AAC/C,cAAc,qBAAqB;AACnC,cAAc,gBAAgB;AAC9B,cAAc,sBAAsB;AACpC,cAAc,qBAAqB;AACnC,cAAc,iCAAiC;AAC/C,cAAc,gBAAgB;AAC9B,cAAc,8BAA8B;AAC5C,cAAc,YAAY;AAC1B,cAAc,+BAA+B;AAC7C,cAAc,wCAAwC;AACtD,cAAc,kBAAkB;AAChC,cAAc,2BAA2B;AACzC,cAAc,yBAAyB;AACvC,cAAc,8BAA8B;AAC5C,cAAc,wBAAwB;AACtC,cAAc,4BAA4B;AAC1C,cAAc,2BAA2B;AACzC,cAAc,kBAAkB;AAEhC,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,6BAA6B;AAC3C,cAAc,4BAA4B;AAC1C,cAAc,8BAA8B;AAC5C,cAAc,wBAAwB;AACtC,cAAc,aAAa;AAC3B,cAAc,qCAAqC;AAEnD,cAAc,uCAAuC;AACrD,cAAc,iDAAiD;AAC/D,cAAc,sCAAsC;AACpD,cAAc,gCAAgC;AAC9C,cAAc,6CAA6C;AAC3D,cAAc,kBAAkB;AAChC,cAAc,QAAQ;AACtB,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,0BAA0B;AACxC,cAAc,uBAAuB;AACrC,cAAc,yCAAyC","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import { toStackTraceString } from '../helper/errorTools';
2
2
  import { mergeObservables, Observable } from '../helper/observable';
3
- import { includes, safeTruncate, filter, each } from '../helper/tools';
3
+ import { includes, safeTruncate, filter, each, assign, clocksNow } from '../helper/tools';
4
4
  import { addEventListener } from '../browser/addEventListener';
5
5
  import { DOM_EVENT } from '../helper/enums';
6
6
  import { monitor } from '../helper/monitor';
@@ -29,7 +29,7 @@ function createReportObservable(reportTypes) {
29
29
  }
30
30
  var handleReports = monitor(function (reports) {
31
31
  each(reports, function (report) {
32
- observable.notify(buildRawReportFromReport(report));
32
+ observable.notify(buildRawReportErrorFromReport(report));
33
33
  });
34
34
  });
35
35
  var observer = new window.ReportingObserver(handleReports, {
@@ -41,37 +41,43 @@ function createReportObservable(reportTypes) {
41
41
  observer.disconnect();
42
42
  };
43
43
  });
44
- return observable;
45
44
  }
46
45
  function createCspViolationReportObservable(configuration) {
47
46
  return new Observable(function (observable) {
48
- var handleCspViolation = function handleCspViolation(event) {
49
- observable.notify(buildRawReportFromCspViolation(event));
50
- };
51
- var _addEventListener = addEventListener(document, DOM_EVENT.SECURITY_POLICY_VIOLATION, handleCspViolation);
47
+ var _addEventListener = addEventListener(document, DOM_EVENT.SECURITY_POLICY_VIOLATION, function (event) {
48
+ observable.notify(buildRawReportErrorFromCspViolation(event));
49
+ });
52
50
  return _addEventListener.stop;
53
51
  });
54
- return observable;
55
52
  }
56
- function buildRawReportFromReport(report) {
53
+ function buildRawReportErrorFromReport(report) {
57
54
  var body = report.body;
58
55
  var type = report.type;
59
- return {
60
- type: type,
61
- subtype: body.id,
56
+ return buildRawReportError({
57
+ type: body.id,
62
58
  message: type + ': ' + body.message,
59
+ originalError: report,
63
60
  stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber)
64
- };
61
+ });
65
62
  }
66
- function buildRawReportFromCspViolation(event) {
67
- var type = RawReportType.cspViolation;
63
+ function buildRawReportError(partial) {
64
+ return assign({
65
+ startClocks: clocksNow(),
66
+ source: ErrorSource.REPORT,
67
+ handling: ErrorHandling.UNHANDLED
68
+ }, partial);
69
+ }
70
+ function buildRawReportErrorFromCspViolation(event) {
68
71
  var message = "'" + event.blockedURI + "' blocked by '" + event.effectiveDirective + "' directive";
69
- return {
70
- type: RawReportType.cspViolation,
71
- subtype: event.effectiveDirective,
72
- message: type + ': ' + message,
73
- stack: buildStack(event.effectiveDirective, message + ' of the policy "' + safeTruncate(event.originalPolicy, 100, '...') + '"', event.sourceFile, event.lineNumber, event.columnNumber)
74
- };
72
+ return buildRawReportError({
73
+ type: event.effectiveDirective,
74
+ message: RawReportType.cspViolation + ': ' + message,
75
+ originalError: event,
76
+ csp: {
77
+ disposition: event.disposition
78
+ },
79
+ stack: buildStack(event.effectiveDirective, event.originalPolicy ? "".concat(message, " of the policy \"").concat(safeTruncate(event.originalPolicy, 100, '...'), "\"") : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber)
80
+ });
75
81
  }
76
82
  function buildStack(name, message, sourceFile, lineNumber, columnNumber) {
77
83
  return sourceFile && toStackTraceString({
@@ -1 +1 @@
1
- {"version":3,"file":"reportObservable.js","names":["toStackTraceString","mergeObservables","Observable","includes","safeTruncate","filter","each","addEventListener","DOM_EVENT","monitor","RawReportType","intervention","deprecation","cspViolation","initReportObservable","configuration","apis","observables","push","createCspViolationReportObservable","reportTypes","api","length","createReportObservable","apply","observable","window","ReportingObserver","handleReports","reports","report","notify","buildRawReportFromReport","observer","types","buffered","observe","disconnect","handleCspViolation","event","buildRawReportFromCspViolation","_addEventListener","document","SECURITY_POLICY_VIOLATION","stop","body","type","subtype","id","message","stack","buildStack","sourceFile","lineNumber","columnNumber","blockedURI","effectiveDirective","originalPolicy","name","func","url","line","column"],"sources":["../../src/report/reportObservable.js"],"sourcesContent":["import { toStackTraceString } from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport { includes, safeTruncate, filter, each } from '../helper/tools'\nimport { addEventListener } from '../browser/addEventListener'\nimport { DOM_EVENT } from '../helper/enums'\nimport { monitor } from '../helper/monitor'\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n}\nexport function initReportObservable(configuration, apis) {\n var observables = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n var reportTypes = filter(apis, function (api) {\n return api !== RawReportType.cspViolation\n })\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n return mergeObservables.apply(this, observables)\n}\n\nfunction createReportObservable(reportTypes) {\n return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return\n }\n\n var handleReports = monitor(function (reports) {\n each(reports, function (report) {\n observable.notify(buildRawReportFromReport(report))\n })\n })\n\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n })\n\n observer.observe()\n return function () {\n observer.disconnect()\n }\n })\n\n return observable\n}\n\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var handleCspViolation = function (event) {\n observable.notify(buildRawReportFromCspViolation(event))\n }\n\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.SECURITY_POLICY_VIOLATION,\n handleCspViolation\n )\n\n return _addEventListener.stop\n })\n return observable\n}\n\nfunction buildRawReportFromReport(report) {\n var body = report.body\n var type = report.type\n return {\n type: type,\n subtype: body.id,\n message: type + ': ' + body.message,\n stack: buildStack(\n body.id,\n body.message,\n body.sourceFile,\n body.lineNumber,\n body.columnNumber\n )\n }\n}\n\nfunction buildRawReportFromCspViolation(event) {\n var type = RawReportType.cspViolation\n var message =\n \"'\" +\n event.blockedURI +\n \"' blocked by '\" +\n event.effectiveDirective +\n \"' directive\"\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: type + ': ' + message,\n stack: buildStack(\n event.effectiveDirective,\n message +\n ' of the policy \"' +\n safeTruncate(event.originalPolicy, 100, '...') +\n '\"',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n )\n }\n}\n\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return (\n sourceFile &&\n toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber,\n column: columnNumber\n }\n ]\n })\n )\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,gBAAgB,EAAEC,UAAU,QAAQ,sBAAsB;AACnE,SAASC,QAAQ,EAAEC,YAAY,EAAEC,MAAM,EAAEC,IAAI,QAAQ,iBAAiB;AACtE,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,OAAO,QAAQ,mBAAmB;AAC3C,OAAO,IAAIC,aAAa,GAAG;EACzBC,YAAY,EAAE,cAAc;EAC5BC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE;AAChB,CAAC;AACD,OAAO,SAASC,oBAAoBA,CAACC,aAAa,EAAEC,IAAI,EAAE;EACxD,IAAIC,WAAW,GAAG,EAAE;EAEpB,IAAId,QAAQ,CAACa,IAAI,EAAEN,aAAa,CAACG,YAAY,CAAC,EAAE;IAC9CI,WAAW,CAACC,IAAI,CAACC,kCAAkC,CAACJ,aAAa,CAAC,CAAC;EACrE;EAEA,IAAIK,WAAW,GAAGf,MAAM,CAACW,IAAI,EAAE,UAAUK,GAAG,EAAE;IAC5C,OAAOA,GAAG,KAAKX,aAAa,CAACG,YAAY;EAC3C,CAAC,CAAC;EACF,IAAIO,WAAW,CAACE,MAAM,EAAE;IACtBL,WAAW,CAACC,IAAI,CAACK,sBAAsB,CAACH,WAAW,CAAC,CAAC;EACvD;EACA,OAAOnB,gBAAgB,CAACuB,KAAK,CAAC,IAAI,EAAEP,WAAW,CAAC;AAClD;AAEA,SAASM,sBAAsBA,CAACH,WAAW,EAAE;EAC3C,OAAO,IAAIlB,UAAU,CAAC,UAAUuB,UAAU,EAAE;IAC1C,IAAI,CAACC,MAAM,CAACC,iBAAiB,EAAE;MAC7B;IACF;IAEA,IAAIC,aAAa,GAAGnB,OAAO,CAAC,UAAUoB,OAAO,EAAE;MAC7CvB,IAAI,CAACuB,OAAO,EAAE,UAAUC,MAAM,EAAE;QAC9BL,UAAU,CAACM,MAAM,CAACC,wBAAwB,CAACF,MAAM,CAAC,CAAC;MACrD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAIG,QAAQ,GAAG,IAAIP,MAAM,CAACC,iBAAiB,CAACC,aAAa,EAAE;MACzDM,KAAK,EAAEd,WAAW;MAClBe,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEFF,QAAQ,CAACG,OAAO,CAAC,CAAC;IAClB,OAAO,YAAY;MACjBH,QAAQ,CAACI,UAAU,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,CAAC;EAEF,OAAOZ,UAAU;AACnB;AAEA,SAASN,kCAAkCA,CAACJ,aAAa,EAAE;EACzD,OAAO,IAAIb,UAAU,CAAC,UAAUuB,UAAU,EAAE;IAC1C,IAAIa,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAaC,KAAK,EAAE;MACxCd,UAAU,CAACM,MAAM,CAACS,8BAA8B,CAACD,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,IAAIE,iBAAiB,GAAGlC,gBAAgB,CACtCmC,QAAQ,EACRlC,SAAS,CAACmC,yBAAyB,EACnCL,kBACF,CAAC;IAED,OAAOG,iBAAiB,CAACG,IAAI;EAC/B,CAAC,CAAC;EACF,OAAOnB,UAAU;AACnB;AAEA,SAASO,wBAAwBA,CAACF,MAAM,EAAE;EACxC,IAAIe,IAAI,GAAGf,MAAM,CAACe,IAAI;EACtB,IAAIC,IAAI,GAAGhB,MAAM,CAACgB,IAAI;EACtB,OAAO;IACLA,IAAI,EAAEA,IAAI;IACVC,OAAO,EAAEF,IAAI,CAACG,EAAE;IAChBC,OAAO,EAAEH,IAAI,GAAG,IAAI,GAAGD,IAAI,CAACI,OAAO;IACnCC,KAAK,EAAEC,UAAU,CACfN,IAAI,CAACG,EAAE,EACPH,IAAI,CAACI,OAAO,EACZJ,IAAI,CAACO,UAAU,EACfP,IAAI,CAACQ,UAAU,EACfR,IAAI,CAACS,YACP;EACF,CAAC;AACH;AAEA,SAASd,8BAA8BA,CAACD,KAAK,EAAE;EAC7C,IAAIO,IAAI,GAAGpC,aAAa,CAACG,YAAY;EACrC,IAAIoC,OAAO,GACT,GAAG,GACHV,KAAK,CAACgB,UAAU,GAChB,gBAAgB,GAChBhB,KAAK,CAACiB,kBAAkB,GACxB,aAAa;EACf,OAAO;IACLV,IAAI,EAAEpC,aAAa,CAACG,YAAY;IAChCkC,OAAO,EAAER,KAAK,CAACiB,kBAAkB;IACjCP,OAAO,EAAEH,IAAI,GAAG,IAAI,GAAGG,OAAO;IAC9BC,KAAK,EAAEC,UAAU,CACfZ,KAAK,CAACiB,kBAAkB,EACxBP,OAAO,GACL,kBAAkB,GAClB7C,YAAY,CAACmC,KAAK,CAACkB,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,GAC9C,GAAG,EACLlB,KAAK,CAACa,UAAU,EAChBb,KAAK,CAACc,UAAU,EAChBd,KAAK,CAACe,YACR;EACF,CAAC;AACH;AAEA,SAASH,UAAUA,CAACO,IAAI,EAAET,OAAO,EAAEG,UAAU,EAAEC,UAAU,EAAEC,YAAY,EAAE;EACvE,OACEF,UAAU,IACVpD,kBAAkB,CAAC;IACjB0D,IAAI,EAAEA,IAAI;IACVT,OAAO,EAAEA,OAAO;IAChBC,KAAK,EAAE,CACL;MACES,IAAI,EAAE,GAAG;MACTC,GAAG,EAAER,UAAU;MACfS,IAAI,EAAER,UAAU;MAChBS,MAAM,EAAER;IACV,CAAC;EAEL,CAAC,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"file":"reportObservable.js","names":["toStackTraceString","mergeObservables","Observable","includes","safeTruncate","filter","each","assign","clocksNow","addEventListener","DOM_EVENT","monitor","RawReportType","intervention","deprecation","cspViolation","initReportObservable","configuration","apis","observables","push","createCspViolationReportObservable","reportTypes","api","length","createReportObservable","apply","observable","window","ReportingObserver","handleReports","reports","report","notify","buildRawReportErrorFromReport","observer","types","buffered","observe","disconnect","_addEventListener","document","SECURITY_POLICY_VIOLATION","event","buildRawReportErrorFromCspViolation","stop","body","type","buildRawReportError","id","message","originalError","stack","buildStack","sourceFile","lineNumber","columnNumber","partial","startClocks","source","ErrorSource","REPORT","handling","ErrorHandling","UNHANDLED","blockedURI","effectiveDirective","csp","disposition","originalPolicy","concat","name","func","url","line","column"],"sources":["../../src/report/reportObservable.js"],"sourcesContent":["import { toStackTraceString } from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport {\n includes,\n safeTruncate,\n filter,\n each,\n assign,\n clocksNow\n} from '../helper/tools'\nimport { addEventListener } from '../browser/addEventListener'\nimport { DOM_EVENT } from '../helper/enums'\nimport { monitor } from '../helper/monitor'\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n}\nexport function initReportObservable(configuration, apis) {\n var observables = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n var reportTypes = filter(apis, function (api) {\n return api !== RawReportType.cspViolation\n })\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n return mergeObservables.apply(this, observables)\n}\n\nfunction createReportObservable(reportTypes) {\n return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return\n }\n\n var handleReports = monitor(function (reports) {\n each(reports, function (report) {\n observable.notify(buildRawReportErrorFromReport(report))\n })\n })\n\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n })\n\n observer.observe()\n return function () {\n observer.disconnect()\n }\n })\n}\n\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.SECURITY_POLICY_VIOLATION,\n function (event) {\n observable.notify(buildRawReportErrorFromCspViolation(event))\n }\n )\n\n return _addEventListener.stop\n })\n}\n\nfunction buildRawReportErrorFromReport(report) {\n var body = report.body\n var type = report.type\n return buildRawReportError({\n type: body.id,\n message: type + ': ' + body.message,\n originalError: report,\n stack: buildStack(\n body.id,\n body.message,\n body.sourceFile,\n body.lineNumber,\n body.columnNumber\n )\n })\n}\nfunction buildRawReportError(partial) {\n return assign(\n {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: ErrorHandling.UNHANDLED\n },\n partial\n )\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n var message =\n \"'\" +\n event.blockedURI +\n \"' blocked by '\" +\n event.effectiveDirective +\n \"' directive\"\n return buildRawReportError({\n type: event.effectiveDirective,\n message: RawReportType.cspViolation + ': ' + message,\n originalError: event,\n csp: {\n disposition: event.disposition\n },\n stack: buildStack(\n event.effectiveDirective,\n event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(\n event.originalPolicy,\n 100,\n '...'\n )}\"`\n : 'no policy',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n )\n })\n}\n\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return (\n sourceFile &&\n toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber,\n column: columnNumber\n }\n ]\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,9 @@
1
1
  import { ConsoleApiName } from '../helper/display';
2
2
  import { toStackTraceString, NO_ERROR_STACK_PRESENT_MESSAGE } from '../helper/errorTools';
3
+ import { createBoundedBuffer } from '../helper/boundedBuffer';
3
4
  import { computeStackTrace } from '../tracekit';
4
5
  import { Observable } from '../helper/observable';
6
+ import { getConnectivity } from '../helper/connectivity';
5
7
  import { displayIfDebugEnabled, startMonitorErrorCollection } from '..//helper/monitor';
6
8
  import { startsWith, assign, performDraw, timeStampNow, extend2Lev } from '../helper/tools';
7
9
  import { jsonStringify } from '../helper/serialisation/jsonStringify';
@@ -12,35 +14,40 @@ export var TelemetryService = {
12
14
  LOGS: 'browser-logs-sdk',
13
15
  RUM: 'browser-rum-sdk'
14
16
  };
15
- var telemetryConfiguration = {
16
- maxEventsPerPage: 0,
17
- sentEventCount: 0,
18
- telemetryEnabled: false
17
+
18
+ // eslint-disable-next-line local-rules/disallow-side-effects
19
+ var preStartTelemetryBuffer = createBoundedBuffer();
20
+ var _onRawTelemetryEventCollected2 = function onRawTelemetryEventCollected(event) {
21
+ preStartTelemetryBuffer.add(function () {
22
+ _onRawTelemetryEventCollected2(event);
23
+ });
19
24
  };
20
- var onRawTelemetryEventCollected;
21
25
  export function startTelemetry(telemetryService, configuration) {
22
26
  var contextProvider;
23
27
  var observable = new Observable();
24
- telemetryConfiguration.telemetryEnabled = configuration.telemetryEnabled && performDraw(configuration.telemetrySampleRate);
25
- onRawTelemetryEventCollected = function onRawTelemetryEventCollected(rawEvent) {
26
- if (telemetryConfiguration.telemetryEnabled) {
27
- var event = toTelemetryEvent(telemetryService, rawEvent);
28
+ var alreadySentEvents = new Set();
29
+ var telemetryEnabled = configuration.telemetryEnabled && performDraw(configuration.telemetrySampleRate);
30
+ var runtimeEnvInfo = getRuntimeEnvInfo();
31
+ _onRawTelemetryEventCollected2 = function _onRawTelemetryEventCollected(rawEvent) {
32
+ var stringifiedEvent = jsonStringify(rawEvent);
33
+ if (telemetryEnabled && alreadySentEvents.size < configuration.maxTelemetryEventsPerPage && !alreadySentEvents.has(stringifiedEvent)) {
34
+ var event = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);
28
35
  observable.notify(event);
36
+ alreadySentEvents.add(stringifiedEvent);
29
37
  }
30
38
  };
31
39
  startMonitorErrorCollection(addTelemetryError);
32
- assign(telemetryConfiguration, {
33
- maxEventsPerPage: configuration.maxTelemetryEventsPerPage,
34
- sentEventCount: 0
35
- });
36
- function toTelemetryEvent(telemetryService, event) {
40
+ function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {
37
41
  return extend2Lev({
38
42
  type: 'telemetry',
39
43
  date: timeStampNow(),
40
44
  service: telemetryService,
41
45
  version: __BUILD_ENV__SDK_VERSION__,
42
46
  source: 'browser',
43
- telemetry: event // https://github.com/microsoft/TypeScript/issues/48457
47
+ telemetry: extend2Lev(event, {
48
+ runtime_env: runtimeEnvInfo,
49
+ connectivity: getConnectivity()
50
+ })
44
51
  }, contextProvider !== undefined ? contextProvider() : {});
45
52
  }
46
53
  return {
@@ -48,39 +55,58 @@ export function startTelemetry(telemetryService, configuration) {
48
55
  contextProvider = provider;
49
56
  },
50
57
  observable: observable,
51
- enabled: telemetryConfiguration.telemetryEnabled
58
+ enabled: telemetryEnabled
59
+ };
60
+ }
61
+ function getRuntimeEnvInfo() {
62
+ return {
63
+ is_local_file: window.location.protocol === 'file:',
64
+ is_worker: 'WorkerGlobalScope' in self
65
+ };
66
+ }
67
+ export function startFakeTelemetry() {
68
+ var events = [];
69
+ _onRawTelemetryEventCollected2 = function _onRawTelemetryEventCollected(event) {
70
+ events.push(event);
52
71
  };
72
+ return events;
73
+ }
74
+ export function drainPreStartTelemetry() {
75
+ preStartTelemetryBuffer.drain();
53
76
  }
54
77
  export function resetTelemetry() {
55
- onRawTelemetryEventCollected = undefined;
78
+ preStartTelemetryBuffer = createBoundedBuffer();
79
+ _onRawTelemetryEventCollected2 = function _onRawTelemetryEventCollected(event) {
80
+ preStartTelemetryBuffer.add(function () {
81
+ _onRawTelemetryEventCollected2(event);
82
+ });
83
+ };
56
84
  }
57
85
  export function addTelemetryDebug(message, context) {
58
- displayIfDebugEnabled(ConsoleApiName.debug, message, context);
59
- addTelemetry(assign({
86
+ displayIfDebugEnabled(message, context);
87
+ _onRawTelemetryEventCollected2(assign({
60
88
  type: TelemetryType.log,
61
89
  message: message,
62
90
  status: TelemetryStatusType.debug
63
91
  }, context));
64
92
  }
65
93
  export function addTelemetryError(e, context) {
66
- addTelemetry(assign({
94
+ _onRawTelemetryEventCollected2(assign({
67
95
  type: TelemetryType.log,
68
96
  status: TelemetryStatusType.error
69
97
  }, formatError(e), context));
70
98
  }
71
99
  export function addTelemetryConfiguration(configuration) {
72
- if (telemetryConfiguration.telemetryEnabled) {
73
- addTelemetry({
74
- type: TelemetryType.configuration,
75
- configuration: configuration
76
- });
77
- }
100
+ _onRawTelemetryEventCollected2({
101
+ type: TelemetryType.configuration,
102
+ configuration: configuration
103
+ });
78
104
  }
79
- function addTelemetry(event) {
80
- if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {
81
- telemetryConfiguration.sentEventCount += 1;
82
- onRawTelemetryEventCollected(event);
83
- }
105
+ export function addTelemetryUsage(usage) {
106
+ _onRawTelemetryEventCollected2({
107
+ type: TelemetryType.usage,
108
+ usage: usage
109
+ });
84
110
  }
85
111
  export function formatError(e) {
86
112
  if (e instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","names":["ConsoleApiName","toStackTraceString","NO_ERROR_STACK_PRESENT_MESSAGE","computeStackTrace","Observable","displayIfDebugEnabled","startMonitorErrorCollection","startsWith","assign","performDraw","timeStampNow","extend2Lev","jsonStringify","NonErrorPrefix","TelemetryStatusType","TelemetryType","ALLOWED_FRAME_URLS","TelemetryService","LOGS","RUM","telemetryConfiguration","maxEventsPerPage","sentEventCount","telemetryEnabled","onRawTelemetryEventCollected","startTelemetry","telemetryService","configuration","contextProvider","observable","telemetrySampleRate","rawEvent","event","toTelemetryEvent","notify","addTelemetryError","maxTelemetryEventsPerPage","type","date","service","version","__BUILD_ENV__SDK_VERSION__","source","telemetry","undefined","setContextProvider","provider","enabled","resetTelemetry","addTelemetryDebug","message","context","debug","addTelemetry","log","status","e","error","formatError","addTelemetryConfiguration","Error","stackTrace","kind","name","stack","scrubCustomerFrames","UNCAUGHT","filter","frame","url","some","allowedFrameUrl"],"sources":["../../src/telemetry/telemetry.js"],"sourcesContent":["import { ConsoleApiName } from '../helper/display'\nimport {\n toStackTraceString,\n NO_ERROR_STACK_PRESENT_MESSAGE\n} from '../helper/errorTools'\nimport { computeStackTrace } from '../tracekit'\nimport { Observable } from '../helper/observable'\nimport {\n displayIfDebugEnabled,\n startMonitorErrorCollection\n} from '..//helper/monitor'\nimport {\n startsWith,\n assign,\n performDraw,\n timeStampNow,\n extend2Lev\n} from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { NonErrorPrefix } from '../helper/enums'\nimport { TelemetryStatusType, TelemetryType } from './types'\n\nconst ALLOWED_FRAME_URLS = [\n 'https://static.guance.com',\n 'http://localhost',\n '<anonymous>'\n]\n\nexport var TelemetryService = {\n LOGS: 'browser-logs-sdk',\n RUM: 'browser-rum-sdk'\n}\n\nvar telemetryConfiguration = {\n maxEventsPerPage: 0,\n sentEventCount: 0,\n telemetryEnabled: false\n}\n\nvar onRawTelemetryEventCollected\n\nexport function startTelemetry(telemetryService, configuration) {\n let contextProvider\n var observable = new Observable()\n telemetryConfiguration.telemetryEnabled =\n configuration.telemetryEnabled &&\n performDraw(configuration.telemetrySampleRate)\n\n onRawTelemetryEventCollected = function (rawEvent) {\n if (telemetryConfiguration.telemetryEnabled) {\n var event = toTelemetryEvent(telemetryService, rawEvent)\n observable.notify(event)\n }\n }\n startMonitorErrorCollection(addTelemetryError)\n\n assign(telemetryConfiguration, {\n maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n sentEventCount: 0\n })\n\n function toTelemetryEvent(telemetryService, event) {\n return extend2Lev(\n {\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser',\n telemetry: event // https://github.com/microsoft/TypeScript/issues/48457\n },\n contextProvider !== undefined ? contextProvider() : {}\n )\n }\n\n return {\n setContextProvider: function (provider) {\n contextProvider = provider\n },\n observable: observable,\n enabled: telemetryConfiguration.telemetryEnabled\n }\n}\n\nexport function resetTelemetry() {\n onRawTelemetryEventCollected = undefined\n}\n\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context)\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n message: message,\n status: TelemetryStatusType.debug\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e, context) {\n addTelemetry(\n assign(\n {\n type: TelemetryType.log,\n status: TelemetryStatusType.error\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration) {\n if (telemetryConfiguration.telemetryEnabled) {\n addTelemetry({\n type: TelemetryType.configuration,\n configuration: configuration\n })\n }\n}\n\nfunction addTelemetry(event) {\n if (\n onRawTelemetryEventCollected &&\n telemetryConfiguration.sentEventCount <\n telemetryConfiguration.maxEventsPerPage\n ) {\n telemetryConfiguration.sentEventCount += 1\n onRawTelemetryEventCollected(event)\n }\n}\n\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e)\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace))\n },\n message: stackTrace.message\n }\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE\n },\n message: NonErrorPrefix.UNCAUGHT + ' ' + jsonStringify(e)\n }\n}\n\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(function (frame) {\n return (\n !frame.url ||\n ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {\n return startsWith(frame.url, allowedFrameUrl)\n })\n )\n })\n return stackTrace\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"telemetry.js","names":["ConsoleApiName","toStackTraceString","NO_ERROR_STACK_PRESENT_MESSAGE","createBoundedBuffer","computeStackTrace","Observable","getConnectivity","displayIfDebugEnabled","startMonitorErrorCollection","startsWith","assign","performDraw","timeStampNow","extend2Lev","jsonStringify","NonErrorPrefix","TelemetryStatusType","TelemetryType","ALLOWED_FRAME_URLS","TelemetryService","LOGS","RUM","preStartTelemetryBuffer","onRawTelemetryEventCollected","event","add","startTelemetry","telemetryService","configuration","contextProvider","observable","alreadySentEvents","Set","telemetryEnabled","telemetrySampleRate","runtimeEnvInfo","getRuntimeEnvInfo","_onRawTelemetryEventCollected","rawEvent","stringifiedEvent","size","maxTelemetryEventsPerPage","has","toTelemetryEvent","notify","addTelemetryError","type","date","service","version","__BUILD_ENV__SDK_VERSION__","source","telemetry","runtime_env","connectivity","undefined","setContextProvider","provider","enabled","is_local_file","window","location","protocol","is_worker","self","startFakeTelemetry","events","push","drainPreStartTelemetry","drain","resetTelemetry","addTelemetryDebug","message","context","log","status","debug","e","error","formatError","addTelemetryConfiguration","addTelemetryUsage","usage","Error","stackTrace","kind","name","stack","scrubCustomerFrames","UNCAUGHT","filter","frame","url","some","allowedFrameUrl"],"sources":["../../src/telemetry/telemetry.js"],"sourcesContent":["import { ConsoleApiName } from '../helper/display'\nimport {\n toStackTraceString,\n NO_ERROR_STACK_PRESENT_MESSAGE\n} from '../helper/errorTools'\nimport { createBoundedBuffer } from '../helper/boundedBuffer'\nimport { computeStackTrace } from '../tracekit'\nimport { Observable } from '../helper/observable'\nimport { getConnectivity } from '../helper/connectivity'\nimport {\n displayIfDebugEnabled,\n startMonitorErrorCollection\n} from '..//helper/monitor'\nimport {\n startsWith,\n assign,\n performDraw,\n timeStampNow,\n extend2Lev\n} from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { NonErrorPrefix } from '../helper/enums'\nimport { TelemetryStatusType, TelemetryType } from './types'\n\nconst ALLOWED_FRAME_URLS = [\n 'https://static.guance.com',\n 'http://localhost',\n '<anonymous>'\n]\n\nexport var TelemetryService = {\n LOGS: 'browser-logs-sdk',\n RUM: 'browser-rum-sdk'\n}\n\n// eslint-disable-next-line local-rules/disallow-side-effects\nvar preStartTelemetryBuffer = createBoundedBuffer()\nvar onRawTelemetryEventCollected = function (event) {\n preStartTelemetryBuffer.add(function () {\n onRawTelemetryEventCollected(event)\n })\n}\n\nexport function startTelemetry(telemetryService, configuration) {\n let contextProvider\n var observable = new Observable()\n const alreadySentEvents = new Set()\n const telemetryEnabled =\n configuration.telemetryEnabled &&\n performDraw(configuration.telemetrySampleRate)\n const runtimeEnvInfo = getRuntimeEnvInfo()\n onRawTelemetryEventCollected = function (rawEvent) {\n const stringifiedEvent = jsonStringify(rawEvent)\n if (\n telemetryEnabled &&\n alreadySentEvents.size < configuration.maxTelemetryEventsPerPage &&\n !alreadySentEvents.has(stringifiedEvent)\n ) {\n var event = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo)\n observable.notify(event)\n alreadySentEvents.add(stringifiedEvent)\n }\n }\n startMonitorErrorCollection(addTelemetryError)\n\n function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n return extend2Lev(\n {\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: __BUILD_ENV__SDK_VERSION__,\n source: 'browser',\n telemetry: extend2Lev(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity()\n })\n },\n contextProvider !== undefined ? contextProvider() : {}\n )\n }\n\n return {\n setContextProvider: function (provider) {\n contextProvider = provider\n },\n observable: observable,\n enabled: telemetryEnabled\n }\n}\nfunction getRuntimeEnvInfo() {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self\n }\n}\nexport function startFakeTelemetry() {\n const events = []\n\n onRawTelemetryEventCollected = function (event) {\n events.push(event)\n }\n\n return events\n}\nexport function drainPreStartTelemetry() {\n preStartTelemetryBuffer.drain()\n}\nexport function resetTelemetry() {\n preStartTelemetryBuffer = createBoundedBuffer()\n onRawTelemetryEventCollected = function (event) {\n preStartTelemetryBuffer.add(function () {\n onRawTelemetryEventCollected(event)\n })\n }\n}\n\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(message, context)\n onRawTelemetryEventCollected(\n assign(\n {\n type: TelemetryType.log,\n message: message,\n status: TelemetryStatusType.debug\n },\n context\n )\n )\n}\n\nexport function addTelemetryError(e, context) {\n onRawTelemetryEventCollected(\n assign(\n {\n type: TelemetryType.log,\n status: TelemetryStatusType.error\n },\n formatError(e),\n context\n )\n )\n}\n\nexport function addTelemetryConfiguration(configuration) {\n onRawTelemetryEventCollected({\n type: TelemetryType.configuration,\n configuration: configuration\n })\n}\n\nexport function addTelemetryUsage(usage) {\n onRawTelemetryEventCollected({\n type: TelemetryType.usage,\n usage: usage\n })\n}\n\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e)\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace))\n },\n message: stackTrace.message\n }\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE\n },\n message: NonErrorPrefix.UNCAUGHT + ' ' + jsonStringify(e)\n }\n}\n\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(function (frame) {\n return (\n !frame.url ||\n ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {\n return startsWith(frame.url, allowedFrameUrl)\n })\n )\n })\n return stackTrace\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  export var TelemetryType = {
2
2
  log: 'log',
3
- configuration: 'configuration'
3
+ configuration: 'configuration',
4
+ usage: 'usage'
4
5
  };
5
6
  export var TelemetryStatusType = {
6
7
  debug: 'debug',
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["TelemetryType","log","configuration","TelemetryStatusType","debug","error"],"sources":["../../src/telemetry/types.js"],"sourcesContent":["export var TelemetryType = {\n log: 'log',\n configuration: 'configuration'\n}\n\nexport var TelemetryStatusType = {\n debug: 'debug',\n error: 'error'\n}\n"],"mappings":"AAAA,OAAO,IAAIA,aAAa,GAAG;EACzBC,GAAG,EAAE,KAAK;EACVC,aAAa,EAAE;AACjB,CAAC;AAED,OAAO,IAAIC,mBAAmB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":["TelemetryType","log","configuration","usage","TelemetryStatusType","debug","error"],"sources":["../../src/telemetry/types.js"],"sourcesContent":["export var TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage'\n}\n\nexport var TelemetryStatusType = {\n debug: 'debug',\n error: 'error'\n}\n"],"mappings":"AAAA,OAAO,IAAIA,aAAa,GAAG;EACzBC,GAAG,EAAE,KAAK;EACVC,aAAa,EAAE,eAAe;EAC9BC,KAAK,EAAE;AACT,CAAC;AAED,OAAO,IAAIC,mBAAmB,GAAG;EAC/BC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE;AACT,CAAC","ignoreList":[]}
@@ -8,7 +8,6 @@ import { isPageExitReason } from '../browser/pageExitObservable';
8
8
  import { jsonStringify } from '../helper/serialisation/jsonStringify';
9
9
  // https://en.wikipedia.org/wiki/UTF-8
10
10
  // eslint-disable-next-line no-control-regex
11
- var HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/;
12
11
  var CUSTOM_KEYS = 'custom_keys';
13
12
  export var processedMessageByDataMap = function processedMessageByDataMap(message) {
14
13
  if (!message || !message.type) return {
@@ -101,93 +100,144 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
101
100
  rowData: hasFileds ? rowData : undefined
102
101
  };
103
102
  };
104
- var batch = function batch(request, flushController, messageBytesLimit, sendContentTypeByJson) {
105
- this.pushOnlyBuffer = [];
106
- this.upsertBuffer = {};
107
- this.request = request;
108
- this.flushController = flushController;
109
- this.messageBytesLimit = messageBytesLimit;
110
- this.sendContentTypeByJson = sendContentTypeByJson;
111
- var _this = this;
112
- this.flushController.flushObservable.subscribe(function (event) {
113
- _this.flush(event);
103
+ export function createBatch(options) {
104
+ var encoder = options.encoder;
105
+ var request = options.request;
106
+ var messageBytesLimit = options.messageBytesLimit;
107
+ var sendContentTypeByJson = options.sendContentTypeByJson;
108
+ var flushController = options.flushController;
109
+ var upsertBuffer = {};
110
+ var flushSubscription = flushController.flushObservable.subscribe(function (event) {
111
+ flush(event);
114
112
  });
115
- };
116
- batch.prototype.add = function (message) {
117
- this.addOrUpdate(message);
118
- };
119
- batch.prototype.upsert = function (message, key) {
120
- this.addOrUpdate(message, key);
121
- };
122
- batch.prototype.flush = function (event) {
123
- var messages = this.pushOnlyBuffer.concat(values(this.upsertBuffer));
124
- this.pushOnlyBuffer = [];
125
- this.upsertBuffer = {};
126
- if (messages.length > 0) {
127
- var payloadData = '';
128
- if (this.sendContentTypeByJson) {
129
- payloadData = '[' + messages.join(',') + ']';
113
+ function getMessageText(messages) {
114
+ var isEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
115
+ if (sendContentTypeByJson) {
116
+ if (isEmpty) {
117
+ return '[' + messages.join(',');
118
+ } else {
119
+ return ',' + messages.join(',');
120
+ }
130
121
  } else {
131
- payloadData = messages.join('\n');
122
+ if (isEmpty) {
123
+ return messages.join('\n');
124
+ } else {
125
+ return '\n' + messages.join('\n');
126
+ }
132
127
  }
133
- var payload = {
134
- data: payloadData,
135
- bytesCount: event.bytesCount,
136
- flushReason: event.reason
137
- };
138
- if (isPageExitReason(event.reason)) {
139
- this.request.sendOnExit(payload);
128
+ }
129
+ function push(serializedMessage, estimatedMessageBytesCount, key) {
130
+ flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);
131
+ if (key !== undefined) {
132
+ upsertBuffer[key] = serializedMessage;
133
+ flushController.notifyAfterAddMessage();
140
134
  } else {
141
- this.request.send(payload);
135
+ encoder.write(getMessageText([serializedMessage], encoder.isEmpty()), function (realMessageBytesCount) {
136
+ flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);
137
+ });
142
138
  }
143
139
  }
144
- };
145
- batch.prototype.addOrUpdate = function (message, key) {
146
- var _process = this.process(message);
147
- var processedMessage = _process.processedMessage;
148
- var messageBytesCount = _process.messageBytesCount;
149
- if (messageBytesCount >= this.messageBytesLimit) {
150
- display.warn('Discarded a message whose size was bigger than the maximum allowed size ' + this.messageBytesLimit + 'KB.');
151
- return;
140
+ function hasMessageFor(key) {
141
+ return key !== undefined && upsertBuffer[key] !== undefined;
152
142
  }
153
- if (this.hasMessageFor(key)) {
154
- this.remove(key);
143
+ function remove(key) {
144
+ var removedMessage = upsertBuffer[key];
145
+ delete upsertBuffer[key];
146
+ var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage);
147
+ flushController.notifyAfterRemoveMessage(messageBytesCount);
155
148
  }
156
- this.push(processedMessage, messageBytesCount, key);
157
- };
158
- batch.prototype.process = function (message) {
159
- var processedMessage = '';
160
- if (this.sendContentTypeByJson) {
161
- processedMessage = jsonStringify(processedMessageByDataMap(message).rowData);
162
- } else {
163
- processedMessage = processedMessageByDataMap(message).rowStr;
149
+ function process(message) {
150
+ var processedMessage = '';
151
+ if (sendContentTypeByJson) {
152
+ processedMessage = jsonStringify(processedMessageByDataMap(message).rowData);
153
+ } else {
154
+ processedMessage = processedMessageByDataMap(message).rowStr;
155
+ }
156
+ return processedMessage;
157
+ }
158
+ function addOrUpdate(message, key) {
159
+ var serializedMessage = process(message);
160
+ var estimatedMessageBytesCount = encoder.estimateEncodedBytesCount(serializedMessage);
161
+ if (estimatedMessageBytesCount >= messageBytesLimit) {
162
+ display.warn("Discarded a message whose size was bigger than the maximum allowed size ".concat(messageBytesLimit, "KB."));
163
+ return;
164
+ }
165
+ if (hasMessageFor(key)) {
166
+ remove(key);
167
+ }
168
+ push(serializedMessage, estimatedMessageBytesCount, key);
169
+ }
170
+ function flush(event) {
171
+ var upsertMessages = values(upsertBuffer).join(sendContentTypeByJson ? ',' : '\n');
172
+ upsertBuffer = {};
173
+ var isPageExit = isPageExitReason(event.reason);
174
+ var send = isPageExit ? request.sendOnExit : request.send;
175
+ if (isPageExit &&
176
+ // Note: checking that the encoder is async is not strictly needed, but it's an optimization:
177
+ // if the encoder is async we need to send two requests in some cases (one for encoded data
178
+ // and the other for non-encoded data). But if it's not async, we don't have to worry about
179
+ // it and always send a single request.
180
+ encoder.isAsync) {
181
+ // 咱不支持json 模式
182
+ var encoderResult = encoder.finishSync();
183
+
184
+ // Send encoded messages
185
+ if (encoderResult.outputBytesCount) {
186
+ send(formatPayloadFromEncoder(encoderResult, sendContentTypeByJson));
187
+ }
188
+
189
+ // Send messages that are not yet encoded at this point
190
+ var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\n');
191
+ if (pendingMessages) {
192
+ send({
193
+ data: pendingMessages,
194
+ bytesCount: computeBytesCount(pendingMessages)
195
+ });
196
+ }
197
+ } else {
198
+ if (upsertMessages) {
199
+ var text = getMessageText([upsertMessages], encoder.isEmpty());
200
+ if (sendContentTypeByJson) {
201
+ text += ']';
202
+ }
203
+ encoder.write(text);
204
+ } else {
205
+ if (sendContentTypeByJson) {
206
+ encoder.write(']');
207
+ }
208
+ }
209
+ encoder.finish(function (encoderResult) {
210
+ send(formatPayloadFromEncoder(encoderResult));
211
+ });
212
+ }
164
213
  }
165
- var messageBytesCount = computeBytesCount(processedMessage);
166
214
  return {
167
- processedMessage: processedMessage,
168
- messageBytesCount: messageBytesCount
215
+ flushController: flushController,
216
+ add: addOrUpdate,
217
+ upsert: addOrUpdate,
218
+ stop: flushSubscription.unsubscribe
169
219
  };
170
- };
171
- batch.prototype.push = function (processedMessage, messageBytesCount, key) {
172
- var separatorBytesCount = this.flushController.getMessagesCount() > 0 ? 1 : 0;
173
- this.flushController.notifyBeforeAddMessage(messageBytesCount + separatorBytesCount);
174
- if (key !== undefined) {
175
- this.upsertBuffer[key] = processedMessage;
220
+ }
221
+ function formatPayloadFromEncoder(encoderResult, sendContentTypeByJson) {
222
+ var data;
223
+ if (typeof encoderResult.output === 'string') {
224
+ data = encoderResult.output;
176
225
  } else {
177
- this.pushOnlyBuffer.push(processedMessage);
226
+ data = new Blob([encoderResult.output], {
227
+ // This will set the 'Content-Type: text/plain' header. Reasoning:
228
+ // * The intake rejects the request if there is no content type.
229
+ // * The browser will issue CORS preflight requests if we set it to 'application/json', which
230
+ // could induce higher intake load (and maybe has other impacts).
231
+ // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by
232
+ // new lines.
233
+ type: 'text/plain'
234
+ });
178
235
  }
179
- this.flushController.notifyAfterAddMessage();
180
- };
181
- batch.prototype.remove = function (key) {
182
- var removedMessage = this.upsertBuffer[key];
183
- delete this.upsertBuffer[key];
184
- var messageBytesCount = computeBytesCount(removedMessage);
185
- // If there are other messages, a '\n' will be added at serialization
186
- var separatorBytesCount = this.flushController.getMessagesCount() > 1 ? 1 : 0;
187
- this.flushController.notifyAfterRemoveMessage(messageBytesCount + separatorBytesCount);
188
- };
189
- batch.prototype.hasMessageFor = function (key) {
190
- return key !== undefined && this.upsertBuffer[key] !== undefined;
191
- };
192
- export var Batch = batch;
236
+ return {
237
+ data: data,
238
+ type: sendContentTypeByJson ? 'application/json;UTF-8' : undefined,
239
+ bytesCount: encoderResult.outputBytesCount,
240
+ encoding: encoderResult.encoding
241
+ };
242
+ }
193
243
  //# sourceMappingURL=batch.js.map