@cloudcare/browser-core 1.2.5 → 1.2.7

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
@@ -36,6 +36,8 @@ var commonTags = {
36
36
  view_url: 'view.url',
37
37
  view_host: 'view.host',
38
38
  view_path: 'view.path',
39
+ view_name: 'view.path',
40
+ // 冗余一个字段
39
41
  view_path_group: 'view.path_group',
40
42
  view_url_query: 'view.url_query'
41
43
  }; // 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]
@@ -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
@@ -28,6 +28,8 @@ export var commonTags = {
28
28
  view_url: 'view.url',
29
29
  view_host: 'view.host',
30
30
  view_path: 'view.path',
31
+ view_name: 'view.path',
32
+ // 冗余一个字段
31
33
  view_path_group: 'view.path_group',
32
34
  view_url_query: 'view.url_query'
33
35
  }; // 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]
@@ -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
  }
@@ -1201,7 +1201,7 @@ function createCircularReferenceChecker() {
1201
1201
  if (typeof WeakSet !== 'undefined') {
1202
1202
  var set = new WeakSet();
1203
1203
  return {
1204
- hasAlreadyBeenSeen(value) {
1204
+ hasAlreadyBeenSeen: function hasAlreadyBeenSeen(value) {
1205
1205
  var has = set.has(value);
1206
1206
 
1207
1207
  if (!has) {
@@ -1210,13 +1210,12 @@ function createCircularReferenceChecker() {
1210
1210
 
1211
1211
  return has;
1212
1212
  }
1213
-
1214
1213
  };
1215
1214
  }
1216
1215
 
1217
1216
  var array = [];
1218
1217
  return {
1219
- hasAlreadyBeenSeen(value) {
1218
+ hasAlreadyBeenSeen: function hasAlreadyBeenSeen(value) {
1220
1219
  var has = array.indexOf(value) >= 0;
1221
1220
 
1222
1221
  if (!has) {
@@ -1225,7 +1224,6 @@ function createCircularReferenceChecker() {
1225
1224
 
1226
1225
  return has;
1227
1226
  }
1228
-
1229
1227
  };
1230
1228
  }
1231
1229
  /**
@@ -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.5",
3
+ "version": "1.2.7",
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": "9d503cbc3c9bc58eade97e8491a1c8c9713b0dbb"
23
+ "gitHead": "c3f30b3b86c7e305e49c336bab286e37d6f9de10"
24
24
  }
package/src/.DS_Store CHANGED
Binary file
package/src/dataMap.js CHANGED
@@ -28,6 +28,7 @@ export var commonTags = {
28
28
  view_url: 'view.url',
29
29
  view_host: 'view.host',
30
30
  view_path: 'view.path',
31
+ view_name: 'view.path', // 冗余一个字段
31
32
  view_path_group: 'view.path_group',
32
33
  view_url_query: 'view.url_query'
33
34
  }
@@ -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
 
@@ -40,7 +40,7 @@ export function assign(target) {
40
40
  return target
41
41
  }
42
42
 
43
- export function shallowClone(object){
43
+ export function shallowClone(object) {
44
44
  return assign({}, object)
45
45
  }
46
46
  export var extend = function (obj) {
@@ -178,62 +178,72 @@ export var map = function (arr, fn, self) {
178
178
  }
179
179
  return ret
180
180
  }
181
- export var some = function(arr, fn, self) {
181
+ export var some = function (arr, fn, self) {
182
182
  if (arr.some) {
183
183
  return arr.some(fn)
184
184
  }
185
185
  var flag = false
186
- for(var i = 0; i < arr.length; i++) {
186
+ for (var i = 0; i < arr.length; i++) {
187
187
  if (!hasOwnProperty.call(arr, i)) {
188
188
  continue
189
189
  }
190
190
  var val = arr[i]
191
191
  if (fn.call(self, val, i, arr)) {
192
192
  flag = true
193
- break;
193
+ break
194
194
  }
195
195
  }
196
196
  return flag
197
197
  }
198
- export var every = function(arr, fn, self) {
198
+ export var every = function (arr, fn, self) {
199
199
  if (arr.every) {
200
200
  return arr.every(fn)
201
201
  }
202
202
  var flag = true
203
- for(var i = 0; i < arr.length; i++) {
203
+ for (var i = 0; i < arr.length; i++) {
204
204
  if (!hasOwnProperty.call(arr, i)) {
205
205
  continue
206
206
  }
207
207
  var val = arr[i]
208
208
  if (!fn.call(self, val, i, arr)) {
209
209
  flag = false
210
- break;
210
+ break
211
211
  }
212
212
  }
213
213
  return flag
214
214
  }
215
- export var matchList = function(list, value) {
216
- return some(list, function(item) {return item === value || (item instanceof RegExp && item.test(value))})
215
+ export var matchList = function (list, value) {
216
+ return some(list, function (item) {
217
+ return item === value || (item instanceof RegExp && item.test(value))
218
+ })
217
219
  }
218
220
  // https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js
219
- export var cssEscape = function(str) {
221
+ export var cssEscape = function (str) {
220
222
  if (window.CSS && window.CSS.escape) {
221
223
  return window.CSS.escape(str)
222
224
  }
223
225
 
224
226
  // eslint-disable-next-line no-control-regex
225
- return str.replace(/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, function (ch, asCodePoint) {
226
- if (asCodePoint) {
227
- // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
228
- if (ch === '\0') {
229
- return '\uFFFD'
227
+ return str.replace(
228
+ /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
229
+ function (ch, asCodePoint) {
230
+ if (asCodePoint) {
231
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
232
+ if (ch === '\0') {
233
+ return '\uFFFD'
234
+ }
235
+ // Control characters and (dependent upon position) numbers get escaped as code points
236
+ return (
237
+ ch.slice(0, -1) +
238
+ '\\' +
239
+ ch.charCodeAt(ch.length - 1).toString(16) +
240
+ ' '
241
+ )
230
242
  }
231
- // Control characters and (dependent upon position) numbers get escaped as code points
232
- return ch.slice(0, -1) + '\\' + ch.charCodeAt(ch.length - 1).toString(16) + ' '
243
+ // Other potentially-special ASCII characters get backslash-escaped
244
+ return '\\' + ch
233
245
  }
234
- // Other potentially-special ASCII characters get backslash-escaped
235
- return '\\' + ch
236
- })
246
+ )
237
247
  }
238
248
  export var inherit = function (subclass, superclass) {
239
249
  var F = function () {}
@@ -611,7 +621,6 @@ export function replaceNumberCharByPath(path) {
611
621
  pathGroup = path.replace(/\/([^\/]*)\d([^\/]*)/g, '/?').replace(/\/$/g, '')
612
622
  }
613
623
  return pathGroup || '/'
614
-
615
624
  }
616
625
  export var getQueryParam = function (url, param) {
617
626
  param = param.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]')
@@ -643,7 +652,8 @@ export var urlParse = function (para) {
643
652
  }
644
653
  this._values = {}
645
654
  this._regex = null
646
- this._regex = /^((\w+):\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/
655
+ this._regex =
656
+ /^((\w+):\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/
647
657
 
648
658
  if (typeof a != 'undefined') {
649
659
  this._parse(a)
@@ -702,9 +712,12 @@ export var urlParse = function (para) {
702
712
  }
703
713
  }
704
714
  this._values['Path'] = this._values['Path'] || '/'
705
- this._values['Hostname'] = this._values['Host'].replace(/:\d+$/, '')
706
- this._values['Origin'] =
707
- this._values['Protocol'] + '://' + this._values['Hostname'] + (this._values.Port ? ':' + this._values.Port : '')
715
+ this._values['Hostname'] = this._values['Host'].replace(/:\d+$/, '')
716
+ this._values['Origin'] =
717
+ this._values['Protocol'] +
718
+ '://' +
719
+ this._values['Hostname'] +
720
+ (this._values.Port ? ':' + this._values.Port : '')
708
721
  // this._values['Hostname'] = this._values['Host'].replace(/:\d+$/, '')
709
722
  // this._values['Origin'] =
710
723
  // this._values['Protocol'] + '://' + this._values['Hostname']
@@ -1150,30 +1163,30 @@ function createCircularReferenceChecker() {
1150
1163
  if (typeof WeakSet !== 'undefined') {
1151
1164
  var set = new WeakSet()
1152
1165
  return {
1153
- hasAlreadyBeenSeen(value) {
1166
+ hasAlreadyBeenSeen: function (value) {
1154
1167
  var has = set.has(value)
1155
1168
  if (!has) {
1156
1169
  set.add(value)
1157
1170
  }
1158
1171
  return has
1159
- },
1172
+ }
1160
1173
  }
1161
1174
  }
1162
1175
  var array = []
1163
1176
  return {
1164
- hasAlreadyBeenSeen(value) {
1177
+ hasAlreadyBeenSeen: function (value) {
1165
1178
  var has = array.indexOf(value) >= 0
1166
1179
  if (!has) {
1167
1180
  array.push(value)
1168
1181
  }
1169
1182
  return has
1170
- },
1183
+ }
1171
1184
  }
1172
1185
  }
1173
1186
  /**
1174
1187
  * Similar to `typeof`, but distinguish plain objects from `null` and arrays
1175
1188
  */
1176
- export function getType(value) {
1189
+ export function getType(value) {
1177
1190
  if (value === null) {
1178
1191
  return 'null'
1179
1192
  }
@@ -1186,11 +1199,7 @@ function createCircularReferenceChecker() {
1186
1199
  * Iterate over source and affect its sub values into destination, recursively.
1187
1200
  * If the source and destination can't be merged, return source.
1188
1201
  */
1189
- export function mergeInto(
1190
- destination,
1191
- source,
1192
- circularReferenceChecker
1193
- ) {
1202
+ export function mergeInto(destination, source, circularReferenceChecker) {
1194
1203
  // ignore the source if it is undefined
1195
1204
  if (typeof circularReferenceChecker === 'undefined') {
1196
1205
  circularReferenceChecker = createCircularReferenceChecker()
@@ -1213,7 +1222,7 @@ function createCircularReferenceChecker() {
1213
1222
  source.ignoreCase ? 'i' : '',
1214
1223
  source.multiline ? 'm' : '',
1215
1224
  source.sticky ? 'y' : '',
1216
- source.unicode ? 'u' : '',
1225
+ source.unicode ? 'u' : ''
1217
1226
  ].join('')
1218
1227
  return new RegExp(source.source, flags)
1219
1228
  }
@@ -1222,7 +1231,7 @@ function createCircularReferenceChecker() {
1222
1231
  // remove circular references
1223
1232
  return undefined
1224
1233
  } else if (Array.isArray(source)) {
1225
- var merged= Array.isArray(destination) ? destination : []
1234
+ var merged = Array.isArray(destination) ? destination : []
1226
1235
  for (var i = 0; i < source.length; ++i) {
1227
1236
  merged[i] = mergeInto(merged[i], source[i], circularReferenceChecker)
1228
1237
  }
@@ -1232,7 +1241,11 @@ function createCircularReferenceChecker() {
1232
1241
  var merged = getType(destination) === 'object' ? destination : {}
1233
1242
  for (var key in source) {
1234
1243
  if (Object.prototype.hasOwnProperty.call(source, key)) {
1235
- merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker)
1244
+ merged[key] = mergeInto(
1245
+ merged[key],
1246
+ source[key],
1247
+ circularReferenceChecker
1248
+ )
1236
1249
  }
1237
1250
  }
1238
1251
  return merged
@@ -1244,7 +1257,7 @@ function createCircularReferenceChecker() {
1244
1257
  * - It doesn't maintain prototype chains - don't use with instances of custom classes.
1245
1258
  * - It doesn't handle Map and Set
1246
1259
  */
1247
- export function deepClone(value){
1260
+ export function deepClone(value) {
1248
1261
  return mergeInto(undefined, value)
1249
1262
  }
1250
1263
  export var _URL = function (url) {
@@ -1740,23 +1753,23 @@ export function createContextManager() {
1740
1753
  console.error('content 需要传递对象类型数据')
1741
1754
  }
1742
1755
  },
1743
- getContext: function() {
1756
+ getContext: function () {
1744
1757
  return deepClone(context)
1745
1758
  },
1746
1759
 
1747
- setContext: function(newContext) {
1760
+ setContext: function (newContext) {
1748
1761
  context = deepClone(newContext)
1749
1762
  },
1750
1763
 
1751
- setContextProperty: function(key, property){
1764
+ setContextProperty: function (key, property) {
1752
1765
  context[key] = deepClone(property)
1753
1766
  },
1754
1767
 
1755
- removeContextProperty: function(key){
1768
+ removeContextProperty: function (key) {
1756
1769
  delete context[key]
1757
1770
  },
1758
1771
 
1759
- clearContext: function(){
1772
+ clearContext: function () {
1760
1773
  context = {}
1761
1774
  }
1762
1775
  }
@@ -1776,7 +1789,9 @@ export function arrayFrom(arrayLike) {
1776
1789
  }
1777
1790
  var array = []
1778
1791
  if (arrayLike instanceof Set) {
1779
- arrayLike.forEach(function(item) { array.push(item) })
1792
+ arrayLike.forEach(function (item) {
1793
+ array.push(item)
1794
+ })
1780
1795
  } else {
1781
1796
  for (var i = 0; i < arrayLike.length; i++) {
1782
1797
  array.push(arrayLike[i])
@@ -1784,10 +1799,7 @@ export function arrayFrom(arrayLike) {
1784
1799
  }
1785
1800
  return array
1786
1801
  }
1787
- export function findLast(
1788
- array,
1789
- predicate
1790
- ) {
1802
+ export function findLast(array, predicate) {
1791
1803
  for (var i = array.length - 1; i >= 0; i -= 1) {
1792
1804
  var item = array[i]
1793
1805
  if (predicate(item, i, array)) {
@@ -1854,10 +1866,10 @@ export function toSnakeCase(word) {
1854
1866
 
1855
1867
  export function escapeRowData(str) {
1856
1868
  if (typeof str === 'object' && str) {
1857
- str = jsonStringify(str)
1869
+ str = jsonStringify(str)
1858
1870
  } else if (!isString(str)) {
1859
1871
  return str
1860
- }
1872
+ }
1861
1873
  var reg = /[\s=,"]/g
1862
1874
  return String(str).replace(reg, function (word) {
1863
1875
  return '\\' + word
@@ -1872,9 +1884,7 @@ export function escapeJsonValue(value) {
1872
1884
  }
1873
1885
  }
1874
1886
  export function escapeFieldValueStr(str) {
1875
- return '"' +
1876
- str.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') +
1877
- '"'
1887
+ return '"' + str.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"'
1878
1888
  }
1879
1889
  export function escapeRowField(value) {
1880
1890
  if (typeof value === 'object' && value) {
@@ -1885,10 +1895,10 @@ export function escapeRowField(value) {
1885
1895
  return value
1886
1896
  }
1887
1897
  }
1888
- export function isNullUndefinedDefaultValue(data,defaultValue) {
1898
+ export function isNullUndefinedDefaultValue(data, defaultValue) {
1889
1899
  if (data !== null && data !== void 0) {
1890
1900
  return data
1891
1901
  } else {
1892
1902
  return defaultValue
1893
1903
  }
1894
- }
1904
+ }
@@ -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
  }