@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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Application Insights JavaScript SDK - Channel, 2.8.0-beta.2203-04
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
 
@@ -676,7 +677,7 @@
676
677
  }
677
678
  return theObject;
678
679
  }
679
- function objExtend(obj, obj2, obj3, obj4, obj5, obj6) {
680
+ function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {
680
681
  var theArgs = arguments;
681
682
  var extended = theArgs[0] || {};
682
683
  var argLen = theArgs.length;
@@ -1064,6 +1065,10 @@
1064
1065
  }
1065
1066
  return DiagnosticLogger;
1066
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
+ }
1067
1072
 
1068
1073
  var strExecutionContextKey = "ctx";
1069
1074
  var PerfEvent = /** @class */ (function () {
@@ -1390,7 +1395,7 @@
1390
1395
  completeDetails.func.call(completeDetails.self, completeDetails.args);
1391
1396
  }
1392
1397
  catch (e) {
1393
- core.logger.throwInternal(2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
1398
+ _throwInternal(core.logger, 2 , 73 , "Unexpected Exception during onComplete - " + dumpObj(e));
1394
1399
  }
1395
1400
  });
1396
1401
  _onComplete = [];
@@ -1489,6 +1494,27 @@
1489
1494
  context.createNew = _createNew;
1490
1495
  return context;
1491
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
+ }
1492
1518
  function createTelemetryProxyChain(plugins, config, core, startAt) {
1493
1519
  var firstProxy = null;
1494
1520
  var add = startAt ? false : true;
@@ -1535,6 +1561,7 @@
1535
1561
  },
1536
1562
  processTelemetry: _processTelemetry,
1537
1563
  unload: _unloadPlugin,
1564
+ update: _updatePlugin,
1538
1565
  _id: chainId,
1539
1566
  _setNext: function (nextPlugin) {
1540
1567
  nextProxy = nextPlugin;
@@ -1574,7 +1601,7 @@
1574
1601
  hasRun = true;
1575
1602
  }
1576
1603
  if (!nextProxy || !hasNextRun) {
1577
- 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));
1578
1605
  }
1579
1606
  }
1580
1607
  }, details, isAsync);
@@ -1622,6 +1649,24 @@
1622
1649
  unloadCtx.processNext(unloadState);
1623
1650
  }
1624
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
+ }
1625
1670
  return objFreeze(proxyChain);
1626
1671
  }
1627
1672
 
@@ -1640,7 +1685,7 @@
1640
1685
  handler(unloadCtx, unloadState);
1641
1686
  }
1642
1687
  catch (e) {
1643
- unloadCtx.diagLog().throwInternal(2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
1688
+ _throwInternal(unloadCtx.diagLog(), 2 , 73 , "Unexpected error calling unload handler - " + dumpObj(e));
1644
1689
  }
1645
1690
  });
1646
1691
  handlers = [];
@@ -1699,6 +1744,30 @@
1699
1744
  }
1700
1745
  return result;
1701
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
+ };
1702
1771
  _self._addHook = function (hooks) {
1703
1772
  if (hooks) {
1704
1773
  if (isArray(hooks)) {
@@ -1775,6 +1844,8 @@
1775
1844
  var strOnPrefix = "on";
1776
1845
  var strAttachEvent = "attachEvent";
1777
1846
  var strAddEventHelper = "addEventListener";
1847
+ var strDetachEvent = "detachEvent";
1848
+ var strRemoveEventListener = "removeEventListener";
1778
1849
  var strEvents = "events";
1779
1850
  createUniqueNamespace("aiEvtPageHide");
1780
1851
  createUniqueNamespace("aiEvtPageShow");
@@ -1787,12 +1858,12 @@
1787
1858
  }
1788
1859
  return name;
1789
1860
  }
1790
- function _getEvtNamespace(eventName, namespaces) {
1791
- if (namespaces) {
1861
+ function _getEvtNamespace(eventName, evtNamespace) {
1862
+ if (evtNamespace) {
1792
1863
  var theNamespace_1 = "";
1793
- if (isArray(namespaces)) {
1864
+ if (isArray(evtNamespace)) {
1794
1865
  theNamespace_1 = "";
1795
- arrForEach(namespaces, function (name) {
1866
+ arrForEach(evtNamespace, function (name) {
1796
1867
  name = _normalizeNamespace(name);
1797
1868
  if (name) {
1798
1869
  if (name[0] !== ".") {
@@ -1803,7 +1874,7 @@
1803
1874
  });
1804
1875
  }
1805
1876
  else {
1806
- theNamespace_1 = _normalizeNamespace(namespaces);
1877
+ theNamespace_1 = _normalizeNamespace(evtNamespace);
1807
1878
  }
1808
1879
  if (theNamespace_1) {
1809
1880
  if (theNamespace_1[0] !== ".") {
@@ -1827,6 +1898,16 @@
1827
1898
  }
1828
1899
  return registeredEvents;
1829
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
+ }
1830
1911
  function _doAttach(obj, evtName, handlerRef, useCapture) {
1831
1912
  var result = false;
1832
1913
  if (obj && evtName && evtName.type && handlerRef) {
@@ -1841,6 +1922,49 @@
1841
1922
  }
1842
1923
  return result;
1843
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
+ }
1844
1968
  function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {
1845
1969
  if (useCapture === void 0) { useCapture = false; }
1846
1970
  var result = false;
@@ -1863,9 +1987,26 @@
1863
1987
  }
1864
1988
  return result;
1865
1989
  }
1866
- function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {
1990
+ function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {
1867
1991
  if (useCapture === void 0) { useCapture = false; }
1868
- 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
+ }
1869
2010
  }
1870
2011
 
1871
2012
  var LoggingSeverity = createEnumStyle({
@@ -1989,7 +2130,7 @@
1989
2130
  name = strTrim(name.toString());
1990
2131
  if (name.length > 150 ) {
1991
2132
  nameTrunc = name.substring(0, 150 );
1992
- 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);
1993
2134
  }
1994
2135
  }
1995
2136
  return nameTrunc || name;
@@ -2002,7 +2143,7 @@
2002
2143
  value = strTrim(value);
2003
2144
  if (value.toString().length > maxLength) {
2004
2145
  valueTrunc = value.toString().substring(0, maxLength);
2005
- 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);
2006
2147
  }
2007
2148
  }
2008
2149
  return valueTrunc || value;
@@ -2015,7 +2156,7 @@
2015
2156
  if (message) {
2016
2157
  if (message.length > 32768 ) {
2017
2158
  messageTrunc = message.substring(0, 32768 );
2018
- 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);
2019
2160
  }
2020
2161
  }
2021
2162
  return messageTrunc || message;
@@ -2026,7 +2167,7 @@
2026
2167
  var value = "" + exception;
2027
2168
  if (value.length > 32768 ) {
2028
2169
  exceptionTrunc = value.substring(0, 32768 );
2029
- 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);
2030
2171
  }
2031
2172
  }
2032
2173
  return exceptionTrunc || exception;
@@ -2040,7 +2181,7 @@
2040
2181
  value = getJSON().stringify(value);
2041
2182
  }
2042
2183
  catch (e) {
2043
- 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);
2044
2185
  }
2045
2186
  }
2046
2187
  value = dataSanitizeString(logger, value, 8192 );
@@ -2071,7 +2212,7 @@
2071
2212
  input = strTrim(input);
2072
2213
  if (input.length > maxLength) {
2073
2214
  inputTrunc = input.substring(0, maxLength);
2074
- 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);
2075
2216
  }
2076
2217
  }
2077
2218
  return inputTrunc || input;
@@ -2140,8 +2281,8 @@
2140
2281
  }
2141
2282
  return null;
2142
2283
  }
2143
- function utlCanUseSessionStorage() {
2144
- if (_canUseSessionStorage === undefined) {
2284
+ function utlCanUseSessionStorage(reset) {
2285
+ if (reset || _canUseSessionStorage === undefined) {
2145
2286
  _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);
2146
2287
  }
2147
2288
  return _canUseSessionStorage;
@@ -2154,7 +2295,7 @@
2154
2295
  }
2155
2296
  catch (e) {
2156
2297
  _canUseSessionStorage = false;
2157
- 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) });
2158
2299
  }
2159
2300
  }
2160
2301
  return null;
@@ -2168,7 +2309,7 @@
2168
2309
  }
2169
2310
  catch (e) {
2170
2311
  _canUseSessionStorage = false;
2171
- 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) });
2172
2313
  }
2173
2314
  }
2174
2315
  return false;
@@ -3445,7 +3586,7 @@
3445
3586
  }
3446
3587
  }
3447
3588
  var EnvelopeCreator = {
3448
- Version: "2.8.0-beta.2203-04"
3589
+ Version: "2.8.0-beta.2203-05"
3449
3590
  };
3450
3591
  function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {
3451
3592
  EnvelopeCreatorInit(logger, telemetryItem);
@@ -3740,65 +3881,81 @@
3740
3881
  return Serializer;
3741
3882
  }());
3742
3883
 
3743
- var OfflineListener = /** @class */ (function () {
3744
- function OfflineListener() {
3745
- var _window = getWindow();
3746
- var _document = getDocument();
3747
- var isListening = false;
3748
- var _onlineStatus = true;
3749
- dynamicProto(OfflineListener, this, function (_self) {
3750
- try {
3751
- if (_window) {
3752
- if (attachEvent(_window, "online", _setOnline)) {
3753
- attachEvent(_window, "offline", _setOffline);
3754
- isListening = true;
3755
- }
3756
- }
3757
- if (_document) {
3758
- var target = _document.body || _document;
3759
- if (!isUndefined(target.ononline)) {
3760
- target.ononline = _setOnline;
3761
- target.onoffline = _setOffline;
3762
- isListening = true;
3763
- }
3764
- }
3765
- if (isListening) {
3766
- var _navigator = getNavigator();
3767
- if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3768
- _onlineStatus = _navigator.onLine;
3769
- }
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;
3770
3902
  }
3771
3903
  }
3772
- catch (e) {
3773
- isListening = false;
3904
+ }
3905
+ if (_isListening) {
3906
+ if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3907
+ _onlineStatus = _navigator.onLine;
3774
3908
  }
3775
- _self.isListening = isListening;
3776
- _self.isOnline = function () {
3777
- var result = true;
3778
- var _navigator = getNavigator();
3779
- if (isListening) {
3780
- result = _onlineStatus;
3781
- }
3782
- else if (_navigator && !isNullOrUndefined(_navigator.onLine)) {
3783
- result = _navigator.onLine;
3784
- }
3785
- return result;
3786
- };
3787
- _self.isOffline = function () {
3788
- return !_self.isOnline();
3789
- };
3790
- function _setOnline() {
3791
- _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);
3792
3920
  }
3793
- function _setOffline() {
3794
- _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
+ }
3795
3949
  }
3796
- });
3950
+ _isListening = false;
3951
+ }
3797
3952
  }
3798
- OfflineListener.Offline = new OfflineListener;
3799
- return OfflineListener;
3800
- }());
3801
- var Offline = OfflineListener.Offline;
3953
+ return {
3954
+ isOnline: _isOnline,
3955
+ isListening: function () { return _isListening; },
3956
+ unload: _unload
3957
+ };
3958
+ }
3802
3959
 
3803
3960
  var MIN_INPUT_LENGTH = 8;
3804
3961
  var HashCodeScoreGenerator = /** @class */ (function () {
@@ -3926,22 +4083,22 @@
3926
4083
  var _this = _super.call(this) || this;
3927
4084
  _this.priority = 1001;
3928
4085
  _this.identifier = BreezeChannelIdentifier;
4086
+ _this._senderConfig = _getDefaultAppInsightsChannelConfig();
3929
4087
  var _consecutiveErrors;
3930
4088
  var _retryAt;
3931
4089
  var _lastSend;
3932
- var _paused = false;
4090
+ var _paused;
3933
4091
  var _timeoutHandle;
3934
4092
  var _serializer;
3935
4093
  var _stamp_specific_redirects;
3936
- var _headers = {};
4094
+ var _headers;
3937
4095
  var _syncFetchPayload = 0;
3938
4096
  var _fallbackSender;
3939
4097
  var _syncUnloadSender;
3940
- _this._senderConfig = _getDefaultAppInsightsChannelConfig();
4098
+ var _offlineListener;
4099
+ var _evtNamespace;
3941
4100
  dynamicProto(Sender, _this, function (_self, _base) {
3942
- function _notImplemented() {
3943
- throwError("Method not implemented.");
3944
- }
4101
+ _initDefaults();
3945
4102
  _self.pause = function () {
3946
4103
  _clearScheduledTimer();
3947
4104
  _paused = true;
@@ -3964,7 +4121,7 @@
3964
4121
  _self.triggerSend(isAsync, null, sendReason || 1 );
3965
4122
  }
3966
4123
  catch (e) {
3967
- _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) });
3968
4125
  }
3969
4126
  }
3970
4127
  };
@@ -3975,7 +4132,7 @@
3975
4132
  _self.triggerSend(true, _doUnloadSend, 2 );
3976
4133
  }
3977
4134
  catch (e) {
3978
- _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) });
3979
4136
  }
3980
4137
  }
3981
4138
  else {
@@ -3983,7 +4140,6 @@
3983
4140
  }
3984
4141
  }
3985
4142
  };
3986
- _self.teardown = _notImplemented;
3987
4143
  _self.addHeader = function (name, value) {
3988
4144
  _headers[name] = value;
3989
4145
  };
@@ -3998,6 +4154,8 @@
3998
4154
  _self._sender = null;
3999
4155
  _stamp_specific_redirects = 0;
4000
4156
  var diagLog = _self.diagLog();
4157
+ _evtNamespace = mergeEvtNamespace(createUniqueNamespace("Sender"), core.evtNamespace && core.evtNamespace());
4158
+ _offlineListener = createOfflineListener(_evtNamespace);
4001
4159
  var defaultConfig = _getDefaultAppInsightsChannelConfig();
4002
4160
  objForEachKey(defaultConfig, function (field, value) {
4003
4161
  _self._senderConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };
@@ -4006,7 +4164,7 @@
4006
4164
  ? new SessionStorageSendBuffer(diagLog, _self._senderConfig) : new ArraySendBuffer(diagLog, _self._senderConfig);
4007
4165
  _self._sample = new Sample(_self._senderConfig.samplingPercentage(), diagLog);
4008
4166
  if (!_validateInstrumentationKey(config)) {
4009
- diagLog.throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
4167
+ _throwInternal(diagLog, LoggingSeverity.CRITICAL, _InternalMessageId.InvalidInstrumentationKey, "Invalid Instrumentation key " + config.instrumentationKey);
4010
4168
  }
4011
4169
  if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders().length > 0) {
4012
4170
  arrForEach(_self._senderConfig.customHeaders(), function (customHeader) {
@@ -4052,22 +4210,22 @@
4052
4210
  return;
4053
4211
  }
4054
4212
  if (!telemetryItem) {
4055
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
4213
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.CannotSendEmptyTelemetry, "Cannot send empty telemetry");
4056
4214
  return;
4057
4215
  }
4058
4216
  if (telemetryItem.baseData && !telemetryItem.baseType) {
4059
- 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");
4060
4218
  return;
4061
4219
  }
4062
4220
  if (!telemetryItem.baseType) {
4063
4221
  telemetryItem.baseType = "EventData";
4064
4222
  }
4065
4223
  if (!_self._sender) {
4066
- itemCtx.diagLog().throwInternal(LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
4224
+ _throwInternal(itemCtx.diagLog(), LoggingSeverity.CRITICAL, _InternalMessageId.SenderNotInitialized, "Sender was not initialized");
4067
4225
  return;
4068
4226
  }
4069
4227
  if (!_isSampledIn(telemetryItem)) {
4070
- 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 });
4071
4229
  return;
4072
4230
  }
4073
4231
  else {
@@ -4077,7 +4235,7 @@
4077
4235
  var defaultEnvelopeIkey = telemetryItem.iKey || _self._senderConfig.instrumentationKey();
4078
4236
  var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, itemCtx.diagLog(), convertUndefined);
4079
4237
  if (!aiEnvelope_1) {
4080
- 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");
4081
4239
  return;
4082
4240
  }
4083
4241
  var doNotSendItem_1 = false;
@@ -4090,7 +4248,7 @@
4090
4248
  }
4091
4249
  }
4092
4250
  catch (e) {
4093
- 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);
4094
4252
  }
4095
4253
  });
4096
4254
  delete telemetryItem.tags[ProcessLegacy];
@@ -4108,7 +4266,7 @@
4108
4266
  _setupTimer();
4109
4267
  }
4110
4268
  catch (e) {
4111
- 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) });
4112
4270
  }
4113
4271
  _self.processNext(telemetryItem, itemCtx);
4114
4272
  };
@@ -4143,13 +4301,18 @@
4143
4301
  catch (e) {
4144
4302
  var ieVer = getIEVersion();
4145
4303
  if (!ieVer || ieVer > 9) {
4146
- _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) });
4147
4305
  }
4148
4306
  }
4149
4307
  }
4150
4308
  };
4309
+ _self._doTeardown = function (unloadCtx, unloadState) {
4310
+ _self.onunloadFlush();
4311
+ _offlineListener.unload();
4312
+ _initDefaults();
4313
+ };
4151
4314
  _self._onError = function (payload, message, event) {
4152
- _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 });
4153
4316
  _self._buffer.clearSent(payload);
4154
4317
  };
4155
4318
  _self._onPartialSuccess = function (payload, results) {
@@ -4174,7 +4337,7 @@
4174
4337
  }
4175
4338
  if (retry.length > 0) {
4176
4339
  _resendPayload(retry);
4177
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
4340
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, "Partial success. " +
4178
4341
  "Delivered: " + payload.length + ", Failed: " + failed.length +
4179
4342
  ". Will retry to send " + retry.length + " our of " + results.itemsReceived + " items");
4180
4343
  }
@@ -4219,18 +4382,18 @@
4219
4382
  }
4220
4383
  if (!_self._senderConfig.isRetryDisabled() && _isRetriable(status)) {
4221
4384
  _resendPayload(payload);
4222
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4385
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4223
4386
  "Response code " + status + ". Will retry to send " + payload.length + " items.");
4224
4387
  }
4225
4388
  else {
4226
4389
  _self._onError(payload, errorMessage);
4227
4390
  }
4228
4391
  }
4229
- else if (Offline.isOffline()) {
4392
+ else if (_offlineListener && !_offlineListener.isOnline()) {
4230
4393
  if (!_self._senderConfig.isRetryDisabled()) {
4231
4394
  var offlineBackOffMultiplier = 10;
4232
4395
  _resendPayload(payload, offlineBackOffMultiplier);
4233
- _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."));
4234
4397
  }
4235
4398
  }
4236
4399
  else {
@@ -4297,8 +4460,8 @@
4297
4460
  }
4298
4461
  }
4299
4462
  if (droppedPayload.length > 0) {
4300
- _fallbackSender(droppedPayload, true);
4301
- _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.");
4302
4465
  }
4303
4466
  }
4304
4467
  }
@@ -4339,7 +4502,7 @@
4339
4502
  }
4340
4503
  else {
4341
4504
  _fallbackSender && _fallbackSender(payload, true);
4342
- _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.");
4343
4506
  }
4344
4507
  }
4345
4508
  }
@@ -4430,7 +4593,7 @@
4430
4593
  }
4431
4594
  }
4432
4595
  catch (e) {
4433
- _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), {
4434
4597
  response: response
4435
4598
  });
4436
4599
  }
@@ -4501,7 +4664,7 @@
4501
4664
  xdr.onerror = function (event) { return _self._onError(payload, _formatErrorMessageXdr(xdr), event); };
4502
4665
  var hostingProtocol = _window && _window.location && _window.location.protocol || "";
4503
4666
  if (_self._senderConfig.endpointUrl().lastIndexOf(hostingProtocol, 0) !== 0) {
4504
- _self.diagLog().throwInternal(LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4667
+ _throwInternal(_self.diagLog(), LoggingSeverity.WARNING, _InternalMessageId.TransmissionFailed, ". " +
4505
4668
  "Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.");
4506
4669
  buffer.clear();
4507
4670
  return;
@@ -4532,7 +4695,7 @@
4532
4695
  manager.eventsSendRequest(sendRequest, isAsync);
4533
4696
  }
4534
4697
  catch (e) {
4535
- _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) });
4536
4699
  }
4537
4700
  }
4538
4701
  }
@@ -4545,6 +4708,25 @@
4545
4708
  var regexp = new RegExp(UUID_Regex);
4546
4709
  return regexp.test(config.instrumentationKey);
4547
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
+ }
4548
4730
  });
4549
4731
  return _this;
4550
4732
  }