@cloudcare/browser-core 3.2.25 → 3.2.28

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 (57) hide show
  1. package/cjs/browser/asyncClocks.js +0 -4
  2. package/cjs/browser/asyncClocks.js.map +1 -1
  3. package/cjs/configuration/configuration.js +1 -1
  4. package/cjs/configuration/configuration.js.map +1 -1
  5. package/cjs/configuration/remoteConfiguration.js +0 -85
  6. package/cjs/configuration/remoteConfiguration.js.map +1 -1
  7. package/cjs/configuration/transportConfiguration.js +0 -2
  8. package/cjs/configuration/transportConfiguration.js.map +1 -1
  9. package/cjs/dataMap.js +0 -2
  10. package/cjs/dataMap.js.map +1 -1
  11. package/cjs/helper/deviceInfo.js +2 -41
  12. package/cjs/helper/deviceInfo.js.map +1 -1
  13. package/cjs/helper/errorTools.js +2 -1
  14. package/cjs/helper/errorTools.js.map +1 -1
  15. package/cjs/helper/mobileUtil.js +2 -2
  16. package/cjs/helper/mobileUtil.js.map +1 -1
  17. package/cjs/helper/serialisation/rowData.js +0 -1
  18. package/cjs/helper/serialisation/rowData.js.map +1 -1
  19. package/cjs/helper/tools.js +6 -21
  20. package/cjs/helper/tools.js.map +1 -1
  21. package/cjs/transport/batch.js +6 -10
  22. package/cjs/transport/batch.js.map +1 -1
  23. package/esm/browser/asyncClocks.js +0 -4
  24. package/esm/browser/asyncClocks.js.map +1 -1
  25. package/esm/configuration/configuration.js +1 -1
  26. package/esm/configuration/configuration.js.map +1 -1
  27. package/esm/configuration/remoteConfiguration.js +0 -85
  28. package/esm/configuration/remoteConfiguration.js.map +1 -1
  29. package/esm/configuration/transportConfiguration.js +0 -2
  30. package/esm/configuration/transportConfiguration.js.map +1 -1
  31. package/esm/dataMap.js +0 -2
  32. package/esm/dataMap.js.map +1 -1
  33. package/esm/helper/deviceInfo.js +2 -41
  34. package/esm/helper/deviceInfo.js.map +1 -1
  35. package/esm/helper/errorTools.js +2 -1
  36. package/esm/helper/errorTools.js.map +1 -1
  37. package/esm/helper/mobileUtil.js +2 -2
  38. package/esm/helper/mobileUtil.js.map +1 -1
  39. package/esm/helper/serialisation/rowData.js +0 -1
  40. package/esm/helper/serialisation/rowData.js.map +1 -1
  41. package/esm/helper/tools.js +6 -21
  42. package/esm/helper/tools.js.map +1 -1
  43. package/esm/transport/batch.js +6 -10
  44. package/esm/transport/batch.js.map +1 -1
  45. package/package.json +23 -24
  46. package/src/browser/asyncClocks.js +0 -3
  47. package/src/configuration/configuration.js +1 -1
  48. package/src/configuration/remoteConfiguration.js +0 -84
  49. package/src/configuration/transportConfiguration.js +0 -2
  50. package/src/dataMap.js +1 -2
  51. package/src/helper/deviceInfo.js +9 -37
  52. package/src/helper/errorTools.js +2 -1
  53. package/src/helper/mobileUtil.js +2 -2
  54. package/src/helper/serialisation/rowData.js +0 -1
  55. package/src/helper/tools.js +6 -23
  56. package/src/transport/batch.js +6 -10
  57. package/types/index.d.ts +57 -57
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","names":["display","values","findByPath","each","isNumber","isArray","extend","isString","isEmptyObject","isObject","escapeJsonValue","escapeRowField","escapeRowData","commonTags","dataMap","commonFields","RumEventType","computeBytesCount","isPageExitReason","jsonStringify","CUSTOM_KEYS","processedMessageByDataMap","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","value","key","measurement","tagsStr","filterFileds","value_path","_key","_value","push","fieldsStr","length","_valueData","context","_tagKeys","indexOf","LOGGER","join","date","time","createBatch","options","encoder","request","messageBytesLimit","sendContentTypeByJson","flushController","upsertBuffer","flushSubscription","flushObservable","subscribe","event","flush","getMessageText","messages","isEmpty","arguments","serializedMessage","estimatedMessageBytesCount","notifyBeforeAddMessage","notifyAfterAddMessage","write","realMessageBytesCount","hasMessageFor","remove","removedMessage","messageBytesCount","estimateEncodedBytesCount","notifyAfterRemoveMessage","process","processedMessage","addOrUpdate","warn","concat","upsertMessages","isPageExit","reason","send","sendOnExit","isAsync","encoderResult","finishSync","outputBytesCount","formatPayloadFromEncoder","pendingMessages","pendingData","filter","Boolean","data","bytesCount","text","finish","add","upsert","stop","unsubscribe","output","Blob","encoding"],"sources":["../../src/transport/batch.js"],"sourcesContent":["import { display } from '../helper/display'\nimport {\n values,\n findByPath,\n each,\n isNumber,\n isArray,\n extend,\n isString,\n isEmptyObject,\n isObject\n} from '../helper/tools'\nimport {\n escapeJsonValue,\n escapeRowField,\n escapeRowData\n} from '../helper/serialisation/rowData'\nimport { commonTags, dataMap, commonFields } from '../dataMap'\nimport { RumEventType } from '../helper/enums'\nimport { computeBytesCount } from '../helper/byteUtils'\nimport { isPageExitReason } from '../browser/pageExitObservable'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar CUSTOM_KEYS = 'custom_keys'\nexport var processedMessageByDataMap = function (message) {\n if (!message || !message.type)\n return {\n rowStr: '',\n rowData: undefined\n }\n\n var rowData = { tags: {}, fields: {} }\n var hasFileds = false\n var rowStr = ''\n each(dataMap, function (value, key) {\n if (value.type === message.type) {\n rowStr += key + ','\n rowData.measurement = key\n var tagsStr = []\n var tags = extend({}, commonTags, value.tags)\n var filterFileds = ['date', 'type', CUSTOM_KEYS] // 已经在datamap中定义过的fields和tags\n each(tags, function (value_path, _key) {\n var _value = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_value || isNumber(_value)) {\n rowData.tags[_key] = escapeJsonValue(_value, true)\n tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value))\n }\n })\n\n var fieldsStr = []\n var fields = extend({}, commonFields, value.fields)\n each(fields, function (_value, _key) {\n if (isArray(_value) && _value.length === 2) {\n var value_path = _value[1]\n var _valueData = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = escapeJsonValue(_valueData) // 这里不需要转译\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n } else if (isString(_value)) {\n var _valueData = findByPath(message, _value)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = escapeJsonValue(_valueData) // 这里不需要转译\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n }\n })\n if (\n message.context &&\n isObject(message.context) &&\n !isEmptyObject(message.context)\n ) {\n // 自定义tag, 存储成field\n var _tagKeys = []\n each(message.context, function (_value, _key) {\n // 如果和之前tag重名,则舍弃\n if (filterFileds.indexOf(_key) > -1) return\n filterFileds.push(_key)\n if (_value !== undefined && _value !== null) {\n _tagKeys.push(_key)\n rowData.fields[_key] = escapeJsonValue(_value) // 这里不需要转译\n fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value))\n }\n })\n if (_tagKeys.length) {\n rowData.fields[CUSTOM_KEYS] = escapeJsonValue(_tagKeys)\n fieldsStr.push(\n escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys)\n )\n }\n }\n if (message.type === RumEventType.LOGGER) {\n // 这里处理日志类型数据自定义字段\n each(message, function (value, key) {\n if (\n filterFileds.indexOf(key) === -1 &&\n value !== undefined &&\n value !== null\n ) {\n rowData.fields[key] = escapeJsonValue(value) // 这里不需要转译\n fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value))\n }\n })\n }\n if (tagsStr.length) {\n rowStr += tagsStr.join(',')\n }\n if (fieldsStr.length) {\n rowStr += ' '\n rowStr += fieldsStr.join(',')\n hasFileds = true\n }\n rowStr = rowStr + ' ' + message.date\n rowData.time = message.date // 这里不需要转译\n }\n })\n return {\n rowStr: hasFileds ? rowStr : '',\n rowData: hasFileds ? rowData : undefined\n }\n}\n\nexport function createBatch(options) {\n var encoder = options.encoder\n var request = options.request\n var messageBytesLimit = options.messageBytesLimit\n var sendContentTypeByJson = options.sendContentTypeByJson\n var flushController = options.flushController\n var upsertBuffer = {}\n var flushSubscription = flushController.flushObservable.subscribe(function (\n event\n ) {\n flush(event)\n })\n function getMessageText(messages, isEmpty = false) {\n if (sendContentTypeByJson) {\n if (isEmpty) {\n return '[' + messages.join(',')\n } else {\n return ',' + messages.join(',')\n }\n } else {\n if (isEmpty) {\n return messages.join('\\n')\n } else {\n return '\\n' + messages.join('\\n')\n }\n }\n }\n function push(serializedMessage, estimatedMessageBytesCount, key) {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)\n\n if (key !== undefined) {\n upsertBuffer[key] = serializedMessage\n flushController.notifyAfterAddMessage()\n } else {\n encoder.write(\n getMessageText([serializedMessage], encoder.isEmpty()),\n function (realMessageBytesCount) {\n flushController.notifyAfterAddMessage(\n realMessageBytesCount - estimatedMessageBytesCount\n )\n }\n )\n }\n }\n\n function hasMessageFor(key) {\n return key !== undefined && upsertBuffer[key] !== undefined\n }\n\n function remove(key) {\n var removedMessage = upsertBuffer[key]\n delete upsertBuffer[key]\n var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage)\n flushController.notifyAfterRemoveMessage(messageBytesCount)\n }\n function process(message) {\n var processedMessage = ''\n if (sendContentTypeByJson) {\n processedMessage = jsonStringify(\n processedMessageByDataMap(message).rowData\n )\n } else {\n processedMessage = processedMessageByDataMap(message).rowStr\n }\n return processedMessage\n }\n function addOrUpdate(message, key) {\n const serializedMessage = process(message)\n\n const estimatedMessageBytesCount =\n encoder.estimateEncodedBytesCount(serializedMessage)\n\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(\n `Discarded a message whose size was bigger than the maximum allowed size ${messageBytesLimit}KB.`\n )\n return\n }\n\n if (hasMessageFor(key)) {\n remove(key)\n }\n\n push(serializedMessage, estimatedMessageBytesCount, key)\n }\n\n function flush(event) {\n var upsertMessages = values(upsertBuffer).join(\n sendContentTypeByJson ? ',' : '\\n'\n )\n upsertBuffer = {}\n\n var isPageExit = isPageExitReason(event.reason)\n var send = isPageExit ? request.sendOnExit : request.send\n\n if (\n isPageExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync\n ) {\n // 咱不支持json 模式\n var encoderResult = encoder.finishSync()\n\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult, sendContentTypeByJson))\n }\n\n // Send messages that are not yet encoded at this point\n var pendingMessages = [encoderResult.pendingData, upsertMessages]\n .filter(Boolean)\n .join('\\n')\n\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages)\n })\n }\n } else {\n if (upsertMessages) {\n var text = getMessageText([upsertMessages], encoder.isEmpty())\n if (sendContentTypeByJson) {\n text += ']'\n }\n encoder.write(text)\n } else {\n if (sendContentTypeByJson) {\n encoder.write(']')\n }\n }\n encoder.finish(function (encoderResult) {\n send(formatPayloadFromEncoder(encoderResult))\n })\n }\n }\n\n return {\n flushController: flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe\n }\n}\n\nfunction formatPayloadFromEncoder(encoderResult, sendContentTypeByJson) {\n var data\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output\n } else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain'\n })\n }\n\n return {\n data: data,\n type: sendContentTypeByJson ? 'application/json;UTF-8' : undefined,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"batch.js","names":["display","values","findByPath","each","isNumber","isArray","extend","isString","isEmptyObject","isObject","escapeJsonValue","escapeRowField","escapeRowData","commonTags","dataMap","commonFields","RumEventType","computeBytesCount","isPageExitReason","jsonStringify","CUSTOM_KEYS","processedMessageByDataMap","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","value","key","measurement","tagsStr","filterFileds","value_path","_key","_value","push","fieldsStr","length","_valueData","context","_tagKeys","indexOf","LOGGER","join","date","time","createBatch","options","encoder","request","messageBytesLimit","sendContentTypeByJson","flushController","upsertBuffer","flushSubscription","flushObservable","subscribe","event","flush","getMessageText","messages","isEmpty","arguments","serializedMessage","estimatedMessageBytesCount","notifyBeforeAddMessage","notifyAfterAddMessage","write","realMessageBytesCount","hasMessageFor","remove","removedMessage","messageBytesCount","estimateEncodedBytesCount","notifyAfterRemoveMessage","process","processedMessage","addOrUpdate","warn","concat","upsertMessages","isPageExit","reason","send","sendOnExit","isAsync","encoderResult","finishSync","outputBytesCount","formatPayloadFromEncoder","pendingMessages","pendingData","filter","Boolean","data","bytesCount","text","finish","add","upsert","stop","unsubscribe","output","Blob","encoding"],"sources":["../../src/transport/batch.js"],"sourcesContent":["import { display } from '../helper/display'\nimport {\n values,\n findByPath,\n each,\n isNumber,\n isArray,\n extend,\n isString,\n isEmptyObject,\n isObject\n} from '../helper/tools'\nimport {\n escapeJsonValue,\n escapeRowField,\n escapeRowData\n} from '../helper/serialisation/rowData'\nimport { commonTags, dataMap, commonFields } from '../dataMap'\nimport { RumEventType } from '../helper/enums'\nimport { computeBytesCount } from '../helper/byteUtils'\nimport { isPageExitReason } from '../browser/pageExitObservable'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\n// https://en.wikipedia.org/wiki/UTF-8\n// eslint-disable-next-line no-control-regex\nvar CUSTOM_KEYS = 'custom_keys'\nexport var processedMessageByDataMap = function (message) {\n if (!message || !message.type)\n return {\n rowStr: '',\n rowData: undefined\n }\n\n var rowData = { tags: {}, fields: {} }\n var hasFileds = false\n var rowStr = ''\n each(dataMap, function (value, key) {\n if (value.type === message.type) {\n rowStr += key + ','\n rowData.measurement = key\n var tagsStr = []\n var tags = extend({}, commonTags, value.tags)\n var filterFileds = ['date', 'type', CUSTOM_KEYS]\n each(tags, function (value_path, _key) {\n var _value = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_value || isNumber(_value)) {\n rowData.tags[_key] = escapeJsonValue(_value, true)\n tagsStr.push(escapeRowData(_key) + '=' + escapeRowData(_value))\n }\n })\n\n var fieldsStr = []\n var fields = extend({}, commonFields, value.fields)\n each(fields, function (_value, _key) {\n if (isArray(_value) && _value.length === 2) {\n var value_path = _value[1]\n var _valueData = findByPath(message, value_path)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = escapeJsonValue(_valueData)\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n } else if (isString(_value)) {\n var _valueData = findByPath(message, _value)\n filterFileds.push(_key)\n if (_valueData !== undefined && _valueData !== null) {\n rowData.fields[_key] = escapeJsonValue(_valueData)\n fieldsStr.push(\n escapeRowData(_key) + '=' + escapeRowField(_valueData)\n )\n }\n }\n })\n if (\n message.context &&\n isObject(message.context) &&\n !isEmptyObject(message.context)\n ) {\n var _tagKeys = []\n each(message.context, function (_value, _key) {\n if (filterFileds.indexOf(_key) > -1) return\n filterFileds.push(_key)\n if (_value !== undefined && _value !== null) {\n _tagKeys.push(_key)\n rowData.fields[_key] = escapeJsonValue(_value)\n fieldsStr.push(escapeRowData(_key) + '=' + escapeRowField(_value))\n }\n })\n if (_tagKeys.length) {\n rowData.fields[CUSTOM_KEYS] = escapeJsonValue(_tagKeys)\n fieldsStr.push(\n escapeRowData(CUSTOM_KEYS) + '=' + escapeRowField(_tagKeys)\n )\n }\n }\n if (message.type === RumEventType.LOGGER) {\n each(message, function (value, key) {\n if (\n filterFileds.indexOf(key) === -1 &&\n value !== undefined &&\n value !== null\n ) {\n rowData.fields[key] = escapeJsonValue(value)\n fieldsStr.push(escapeRowData(key) + '=' + escapeRowField(value))\n }\n })\n }\n if (tagsStr.length) {\n rowStr += tagsStr.join(',')\n }\n if (fieldsStr.length) {\n rowStr += ' '\n rowStr += fieldsStr.join(',')\n hasFileds = true\n }\n rowStr = rowStr + ' ' + message.date\n rowData.time = message.date\n }\n })\n return {\n rowStr: hasFileds ? rowStr : '',\n rowData: hasFileds ? rowData : undefined\n }\n}\n\nexport function createBatch(options) {\n var encoder = options.encoder\n var request = options.request\n var messageBytesLimit = options.messageBytesLimit\n var sendContentTypeByJson = options.sendContentTypeByJson\n var flushController = options.flushController\n var upsertBuffer = {}\n var flushSubscription = flushController.flushObservable.subscribe(function (\n event\n ) {\n flush(event)\n })\n function getMessageText(messages, isEmpty = false) {\n if (sendContentTypeByJson) {\n if (isEmpty) {\n return '[' + messages.join(',')\n } else {\n return ',' + messages.join(',')\n }\n } else {\n if (isEmpty) {\n return messages.join('\\n')\n } else {\n return '\\n' + messages.join('\\n')\n }\n }\n }\n function push(serializedMessage, estimatedMessageBytesCount, key) {\n flushController.notifyBeforeAddMessage(estimatedMessageBytesCount)\n\n if (key !== undefined) {\n upsertBuffer[key] = serializedMessage\n flushController.notifyAfterAddMessage()\n } else {\n encoder.write(\n getMessageText([serializedMessage], encoder.isEmpty()),\n function (realMessageBytesCount) {\n flushController.notifyAfterAddMessage(\n realMessageBytesCount - estimatedMessageBytesCount\n )\n }\n )\n }\n }\n\n function hasMessageFor(key) {\n return key !== undefined && upsertBuffer[key] !== undefined\n }\n\n function remove(key) {\n var removedMessage = upsertBuffer[key]\n delete upsertBuffer[key]\n var messageBytesCount = encoder.estimateEncodedBytesCount(removedMessage)\n flushController.notifyAfterRemoveMessage(messageBytesCount)\n }\n function process(message) {\n var processedMessage = ''\n if (sendContentTypeByJson) {\n processedMessage = jsonStringify(\n processedMessageByDataMap(message).rowData\n )\n } else {\n processedMessage = processedMessageByDataMap(message).rowStr\n }\n return processedMessage\n }\n function addOrUpdate(message, key) {\n const serializedMessage = process(message)\n\n const estimatedMessageBytesCount =\n encoder.estimateEncodedBytesCount(serializedMessage)\n\n if (estimatedMessageBytesCount >= messageBytesLimit) {\n display.warn(\n `Discarded a message whose size was bigger than the maximum allowed size ${messageBytesLimit}KB.`\n )\n return\n }\n\n if (hasMessageFor(key)) {\n remove(key)\n }\n\n push(serializedMessage, estimatedMessageBytesCount, key)\n }\n\n function flush(event) {\n var upsertMessages = values(upsertBuffer).join(\n sendContentTypeByJson ? ',' : '\\n'\n )\n upsertBuffer = {}\n\n var isPageExit = isPageExitReason(event.reason)\n var send = isPageExit ? request.sendOnExit : request.send\n\n if (\n isPageExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n encoder.isAsync\n ) {\n var encoderResult = encoder.finishSync()\n\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult, sendContentTypeByJson))\n }\n\n // Send messages that are not yet encoded at this point\n var pendingMessages = [encoderResult.pendingData, upsertMessages]\n .filter(Boolean)\n .join('\\n')\n\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages)\n })\n }\n } else {\n if (upsertMessages) {\n var text = getMessageText([upsertMessages], encoder.isEmpty())\n if (sendContentTypeByJson) {\n text += ']'\n }\n encoder.write(text)\n } else {\n if (sendContentTypeByJson) {\n encoder.write(']')\n }\n }\n encoder.finish(function (encoderResult) {\n send(formatPayloadFromEncoder(encoderResult))\n })\n }\n }\n\n return {\n flushController: flushController,\n add: addOrUpdate,\n upsert: addOrUpdate,\n stop: flushSubscription.unsubscribe\n }\n}\n\nfunction formatPayloadFromEncoder(encoderResult, sendContentTypeByJson) {\n var data\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output\n } else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain'\n })\n }\n\n return {\n data: data,\n type: sendContentTypeByJson ? 'application/json;UTF-8' : undefined,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,26 +1,25 @@
1
1
  {
2
- "name": "@cloudcare/browser-core",
3
- "version": "3.2.25",
4
- "main": "cjs/index.js",
5
- "module": "esm/index.js",
6
- "types": "types/index.d.ts",
7
- "scripts": {
8
- "build": "run-p build:cjs build:esm",
9
- "build:cjs": "rm -rf cjs && babel --config-file ./babel.cjs.json --out-dir cjs ./src",
10
- "build:esm": "rm -rf esm && babel --config-file ./babel.esm.json --out-dir esm ./src "
11
- },
12
- "keywords": [
13
- "dataflux",
14
- "logs",
15
- "sdk"
16
- ],
17
- "repository": {
18
- "url": "https://github.com/DataFlux-cn/datakit-js",
19
- "type": "git",
20
- "directory": "packages/core"
21
- },
22
- "author": "dataflux",
23
- "license": "MIT",
24
- "description": "DataFlux RUM Web 端数据指标监控",
25
- "gitHead": "d3ea0b253be974997fac2a295c3f033c927d65eb"
2
+ "name": "@cloudcare/browser-core",
3
+ "version": "3.2.28",
4
+ "main": "cjs/index.js",
5
+ "module": "esm/index.js",
6
+ "types": "types/index.d.ts",
7
+ "scripts": {
8
+ "build": "run-p build:cjs build:esm",
9
+ "build:cjs": "rm -rf cjs && babel --config-file ./babel.cjs.json --out-dir cjs ./src",
10
+ "build:esm": "rm -rf esm && babel --config-file ./babel.esm.json --out-dir esm ./src "
11
+ },
12
+ "keywords": [
13
+ "dataflux",
14
+ "logs",
15
+ "sdk"
16
+ ],
17
+ "repository": {
18
+ "url": "https://github.com/DataFlux-cn/datakit-js",
19
+ "type": "git",
20
+ "directory": "packages/core"
21
+ },
22
+ "author": "dataflux",
23
+ "license": "MIT",
24
+ "gitHead": "1d42bf528926c2c13947c3298a1d18ea2a4e91f6"
26
25
  }
@@ -14,7 +14,6 @@ function applyRemoteClocks(serverTimestamp, rtt) {
14
14
  const estimatedClientTime =
15
15
  performance.timing.navigationStart + start + rtt / 2
16
16
 
17
- // 计算时间偏移
18
17
  const offset = serverTimestamp - estimatedClientTime
19
18
  return offset
20
19
  }
@@ -45,7 +44,6 @@ export function buildEndpoint(configuration) {
45
44
  configuration.datakitUrl ||
46
45
  configuration.site
47
46
  if (url.indexOf('/') === 0) {
48
- // 绝对路径这种 /xxx
49
47
  url = location.origin + trim(url)
50
48
  }
51
49
  var endpoint = url
@@ -54,7 +52,6 @@ export function buildEndpoint(configuration) {
54
52
  } else {
55
53
  endpoint = trim(url) + '/v1/env_variable'
56
54
  }
57
- // 这里需要加上token和app_id
58
55
  endpoint += '?app_id=' + configuration.applicationId
59
56
  //testing-openway.dataflux.cn/v1/env_variable?token=a47fb0cdddaa4561a90d941317cdbc0b&app_id=d1b454d0_22eb_11ef_9b66_95ca11aa2c6c&to_headless=true
60
57
  if (configuration.site && configuration.clientToken) {
@@ -87,7 +87,7 @@ export function validateAndBuildConfiguration(initConfiguration) {
87
87
  messageBytesLimit: 256 * ONE_KIBI_BYTE,
88
88
  resourceUrlLimit: 5 * ONE_KIBI_BYTE,
89
89
  storeContextsToLocal: !!initConfiguration.storeContextsToLocal,
90
- // 存储到localstorage key ,默认不填,自动生成
90
+ // localstorage key ,default auto gen
91
91
  storeContextsKey: initConfiguration.storeContextsKey,
92
92
  sendContentTypeByJson: !!initConfiguration.sendContentTypeByJson,
93
93
  retryMaxSize: isNullUndefinedDefaultValue(
@@ -9,88 +9,6 @@ export function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {
9
9
  )
10
10
  })
11
11
  }
12
- /**
13
- * 数据上报采样率,100 表示全收集;0 表示不收集。默认 100
14
- */
15
- // sessionSampleRate?: number | undefined
16
- // telemetrySampleRate?: number | undefined
17
- // silentMultipleInit?: boolean | undefined
18
-
19
- // service?: string | undefined
20
- // /** Web 应用当前环境,如 prod:线上环境;gray:灰度环境;pre:预发布环境;common:日常环境;local:本地环境。 */
21
- // env?: string | undefined
22
- // /** Web 应用的版本号。 */
23
- // version?: string | undefined
24
- // /** 链路数据采样百分比:100 表示全收集;0 表示不收集。 */
25
- // tracingSampleRate?: number | undefined
26
- // /**
27
- // * @deprecated use usePartitionedCrossSiteSessionCookie instead
28
- // */
29
- // useCrossSiteSessionCookie?: boolean | undefined
30
- // /**
31
- // * 是否使用跨域 cookie,开启第三方 cookie 跨分区实现。默认不允许跨域,例如嵌套跨域 iframe 的情况。
32
- // */
33
- // usePartitionedCrossSiteSessionCookie?: boolean | undefined
34
- // useSecureSessionCookie?: boolean | undefined
35
- // trackSessionAcrossSubdomains?: boolean | undefined
36
- // /**
37
- // * 是否把公共数据存储到localstorage,默认不存储
38
- // */
39
- // storeContextsToLocal?: boolean | undefined
40
- // /**
41
- // * 定义存储到 localstorage 的 key ,默认不填,自动生成, 该参数主要是为了区分在同一个域名下,不同子路径共用store 的问题
42
- // */
43
- // storeContextsKey?: string | undefined
44
- // /**
45
- // * 数据以 application/json 的发送方式,默认text
46
- // */
47
- // sendContentTypeByJson?: boolean | undefined
48
- // /**
49
- // * 在 cookie 不可用的情况下,可以开启该选项,把数据储存到 localstorage
50
- // */
51
- // allowFallbackToLocalStorage ?: boolean | undefined
52
- // /**
53
- // * 错误会话补偿采样率:
54
- // * - 当会话未被 `sessionSampleRate` 采样时,若会话期间发生错误,则按此比例采集
55
- // * 此类会话将在错误发生时开始记录事件,并持续记录直到会话结束。
56
- // * - 取值范围 0-100,100 表示全采错误会话,0 表示忽略错误会话
57
- // */
58
- // sessionOnErrorSampleRate?: number | undefined
59
-
60
- // /**
61
- // * Session Replay 全量采集采样率:
62
- // * - 用于控制所有会话重放的全量数据采集比例
63
- // * - 取值范围 0-100,100 表示全量采集,0 表示不采集
64
- // **/
65
- // sessionReplaySampleRate?: number | undefined
66
-
67
- // /** 错误会话重放补偿采样率:
68
- // * - 当会话未被 `sessionReplaySampleRate` 采样时,若会话期间发生错误,则按此比例采集
69
- // * 此类回放将记录错误发生前最多一分钟的事件,并持续记录直到会话结束。
70
- // 100 表示全收集;0 表示不收集。
71
- // */
72
- // sessionReplayOnErrorSampleRate?: number | undefined
73
- // /**
74
- // * 是否开启用户行为采集。
75
- // */
76
- // trackUserInteractions?: boolean | undefined
77
- // /**
78
- // * 指定 action 数据 name 获取方式,默认自动获取,可以指定元素特定属性名称,alt,name,title,aria-labelledby,aria-label,data-guance-action-name 这些属性
79
- // */
80
- // actionNameAttribute?: string | undefined
81
- // trackViewsManually?: boolean | undefined
82
- // /**
83
- // * sessionReplay 和 compressIntakeRequests数据压缩都是在 webwork 线程中完成,所以默认情况下,需要在开启csp 安全访问的情况下,允许 worker-src blob:; workerUrl 配置允许自行托管 worker 地址
84
- // */
85
- // workerUrl?: string
86
- // /**
87
- // * 压缩 RUM 数据请求内容,以减少发送大量数据时的带宽使用量。压缩在 Worker 线程中完成。
88
- // */
89
- // compressIntakeRequests ?: boolean | undefined
90
- // /**
91
- // * 配置链路追踪工具类型,如果不配置默认为 ddtrace。目前支持 ddtrace、zipkin、skywalking_v3、jaeger、zipkin_single_header、w3c_traceparent 6 种数据类型。
92
- // */
93
- // traceType?: TraceType
94
12
 
95
13
  const modifiableFieldPaths = {
96
14
  sessionSampleRate: 'number',
@@ -189,7 +107,6 @@ export function buildEndpoint(configuration) {
189
107
  configuration.datakitUrl ||
190
108
  configuration.site
191
109
  if (url.indexOf('/') === 0) {
192
- // 绝对路径这种 /xxx
193
110
  url = location.origin + trim(url)
194
111
  }
195
112
  var endpoint = url
@@ -198,7 +115,6 @@ export function buildEndpoint(configuration) {
198
115
  } else {
199
116
  endpoint = trim(url) + '/v1/env_variable'
200
117
  }
201
- // 这里需要加上token和app_id
202
118
  endpoint += '?app_id=' + configuration.applicationId
203
119
  //testing-openway.dataflux.cn/v1/env_variable?token=a47fb0cdddaa4561a90d941317cdbc0b&app_id=d1b454d0_22eb_11ef_9b66_95ca11aa2c6c&to_headless=true
204
120
  if (configuration.site && configuration.clientToken) {
@@ -14,7 +14,6 @@ function getEndPointUrl(configuration, type) {
14
14
  configuration.datakitUrl ||
15
15
  configuration.site
16
16
  if (url.indexOf('/') === 0) {
17
- // 绝对路径这种 /xxx
18
17
  url = location.origin + trim(url)
19
18
  }
20
19
  var endpoint = url
@@ -71,7 +70,6 @@ export function isIntakeRequest(url, configuration) {
71
70
  if (configuration.sessionReplayEndPoint) {
72
71
  notTakeRequest.push(configuration.sessionReplayEndPoint)
73
72
  }
74
- // datakit 地址,log 地址,以及客户自定义过滤方法定义url
75
73
  return (
76
74
  some(notTakeRequest, function (takeUrl) {
77
75
  return url.indexOf(takeUrl) === 0
package/src/dataMap.js CHANGED
@@ -29,7 +29,7 @@ export var commonTags = {
29
29
  view_url: 'view.url',
30
30
  view_host: 'view.host',
31
31
  view_path: 'view.path',
32
- view_name: 'view.name', // 冗余一个字段
32
+ view_name: 'view.name',
33
33
  view_path_group: 'view.path_group'
34
34
  }
35
35
  export var commonFields = {
@@ -49,7 +49,6 @@ export var commonFields = {
49
49
  '_gc.configuration.session_replay_on_error_sample_rate',
50
50
  drift: '_gc.drift'
51
51
  }
52
- // 需要用双引号将字符串类型的field value括起来, 这里有数组标示[string, path]
53
52
  export var dataMap = {
54
53
  view: {
55
54
  type: RumEventType.VIEW,
@@ -5,7 +5,6 @@ var VariableLibrary = {
5
5
  typeof window !== 'undefined' && typeof window.navigator != 'undefined'
6
6
  ? window.navigator
7
7
  : {},
8
- // 信息map
9
8
  infoMap: {
10
9
  engine: ['WebKit', 'Trident', 'Gecko', 'Presto'],
11
10
  browser: [
@@ -78,17 +77,13 @@ var VariableLibrary = {
78
77
  device: ['Mobile', 'Tablet', 'iPad']
79
78
  }
80
79
  }
81
- // 方法库
82
80
  var MethodLibrary = {
83
- // 获取匹配库
84
81
  getMatchMap: monitor(function (u) {
85
82
  return {
86
- // 内核
87
83
  Trident: u.indexOf('Trident') > -1 || u.indexOf('NET CLR') > -1,
88
84
  Presto: u.indexOf('Presto') > -1,
89
85
  WebKit: u.indexOf('AppleWebKit') > -1,
90
86
  Gecko: u.indexOf('Gecko/') > -1,
91
- // 浏览器
92
87
  Safari: u.indexOf('Safari') > -1,
93
88
  Chrome: u.indexOf('Chrome') > -1 || u.indexOf('CriOS') > -1,
94
89
  IE: u.indexOf('MSIE') > -1 || u.indexOf('Trident') > -1,
@@ -131,7 +126,6 @@ var MethodLibrary = {
131
126
  Douban: u.indexOf('com.douban.frodo') > -1,
132
127
  Suning: u.indexOf('SNEBUY-APP') > -1,
133
128
  iQiYi: u.indexOf('IqiyiApp') > -1,
134
- // 系统或平台
135
129
  Windows: u.indexOf('Windows') > -1,
136
130
  Linux: u.indexOf('Linux') > -1 || u.indexOf('X11') > -1,
137
131
  'Mac OS': u.indexOf('Macintosh') > -1,
@@ -147,7 +141,6 @@ var MethodLibrary = {
147
141
  iOS: u.indexOf('like Mac OS X') > -1,
148
142
  'Chrome OS': u.indexOf('CrOS') > -1,
149
143
  WebOS: u.indexOf('hpwOS') > -1,
150
- // 设备
151
144
  Mobile:
152
145
  u.indexOf('Mobi') > -1 ||
153
146
  u.indexOf('iPh') > -1 ||
@@ -156,7 +149,6 @@ var MethodLibrary = {
156
149
  iPad: u.indexOf('iPad') > -1
157
150
  }
158
151
  }),
159
- // 在信息map和匹配库中进行匹配
160
152
  matchInfoMap: monitor(function (_this) {
161
153
  var u = VariableLibrary.navigator.userAgent || ''
162
154
  var match = MethodLibrary.getMatchMap(u)
@@ -169,19 +161,16 @@ var MethodLibrary = {
169
161
  }
170
162
  }
171
163
  }),
172
- // 获取当前操作系统
173
164
  getOS: monitor(function () {
174
165
  var _this = this
175
166
  MethodLibrary.matchInfoMap(_this)
176
167
  return _this.os || 'Unknown'
177
168
  }),
178
- // 获取操作系统版本
179
169
  getOSVersion: monitor(function () {
180
170
  var _this = this
181
171
  var u = VariableLibrary.navigator.userAgent || ''
182
172
  _this.osVersion = ''
183
173
  _this.osMajor = ''
184
- // 系统版本信息
185
174
  var osVersion = {
186
175
  Windows: function () {
187
176
  var v = u.replace(/^.*Windows NT ([\d.]+);.*$/, '$1')
@@ -231,25 +220,13 @@ var MethodLibrary = {
231
220
  osMajor: _this.osMajor
232
221
  }
233
222
  }),
234
- // 获取横竖屏状态
235
- getOrientationStatu: monitor(function () {
236
- var orientationStatus = ''
237
- var orientation = window.matchMedia('(orientation: portrait)')
238
- if (orientation.matches) {
239
- orientationStatus = '竖屏'
240
- } else {
241
- orientationStatus = '横屏'
242
- }
243
- return orientationStatus
244
- }),
245
- // 获取设备类型
223
+
246
224
  getDeviceType: monitor(function () {
247
225
  var _this = this
248
226
  _this.device = 'PC'
249
227
  MethodLibrary.matchInfoMap(_this)
250
228
  return _this.device
251
229
  }),
252
- // 获取网络状态
253
230
  getNetwork: monitor(function () {
254
231
  var connection =
255
232
  window.navigator.connection ||
@@ -291,7 +268,6 @@ var MethodLibrary = {
291
268
  }
292
269
  return result
293
270
  }),
294
- // 获取当前语言
295
271
  getLanguage: monitor(function () {
296
272
  var _this = this
297
273
  _this.language = (function () {
@@ -311,7 +287,6 @@ var MethodLibrary = {
311
287
  const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone
312
288
  return timeZone
313
289
  }),
314
- // 浏览器信息
315
290
  getBrowserInfo: monitor(function () {
316
291
  var _this = this
317
292
  MethodLibrary.matchInfoMap(_this)
@@ -362,22 +337,22 @@ var MethodLibrary = {
362
337
  if (match['IE'] || match['Edge']) {
363
338
  var navigator_top = window.screenTop - window.screenY
364
339
  switch (navigator_top) {
365
- case 71: // 无收藏栏,贴边
340
+ case 71:
366
341
  break
367
- case 74: // 无收藏栏,非贴边
342
+ case 74:
368
343
  break
369
- case 99: // 有收藏栏,贴边
344
+ case 99:
370
345
  break
371
- case 102: // 有收藏栏,非贴边
346
+ case 102:
372
347
  match['360EE'] = true
373
348
  break
374
- case 75: // 无收藏栏,贴边
349
+ case 75:
375
350
  break
376
- case 74: // 无收藏栏,非贴边
351
+ case 74:
377
352
  break
378
- case 105: // 有收藏栏,贴边
353
+ case 105:
379
354
  break
380
- case 104: // 有收藏栏,非贴边
355
+ case 104:
381
356
  match['360SE'] = true
382
357
  break
383
358
  default:
@@ -596,16 +571,13 @@ var MethodLibrary = {
596
571
  browserMajor: _this.browserMajor
597
572
  }
598
573
  }),
599
- // 获取地理位置
600
574
  getGeoPostion: monitor(function (callback) {
601
575
  navigator &&
602
576
  navigator.geolocation &&
603
577
  navigator.geolocation.getCurrentPosition(
604
- // 位置获取成功
605
578
  function (position) {
606
579
  callback(position)
607
580
  },
608
- // 位置获取失败
609
581
  function (error) {
610
582
  display.warn(error)
611
583
  }
@@ -11,7 +11,8 @@ export var ErrorSource = {
11
11
  NETWORK: 'network',
12
12
  SOURCE: 'source',
13
13
  LOGGER: 'logger',
14
- CUSTOM: 'custom'
14
+ CUSTOM: 'custom',
15
+ REPORT: 'report'
15
16
  }
16
17
 
17
18
  export function computeRawError(data) {
@@ -66,7 +66,7 @@ JsBirdge.prototype = {
66
66
  }
67
67
  } catch (err) {}
68
68
  } else {
69
- callback({ error: '请传入发送事件的名称!!' })
69
+ callback({ error: 'please input event name' })
70
70
  }
71
71
  },
72
72
  addEventListener: function (params, callback) {
@@ -94,7 +94,7 @@ JsBirdge.prototype = {
94
94
  }
95
95
  } catch (err) {}
96
96
  } else {
97
- callback({ error: '请传入监听事件的名称!!' })
97
+ callback({ error: 'please input event name' })
98
98
  }
99
99
  }
100
100
  }
@@ -16,7 +16,6 @@ export function escapeJsonValue(value, isTag) {
16
16
  if (typeof value === 'object' && value) {
17
17
  value = jsonStringify(value)
18
18
  } else if (isTag) {
19
- // tag json 只能是字符串
20
19
  value = '' + value
21
20
  }
22
21
 
@@ -352,7 +352,7 @@ export var getScreenOrientation = function () {
352
352
  screen.msOrientation ||
353
353
  screen.mozOrientation ||
354
354
  (screen.orientation || {}).type
355
- var screenOrientation = '未取到值'
355
+ var screenOrientation = 'unknown'
356
356
  if (screenOrientationAPI) {
357
357
  screenOrientation =
358
358
  screenOrientationAPI.indexOf('landscape') > -1 ? 'landscape' : 'portrait'
@@ -466,14 +466,7 @@ export var formatJsonString = function (obj) {
466
466
  return JSON.stringify(obj)
467
467
  }
468
468
  }
469
- // export var formatString = function (str) {
470
- // if (str.length > MAX_STRING_LENGTH) {
471
- // sd.log('字符串长度超过限制,已经做截取--' + str)
472
- // return str.slice(0, MAX_STRING_LENGTH)
473
- // } else {
474
- // return str
475
- // }
476
- // }
469
+
477
470
  export var searchObjString = function (o) {
478
471
  if (isObject(o)) {
479
472
  each(o, function (a, b) {
@@ -619,7 +612,6 @@ export function UUID(placeholder) {
619
612
  : `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(/[018]/g, UUID)
620
613
  }
621
614
 
622
- // 替换url包含数字的路由
623
615
  export function replaceNumberCharByPath(path) {
624
616
  var pathGroup = ''
625
617
  if (path) {
@@ -962,7 +954,7 @@ export var loadScript = function (para) {
962
954
  }
963
955
  export var getHostname = function (url, defaultValue) {
964
956
  if (!defaultValue || typeof defaultValue !== 'string') {
965
- defaultValue = 'hostname解析异常'
957
+ defaultValue = 'hostname expception!'
966
958
  }
967
959
  var hostname = null
968
960
  try {
@@ -1104,9 +1096,9 @@ export function deepClone(value) {
1104
1096
  export var getCurrentDomain = function (url) {
1105
1097
  var cookieTopLevelDomain = getCookieTopLevelDomain()
1106
1098
  if (url === '') {
1107
- return 'url解析失败'
1099
+ return 'URL parsing failed'
1108
1100
  } else if (cookieTopLevelDomain === '') {
1109
- return 'url解析失败'
1101
+ return 'URL parsing failed'
1110
1102
  } else {
1111
1103
  return cookieTopLevelDomain
1112
1104
  }
@@ -1187,19 +1179,12 @@ export var strip_sa_properties = function (p) {
1187
1179
  if (isString(arrv)) {
1188
1180
  temp.push(arrv)
1189
1181
  } else {
1190
- console.log(
1191
- '您的数据-',
1192
- k,
1193
- v,
1194
- '的数组里的值必须是字符串,已经将其删除'
1195
- )
1196
1182
  }
1197
1183
  })
1198
1184
  if (temp.length !== 0) {
1199
1185
  p[k] = temp
1200
1186
  } else {
1201
1187
  delete p[k]
1202
- console.log('已经删除空的数组')
1203
1188
  }
1204
1189
  }
1205
1190
  if (
@@ -1213,7 +1198,6 @@ export var strip_sa_properties = function (p) {
1213
1198
  k === '$option'
1214
1199
  )
1215
1200
  ) {
1216
- console.log('您的数据-', k, v, '-格式不满足要求,我们已经将其删除')
1217
1201
  delete p[k]
1218
1202
  }
1219
1203
  })
@@ -1229,7 +1213,7 @@ export var searchConfigData = function (data) {
1229
1213
  return {}
1230
1214
  }
1231
1215
  }
1232
- // 从字符串 src 中查找 k+sp 和 e 之间的字符串,如果 k==e 且 k 只有一个,或者 e 不存在,从 k+sp 截取到字符串结束
1216
+
1233
1217
  // abcd=1&b=1&c=3;
1234
1218
  // abdc=1;b=1;a=3;
1235
1219
  export var stringSplice = function (src, k, e, sp) {
@@ -1255,7 +1239,6 @@ export function getStatusGroup(status) {
1255
1239
  export var getReferrer = function () {
1256
1240
  var ref = document.referrer.toLowerCase()
1257
1241
  var re = /^[^\?&#]*.swf([\?#])?/
1258
- // 如果页面 Referer 为空,从 URL 中获取
1259
1242
  if (ref === '' || ref.match(re)) {
1260
1243
  ref = stringSplice(window.location.href, 'ref', '&', '')
1261
1244
  if (ref !== '') {