@cloudcare/browser-logs 3.0.23 → 3.1.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 (78) hide show
  1. package/bundle/dataflux-logs.js +1 -1
  2. package/cjs/boot/buildEnv.js +3 -2
  3. package/cjs/boot/buildEnv.js.map +1 -0
  4. package/cjs/boot/logsPublicApi.js +22 -50
  5. package/cjs/boot/logsPublicApi.js.map +1 -0
  6. package/cjs/boot/startLogs.js +34 -19
  7. package/cjs/boot/startLogs.js.map +1 -0
  8. package/cjs/domain/assembly.js +3 -17
  9. package/cjs/domain/assembly.js.map +1 -0
  10. package/cjs/domain/configuration.js +2 -12
  11. package/cjs/domain/configuration.js.map +1 -0
  12. package/cjs/domain/internalContext.js +2 -3
  13. package/cjs/domain/internalContext.js.map +1 -0
  14. package/cjs/domain/logger.js +46 -25
  15. package/cjs/domain/logger.js.map +1 -0
  16. package/cjs/domain/logsCollection/console/consoleCollection.js +6 -8
  17. package/cjs/domain/logsCollection/console/consoleCollection.js.map +1 -0
  18. package/cjs/domain/logsCollection/logger/loggerCollection.js +6 -12
  19. package/cjs/domain/logsCollection/logger/loggerCollection.js.map +1 -0
  20. package/cjs/domain/logsCollection/networkError/networkErrorCollection.js +8 -26
  21. package/cjs/domain/logsCollection/networkError/networkErrorCollection.js.map +1 -0
  22. package/cjs/domain/logsCollection/report/reportCollection.js +7 -11
  23. package/cjs/domain/logsCollection/report/reportCollection.js.map +1 -0
  24. package/cjs/domain/logsCollection/rumtimeError/runtimeErrorCollection.js +2 -8
  25. package/cjs/domain/logsCollection/rumtimeError/runtimeErrorCollection.js.map +1 -0
  26. package/cjs/domain/logsSessionManager.js +2 -9
  27. package/cjs/domain/logsSessionManager.js.map +1 -0
  28. package/cjs/entries/main.js +2 -5
  29. package/cjs/entries/main.js.map +1 -0
  30. package/cjs/index.js +2 -2
  31. package/cjs/index.js.map +1 -0
  32. package/cjs/transport/startLogsBatch.js +2 -3
  33. package/cjs/transport/startLogsBatch.js.map +1 -0
  34. package/cjs/transport/startLogsBridge.js +14 -0
  35. package/cjs/transport/startLogsBridge.js.map +1 -0
  36. package/esm/boot/buildEnv.js +3 -2
  37. package/esm/boot/buildEnv.js.map +1 -0
  38. package/esm/boot/logsPublicApi.js +23 -46
  39. package/esm/boot/logsPublicApi.js.map +1 -0
  40. package/esm/boot/startLogs.js +36 -9
  41. package/esm/boot/startLogs.js.map +1 -0
  42. package/esm/domain/assembly.js +3 -9
  43. package/esm/domain/assembly.js.map +1 -0
  44. package/esm/domain/configuration.js +2 -7
  45. package/esm/domain/configuration.js.map +1 -0
  46. package/esm/domain/internalContext.js +2 -2
  47. package/esm/domain/internalContext.js.map +1 -0
  48. package/esm/domain/logger.js +47 -22
  49. package/esm/domain/logger.js.map +1 -0
  50. package/esm/domain/logsCollection/console/consoleCollection.js +6 -4
  51. package/esm/domain/logsCollection/console/consoleCollection.js.map +1 -0
  52. package/esm/domain/logsCollection/logger/loggerCollection.js +6 -7
  53. package/esm/domain/logsCollection/logger/loggerCollection.js.map +1 -0
  54. package/esm/domain/logsCollection/networkError/networkErrorCollection.js +9 -21
  55. package/esm/domain/logsCollection/networkError/networkErrorCollection.js.map +1 -0
  56. package/esm/domain/logsCollection/report/reportCollection.js +7 -7
  57. package/esm/domain/logsCollection/report/reportCollection.js.map +1 -0
  58. package/esm/domain/logsCollection/rumtimeError/runtimeErrorCollection.js +2 -5
  59. package/esm/domain/logsCollection/rumtimeError/runtimeErrorCollection.js.map +1 -0
  60. package/esm/domain/logsSessionManager.js +2 -5
  61. package/esm/domain/logsSessionManager.js.map +1 -0
  62. package/esm/entries/main.js +2 -1
  63. package/esm/entries/main.js.map +1 -0
  64. package/esm/index.js +2 -1
  65. package/esm/index.js.map +1 -0
  66. package/esm/transport/startLogsBatch.js +2 -1
  67. package/esm/transport/startLogsBatch.js.map +1 -0
  68. package/esm/transport/startLogsBridge.js +8 -0
  69. package/esm/transport/startLogsBridge.js.map +1 -0
  70. package/package.json +5 -4
  71. package/src/boot/logsPublicApi.js +24 -21
  72. package/src/boot/startLogs.js +68 -10
  73. package/src/domain/assembly.js +0 -4
  74. package/src/domain/logger.js +57 -15
  75. package/src/domain/logsCollection/logger/loggerCollection.js +24 -16
  76. package/src/domain/logsCollection/networkError/networkErrorCollection.js +6 -5
  77. package/src/domain/logsCollection/report/reportCollection.js +10 -8
  78. package/src/transport/startLogsBridge.js +11 -0
@@ -1,16 +1,16 @@
1
1
  var _LogStatusForReport;
2
-
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
-
2
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
5
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
6
  import { timeStampNow, ErrorSource, RawReportType, getFileFromStackTraceString, initReportObservable, LifeCycleEventType } from '@cloudcare/browser-core';
6
7
  import { StatusType } from '../../logger';
7
8
  var LogStatusForReport = (_LogStatusForReport = {}, _defineProperty(_LogStatusForReport, RawReportType.cspViolation, StatusType.error), _defineProperty(_LogStatusForReport, RawReportType.intervention, StatusType.error), _defineProperty(_LogStatusForReport, RawReportType.deprecation, StatusType.warn), _LogStatusForReport);
8
9
  export function startReportCollection(configuration, lifeCycle) {
9
- var reportSubscription = initReportObservable(configuration.forwardReports).subscribe(function (report) {
10
+ var reportSubscription = initReportObservable(configuration, configuration.forwardReports).subscribe(function (report) {
10
11
  var message = report.message;
11
12
  var status = LogStatusForReport[report.type];
12
13
  var error;
13
-
14
14
  if (status === StatusType.error) {
15
15
  error = {
16
16
  kind: report.subtype,
@@ -21,7 +21,6 @@ export function startReportCollection(configuration, lifeCycle) {
21
21
  } else if (report.stack) {
22
22
  message += ' Found in ' + getFileFromStackTraceString(report.stack);
23
23
  }
24
-
25
24
  lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
26
25
  rawLogsEvent: {
27
26
  date: timeStampNow(),
@@ -37,4 +36,5 @@ export function startReportCollection(configuration, lifeCycle) {
37
36
  reportSubscription.unsubscribe();
38
37
  }
39
38
  };
40
- }
39
+ }
40
+ //# sourceMappingURL=reportCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportCollection.js","names":["timeStampNow","ErrorSource","RawReportType","getFileFromStackTraceString","initReportObservable","LifeCycleEventType","StatusType","LogStatusForReport","_LogStatusForReport","_defineProperty","cspViolation","error","intervention","deprecation","warn","startReportCollection","configuration","lifeCycle","reportSubscription","forwardReports","subscribe","report","message","status","type","kind","subtype","origin","REPORT","stack","notify","RAW_LOG_COLLECTED","rawLogsEvent","date","stop","unsubscribe"],"sources":["../../../../src/domain/logsCollection/report/reportCollection.js"],"sourcesContent":["import {\n timeStampNow,\n ErrorSource,\n RawReportType,\n getFileFromStackTraceString,\n initReportObservable,\n LifeCycleEventType\n} from '@cloudcare/browser-core'\nimport { StatusType } from '../../logger'\n\nvar LogStatusForReport = {\n [RawReportType.cspViolation]: StatusType.error,\n [RawReportType.intervention]: StatusType.error,\n [RawReportType.deprecation]: StatusType.warn\n}\n\nexport function startReportCollection(configuration, lifeCycle) {\n var reportSubscription = initReportObservable(\n configuration,\n configuration.forwardReports\n ).subscribe(function (report) {\n var message = report.message\n var status = LogStatusForReport[report.type]\n var error\n if (status === StatusType.error) {\n error = {\n kind: report.subtype,\n origin: ErrorSource.REPORT, // Todo: Remove in the next major release\n stack: report.stack\n }\n } else if (report.stack) {\n message += ' Found in ' + getFileFromStackTraceString(report.stack)\n }\n\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {\n rawLogsEvent: {\n date: timeStampNow(),\n message: message,\n origin: ErrorSource.REPORT,\n error: error,\n status: status\n }\n })\n })\n\n return {\n stop: function () {\n reportSubscription.unsubscribe()\n }\n }\n}\n"],"mappings":";;;;;AAAA,SACEA,YAAY,EACZC,WAAW,EACXC,aAAa,EACbC,2BAA2B,EAC3BC,oBAAoB,EACpBC,kBAAkB,QACb,yBAAyB;AAChC,SAASC,UAAU,QAAQ,cAAc;AAEzC,IAAIC,kBAAkB,IAAAC,mBAAA,OAAAC,eAAA,CAAAD,mBAAA,EACnBN,aAAa,CAACQ,YAAY,EAAGJ,UAAU,CAACK,KAAK,GAAAF,eAAA,CAAAD,mBAAA,EAC7CN,aAAa,CAACU,YAAY,EAAGN,UAAU,CAACK,KAAK,GAAAF,eAAA,CAAAD,mBAAA,EAC7CN,aAAa,CAACW,WAAW,EAAGP,UAAU,CAACQ,IAAI,GAAAN,mBAAA,CAC7C;AAED,OAAO,SAASO,qBAAqBA,CAACC,aAAa,EAAEC,SAAS,EAAE;EAC9D,IAAIC,kBAAkB,GAAGd,oBAAoB,CAC3CY,aAAa,EACbA,aAAa,CAACG,cAChB,CAAC,CAACC,SAAS,CAAC,UAAUC,MAAM,EAAE;IAC5B,IAAIC,OAAO,GAAGD,MAAM,CAACC,OAAO;IAC5B,IAAIC,MAAM,GAAGhB,kBAAkB,CAACc,MAAM,CAACG,IAAI,CAAC;IAC5C,IAAIb,KAAK;IACT,IAAIY,MAAM,KAAKjB,UAAU,CAACK,KAAK,EAAE;MAC/BA,KAAK,GAAG;QACNc,IAAI,EAAEJ,MAAM,CAACK,OAAO;QACpBC,MAAM,EAAE1B,WAAW,CAAC2B,MAAM;QAAE;QAC5BC,KAAK,EAAER,MAAM,CAACQ;MAChB,CAAC;IACH,CAAC,MAAM,IAAIR,MAAM,CAACQ,KAAK,EAAE;MACvBP,OAAO,IAAI,YAAY,GAAGnB,2BAA2B,CAACkB,MAAM,CAACQ,KAAK,CAAC;IACrE;IAEAZ,SAAS,CAACa,MAAM,CAACzB,kBAAkB,CAAC0B,iBAAiB,EAAE;MACrDC,YAAY,EAAE;QACZC,IAAI,EAAEjC,YAAY,CAAC,CAAC;QACpBsB,OAAO,EAAEA,OAAO;QAChBK,MAAM,EAAE1B,WAAW,CAAC2B,MAAM;QAC1BjB,KAAK,EAAEA,KAAK;QACZY,MAAM,EAAEA;MACV;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAO;IACLW,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChBhB,kBAAkB,CAACiB,WAAW,CAAC,CAAC;IAClC;EACF,CAAC;AACH"}
@@ -6,11 +6,8 @@ export function startRuntimeErrorCollection(configuration, lifeCycle) {
6
6
  stop: noop
7
7
  };
8
8
  }
9
-
10
9
  var rawErrorObservable = new Observable();
11
-
12
10
  var _trackRuntimeError = trackRuntimeError(rawErrorObservable);
13
-
14
11
  var rawErrorSubscription = rawErrorObservable.subscribe(function (rawError) {
15
12
  lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
16
13
  rawLogsEvent: {
@@ -30,8 +27,8 @@ export function startRuntimeErrorCollection(configuration, lifeCycle) {
30
27
  return {
31
28
  stop: function stop() {
32
29
  _trackRuntimeError.stop();
33
-
34
30
  rawErrorSubscription.unsubscribe();
35
31
  }
36
32
  };
37
- }
33
+ }
34
+ //# sourceMappingURL=runtimeErrorCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtimeErrorCollection.js","names":["noop","ErrorSource","trackRuntimeError","Observable","LifeCycleEventType","StatusType","startRuntimeErrorCollection","configuration","lifeCycle","forwardErrorsToLogs","stop","rawErrorObservable","_trackRuntimeError","rawErrorSubscription","subscribe","rawError","notify","RAW_LOG_COLLECTED","rawLogsEvent","message","date","startClocks","timeStamp","error","kind","type","origin","SOURCE","stack","status","unsubscribe"],"sources":["../../../../src/domain/logsCollection/rumtimeError/runtimeErrorCollection.js"],"sourcesContent":["import { noop, ErrorSource, trackRuntimeError, Observable, LifeCycleEventType } from '@cloudcare/browser-core'\nimport { StatusType } from '../../logger'\n\nexport function startRuntimeErrorCollection(configuration, lifeCycle) {\n if (!configuration.forwardErrorsToLogs) {\n return { stop: noop }\n }\n\n var rawErrorObservable = new Observable()\n\n var _trackRuntimeError = trackRuntimeError(rawErrorObservable)\n\n var rawErrorSubscription = rawErrorObservable.subscribe(function(rawError) {\n lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {\n rawLogsEvent: {\n message: rawError.message,\n date: rawError.startClocks.timeStamp,\n error: {\n kind: rawError.type,\n origin: ErrorSource.SOURCE, // Todo: Remove in the next major release\n stack: rawError.stack,\n },\n origin: ErrorSource.SOURCE,\n status: StatusType.error,\n },\n })\n })\n\n return {\n stop: function() {\n _trackRuntimeError.stop()\n rawErrorSubscription.unsubscribe()\n },\n }\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,WAAW,EAAEC,iBAAiB,EAAEC,UAAU,EAAEC,kBAAkB,QAAQ,yBAAyB;AAC9G,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAO,SAASC,2BAA2BA,CAACC,aAAa,EAAEC,SAAS,EAAE;EACpE,IAAI,CAACD,aAAa,CAACE,mBAAmB,EAAE;IACtC,OAAO;MAAEC,IAAI,EAAEV;IAAK,CAAC;EACvB;EAEA,IAAIW,kBAAkB,GAAG,IAAIR,UAAU,CAAC,CAAC;EAEzC,IAAIS,kBAAkB,GAAGV,iBAAiB,CAACS,kBAAkB,CAAC;EAE9D,IAAIE,oBAAoB,GAAGF,kBAAkB,CAACG,SAAS,CAAC,UAASC,QAAQ,EAAE;IACzEP,SAAS,CAACQ,MAAM,CAACZ,kBAAkB,CAACa,iBAAiB,EAAE;MACrDC,YAAY,EAAE;QACZC,OAAO,EAAEJ,QAAQ,CAACI,OAAO;QACzBC,IAAI,EAAEL,QAAQ,CAACM,WAAW,CAACC,SAAS;QACpCC,KAAK,EAAE;UACLC,IAAI,EAAET,QAAQ,CAACU,IAAI;UACnBC,MAAM,EAAEzB,WAAW,CAAC0B,MAAM;UAAE;UAC5BC,KAAK,EAAEb,QAAQ,CAACa;QAClB,CAAC;QACDF,MAAM,EAAEzB,WAAW,CAAC0B,MAAM;QAC1BE,MAAM,EAAExB,UAAU,CAACkB;MACrB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,OAAO;IACLb,IAAI,EAAE,SAAAA,KAAA,EAAW;MACfE,kBAAkB,CAACF,IAAI,CAAC,CAAC;MACzBG,oBAAoB,CAACiB,WAAW,CAAC,CAAC;IACpC;EACF,CAAC;AACH"}
@@ -28,15 +28,12 @@ export function startLogsSessionManagerStub(configuration) {
28
28
  expireObservable: new Observable()
29
29
  };
30
30
  }
31
-
32
31
  function computeTrackingType(configuration) {
33
32
  if (!performDraw(configuration.sessionSampleRate)) {
34
33
  return LoggerTrackingType.NOT_TRACKED;
35
34
  }
36
-
37
35
  return LoggerTrackingType.TRACKED;
38
36
  }
39
-
40
37
  function computeSessionState(configuration, rawSessionType) {
41
38
  var trackingType = hasValidLoggerSession(rawSessionType) ? rawSessionType : computeTrackingType(configuration);
42
39
  return {
@@ -44,7 +41,7 @@ function computeSessionState(configuration, rawSessionType) {
44
41
  isTracked: trackingType === LoggerTrackingType.TRACKED
45
42
  };
46
43
  }
47
-
48
44
  function hasValidLoggerSession(trackingType) {
49
45
  return trackingType === LoggerTrackingType.NOT_TRACKED || trackingType === LoggerTrackingType.TRACKED;
50
- }
46
+ }
47
+ //# sourceMappingURL=logsSessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logsSessionManager.js","names":["performDraw","startSessionManager","Observable","LOGS_SESSION_KEY","LoggerTrackingType","NOT_TRACKED","TRACKED","startLogsSessionManager","configuration","sessionManager","cookieOptions","rawTrackingType","computeSessionState","findTrackedSession","startTime","session","findActiveSession","trackingType","id","undefined","expireObservable","startLogsSessionManagerStub","isTracked","computeTrackingType","sessionSampleRate","rawSessionType","hasValidLoggerSession"],"sources":["../../src/domain/logsSessionManager.js"],"sourcesContent":["import {\n performDraw,\n startSessionManager,\n Observable\n} from '@cloudcare/browser-core'\n\nexport var LOGS_SESSION_KEY = 'logs'\n\nexport var LoggerTrackingType = {\n NOT_TRACKED: '0',\n TRACKED: '1'\n}\n\nexport function startLogsSessionManager(configuration) {\n var sessionManager = startSessionManager(\n configuration.cookieOptions,\n LOGS_SESSION_KEY,\n function (rawTrackingType) {\n return computeSessionState(configuration, rawTrackingType)\n }\n )\n return {\n findTrackedSession: function (startTime) {\n var session = sessionManager.findActiveSession(startTime)\n return session && session.trackingType === LoggerTrackingType.TRACKED\n ? {\n id: session.id\n }\n : undefined\n },\n expireObservable: sessionManager.expireObservable\n }\n}\n\nexport function startLogsSessionManagerStub(configuration) {\n var isTracked =\n computeTrackingType(configuration) === LoggerTrackingType.TRACKED\n var session = isTracked ? {} : undefined\n return {\n findTrackedSession: function () {\n return session\n },\n expireObservable: new Observable()\n }\n}\n\nfunction computeTrackingType(configuration) {\n if (!performDraw(configuration.sessionSampleRate)) {\n return LoggerTrackingType.NOT_TRACKED\n }\n return LoggerTrackingType.TRACKED\n}\n\nfunction computeSessionState(configuration, rawSessionType) {\n var trackingType = hasValidLoggerSession(rawSessionType)\n ? rawSessionType\n : computeTrackingType(configuration)\n return {\n trackingType: trackingType,\n isTracked: trackingType === LoggerTrackingType.TRACKED\n }\n}\n\nfunction hasValidLoggerSession(trackingType) {\n return (\n trackingType === LoggerTrackingType.NOT_TRACKED ||\n trackingType === LoggerTrackingType.TRACKED\n )\n}\n"],"mappings":"AAAA,SACEA,WAAW,EACXC,mBAAmB,EACnBC,UAAU,QACL,yBAAyB;AAEhC,OAAO,IAAIC,gBAAgB,GAAG,MAAM;AAEpC,OAAO,IAAIC,kBAAkB,GAAG;EAC9BC,WAAW,EAAE,GAAG;EAChBC,OAAO,EAAE;AACX,CAAC;AAED,OAAO,SAASC,uBAAuBA,CAACC,aAAa,EAAE;EACrD,IAAIC,cAAc,GAAGR,mBAAmB,CACtCO,aAAa,CAACE,aAAa,EAC3BP,gBAAgB,EAChB,UAAUQ,eAAe,EAAE;IACzB,OAAOC,mBAAmB,CAACJ,aAAa,EAAEG,eAAe,CAAC;EAC5D,CACF,CAAC;EACD,OAAO;IACLE,kBAAkB,EAAE,SAAAA,mBAAUC,SAAS,EAAE;MACvC,IAAIC,OAAO,GAAGN,cAAc,CAACO,iBAAiB,CAACF,SAAS,CAAC;MACzD,OAAOC,OAAO,IAAIA,OAAO,CAACE,YAAY,KAAKb,kBAAkB,CAACE,OAAO,GACjE;QACEY,EAAE,EAAEH,OAAO,CAACG;MACd,CAAC,GACDC,SAAS;IACf,CAAC;IACDC,gBAAgB,EAAEX,cAAc,CAACW;EACnC,CAAC;AACH;AAEA,OAAO,SAASC,2BAA2BA,CAACb,aAAa,EAAE;EACzD,IAAIc,SAAS,GACXC,mBAAmB,CAACf,aAAa,CAAC,KAAKJ,kBAAkB,CAACE,OAAO;EACnE,IAAIS,OAAO,GAAGO,SAAS,GAAG,CAAC,CAAC,GAAGH,SAAS;EACxC,OAAO;IACLN,kBAAkB,EAAE,SAAAA,mBAAA,EAAY;MAC9B,OAAOE,OAAO;IAChB,CAAC;IACDK,gBAAgB,EAAE,IAAIlB,UAAU,CAAC;EACnC,CAAC;AACH;AAEA,SAASqB,mBAAmBA,CAACf,aAAa,EAAE;EAC1C,IAAI,CAACR,WAAW,CAACQ,aAAa,CAACgB,iBAAiB,CAAC,EAAE;IACjD,OAAOpB,kBAAkB,CAACC,WAAW;EACvC;EACA,OAAOD,kBAAkB,CAACE,OAAO;AACnC;AAEA,SAASM,mBAAmBA,CAACJ,aAAa,EAAEiB,cAAc,EAAE;EAC1D,IAAIR,YAAY,GAAGS,qBAAqB,CAACD,cAAc,CAAC,GACpDA,cAAc,GACdF,mBAAmB,CAACf,aAAa,CAAC;EACtC,OAAO;IACLS,YAAY,EAAEA,YAAY;IAC1BK,SAAS,EAAEL,YAAY,KAAKb,kBAAkB,CAACE;EACjD,CAAC;AACH;AAEA,SAASoB,qBAAqBA,CAACT,YAAY,EAAE;EAC3C,OACEA,YAAY,KAAKb,kBAAkB,CAACC,WAAW,IAC/CY,YAAY,KAAKb,kBAAkB,CAACE,OAAO;AAE/C"}
@@ -2,4 +2,5 @@ import { defineGlobal, getGlobalObject } from '@cloudcare/browser-core';
2
2
  import { makeLogsPublicApi } from '../boot/logsPublicApi';
3
3
  import { startLogs } from '../boot/startLogs';
4
4
  export var datafluxLogs = makeLogsPublicApi(startLogs);
5
- defineGlobal(getGlobalObject(), 'DATAFLUX_LOGS', datafluxLogs);
5
+ defineGlobal(getGlobalObject(), 'DATAFLUX_LOGS', datafluxLogs);
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","names":["defineGlobal","getGlobalObject","makeLogsPublicApi","startLogs","datafluxLogs"],"sources":["../../src/entries/main.js"],"sourcesContent":["import { defineGlobal, getGlobalObject } from '@cloudcare/browser-core'\nimport { makeLogsPublicApi } from '../boot/logsPublicApi'\nimport { startLogs } from '../boot/startLogs'\n\nexport const datafluxLogs = makeLogsPublicApi(startLogs)\n\ndefineGlobal(getGlobalObject(), 'DATAFLUX_LOGS', datafluxLogs)\n"],"mappings":"AAAA,SAASA,YAAY,EAAEC,eAAe,QAAQ,yBAAyB;AACvE,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,SAAS,QAAQ,mBAAmB;AAE7C,OAAO,IAAMC,YAAY,GAAGF,iBAAiB,CAACC,SAAS,CAAC;AAExDH,YAAY,CAACC,eAAe,CAAC,CAAC,EAAE,eAAe,EAAEG,YAAY,CAAC"}
package/esm/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  import { datafluxLogs } from './entries/main';
2
- export { datafluxLogs };
2
+ export { datafluxLogs };
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["datafluxLogs"],"sources":["../src/index.js"],"sourcesContent":["import { datafluxLogs } from './entries/main'\nexport { datafluxLogs }\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,gBAAgB;AAC7C,SAASA,YAAY"}
@@ -4,4 +4,5 @@ export function startLogsBatch(configuration, lifeCycle, reportError, pageExitOb
4
4
  lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, function (serverLogsEvent) {
5
5
  batch.add(serverLogsEvent);
6
6
  });
7
- }
7
+ }
8
+ //# sourceMappingURL=startLogsBatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startLogsBatch.js","names":["startBatchWithReplica","LifeCycleEventType","startLogsBatch","configuration","lifeCycle","reportError","pageExitObservable","sessionExpireObservable","batch","logsEndpoint","subscribe","LOG_COLLECTED","serverLogsEvent","add"],"sources":["../../src/transport/startLogsBatch.js"],"sourcesContent":["import {\n startBatchWithReplica,\n LifeCycleEventType\n} from '@cloudcare/browser-core'\n\nexport function startLogsBatch(\n configuration,\n lifeCycle,\n reportError,\n pageExitObservable,\n sessionExpireObservable\n) {\n var batch = startBatchWithReplica(\n configuration,\n configuration.logsEndpoint,\n reportError,\n pageExitObservable,\n sessionExpireObservable\n )\n\n lifeCycle.subscribe(\n LifeCycleEventType.LOG_COLLECTED,\n function (serverLogsEvent) {\n batch.add(serverLogsEvent)\n }\n )\n}\n"],"mappings":"AAAA,SACEA,qBAAqB,EACrBC,kBAAkB,QACb,yBAAyB;AAEhC,OAAO,SAASC,cAAcA,CAC5BC,aAAa,EACbC,SAAS,EACTC,WAAW,EACXC,kBAAkB,EAClBC,uBAAuB,EACvB;EACA,IAAIC,KAAK,GAAGR,qBAAqB,CAC/BG,aAAa,EACbA,aAAa,CAACM,YAAY,EAC1BJ,WAAW,EACXC,kBAAkB,EAClBC,uBACF,CAAC;EAEDH,SAAS,CAACM,SAAS,CACjBT,kBAAkB,CAACU,aAAa,EAChC,UAAUC,eAAe,EAAE;IACzBJ,KAAK,CAACK,GAAG,CAACD,eAAe,CAAC;EAC5B,CACF,CAAC;AACH"}
@@ -0,0 +1,8 @@
1
+ import { LifeCycleEventType, getEventBridge } from '@cloudcare/browser-core';
2
+ export function startLogsBridge(lifeCycle) {
3
+ var bridge = getEventBridge();
4
+ lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, function (serverLogsEvent) {
5
+ bridge.send('log', serverLogsEvent);
6
+ });
7
+ }
8
+ //# sourceMappingURL=startLogsBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startLogsBridge.js","names":["LifeCycleEventType","getEventBridge","startLogsBridge","lifeCycle","bridge","subscribe","LOG_COLLECTED","serverLogsEvent","send"],"sources":["../../src/transport/startLogsBridge.js"],"sourcesContent":["import { LifeCycleEventType, getEventBridge } from '@cloudcare/browser-core'\nexport function startLogsBridge(lifeCycle) {\n const bridge = getEventBridge()\n\n lifeCycle.subscribe(\n LifeCycleEventType.LOG_COLLECTED,\n function (serverLogsEvent) {\n bridge.send('log', serverLogsEvent)\n }\n )\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,cAAc,QAAQ,yBAAyB;AAC5E,OAAO,SAASC,eAAeA,CAACC,SAAS,EAAE;EACzC,IAAMC,MAAM,GAAGH,cAAc,CAAC,CAAC;EAE/BE,SAAS,CAACE,SAAS,CACjBL,kBAAkB,CAACM,aAAa,EAChC,UAAUC,eAAe,EAAE;IACzBH,MAAM,CAACI,IAAI,CAAC,KAAK,EAAED,eAAe,CAAC;EACrC,CACF,CAAC;AACH"}
package/package.json CHANGED
@@ -2,9 +2,9 @@
2
2
  "name": "@cloudcare/browser-logs",
3
3
  "main": "cjs/index.js",
4
4
  "module": "esm/index.js",
5
- "version": "3.0.23",
5
+ "version": "3.1.0",
6
6
  "dependencies": {
7
- "@cloudcare/browser-core": "^3.0.23"
7
+ "@cloudcare/browser-core": "3.1.0"
8
8
  },
9
9
  "scripts": {
10
10
  "dev": "webpack serve --open --mode=development",
@@ -12,8 +12,9 @@
12
12
  "build:cjs": "rm -rf cjs && babel --config-file ./babel.cjs.json --out-dir cjs ./src && npm run replace-build-env cjs",
13
13
  "build:esm": "rm -rf esm && babel --config-file ./babel.esm.json --out-dir esm ./src && npm run replace-build-env esm",
14
14
  "build:bundle": "rm -rf bundle && webpack --mode=production",
15
- "publish:oss": "npm run build:bundle && node ./scripts/publish-oss.js",
15
+ "publish:oss:current": "npm run build:bundle && node ./scripts/publish-oss.js current",
16
16
  "publish:oss:test": "npm run build:bundle && node ./scripts/publish-oss.js test",
17
+ "publish:oss:lts": "npm run build:bundle && node ./scripts/publish-oss.js lts",
17
18
  "replace-build-env": "node ../../scripts/replace-build-env.js"
18
19
  },
19
20
  "keywords": [
@@ -28,5 +29,5 @@
28
29
  "author": "dataflux",
29
30
  "license": "MIT",
30
31
  "description": "DataFlux RUM Web 端数据指标监控",
31
- "gitHead": "0c8164fe62fcb3dfeee505c9ca27da49cac54dc5"
32
+ "gitHead": "6863a7abc368adb01df9a2de5efbed111db1e286"
32
33
  }
@@ -7,7 +7,8 @@ import {
7
7
  deepClone,
8
8
  timeStampNow,
9
9
  checkUser,
10
- sanitizeUser
10
+ sanitizeUser,
11
+ monitor
11
12
  } from '@cloudcare/browser-core'
12
13
  import { validateAndBuildLogsConfiguration } from '../domain/configuration'
13
14
  import { Logger } from '../domain/logger'
@@ -65,7 +66,7 @@ export function makeLogsPublicApi(startLogsImpl) {
65
66
  return makePublicApi({
66
67
  logger: mainLogger,
67
68
 
68
- init: function (initConfiguration) {
69
+ init: monitor(function (initConfiguration) {
69
70
  if (!canInitLogs(initConfiguration)) {
70
71
  return
71
72
  }
@@ -87,23 +88,25 @@ export function makeLogsPublicApi(startLogsImpl) {
87
88
  beforeInitLoggerLog.drain()
88
89
 
89
90
  isAlreadyInitialized = true
90
- },
91
+ }),
91
92
 
92
93
  /** @deprecated: use getGlobalContext instead */
93
- getGlobalContext: globalContextManager.getContext,
94
+ getGlobalContext: monitor(globalContextManager.getContext),
94
95
 
95
96
  /** @deprecated: use setGlobalContext instead */
96
- setGlobalContext: globalContextManager.setContext,
97
+ setGlobalContext: monitor(globalContextManager.setContext),
97
98
 
98
99
  /** @deprecated: use setGlobalContextProperty instead */
99
- setGlobalContextProperty: globalContextManager.setContextProperty,
100
+ setGlobalContextProperty: monitor(globalContextManager.setContextProperty),
100
101
 
101
102
  /** @deprecated: use removeGlobalContextProperty instead */
102
- removeGlobalContextProperty: globalContextManager.removeContextProperty,
103
+ removeGlobalContextProperty: monitor(
104
+ globalContextManager.removeContextProperty
105
+ ),
103
106
 
104
- clearGlobalContext: globalContextManager.clearContext,
107
+ clearGlobalContext: monitor(globalContextManager.clearContext),
105
108
 
106
- createLogger: function (name, conf) {
109
+ createLogger: monitor(function (name, conf) {
107
110
  if (typeof conf == 'undefined') {
108
111
  conf = {}
109
112
  }
@@ -117,27 +120,27 @@ export function makeLogsPublicApi(startLogsImpl) {
117
120
  conf.context
118
121
  )
119
122
  return customLoggers[name]
120
- },
123
+ }),
121
124
 
122
- getLogger: function (name) {
125
+ getLogger: monitor(function (name) {
123
126
  return customLoggers[name]
124
- },
127
+ }),
125
128
 
126
- getInitConfiguration: function () {
129
+ getInitConfiguration: monitor(function () {
127
130
  return getInitConfigurationStrategy()
128
- },
131
+ }),
129
132
 
130
- getInternalContext: function (startTime) {
133
+ getInternalContext: monitor(function (startTime) {
131
134
  return getInternalContextStrategy(startTime)
132
- },
133
- setUser: function (newUser) {
135
+ }),
136
+ setUser: monitor(function (newUser) {
134
137
  if (checkUser(newUser)) {
135
138
  userContextManager.setContext(sanitizeUser(newUser))
136
139
  }
137
- },
138
- getUser: userContextManager.getContext,
139
- removeUserProperty: userContextManager.removeContextProperty,
140
- clearUser: userContextManager.clearContext
140
+ }),
141
+ getUser: monitor(userContextManager.getContext),
142
+ removeUserProperty: monitor(userContextManager.removeContextProperty),
143
+ clearUser: monitor(userContextManager.clearContext)
141
144
  })
142
145
 
143
146
  function canInitLogs(initConfiguration) {
@@ -3,13 +3,17 @@ import {
3
3
  LifeCycle,
4
4
  LifeCycleEventType,
5
5
  createPageExitObservable,
6
- areCookiesAuthorized
6
+ areCookiesAuthorized,
7
+ startTelemetry,
8
+ startBatchWithReplica,
9
+ canUseEventBridge,
10
+ TelemetryService
7
11
  } from '@cloudcare/browser-core'
8
12
  import {
9
13
  startLogsSessionManager,
10
14
  startLogsSessionManagerStub
11
15
  } from '../domain/logsSessionManager'
12
- import { startLogsAssembly } from '../domain/assembly'
16
+ import { startLogsAssembly, getRUMInternalContext } from '../domain/assembly'
13
17
  import { startConsoleCollection } from '../domain/logsCollection/console/consoleCollection'
14
18
  import { startReportCollection } from '../domain/logsCollection/report/reportCollection'
15
19
  import { startNetworkErrorCollection } from '../domain/logsCollection/networkError/networkErrorCollection'
@@ -39,6 +43,38 @@ export function startLogs(configuration, buildCommonContext, mainLogger) {
39
43
  var session = areCookiesAuthorized(configuration.cookieOptions)
40
44
  ? startLogsSessionManager(configuration)
41
45
  : startLogsSessionManagerStub(configuration)
46
+ const telemetry = startLogsTelemetry(
47
+ configuration,
48
+ reportError,
49
+ pageExitObservable,
50
+ session.expireObservable
51
+ )
52
+ telemetry.setContextProvider(function () {
53
+ var RUMInternalContext = getRUMInternalContext()
54
+ return {
55
+ application: {
56
+ id:
57
+ RUMInternalContext &&
58
+ RUMInternalContext.application &&
59
+ RUMInternalContext.application.id
60
+ },
61
+ session: {
62
+ id: session.findTrackedSession() && session.findTrackedSession().id
63
+ },
64
+ view: {
65
+ id:
66
+ RUMInternalContext &&
67
+ RUMInternalContext.view &&
68
+ RUMInternalContext.view.id
69
+ },
70
+ action: {
71
+ id:
72
+ RUMInternalContext &&
73
+ RUMInternalContext.userAction &&
74
+ RUMInternalContext.userAction.id
75
+ }
76
+ }
77
+ })
42
78
  startNetworkErrorCollection(configuration, lifeCycle)
43
79
  startRuntimeErrorCollection(configuration, lifeCycle)
44
80
  startConsoleCollection(configuration, lifeCycle)
@@ -53,14 +89,15 @@ export function startLogs(configuration, buildCommonContext, mainLogger) {
53
89
  mainLogger,
54
90
  reportError
55
91
  )
56
-
57
- startLogsBatch(
58
- configuration,
59
- lifeCycle,
60
- reportError,
61
- pageExitObservable,
62
- session.expireObservable
63
- )
92
+ if (!canUseEventBridge()) {
93
+ startLogsBatch(
94
+ configuration,
95
+ lifeCycle,
96
+ reportError,
97
+ pageExitObservable,
98
+ session.expireObservable
99
+ )
100
+ }
64
101
 
65
102
  var internalContext = startInternalContext(session)
66
103
 
@@ -69,3 +106,24 @@ export function startLogs(configuration, buildCommonContext, mainLogger) {
69
106
  getInternalContext: internalContext.get
70
107
  }
71
108
  }
109
+ function startLogsTelemetry(
110
+ configuration,
111
+ reportError,
112
+ pageExitObservable,
113
+ sessionExpireObservable
114
+ ) {
115
+ const telemetry = startTelemetry(TelemetryService.LOGS, configuration)
116
+ if (!canUseEventBridge()) {
117
+ var telemetryBatch = startBatchWithReplica(
118
+ configuration,
119
+ configuration.rumEndpoint,
120
+ reportError,
121
+ pageExitObservable,
122
+ sessionExpireObservable
123
+ )
124
+ telemetry.observable.subscribe(function (event) {
125
+ telemetryBatch.add(event)
126
+ })
127
+ }
128
+ return telemetry
129
+ }
@@ -98,7 +98,3 @@ export function getRUMInternalContext(startTime) {
98
98
  }
99
99
  }
100
100
  }
101
-
102
- export function resetRUMInternalContext() {
103
- logsSentBeforeRumInjectionTelemetryAdded = false
104
- }
@@ -1,11 +1,17 @@
1
1
  import {
2
- deepClone,
3
2
  assign,
4
3
  extend2Lev,
5
4
  createContextManager,
6
5
  ErrorSource,
7
6
  keys,
8
- CustomerDataType
7
+ CustomerDataType,
8
+ sanitize,
9
+ computeStackTrace,
10
+ computeRawError,
11
+ clocksNow,
12
+ ErrorHandling,
13
+ monitor,
14
+ NonErrorPrefix
9
15
  } from '@cloudcare/browser-core'
10
16
 
11
17
  export var StatusType = {
@@ -49,37 +55,73 @@ export function Logger(
49
55
  )
50
56
  }
51
57
  Logger.prototype = {
52
- log: function (message, messageContext, status) {
58
+ log: monitor(function (message, messageContext, status, error) {
53
59
  if (typeof status === 'undefined') {
54
60
  status = StatusType.info
55
61
  }
62
+ var errorContext
63
+ if (status === StatusType.error) {
64
+ // Always add origin if status is error (backward compatibility - Remove in next major)
65
+ errorContext = { origin: ErrorSource.LOGGER }
66
+ }
67
+ if (error !== undefined && error !== null) {
68
+ var stackTrace =
69
+ error instanceof Error ? computeStackTrace(error) : undefined
70
+ var rawError = computeRawError({
71
+ stackTrace: stackTrace,
72
+ originalError: error,
73
+ nonErrorPrefix: NonErrorPrefix.PROVIDED,
74
+ source: ErrorSource.LOGGER,
75
+ handling: ErrorHandling.HANDLED,
76
+ startClocks: clocksNow()
77
+ })
78
+
79
+ errorContext = {
80
+ origin: ErrorSource.LOGGER, // Remove in next major
81
+ stack: rawError.stack,
82
+ kind: rawError.type,
83
+ message: rawError.message
84
+ }
85
+ }
86
+
87
+ var sanitizedMessageContext = sanitize(messageContext)
88
+
89
+ var context = errorContext
90
+ ? extend2Lev({ error: errorContext }, sanitizedMessageContext)
91
+ : sanitizedMessageContext
92
+
56
93
  this.handleLogStrategy(
57
- { message: message, context: deepClone(messageContext), status: status },
94
+ { message: message, context: context, status: status },
58
95
  this
59
96
  )
60
- },
97
+ }),
61
98
 
62
- debug: function (message, messageContext) {
63
- this.log(message, messageContext, StatusType.debug)
99
+ debug: function (message, messageContext, error) {
100
+ this.log(message, messageContext, StatusType.debug, error)
64
101
  },
65
102
 
66
- info: function (message, messageContext) {
67
- this.log(message, messageContext, StatusType.info)
103
+ info: function (message, messageContext, error) {
104
+ this.log(message, messageContext, StatusType.info, error)
68
105
  },
69
106
 
70
- warn: function (message, messageContext) {
71
- this.log(message, messageContext, StatusType.warn)
107
+ warn: function (message, messageContext, error) {
108
+ this.log(message, messageContext, StatusType.warn, error)
72
109
  },
73
- critical: function (message, messageContext) {
74
- this.log(message, messageContext, StatusType.critical)
110
+ critical: function (message, messageContext, error) {
111
+ this.log(message, messageContext, StatusType.critical, error)
75
112
  },
76
- error: function (message, messageContext) {
113
+ error: function (message, messageContext, error) {
77
114
  var errorOrigin = {
78
115
  error: {
79
116
  origin: ErrorSource.LOGGER
80
117
  }
81
118
  }
82
- this.log(message, extend2Lev(errorOrigin, messageContext), StatusType.error)
119
+ this.log(
120
+ message,
121
+ extend2Lev(errorOrigin, messageContext),
122
+ StatusType.error,
123
+ error
124
+ )
83
125
  },
84
126
 
85
127
  setContext: function (context) {
@@ -1,48 +1,56 @@
1
- import { includes, display, extend2Lev, ErrorSource, timeStampNow, LifeCycleEventType, isArray } from '@cloudcare/browser-core'
1
+ import {
2
+ includes,
3
+ display,
4
+ extend2Lev,
5
+ ErrorSource,
6
+ timeStampNow,
7
+ LifeCycleEventType,
8
+ isArray
9
+ } from '@cloudcare/browser-core'
2
10
  import { StatusType, HandlerType } from '../../logger'
3
11
 
4
12
  export var STATUS_PRIORITIES = {
5
13
  [StatusType.debug]: 0,
6
14
  [StatusType.info]: 1,
7
15
  [StatusType.warn]: 2,
8
- [StatusType.error]: 3,
16
+ [StatusType.error]: 3
9
17
  }
10
18
 
11
19
  export function startLoggerCollection(lifeCycle) {
12
- function handleLog(
13
- logsMessage,
14
- logger,
15
- savedCommonContext,
16
- savedDate
17
- ) {
20
+ function handleLog(logsMessage, logger, savedCommonContext, savedDate) {
18
21
  var messageContext = logsMessage.context
19
-
20
22
  if (isAuthorized(logsMessage.status, HandlerType.console, logger)) {
21
- display(logsMessage.status, logsMessage.message, extend2Lev(logger.getContext(), messageContext))
23
+ display(
24
+ logsMessage.status,
25
+ logsMessage.message,
26
+ extend2Lev(logger.getContext(), messageContext)
27
+ )
22
28
  }
23
-
24
29
  lifeCycle.notify(LifeCycleEventType.RAW_LOG_COLLECTED, {
25
30
  rawLogsEvent: {
26
31
  date: savedDate || timeStampNow(),
27
32
  message: logsMessage.message,
28
33
  status: logsMessage.status,
29
- origin: ErrorSource.LOGGER,
34
+ origin: ErrorSource.LOGGER
30
35
  },
31
36
  messageContext: messageContext,
32
37
  savedCommonContext: savedCommonContext,
33
- logger: logger,
38
+ logger: logger
34
39
  })
35
40
  }
36
41
 
37
42
  return {
38
- handleLog: handleLog,
43
+ handleLog: handleLog
39
44
  }
40
45
  }
41
46
 
42
47
  export function isAuthorized(status, handlerType, logger) {
43
48
  var loggerHandler = logger.getHandler()
44
- var sanitizedHandlerType = isArray(loggerHandler) ? loggerHandler : [loggerHandler]
49
+ var sanitizedHandlerType = isArray(loggerHandler)
50
+ ? loggerHandler
51
+ : [loggerHandler]
45
52
  return (
46
- STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] && includes(sanitizedHandlerType, handlerType)
53
+ STATUS_PRIORITIES[status] >= STATUS_PRIORITIES[logger.getLevel()] &&
54
+ includes(sanitizedHandlerType, handlerType)
47
55
  )
48
56
  }
@@ -12,7 +12,8 @@ import {
12
12
  urlParse,
13
13
  replaceNumberCharByPath,
14
14
  tryToClone,
15
- readBytesFromStream
15
+ readBytesFromStream,
16
+ monitor
16
17
  } from '@cloudcare/browser-core'
17
18
  import { StatusType } from '../../logger'
18
19
 
@@ -151,12 +152,12 @@ export function computeFetchResponseText(response, configuration, callback) {
151
152
  // response.body.getReader().cancel()
152
153
  // })
153
154
  clonedResponse.text().then(
154
- function (text) {
155
+ monitor(function (text) {
155
156
  return callback(truncateResponseText(text, configuration))
156
- },
157
- function (error) {
157
+ }),
158
+ monitor(function (error) {
158
159
  return callback('Unable to retrieve response: ' + error)
159
- }
160
+ })
160
161
  )
161
162
  } else {
162
163
  truncateResponseStream(