@microsoft/applicationinsights-channel-js 2.8.0-beta.2203-04 → 2.8.0-beta.2203-05
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/applicationinsights-channel-js.integrity.json +9 -9
- package/browser/applicationinsights-channel-js.js +287 -105
- package/browser/applicationinsights-channel-js.js.map +1 -1
- package/browser/applicationinsights-channel-js.min.js +2 -2
- package/browser/applicationinsights-channel-js.min.js.map +1 -1
- package/dist/applicationinsights-channel-js.d.ts +1 -1
- package/dist/applicationinsights-channel-js.js +287 -105
- package/dist/applicationinsights-channel-js.js.map +1 -1
- package/dist/applicationinsights-channel-js.min.js +2 -2
- package/dist/applicationinsights-channel-js.min.js.map +1 -1
- package/dist/applicationinsights-channel-js.rollup.d.ts +1 -1
- package/dist-esm/EnvelopeCreator.js +2 -2
- package/dist-esm/EnvelopeCreator.js.map +1 -1
- package/dist-esm/Interfaces.js +1 -1
- package/dist-esm/Offline.js +77 -65
- package/dist-esm/Offline.js.map +1 -1
- package/dist-esm/SendBuffer.js +1 -1
- package/dist-esm/Sender.js +66 -59
- package/dist-esm/Sender.js.map +1 -1
- package/dist-esm/Serializer.js +1 -1
- package/dist-esm/TelemetryProcessors/Sample.js +1 -1
- package/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js +1 -1
- package/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js +1 -1
- package/dist-esm/applicationinsights-channel-js.js +1 -1
- package/package.json +3 -3
- package/src/EnvelopeCreator.ts +1 -1
- package/src/Offline.ts +88 -76
- package/src/Sender.ts +68 -75
- package/types/Offline.d.ts +8 -11
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
import { __assignFn as __assign } from "@microsoft/applicationinsights-shims";
|
|
@@ -141,7 +141,7 @@ function EnvelopeCreatorInit(logger, telemetryItem) {
|
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
export var EnvelopeCreator = {
|
|
144
|
-
Version: "2.8.0-beta.2203-
|
|
144
|
+
Version: "2.8.0-beta.2203-05"
|
|
145
145
|
};
|
|
146
146
|
export function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
|
|
147
147
|
EnvelopeCreatorInit(logger, telemetryItem);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnvelopeCreator.js.map","sources":["EnvelopeCreator.js"],"sourcesContent":["import { __assign } from \"tslib\";\r\nimport { Data, Envelope, RemoteDependencyData, Event, Exception, Metric, PageView, Trace, PageViewPerformance, CtxTagKeys, HttpMethod, SampleRate, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { LoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isNullOrUndefined, isNumber, isString, toISOString, setValue, isTruthy, optimizeObject } from \"@microsoft/applicationinsights-core-js\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env.tags = env.tags || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item.tags = item.tags || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceType);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env.data = env.data || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs.name);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace.name));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace.traceID);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags.length - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env.tags = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON().stringify(value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope.name = envelope.name.replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem.tags = telemetryItem.tags || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: \"2.8.0-beta.2203-04\"\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n logger.warnToConsole(\"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd.name, bd.duration, bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData.dataType, remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData.envelopeType, telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event.dataType) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event.dataType) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData].name;\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event.dataType, eventData);\r\n return _createEnvelope(logger, Event.envelopeType, telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception.dataType, exData);\r\n return _createEnvelope(logger, Exception.envelopeType, telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData.name, baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric.dataType, baseMetricData);\r\n return _createEnvelope(logger, Metric.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var strDuration = \"duration\";\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][strDuration])) { // from part B properties\r\n duration = baseData[strProperties][strDuration];\r\n delete baseData[strProperties][strDuration];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem.data) &&\r\n !isNullOrUndefined(telemetryItem.data[strDuration])) { // from custom properties\r\n duration = telemetryItem.data[strDuration];\r\n delete telemetryItem.data[strDuration];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {}).traceID) {\r\n currentContextId = telemetryItem.ext.trace.traceID;\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd.name;\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn.toString();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView.dataType, pageViewData);\r\n return _createEnvelope(logger, PageView.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd.name;\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance.dataType, baseData);\r\n return _createEnvelope(logger, PageViewPerformance.envelopeType, telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData].measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace.dataType, baseData);\r\n return _createEnvelope(logger, Trace.envelopeType, telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map"],"names":[],"mappings":";;;;AAAA,8EAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"EnvelopeCreator.js.map","sources":["EnvelopeCreator.js"],"sourcesContent":["import { __assign } from \"tslib\";\r\nimport { Data, Envelope, RemoteDependencyData, Event, Exception, Metric, PageView, Trace, PageViewPerformance, CtxTagKeys, HttpMethod, SampleRate, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { LoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isNullOrUndefined, isNumber, isString, toISOString, setValue, isTruthy, optimizeObject } from \"@microsoft/applicationinsights-core-js\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env.tags = env.tags || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item.tags = item.tags || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys.deviceType, extDevice.deviceType);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env.data = env.data || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs.name);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace.name));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace.traceID);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags.length - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env.tags = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON().stringify(value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope.name = envelope.name.replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem.tags = telemetryItem.tags || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n logger.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryEnvelopeInvalid, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: \"2.8.0-beta.2203-05\"\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n logger.warnToConsole(\"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd.name, bd.duration, bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData.dataType, remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData.envelopeType, telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event.dataType) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event.dataType) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData].name;\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event.dataType, eventData);\r\n return _createEnvelope(logger, Event.envelopeType, telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData].measurements || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception.dataType, exData);\r\n return _createEnvelope(logger, Exception.envelopeType, telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData.name, baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric.dataType, baseMetricData);\r\n return _createEnvelope(logger, Metric.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var strDuration = \"duration\";\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][strDuration])) { // from part B properties\r\n duration = baseData[strProperties][strDuration];\r\n delete baseData[strProperties][strDuration];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem.data) &&\r\n !isNullOrUndefined(telemetryItem.data[strDuration])) { // from custom properties\r\n duration = telemetryItem.data[strDuration];\r\n delete telemetryItem.data[strDuration];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {}).traceID) {\r\n currentContextId = telemetryItem.ext.trace.traceID;\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd.name;\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn.toString();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView.dataType, pageViewData);\r\n return _createEnvelope(logger, PageView.envelopeType, telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd.name;\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd.measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance.dataType, baseData);\r\n return _createEnvelope(logger, PageViewPerformance.envelopeType, telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData].measurements || {};\r\n _extractPropsAndMeasurements(telemetryItem.data, props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace.dataType, baseData);\r\n return _createEnvelope(logger, Trace.envelopeType, telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map"],"names":[],"mappings":";;;;AAAA,8EAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
package/dist-esm/Interfaces.js
CHANGED
package/dist-esm/Offline.js
CHANGED
|
@@ -1,77 +1,89 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
|
-
import { getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined,
|
|
6
|
-
|
|
5
|
+
import { getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined, createUniqueNamespace, mergeEvtNamespace, eventOn, eventOff } from "@microsoft/applicationinsights-core-js";
|
|
6
|
+
function _disableEvents(target, evtNamespace) {
|
|
7
|
+
eventOff(target, null, null, evtNamespace);
|
|
8
|
+
}
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
9
|
-
* @
|
|
10
|
-
* @class OfflineListener
|
|
10
|
+
* Create a new OfflineListener instance to monitor browser online / offline events
|
|
11
|
+
* @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
var target = _document.body || _document;
|
|
29
|
-
if (!isUndefined(target.ononline)) {
|
|
30
|
-
target.ononline = _setOnline;
|
|
31
|
-
target.onoffline = _setOffline;
|
|
32
|
-
isListening = true;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (isListening) {
|
|
36
|
-
// We are listening to events so lets set the current status rather than assuming we are online #1538
|
|
37
|
-
var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global
|
|
38
|
-
if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native
|
|
39
|
-
_onlineStatus = _navigator.onLine;
|
|
40
|
-
}
|
|
13
|
+
export function createOfflineListener(parentEvtNamespace) {
|
|
14
|
+
var _document = getDocument();
|
|
15
|
+
var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global
|
|
16
|
+
var _isListening = false;
|
|
17
|
+
var _onlineStatus = true;
|
|
18
|
+
var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("OfflineListener"), parentEvtNamespace);
|
|
19
|
+
try {
|
|
20
|
+
if (_enableEvents(getWindow())) {
|
|
21
|
+
_isListening = true;
|
|
22
|
+
}
|
|
23
|
+
if (_document) {
|
|
24
|
+
// Also attach to the document.body or document
|
|
25
|
+
var target = _document.body || _document;
|
|
26
|
+
if (target.ononline) {
|
|
27
|
+
if (_enableEvents(target)) {
|
|
28
|
+
_isListening = true;
|
|
41
29
|
}
|
|
42
30
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
31
|
+
}
|
|
32
|
+
if (_isListening) {
|
|
33
|
+
// We are listening to events so lets set the current status rather than assuming we are online #1538
|
|
34
|
+
if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native
|
|
35
|
+
_onlineStatus = _navigator.onLine;
|
|
46
36
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
_self.isOffline = function () {
|
|
60
|
-
return !_self.isOnline();
|
|
61
|
-
};
|
|
62
|
-
function _setOnline() {
|
|
63
|
-
_onlineStatus = true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
// this makes react-native less angry
|
|
41
|
+
_isListening = false;
|
|
42
|
+
}
|
|
43
|
+
function _enableEvents(target) {
|
|
44
|
+
var enabled = false;
|
|
45
|
+
if (target) {
|
|
46
|
+
enabled = eventOn(target, "online", _setOnline, _evtNamespace);
|
|
47
|
+
if (enabled) {
|
|
48
|
+
eventOn(target, "offline", _setOffline, _evtNamespace);
|
|
64
49
|
}
|
|
65
|
-
|
|
66
|
-
|
|
50
|
+
}
|
|
51
|
+
return enabled;
|
|
52
|
+
}
|
|
53
|
+
function _setOnline() {
|
|
54
|
+
_onlineStatus = true;
|
|
55
|
+
}
|
|
56
|
+
function _setOffline() {
|
|
57
|
+
_onlineStatus = false;
|
|
58
|
+
}
|
|
59
|
+
function _isOnline() {
|
|
60
|
+
var result = true;
|
|
61
|
+
if (_isListening) {
|
|
62
|
+
result = _onlineStatus;
|
|
63
|
+
}
|
|
64
|
+
else if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native
|
|
65
|
+
result = _navigator.onLine;
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
function _unload() {
|
|
70
|
+
var win = getWindow();
|
|
71
|
+
if (win && _isListening) {
|
|
72
|
+
_disableEvents(win, _evtNamespace);
|
|
73
|
+
if (_document) {
|
|
74
|
+
// Also attach to the document.body or document
|
|
75
|
+
var target = _document.body || _document;
|
|
76
|
+
if (!isUndefined(target.ononline)) {
|
|
77
|
+
_disableEvents(target, _evtNamespace);
|
|
78
|
+
}
|
|
67
79
|
}
|
|
68
|
-
|
|
80
|
+
_isListening = false;
|
|
81
|
+
}
|
|
69
82
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export var Offline = OfflineListener.Offline;
|
|
83
|
+
return {
|
|
84
|
+
isOnline: _isOnline,
|
|
85
|
+
isListening: function () { return _isListening; },
|
|
86
|
+
unload: _unload
|
|
87
|
+
};
|
|
88
|
+
}
|
|
77
89
|
//# sourceMappingURL=Offline.js.map
|
package/dist-esm/Offline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Offline.js.map","sources":["Offline.js"],"sourcesContent":["import { getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined,
|
|
1
|
+
{"version":3,"file":"Offline.js.map","sources":["Offline.js"],"sourcesContent":["import { getWindow, getDocument, getNavigator, isUndefined, isNullOrUndefined, createUniqueNamespace, mergeEvtNamespace, eventOn, eventOff } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator.onLine;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator.onLine)) { // navigator.onLine is undefined in react-native\r\n result = _navigator.onLine;\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return {\r\n isOnline: _isOnline,\r\n isListening: function () { return _isListening; },\r\n unload: _unload\r\n };\r\n}\r\n//# sourceMappingURL=Offline.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
package/dist-esm/SendBuffer.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
import { __extendsFn as __extends } from "@microsoft/applicationinsights-shims";
|
package/dist-esm/Sender.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-
|
|
2
|
+
* Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
var _a;
|
|
@@ -8,8 +8,8 @@ import { SessionStorageSendBuffer, ArraySendBuffer } from "./SendBuffer";
|
|
|
8
8
|
import { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from "./EnvelopeCreator";
|
|
9
9
|
import { Serializer } from "./Serializer"; // todo move to channel
|
|
10
10
|
import { DisabledPropertyName, RequestHeaders, PageView, Event, Trace, Exception, Metric, PageViewPerformance, RemoteDependencyData, ProcessLegacy, BreezeChannelIdentifier, SampleRate, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from "@microsoft/applicationinsights-common";
|
|
11
|
-
import { _InternalMessageId, LoggingSeverity, getWindow, getNavigator, getJSON, BaseTelemetryPlugin, objForEachKey, isNullOrUndefined, arrForEach, dateNow, dumpObj, getExceptionName, getIEVersion,
|
|
12
|
-
import {
|
|
11
|
+
import { _InternalMessageId, LoggingSeverity, getWindow, getNavigator, getJSON, BaseTelemetryPlugin, objForEachKey, isNullOrUndefined, arrForEach, dateNow, dumpObj, getExceptionName, getIEVersion, objKeys, isBeaconsSupported, isFetchSupported, useXDomainRequest, isXhrSupported, isArray, createUniqueNamespace, mergeEvtNamespace, _throwInternal } from "@microsoft/applicationinsights-core-js";
|
|
12
|
+
import { createOfflineListener } from "./Offline";
|
|
13
13
|
import { Sample } from "./TelemetryProcessors/Sample";
|
|
14
14
|
import dynamicProto from "@microsoft/dynamicproto-js";
|
|
15
15
|
var FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)
|
|
@@ -60,43 +60,25 @@ var Sender = /** @class */ (function (_super) {
|
|
|
60
60
|
_this.priority = 1001;
|
|
61
61
|
_this.identifier = BreezeChannelIdentifier;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* The configuration for this sender instance
|
|
64
64
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
*/
|
|
73
|
-
var _lastSend;
|
|
74
|
-
/**
|
|
75
|
-
* Flag indicating that the sending should be paused
|
|
76
|
-
*/
|
|
77
|
-
var _paused = false;
|
|
78
|
-
/**
|
|
79
|
-
* Handle to the timer for delayed sending of batches of data.
|
|
80
|
-
*/
|
|
81
|
-
var _timeoutHandle;
|
|
65
|
+
_this._senderConfig = _getDefaultAppInsightsChannelConfig();
|
|
66
|
+
// Don't set the defaults here, set them in the _initDefaults() as this is also called during unload
|
|
67
|
+
var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.
|
|
68
|
+
var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).
|
|
69
|
+
var _lastSend; // The time of the last send operation.
|
|
70
|
+
var _paused; // Flag indicating that the sending should be paused
|
|
71
|
+
var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.
|
|
82
72
|
var _serializer;
|
|
83
73
|
var _stamp_specific_redirects;
|
|
84
|
-
var _headers
|
|
85
|
-
// Keep track of the outstanding sync fetch payload total (as sync fetch has limits)
|
|
86
|
-
var
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
var _fallbackSender;
|
|
91
|
-
/**
|
|
92
|
-
* The identified sender to use for the synchronous unload stage
|
|
93
|
-
*/
|
|
94
|
-
var _syncUnloadSender;
|
|
95
|
-
_this._senderConfig = _getDefaultAppInsightsChannelConfig();
|
|
74
|
+
var _headers;
|
|
75
|
+
var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)
|
|
76
|
+
var _fallbackSender; // The sender to use if the payload size is too large
|
|
77
|
+
var _syncUnloadSender; // The identified sender to use for the synchronous unload stage
|
|
78
|
+
var _offlineListener;
|
|
79
|
+
var _evtNamespace;
|
|
96
80
|
dynamicProto(Sender, _this, function (_self, _base) {
|
|
97
|
-
|
|
98
|
-
throwError("Method not implemented.");
|
|
99
|
-
}
|
|
81
|
+
_initDefaults();
|
|
100
82
|
_self.pause = function () {
|
|
101
83
|
_clearScheduledTimer();
|
|
102
84
|
_paused = true;
|
|
@@ -121,7 +103,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
121
103
|
_self.triggerSend(isAsync, null, sendReason || 1 /* ManualFlush */);
|
|
122
104
|
}
|
|
123
105
|
catch (e) {
|
|
124
|
-
_self.diagLog()
|
|
106
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
125
107
|
}
|
|
126
108
|
}
|
|
127
109
|
};
|
|
@@ -132,7 +114,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
132
114
|
_self.triggerSend(true, _doUnloadSend, 2 /* Unload */);
|
|
133
115
|
}
|
|
134
116
|
catch (e) {
|
|
135
|
-
_self.diagLog()
|
|
117
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.FailedToSendQueuedTelemetry, "failed to flush with beacon sender on page unload, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
136
118
|
}
|
|
137
119
|
}
|
|
138
120
|
else {
|
|
@@ -140,7 +122,6 @@ var Sender = /** @class */ (function (_super) {
|
|
|
140
122
|
}
|
|
141
123
|
}
|
|
142
124
|
};
|
|
143
|
-
_self.teardown = _notImplemented;
|
|
144
125
|
_self.addHeader = function (name, value) {
|
|
145
126
|
_headers[name] = value;
|
|
146
127
|
};
|
|
@@ -155,6 +136,8 @@ var Sender = /** @class */ (function (_super) {
|
|
|
155
136
|
_self._sender = null;
|
|
156
137
|
_stamp_specific_redirects = 0;
|
|
157
138
|
var diagLog = _self.diagLog();
|
|
139
|
+
_evtNamespace = mergeEvtNamespace(createUniqueNamespace("Sender"), core.evtNamespace && core.evtNamespace());
|
|
140
|
+
_offlineListener = createOfflineListener(_evtNamespace);
|
|
158
141
|
var defaultConfig = _getDefaultAppInsightsChannelConfig();
|
|
159
142
|
objForEachKey(defaultConfig, function (field, value) {
|
|
160
143
|
_self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };
|
|
@@ -163,7 +146,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
163
146
|
? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);
|
|
164
147
|
_self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);
|
|
165
148
|
if (!_validateInstrumentationKey(config)) {
|
|
166
|
-
diagLog
|
|
149
|
+
_throwInternal(diagLog, LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
|
|
167
150
|
}
|
|
168
151
|
if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {
|
|
169
152
|
arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {
|
|
@@ -216,12 +199,12 @@ var Sender = /** @class */ (function (_super) {
|
|
|
216
199
|
}
|
|
217
200
|
// validate input
|
|
218
201
|
if (!telemetryItem) {
|
|
219
|
-
itemCtx.diagLog()
|
|
202
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
|
|
220
203
|
return;
|
|
221
204
|
}
|
|
222
205
|
// validate event
|
|
223
206
|
if (telemetryItem.baseData && !telemetryItem.baseType) {
|
|
224
|
-
itemCtx.diagLog()
|
|
207
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
|
|
225
208
|
return;
|
|
226
209
|
}
|
|
227
210
|
if (!telemetryItem.baseType) {
|
|
@@ -230,13 +213,13 @@ var Sender = /** @class */ (function (_super) {
|
|
|
230
213
|
}
|
|
231
214
|
// ensure a sender was constructed
|
|
232
215
|
if (!_self._sender) {
|
|
233
|
-
itemCtx.diagLog()
|
|
216
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
|
|
234
217
|
return;
|
|
235
218
|
}
|
|
236
219
|
// check if this item should be sampled in, else add sampleRate tag
|
|
237
220
|
if (!_isSampledIn(telemetryItem)) {
|
|
238
221
|
// Item is sampled out, do not send it
|
|
239
|
-
itemCtx.diagLog()
|
|
222
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
|
|
240
223
|
return;
|
|
241
224
|
}
|
|
242
225
|
else {
|
|
@@ -248,7 +231,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
248
231
|
var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();
|
|
249
232
|
var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);
|
|
250
233
|
if (!aiEnvelope_1) {
|
|
251
|
-
itemCtx.diagLog()
|
|
234
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
|
|
252
235
|
return;
|
|
253
236
|
}
|
|
254
237
|
var doNotSendItem_1 = false;
|
|
@@ -264,7 +247,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
264
247
|
catch (e) {
|
|
265
248
|
// log error but dont stop executing rest of the telemetry initializers
|
|
266
249
|
// doNotSendItem = true;
|
|
267
|
-
itemCtx.diagLog()
|
|
250
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
|
|
268
251
|
}
|
|
269
252
|
});
|
|
270
253
|
delete telemetryItem.tags[ProcessLegacy];
|
|
@@ -286,7 +269,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
286
269
|
_setupTimer();
|
|
287
270
|
}
|
|
288
271
|
catch (e) {
|
|
289
|
-
itemCtx.diagLog()
|
|
272
|
+
_throwInternal(itemCtx.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.FailedAddingTelemetryToBuffer, "Failed adding telemetry to the sender's buffer, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
290
273
|
}
|
|
291
274
|
// hand off the telemetry item to the next plugin
|
|
292
275
|
_self.processNext(telemetryItem, itemCtx);
|
|
@@ -334,16 +317,21 @@ var Sender = /** @class */ (function (_super) {
|
|
|
334
317
|
/* Ignore this error for IE under v10 */
|
|
335
318
|
var ieVer = getIEVersion();
|
|
336
319
|
if (!ieVer || ieVer > 9) {
|
|
337
|
-
_self.diagLog()
|
|
320
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
338
321
|
}
|
|
339
322
|
}
|
|
340
323
|
}
|
|
341
324
|
};
|
|
325
|
+
_self._doTeardown = function (unloadCtx, unloadState) {
|
|
326
|
+
_self.onunloadFlush();
|
|
327
|
+
_offlineListener.unload();
|
|
328
|
+
_initDefaults();
|
|
329
|
+
};
|
|
342
330
|
/**
|
|
343
331
|
* error handler
|
|
344
332
|
*/
|
|
345
333
|
_self._onError = function (payload, message, event) {
|
|
346
|
-
_self.diagLog()
|
|
334
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
|
|
347
335
|
_self._buffer.clearSent(payload);
|
|
348
336
|
};
|
|
349
337
|
/**
|
|
@@ -373,7 +361,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
373
361
|
}
|
|
374
362
|
if (retry.length > 0) {
|
|
375
363
|
_resendPayload(retry);
|
|
376
|
-
_self.diagLog()
|
|
364
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
|
|
377
365
|
"Delivered: " + payload.length + ", Failed: " + failed.length +
|
|
378
366
|
". Will retry to send " + retry.length + " our of " + results.itemsReceived + " items");
|
|
379
367
|
}
|
|
@@ -426,19 +414,19 @@ var Sender = /** @class */ (function (_super) {
|
|
|
426
414
|
}
|
|
427
415
|
if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {
|
|
428
416
|
_resendPayload(payload);
|
|
429
|
-
_self.diagLog()
|
|
417
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
|
|
430
418
|
"Response code " + status + ". Will retry to send " + payload.length + " items.");
|
|
431
419
|
}
|
|
432
420
|
else {
|
|
433
421
|
_self._onError(payload, errorMessage);
|
|
434
422
|
}
|
|
435
423
|
}
|
|
436
|
-
else if (
|
|
424
|
+
else if (_offlineListener && !_offlineListener.isOnline()) { // offline
|
|
437
425
|
// Note: Don't check for status == 0, since adblock gives this code
|
|
438
426
|
if (!_self._senderConfig.isRetryDisabled()) {
|
|
439
427
|
var offlineBackOffMultiplier = 10; // arbritrary number
|
|
440
428
|
_resendPayload(payload, offlineBackOffMultiplier);
|
|
441
|
-
_self.diagLog()
|
|
429
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". Offline - Response Code: ".concat(status, ". Offline status: ").concat(!_offlineListener.isOnline(), ". Will retry to send ").concat(payload.length, " items."));
|
|
442
430
|
}
|
|
443
431
|
}
|
|
444
432
|
else {
|
|
@@ -526,8 +514,8 @@ var Sender = /** @class */ (function (_super) {
|
|
|
526
514
|
}
|
|
527
515
|
}
|
|
528
516
|
if (droppedPayload.length > 0) {
|
|
529
|
-
_fallbackSender(droppedPayload, true);
|
|
530
|
-
_self.diagLog()
|
|
517
|
+
_fallbackSender && _fallbackSender(droppedPayload, true);
|
|
518
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
|
|
531
519
|
}
|
|
532
520
|
}
|
|
533
521
|
}
|
|
@@ -579,7 +567,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
579
567
|
else {
|
|
580
568
|
// Payload is going to be too big so just try and send via XHR
|
|
581
569
|
_fallbackSender && _fallbackSender(payload, true);
|
|
582
|
-
_self.diagLog()
|
|
570
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
|
|
583
571
|
}
|
|
584
572
|
}
|
|
585
573
|
}
|
|
@@ -696,7 +684,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
696
684
|
}
|
|
697
685
|
}
|
|
698
686
|
catch (e) {
|
|
699
|
-
_self.diagLog()
|
|
687
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
|
|
700
688
|
response: response
|
|
701
689
|
});
|
|
702
690
|
}
|
|
@@ -798,7 +786,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
798
786
|
// If the protocol doesn't match, we can't send the telemetry :(.
|
|
799
787
|
var hostingProtocol = _window && _window.location && _window.location.protocol || "";
|
|
800
788
|
if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {
|
|
801
|
-
_self.diagLog()
|
|
789
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
|
|
802
790
|
"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
|
|
803
791
|
buffer.clear();
|
|
804
792
|
return;
|
|
@@ -832,7 +820,7 @@ var Sender = /** @class */ (function (_super) {
|
|
|
832
820
|
manager.eventsSendRequest(sendRequest, isAsync);
|
|
833
821
|
}
|
|
834
822
|
catch (e) {
|
|
835
|
-
_self.diagLog()
|
|
823
|
+
_throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
|
|
836
824
|
}
|
|
837
825
|
}
|
|
838
826
|
}
|
|
@@ -849,6 +837,25 @@ var Sender = /** @class */ (function (_super) {
|
|
|
849
837
|
var regexp = new RegExp(UUID_Regex);
|
|
850
838
|
return regexp.test(config.instrumentationKey);
|
|
851
839
|
}
|
|
840
|
+
function _initDefaults() {
|
|
841
|
+
_self._sender = null;
|
|
842
|
+
_self._buffer = null;
|
|
843
|
+
_self._appId = null;
|
|
844
|
+
_self._sample = null;
|
|
845
|
+
_headers = {};
|
|
846
|
+
_offlineListener = null;
|
|
847
|
+
_consecutiveErrors = 0;
|
|
848
|
+
_retryAt = null;
|
|
849
|
+
_lastSend = null;
|
|
850
|
+
_paused = false;
|
|
851
|
+
_timeoutHandle = null;
|
|
852
|
+
_serializer = null;
|
|
853
|
+
_stamp_specific_redirects = 0;
|
|
854
|
+
_syncFetchPayload = 0;
|
|
855
|
+
_fallbackSender = null;
|
|
856
|
+
_syncUnloadSender = null;
|
|
857
|
+
_evtNamespace = null;
|
|
858
|
+
}
|
|
852
859
|
});
|
|
853
860
|
return _this;
|
|
854
861
|
}
|