@cloudcare/browser-core 1.2.6 → 1.2.8

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.
package/cjs/dataMap.js CHANGED
@@ -143,10 +143,10 @@ var dataMap = {
143
143
  action: {
144
144
  type: _enums.RumEventType.ACTION,
145
145
  tags: {
146
- action_name: 'action.target.name',
147
146
  action_type: 'action.type'
148
147
  },
149
148
  fields: {
149
+ action_name: 'action.target.name',
150
150
  duration: 'action.loading_time',
151
151
  action_error_count: 'action.error.count',
152
152
  action_resource_count: 'action.resource.count',
@@ -8,12 +8,6 @@ exports.ContextHistory = ContextHistory;
8
8
 
9
9
  var _tools = require("./tools");
10
10
 
11
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
12
-
13
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
-
15
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
-
17
11
  var END_OF_TIMES = Infinity;
18
12
  var CLEAR_OLD_CONTEXTS_INTERVAL = _tools.ONE_MINUTE;
19
13
  exports.CLEAR_OLD_CONTEXTS_INTERVAL = CLEAR_OLD_CONTEXTS_INTERVAL;
@@ -56,25 +50,16 @@ ContextHistory.prototype.find = function (startTime) {
56
50
  startTime = END_OF_TIMES;
57
51
  }
58
52
 
59
- var _iterator = _createForOfIteratorHelper(this.entries),
60
- _step;
53
+ for (var i = 0; i < this.entries.length; i++) {
54
+ var entry = this.entries[i];
61
55
 
62
- try {
63
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
64
- var entry = _step.value;
65
-
66
- if (entry.startTime <= startTime) {
67
- if (startTime <= entry.endTime) {
68
- return entry.context;
69
- }
70
-
71
- break;
56
+ if (entry.startTime <= startTime) {
57
+ if (startTime <= entry.endTime) {
58
+ return entry.context;
72
59
  }
60
+
61
+ break;
73
62
  }
74
- } catch (err) {
75
- _iterator.e(err);
76
- } finally {
77
- _iterator.f();
78
63
  }
79
64
  };
80
65
  /**
@@ -9,12 +9,6 @@ var _tools = require("./tools");
9
9
 
10
10
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11
11
 
12
- function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
13
-
14
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
-
16
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
-
18
12
  /**
19
13
  * Current limitations:
20
14
  * - field path do not support array, 'a.b.c' only
@@ -36,24 +30,16 @@ function limitModification(object, modifiableFieldPaths, modifier) {
36
30
 
37
31
  function get(object, path) {
38
32
  var current = object;
33
+ var fields = path.split('.');
39
34
 
40
- var _iterator = _createForOfIteratorHelper(path.split('.')),
41
- _step;
42
-
43
- try {
44
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
45
- var field = _step.value;
46
-
47
- if (!isValidObjectContaining(current, field)) {
48
- return;
49
- }
35
+ for (var i = 0; i < fields.length; i++) {
36
+ var field = fields[i];
50
37
 
51
- current = current[field];
38
+ if (!isValidObjectContaining(current, field)) {
39
+ return;
52
40
  }
53
- } catch (err) {
54
- _iterator.e(err);
55
- } finally {
56
- _iterator.f();
41
+
42
+ current = current[field];
57
43
  }
58
44
 
59
45
  return current;
package/esm/dataMap.js CHANGED
@@ -134,10 +134,10 @@ export var dataMap = {
134
134
  action: {
135
135
  type: RumEventType.ACTION,
136
136
  tags: {
137
- action_name: 'action.target.name',
138
137
  action_type: 'action.type'
139
138
  },
140
139
  fields: {
140
+ action_name: 'action.target.name',
141
141
  duration: 'action.loading_time',
142
142
  action_error_count: 'action.error.count',
143
143
  action_resource_count: 'action.resource.count',
@@ -1,4 +1,4 @@
1
- import { relativeNow, ONE_MINUTE, filter, map } from './tools';
1
+ import { relativeNow, ONE_MINUTE, filter, map, each } from './tools';
2
2
  var END_OF_TIMES = Infinity;
3
3
  export var CLEAR_OLD_CONTEXTS_INTERVAL = ONE_MINUTE;
4
4
  export function ContextHistory(expireDelay) {
@@ -39,7 +39,9 @@ ContextHistory.prototype.find = function (startTime) {
39
39
  startTime = END_OF_TIMES;
40
40
  }
41
41
 
42
- for (var entry of this.entries) {
42
+ for (var i = 0; i < this.entries.length; i++) {
43
+ var entry = this.entries[i];
44
+
43
45
  if (entry.startTime <= startTime) {
44
46
  if (startTime <= entry.endTime) {
45
47
  return entry.context;
@@ -21,8 +21,11 @@ export function limitModification(object, modifiableFieldPaths, modifier) {
21
21
 
22
22
  function get(object, path) {
23
23
  var current = object;
24
+ var fields = path.split('.');
25
+
26
+ for (var i = 0; i < fields.length; i++) {
27
+ var field = fields[i];
24
28
 
25
- for (var field of path.split('.')) {
26
29
  if (!isValidObjectContaining(current, field)) {
27
30
  return;
28
31
  }
@@ -120,12 +120,10 @@ function newPayloadQueue() {
120
120
  queue.push(payload);
121
121
  this.bytesCount += payload.bytesCount;
122
122
  },
123
-
124
- first() {
123
+ first: function first() {
125
124
  return queue[0];
126
125
  },
127
-
128
- dequeue() {
126
+ dequeue: function dequeue() {
129
127
  var payload = queue.shift();
130
128
 
131
129
  if (payload) {
@@ -134,15 +132,12 @@ function newPayloadQueue() {
134
132
 
135
133
  return payload;
136
134
  },
137
-
138
- size() {
135
+ size: function size() {
139
136
  return queue.length;
140
137
  },
141
-
142
- isFull() {
138
+ isFull: function isFull() {
143
139
  return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;
144
140
  }
145
-
146
141
  };
147
142
  }
148
143
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "scripts": {
@@ -20,5 +20,5 @@
20
20
  "author": "dataflux",
21
21
  "license": "MIT",
22
22
  "description": "DataFlux RUM Web 端数据指标监控",
23
- "gitHead": "b386724801c6dd65cd462a65b1dcbf89676ae9a4"
23
+ "gitHead": "7a00f6c0d6380acd59c36f5f0e0b0d46f0d0630a"
24
24
  }
package/src/dataMap.js CHANGED
@@ -133,10 +133,10 @@ export var dataMap = {
133
133
  action: {
134
134
  type: RumEventType.ACTION,
135
135
  tags: {
136
- action_name: 'action.target.name',
137
136
  action_type: 'action.type'
138
137
  },
139
138
  fields: {
139
+ action_name: 'action.target.name',
140
140
  duration: 'action.loading_time',
141
141
  action_error_count: 'action.error.count',
142
142
  action_resource_count: 'action.resource.count',
@@ -1,40 +1,41 @@
1
- import { relativeNow, ONE_MINUTE, filter, map} from './tools'
1
+ import { relativeNow, ONE_MINUTE, filter, map, each } from './tools'
2
2
 
3
3
  var END_OF_TIMES = Infinity
4
4
 
5
5
  export var CLEAR_OLD_CONTEXTS_INTERVAL = ONE_MINUTE
6
6
  export function ContextHistory(expireDelay) {
7
- this.expireDelay = expireDelay
7
+ this.expireDelay = expireDelay
8
8
  this.entries = []
9
9
  var _this = this
10
- this.clearOldContextsInterval = setInterval(function(){
10
+ this.clearOldContextsInterval = setInterval(function () {
11
11
  _this.clearOldContexts()
12
- }, CLEAR_OLD_CONTEXTS_INTERVAL);
12
+ }, CLEAR_OLD_CONTEXTS_INTERVAL)
13
13
  }
14
- ContextHistory.prototype.add = function(context, startTime) {
14
+ ContextHistory.prototype.add = function (context, startTime) {
15
15
  var _this = this
16
16
  var entry = {
17
17
  context: context,
18
18
  startTime: startTime,
19
19
  endTime: END_OF_TIMES,
20
- remove: function() {
20
+ remove: function () {
21
21
  var index = _this.entries.indexOf(entry)
22
22
  if (index >= 0) {
23
23
  _this.entries.splice(index, 1)
24
24
  }
25
25
  },
26
- close: function(endTime){
26
+ close: function (endTime) {
27
27
  entry.endTime = endTime
28
- },
28
+ }
29
29
  }
30
30
  this.entries.unshift(entry)
31
31
  return entry
32
32
  }
33
- ContextHistory.prototype.find = function(startTime) {
33
+ ContextHistory.prototype.find = function (startTime) {
34
34
  if (typeof startTime === 'undefined') {
35
35
  startTime = END_OF_TIMES
36
36
  }
37
- for (var entry of this.entries) {
37
+ for (var i = 0; i < this.entries.length; i++) {
38
+ var entry = this.entries[i]
38
39
  if (entry.startTime <= startTime) {
39
40
  if (startTime <= entry.endTime) {
40
41
  return entry.context
@@ -47,7 +48,7 @@ ContextHistory.prototype.find = function(startTime) {
47
48
  * Helper function to close the currently active context, if any. This method assumes that entries
48
49
  * are not overlapping.
49
50
  */
50
- ContextHistory.prototype.closeActive = function(endTime) {
51
+ ContextHistory.prototype.closeActive = function (endTime) {
51
52
  var latestEntry = this.entries[0]
52
53
  if (latestEntry && latestEntry.endTime === END_OF_TIMES) {
53
54
  latestEntry.close(endTime)
@@ -57,29 +58,35 @@ ContextHistory.prototype.closeActive = function(endTime) {
57
58
  * Return all contexts that were active during `startTime`, or all currently active contexts if no
58
59
  * `startTime` is provided.
59
60
  */
60
- ContextHistory.prototype.findAll = function(startTime){
61
+ ContextHistory.prototype.findAll = function (startTime) {
61
62
  if (typeof startTime === 'undefined') {
62
63
  startTime = END_OF_TIMES
63
64
  }
64
- var result = filter(this.entries, function(entry) { return entry.startTime <= startTime && startTime <= entry.endTime })
65
- return map(result, function(entry) { return entry.context })
65
+ var result = filter(this.entries, function (entry) {
66
+ return entry.startTime <= startTime && startTime <= entry.endTime
67
+ })
68
+ return map(result, function (entry) {
69
+ return entry.context
70
+ })
66
71
  }
67
72
  /**
68
73
  * Remove all entries from this collection.
69
74
  */
70
- ContextHistory.prototype.reset = function () {
75
+ ContextHistory.prototype.reset = function () {
71
76
  this.entries = []
72
77
  }
73
78
  /**
74
79
  * Stop internal garbage collection of past entries.
75
80
  */
76
- ContextHistory.prototype.stop = function() {
81
+ ContextHistory.prototype.stop = function () {
77
82
  clearInterval(this.clearOldContextsInterval)
78
83
  }
79
- ContextHistory.prototype.clearOldContexts = function() {
84
+ ContextHistory.prototype.clearOldContexts = function () {
80
85
  var oldTimeThreshold = relativeNow() - this.expireDelay
81
- while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {
86
+ while (
87
+ this.entries.length > 0 &&
88
+ this.entries[this.entries.length - 1].endTime < oldTimeThreshold
89
+ ) {
82
90
  this.entries.pop()
83
91
  }
84
92
  }
85
-
@@ -21,12 +21,15 @@ export function limitModification(object, modifiableFieldPaths, modifier) {
21
21
 
22
22
  function get(object, path) {
23
23
  var current = object
24
- for (var field of path.split('.')) {
24
+ var fields = path.split('.')
25
+ for (var i = 0; i < fields.length; i++) {
26
+ var field = fields[i]
25
27
  if (!isValidObjectContaining(current, field)) {
26
28
  return
27
29
  }
28
30
  current = current[field]
29
31
  }
32
+
30
33
  return current
31
34
  }
32
35
 
@@ -1,4 +1,9 @@
1
- import { clocksNow, ONE_KIBI_BYTE, ONE_MEBI_BYTE, ONE_SECOND } from '../helper/tools'
1
+ import {
2
+ clocksNow,
3
+ ONE_KIBI_BYTE,
4
+ ONE_MEBI_BYTE,
5
+ ONE_SECOND
6
+ } from '../helper/tools'
2
7
  import { ErrorSource } from '../helper/errorTools'
3
8
 
4
9
  export var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE
@@ -10,12 +15,12 @@ export var INITIAL_BACKOFF_TIME = ONE_SECOND
10
15
  var TransportStatus = {
11
16
  UP: 'UP',
12
17
  FAILURE_DETECTED: 'FAILURE_DETECTED',
13
- DOWN: 'DOWN',
18
+ DOWN: 'DOWN'
14
19
  }
15
20
 
16
21
  var RetryReason = {
17
22
  AFTER_SUCCESS: 'AFTER_SUCCESS',
18
- AFTER_RESUME: 'AFTER_RESUME',
23
+ AFTER_RESUME: 'AFTER_RESUME'
19
24
  }
20
25
 
21
26
  export function sendWithRetryStrategy(
@@ -30,59 +35,62 @@ export function sendWithRetryStrategy(
30
35
  state.bandwidthMonitor.canHandle(payload)
31
36
  ) {
32
37
  send(payload, state, sendStrategy, {
33
- onSuccess: function() { return retryQueuedPayloads(RetryReason.AFTER_SUCCESS, state, sendStrategy, reportError) },
34
- onFailure: function() {
38
+ onSuccess: function () {
39
+ return retryQueuedPayloads(
40
+ RetryReason.AFTER_SUCCESS,
41
+ state,
42
+ sendStrategy,
43
+ reportError
44
+ )
45
+ },
46
+ onFailure: function () {
35
47
  state.queuedPayloads.enqueue(payload)
36
48
  scheduleRetry(state, sendStrategy, reportError)
37
- },
49
+ }
38
50
  })
39
51
  } else {
40
52
  state.queuedPayloads.enqueue(payload)
41
53
  }
42
54
  }
43
55
 
44
- function scheduleRetry(
45
- state,
46
- sendStrategy,
47
- reportError
48
- ) {
56
+ function scheduleRetry(state, sendStrategy, reportError) {
49
57
  if (state.transportStatus !== TransportStatus.DOWN) {
50
58
  return
51
59
  }
52
- setTimeout(
53
- function(){
54
- var payload = state.queuedPayloads.first()
55
- send(payload, state, sendStrategy, {
56
- onSuccess: function() {
57
- state.queuedPayloads.dequeue()
58
- // if (state.lastFailureStatus !== 0) {
59
- // addTelemetryDebug('resuming after transport down', {
60
- // failureStatus: state.lastFailureStatus,
61
- // })
62
- // }
63
- state.currentBackoffTime = INITIAL_BACKOFF_TIME
64
- retryQueuedPayloads(RetryReason.AFTER_RESUME, state, sendStrategy, reportError)
65
- },
66
- onFailure: function() {
67
- state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2)
68
- scheduleRetry(state, sendStrategy, reportError)
69
- },
70
- })
71
- },
72
- state.currentBackoffTime
73
- )
60
+ setTimeout(function () {
61
+ var payload = state.queuedPayloads.first()
62
+ send(payload, state, sendStrategy, {
63
+ onSuccess: function () {
64
+ state.queuedPayloads.dequeue()
65
+ // if (state.lastFailureStatus !== 0) {
66
+ // addTelemetryDebug('resuming after transport down', {
67
+ // failureStatus: state.lastFailureStatus,
68
+ // })
69
+ // }
70
+ state.currentBackoffTime = INITIAL_BACKOFF_TIME
71
+ retryQueuedPayloads(
72
+ RetryReason.AFTER_RESUME,
73
+ state,
74
+ sendStrategy,
75
+ reportError
76
+ )
77
+ },
78
+ onFailure: function () {
79
+ state.currentBackoffTime = Math.min(
80
+ MAX_BACKOFF_TIME,
81
+ state.currentBackoffTime * 2
82
+ )
83
+ scheduleRetry(state, sendStrategy, reportError)
84
+ }
85
+ })
86
+ }, state.currentBackoffTime)
74
87
  }
75
88
 
76
- function send(
77
- payload,
78
- state,
79
- sendStrategy,
80
- responseData
81
- ) {
89
+ function send(payload, state, sendStrategy, responseData) {
82
90
  var onSuccess = responseData.onSuccess
83
91
  var onFailure = responseData.onFailure
84
92
  state.bandwidthMonitor.add(payload)
85
- sendStrategy(payload, function(response) {
93
+ sendStrategy(payload, function (response) {
86
94
  state.bandwidthMonitor.remove(payload)
87
95
  if (wasRequestSuccessful(response)) {
88
96
  state.transportStatus = TransportStatus.UP
@@ -90,31 +98,40 @@ function send(
90
98
  } else {
91
99
  // do not consider transport down if another ongoing request could succeed
92
100
  state.transportStatus =
93
- state.bandwidthMonitor.ongoingRequestCount > 0 ? TransportStatus.FAILURE_DETECTED : TransportStatus.DOWN
101
+ state.bandwidthMonitor.ongoingRequestCount > 0
102
+ ? TransportStatus.FAILURE_DETECTED
103
+ : TransportStatus.DOWN
94
104
  state.lastFailureStatus = response.status
95
105
  onFailure()
96
106
  }
97
107
  })
98
108
  }
99
109
 
100
- function retryQueuedPayloads(
101
- reason,
102
- state,
103
- sendStrategy,
104
- reportError
105
- ) {
106
- if (reason === RetryReason.AFTER_SUCCESS && state.queuedPayloads.isFull() && !state.queueFullReported) {
110
+ function retryQueuedPayloads(reason, state, sendStrategy, reportError) {
111
+ if (
112
+ reason === RetryReason.AFTER_SUCCESS &&
113
+ state.queuedPayloads.isFull() &&
114
+ !state.queueFullReported
115
+ ) {
107
116
  reportError({
108
- message: 'Reached max events size queued for upload: '+ MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE + 'MiB',
117
+ message:
118
+ 'Reached max events size queued for upload: ' +
119
+ MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE +
120
+ 'MiB',
109
121
  source: ErrorSource.AGENT,
110
- startClocks: clocksNow(),
122
+ startClocks: clocksNow()
111
123
  })
112
124
  state.queueFullReported = true
113
125
  }
114
126
  var previousQueue = state.queuedPayloads
115
127
  state.queuedPayloads = newPayloadQueue()
116
128
  while (previousQueue.size() > 0) {
117
- sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, reportError)
129
+ sendWithRetryStrategy(
130
+ previousQueue.dequeue(),
131
+ state,
132
+ sendStrategy,
133
+ reportError
134
+ )
118
135
  }
119
136
  }
120
137
 
@@ -129,7 +146,7 @@ export function newRetryState() {
129
146
  currentBackoffTime: INITIAL_BACKOFF_TIME,
130
147
  bandwidthMonitor: newBandwidthMonitor(),
131
148
  queuedPayloads: newPayloadQueue(),
132
- queueFullReported: false,
149
+ queueFullReported: false
133
150
  }
134
151
  }
135
152
 
@@ -137,29 +154,29 @@ function newPayloadQueue() {
137
154
  var queue = []
138
155
  return {
139
156
  bytesCount: 0,
140
- enqueue: function(payload) {
157
+ enqueue: function (payload) {
141
158
  if (this.isFull()) {
142
159
  return
143
160
  }
144
161
  queue.push(payload)
145
162
  this.bytesCount += payload.bytesCount
146
163
  },
147
- first() {
164
+ first: function () {
148
165
  return queue[0]
149
166
  },
150
- dequeue() {
167
+ dequeue: function () {
151
168
  var payload = queue.shift()
152
169
  if (payload) {
153
170
  this.bytesCount -= payload.bytesCount
154
171
  }
155
172
  return payload
156
173
  },
157
- size() {
174
+ size: function () {
158
175
  return queue.length
159
176
  },
160
- isFull() {
177
+ isFull: function () {
161
178
  return this.bytesCount >= MAX_QUEUE_BYTES_COUNT
162
- },
179
+ }
163
180
  }
164
181
  }
165
182
 
@@ -167,20 +184,21 @@ function newBandwidthMonitor() {
167
184
  return {
168
185
  ongoingRequestCount: 0,
169
186
  ongoingByteCount: 0,
170
- canHandle: function(payload) {
187
+ canHandle: function (payload) {
171
188
  return (
172
189
  this.ongoingRequestCount === 0 ||
173
- (this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT &&
190
+ (this.ongoingByteCount + payload.bytesCount <=
191
+ MAX_ONGOING_BYTES_COUNT &&
174
192
  this.ongoingRequestCount < MAX_ONGOING_REQUESTS)
175
193
  )
176
194
  },
177
- add: function(payload) {
195
+ add: function (payload) {
178
196
  this.ongoingRequestCount += 1
179
197
  this.ongoingByteCount += payload.bytesCount
180
198
  },
181
- remove:function(payload) {
199
+ remove: function (payload) {
182
200
  this.ongoingRequestCount -= 1
183
201
  this.ongoingByteCount -= payload.bytesCount
184
- },
202
+ }
185
203
  }
186
204
  }