@cloudcare/browser-core 1.1.0 → 1.1.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.
@@ -21,8 +21,10 @@ exports.deepSnakeCase = deepSnakeCase;
21
21
  exports.each = void 0;
22
22
  exports.elapsed = elapsed;
23
23
  exports.encodeDates = void 0;
24
+ exports.escapeFieldValueStr = escapeFieldValueStr;
24
25
  exports.escapeJsonValue = escapeJsonValue;
25
26
  exports.escapeRowData = escapeRowData;
27
+ exports.escapeRowField = escapeRowField;
26
28
  exports.filter = exports.extend2Lev = exports.extend = void 0;
27
29
  exports.find = find;
28
30
  exports.findByPath = findByPath;
@@ -62,8 +64,8 @@ exports.safeJSONParse = void 0;
62
64
  exports.safeTruncate = safeTruncate;
63
65
  exports.sessionStorage = exports.searchObjString = exports.searchObjDate = exports.searchConfigData = void 0;
64
66
  exports.shallowClone = shallowClone;
65
- exports.strip_empty_properties = exports.stringSplice = exports.strToUnicode = void 0;
66
- exports.throttle = exports.strip_sa_properties = void 0;
67
+ exports.strToUnicode = void 0;
68
+ exports.throttle = exports.strip_sa_properties = exports.strip_empty_properties = exports.stringSplice = void 0;
67
69
  exports.timeStampNow = timeStampNow;
68
70
  exports.toArray = exports.tirm = void 0;
69
71
  exports.toServerDuration = toServerDuration;
@@ -2062,4 +2064,18 @@ function escapeJsonValue(value) {
2062
2064
  } else {
2063
2065
  return jsonStringify(value);
2064
2066
  }
2067
+ }
2068
+
2069
+ function escapeFieldValueStr(str) {
2070
+ return '"' + str.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"';
2071
+ }
2072
+
2073
+ function escapeRowField(value) {
2074
+ if (_typeof(value) === 'object' && value) {
2075
+ return escapeFieldValueStr(jsonStringify(value));
2076
+ } else if (isString(value)) {
2077
+ return escapeFieldValueStr(value);
2078
+ } else {
2079
+ return value;
2080
+ }
2065
2081
  }
package/cjs/transport.js CHANGED
@@ -92,7 +92,7 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
92
92
  rowData.measurement = key;
93
93
  var tagsStr = [];
94
94
  var tags = (0, _tools.extend)({}, _dataMap.commonTags, value.tags);
95
- var filterFileds = ['date', 'type']; // 已经在datamap中定义过的fields和tags
95
+ var filterFileds = ['date', 'type', CUSTOM_KEYS]; // 已经在datamap中定义过的fields和tags
96
96
 
97
97
  (0, _tools.each)(tags, function (value_path, _key) {
98
98
  var _value = (0, _tools.findByPath)(message, value_path);
@@ -116,9 +116,14 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
116
116
 
117
117
  if (_valueData || (0, _tools.isNumber)(_valueData)) {
118
118
  rowData.fields[_key] = _valueData; // 这里不需要转译
119
-
120
- _valueData = type === 'string' ? '"' + _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"' : (0, _tools.escapeRowData)(_valueData);
121
- fieldsStr.push((0, _tools.escapeRowData)(_key) + '=' + _valueData);
119
+ // _valueData =
120
+ // type === 'string'
121
+ // ? '"' +
122
+ // _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') +
123
+ // '"'
124
+ // : escapeRowData(_valueData)
125
+
126
+ fieldsStr.push((0, _tools.escapeRowData)(_key) + '=' + (0, _tools.escapeRowField)(_valueData));
122
127
  }
123
128
  } else if ((0, _tools.isString)(_value)) {
124
129
  var _valueData = (0, _tools.findByPath)(message, _value);
@@ -128,14 +133,13 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
128
133
  if (_valueData || (0, _tools.isNumber)(_valueData)) {
129
134
  rowData.fields[_key] = _valueData; // 这里不需要转译
130
135
 
131
- _valueData = (0, _tools.escapeRowData)(_valueData);
132
- fieldsStr.push((0, _tools.escapeRowData)(_key) + '=' + _valueData);
136
+ fieldsStr.push((0, _tools.escapeRowData)(_key) + '=' + (0, _tools.escapeRowField)(_valueData));
133
137
  }
134
138
  }
135
139
  });
136
140
 
137
141
  if (message.tags && (0, _tools.isObject)(message.tags) && !(0, _tools.isEmptyObject)(message.tags)) {
138
- // 自定义tag
142
+ // 自定义tag, 存储成field
139
143
  var _tagKeys = [];
140
144
  (0, _tools.each)(message.tags, function (_value, _key) {
141
145
  // 如果和之前tag重名,则舍弃
@@ -145,14 +149,15 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
145
149
  if (_value || (0, _tools.isNumber)(_value)) {
146
150
  _tagKeys.push(_key);
147
151
 
148
- rowData.tags[_key] = (0, _tools.escapeJsonValue)(_value);
149
- tagsStr.push((0, _tools.escapeRowData)(_key) + '=' + (0, _tools.escapeRowData)(_value));
152
+ rowData.fields[_key] = _value; // 这里不需要转译
153
+
154
+ fieldsStr.push((0, _tools.escapeRowData)(_key) + '=' + (0, _tools.escapeRowField)(_value));
150
155
  }
151
156
  });
152
157
 
153
158
  if (_tagKeys.length) {
154
- rowData.tags[CUSTOM_KEYS] = (0, _tools.escapeJsonValue)(_tagKeys);
155
- tagsStr.push((0, _tools.escapeRowData)(CUSTOM_KEYS) + '=' + (0, _tools.escapeRowData)(_tagKeys));
159
+ rowData.fields[CUSTOM_KEYS] = (0, _tools.escapeRowField)(_tagKeys);
160
+ fieldsStr.push((0, _tools.escapeRowData)(CUSTOM_KEYS) + '=' + (0, _tools.escapeRowField)(_tagKeys));
156
161
  }
157
162
  }
158
163
 
@@ -160,8 +165,9 @@ var processedMessageByDataMap = function processedMessageByDataMap(message) {
160
165
  // 这里处理日志类型数据自定义字段
161
166
  (0, _tools.each)(message, function (value, key) {
162
167
  if (filterFileds.indexOf(key) === -1 && ((0, _tools.isNumber)(value) || (0, _tools.isString)(value) || (0, _tools.isBoolean)(value))) {
163
- rowData.tags[key] = (0, _tools.escapeJsonValue)(value);
164
- tagsStr.push((0, _tools.escapeRowData)(key) + '=' + (0, _tools.escapeRowData)(value));
168
+ rowData.fields[key] = value; // 这里不需要转译
169
+
170
+ fieldsStr.push((0, _tools.escapeRowData)(key) + '=' + (0, _tools.escapeRowField)(value));
165
171
  }
166
172
  });
167
173
  }
@@ -1746,4 +1746,16 @@ export function escapeJsonValue(value) {
1746
1746
  } else {
1747
1747
  return jsonStringify(value);
1748
1748
  }
1749
+ }
1750
+ export function escapeFieldValueStr(str) {
1751
+ return '"' + str.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"';
1752
+ }
1753
+ export function escapeRowField(value) {
1754
+ if (typeof value === 'object' && value) {
1755
+ return escapeFieldValueStr(jsonStringify(value));
1756
+ } else if (isString(value)) {
1757
+ return escapeFieldValueStr(value);
1758
+ } else {
1759
+ return value;
1760
+ }
1749
1761
  }
package/esm/transport.js CHANGED
@@ -1,4 +1,4 @@
1
- import { addEventListener, values, findByPath, escapeRowData, each, isNumber, isArray, extend, isString, toServerDuration, isBoolean, isEmptyObject, isObject, map, escapeJsonValue } from './helper/tools';
1
+ import { addEventListener, values, findByPath, escapeRowData, each, isNumber, isArray, extend, isString, toServerDuration, isBoolean, isEmptyObject, isObject, map, escapeJsonValue, escapeRowField } from './helper/tools';
2
2
  import { DOM_EVENT, RumEventType } from './helper/enums';
3
3
  import { commonTags, dataMap } from './dataMap';
4
4
  import { getGlobalObject } from './init'; // https://en.wikipedia.org/wiki/UTF-8
@@ -79,7 +79,7 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
79
79
  rowData.measurement = key;
80
80
  var tagsStr = [];
81
81
  var tags = extend({}, commonTags, value.tags);
82
- var filterFileds = ['date', 'type']; // 已经在datamap中定义过的fields和tags
82
+ var filterFileds = ['date', 'type', CUSTOM_KEYS]; // 已经在datamap中定义过的fields和tags
83
83
 
84
84
  each(tags, function (value_path, _key) {
85
85
  var _value = findByPath(message, value_path);
@@ -103,9 +103,14 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
103
103
 
104
104
  if (_valueData || isNumber(_valueData)) {
105
105
  rowData.fields[_key] = _valueData; // 这里不需要转译
106
-
107
- _valueData = type === 'string' ? '"' + _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') + '"' : escapeRowData(_valueData);
108
- fieldsStr.push(escapeRowData(_key) + '=' + _valueData);
106
+ // _valueData =
107
+ // type === 'string'
108
+ // ? '"' +
109
+ // _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') +
110
+ // '"'
111
+ // : escapeRowData(_valueData)
112
+
113
+ fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData));
109
114
  }
110
115
  } else if (isString(_value)) {
111
116
  var _valueData = findByPath(message, _value);
@@ -115,14 +120,13 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
115
120
  if (_valueData || isNumber(_valueData)) {
116
121
  rowData.fields[_key] = _valueData; // 这里不需要转译
117
122
 
118
- _valueData = escapeRowData(_valueData);
119
- fieldsStr.push(escapeRowData(_key) + '=' + _valueData);
123
+ fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData));
120
124
  }
121
125
  }
122
126
  });
123
127
 
124
128
  if (message.tags && isObject(message.tags) && !isEmptyObject(message.tags)) {
125
- // 自定义tag
129
+ // 自定义tag, 存储成field
126
130
  var _tagKeys = [];
127
131
  each(message.tags, function (_value, _key) {
128
132
  // 如果和之前tag重名,则舍弃
@@ -132,14 +136,15 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
132
136
  if (_value || isNumber(_value)) {
133
137
  _tagKeys.push(_key);
134
138
 
135
- rowData.tags[_key] = escapeJsonValue(_value);
136
- tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value));
139
+ rowData.fields[_key] = _value; // 这里不需要转译
140
+
141
+ fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value));
137
142
  }
138
143
  });
139
144
 
140
145
  if (_tagKeys.length) {
141
- rowData.tags[CUSTOM_KEYS] = escapeJsonValue(_tagKeys);
142
- tagsStr.push(escapeRowData(CUSTOM_KEYS) + '=' + escapeRowData(_tagKeys));
146
+ rowData.fields[CUSTOM_KEYS] = escapeRowField(_tagKeys);
147
+ fieldsStr.push(escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys));
143
148
  }
144
149
  }
145
150
 
@@ -147,8 +152,9 @@ export var processedMessageByDataMap = function processedMessageByDataMap(messag
147
152
  // 这里处理日志类型数据自定义字段
148
153
  each(message, function (value, key) {
149
154
  if (filterFileds.indexOf(key) === -1 && (isNumber(value) || isString(value) || isBoolean(value))) {
150
- rowData.tags[key] = escapeJsonValue(value);
151
- tagsStr.push(escapeRowData(key) + '=' + escapeRowData(value));
155
+ rowData.fields[key] = value; // 这里不需要转译
156
+
157
+ fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value));
152
158
  }
153
159
  });
154
160
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
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": "f952b9eeba6f5cfe85fe0073700a35cfdc35454b"
23
+ "gitHead": "6637896a7d66c35f8b37da75b14d234d049c79d5"
24
24
  }
@@ -1724,3 +1724,17 @@ export function escapeJsonValue(value) {
1724
1724
  return jsonStringify(value)
1725
1725
  }
1726
1726
  }
1727
+ export function escapeFieldValueStr(str) {
1728
+ return '"' +
1729
+ str.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') +
1730
+ '"'
1731
+ }
1732
+ export function escapeRowField(value) {
1733
+ if (typeof value === 'object' && value) {
1734
+ return escapeFieldValueStr(jsonStringify(value))
1735
+ } else if (isString(value)) {
1736
+ return escapeFieldValueStr(value)
1737
+ } else {
1738
+ return value
1739
+ }
1740
+ }
package/src/transport.js CHANGED
@@ -13,7 +13,8 @@ import {
13
13
  isEmptyObject,
14
14
  isObject,
15
15
  map,
16
- escapeJsonValue
16
+ escapeJsonValue,
17
+ escapeRowField
17
18
  } from './helper/tools'
18
19
  import { DOM_EVENT, RumEventType } from './helper/enums'
19
20
  import { commonTags, dataMap } from './dataMap'
@@ -93,7 +94,7 @@ export var processedMessageByDataMap = function (message) {
93
94
  rowData.measurement = key
94
95
  var tagsStr = []
95
96
  var tags = extend({}, commonTags, value.tags)
96
- var filterFileds = ['date', 'type'] // 已经在datamap中定义过的fields和tags
97
+ var filterFileds = ['date', 'type', CUSTOM_KEYS] // 已经在datamap中定义过的fields和tags
97
98
  each(tags, function (value_path, _key) {
98
99
  var _value = findByPath(message, value_path)
99
100
  filterFileds.push(_key)
@@ -112,26 +113,25 @@ export var processedMessageByDataMap = function (message) {
112
113
  filterFileds.push(_key)
113
114
  if (_valueData || isNumber(_valueData)) {
114
115
  rowData.fields[_key] = _valueData // 这里不需要转译
115
- _valueData =
116
- type === 'string'
117
- ? '"' +
118
- _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') +
119
- '"'
120
- : escapeRowData(_valueData)
121
- fieldsStr.push(escapeRowData(_key) + '=' + _valueData)
116
+ // _valueData =
117
+ // type === 'string'
118
+ // ? '"' +
119
+ // _valueData.replace(/[\\]*"/g, '"').replace(/"/g, '\\"') +
120
+ // '"'
121
+ // : escapeRowData(_valueData)
122
+ fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData))
122
123
  }
123
124
  } else if (isString(_value)) {
124
125
  var _valueData = findByPath(message, _value)
125
126
  filterFileds.push(_key)
126
127
  if (_valueData || isNumber(_valueData)) {
127
128
  rowData.fields[_key] = _valueData // 这里不需要转译
128
- _valueData = escapeRowData(_valueData)
129
- fieldsStr.push(escapeRowData(_key) + '=' + _valueData)
129
+ fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_valueData))
130
130
  }
131
131
  }
132
132
  })
133
133
  if (message.tags && isObject(message.tags) && !isEmptyObject(message.tags)) {
134
- // 自定义tag
134
+ // 自定义tag, 存储成field
135
135
  const _tagKeys = []
136
136
  each(message.tags, function (_value, _key) {
137
137
  // 如果和之前tag重名,则舍弃
@@ -139,25 +139,24 @@ export var processedMessageByDataMap = function (message) {
139
139
  filterFileds.push(_key)
140
140
  if (_value || isNumber(_value)) {
141
141
  _tagKeys.push(_key)
142
- rowData.tags[_key] = escapeJsonValue(_value)
143
- tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value))
142
+ rowData.fields[_key] = _value // 这里不需要转译
143
+ fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value))
144
144
  }
145
145
  })
146
146
  if (_tagKeys.length) {
147
- rowData.tags[CUSTOM_KEYS] = escapeJsonValue(_tagKeys)
148
- tagsStr.push(escapeRowData(CUSTOM_KEYS) + '=' + escapeRowData(_tagKeys))
147
+ rowData.fields[CUSTOM_KEYS] = escapeRowField(_tagKeys)
148
+ fieldsStr.push(escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys))
149
149
  }
150
150
  }
151
151
  if (message.type === RumEventType.LOGGER) {
152
152
  // 这里处理日志类型数据自定义字段
153
-
154
153
  each(message, function (value, key) {
155
154
  if (
156
155
  filterFileds.indexOf(key) === -1 &&
157
156
  (isNumber(value) || isString(value) || isBoolean(value))
158
157
  ) {
159
- rowData.tags[key] = escapeJsonValue(value)
160
- tagsStr.push(escapeRowData(key) + '=' + escapeRowData(value))
158
+ rowData.fields[key] = value // 这里不需要转译
159
+ fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value))
161
160
  }
162
161
  })
163
162
  }