@wemap/providers 3.1.23 → 3.2.2

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 (74) hide show
  1. package/babel.config.json +16 -0
  2. package/debug/MainComponent.jsx +5 -5
  3. package/debug/components/AbsoluteAttitudeComponent.jsx +5 -5
  4. package/debug/components/AbsolutePositionComponent.jsx +7 -9
  5. package/debug/components/GnssWifiComponent.jsx +5 -5
  6. package/debug/components/ImuComponent.jsx +4 -4
  7. package/debug/components/InclinationComponent.jsx +4 -4
  8. package/debug/components/RelativeAttitudeComponent.jsx +4 -4
  9. package/debug/components/StepDetectionComponent.jsx +4 -4
  10. package/debug/components/Utils.js +1 -1
  11. package/debug/{Common.css → css/App.css} +0 -44
  12. package/debug/css/UserOnMapHandler.css +43 -0
  13. package/debug/details/DetailsAttitudeComponent.jsx +1 -1
  14. package/debug/details/DetailsComponent.jsx +4 -5
  15. package/debug/details/DetailsPositionComponent.jsx +2 -2
  16. package/debug/details/ItineraryComponent.jsx +10 -69
  17. package/debug/index.js +8 -8
  18. package/debug/map/MapComponent.jsx +23 -15
  19. package/debug/map/MapHandler.js +7 -16
  20. package/debug/map/helpers/ItineraryMapHandler.js +15 -16
  21. package/debug/map/helpers/MapClickHandler.js +9 -7
  22. package/debug/map/helpers/UserOnMapHandler.js +38 -417
  23. package/debug/stores/ItineraryStore.js +23 -48
  24. package/dist/assets/indoor-maps/bureaux-wemap-montpellier.geojson +339 -513
  25. package/dist/js/providers-components.js +2361 -0
  26. package/dist/logger.html +58 -0
  27. package/index.js +7 -5
  28. package/package.json +25 -21
  29. package/src/Providers.js +15 -15
  30. package/src/ProvidersInterface.js +7 -5
  31. package/src/errors/MissingAccelerometerError.js +2 -2
  32. package/src/errors/MissingGyroscopeError.js +2 -2
  33. package/src/errors/MissingMagnetometerError.js +1 -1
  34. package/src/events/ProviderEvent.js +1 -1
  35. package/src/events/{ProvidersLogger.js → ProvidersLoggerOld.js} +7 -7
  36. package/src/logger/NavigationLogger.js +138 -0
  37. package/src/logger/NavigationLoggerConverter.js +263 -0
  38. package/src/providers/FakeProvider.spec.js +3 -4
  39. package/src/providers/MetaProvider.js +3 -3
  40. package/src/providers/Provider.js +12 -11
  41. package/src/providers/Provider.spec.js +5 -7
  42. package/src/providers/attitude/EkfAttitude.spec.js +1 -1
  43. package/src/providers/attitude/absolute/AbsoluteAttitudeFromBrowserProvider.js +9 -8
  44. package/src/providers/attitude/absolute/AbsoluteAttitudeFromRelAttProvider.js +5 -6
  45. package/src/providers/attitude/absolute/AbsoluteAttitudeProvider.js +3 -3
  46. package/src/providers/attitude/relative/RelativeAttitudeFromBrowserProvider.js +7 -5
  47. package/src/providers/attitude/relative/RelativeAttitudeFromEkfProvider.js +5 -5
  48. package/src/providers/attitude/relative/RelativeAttitudeFromInertialProvider.js +3 -3
  49. package/src/providers/attitude/relative/RelativeAttitudeProvider.js +5 -4
  50. package/src/providers/imu/AccelerometerProvider.js +4 -4
  51. package/src/providers/imu/GyroscopeProvider.js +4 -4
  52. package/src/providers/imu/ImuProvider.js +5 -4
  53. package/src/providers/inclination/InclinationFromAccProvider.js +3 -3
  54. package/src/providers/inclination/InclinationFromRelativeAttitudeProvider.js +3 -3
  55. package/src/providers/inclination/InclinationProvider.js +3 -3
  56. package/src/providers/legacy/helpers/HeadingUnlocker.spec.js +1 -1
  57. package/src/providers/others/BarcodeProvider.js +3 -3
  58. package/src/providers/others/CameraNativeProvider.js +4 -4
  59. package/src/providers/others/CameraProjectionMatrixProvider.js +3 -3
  60. package/src/providers/position/absolute/AbsolutePositionFromRelProvider.js +4 -4
  61. package/src/providers/position/absolute/AbsolutePositionProvider.js +5 -5
  62. package/src/providers/position/absolute/GnssWifiProvider.js +9 -6
  63. package/src/providers/position/absolute/IpProvider.js +3 -3
  64. package/src/providers/position/relative/ArCoreProvider.js +5 -5
  65. package/src/providers/position/relative/GeoRelativePositionFromArCoreProvider.js +3 -3
  66. package/src/providers/position/relative/GeoRelativePositionProvider.js +3 -3
  67. package/src/providers/position/relative/PdrProvider.js +3 -3
  68. package/src/providers/steps/StepDetectionProvider.js +11 -4
  69. package/src/smoothers/PositionSmoother.spec.js +1 -1
  70. package/webpack/{webpack.common.js → webpack.common.cjs} +7 -1
  71. package/webpack/{webpack.dev.js → webpack.dev.cjs} +1 -7
  72. package/webpack/{webpack.prod.js → webpack.prod.cjs} +1 -1
  73. package/babel.config.js +0 -11
  74. package/debug/map/MapboxHelper.js +0 -50
@@ -0,0 +1,58 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, user-scalable=no">
7
+ <title>Debug Pose</title>
8
+ <script src="js/providers-components.js"></script>
9
+
10
+ <style>
11
+ #logger {
12
+ background: #ffffffaa;
13
+ position: absolute;
14
+ bottom: 0;
15
+ left: 0;
16
+ z-index: 2;
17
+ margin: 5px;
18
+ padding-left: 10px;
19
+ padding-right: 10px;
20
+ min-width: 100px;
21
+ }
22
+ </style>
23
+ </head>
24
+
25
+ <body>
26
+ <div id="app"></div>
27
+ <div id="logger">
28
+ <div class="title">Logger</div>
29
+ <button id="start">Start</button>
30
+ <button id="stop" disabled>Stop</button>
31
+ </div>
32
+ <script>
33
+ const app = createReactElement(MainComponent, document.getElementById('app'));
34
+
35
+ const SERVER_URL = 'https://localhost:9002'
36
+
37
+ const startButton = document.getElementById('start');
38
+ const stopButton = document.getElementById('stop');
39
+
40
+ startButton.addEventListener('click', () => {
41
+ document.dispatchEvent(new CustomEvent('providers.logger.start', { detail : {
42
+ serverUrl: SERVER_URL,
43
+ logsSize: 300
44
+ }}));
45
+ startButton.disabled = true;
46
+ stopButton.disabled = false;
47
+ });
48
+
49
+ stopButton.addEventListener('click', () => {
50
+ document.dispatchEvent(new Event('providers.logger.stop'));
51
+ startButton.disabled = false;
52
+ stopButton.disabled = true;
53
+ });
54
+
55
+ </script>
56
+ </body>
57
+
58
+ </html>
package/index.js CHANGED
@@ -1,8 +1,10 @@
1
- import EventType from './src/events/EventType';
2
- import PositionSmoother from './src/smoothers/PositionSmoother';
3
- import ProvidersInterface from './src/ProvidersInterface';
4
- import ProvidersOptions from './src/ProvidersOptions';
1
+ import EventType from './src/events/EventType.js';
2
+ import PositionSmoother from './src/smoothers/PositionSmoother.js';
3
+ import ProvidersInterface from './src/ProvidersInterface.js';
4
+ import ProvidersOptions from './src/ProvidersOptions.js';
5
+ import NavigationLogger from './src/logger/NavigationLogger.js';
6
+ import NavigationLoggerConverter from './src/logger/NavigationLoggerConverter.js';
5
7
 
6
8
  export {
7
- EventType, PositionSmoother, ProvidersInterface, ProvidersOptions
9
+ EventType, PositionSmoother, ProvidersInterface, ProvidersOptions, NavigationLogger, NavigationLoggerConverter
8
10
  };
package/package.json CHANGED
@@ -8,26 +8,30 @@
8
8
  "Guillaume Pannetier <guillaume.pannetier@getwemap.com>"
9
9
  ],
10
10
  "dependencies": {
11
- "@wemap/geo": "^3.1.21",
12
- "@wemap/graph": "^3.1.21",
13
- "@wemap/logger": "^3.0.0",
14
- "@wemap/maths": "^3.1.15",
15
- "@wemap/osm": "^3.1.21",
16
- "@wemap/utils": "^3.1.23",
11
+ "@wemap/geo": "^3.2.2",
12
+ "@wemap/graph": "^3.2.2",
13
+ "@wemap/logger": "^3.2.1",
14
+ "@wemap/maths": "^3.2.1",
15
+ "@wemap/osm": "^3.2.2",
16
+ "@wemap/utils": "^3.2.2",
17
+ "browser-cookies": "^1.2.0",
17
18
  "geomagnetism": "^0.1.0",
18
19
  "lodash.isempty": "^4.4.0",
19
- "lodash.noop": "^3.0.1"
20
+ "lodash.noop": "^3.0.1",
21
+ "uuid": "^8.2.0"
20
22
  },
21
23
  "description": "A package using different geoloc systems",
22
24
  "devDependencies": {
23
- "@babel/core": "^7.5.5",
24
- "@babel/plugin-proposal-class-properties": "^7.5.5",
25
- "@babel/preset-env": "^7.5.5",
26
- "@babel/preset-react": "^7.0.0",
27
- "@thibaudm/mapbox-gl-js-indoor": "^1.7.0-6",
25
+ "@babel/core": "^7.11.1",
26
+ "@babel/plugin-proposal-class-properties": "^7.10.4",
27
+ "@babel/preset-env": "^7.11.0",
28
+ "@babel/preset-react": "^7.10.4",
29
+ "@wemap/map": "^3.2.2",
28
30
  "babel-loader": "^8.0.6",
29
31
  "css-loader": "^3.2.0",
30
32
  "file-loader": "^5.0.2",
33
+ "mapbox-gl": "^1.11.1",
34
+ "mapbox-gl-indoor": "0.0.4",
31
35
  "prop-types": "^15.7.2",
32
36
  "react": "^16.11.0",
33
37
  "react-dom": "^16.11.0",
@@ -56,14 +60,14 @@
56
60
  "url": "git+https://github.com/wemap/wemap-modules-js.git"
57
61
  },
58
62
  "scripts": {
59
- "build": "webpack --display-modules --config webpack/webpack.prod.js",
60
- "build-debug": "webpack --display-modules --config webpack/webpack.dev.js",
61
- "stats": "webpack --config webpack/webpack.prod.js --profile --json > stats.json",
62
- "start": "webpack-dev-server --config webpack/webpack.dev.js --progress --inline --hot --https",
63
- "start-secure": "webpack-dev-server --config webpack/webpack.dev.js --progress --inline --hot --https --cert $(grep PEM .env | cut -d '=' -f2) --key $(grep KEY .env | cut -d '=' -f2)",
64
- "lint": "eslint --ext .js,.jsx --quiet src",
65
- "test": "mocha -r esm \"src/**/*.spec.js\""
63
+ "build": "webpack --display-modules --config webpack/webpack.prod.cjs",
64
+ "build-debug": "webpack --display-modules --config webpack/webpack.dev.cjs",
65
+ "stats": "webpack --config webpack/webpack.prod.cjs --profile --json > stats.json",
66
+ "start": "webpack-dev-server --config webpack/webpack.dev.cjs --progress --inline --hot --https",
67
+ "start-secure": "webpack-dev-server --config webpack/webpack.dev.cjs --progress --inline --hot --https --cert $(grep PEM ../../.env | cut -d '=' -f2) --key $(grep KEY ../../.env | cut -d '=' -f2)",
68
+ "lint": "eslint --ext .js,.jsx --quiet src"
66
69
  },
67
- "version": "3.1.23",
68
- "gitHead": "bc4842c87e22d3edd6a1c85088c20a40324698ed"
70
+ "type": "module",
71
+ "version": "3.2.2",
72
+ "gitHead": "6ff8c054aed5ccbf0f456aad752c43f46fe6b278"
69
73
  }
package/src/Providers.js CHANGED
@@ -24,37 +24,37 @@ const AbsoluteAttitudeFromBrowser = AbsoluteAttitudeFromBrowserProvider.instance
24
24
  const AbsoluteAttitudeFromRelAtt = AbsoluteAttitudeFromRelAttProvider.instance;
25
25
  const AbsoluteAttitude = AbsoluteAttitudeProvider.instance;
26
26
 
27
- import InclinationFromAccProvider from './providers/inclination/InclinationFromAccProvider';
28
- import InclinationFromRelativeAttitudeProvider from './providers/inclination/InclinationFromRelativeAttitudeProvider';
29
- import InclinationProvider from './providers/inclination/InclinationProvider';
27
+ import InclinationFromAccProvider from './providers/inclination/InclinationFromAccProvider.js';
28
+ import InclinationFromRelativeAttitudeProvider from './providers/inclination/InclinationFromRelativeAttitudeProvider.js';
29
+ import InclinationProvider from './providers/inclination/InclinationProvider.js';
30
30
  const InclinationFromAcc = InclinationFromAccProvider.instance;
31
31
  const InclinationFromRelativeAttitude = InclinationFromRelativeAttitudeProvider.instance;
32
32
  const Inclination = InclinationProvider.instance;
33
33
 
34
- import StepDetectionProvider from './providers/steps/StepDetectionProvider';
34
+ import StepDetectionProvider from './providers/steps/StepDetectionProvider.js';
35
35
  const StepDetection = StepDetectionProvider.instance;
36
36
 
37
- import ArCoreProvider from './providers/position/relative/ArCoreProvider';
38
- import PdrProvider from './providers/position/relative/PdrProvider';
39
- import GeoRelativePositionFromArCoreProvider from './providers/position/relative/GeoRelativePositionFromArCoreProvider';
40
- import GeoRelativePositionProvider from './providers/position/relative/GeoRelativePositionProvider';
37
+ import ArCoreProvider from './providers/position/relative/ArCoreProvider.js';
38
+ import PdrProvider from './providers/position/relative/PdrProvider.js';
39
+ import GeoRelativePositionFromArCoreProvider from './providers/position/relative/GeoRelativePositionFromArCoreProvider.js';
40
+ import GeoRelativePositionProvider from './providers/position/relative/GeoRelativePositionProvider.js';
41
41
  const ArCore = ArCoreProvider.instance;
42
42
  const Pdr = PdrProvider.instance;
43
43
  const GeoRelativePositionFromArCore = GeoRelativePositionFromArCoreProvider.instance;
44
44
  const GeoRelativePosition = GeoRelativePositionProvider.instance;
45
45
 
46
- import AbsolutePositionFromRelProvider from './providers/position/absolute/AbsolutePositionFromRelProvider';
47
- import GnssWifiProvider from './providers/position/absolute/GnssWifiProvider';
48
- import IpProvider from './providers/position/absolute/IpProvider';
49
- import AbsolutePositionProvider from './providers/position/absolute/AbsolutePositionProvider';
46
+ import AbsolutePositionFromRelProvider from './providers/position/absolute/AbsolutePositionFromRelProvider.js';
47
+ import GnssWifiProvider from './providers/position/absolute/GnssWifiProvider.js';
48
+ import IpProvider from './providers/position/absolute/IpProvider.js';
49
+ import AbsolutePositionProvider from './providers/position/absolute/AbsolutePositionProvider.js';
50
50
  const AbsolutePositionFromRel = AbsolutePositionFromRelProvider.instance;
51
51
  const GnssWifi = GnssWifiProvider.instance;
52
52
  const Ip = IpProvider.instance;
53
53
  const AbsolutePosition = AbsolutePositionProvider.instance;
54
54
 
55
- import BarcodeProvider from './providers/others/BarcodeProvider';
56
- import CameraNativeProvider from './providers/others/CameraNativeProvider';
57
- import CameraProjectionMatrixProvider from './providers/others/CameraProjectionMatrixProvider';
55
+ import BarcodeProvider from './providers/others/BarcodeProvider.js';
56
+ import CameraNativeProvider from './providers/others/CameraNativeProvider.js';
57
+ import CameraProjectionMatrixProvider from './providers/others/CameraProjectionMatrixProvider.js';
58
58
  const Barcode = BarcodeProvider.instance;
59
59
  const CameraNative = CameraNativeProvider.instance;
60
60
  const CameraProjectionMatrix = CameraProjectionMatrixProvider.instance;
@@ -4,12 +4,13 @@ import {
4
4
  } from '@wemap/geo';
5
5
  import { Network } from '@wemap/graph';
6
6
 
7
- import EventType from './events/EventType';
8
- import MetaProvider from './providers/MetaProvider';
7
+ import EventType from './events/EventType.js';
8
+ import MetaProvider from './providers/MetaProvider.js';
9
9
  import {
10
10
  AbsoluteAttitude, AbsolutePosition, Barcode, CameraNative, CameraProjectionMatrix, Inclination
11
- } from './Providers';
12
- import ProvidersLogger from './events/ProvidersLogger';
11
+ } from './Providers.js';
12
+ import NavigationLogger from './logger/NavigationLogger.js';
13
+ import ProvidersLoggerOld from './events/ProvidersLoggerOld.js';
13
14
 
14
15
  class ProvidersInterface {
15
16
 
@@ -47,6 +48,7 @@ class ProvidersInterface {
47
48
  * @param {Object} data
48
49
  */
49
50
  static feed(eventType, data) {
51
+ NavigationLogger.feedExternalData(eventType, data, true);
50
52
  this._checkEventTypeDataConsistency(eventType, data);
51
53
  this._getMetaProviderFromEventType(eventType).feed(data, eventType);
52
54
  }
@@ -125,7 +127,7 @@ class ProvidersInterface {
125
127
  * @param {Boolean} enabled
126
128
  */
127
129
  static set logger(enabled) {
128
- ProvidersLogger.enabled = enabled;
130
+ ProvidersLoggerOld.enabled = enabled;
129
131
  }
130
132
 
131
133
  static get mapMatchingMaxDistance() {
@@ -1,6 +1,6 @@
1
- const DEFAULT_MESSAGE = 'Impossible to retrieve Acceleration data';
1
+ import MissingSensorError from './MissingSensorError.js';
2
2
 
3
- import MissingSensorError from './MissingSensorError';
3
+ const DEFAULT_MESSAGE = 'Impossible to retrieve Acceleration data';
4
4
 
5
5
  class MissingAccelerometerError extends MissingSensorError {
6
6
  constructor(message) {
@@ -1,6 +1,6 @@
1
- const DEFAULT_MESSAGE = 'Impossible to retrieve Angular Rate data';
1
+ import MissingSensorError from './MissingSensorError.js';
2
2
 
3
- import MissingSensorError from './MissingSensorError';
3
+ const DEFAULT_MESSAGE = 'Impossible to retrieve Angular Rate data';
4
4
 
5
5
  class MissingGyroscopeError extends MissingSensorError {
6
6
  constructor(message) {
@@ -1,4 +1,4 @@
1
- import MissingSensorError from './MissingSensorError';
1
+ import MissingSensorError from './MissingSensorError.js';
2
2
 
3
3
  class MissingMagnetometerError extends MissingSensorError {
4
4
  constructor(message) {
@@ -1,4 +1,4 @@
1
- import EventType from './EventType';
1
+ import EventType from './EventType.js';
2
2
 
3
3
  /**
4
4
  * A provider event is an event which can be triggered by device sensors
@@ -9,7 +9,7 @@ let pushEventsRef = {};
9
9
  let interval;
10
10
  let initDate;
11
11
 
12
- class ProvidersLogger {
12
+ class ProvidersLoggerOld {
13
13
 
14
14
  static _enabled = false;
15
15
 
@@ -47,7 +47,7 @@ class ProvidersLogger {
47
47
 
48
48
  static addEvent(object, method) {
49
49
 
50
- if (!ProvidersLogger.enabled) {
50
+ if (!ProvidersLoggerOld.enabled) {
51
51
  return;
52
52
  }
53
53
 
@@ -55,9 +55,9 @@ class ProvidersLogger {
55
55
  initDate = Date.now();
56
56
  }
57
57
 
58
- ProvidersLogger.initializeInterval();
58
+ ProvidersLoggerOld.initializeInterval();
59
59
 
60
- const objectId = ProvidersLogger.getObjectId(object);
60
+ const objectId = ProvidersLoggerOld.getObjectId(object);
61
61
  const objectClassName = object.pname;
62
62
 
63
63
  Logger.debug(objectClassName + '[' + objectId + '].' + method);
@@ -65,11 +65,11 @@ class ProvidersLogger {
65
65
 
66
66
  static incrementNotifications(object) {
67
67
 
68
- if (!ProvidersLogger.enabled) {
68
+ if (!ProvidersLoggerOld.enabled) {
69
69
  return;
70
70
  }
71
71
 
72
- const objectId = ProvidersLogger.getObjectId(object);
72
+ const objectId = ProvidersLoggerOld.getObjectId(object);
73
73
 
74
74
  let counter = pushEvents[objectId];
75
75
  if (!counter) {
@@ -80,4 +80,4 @@ class ProvidersLogger {
80
80
  }
81
81
 
82
82
  }
83
- export default ProvidersLogger;
83
+ export default ProvidersLoggerOld;
@@ -0,0 +1,138 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import cookies from 'browser-cookies';
3
+
4
+ import { TimeUtils } from '@wemap/utils';
5
+
6
+ import ProvidersOptions from '../ProvidersOptions.js';
7
+ import NavigationLoggerConverter from './NavigationLoggerConverter.js';
8
+
9
+
10
+ class NavigationLogger {
11
+
12
+ static serverUrl;
13
+ static logsSize;
14
+
15
+ static logs;
16
+ static sessionsId;
17
+
18
+ static isRecording = false;
19
+
20
+ static start(serverUrl, logsSize = 200) {
21
+ if (this.isRecording) {
22
+ return;
23
+ }
24
+ this.isRecording = true;
25
+
26
+ this.serverUrl = serverUrl;
27
+ this.logsSize = logsSize;
28
+
29
+ // Initialize
30
+ this.logs = new Array(this.logsSize);
31
+ this.currentLogIndex = 0;
32
+
33
+ // Fill and send the config object
34
+ const config = {};
35
+ config.startTime = TimeUtils.preciseTime;
36
+ config.options = ProvidersOptions;
37
+ config.sessionId = this.sessionId = uuidv4();
38
+ config.userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
39
+ if (typeof document !== 'undefined') {
40
+ config.cookieId = cookies.get('providers.logger.uuid');
41
+ if (!config.cookieId) {
42
+ config.cookieId = uuidv4();
43
+ cookies.set('providers.logger.uuid', config.cookieId);
44
+ }
45
+ }
46
+ this._sendConfig(config);
47
+ this._feed(NavigationLoggerConverter.configToLog(config));
48
+
49
+ // Dispatch started event
50
+ if (typeof document !== 'undefined') {
51
+ document.dispatchEvent(new CustomEvent('providers.logger.started', { detail: { config: this.config } }));
52
+ }
53
+ }
54
+
55
+ static stop() {
56
+ if (!this.isRecording) {
57
+ return;
58
+ }
59
+
60
+ this._sendLogs(this.logs.filter(el => el !== null));
61
+ // this.config.endTime = TimeUtils.preciseTime;
62
+
63
+ if (typeof document !== 'undefined') {
64
+ document.dispatchEvent(new CustomEvent('providers.logger.stopped', { detail: { logs: this.logs } }));
65
+ }
66
+
67
+ this.isRecording = false;
68
+ }
69
+
70
+ static feedImuData(event) {
71
+ if (!this.isRecording) {
72
+ return;
73
+ }
74
+ this._feed(NavigationLoggerConverter.imuDataToLog(TimeUtils.preciseTime, event));
75
+ }
76
+
77
+ static feedGeolocation(geolocationEvent) {
78
+ if (!this.isRecording) {
79
+ return;
80
+ }
81
+ this._feed(NavigationLoggerConverter.geolocationToLog(TimeUtils.preciseTime, geolocationEvent));
82
+ }
83
+
84
+ static feedExternalData(eventType, data) {
85
+ if (!this.isRecording) {
86
+ return;
87
+ }
88
+ this._feed(NavigationLoggerConverter.externalDataToLog(TimeUtils.preciseTime, eventType, data));
89
+ }
90
+
91
+
92
+ static _feed(line) {
93
+ this.logs[this.currentLogIndex++] = line;
94
+ if (this.logsSize && this.logs[this.logsSize - 1]) {
95
+ this._flush();
96
+ }
97
+ }
98
+
99
+ static _flush() {
100
+ this._sendLogs(this.logs);
101
+ if (typeof document !== 'undefined') {
102
+ document.dispatchEvent(new CustomEvent('providers.logger.flush', { detail: { logs: this.logs } }));
103
+ }
104
+ this.currentLogIndex = 0;
105
+ this.logs = new Array(this.logsSize);
106
+ }
107
+
108
+
109
+ static _sendConfig(config) {
110
+ const xmlhttp = new XMLHttpRequest();
111
+ xmlhttp.open('POST', this.serverUrl + '/config');
112
+ xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
113
+ xmlhttp.send(JSON.stringify(config));
114
+ }
115
+
116
+ static _sendLogs(logs) {
117
+ const xmlhttp = new XMLHttpRequest();
118
+ xmlhttp.open('POST', this.serverUrl + '/logs/' + this.sessionId, true);
119
+ xmlhttp.setRequestHeader('Content-Type', 'text/plain');
120
+ xmlhttp.send(logs.join('\n'));
121
+ }
122
+ }
123
+
124
+ if (typeof document !== 'undefined') {
125
+ document.addEventListener('providers.logger.start', event => {
126
+ if (!('detail' in event)) {
127
+ throw new Error('[providers.logger.start] did not find event detail');
128
+ }
129
+ if (!('serverUrl' in event.detail)) {
130
+ throw new Error('[providers.logger.start] did not find serverUrl');
131
+ }
132
+ NavigationLogger.start(event.detail.serverUrl, event.detail.logsSize);
133
+ });
134
+ document.addEventListener('providers.logger.stop', () => NavigationLogger.stop());
135
+ }
136
+
137
+
138
+ export default NavigationLogger;