@microsoft/applicationinsights-channel-js 2.8.0-beta.2203-02 → 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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-02
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
  (function (global, factory) {
@@ -340,6 +340,7 @@
340
340
  var strIsInitialized = "isInitialized";
341
341
  var strTeardown = "teardown";
342
342
  var strCore = "core";
343
+ var strUpdate = "update";
343
344
  var strDisabled = "disabled";
344
345
  var strDoTeardown = "_doTeardown";
345
346
 
@@ -619,6 +620,33 @@
619
620
  function throwError(message) {
620
621
  throw new Error(message);
621
622
  }
623
+ function _createProxyFunction(source, funcName) {
624
+ var srcFunc = null;
625
+ var src = null;
626
+ if (isFunction(source)) {
627
+ srcFunc = source;
628
+ }
629
+ else {
630
+ src = source;
631
+ }
632
+ return function () {
633
+ var originalArguments = arguments;
634
+ if (srcFunc) {
635
+ src = srcFunc();
636
+ }
637
+ if (src) {
638
+ return src[funcName].apply(src, originalArguments);
639
+ }
640
+ };
641
+ }
642
+ function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {
643
+ if (overwriteTarget === void 0) { overwriteTarget = true; }
644
+ if (target && name && source) {
645
+ if (overwriteTarget || isUndefined(target[name])) {
646
+ target[name] = _createProxyFunction(source, theFunc);
647
+ }
648
+ }
649
+ }
622
650
  function createClassFromInterface(defaults) {
623
651
  return /** @class */ (function () {
624
652
  function class_1() {
@@ -637,7 +665,7 @@
637
665
  objForEachKey(values, function (field, value) {
638
666
  enumClass[field] = value;
639
667
  if (!isUndefined(enumClass[value])) {
640
- throwError("Value: [" + value + "] already exists for " + field);
668
+ throwError("[" + value + "] exists for " + field);
641
669
  }
642
670
  enumClass[value] = field;
643
671
  });
@@ -649,7 +677,7 @@
649
677
  }
650
678
  return theObject;
651
679
  }
652
- function objExtend(obj, obj2, obj3, obj4, obj5, obj6) {
680
+ function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {
653
681
  var theArgs = arguments;
654
682
  var extended = theArgs[0] || {};
655
683
  var argLen = theArgs.length;
@@ -1037,6 +1065,10 @@
1037
1065
  }
1038
1066
  return DiagnosticLogger;
1039
1067
  }());
1068
+ function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {
1069
+ if (isUserAct === void 0) { isUserAct = false; }
1070
+ (logger || new DiagnosticLogger()).throwInternal(severity, msgId, msg, properties, isUserAct);
1071
+ }
1040
1072
 
1041
1073
  var strExecutionContextKey = "ctx";
1042
1074
  var PerfEvent = /** @class */ (function () {
@@ -1309,8 +1341,11 @@
1309
1341
  return createTelemetryProxyChain([startAt], config, core);
1310
1342
  }
1311
1343
  function _createInternalContext(telemetryChain, config, core, startAt) {
1312
- var _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1344
+ var _nextProxy = null;
1313
1345
  var _onComplete = [];
1346
+ if (startAt !== null) {
1347
+ _nextProxy = startAt ? _getNextProxyStart(telemetryChain, config, core, startAt) : telemetryChain;
1348
+ }
1314
1349
  var context = {
1315
1350
  _next: _moveNext,
1316
1351
  ctx: {
@@ -1360,7 +1395,7 @@
1360
1395
  completeDetails.func.call(completeDetails.self, completeDetails.args);
1361
1396
  }
1362
1397
  catch (e) {
1363
- core.logger.throwInternal(2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
1398
+ _throwInternal(core.logger, 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
1364
1399
  }
1365
1400
  });
1366
1401
  _onComplete = [];
@@ -1459,6 +1494,27 @@
1459
1494
  context.createNew = _createNew;
1460
1495
  return context;
1461
1496
  }
1497
+ function createProcessTelemetryUpdateContext(telemetryChain, config, core, startAt) {
1498
+ var internalContext = _createInternalContext(telemetryChain, config, core, startAt);
1499
+ var context = internalContext.ctx;
1500
+ function _processNext(updateState) {
1501
+ return context.iterate(function (plugin) {
1502
+ if (isFunction(plugin[strUpdate])) {
1503
+ plugin[strUpdate](context, updateState);
1504
+ }
1505
+ });
1506
+ }
1507
+ function _createNew(plugins, startAt) {
1508
+ if (plugins === void 0) { plugins = null; }
1509
+ if (isArray(plugins)) {
1510
+ plugins = createTelemetryProxyChain(plugins, config, core, startAt);
1511
+ }
1512
+ return createProcessTelemetryUpdateContext(plugins || context.getNext(), config, core, startAt);
1513
+ }
1514
+ context.processNext = _processNext;
1515
+ context.createNew = _createNew;
1516
+ return context;
1517
+ }
1462
1518
  function createTelemetryProxyChain(plugins, config, core, startAt) {
1463
1519
  var firstProxy = null;
1464
1520
  var add = startAt ? false : true;
@@ -1505,6 +1561,7 @@
1505
1561
  },
1506
1562
  processTelemetry: _processTelemetry,
1507
1563
  unload: _unloadPlugin,
1564
+ update: _updatePlugin,
1508
1565
  _id: chainId,
1509
1566
  _setNext: function (nextPlugin) {
1510
1567
  nextProxy = nextPlugin;
@@ -1544,7 +1601,7 @@
1544
1601
  hasRun = true;
1545
1602
  }
1546
1603
  if (!nextProxy || !hasNextRun) {
1547
- itemCtx.diagLog().throwInternal(1 , 73 , "Plugin [" + plugin.identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
1604
+ _throwInternal(itemCtx.diagLog(), 1 , 73 , "Plugin [" + plugin.identifier + "] failed during " + name + " - " + dumpObj(error) + ", run flags: " + dumpObj(hasRunContext));
1548
1605
  }
1549
1606
  }
1550
1607
  }, details, isAsync);
@@ -1592,11 +1649,53 @@
1592
1649
  unloadCtx.processNext(unloadState);
1593
1650
  }
1594
1651
  }
1652
+ function _updatePlugin(updateCtx, updateState) {
1653
+ function _callUpdate() {
1654
+ var hasRun = false;
1655
+ if (plugin) {
1656
+ var pluginState = _getPluginState(plugin);
1657
+ var pluginCore = plugin[strCore] || pluginState.core;
1658
+ if (plugin && (!pluginCore || pluginCore === updateCtx[strCore]()) && !pluginState[strTeardown]) {
1659
+ if (plugin[strUpdate] && plugin[strUpdate](updateCtx, updateState) === true) {
1660
+ hasRun = true;
1661
+ }
1662
+ }
1663
+ }
1664
+ return hasRun;
1665
+ }
1666
+ if (!_processChain(updateCtx, _callUpdate, "update", function () { }, false)) {
1667
+ updateCtx.processNext(updateState);
1668
+ }
1669
+ }
1595
1670
  return objFreeze(proxyChain);
1596
1671
  }
1597
1672
 
1598
1673
  var strExtensionConfig = "extensionConfig";
1599
1674
 
1675
+ function createUnloadHandlerContainer() {
1676
+ var handlers = [];
1677
+ function _addHandler(handler) {
1678
+ if (handler) {
1679
+ handlers.push(handler);
1680
+ }
1681
+ }
1682
+ function _runHandlers(unloadCtx, unloadState) {
1683
+ arrForEach(handlers, function (handler) {
1684
+ try {
1685
+ handler(unloadCtx, unloadState);
1686
+ }
1687
+ catch (e) {
1688
+ _throwInternal(unloadCtx.diagLog(), 2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
1689
+ }
1690
+ });
1691
+ handlers = [];
1692
+ }
1693
+ return {
1694
+ add: _addHandler,
1695
+ run: _runHandlers
1696
+ };
1697
+ }
1698
+
1600
1699
  var strGetPlugin = "getPlugin";
1601
1700
  var BaseTelemetryPlugin = /** @class */ (function () {
1602
1701
  function BaseTelemetryPlugin() {
@@ -1604,6 +1703,7 @@
1604
1703
  var _isinitialized;
1605
1704
  var _rootCtx;
1606
1705
  var _nextPlugin;
1706
+ var _unloadHandlerContainer;
1607
1707
  var _hooks;
1608
1708
  _initDefaults();
1609
1709
  dynamicProto(BaseTelemetryPlugin, _self, function (_self) {
@@ -1625,6 +1725,7 @@
1625
1725
  function _unloadCallback() {
1626
1726
  if (!unloadDone) {
1627
1727
  unloadDone = true;
1728
+ _unloadHandlerContainer.run(theUnloadCtx, unloadState);
1628
1729
  arrForEach(_hooks, function (fn) {
1629
1730
  fn.rm();
1630
1731
  });
@@ -1643,6 +1744,30 @@
1643
1744
  }
1644
1745
  return result;
1645
1746
  };
1747
+ _self.update = function (updateCtx, updateState) {
1748
+ if (!_self.core || (updateCtx && _self.core !== updateCtx.core())) {
1749
+ return;
1750
+ }
1751
+ var result;
1752
+ var updateDone = false;
1753
+ var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, {}, _self.core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);
1754
+ var theUpdateState = updateState || {
1755
+ reason: 0
1756
+ };
1757
+ function _updateCallback() {
1758
+ if (!updateDone) {
1759
+ updateDone = true;
1760
+ _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx.getNext());
1761
+ }
1762
+ }
1763
+ if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {
1764
+ _updateCallback();
1765
+ }
1766
+ else {
1767
+ result = true;
1768
+ }
1769
+ return result;
1770
+ };
1646
1771
  _self._addHook = function (hooks) {
1647
1772
  if (hooks) {
1648
1773
  if (isArray(hooks)) {
@@ -1653,6 +1778,7 @@
1653
1778
  }
1654
1779
  }
1655
1780
  };
1781
+ proxyFunctionAs(_self, "_addUnloadCb", function () { return _unloadHandlerContainer; }, "add");
1656
1782
  });
1657
1783
  _self.diagLog = function (itemCtx) {
1658
1784
  return _getTelCtx(itemCtx).diagLog();
@@ -1709,6 +1835,7 @@
1709
1835
  _rootCtx = null;
1710
1836
  _nextPlugin = null;
1711
1837
  _hooks = [];
1838
+ _unloadHandlerContainer = createUnloadHandlerContainer();
1712
1839
  }
1713
1840
  }
1714
1841
  return BaseTelemetryPlugin;
@@ -1717,6 +1844,8 @@
1717
1844
  var strOnPrefix = "on";
1718
1845
  var strAttachEvent = "attachEvent";
1719
1846
  var strAddEventHelper = "addEventListener";
1847
+ var strDetachEvent = "detachEvent";
1848
+ var strRemoveEventListener = "removeEventListener";
1720
1849
  var strEvents = "events";
1721
1850
  createUniqueNamespace("aiEvtPageHide");
1722
1851
  createUniqueNamespace("aiEvtPageShow");
@@ -1729,12 +1858,12 @@
1729
1858
  }
1730
1859
  return name;
1731
1860
  }
1732
- function _getEvtNamespace(eventName, namespaces) {
1733
- if (namespaces) {
1861
+ function _getEvtNamespace(eventName, evtNamespace) {
1862
+ if (evtNamespace) {
1734
1863
  var theNamespace_1 = "";
1735
- if (isArray(namespaces)) {
1864
+ if (isArray(evtNamespace)) {
1736
1865
  theNamespace_1 = "";
1737
- arrForEach(namespaces, function (name) {
1866
+ arrForEach(evtNamespace, function (name) {
1738
1867
  name = _normalizeNamespace(name);
1739
1868
  if (name) {
1740
1869
  if (name[0] !== ".") {
@@ -1745,7 +1874,7 @@
1745
1874
  });
1746
1875
  }
1747
1876
  else {
1748
- theNamespace_1 = _normalizeNamespace(namespaces);
1877
+ theNamespace_1 = _normalizeNamespace(evtNamespace);
1749
1878
  }
1750
1879
  if (theNamespace_1) {
1751
1880
  if (theNamespace_1[0] !== ".") {
@@ -1769,6 +1898,16 @@
1769
1898
  }
1770
1899
  return registeredEvents;
1771
1900
  }
1901
+ function _doDetach(obj, evtName, handlerRef, useCapture) {
1902
+ if (obj && evtName && evtName.type) {
1903
+ if (obj[strRemoveEventListener]) {
1904
+ obj[strRemoveEventListener](evtName.type, handlerRef, useCapture);
1905
+ }
1906
+ else if (obj[strDetachEvent]) {
1907
+ obj[strDetachEvent](strOnPrefix + evtName.type, handlerRef);
1908
+ }
1909
+ }
1910
+ }
1772
1911
  function _doAttach(obj, evtName, handlerRef, useCapture) {
1773
1912
  var result = false;
1774
1913
  if (obj && evtName && evtName.type && handlerRef) {
@@ -1783,6 +1922,49 @@
1783
1922
  }
1784
1923
  return result;
1785
1924
  }
1925
+ function _doUnregister(target, events, evtName, unRegFn) {
1926
+ var idx = events.length;
1927
+ while (idx--) {
1928
+ var theEvent = events[idx];
1929
+ if (theEvent) {
1930
+ if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {
1931
+ if (!unRegFn || unRegFn(theEvent)) {
1932
+ _doDetach(target, theEvent.evtName, theEvent.handler, theEvent.capture);
1933
+ events.splice(idx, 1);
1934
+ }
1935
+ }
1936
+ }
1937
+ }
1938
+ }
1939
+ function _unregisterEvents(target, evtName, unRegFn) {
1940
+ if (evtName.type) {
1941
+ _doUnregister(target, _getRegisteredEvents(target, evtName.type), evtName, unRegFn);
1942
+ }
1943
+ else {
1944
+ var eventCache = elmNodeData.get(target, strEvents, {});
1945
+ objForEachKey(eventCache, function (evtType, events) {
1946
+ _doUnregister(target, events, evtName, unRegFn);
1947
+ });
1948
+ if (objKeys(eventCache).length === 0) {
1949
+ elmNodeData.kill(target, strEvents);
1950
+ }
1951
+ }
1952
+ }
1953
+ function mergeEvtNamespace(theNamespace, namespaces) {
1954
+ var newNamespaces;
1955
+ if (namespaces) {
1956
+ if (isArray(namespaces)) {
1957
+ newNamespaces = [theNamespace].concat(namespaces);
1958
+ }
1959
+ else {
1960
+ newNamespaces = [theNamespace, namespaces];
1961
+ }
1962
+ }
1963
+ else {
1964
+ newNamespaces = theNamespace;
1965
+ }
1966
+ return newNamespaces;
1967
+ }
1786
1968
  function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {
1787
1969
  if (useCapture === void 0) { useCapture = false; }
1788
1970
  var result = false;
@@ -1805,9 +1987,26 @@
1805
1987
  }
1806
1988
  return result;
1807
1989
  }
1808
- function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
1990
+ function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {
1809
1991
  if (useCapture === void 0) { useCapture = false; }
1810
- return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);
1992
+ if (target) {
1993
+ try {
1994
+ var evtName_1 = _getEvtNamespace(eventName, evtNamespace);
1995
+ var found_1 = false;
1996
+ _unregisterEvents(target, evtName_1, function (regEvent) {
1997
+ if ((evtName_1.ns && !handlerRef) || regEvent.handler === handlerRef) {
1998
+ found_1 = true;
1999
+ return true;
2000
+ }
2001
+ return false;
2002
+ });
2003
+ if (!found_1) {
2004
+ _doDetach(target, evtName_1, handlerRef, useCapture);
2005
+ }
2006
+ }
2007
+ catch (e) {
2008
+ }
2009
+ }
1811
2010
  }
1812
2011
 
1813
2012
  var LoggingSeverity = createEnumStyle({
@@ -1931,7 +2130,7 @@
1931
2130
  name = strTrim(name.toString());
1932
2131
  if (name.length > 150 ) {
1933
2132
  nameTrunc = name.substring(0, 150 );
1934
- logger && logger.throwInternal(2 , _InternalMessageId.NameTooLong, "name is too long. It has been truncated to " + 150 + " characters.", { name: name }, true);
2133
+ _throwInternal(logger, 2 , _InternalMessageId.NameTooLong, "name is too long. It has been truncated to " + 150 + " characters.", { name: name }, true);
1935
2134
  }
1936
2135
  }
1937
2136
  return nameTrunc || name;
@@ -1944,7 +2143,7 @@
1944
2143
  value = strTrim(value);
1945
2144
  if (value.toString().length > maxLength) {
1946
2145
  valueTrunc = value.toString().substring(0, maxLength);
1947
- logger && logger.throwInternal(2 , _InternalMessageId.StringValueTooLong, "string value is too long. It has been truncated to " + maxLength + " characters.", { value: value }, true);
2146
+ _throwInternal(logger, 2 , _InternalMessageId.StringValueTooLong, "string value is too long. It has been truncated to " + maxLength + " characters.", { value: value }, true);
1948
2147
  }
1949
2148
  }
1950
2149
  return valueTrunc || value;
@@ -1957,7 +2156,7 @@
1957
2156
  if (message) {
1958
2157
  if (message.length > 32768 ) {
1959
2158
  messageTrunc = message.substring(0, 32768 );
1960
- logger && logger.throwInternal(2 , _InternalMessageId.MessageTruncated, "message is too long, it has been truncated to " + 32768 + " characters.", { message: message }, true);
2159
+ _throwInternal(logger, 2 , _InternalMessageId.MessageTruncated, "message is too long, it has been truncated to " + 32768 + " characters.", { message: message }, true);
1961
2160
  }
1962
2161
  }
1963
2162
  return messageTrunc || message;
@@ -1968,7 +2167,7 @@
1968
2167
  var value = "" + exception;
1969
2168
  if (value.length > 32768 ) {
1970
2169
  exceptionTrunc = value.substring(0, 32768 );
1971
- logger && logger.throwInternal(2 , _InternalMessageId.ExceptionTruncated, "exception is too long, it has been truncated to " + 32768 + " characters.", { exception: exception }, true);
2170
+ _throwInternal(logger, 2 , _InternalMessageId.ExceptionTruncated, "exception is too long, it has been truncated to " + 32768 + " characters.", { exception: exception }, true);
1972
2171
  }
1973
2172
  }
1974
2173
  return exceptionTrunc || exception;
@@ -1982,7 +2181,7 @@
1982
2181
  value = getJSON().stringify(value);
1983
2182
  }
1984
2183
  catch (e) {
1985
- logger && logger.throwInternal(2 , _InternalMessageId.CannotSerializeObjectNonSerializable, "custom property is not valid", { exception: e }, true);
2184
+ _throwInternal(logger, 2 , _InternalMessageId.CannotSerializeObjectNonSerializable, "custom property is not valid", { exception: e }, true);
1986
2185
  }
1987
2186
  }
1988
2187
  value = dataSanitizeString(logger, value, 8192 );
@@ -2013,7 +2212,7 @@
2013
2212
  input = strTrim(input);
2014
2213
  if (input.length > maxLength) {
2015
2214
  inputTrunc = input.substring(0, maxLength);
2016
- logger && logger.throwInternal(2 , _msgId, "input is too long, it has been truncated to " + maxLength + " characters.", { data: input }, true);
2215
+ _throwInternal(logger, 2 , _msgId, "input is too long, it has been truncated to " + maxLength + " characters.", { data: input }, true);
2017
2216
  }
2018
2217
  }
2019
2218
  return inputTrunc || input;
@@ -2082,8 +2281,8 @@
2082
2281
  }
2083
2282
  return null;
2084
2283
  }
2085
- function utlCanUseSessionStorage() {
2086
- if (_canUseSessionStorage === undefined) {
2284
+ function utlCanUseSessionStorage(reset) {
2285
+ if (reset || _canUseSessionStorage === undefined) {
2087
2286
  _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);
2088
2287
  }
2089
2288
  return _canUseSessionStorage;
@@ -2096,7 +2295,7 @@
2096
2295
  }
2097
2296
  catch (e) {
2098
2297
  _canUseSessionStorage = false;
2099
- logger.throwInternal(2 , _InternalMessageId.BrowserCannotReadSessionStorage, "Browser failed read of session storage. " + getExceptionName(e), { exception: dumpObj(e) });
2298
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserCannotReadSessionStorage, "Browser failed read of session storage. " + getExceptionName(e), { exception: dumpObj(e) });
2100
2299
  }
2101
2300
  }
2102
2301
  return null;
@@ -2110,7 +2309,7 @@
2110
2309
  }
2111
2310
  catch (e) {
2112
2311
  _canUseSessionStorage = false;
2113
- logger.throwInternal(2 , _InternalMessageId.BrowserCannotWriteSessionStorage, "Browser failed write to session storage. " + getExceptionName(e), { exception: dumpObj(e) });
2312
+ _throwInternal(logger, 2 , _InternalMessageId.BrowserCannotWriteSessionStorage, "Browser failed write to session storage. " + getExceptionName(e), { exception: dumpObj(e) });
2114
2313
  }
2115
2314
  }
2116
2315
  return false;
@@ -3387,7 +3586,7 @@
3387
3586
  }
3388
3587
  }
3389
3588
  var EnvelopeCreator = {
3390
- Version: "2.8.0-beta.2203-02"
3589
+ Version: "2.8.0-beta.2203-05"
3391
3590
  };
3392
3591
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
3393
3592
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -3682,65 +3881,81 @@
3682
3881
  return Serializer;
3683
3882
  }());
3684
3883
 
3685
- var OfflineListener = /** @class */ (function () {
3686
- function OfflineListener() {
3687
- var _window = getWindow();
3688
- var _document = getDocument();
3689
- var isListening = false;
3690
- var _onlineStatus = true;
3691
- dynamicProto(OfflineListener, this, function (_self) {
3692
- try {
3693
- if (_window) {
3694
- if (attachEvent(_window, "online", _setOnline)) {
3695
- attachEvent(_window, "offline", _setOffline);
3696
- isListening = true;
3697
- }
3698
- }
3699
- if (_document) {
3700
- var target = _document.body || _document;
3701
- if (!isUndefined(target.ononline)) {
3702
- target.ononline = _setOnline;
3703
- target.onoffline = _setOffline;
3704
- isListening = true;
3705
- }
3706
- }
3707
- if (isListening) {
3708
- var _navigator = getNavigator();
3709
- if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3710
- _onlineStatus = _navigator.onLine;
3711
- }
3884
+ function _disableEvents(target, evtNamespace) {
3885
+ eventOff(target, null, null, evtNamespace);
3886
+ }
3887
+ function createOfflineListener(parentEvtNamespace) {
3888
+ var _document = getDocument();
3889
+ var _navigator = getNavigator();
3890
+ var _isListening = false;
3891
+ var _onlineStatus = true;
3892
+ var _evtNamespace = mergeEvtNamespace(createUniqueNamespace("OfflineListener"), parentEvtNamespace);
3893
+ try {
3894
+ if (_enableEvents(getWindow())) {
3895
+ _isListening = true;
3896
+ }
3897
+ if (_document) {
3898
+ var target = _document.body || _document;
3899
+ if (target.ononline) {
3900
+ if (_enableEvents(target)) {
3901
+ _isListening = true;
3712
3902
  }
3713
3903
  }
3714
- catch (e) {
3715
- isListening = false;
3904
+ }
3905
+ if (_isListening) {
3906
+ if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3907
+ _onlineStatus = _navigator.onLine;
3716
3908
  }
3717
- _self.isListening = isListening;
3718
- _self.isOnline = function () {
3719
- var result = true;
3720
- var _navigator = getNavigator();
3721
- if (isListening) {
3722
- result = _onlineStatus;
3723
- }
3724
- else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3725
- result = _navigator.onLine;
3726
- }
3727
- return result;
3728
- };
3729
- _self.isOffline = function () {
3730
- return !_self.isOnline();
3731
- };
3732
- function _setOnline() {
3733
- _onlineStatus = true;
3909
+ }
3910
+ }
3911
+ catch (e) {
3912
+ _isListening = false;
3913
+ }
3914
+ function _enableEvents(target) {
3915
+ var enabled = false;
3916
+ if (target) {
3917
+ enabled = eventOn(target, "online", _setOnline, _evtNamespace);
3918
+ if (enabled) {
3919
+ eventOn(target, "offline", _setOffline, _evtNamespace);
3734
3920
  }
3735
- function _setOffline() {
3736
- _onlineStatus = false;
3921
+ }
3922
+ return enabled;
3923
+ }
3924
+ function _setOnline() {
3925
+ _onlineStatus = true;
3926
+ }
3927
+ function _setOffline() {
3928
+ _onlineStatus = false;
3929
+ }
3930
+ function _isOnline() {
3931
+ var result = true;
3932
+ if (_isListening) {
3933
+ result = _onlineStatus;
3934
+ }
3935
+ else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3936
+ result = _navigator.onLine;
3937
+ }
3938
+ return result;
3939
+ }
3940
+ function _unload() {
3941
+ var win = getWindow();
3942
+ if (win && _isListening) {
3943
+ _disableEvents(win, _evtNamespace);
3944
+ if (_document) {
3945
+ var target = _document.body || _document;
3946
+ if (!isUndefined(target.ononline)) {
3947
+ _disableEvents(target, _evtNamespace);
3948
+ }
3737
3949
  }
3738
- });
3950
+ _isListening = false;
3951
+ }
3739
3952
  }
3740
- OfflineListener.Offline = new OfflineListener;
3741
- return OfflineListener;
3742
- }());
3743
- var Offline = OfflineListener.Offline;
3953
+ return {
3954
+ isOnline: _isOnline,
3955
+ isListening: function () { return _isListening; },
3956
+ unload: _unload
3957
+ };
3958
+ }
3744
3959
 
3745
3960
  var MIN_INPUT_LENGTH = 8;
3746
3961
  var HashCodeScoreGenerator = /** @class */ (function () {
@@ -3868,22 +4083,22 @@
3868
4083
  var _this = _super.call(this) || this;
3869
4084
  _this.priority = 1001;
3870
4085
  _this.identifier = BreezeChannelIdentifier;
4086
+ _this._senderConfig = _getDefaultAppInsightsChannelConfig();
3871
4087
  var _consecutiveErrors;
3872
4088
  var _retryAt;
3873
4089
  var _lastSend;
3874
- var _paused = false;
4090
+ var _paused;
3875
4091
  var _timeoutHandle;
3876
4092
  var _serializer;
3877
4093
  var _stamp_specific_redirects;
3878
- var _headers = {};
4094
+ var _headers;
3879
4095
  var _syncFetchPayload = 0;
3880
4096
  var _fallbackSender;
3881
4097
  var _syncUnloadSender;
3882
- _this._senderConfig = _getDefaultAppInsightsChannelConfig();
4098
+ var _offlineListener;
4099
+ var _evtNamespace;
3883
4100
  dynamicProto(Sender, _this, function (_self, _base) {
3884
- function _notImplemented() {
3885
- throwError("Method not implemented.");
3886
- }
4101
+ _initDefaults();
3887
4102
  _self.pause = function () {
3888
4103
  _clearScheduledTimer();
3889
4104
  _paused = true;
@@ -3906,7 +4121,7 @@
3906
4121
  _self.triggerSend(isAsync, null, sendReason || 1 );
3907
4122
  }
3908
4123
  catch (e) {
3909
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
4124
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.FlushFailed, "flush failed, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
3910
4125
  }
3911
4126
  }
3912
4127
  };
@@ -3917,7 +4132,7 @@
3917
4132
  _self.triggerSend(true, _doUnloadSend, 2 );
3918
4133
  }
3919
4134
  catch (e) {
3920
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.FailedToSendQueuedTelemetry, "failed to flush with beacon sender on page unload, telemetry will not be collected: " + getExceptionName(e), { exception: dumpObj(e) });
4135
+ _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) });
3921
4136
  }
3922
4137
  }
3923
4138
  else {
@@ -3925,7 +4140,6 @@
3925
4140
  }
3926
4141
  }
3927
4142
  };
3928
- _self.teardown = _notImplemented;
3929
4143
  _self.addHeader = function (name, value) {
3930
4144
  _headers[name] = value;
3931
4145
  };
@@ -3940,6 +4154,8 @@
3940
4154
  _self._sender = null;
3941
4155
  _stamp_specific_redirects = 0;
3942
4156
  var diagLog = _self.diagLog();
4157
+ _evtNamespace = mergeEvtNamespace(createUniqueNamespace("Sender"), core.evtNamespace && core.evtNamespace());
4158
+ _offlineListener = createOfflineListener(_evtNamespace);
3943
4159
  var defaultConfig = _getDefaultAppInsightsChannelConfig();
3944
4160
  objForEachKey(defaultConfig, function (field, value) {
3945
4161
  _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };
@@ -3948,7 +4164,7 @@
3948
4164
  ? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);
3949
4165
  _self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);
3950
4166
  if (!_validateInstrumentationKey(config)) {
3951
- diagLog.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
4167
+ _throwInternal(diagLog, LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
3952
4168
  }
3953
4169
  if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {
3954
4170
  arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {
@@ -3994,22 +4210,22 @@
3994
4210
  return;
3995
4211
  }
3996
4212
  if (!telemetryItem) {
3997
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
4213
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
3998
4214
  return;
3999
4215
  }
4000
4216
  if (telemetryItem.baseData && !telemetryItem.baseType) {
4001
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
4217
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidEvent, "Cannot send telemetry without baseData and baseType");
4002
4218
  return;
4003
4219
  }
4004
4220
  if (!telemetryItem.baseType) {
4005
4221
  telemetryItem.baseType = "EventData";
4006
4222
  }
4007
4223
  if (!_self._sender) {
4008
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
4224
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
4009
4225
  return;
4010
4226
  }
4011
4227
  if (!_isSampledIn(telemetryItem)) {
4012
- itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
4228
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TelemetrySampledAndNotSent, "Telemetry item was sampled out and not sent", { SampleRate: _self._sample.sampleRate });
4013
4229
  return;
4014
4230
  }
4015
4231
  else {
@@ -4019,7 +4235,7 @@
4019
4235
  var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();
4020
4236
  var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);
4021
4237
  if (!aiEnvelope_1) {
4022
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
4238
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CreateEnvelopeError, "Unable to create an AppInsights envelope");
4023
4239
  return;
4024
4240
  }
4025
4241
  var doNotSendItem_1 = false;
@@ -4032,7 +4248,7 @@
4032
4248
  }
4033
4249
  }
4034
4250
  catch (e) {
4035
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
4251
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TelemetryInitializerFailed, "One of telemetry initializers failed, telemetry item will not be sent: " + getExceptionName(e), { exception: dumpObj(e) }, true);
4036
4252
  }
4037
4253
  });
4038
4254
  delete telemetryItem.tags[ProcessLegacy];
@@ -4050,7 +4266,7 @@
4050
4266
  _setupTimer();
4051
4267
  }
4052
4268
  catch (e) {
4053
- itemCtx.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.FailedAddingTelemetryToBuffer, "Failed adding telemetry to the sender's buffer, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
4269
+ _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) });
4054
4270
  }
4055
4271
  _self.processNext(telemetryItem, itemCtx);
4056
4272
  };
@@ -4085,13 +4301,18 @@
4085
4301
  catch (e) {
4086
4302
  var ieVer = getIEVersion();
4087
4303
  if (!ieVer || ieVer > 9) {
4088
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
4304
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.TransmissionFailed, "Telemetry transmission failed, some telemetry will be lost: " + getExceptionName(e), { exception: dumpObj(e) });
4089
4305
  }
4090
4306
  }
4091
4307
  }
4092
4308
  };
4309
+ _self._doTeardown = function (unloadCtx, unloadState) {
4310
+ _self.onunloadFlush();
4311
+ _offlineListener.unload();
4312
+ _initDefaults();
4313
+ };
4093
4314
  _self._onError = function (payload, message, event) {
4094
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
4315
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.OnError, "Failed to send telemetry.", { message: message });
4095
4316
  _self._buffer.clearSent(payload);
4096
4317
  };
4097
4318
  _self._onPartialSuccess = function (payload, results) {
@@ -4116,7 +4337,7 @@
4116
4337
  }
4117
4338
  if (retry.length > 0) {
4118
4339
  _resendPayload(retry);
4119
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
4340
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
4120
4341
  "Delivered: " + payload.length + ", Failed: " + failed.length +
4121
4342
  ". Will retry to send " + retry.length + " our of " + results.itemsReceived + " items");
4122
4343
  }
@@ -4161,18 +4382,18 @@
4161
4382
  }
4162
4383
  if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {
4163
4384
  _resendPayload(payload);
4164
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4385
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4165
4386
  "Response code " + status + ". Will retry to send " + payload.length + " items.");
4166
4387
  }
4167
4388
  else {
4168
4389
  _self._onError(payload, errorMessage);
4169
4390
  }
4170
4391
  }
4171
- else if (Offline.isOffline()) {
4392
+ else if (_offlineListener && !_offlineListener.isOnline()) {
4172
4393
  if (!_self._senderConfig.isRetryDisabled()) {
4173
4394
  var offlineBackOffMultiplier = 10;
4174
4395
  _resendPayload(payload, offlineBackOffMultiplier);
4175
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". Offline - Response Code: ".concat(status, ". Offline status: ").concat(Offline.isOffline(), ". Will retry to send ").concat(payload.length, " items."));
4396
+ _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."));
4176
4397
  }
4177
4398
  }
4178
4399
  else {
@@ -4239,8 +4460,8 @@
4239
4460
  }
4240
4461
  }
4241
4462
  if (droppedPayload.length > 0) {
4242
- _fallbackSender(droppedPayload, true);
4243
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
4463
+ _fallbackSender && _fallbackSender(droppedPayload, true);
4464
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with normal sender.");
4244
4465
  }
4245
4466
  }
4246
4467
  }
@@ -4281,7 +4502,7 @@
4281
4502
  }
4282
4503
  else {
4283
4504
  _fallbackSender && _fallbackSender(payload, true);
4284
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
4505
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " + "Failed to send telemetry with Beacon API, retried with xhrSender.");
4285
4506
  }
4286
4507
  }
4287
4508
  }
@@ -4372,7 +4593,7 @@
4372
4593
  }
4373
4594
  }
4374
4595
  catch (e) {
4375
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
4596
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.InvalidBackendResponse, "Cannot parse the response. " + getExceptionName(e), {
4376
4597
  response: response
4377
4598
  });
4378
4599
  }
@@ -4443,7 +4664,7 @@
4443
4664
  xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };
4444
4665
  var hostingProtocol = _window && _window.location && _window.location.protocol || "";
4445
4666
  if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {
4446
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4667
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4447
4668
  "Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
4448
4669
  buffer.clear();
4449
4670
  return;
@@ -4474,7 +4695,7 @@
4474
4695
  manager.eventsSendRequest(sendRequest, isAsync);
4475
4696
  }
4476
4697
  catch (e) {
4477
- _self.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
4698
+ _throwInternal(_self.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.NotificationException, "send request notification failed: " + getExceptionName(e), { exception: dumpObj(e) });
4478
4699
  }
4479
4700
  }
4480
4701
  }
@@ -4487,6 +4708,25 @@
4487
4708
  var regexp = new RegExp(UUID_Regex);
4488
4709
  return regexp.test(config.instrumentationKey);
4489
4710
  }
4711
+ function _initDefaults() {
4712
+ _self._sender = null;
4713
+ _self._buffer = null;
4714
+ _self._appId = null;
4715
+ _self._sample = null;
4716
+ _headers = {};
4717
+ _offlineListener = null;
4718
+ _consecutiveErrors = 0;
4719
+ _retryAt = null;
4720
+ _lastSend = null;
4721
+ _paused = false;
4722
+ _timeoutHandle = null;
4723
+ _serializer = null;
4724
+ _stamp_specific_redirects = 0;
4725
+ _syncFetchPayload = 0;
4726
+ _fallbackSender = null;
4727
+ _syncUnloadSender = null;
4728
+ _evtNamespace = null;
4729
+ }
4490
4730
  });
4491
4731
  return _this;
4492
4732
  }