@cloudcare/browser-core 3.2.29 → 3.2.30

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.
@@ -29,7 +29,7 @@ function createIdentityEncoder() {
29
29
  output: output,
30
30
  outputBytesCount: outputBytesCount,
31
31
  rawBytesCount: outputBytesCount,
32
- pendingData: ''
32
+ pendingData: []
33
33
  };
34
34
  output = '';
35
35
  outputBytesCount = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","names":["_byteUtils","require","createIdentityEncoder","output","outputBytesCount","isAsync","isEmpty","write","data","callback","additionalEncodedBytesCount","computeBytesCount","finish","finishSync","result","rawBytesCount","pendingData","estimateEncodedBytesCount","length"],"sources":["../../src/helper/encoder.js"],"sourcesContent":["import { computeBytesCount } from './byteUtils'\n\nexport function createIdentityEncoder() {\n var output = ''\n var outputBytesCount = 0\n\n return {\n isAsync: false,\n\n isEmpty: function () {\n return !output\n },\n\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data)\n outputBytesCount += additionalEncodedBytesCount\n output += data\n if (callback) {\n callback(additionalEncodedBytesCount)\n }\n },\n\n finish: function (callback) {\n callback(this.finishSync())\n },\n\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: ''\n }\n output = ''\n outputBytesCount = 0\n return result\n },\n\n estimateEncodedBytesCount: function (data) {\n return data.length\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,gBAAgB,GAAG,CAAC;EAExB,OAAO;IACLC,OAAO,EAAE,KAAK;IAEdC,OAAO,EAAE,SAATA,OAAOA,CAAA,EAAc;MACnB,OAAO,CAACH,MAAM;IAChB,CAAC;IAEDI,KAAK,EAAE,SAAPA,KAAKA,CAAYC,IAAI,EAAEC,QAAQ,EAAE;MAC/B,IAAIC,2BAA2B,GAAG,IAAAC,4BAAiB,EAACH,IAAI,CAAC;MACzDJ,gBAAgB,IAAIM,2BAA2B;MAC/CP,MAAM,IAAIK,IAAI;MACd,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACC,2BAA2B,CAAC;MACvC;IACF,CAAC;IAEDE,MAAM,EAAE,SAARA,MAAMA,CAAYH,QAAQ,EAAE;MAC1BA,QAAQ,CAAC,IAAI,CAACI,UAAU,CAAC,CAAC,CAAC;IAC7B,CAAC;IAEDA,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;MACtB,IAAIC,MAAM,GAAG;QACXX,MAAM,EAAEA,MAAM;QACdC,gBAAgB,EAAEA,gBAAgB;QAClCW,aAAa,EAAEX,gBAAgB;QAC/BY,WAAW,EAAE;MACf,CAAC;MACDb,MAAM,GAAG,EAAE;MACXC,gBAAgB,GAAG,CAAC;MACpB,OAAOU,MAAM;IACf,CAAC;IAEDG,yBAAyB,EAAE,SAA3BA,yBAAyBA,CAAYT,IAAI,EAAE;MACzC,OAAOA,IAAI,CAACU,MAAM;IACpB;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"encoder.js","names":["_byteUtils","require","createIdentityEncoder","output","outputBytesCount","isAsync","isEmpty","write","data","callback","additionalEncodedBytesCount","computeBytesCount","finish","finishSync","result","rawBytesCount","pendingData","estimateEncodedBytesCount","length"],"sources":["../../src/helper/encoder.js"],"sourcesContent":["import { computeBytesCount } from './byteUtils'\n\nexport function createIdentityEncoder() {\n var output = ''\n var outputBytesCount = 0\n\n return {\n isAsync: false,\n\n isEmpty: function () {\n return !output\n },\n\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data)\n outputBytesCount += additionalEncodedBytesCount\n output += data\n if (callback) {\n callback(additionalEncodedBytesCount)\n }\n },\n\n finish: function (callback) {\n callback(this.finishSync())\n },\n\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: []\n }\n output = ''\n outputBytesCount = 0\n return result\n },\n\n estimateEncodedBytesCount: function (data) {\n return data.length\n }\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,gBAAgB,GAAG,CAAC;EAExB,OAAO;IACLC,OAAO,EAAE,KAAK;IAEdC,OAAO,EAAE,SAATA,OAAOA,CAAA,EAAc;MACnB,OAAO,CAACH,MAAM;IAChB,CAAC;IAEDI,KAAK,EAAE,SAAPA,KAAKA,CAAYC,IAAI,EAAEC,QAAQ,EAAE;MAC/B,IAAIC,2BAA2B,GAAG,IAAAC,4BAAiB,EAACH,IAAI,CAAC;MACzDJ,gBAAgB,IAAIM,2BAA2B;MAC/CP,MAAM,IAAIK,IAAI;MACd,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACC,2BAA2B,CAAC;MACvC;IACF,CAAC;IAEDE,MAAM,EAAE,SAARA,MAAMA,CAAYH,QAAQ,EAAE;MAC1BA,QAAQ,CAAC,IAAI,CAACI,UAAU,CAAC,CAAC,CAAC;IAC7B,CAAC;IAEDA,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;MACtB,IAAIC,MAAM,GAAG;QACXX,MAAM,EAAEA,MAAM;QACdC,gBAAgB,EAAEA,gBAAgB;QAClCW,aAAa,EAAEX,gBAAgB;QAC/BY,WAAW,EAAE;MACf,CAAC;MACDb,MAAM,GAAG,EAAE;MACXC,gBAAgB,GAAG,CAAC;MACpB,OAAOU,MAAM;IACf,CAAC;IAEDG,yBAAyB,EAAE,SAA3BA,yBAAyBA,CAAYT,IAAI,EAAE;MACzC,OAAOA,IAAI,CAACU,MAAM;IACpB;EACF,CAAC;AACH","ignoreList":[]}
@@ -13,6 +13,12 @@ var _enums = require("../helper/enums");
13
13
  var _byteUtils = require("../helper/byteUtils");
14
14
  var _pageExitObservable = require("../browser/pageExitObservable");
15
15
  var _jsonStringify = require("../helper/serialisation/jsonStringify");
16
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
17
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
19
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
20
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
21
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
16
22
  // https://en.wikipedia.org/wiki/UTF-8
17
23
  // eslint-disable-next-line no-control-regex
18
24
  var CUSTOM_KEYS = 'custom_keys';
@@ -187,9 +193,8 @@ function createBatch(options) {
187
193
  if (encoderResult.outputBytesCount) {
188
194
  send(formatPayloadFromEncoder(encoderResult, sendContentTypeByJson));
189
195
  }
190
-
191
196
  // Send messages that are not yet encoded at this point
192
- var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\n');
197
+ var pendingMessages = [].concat(_toConsumableArray(encoderResult.pendingData), [upsertMessages]).filter(Boolean).join('\n');
193
198
  if (pendingMessages) {
194
199
  send({
195
200
  data: pendingMessages,
@@ -239,9 +244,7 @@ function formatPayloadFromEncoder(encoderResult, sendContentTypeByJson) {
239
244
  data: data,
240
245
  type: sendContentTypeByJson ? 'application/json;UTF-8' : undefined,
241
246
  bytesCount: encoderResult.outputBytesCount,
242
- encoding: encoderResult.encoding,
243
- outputBase64Head: encoderResult.outputBase64Head,
244
- outputBase64Tail: encoderResult.outputBase64Tail
247
+ encoding: encoderResult.encoding
245
248
  };
246
249
  }
247
250
  //# sourceMappingURL=batch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","names":["_display","require","_tools","_rowData","_dataMap","_enums","_byteUtils","_pageExitObservable","_jsonStringify","CUSTOM_KEYS","processedMessageByDataMap","exports","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","each","dataMap","value","key","measurement","tagsStr","extend","commonTags","filterFileds","value_path","_key","_value","findByPath","push","isNumber","escapeJsonValue","escapeRowData","fieldsStr","commonFields","isArray","length","_valueData","escapeRowField","isString","context","isObject","isEmptyObject","_tagKeys","indexOf","RumEventType","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","jsonStringify","addOrUpdate","display","warn","concat","upsertMessages","values","isPageExit","isPageExitReason","reason","send","sendOnExit","isAsync","encoderResult","finishSync","outputBytesCount","formatPayloadFromEncoder","pendingMessages","pendingData","filter","Boolean","data","bytesCount","computeBytesCount","text","finish","add","upsert","stop","unsubscribe","output","Blob","encoding","outputBase64Head","outputBase64Tail"],"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 outputBase64Head: encoderResult.outputBase64Head,\n outputBase64Tail: encoderResult.outputBase64Tail\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"batch.js","names":["_display","require","_tools","_rowData","_dataMap","_enums","_byteUtils","_pageExitObservable","_jsonStringify","_toConsumableArray","r","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","a","_arrayLikeToArray","t","toString","call","slice","constructor","name","Array","from","test","Symbol","iterator","isArray","length","e","n","CUSTOM_KEYS","processedMessageByDataMap","exports","message","type","rowStr","rowData","undefined","tags","fields","hasFileds","each","dataMap","value","key","measurement","tagsStr","extend","commonTags","filterFileds","value_path","_key","_value","findByPath","push","isNumber","escapeJsonValue","escapeRowData","fieldsStr","commonFields","_valueData","escapeRowField","isString","context","isObject","isEmptyObject","_tagKeys","indexOf","RumEventType","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","jsonStringify","addOrUpdate","display","warn","concat","upsertMessages","values","isPageExit","isPageExitReason","reason","send","sendOnExit","isAsync","encoderResult","finishSync","outputBytesCount","formatPayloadFromEncoder","pendingMessages","pendingData","filter","Boolean","data","bytesCount","computeBytesCount","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 // 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":[]}
@@ -90,19 +90,13 @@ function fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse) {
90
90
  keepalive: true,
91
91
  mode: 'cors'
92
92
  };
93
- var headers = {};
93
+ var headers = {
94
+ 'x-client-timestamp': Date.now().toString()
95
+ };
94
96
  if (payload.type) {
95
97
  headers['Content-Type'] = payload.type;
96
98
  }
97
- if (payload.outputBase64Head) {
98
- headers['x-base64-head'] = payload.outputBase64Head;
99
- }
100
- if (payload.outputBase64Tail) {
101
- headers['x-base64-tail'] = payload.outputBase64Tail;
102
- }
103
- if (Object.keys(headers).length) {
104
- fetchOption.headers = headers;
105
- }
99
+ fetchOption.headers = headers;
106
100
  fetch(url, fetchOption).then((0, _monitor.monitor)(function (response) {
107
101
  if (typeof onResponse === 'function') {
108
102
  onResponse({
@@ -134,6 +128,7 @@ function sendXHR(url, payload, onResponse) {
134
128
  } else if (payload.type) {
135
129
  request.setRequestHeader('Content-Type', payload.type);
136
130
  }
131
+ request.setRequestHeader('x-client-timestamp', Date.now().toString());
137
132
  (0, _addEventListener.addEventListener)(request, 'loadend', function () {
138
133
  if (typeof onResponse === 'function') {
139
134
  onResponse({
@@ -152,11 +147,13 @@ function fetchStrategy(url, payload, onResponse) {
152
147
  keepalive: true,
153
148
  mode: 'cors'
154
149
  };
150
+ var headers = {
151
+ 'x-client-timestamp': Date.now().toString()
152
+ };
155
153
  if (payload.type) {
156
- fetchOption.headers = {
157
- 'Content-Type': payload.type
158
- };
154
+ headers['Content-Type'] = payload.type;
159
155
  }
156
+ fetchOption.headers = headers;
160
157
  fetch(url, fetchOption).then((0, _monitor.monitor)(function (response) {
161
158
  if (typeof onResponse === 'function') {
162
159
  onResponse({
@@ -1 +1 @@
1
- {"version":3,"file":"httpRequest.js","names":["_sendWithRetryStrategy","require","_addEventListener","_monitor","_telemetry","addBatchPrecision","url","encoding","indexOf","createHttpRequest","endpointUrl","bytesLimit","retryMaxSize","reportError","undefined","retryState","newRetryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendWithRetryStrategy","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","type","Blob","isQueued","e","reportBeaconError","sendXHR","hasReportedBeaconError","addTelemetryError","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","outputBase64Head","outputBase64Tail","Object","keys","length","fetch","then","monitor","response","status","fetchStrategy","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","addEventListener","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\nimport { addTelemetryError } from '../telemetry/telemetry'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url, encoding) {\n if (!url) return url\n url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n if (encoding) {\n url = url + '&encoding=' + encoding\n }\n return url\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n retryMaxSize,\n reportError\n) {\n if (retryMaxSize === undefined) {\n retryMaxSize = -1\n }\n var retryState = newRetryState(retryMaxSize)\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (payload.type) {\n beaconData = new Blob([data], {\n type: payload.type\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n sendXHR(url, payload)\n}\nvar hasReportedBeaconError = false\n\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {}\n\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n if (payload.outputBase64Head) {\n headers['x-base64-head'] = payload.outputBase64Head\n }\n if (payload.outputBase64Tail) {\n headers['x-base64-tail'] = payload.outputBase64Tail\n }\n if (Object.keys(headers).length) {\n fetchOption.headers = headers\n }\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n fetchStrategy(url, payload, onResponse)\n })\n )\n } else {\n sendXHR(url, payload, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, payload, onResponse) {\n const data = payload.data\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n request.setRequestHeader('Content-Type', data.type)\n } else if (payload.type) {\n request.setRequestHeader('Content-Type', payload.type)\n }\n\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\nfunction fetchStrategy(url, payload, onResponse) {\n const fetchOption = {\n method: 'POST',\n body: payload.data,\n keepalive: true,\n mode: 'cors'\n }\n if (payload.type) {\n fetchOption.headers = {\n 'Content-Type': payload.type\n }\n }\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: 0 })\n }\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"httpRequest.js","names":["_sendWithRetryStrategy","require","_addEventListener","_monitor","_telemetry","addBatchPrecision","url","encoding","indexOf","createHttpRequest","endpointUrl","bytesLimit","retryMaxSize","reportError","undefined","retryState","newRetryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendWithRetryStrategy","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","type","Blob","isQueued","e","reportBeaconError","sendXHR","hasReportedBeaconError","addTelemetryError","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","Date","now","toString","fetch","then","monitor","response","status","fetchStrategy","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","addEventListener","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\nimport { addTelemetryError } from '../telemetry/telemetry'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url, encoding) {\n if (!url) return url\n url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n if (encoding) {\n url = url + '&encoding=' + encoding\n }\n return url\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n retryMaxSize,\n reportError\n) {\n if (retryMaxSize === undefined) {\n retryMaxSize = -1\n }\n var retryState = newRetryState(retryMaxSize)\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (payload.type) {\n beaconData = new Blob([data], {\n type: payload.type\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n sendXHR(url, payload)\n}\nvar hasReportedBeaconError = false\n\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n\n fetchOption.headers = headers\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n fetchStrategy(url, payload, onResponse)\n })\n )\n } else {\n sendXHR(url, payload, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, payload, onResponse) {\n const data = payload.data\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n request.setRequestHeader('Content-Type', data.type)\n } else if (payload.type) {\n request.setRequestHeader('Content-Type', payload.type)\n }\n request.setRequestHeader('x-client-timestamp', Date.now().toString())\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\nfunction fetchStrategy(url, payload, onResponse) {\n const fetchOption = {\n method: 'POST',\n body: payload.data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n fetchOption.headers = headers\n\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: 0 })\n }\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -23,7 +23,7 @@ export function createIdentityEncoder() {
23
23
  output: output,
24
24
  outputBytesCount: outputBytesCount,
25
25
  rawBytesCount: outputBytesCount,
26
- pendingData: ''
26
+ pendingData: []
27
27
  };
28
28
  output = '';
29
29
  outputBytesCount = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.js","names":["computeBytesCount","createIdentityEncoder","output","outputBytesCount","isAsync","isEmpty","write","data","callback","additionalEncodedBytesCount","finish","finishSync","result","rawBytesCount","pendingData","estimateEncodedBytesCount","length"],"sources":["../../src/helper/encoder.js"],"sourcesContent":["import { computeBytesCount } from './byteUtils'\n\nexport function createIdentityEncoder() {\n var output = ''\n var outputBytesCount = 0\n\n return {\n isAsync: false,\n\n isEmpty: function () {\n return !output\n },\n\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data)\n outputBytesCount += additionalEncodedBytesCount\n output += data\n if (callback) {\n callback(additionalEncodedBytesCount)\n }\n },\n\n finish: function (callback) {\n callback(this.finishSync())\n },\n\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: ''\n }\n output = ''\n outputBytesCount = 0\n return result\n },\n\n estimateEncodedBytesCount: function (data) {\n return data.length\n }\n }\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,aAAa;AAE/C,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,gBAAgB,GAAG,CAAC;EAExB,OAAO;IACLC,OAAO,EAAE,KAAK;IAEdC,OAAO,EAAE,SAATA,OAAOA,CAAA,EAAc;MACnB,OAAO,CAACH,MAAM;IAChB,CAAC;IAEDI,KAAK,EAAE,SAAPA,KAAKA,CAAYC,IAAI,EAAEC,QAAQ,EAAE;MAC/B,IAAIC,2BAA2B,GAAGT,iBAAiB,CAACO,IAAI,CAAC;MACzDJ,gBAAgB,IAAIM,2BAA2B;MAC/CP,MAAM,IAAIK,IAAI;MACd,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACC,2BAA2B,CAAC;MACvC;IACF,CAAC;IAEDC,MAAM,EAAE,SAARA,MAAMA,CAAYF,QAAQ,EAAE;MAC1BA,QAAQ,CAAC,IAAI,CAACG,UAAU,CAAC,CAAC,CAAC;IAC7B,CAAC;IAEDA,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;MACtB,IAAIC,MAAM,GAAG;QACXV,MAAM,EAAEA,MAAM;QACdC,gBAAgB,EAAEA,gBAAgB;QAClCU,aAAa,EAAEV,gBAAgB;QAC/BW,WAAW,EAAE;MACf,CAAC;MACDZ,MAAM,GAAG,EAAE;MACXC,gBAAgB,GAAG,CAAC;MACpB,OAAOS,MAAM;IACf,CAAC;IAEDG,yBAAyB,EAAE,SAA3BA,yBAAyBA,CAAYR,IAAI,EAAE;MACzC,OAAOA,IAAI,CAACS,MAAM;IACpB;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"encoder.js","names":["computeBytesCount","createIdentityEncoder","output","outputBytesCount","isAsync","isEmpty","write","data","callback","additionalEncodedBytesCount","finish","finishSync","result","rawBytesCount","pendingData","estimateEncodedBytesCount","length"],"sources":["../../src/helper/encoder.js"],"sourcesContent":["import { computeBytesCount } from './byteUtils'\n\nexport function createIdentityEncoder() {\n var output = ''\n var outputBytesCount = 0\n\n return {\n isAsync: false,\n\n isEmpty: function () {\n return !output\n },\n\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data)\n outputBytesCount += additionalEncodedBytesCount\n output += data\n if (callback) {\n callback(additionalEncodedBytesCount)\n }\n },\n\n finish: function (callback) {\n callback(this.finishSync())\n },\n\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: []\n }\n output = ''\n outputBytesCount = 0\n return result\n },\n\n estimateEncodedBytesCount: function (data) {\n return data.length\n }\n }\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,aAAa;AAE/C,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIC,MAAM,GAAG,EAAE;EACf,IAAIC,gBAAgB,GAAG,CAAC;EAExB,OAAO;IACLC,OAAO,EAAE,KAAK;IAEdC,OAAO,EAAE,SAATA,OAAOA,CAAA,EAAc;MACnB,OAAO,CAACH,MAAM;IAChB,CAAC;IAEDI,KAAK,EAAE,SAAPA,KAAKA,CAAYC,IAAI,EAAEC,QAAQ,EAAE;MAC/B,IAAIC,2BAA2B,GAAGT,iBAAiB,CAACO,IAAI,CAAC;MACzDJ,gBAAgB,IAAIM,2BAA2B;MAC/CP,MAAM,IAAIK,IAAI;MACd,IAAIC,QAAQ,EAAE;QACZA,QAAQ,CAACC,2BAA2B,CAAC;MACvC;IACF,CAAC;IAEDC,MAAM,EAAE,SAARA,MAAMA,CAAYF,QAAQ,EAAE;MAC1BA,QAAQ,CAAC,IAAI,CAACG,UAAU,CAAC,CAAC,CAAC;IAC7B,CAAC;IAEDA,UAAU,EAAE,SAAZA,UAAUA,CAAA,EAAc;MACtB,IAAIC,MAAM,GAAG;QACXV,MAAM,EAAEA,MAAM;QACdC,gBAAgB,EAAEA,gBAAgB;QAClCU,aAAa,EAAEV,gBAAgB;QAC/BW,WAAW,EAAE;MACf,CAAC;MACDZ,MAAM,GAAG,EAAE;MACXC,gBAAgB,GAAG,CAAC;MACpB,OAAOS,MAAM;IACf,CAAC;IAEDG,yBAAyB,EAAE,SAA3BA,yBAAyBA,CAAYR,IAAI,EAAE;MACzC,OAAOA,IAAI,CAACS,MAAM;IACpB;EACF,CAAC;AACH","ignoreList":[]}
@@ -1,3 +1,9 @@
1
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1
7
  import { display } from '../helper/display';
2
8
  import { values, findByPath, each, isNumber, isArray, extend, isString, isEmptyObject, isObject } from '../helper/tools';
3
9
  import { escapeJsonValue, escapeRowField, escapeRowData } from '../helper/serialisation/rowData';
@@ -180,9 +186,8 @@ export function createBatch(options) {
180
186
  if (encoderResult.outputBytesCount) {
181
187
  send(formatPayloadFromEncoder(encoderResult, sendContentTypeByJson));
182
188
  }
183
-
184
189
  // Send messages that are not yet encoded at this point
185
- var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\n');
190
+ var pendingMessages = [].concat(_toConsumableArray(encoderResult.pendingData), [upsertMessages]).filter(Boolean).join('\n');
186
191
  if (pendingMessages) {
187
192
  send({
188
193
  data: pendingMessages,
@@ -232,9 +237,7 @@ function formatPayloadFromEncoder(encoderResult, sendContentTypeByJson) {
232
237
  data: data,
233
238
  type: sendContentTypeByJson ? 'application/json;UTF-8' : undefined,
234
239
  bytesCount: encoderResult.outputBytesCount,
235
- encoding: encoderResult.encoding,
236
- outputBase64Head: encoderResult.outputBase64Head,
237
- outputBase64Tail: encoderResult.outputBase64Tail
240
+ encoding: encoderResult.encoding
238
241
  };
239
242
  }
240
243
  //# sourceMappingURL=batch.js.map
@@ -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","outputBase64Head","outputBase64Tail"],"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 outputBase64Head: encoderResult.outputBase64Head,\n outputBase64Tail: encoderResult.outputBase64Tail\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","_toConsumableArray","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 // 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":[]}
@@ -83,19 +83,13 @@ export function fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onRespo
83
83
  keepalive: true,
84
84
  mode: 'cors'
85
85
  };
86
- var headers = {};
86
+ var headers = {
87
+ 'x-client-timestamp': Date.now().toString()
88
+ };
87
89
  if (payload.type) {
88
90
  headers['Content-Type'] = payload.type;
89
91
  }
90
- if (payload.outputBase64Head) {
91
- headers['x-base64-head'] = payload.outputBase64Head;
92
- }
93
- if (payload.outputBase64Tail) {
94
- headers['x-base64-tail'] = payload.outputBase64Tail;
95
- }
96
- if (Object.keys(headers).length) {
97
- fetchOption.headers = headers;
98
- }
92
+ fetchOption.headers = headers;
99
93
  fetch(url, fetchOption).then(monitor(function (response) {
100
94
  if (typeof onResponse === 'function') {
101
95
  onResponse({
@@ -127,6 +121,7 @@ function sendXHR(url, payload, onResponse) {
127
121
  } else if (payload.type) {
128
122
  request.setRequestHeader('Content-Type', payload.type);
129
123
  }
124
+ request.setRequestHeader('x-client-timestamp', Date.now().toString());
130
125
  addEventListener(request, 'loadend', function () {
131
126
  if (typeof onResponse === 'function') {
132
127
  onResponse({
@@ -145,11 +140,13 @@ function fetchStrategy(url, payload, onResponse) {
145
140
  keepalive: true,
146
141
  mode: 'cors'
147
142
  };
143
+ var headers = {
144
+ 'x-client-timestamp': Date.now().toString()
145
+ };
148
146
  if (payload.type) {
149
- fetchOption.headers = {
150
- 'Content-Type': payload.type
151
- };
147
+ headers['Content-Type'] = payload.type;
152
148
  }
149
+ fetchOption.headers = headers;
153
150
  fetch(url, fetchOption).then(monitor(function (response) {
154
151
  if (typeof onResponse === 'function') {
155
152
  onResponse({
@@ -1 +1 @@
1
- {"version":3,"file":"httpRequest.js","names":["newRetryState","sendWithRetryStrategy","addEventListener","monitor","addTelemetryError","addBatchPrecision","url","encoding","indexOf","createHttpRequest","endpointUrl","bytesLimit","retryMaxSize","reportError","undefined","retryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","type","Blob","isQueued","e","reportBeaconError","sendXHR","hasReportedBeaconError","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","outputBase64Head","outputBase64Tail","Object","keys","length","fetch","then","response","status","fetchStrategy","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\nimport { addTelemetryError } from '../telemetry/telemetry'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url, encoding) {\n if (!url) return url\n url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n if (encoding) {\n url = url + '&encoding=' + encoding\n }\n return url\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n retryMaxSize,\n reportError\n) {\n if (retryMaxSize === undefined) {\n retryMaxSize = -1\n }\n var retryState = newRetryState(retryMaxSize)\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (payload.type) {\n beaconData = new Blob([data], {\n type: payload.type\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n sendXHR(url, payload)\n}\nvar hasReportedBeaconError = false\n\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {}\n\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n if (payload.outputBase64Head) {\n headers['x-base64-head'] = payload.outputBase64Head\n }\n if (payload.outputBase64Tail) {\n headers['x-base64-tail'] = payload.outputBase64Tail\n }\n if (Object.keys(headers).length) {\n fetchOption.headers = headers\n }\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n fetchStrategy(url, payload, onResponse)\n })\n )\n } else {\n sendXHR(url, payload, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, payload, onResponse) {\n const data = payload.data\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n request.setRequestHeader('Content-Type', data.type)\n } else if (payload.type) {\n request.setRequestHeader('Content-Type', payload.type)\n }\n\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\nfunction fetchStrategy(url, payload, onResponse) {\n const fetchOption = {\n method: 'POST',\n body: payload.data,\n keepalive: true,\n mode: 'cors'\n }\n if (payload.type) {\n fetchOption.headers = {\n 'Content-Type': payload.type\n }\n }\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: 0 })\n }\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"httpRequest.js","names":["newRetryState","sendWithRetryStrategy","addEventListener","monitor","addTelemetryError","addBatchPrecision","url","encoding","indexOf","createHttpRequest","endpointUrl","bytesLimit","retryMaxSize","reportError","undefined","retryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","type","Blob","isQueued","e","reportBeaconError","sendXHR","hasReportedBeaconError","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","Date","now","toString","fetch","then","response","status","fetchStrategy","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\nimport { addTelemetryError } from '../telemetry/telemetry'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url, encoding) {\n if (!url) return url\n url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n if (encoding) {\n url = url + '&encoding=' + encoding\n }\n return url\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n retryMaxSize,\n reportError\n) {\n if (retryMaxSize === undefined) {\n retryMaxSize = -1\n }\n var retryState = newRetryState(retryMaxSize)\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (payload.type) {\n beaconData = new Blob([data], {\n type: payload.type\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n sendXHR(url, payload)\n}\nvar hasReportedBeaconError = false\n\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n\n fetchOption.headers = headers\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n fetchStrategy(url, payload, onResponse)\n })\n )\n } else {\n sendXHR(url, payload, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, payload, onResponse) {\n const data = payload.data\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n request.setRequestHeader('Content-Type', data.type)\n } else if (payload.type) {\n request.setRequestHeader('Content-Type', payload.type)\n }\n request.setRequestHeader('x-client-timestamp', Date.now().toString())\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\nfunction fetchStrategy(url, payload, onResponse) {\n const fetchOption = {\n method: 'POST',\n body: payload.data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n fetchOption.headers = headers\n\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: 0 })\n }\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "3.2.29",
3
+ "version": "3.2.30",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "types/index.d.ts",
@@ -21,5 +21,5 @@
21
21
  },
22
22
  "author": "dataflux",
23
23
  "license": "MIT",
24
- "gitHead": "c00a63dc2a909293f5001ed01ed11ce1d92383df"
24
+ "gitHead": "64d182d1a5d825ee8eb708fa6cd5eb15ac0a5f52"
25
25
  }
@@ -29,7 +29,7 @@ export function createIdentityEncoder() {
29
29
  output: output,
30
30
  outputBytesCount: outputBytesCount,
31
31
  rawBytesCount: outputBytesCount,
32
- pendingData: ''
32
+ pendingData: []
33
33
  }
34
34
  output = ''
35
35
  outputBytesCount = 0
@@ -234,9 +234,8 @@ export function createBatch(options) {
234
234
  if (encoderResult.outputBytesCount) {
235
235
  send(formatPayloadFromEncoder(encoderResult, sendContentTypeByJson))
236
236
  }
237
-
238
237
  // Send messages that are not yet encoded at this point
239
- var pendingMessages = [encoderResult.pendingData, upsertMessages]
238
+ var pendingMessages = [...encoderResult.pendingData, upsertMessages]
240
239
  .filter(Boolean)
241
240
  .join('\n')
242
241
 
@@ -292,8 +291,6 @@ function formatPayloadFromEncoder(encoderResult, sendContentTypeByJson) {
292
291
  data: data,
293
292
  type: sendContentTypeByJson ? 'application/json;UTF-8' : undefined,
294
293
  bytesCount: encoderResult.outputBytesCount,
295
- encoding: encoderResult.encoding,
296
- outputBase64Head: encoderResult.outputBase64Head,
297
- outputBase64Tail: encoderResult.outputBase64Tail
294
+ encoding: encoderResult.encoding
298
295
  }
299
296
  }
@@ -104,20 +104,15 @@ export function fetchKeepAliveStrategy(
104
104
  keepalive: true,
105
105
  mode: 'cors'
106
106
  }
107
- const headers = {}
107
+ const headers = {
108
+ 'x-client-timestamp': Date.now().toString()
109
+ }
108
110
 
109
111
  if (payload.type) {
110
112
  headers['Content-Type'] = payload.type
111
113
  }
112
- if (payload.outputBase64Head) {
113
- headers['x-base64-head'] = payload.outputBase64Head
114
- }
115
- if (payload.outputBase64Tail) {
116
- headers['x-base64-tail'] = payload.outputBase64Tail
117
- }
118
- if (Object.keys(headers).length) {
119
- fetchOption.headers = headers
120
- }
114
+
115
+ fetchOption.headers = headers
121
116
  fetch(url, fetchOption)
122
117
  .then(
123
118
  monitor(function (response) {
@@ -154,7 +149,7 @@ function sendXHR(url, payload, onResponse) {
154
149
  } else if (payload.type) {
155
150
  request.setRequestHeader('Content-Type', payload.type)
156
151
  }
157
-
152
+ request.setRequestHeader('x-client-timestamp', Date.now().toString())
158
153
  addEventListener(
159
154
  request,
160
155
  'loadend',
@@ -176,11 +171,14 @@ function fetchStrategy(url, payload, onResponse) {
176
171
  keepalive: true,
177
172
  mode: 'cors'
178
173
  }
174
+ const headers = {
175
+ 'x-client-timestamp': Date.now().toString()
176
+ }
179
177
  if (payload.type) {
180
- fetchOption.headers = {
181
- 'Content-Type': payload.type
182
- }
178
+ headers['Content-Type'] = payload.type
183
179
  }
180
+ fetchOption.headers = headers
181
+
184
182
  fetch(url, fetchOption)
185
183
  .then(
186
184
  monitor(function (response) {