@cloudcare/rum-uniapp 1.0.3 → 2.0.1

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 (43) hide show
  1. package/cjs/boot/buildEnv.js +1 -1
  2. package/cjs/boot/rum.entry.js +56 -1
  3. package/cjs/boot/rum.js +2 -2
  4. package/cjs/core/boundedBuffer.js +28 -0
  5. package/cjs/core/configuration.js +22 -1
  6. package/cjs/core/dataMap.js +5 -1
  7. package/cjs/core/transport.js +123 -69
  8. package/cjs/core/xhrProxy.js +3 -2
  9. package/cjs/helper/enums.js +11 -2
  10. package/cjs/helper/utils.js +163 -6
  11. package/cjs/rumEventsCollection/assembly.js +19 -2
  12. package/cjs/rumEventsCollection/page/index.js +1 -11
  13. package/cjs/rumEventsCollection/requestCollection.js +9 -2
  14. package/cjs/rumEventsCollection/resource/resourceCollection.js +20 -1
  15. package/cjs/rumEventsCollection/tracing/ddtraceTracer.js +50 -0
  16. package/cjs/rumEventsCollection/tracing/jaegerTracer.js +58 -0
  17. package/cjs/rumEventsCollection/tracing/skywalkingTracer.js +75 -0
  18. package/cjs/rumEventsCollection/tracing/tracer.js +108 -0
  19. package/cjs/rumEventsCollection/tracing/w3cTraceParentTracer.js +51 -0
  20. package/cjs/rumEventsCollection/tracing/zipkinMultiTracer.js +58 -0
  21. package/cjs/rumEventsCollection/tracing/zipkinSingleTracer.js +51 -0
  22. package/esm/boot/buildEnv.js +1 -1
  23. package/esm/boot/rum.entry.js +55 -2
  24. package/esm/boot/rum.js +2 -2
  25. package/esm/core/boundedBuffer.js +20 -0
  26. package/esm/core/configuration.js +24 -3
  27. package/esm/core/dataMap.js +5 -1
  28. package/esm/core/transport.js +120 -70
  29. package/esm/core/xhrProxy.js +3 -2
  30. package/esm/helper/enums.js +8 -0
  31. package/esm/helper/utils.js +145 -5
  32. package/esm/rumEventsCollection/assembly.js +20 -3
  33. package/esm/rumEventsCollection/page/index.js +1 -11
  34. package/esm/rumEventsCollection/requestCollection.js +8 -2
  35. package/esm/rumEventsCollection/resource/resourceCollection.js +21 -2
  36. package/esm/rumEventsCollection/tracing/ddtraceTracer.js +42 -0
  37. package/esm/rumEventsCollection/tracing/jaegerTracer.js +50 -0
  38. package/esm/rumEventsCollection/tracing/skywalkingTracer.js +66 -0
  39. package/esm/rumEventsCollection/tracing/tracer.js +90 -0
  40. package/esm/rumEventsCollection/tracing/w3cTraceParentTracer.js +43 -0
  41. package/esm/rumEventsCollection/tracing/zipkinMultiTracer.js +50 -0
  42. package/esm/rumEventsCollection/tracing/zipkinSingleTracer.js +43 -0
  43. package/package.json +1 -1
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.buildEnv = void 0;
7
7
  var buildEnv = {
8
- sdkVersion: '1.0.3',
8
+ sdkVersion: '2.0.1',
9
9
  sdkName: 'df_uniapp_rum_sdk'
10
10
  };
11
11
  exports.buildEnv = buildEnv;
@@ -9,8 +9,20 @@ var _utils = require("../helper/utils");
9
9
 
10
10
  var _rum = require("./rum");
11
11
 
12
+ 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); }
13
+
12
14
  var makeRum = function makeRum(startRumImpl) {
13
15
  var isAlreadyInitialized = false;
16
+ var globalContextManager = (0, _utils.createContextManager)();
17
+ var user = {};
18
+
19
+ function clonedCommonContext() {
20
+ return (0, _utils.extend2Lev)({}, {
21
+ context: globalContextManager.get(),
22
+ user: user
23
+ });
24
+ }
25
+
14
26
  var rumGlobal = {
15
27
  init: function init(Vue, userConfiguration) {
16
28
  if (typeof userConfiguration === 'undefined') {
@@ -23,8 +35,29 @@ var makeRum = function makeRum(startRumImpl) {
23
35
  return;
24
36
  }
25
37
 
26
- startRumImpl(Vue, userConfiguration);
38
+ startRumImpl(Vue, userConfiguration, function () {
39
+ return {
40
+ user: user,
41
+ context: globalContextManager.get()
42
+ };
43
+ });
27
44
  isAlreadyInitialized = true;
45
+ },
46
+ addRumGlobalContext: globalContextManager.add,
47
+ removeRumGlobalContext: globalContextManager.remove,
48
+ getRumGlobalContext: globalContextManager.get,
49
+ setRumGlobalContext: globalContextManager.set,
50
+ setUser: function setUser(newUser) {
51
+ var sanitizedUser = sanitizeUser(newUser);
52
+
53
+ if (sanitizedUser) {
54
+ user = sanitizedUser;
55
+ } else {
56
+ console.error('Unsupported user:', newUser);
57
+ }
58
+ },
59
+ removeUser: function removeUser() {
60
+ user = {};
28
61
  }
29
62
  };
30
63
  return rumGlobal;
@@ -52,6 +85,28 @@ var makeRum = function makeRum(startRumImpl) {
52
85
 
53
86
  return true;
54
87
  }
88
+
89
+ function sanitizeUser(newUser) {
90
+ if (_typeof(newUser) !== 'object' || !newUser) {
91
+ return;
92
+ }
93
+
94
+ var result = (0, _utils.extend2Lev)({}, newUser);
95
+
96
+ if ('id' in result) {
97
+ result.id = String(result.id);
98
+ }
99
+
100
+ if ('name' in result) {
101
+ result.name = String(result.name);
102
+ }
103
+
104
+ if ('email' in result) {
105
+ result.email = String(result.email);
106
+ }
107
+
108
+ return result;
109
+ }
55
110
  };
56
111
 
57
112
  exports.makeRum = makeRum;
package/cjs/boot/rum.js CHANGED
@@ -35,12 +35,12 @@ var _actionCollection = require("../rumEventsCollection/action/actionCollection"
35
35
 
36
36
  var _sdk = require("../core/sdk");
37
37
 
38
- var startRum = function startRum(Vue, userConfiguration) {
38
+ var startRum = function startRum(Vue, userConfiguration, getCommonContext) {
39
39
  var configuration = (0, _configuration.commonInit)(userConfiguration, _buildEnv.buildEnv);
40
40
  var lifeCycle = new _lifeCycle.LifeCycle();
41
41
  var parentContexts = (0, _parentContexts.startParentContexts)(lifeCycle);
42
42
  var batch = (0, _batch.startRumBatch)(configuration, lifeCycle);
43
- (0, _assembly.startRumAssembly)(userConfiguration.applicationId, configuration, lifeCycle, parentContexts);
43
+ (0, _assembly.startRumAssembly)(userConfiguration.applicationId, configuration, lifeCycle, parentContexts, getCommonContext);
44
44
  (0, _appCollection.startAppCollection)(lifeCycle, configuration);
45
45
  (0, _resourceCollection.startResourceCollection)(lifeCycle, configuration);
46
46
  (0, _viewCollection.startViewCollection)(lifeCycle, configuration, Vue);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.BoundedBuffer = void 0;
7
+
8
+ var _BoundedBuffer = function _BoundedBuffer() {
9
+ this.buffer = [];
10
+ };
11
+
12
+ _BoundedBuffer.prototype = {
13
+ add: function add(item) {
14
+ var length = this.buffer.push(item);
15
+
16
+ if (length > this.limit) {
17
+ this.buffer.splice(0, 1);
18
+ }
19
+ },
20
+ drain: function drain(fn) {
21
+ this.buffer.forEach(function (item) {
22
+ fn(item);
23
+ });
24
+ this.buffer.length = 0;
25
+ }
26
+ };
27
+ var BoundedBuffer = _BoundedBuffer;
28
+ exports.BoundedBuffer = BoundedBuffer;
@@ -34,7 +34,11 @@ var DEFAULT_CONFIGURATION = {
34
34
  * arbitrary value, byte precision not needed
35
35
  */
36
36
  requestErrorResponseLengthLimit: 32 * _enums.ONE_KILO_BYTE,
37
- trackInteractions: false
37
+ trackInteractions: false,
38
+ traceType: _enums.TraceType.DDTRACE,
39
+ traceId128Bit: false,
40
+ allowedTracingOrigins: [] // 新增
41
+
38
42
  };
39
43
  exports.DEFAULT_CONFIGURATION = DEFAULT_CONFIGURATION;
40
44
 
@@ -62,9 +66,26 @@ function commonInit(userConfiguration, buildEnv) {
62
66
  transportConfiguration.trackInteractions = !!userConfiguration.trackInteractions;
63
67
  }
64
68
 
69
+ if ('allowedTracingOrigins' in userConfiguration) {
70
+ transportConfiguration.allowedTracingOrigins = userConfiguration.allowedTracingOrigins;
71
+ }
72
+
73
+ if ('traceId128Bit' in userConfiguration) {
74
+ transportConfiguration.traceId128Bit = !!userConfiguration.traceId128Bit;
75
+ }
76
+
77
+ if ('traceType' in userConfiguration && hasTraceType(userConfiguration.traceType)) {
78
+ transportConfiguration.traceType = userConfiguration.traceType;
79
+ }
80
+
65
81
  return (0, _utils.extend2Lev)(DEFAULT_CONFIGURATION, transportConfiguration);
66
82
  }
67
83
 
84
+ function hasTraceType(traceType) {
85
+ if (traceType && (0, _utils.values)(_enums.TraceType).indexOf(traceType) > -1) return true;
86
+ return false;
87
+ }
88
+
68
89
  var haveSameOrigin = function haveSameOrigin(url1, url2) {
69
90
  var parseUrl1 = (0, _utils.urlParse)(url1).getParse();
70
91
  var parseUrl2 = (0, _utils.urlParse)(url2).getParse();
@@ -14,7 +14,9 @@ var commonTags = {
14
14
  app_id: 'application.id',
15
15
  env: '_dd.env',
16
16
  version: '_dd.version',
17
- userid: 'user.user_id',
17
+ userid: 'user.id',
18
+ user_email: 'user.email',
19
+ user_name: 'user.name',
18
20
  session_id: 'session.id',
19
21
  session_type: 'session.type',
20
22
  is_signin: 'user.is_signin',
@@ -59,6 +61,8 @@ var dataMap = {
59
61
  resource: {
60
62
  type: _enums.RumEventType.RESOURCE,
61
63
  tags: {
64
+ trace_id: '_dd.trace_id',
65
+ span_id: '_dd.span_id',
62
66
  resource_type: 'resource.type',
63
67
  resource_status: 'resource.status',
64
68
  resource_status_group: 'resource.status_group',
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Batch = exports.HttpRequest = void 0;
6
+ exports.Batch = exports.processedMessageByDataMap = exports.HttpRequest = void 0;
7
7
 
8
8
  var _utils = require("../helper/utils");
9
9
 
@@ -13,8 +13,11 @@ var _lifeCycle = require("../core/lifeCycle");
13
13
 
14
14
  var _dataMap = require("./dataMap");
15
15
 
16
+ var _enums = require("../helper/enums");
17
+
16
18
  // https://en.wikipedia.org/wiki/UTF-8
17
19
  var HAS_MULTI_BYTES_CHARACTERS = /[^\u0000-\u007F]/;
20
+ var CUSTOM_KEYS = 'custom_keys';
18
21
 
19
22
  function addBatchPrecision(url) {
20
23
  if (!url) return url;
@@ -43,6 +46,124 @@ httpRequest.prototype = {
43
46
  var HttpRequest = httpRequest;
44
47
  exports.HttpRequest = HttpRequest;
45
48
 
49
+ var processedMessageByDataMap = function processedMessageByDataMap(message) {
50
+ if (!message || !message.type) return {
51
+ rowStr: '',
52
+ rowData: undefined
53
+ };
54
+ var rowData = {
55
+ tags: {},
56
+ fields: {}
57
+ };
58
+ var hasFileds = false;
59
+ var rowStr = '';
60
+ (0, _utils.each)(_dataMap.dataMap, function (value, key) {
61
+ if (value.type === message.type) {
62
+ if (value.alias_key) {
63
+ rowStr += value.alias_key + ',';
64
+ } else {
65
+ rowStr += key + ',';
66
+ }
67
+
68
+ rowData.measurement = key;
69
+ var tagsStr = [];
70
+ var tags = (0, _utils.extend)({}, _dataMap.commonTags, value.tags);
71
+ var filterFileds = ['date', 'type']; // 已经在datamap中定义过的fields和tags
72
+
73
+ (0, _utils.each)(tags, function (value_path, _key) {
74
+ var _value = (0, _utils.findByPath)(message, value_path);
75
+
76
+ filterFileds.push(_key);
77
+
78
+ if (_value || (0, _utils.isNumber)(_value)) {
79
+ rowData.tags[_key] = _value;
80
+ tagsStr.push((0, _utils.escapeRowData)(_key) + '=' + (0, _utils.escapeRowData)(_value));
81
+ }
82
+ });
83
+
84
+ if (message.tags && (0, _utils.isObject)(message.tags) && !(0, _utils.isEmptyObject)(message.tags)) {
85
+ // 自定义tag
86
+ var _tagKeys = [];
87
+ (0, _utils.each)(message.tags, function (_value, _key) {
88
+ // 如果和之前tag重名,则舍弃
89
+ if (filterFileds.indexOf(_key) > -1) return;
90
+ filterFileds.push(_key);
91
+
92
+ if (_value || (0, _utils.isNumber)(_value)) {
93
+ _tagKeys.push(_key);
94
+
95
+ rowData.tags[_key] = _value;
96
+ tagsStr.push((0, _utils.escapeRowData)(_key) + '=' + (0, _utils.escapeRowData)(_value));
97
+ }
98
+ });
99
+
100
+ if (_tagKeys.length) {
101
+ rowData.tags[CUSTOM_KEYS] = _tagKeys;
102
+ tagsStr.push((0, _utils.escapeRowData)(CUSTOM_KEYS) + '=' + (0, _utils.escapeRowData)(_tagKeys));
103
+ }
104
+ }
105
+
106
+ var fieldsStr = [];
107
+ (0, _utils.each)(value.fields, function (_value, _key) {
108
+ if ((0, _utils.isArray)(_value) && _value.length === 2) {
109
+ var type = _value[0],
110
+ value_path = _value[1];
111
+
112
+ var _valueData = (0, _utils.findByPath)(message, value_path);
113
+
114
+ filterFileds.push(_key);
115
+
116
+ if (_valueData || (0, _utils.isNumber)(_valueData)) {
117
+ rowData.fields[_key] = _valueData; // 这里不需要转译
118
+
119
+ _valueData = type === 'string' ? '"' + _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"' : (0, _utils.escapeRowData)(_valueData);
120
+ fieldsStr.push((0, _utils.escapeRowData)(_key) + '=' + _valueData);
121
+ }
122
+ } else if ((0, _utils.isString)(_value)) {
123
+ var _valueData = (0, _utils.findByPath)(message, _value);
124
+
125
+ filterFileds.push(_key);
126
+
127
+ if (_valueData || (0, _utils.isNumber)(_valueData)) {
128
+ rowData.fields[_key] = _valueData; // 这里不需要转译
129
+
130
+ _valueData = (0, _utils.escapeRowData)(_valueData);
131
+ fieldsStr.push((0, _utils.escapeRowData)(_key) + '=' + _valueData);
132
+ }
133
+ }
134
+ });
135
+
136
+ if (message.type === _enums.RumEventType.LOGGER) {
137
+ // 这里处理日志类型数据自定义字段
138
+ (0, _utils.each)(message, function (value, key) {
139
+ if (filterFileds.indexOf(key) === -1 && ((0, _utils.isNumber)(value) || (0, _utils.isString)(value) || (0, _utils.isBoolean)(value))) {
140
+ tagsStr.push((0, _utils.escapeRowData)(key) + '=' + (0, _utils.escapeRowData)(value));
141
+ }
142
+ });
143
+ }
144
+
145
+ if (tagsStr.length) {
146
+ rowStr += tagsStr.join(',');
147
+ }
148
+
149
+ if (fieldsStr.length) {
150
+ rowStr += ' ';
151
+ rowStr += fieldsStr.join(',');
152
+ hasFileds = true;
153
+ }
154
+
155
+ rowStr = rowStr + ' ' + message.date;
156
+ rowData.time = (0, _utils.toServerDuration)(message.date); // 这里不需要转译
157
+ }
158
+ });
159
+ return {
160
+ rowStr: hasFileds ? rowStr : '',
161
+ rowData: hasFileds ? rowData : undefined
162
+ };
163
+ };
164
+
165
+ exports.processedMessageByDataMap = processedMessageByDataMap;
166
+
46
167
  function batch(request, maxSize, bytesLimit, maxMessageSize, flushTimeout, lifeCycle) {
47
168
  this.request = request;
48
169
  this.maxSize = maxSize;
@@ -76,74 +197,7 @@ batch.prototype = {
76
197
  }
77
198
  },
78
199
  processSendData: function processSendData(message) {
79
- // var data = safeJSONParse(message)
80
- if (!message || !message.type) return '';
81
- var rowStr = '';
82
- var hasFileds = false;
83
- (0, _utils.each)(_dataMap.dataMap, function (value, key) {
84
- if (value.type === message.type) {
85
- // 做一下别名处理
86
- if (value.alias_key) {
87
- rowStr += value.alias_key + ',';
88
- } else {
89
- rowStr += key + ',';
90
- }
91
-
92
- var tagsStr = [];
93
- var tags = (0, _utils.extend)({}, _dataMap.commonTags, value.tags);
94
- (0, _utils.each)(tags, function (value_path, _key) {
95
- var _value = (0, _utils.findByPath)(message, value_path);
96
-
97
- if (_value || (0, _utils.isNumber)(_value)) {
98
- tagsStr.push((0, _utils.escapeRowData)(_key) + '=' + (0, _utils.escapeRowData)(_value));
99
- }
100
- });
101
-
102
- if (message.tags.length) {
103
- // 自定义tag
104
- (0, _utils.each)(message.tags, function (_value, _key) {
105
- if (_value || (0, _utils.isNumber)(_value)) {
106
- tagsStr.push((0, _utils.escapeRowData)(_key) + '=' + (0, _utils.escapeRowData)(_value));
107
- }
108
- });
109
- }
110
-
111
- var fieldsStr = [];
112
- (0, _utils.each)(value.fields, function (_value, _key) {
113
- if (Array.isArray(_value) && _value.length === 2) {
114
- var type = _value[0],
115
- value_path = _value[1];
116
-
117
- var _valueData = (0, _utils.findByPath)(message, value_path);
118
-
119
- if (_valueData || (0, _utils.isNumber)(_valueData)) {
120
- _valueData = type === 'string' ? '"' + String(_valueData).replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"' : (0, _utils.escapeRowData)(_valueData);
121
- fieldsStr.push((0, _utils.escapeRowData)(_key) + '=' + _valueData);
122
- }
123
- } else if ((0, _utils.isString)(_value)) {
124
- var _valueData = (0, _utils.findByPath)(message, _value);
125
-
126
- if (_valueData || (0, _utils.isNumber)(_valueData)) {
127
- _valueData = (0, _utils.escapeRowData)(_valueData);
128
- fieldsStr.push((0, _utils.escapeRowData)(_key) + '=' + _valueData);
129
- }
130
- }
131
- });
132
-
133
- if (tagsStr.length) {
134
- rowStr += tagsStr.join(',');
135
- }
136
-
137
- if (fieldsStr.length) {
138
- rowStr += ' ';
139
- rowStr += fieldsStr.join(',');
140
- hasFileds = true;
141
- }
142
-
143
- rowStr = rowStr + ' ' + message.date;
144
- }
145
- });
146
- return hasFileds ? rowStr : '';
200
+ return processedMessageByDataMap(message).rowStr;
147
201
  },
148
202
  sizeInBytes: function sizeInBytes(candidate) {
149
203
  // Accurate byte size computations can degrade performances when there is a lot of events to process
@@ -53,7 +53,8 @@ function proxyXhr() {
53
53
  startTime: 0,
54
54
  url: arguments[0].url,
55
55
  type: _enums.RequestType.XHR,
56
- responseType: arguments[0].responseType || 'text'
56
+ responseType: arguments[0].responseType || 'text',
57
+ option: arguments[0]
57
58
  };
58
59
  dataflux_xhr.startTime = (0, _utils.now)();
59
60
  var originalSuccess = arguments[0].success;
@@ -97,6 +98,6 @@ function proxyXhr() {
97
98
  beforeSendCallbacks.forEach(function (callback) {
98
99
  callback(dataflux_xhr);
99
100
  });
100
- return originalXhrRequest.apply(this, arguments);
101
+ return originalXhrRequest.call(this, dataflux_xhr.option);
101
102
  };
102
103
  }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MpHook = exports.ActionType = exports.RequestType = exports.RumEventType = exports.CLIENT_ID_TOKEN = exports.ONE_KILO_BYTE = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = void 0;
6
+ exports.TraceType = exports.MpHook = exports.ActionType = exports.RequestType = exports.RumEventType = exports.CLIENT_ID_TOKEN = exports.ONE_KILO_BYTE = exports.ONE_HOUR = exports.ONE_MINUTE = exports.ONE_SECOND = void 0;
7
7
 
8
8
  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; }
9
9
 
@@ -52,4 +52,13 @@ var MpHook = {
52
52
  onHide: 1,
53
53
  onUnload: 1
54
54
  };
55
- exports.MpHook = MpHook;
55
+ exports.MpHook = MpHook;
56
+ var TraceType = {
57
+ DDTRACE: 'ddtrace',
58
+ ZIPKIN_MULTI_HEADER: 'zipkin',
59
+ ZIPKIN_SINGLE_HEADER: 'zipkin_single_header',
60
+ W3C_TRACEPARENT: 'w3c_traceparent',
61
+ SKYWALKING_V3: 'skywalking_v3',
62
+ JAEGER: 'jaeger'
63
+ };
64
+ exports.TraceType = TraceType;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.round = round;
7
+ exports.toServerDuration = toServerDuration;
7
8
  exports.msToNs = msToNs;
8
9
  exports.UUID = UUID;
9
10
  exports.jsonStringify = jsonStringify;
@@ -19,7 +20,10 @@ exports.withSnakeCaseKeys = withSnakeCaseKeys;
19
20
  exports.deepSnakeCase = deepSnakeCase;
20
21
  exports.toSnakeCase = toSnakeCase;
21
22
  exports.escapeRowData = escapeRowData;
22
- exports.deepMixObject = exports.defineObject = exports.getOwnObjectKeys = exports.urlParse = exports.throttle = exports.now = exports.safeJSONParse = exports.isJSONString = exports.isEmptyObject = exports.isObject = exports.trim = exports.extend2Lev = exports.extend = exports.getURLSearchParams = exports.getQueryParamsFromUrl = exports.areInOrder = exports.toArray = exports.isNumber = exports.isBoolean = exports.isDate = exports.isString = exports.isUndefined = exports.values = exports.each = exports.isArguments = void 0;
23
+ exports.getOrigin = getOrigin;
24
+ exports.createContextManager = createContextManager;
25
+ exports.getActivePage = getActivePage;
26
+ exports.deepMixObject = exports.defineObject = exports.getOwnObjectKeys = exports.urlParse = exports.throttle = exports.now = exports.safeJSONParse = exports.isJSONString = exports.isEmptyObject = exports.isObject = exports.trim = exports.extend2Lev = exports.extend = exports.getURLSearchParams = exports.getQueryParamsFromUrl = exports.base64Encode = exports.utf8Encode = exports.areInOrder = exports.toArray = exports.isArray = exports.isNumber = exports.isBoolean = exports.isDate = exports.isString = exports.isUndefined = exports.values = exports.each = exports.isArguments = void 0;
23
27
 
24
28
  var _enums = require("./enums");
25
29
 
@@ -32,6 +36,7 @@ var hasOwnProperty = ObjProto.hasOwnProperty;
32
36
  var slice = ArrayProto.slice;
33
37
  var toString = ObjProto.toString;
34
38
  var nativeForEach = ArrayProto.forEach;
39
+ var nativeIsArray = Array.isArray;
35
40
  var breaker = false;
36
41
 
37
42
  var isArguments = function isArguments(obj) {
@@ -83,6 +88,14 @@ function round(num, decimals) {
83
88
  return +num.toFixed(decimals);
84
89
  }
85
90
 
91
+ function toServerDuration(duration) {
92
+ if (!isNumber(duration)) {
93
+ return duration;
94
+ }
95
+
96
+ return round(duration * 1e6, 0);
97
+ }
98
+
86
99
  function msToNs(duration) {
87
100
  if (typeof duration !== 'number') {
88
101
  return duration;
@@ -121,6 +134,12 @@ var isNumber = function isNumber(obj) {
121
134
 
122
135
  exports.isNumber = isNumber;
123
136
 
137
+ var isArray = nativeIsArray || function (obj) {
138
+ return toString.call(obj) === '[object Array]';
139
+ };
140
+
141
+ exports.isArray = isArray;
142
+
124
143
  var toArray = function toArray(iterable) {
125
144
  if (!iterable) return [];
126
145
 
@@ -210,6 +229,98 @@ function jsonStringify(value, replacer, space) {
210
229
  return result;
211
230
  }
212
231
 
232
+ var utf8Encode = function utf8Encode(string) {
233
+ string = (string + '').replace(/\r\n/g, '\n').replace(/\r/g, '\n');
234
+ var utftext = '',
235
+ start,
236
+ end;
237
+ var stringl = 0,
238
+ n;
239
+ start = end = 0;
240
+ stringl = string.length;
241
+
242
+ for (n = 0; n < stringl; n++) {
243
+ var c1 = string.charCodeAt(n);
244
+ var enc = null;
245
+
246
+ if (c1 < 128) {
247
+ end++;
248
+ } else if (c1 > 127 && c1 < 2048) {
249
+ enc = String.fromCharCode(c1 >> 6 | 192, c1 & 63 | 128);
250
+ } else {
251
+ enc = String.fromCharCode(c1 >> 12 | 224, c1 >> 6 & 63 | 128, c1 & 63 | 128);
252
+ }
253
+
254
+ if (enc !== null) {
255
+ if (end > start) {
256
+ utftext += string.substring(start, end);
257
+ }
258
+
259
+ utftext += enc;
260
+ start = end = n + 1;
261
+ }
262
+ }
263
+
264
+ if (end > start) {
265
+ utftext += string.substring(start, string.length);
266
+ }
267
+
268
+ return utftext;
269
+ };
270
+
271
+ exports.utf8Encode = utf8Encode;
272
+
273
+ var base64Encode = function base64Encode(data) {
274
+ data = String(data);
275
+ var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
276
+ var o1,
277
+ o2,
278
+ o3,
279
+ h1,
280
+ h2,
281
+ h3,
282
+ h4,
283
+ bits,
284
+ i = 0,
285
+ ac = 0,
286
+ enc = '',
287
+ tmp_arr = [];
288
+
289
+ if (!data) {
290
+ return data;
291
+ }
292
+
293
+ data = utf8Encode(data);
294
+
295
+ do {
296
+ o1 = data.charCodeAt(i++);
297
+ o2 = data.charCodeAt(i++);
298
+ o3 = data.charCodeAt(i++);
299
+ bits = o1 << 16 | o2 << 8 | o3;
300
+ h1 = bits >> 18 & 0x3f;
301
+ h2 = bits >> 12 & 0x3f;
302
+ h3 = bits >> 6 & 0x3f;
303
+ h4 = bits & 0x3f;
304
+ tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
305
+ } while (i < data.length);
306
+
307
+ enc = tmp_arr.join('');
308
+
309
+ switch (data.length % 3) {
310
+ case 1:
311
+ enc = enc.slice(0, -2) + '==';
312
+ break;
313
+
314
+ case 2:
315
+ enc = enc.slice(0, -1) + '=';
316
+ break;
317
+ }
318
+
319
+ return enc;
320
+ };
321
+
322
+ exports.base64Encode = base64Encode;
323
+
213
324
  function hasToJSON(value) {
214
325
  return _typeof(value) === 'object' && value !== null && value.hasOwnProperty('toJSON');
215
326
  }
@@ -482,7 +593,12 @@ function toSnakeCase(word) {
482
593
  }
483
594
 
484
595
  function escapeRowData(str) {
485
- if (!isString(str)) return str;
596
+ if (_typeof(str) === 'object' && str) {
597
+ str = jsonStringify(str);
598
+ } else if (!isString(str)) {
599
+ return str;
600
+ }
601
+
486
602
  var reg = /[\s=,"]/g;
487
603
  return String(str).replace(reg, function (word) {
488
604
  return '\\' + word;
@@ -553,8 +669,8 @@ var urlParse = function urlParse(para) {
553
669
 
554
670
  URLParser.prototype.getUrl = function () {
555
671
  var url = '';
556
- url += this._values.Origin;
557
- url += this._values.Port ? ':' + this._values.Port : '';
672
+ url += this._values.Origin; // url += this._values.Port ? ':' + this._values.Port : ''
673
+
558
674
  url += this._values.Path;
559
675
  url += this._values.QueryString ? '?' + this._values.QueryString : '';
560
676
  return url;
@@ -575,8 +691,9 @@ var urlParse = function urlParse(para) {
575
691
  }
576
692
  }
577
693
 
694
+ this._values['Path'] = this._values['Path'] || '/';
578
695
  this._values['Hostname'] = this._values['Host'].replace(/:\d+$/, '');
579
- this._values['Origin'] = this._values['Protocol'] + '://' + this._values['Hostname'];
696
+ this._values['Origin'] = this._values['Protocol'] + '://' + this._values['Hostname'] + (this._values.Port ? ':' + this._values.Port : '');
580
697
  };
581
698
 
582
699
  return new URLParser(para);
@@ -643,4 +760,44 @@ var deepMixObject = function deepMixObject(targetObj) {
643
760
  return targetObj;
644
761
  };
645
762
 
646
- exports.deepMixObject = deepMixObject;
763
+ exports.deepMixObject = deepMixObject;
764
+
765
+ function getOrigin(url) {
766
+ return urlParse(url).getParse().Origin;
767
+ }
768
+
769
+ function createContextManager() {
770
+ var context = {};
771
+ return {
772
+ get: function get() {
773
+ return context;
774
+ },
775
+ add: function add(key, value) {
776
+ if (isString(key)) {
777
+ context[key] = value;
778
+ } else {
779
+ console.error('key 需要传递字符串类型');
780
+ }
781
+ },
782
+ remove: function remove(key) {
783
+ delete context[key];
784
+ },
785
+ set: function set(newContext) {
786
+ if (isObject(newContext)) {
787
+ context = newContext;
788
+ } else {
789
+ console.error('content 需要传递对象类型数据');
790
+ }
791
+ }
792
+ };
793
+ }
794
+
795
+ function getActivePage() {
796
+ var curPages = typeof getCurrentPages === 'function' ? getCurrentPages() : [];
797
+
798
+ if (curPages.length) {
799
+ return curPages[curPages.length - 1];
800
+ }
801
+
802
+ return {};
803
+ }