@microsoft/applicationinsights-offlinechannel-js 0.2.2-nightly3.2405-28 → 0.2.2-nightly3.2405-29
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/dist/es5/applicationinsights-offlinechannel-js.js +153 -122
- package/dist/es5/applicationinsights-offlinechannel-js.js.map +1 -1
- package/dist/es5/applicationinsights-offlinechannel-js.min.js +2 -2
- package/dist/es5/applicationinsights-offlinechannel-js.min.js.map +1 -1
- package/dist-es5/Helpers/Utils.js +1 -1
- package/dist-es5/InMemoryBatch.js +1 -1
- package/dist-es5/Interfaces/IInMemoryBatch.js +1 -1
- package/dist-es5/Interfaces/IOfflineBatch.js +18 -2
- package/dist-es5/Interfaces/IOfflineBatch.js.map +1 -1
- package/dist-es5/Interfaces/IOfflineIndexDb.js +1 -1
- package/dist-es5/Interfaces/IOfflineProvider.js +7 -2
- package/dist-es5/Interfaces/IOfflineProvider.js.map +1 -1
- package/dist-es5/Interfaces/ISender.js +1 -1
- package/dist-es5/OfflineBatchHandler.js +3 -3
- package/dist-es5/OfflineBatchHandler.js.map +1 -1
- package/dist-es5/OfflineChannel.js +9 -4
- package/dist-es5/OfflineChannel.js.map +1 -1
- package/dist-es5/PayloadHelper.js +1 -1
- package/dist-es5/Providers/IndexDbHelper.js +1 -1
- package/dist-es5/Providers/IndexDbProvider.js +1 -1
- package/dist-es5/Providers/WebStorageProvider.js +1 -1
- package/dist-es5/Sender.js +1 -1
- package/dist-es5/__DynamicConstants.js +2 -1
- package/dist-es5/__DynamicConstants.js.map +1 -1
- package/dist-es5/applicationinsights-offlinechannel-js.js +3 -1
- package/dist-es5/applicationinsights-offlinechannel-js.js.map +1 -1
- package/package.json +3 -3
- package/types/applicationinsights-offlinechannel-js.d.ts +22 -1
- package/types/applicationinsights-offlinechannel-js.namespaced.d.ts +21 -1
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-
|
|
2
|
+
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-29
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import { createEnumStyle } from "@microsoft/applicationinsights-core-js";
|
|
8
|
+
export var StorageType = createEnumStyle({
|
|
9
|
+
Unknown: 0 /* eStorageType.Unknown */,
|
|
10
|
+
LocalStorage: 1 /* eStorageType.LocalStorage */,
|
|
11
|
+
SessionStorage: 2 /* eStorageType.SessionStorage */,
|
|
12
|
+
IndexDb: 3 /* eStorageType.IndexDb */
|
|
13
|
+
});
|
|
14
|
+
export var BatchSendStatus = createEnumStyle({
|
|
15
|
+
Complete: 1 /* eBatchSendStatus.Complete */,
|
|
16
|
+
Retry: 2 /* eBatchSendStatus.Retry */,
|
|
17
|
+
Drop: 3 /* eBatchSendStatus.Drop */,
|
|
18
|
+
Failure: 4 /* eBatchSendStatus.Failure */
|
|
19
|
+
});
|
|
20
|
+
export var BatchStoreStatus = createEnumStyle({
|
|
21
|
+
Success: 1 /* eBatchStoreStatus.Success */,
|
|
22
|
+
Failure: 2 /* eBatchStoreStatus.Failure */
|
|
23
|
+
});
|
|
8
24
|
//export declare type createOfflineBatchHandler = (storageType: eStorageType, cfg?: IOfflineBatchHandlerCfg) => IOfflineBatchHandler;
|
|
9
25
|
//# sourceMappingURL=IOfflineBatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IOfflineBatch.js.map","sources":["IOfflineBatch.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport {};\r\n//export declare type createOfflineBatchHandler = (storageType: eStorageType, cfg?: IOfflineBatchHandlerCfg) => IOfflineBatchHandler;\r\n//# sourceMappingURL=IOfflineBatch.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"IOfflineBatch.js.map","sources":["IOfflineBatch.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n Unknown: 0 /* eStorageType.Unknown */,\r\n LocalStorage: 1 /* eStorageType.LocalStorage */,\r\n SessionStorage: 2 /* eStorageType.SessionStorage */,\r\n IndexDb: 3 /* eStorageType.IndexDb */\r\n});\r\nexport var BatchSendStatus = createEnumStyle({\r\n Complete: 1 /* eBatchSendStatus.Complete */,\r\n Retry: 2 /* eBatchSendStatus.Retry */,\r\n Drop: 3 /* eBatchSendStatus.Drop */,\r\n Failure: 4 /* eBatchSendStatus.Failure */\r\n});\r\nexport var BatchStoreStatus = createEnumStyle({\r\n Success: 1 /* eBatchStoreStatus.Success */,\r\n Failure: 2 /* eBatchStoreStatus.Failure */\r\n});\r\n//export declare type createOfflineBatchHandler = (storageType: eStorageType, cfg?: IOfflineBatchHandlerCfg) => IOfflineBatchHandler;\r\n//# sourceMappingURL=IOfflineBatch.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-
|
|
2
|
+
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-29
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import { createEnumStyle } from "@microsoft/applicationinsights-core-js";
|
|
8
|
+
export var StorageProviders = createEnumStyle({
|
|
9
|
+
LocalStorage: 1 /* eStorageProviders.LocalStorage */,
|
|
10
|
+
SessionStorage: 2 /* eStorageProviders.SessionStorage */,
|
|
11
|
+
IndexedDb: 3 /* eStorageProviders.IndexedDb */
|
|
12
|
+
});
|
|
8
13
|
//# sourceMappingURL=IOfflineProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IOfflineProvider.js.map","sources":["IOfflineProvider.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport {};\r\n//# sourceMappingURL=IOfflineProvider.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA"}
|
|
1
|
+
{"version":3,"file":"IOfflineProvider.js.map","sources":["IOfflineProvider.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageProviders = createEnumStyle({\r\n LocalStorage: 1 /* eStorageProviders.LocalStorage */,\r\n SessionStorage: 2 /* eStorageProviders.SessionStorage */,\r\n IndexedDb: 3 /* eStorageProviders.IndexedDb */\r\n});\r\n//# sourceMappingURL=IOfflineProvider.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-
|
|
2
|
+
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-29
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -9,7 +9,7 @@ import { isNullOrUndefined, isObject } from "@microsoft/applicationinsights-core
|
|
|
9
9
|
import { createPromise, doAwaitResponse } from "@nevware21/ts-async";
|
|
10
10
|
import { IndexedDbProvider } from "./Providers/IndexDbProvider";
|
|
11
11
|
import { WebStorageProvider } from "./Providers/WebStorageProvider";
|
|
12
|
-
import { _DYN_ADD_EVENT, _DYN_ATTEMP_CNT, _DYN_CLEAR, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_NEXT_BATCH, _DYN_INDEX_OF, _DYN_INITIALIZE, _DYN_IS_ARR, _DYN_ITEM_CTX, _DYN_LENGTH, _DYN_REJECTED, _DYN_REMOVE_EVENTS, _DYN_SEND_POST, _DYN_STATE, _DYN_STORAGE_CONFIG, _DYN_TEARDOWN, _DYN_VALUE } from "./__DynamicConstants";
|
|
12
|
+
import { _DYN_ADD_EVENT, _DYN_ATTEMP_CNT, _DYN_CLEAR, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_NEXT_BATCH, _DYN_INDEX_OF, _DYN_INITIALIZE, _DYN_IS_ARR, _DYN_ITEM_CTX, _DYN_LENGTH, _DYN_REJECTED, _DYN_REMOVE_EVENTS, _DYN_SEND_NEXT_BATCH, _DYN_SEND_POST, _DYN_STATE, _DYN_STORAGE_CONFIG, _DYN_TEARDOWN, _DYN_VALUE } from "./__DynamicConstants";
|
|
13
13
|
var MaxStorageProviderConfig = 2;
|
|
14
14
|
var NoProviderErrMsg = "No provider is available";
|
|
15
15
|
var OfflineBatchHandler = /** @class */ (function () {
|
|
@@ -79,7 +79,7 @@ var OfflineBatchHandler = /** @class */ (function () {
|
|
|
79
79
|
});
|
|
80
80
|
});
|
|
81
81
|
};
|
|
82
|
-
_self
|
|
82
|
+
_self[_DYN_SEND_NEXT_BATCH /* @min:%2esendNextBatch */] = function (cb, sync, xhrOverride, cnt) {
|
|
83
83
|
if (cnt === void 0) { cnt = 1; }
|
|
84
84
|
return createPromise(function (resolve, reject) {
|
|
85
85
|
if (!_provider && !_unloadProvider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OfflineBatchHandler.js.map","sources":["OfflineBatchHandler.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isNullOrUndefined, isObject } from \"@microsoft/applicationinsights-core-js\";\r\nimport { createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { IndexedDbProvider } from \"./Providers/IndexDbProvider\";\r\nimport { WebStorageProvider } from \"./Providers/WebStorageProvider\";\r\nimport { _DYN_ADD_EVENT, _DYN_ATTEMP_CNT, _DYN_CLEAR, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_NEXT_BATCH, _DYN_INDEX_OF, _DYN_INITIALIZE, _DYN_IS_ARR, _DYN_ITEM_CTX, _DYN_LENGTH, _DYN_REJECTED, _DYN_REMOVE_EVENTS, _DYN_SEND_POST, _DYN_STATE, _DYN_STORAGE_CONFIG, _DYN_TEARDOWN, _DYN_VALUE } from \"./__DynamicConstants\";\r\nvar MaxStorageProviderConfig = 2;\r\nvar NoProviderErrMsg = \"No provider is available\";\r\nvar OfflineBatchHandler = /** @class */ (function () {\r\n function OfflineBatchHandler(logger, unloadHookContainer) {\r\n dynamicProto(OfflineBatchHandler, this, function (_self) {\r\n var _isInitialized;\r\n var _logger;\r\n var _provider;\r\n var _unloadProvider;\r\n var _itemCtx;\r\n var _maxRetryCnt;\r\n var _retryCodes;\r\n _initDefaults();\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (providerContext) {\r\n // TODO: handle provider change\r\n try {\r\n if (!_isInitialized) {\r\n _logger = logger || providerContext.itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _itemCtx = providerContext[_DYN_ITEM_CTX /* @min:%2eitemCtx */];\r\n _provider = _initProvider(providerContext);\r\n var storeCfg = providerContext[_DYN_STORAGE_CONFIG /* @min:%2estorageConfig */] || {};\r\n var retry = storeCfg.maxRetry;\r\n _maxRetryCnt = !isNullOrUndefined(retry) ? retry : 2;\r\n _retryCodes = (storeCfg.senderCfg || {}).retryCodes;\r\n if (_provider) {\r\n _isInitialized = true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _isInitialized = false;\r\n }\r\n return _isInitialized;\r\n };\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_provider, _isInitialized, _unloadProvider];\r\n };\r\n _self.storeBatch = function (batch, cb, sync) {\r\n var provider = _provider;\r\n if (!!sync) {\r\n provider = _unloadProvider;\r\n }\r\n return createPromise(function (resolve, reject) {\r\n if (!provider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n var evt = _getOfflineEvt(batch);\r\n return doAwaitResponse(provider[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt.id, evt, _itemCtx), function (response) {\r\n try {\r\n var evt_1 = response[_DYN_VALUE /* @min:%2evalue */] || response.reason || [];\r\n var state = 2 /* eBatchStoreStatus.Failure */;\r\n if (!response[_DYN_REJECTED /* @min:%2erejected */]) {\r\n state = 1 /* eBatchStoreStatus.Success */;\r\n }\r\n var res = { state: state, item: evt_1 };\r\n try {\r\n cb && cb(res);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n resolve(res);\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n };\r\n _self.sendNextBatch = function (cb, sync, xhrOverride, cnt) {\r\n if (cnt === void 0) { cnt = 1; }\r\n return createPromise(function (resolve, reject) {\r\n if (!_provider && !_unloadProvider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n function storeResolve(result) {\r\n try {\r\n cb && cb(result);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n resolve(result);\r\n }\r\n var provider = _provider;\r\n try {\r\n if (_unloadProvider) {\r\n doAwaitResponse(_unloadProvider[_DYN_GET_NEXT_BATCH /* @min:%2egetNextBatch */](), function (res) {\r\n if (res && !res[_DYN_REJECTED /* @min:%2erejected */]) {\r\n var unloadEvts = res[_DYN_VALUE /* @min:%2evalue */];\r\n if (unloadEvts && unloadEvts[_DYN_LENGTH /* @min:%2elength */]) {\r\n // always try to send ones from local storage\r\n provider = _unloadProvider;\r\n return _handleNextBatch(unloadEvts);\r\n }\r\n }\r\n return _sendNextBatch();\r\n });\r\n }\r\n else {\r\n return _sendNextBatch();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n reject(e);\r\n }\r\n function _sendNextBatch() {\r\n return doAwaitResponse(provider[_DYN_GET_NEXT_BATCH /* @min:%2egetNextBatch */](), function (response) {\r\n try {\r\n if (!response || response[_DYN_REJECTED /* @min:%2erejected */]) {\r\n var res = { state: 4 /* eBatchSendStatus.Failure */, data: response.reason };\r\n storeResolve(res);\r\n return;\r\n }\r\n var evts = response[_DYN_VALUE /* @min:%2evalue */] || [];\r\n return _handleNextBatch(evts);\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n function _handleNextBatch(evts) {\r\n var result = { state: 1 /* eBatchSendStatus.Complete */, data: null };\r\n if (evts[_DYN_LENGTH /* @min:%2elength */]) {\r\n // make sure doawait has resolve\r\n return doAwaitResponse(provider[_DYN_REMOVE_EVENTS /* @min:%2eremoveEvents */](evts), function (res) {\r\n if (res && !res.rejected && res[_DYN_VALUE /* @min:%2evalue */]) {\r\n var deletedItems = res[_DYN_VALUE /* @min:%2evalue */];\r\n var _loop_1 = function (lp) {\r\n try {\r\n var evt_2 = evts[lp];\r\n result[_DYN_DATA /* @min:%2edata */] = evt_2; // add data\r\n if (xhrOverride && xhrOverride[_DYN_SEND_POST /* @min:%2esendPOST */]) {\r\n evt_2[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */]++;\r\n var sender = xhrOverride[_DYN_SEND_POST /* @min:%2esendPOST */]; // use transports\r\n var onCompleteCallback = function (status, headers, res) {\r\n if (status == 200) { // status code (e.g: invalid key) drop payload\r\n result[_DYN_STATE /* @min:%2estate */] = 1 /* eBatchSendStatus.Complete */;\r\n }\r\n else {\r\n var isRetriable = _isRetriable(evt_2, status);\r\n if (isRetriable) {\r\n result[_DYN_STATE /* @min:%2estate */] = 2 /* eBatchSendStatus.Retry */;\r\n _unloadProvider && _unloadProvider[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt_2.id, evt_2, _itemCtx);\r\n }\r\n else {\r\n result[_DYN_STATE /* @min:%2estate */] = 3 /* eBatchSendStatus.Drop */;\r\n }\r\n }\r\n storeResolve(result);\r\n };\r\n return { value: doAwaitResponse(sender(evt_2, onCompleteCallback, sync), function (res) {\r\n // do nothing, because it should be resolved in callback\r\n }) };\r\n }\r\n // call resolve\r\n result[_DYN_STATE /* @min:%2estate */] = 3 /* eBatchSendStatus.Drop */;\r\n storeResolve(result);\r\n return { value: void 0 };\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n for (var lp = 0; lp < deletedItems[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var state_1 = _loop_1(lp);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n // this case should never happen because this function is called after we confirm that evt is available\r\n // add resolve here in case\r\n result[_DYN_STATE /* @min:%2estate */] = 1 /* eBatchSendStatus.Complete */;\r\n storeResolve(result);\r\n return;\r\n }\r\n // if can not delete first, resolve\r\n result[_DYN_STATE /* @min:%2estate */] = 4 /* eBatchSendStatus.Failure */;\r\n result[_DYN_DATA /* @min:%2edata */] = res.reason;\r\n storeResolve(result);\r\n return;\r\n });\r\n }\r\n storeResolve(result);\r\n }\r\n });\r\n };\r\n _self.hasStoredBatch = function (cb) {\r\n return createPromise(function (resolve, reject) {\r\n if (!_provider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n return doAwaitResponse(_provider[_DYN_GET_NEXT_BATCH /* @min:%2egetNextBatch */](), function (response) {\r\n try {\r\n var evts = response[_DYN_VALUE /* @min:%2evalue */] || [];\r\n var hasEvts = evts[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n cb && cb(hasEvts);\r\n resolve(hasEvts);\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n };\r\n _self.cleanStorage = function (cb) {\r\n return createPromise(function (resolve, reject) {\r\n // note: doawaitresponse currently returns undefined\r\n if (!_provider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n return doAwaitResponse(_provider[_DYN_CLEAR /* @min:%2eclear */](), function (response) {\r\n try {\r\n var cnt = 0;\r\n if (!response[_DYN_REJECTED /* @min:%2erejected */]) {\r\n var evts = response[_DYN_VALUE /* @min:%2evalue */] || [];\r\n cnt = evts[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n var res = { batchCnt: cnt };\r\n cb && cb(res); // get value. make sure to use callback\r\n resolve(res); // won't get val\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n _provider && _provider[_DYN_TEARDOWN /* @min:%2eteardown */]();\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _provider = null;\r\n _unloadProvider = null;\r\n _isInitialized = false;\r\n _maxRetryCnt = null;\r\n _retryCodes = null;\r\n }\r\n function _tryGetIndexedDbProvider(providerContext) {\r\n var newProvider = new IndexedDbProvider(undefined, unloadHookContainer);\r\n if (!newProvider[_DYN_INITIALIZE /* @min:%2einitialize */](providerContext)) {\r\n // Failed to initialize the provider\r\n newProvider = null;\r\n }\r\n return newProvider;\r\n }\r\n function _tryGetWebStorageProvider(storageType, providerContext) {\r\n var newProvider = new WebStorageProvider(storageType, undefined, unloadHookContainer);\r\n if (!newProvider[_DYN_INITIALIZE /* @min:%2einitialize */](providerContext)) {\r\n // Failed to initialize the provider\r\n newProvider = null;\r\n }\r\n return newProvider;\r\n }\r\n function _initProvider(providerContext) {\r\n var providers = providerContext[_DYN_STORAGE_CONFIG /* @min:%2estorageConfig */].providers;\r\n var newProvider = null;\r\n var lp = 0;\r\n while (!newProvider && lp < providers[_DYN_LENGTH /* @min:%2elength */] && lp < MaxStorageProviderConfig) {\r\n switch (providers[lp++]) {\r\n case 1 /* eStorageProviders.LocalStorage */:\r\n newProvider = _tryGetWebStorageProvider(\"localStorage\", providerContext);\r\n _unloadProvider = newProvider;\r\n break;\r\n case 2 /* eStorageProviders.SessionStorage */:\r\n newProvider = _tryGetWebStorageProvider(\"sessionStorage\", providerContext);\r\n _unloadProvider = newProvider;\r\n break;\r\n case 3 /* eStorageProviders.IndexedDb */:\r\n newProvider = _tryGetIndexedDbProvider(providerContext);\r\n _unloadProvider = _tryGetWebStorageProvider(\"localStorage\", providerContext);\r\n }\r\n }\r\n return newProvider;\r\n }\r\n function _getOfflineEvt(batch) {\r\n var item = batch;\r\n // TODO: add details\r\n var data = item[_DYN_DATA /* @min:%2edata */];\r\n if (data) {\r\n var isArr = isObject(data);\r\n item[_DYN_IS_ARR /* @min:%2eisArr */] = isArr;\r\n }\r\n return item;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(item, statusCode) {\r\n if (!_shouldSend(item)) {\r\n return false;\r\n }\r\n // retryCodes = [] means should not retry\r\n if (!isNullOrUndefined(_retryCodes)) {\r\n return _retryCodes[_DYN_LENGTH /* @min:%2elength */] && _retryCodes[_DYN_INDEX_OF /* @min:%2eindexOf */](statusCode) > -1;\r\n }\r\n return statusCode === 401 // Unauthorized\r\n || statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _shouldSend(item) {\r\n if (item && item[_DYN_DATA /* @min:%2edata */]) {\r\n item[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */] = item[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */] || 0;\r\n return item[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */] <= _maxRetryCnt;\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n /**\r\n * Initializes the provider using the config\r\n * @returns True if the provider is initialized and available for use otherwise false\r\n */\r\n OfflineBatchHandler.prototype.initialize = function (providerContext) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.storeBatch = function (batch, cb, sync) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.sendNextBatch = function (cb, sync, xhrOverride, cnt) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.hasStoredBatch = function (callback) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.cleanStorage = function (cb) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.teardown = function (unloadCtx, unloadState) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return OfflineBatchHandler;\r\n}());\r\nexport { OfflineBatchHandler };\r\n//# sourceMappingURL=OfflineBatchHandler.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;2DA2BM,CAAC;;;;;+BACwB;AAC/B;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"OfflineBatchHandler.js.map","sources":["OfflineBatchHandler.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { isNullOrUndefined, isObject } from \"@microsoft/applicationinsights-core-js\";\r\nimport { createPromise, doAwaitResponse } from \"@nevware21/ts-async\";\r\nimport { IndexedDbProvider } from \"./Providers/IndexDbProvider\";\r\nimport { WebStorageProvider } from \"./Providers/WebStorageProvider\";\r\nimport { _DYN_ADD_EVENT, _DYN_ATTEMP_CNT, _DYN_CLEAR, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_NEXT_BATCH, _DYN_INDEX_OF, _DYN_INITIALIZE, _DYN_IS_ARR, _DYN_ITEM_CTX, _DYN_LENGTH, _DYN_REJECTED, _DYN_REMOVE_EVENTS, _DYN_SEND_NEXT_BATCH, _DYN_SEND_POST, _DYN_STATE, _DYN_STORAGE_CONFIG, _DYN_TEARDOWN, _DYN_VALUE } from \"./__DynamicConstants\";\r\nvar MaxStorageProviderConfig = 2;\r\nvar NoProviderErrMsg = \"No provider is available\";\r\nvar OfflineBatchHandler = /** @class */ (function () {\r\n function OfflineBatchHandler(logger, unloadHookContainer) {\r\n dynamicProto(OfflineBatchHandler, this, function (_self) {\r\n var _isInitialized;\r\n var _logger;\r\n var _provider;\r\n var _unloadProvider;\r\n var _itemCtx;\r\n var _maxRetryCnt;\r\n var _retryCodes;\r\n _initDefaults();\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (providerContext) {\r\n // TODO: handle provider change\r\n try {\r\n if (!_isInitialized) {\r\n _logger = logger || providerContext.itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _itemCtx = providerContext[_DYN_ITEM_CTX /* @min:%2eitemCtx */];\r\n _provider = _initProvider(providerContext);\r\n var storeCfg = providerContext[_DYN_STORAGE_CONFIG /* @min:%2estorageConfig */] || {};\r\n var retry = storeCfg.maxRetry;\r\n _maxRetryCnt = !isNullOrUndefined(retry) ? retry : 2;\r\n _retryCodes = (storeCfg.senderCfg || {}).retryCodes;\r\n if (_provider) {\r\n _isInitialized = true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _isInitialized = false;\r\n }\r\n return _isInitialized;\r\n };\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_provider, _isInitialized, _unloadProvider];\r\n };\r\n _self.storeBatch = function (batch, cb, sync) {\r\n var provider = _provider;\r\n if (!!sync) {\r\n provider = _unloadProvider;\r\n }\r\n return createPromise(function (resolve, reject) {\r\n if (!provider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n var evt = _getOfflineEvt(batch);\r\n return doAwaitResponse(provider[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt.id, evt, _itemCtx), function (response) {\r\n try {\r\n var evt_1 = response[_DYN_VALUE /* @min:%2evalue */] || response.reason || [];\r\n var state = 2 /* eBatchStoreStatus.Failure */;\r\n if (!response[_DYN_REJECTED /* @min:%2erejected */]) {\r\n state = 1 /* eBatchStoreStatus.Success */;\r\n }\r\n var res = { state: state, item: evt_1 };\r\n try {\r\n cb && cb(res);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n resolve(res);\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_SEND_NEXT_BATCH /* @min:%2esendNextBatch */] = function (cb, sync, xhrOverride, cnt) {\r\n if (cnt === void 0) { cnt = 1; }\r\n return createPromise(function (resolve, reject) {\r\n if (!_provider && !_unloadProvider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n function storeResolve(result) {\r\n try {\r\n cb && cb(result);\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n resolve(result);\r\n }\r\n var provider = _provider;\r\n try {\r\n if (_unloadProvider) {\r\n doAwaitResponse(_unloadProvider[_DYN_GET_NEXT_BATCH /* @min:%2egetNextBatch */](), function (res) {\r\n if (res && !res[_DYN_REJECTED /* @min:%2erejected */]) {\r\n var unloadEvts = res[_DYN_VALUE /* @min:%2evalue */];\r\n if (unloadEvts && unloadEvts[_DYN_LENGTH /* @min:%2elength */]) {\r\n // always try to send ones from local storage\r\n provider = _unloadProvider;\r\n return _handleNextBatch(unloadEvts);\r\n }\r\n }\r\n return _sendNextBatch();\r\n });\r\n }\r\n else {\r\n return _sendNextBatch();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n reject(e);\r\n }\r\n function _sendNextBatch() {\r\n return doAwaitResponse(provider[_DYN_GET_NEXT_BATCH /* @min:%2egetNextBatch */](), function (response) {\r\n try {\r\n if (!response || response[_DYN_REJECTED /* @min:%2erejected */]) {\r\n var res = { state: 4 /* eBatchSendStatus.Failure */, data: response.reason };\r\n storeResolve(res);\r\n return;\r\n }\r\n var evts = response[_DYN_VALUE /* @min:%2evalue */] || [];\r\n return _handleNextBatch(evts);\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n }\r\n function _handleNextBatch(evts) {\r\n var result = { state: 1 /* eBatchSendStatus.Complete */, data: null };\r\n if (evts[_DYN_LENGTH /* @min:%2elength */]) {\r\n // make sure doawait has resolve\r\n return doAwaitResponse(provider[_DYN_REMOVE_EVENTS /* @min:%2eremoveEvents */](evts), function (res) {\r\n if (res && !res.rejected && res[_DYN_VALUE /* @min:%2evalue */]) {\r\n var deletedItems = res[_DYN_VALUE /* @min:%2evalue */];\r\n var _loop_1 = function (lp) {\r\n try {\r\n var evt_2 = evts[lp];\r\n result[_DYN_DATA /* @min:%2edata */] = evt_2; // add data\r\n if (xhrOverride && xhrOverride[_DYN_SEND_POST /* @min:%2esendPOST */]) {\r\n evt_2[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */]++;\r\n var sender = xhrOverride[_DYN_SEND_POST /* @min:%2esendPOST */]; // use transports\r\n var onCompleteCallback = function (status, headers, res) {\r\n if (status == 200) { // status code (e.g: invalid key) drop payload\r\n result[_DYN_STATE /* @min:%2estate */] = 1 /* eBatchSendStatus.Complete */;\r\n }\r\n else {\r\n var isRetriable = _isRetriable(evt_2, status);\r\n if (isRetriable) {\r\n result[_DYN_STATE /* @min:%2estate */] = 2 /* eBatchSendStatus.Retry */;\r\n _unloadProvider && _unloadProvider[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt_2.id, evt_2, _itemCtx);\r\n }\r\n else {\r\n result[_DYN_STATE /* @min:%2estate */] = 3 /* eBatchSendStatus.Drop */;\r\n }\r\n }\r\n storeResolve(result);\r\n };\r\n return { value: doAwaitResponse(sender(evt_2, onCompleteCallback, sync), function (res) {\r\n // do nothing, because it should be resolved in callback\r\n }) };\r\n }\r\n // call resolve\r\n result[_DYN_STATE /* @min:%2estate */] = 3 /* eBatchSendStatus.Drop */;\r\n storeResolve(result);\r\n return { value: void 0 };\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n };\r\n for (var lp = 0; lp < deletedItems[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var state_1 = _loop_1(lp);\r\n if (typeof state_1 === \"object\")\r\n return state_1.value;\r\n }\r\n // this case should never happen because this function is called after we confirm that evt is available\r\n // add resolve here in case\r\n result[_DYN_STATE /* @min:%2estate */] = 1 /* eBatchSendStatus.Complete */;\r\n storeResolve(result);\r\n return;\r\n }\r\n // if can not delete first, resolve\r\n result[_DYN_STATE /* @min:%2estate */] = 4 /* eBatchSendStatus.Failure */;\r\n result[_DYN_DATA /* @min:%2edata */] = res.reason;\r\n storeResolve(result);\r\n return;\r\n });\r\n }\r\n storeResolve(result);\r\n }\r\n });\r\n };\r\n _self.hasStoredBatch = function (cb) {\r\n return createPromise(function (resolve, reject) {\r\n if (!_provider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n return doAwaitResponse(_provider[_DYN_GET_NEXT_BATCH /* @min:%2egetNextBatch */](), function (response) {\r\n try {\r\n var evts = response[_DYN_VALUE /* @min:%2evalue */] || [];\r\n var hasEvts = evts[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n cb && cb(hasEvts);\r\n resolve(hasEvts);\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n };\r\n _self.cleanStorage = function (cb) {\r\n return createPromise(function (resolve, reject) {\r\n // note: doawaitresponse currently returns undefined\r\n if (!_provider) {\r\n reject(new Error(NoProviderErrMsg));\r\n }\r\n return doAwaitResponse(_provider[_DYN_CLEAR /* @min:%2eclear */](), function (response) {\r\n try {\r\n var cnt = 0;\r\n if (!response[_DYN_REJECTED /* @min:%2erejected */]) {\r\n var evts = response[_DYN_VALUE /* @min:%2evalue */] || [];\r\n cnt = evts[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n var res = { batchCnt: cnt };\r\n cb && cb(res); // get value. make sure to use callback\r\n resolve(res); // won't get val\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n _provider && _provider[_DYN_TEARDOWN /* @min:%2eteardown */]();\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _provider = null;\r\n _unloadProvider = null;\r\n _isInitialized = false;\r\n _maxRetryCnt = null;\r\n _retryCodes = null;\r\n }\r\n function _tryGetIndexedDbProvider(providerContext) {\r\n var newProvider = new IndexedDbProvider(undefined, unloadHookContainer);\r\n if (!newProvider[_DYN_INITIALIZE /* @min:%2einitialize */](providerContext)) {\r\n // Failed to initialize the provider\r\n newProvider = null;\r\n }\r\n return newProvider;\r\n }\r\n function _tryGetWebStorageProvider(storageType, providerContext) {\r\n var newProvider = new WebStorageProvider(storageType, undefined, unloadHookContainer);\r\n if (!newProvider[_DYN_INITIALIZE /* @min:%2einitialize */](providerContext)) {\r\n // Failed to initialize the provider\r\n newProvider = null;\r\n }\r\n return newProvider;\r\n }\r\n function _initProvider(providerContext) {\r\n var providers = providerContext[_DYN_STORAGE_CONFIG /* @min:%2estorageConfig */].providers;\r\n var newProvider = null;\r\n var lp = 0;\r\n while (!newProvider && lp < providers[_DYN_LENGTH /* @min:%2elength */] && lp < MaxStorageProviderConfig) {\r\n switch (providers[lp++]) {\r\n case 1 /* eStorageProviders.LocalStorage */:\r\n newProvider = _tryGetWebStorageProvider(\"localStorage\", providerContext);\r\n _unloadProvider = newProvider;\r\n break;\r\n case 2 /* eStorageProviders.SessionStorage */:\r\n newProvider = _tryGetWebStorageProvider(\"sessionStorage\", providerContext);\r\n _unloadProvider = newProvider;\r\n break;\r\n case 3 /* eStorageProviders.IndexedDb */:\r\n newProvider = _tryGetIndexedDbProvider(providerContext);\r\n _unloadProvider = _tryGetWebStorageProvider(\"localStorage\", providerContext);\r\n }\r\n }\r\n return newProvider;\r\n }\r\n function _getOfflineEvt(batch) {\r\n var item = batch;\r\n // TODO: add details\r\n var data = item[_DYN_DATA /* @min:%2edata */];\r\n if (data) {\r\n var isArr = isObject(data);\r\n item[_DYN_IS_ARR /* @min:%2eisArr */] = isArr;\r\n }\r\n return item;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(item, statusCode) {\r\n if (!_shouldSend(item)) {\r\n return false;\r\n }\r\n // retryCodes = [] means should not retry\r\n if (!isNullOrUndefined(_retryCodes)) {\r\n return _retryCodes[_DYN_LENGTH /* @min:%2elength */] && _retryCodes[_DYN_INDEX_OF /* @min:%2eindexOf */](statusCode) > -1;\r\n }\r\n return statusCode === 401 // Unauthorized\r\n || statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _shouldSend(item) {\r\n if (item && item[_DYN_DATA /* @min:%2edata */]) {\r\n item[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */] = item[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */] || 0;\r\n return item[_DYN_ATTEMP_CNT /* @min:%2eattempCnt */] <= _maxRetryCnt;\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n /**\r\n * Initializes the provider using the config\r\n * @returns True if the provider is initialized and available for use otherwise false\r\n */\r\n OfflineBatchHandler.prototype.initialize = function (providerContext) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.storeBatch = function (batch, cb, sync) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.sendNextBatch = function (cb, sync, xhrOverride, cnt) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.hasStoredBatch = function (callback) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.cleanStorage = function (cb) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n OfflineBatchHandler.prototype.teardown = function (unloadCtx, unloadState) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return OfflineBatchHandler;\r\n}());\r\nexport { OfflineBatchHandler };\r\n//# sourceMappingURL=OfflineBatchHandler.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;2DA2BM,CAAC;;;;;+BACwB;AAC/B;AACA;AACA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-
|
|
2
|
+
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-29
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -15,8 +15,8 @@ import { InMemoryBatch } from "./InMemoryBatch";
|
|
|
15
15
|
import { OfflineBatchHandler } from "./OfflineBatchHandler";
|
|
16
16
|
import { isValidPersistenceLevel } from "./Providers/IndexDbProvider";
|
|
17
17
|
import { Sender } from "./Sender";
|
|
18
|
-
import { _DYN_ADD_EVENT, _DYN_BATCH_HANDLER, _DYN_CANCEL, _DYN_CLEAR, _DYN_COUNT, _DYN_CREATE_ONE_DSPAYLOAD, _DYN_CRITICAL_CNT, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_ITEMS, _DYN_GET_OFFLINE_SUPPORT, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_COMPLETELY_IDLE, _DYN_IS_ONLINE, _DYN_LENGTH, _DYN_MIN_PERSISTENCE_CACH0, _DYN_ONUNLOAD_FLUSH, _DYN_OVERRIDE_INSTRUMENTA1, _DYN_PERSISTENCE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REFRESH, _DYN_STATE, _DYN_TEARDOWN } from "./__DynamicConstants";
|
|
19
|
-
var version = '0.2.2-nightly3.2405-
|
|
18
|
+
import { _DYN_ADD_EVENT, _DYN_BATCH_HANDLER, _DYN_CANCEL, _DYN_CLEAR, _DYN_COUNT, _DYN_CREATE_ONE_DSPAYLOAD, _DYN_CRITICAL_CNT, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_ITEMS, _DYN_GET_OFFLINE_SUPPORT, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_COMPLETELY_IDLE, _DYN_IS_ONLINE, _DYN_LENGTH, _DYN_MIN_PERSISTENCE_CACH0, _DYN_ONUNLOAD_FLUSH, _DYN_OVERRIDE_INSTRUMENTA1, _DYN_PERSISTENCE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REFRESH, _DYN_SEND_NEXT_BATCH, _DYN_STATE, _DYN_TEARDOWN } from "./__DynamicConstants";
|
|
19
|
+
var version = '0.2.2-nightly3.2405-29';
|
|
20
20
|
var DefaultOfflineIdentifier = "OfflineChannel";
|
|
21
21
|
var DefaultBatchInterval = 15000;
|
|
22
22
|
var DefaultInMemoMaxTime = 15000;
|
|
@@ -182,6 +182,10 @@ var OfflineChannel = /** @class */ (function (_super) {
|
|
|
182
182
|
_self.getOfflineListener = function () {
|
|
183
183
|
return _offlineListener;
|
|
184
184
|
};
|
|
185
|
+
_self[_DYN_SEND_NEXT_BATCH /* @min:%2esendNextBatch */] = function () {
|
|
186
|
+
// TODO: add callback function
|
|
187
|
+
return _setSendNextTimer();
|
|
188
|
+
};
|
|
185
189
|
_self._doTeardown = function (unloadCtx, unloadState) {
|
|
186
190
|
_self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();
|
|
187
191
|
_offlineListener && runTargetUnload(_offlineListener, false);
|
|
@@ -341,7 +345,7 @@ var OfflineChannel = /** @class */ (function (_super) {
|
|
|
341
345
|
batchDropNotification(_notificationManager, 1, 1 /* eBatchDiscardedReason.NonRetryableStatus */);
|
|
342
346
|
}
|
|
343
347
|
};
|
|
344
|
-
var promise = _urlCfg[
|
|
348
|
+
var promise = _urlCfg.batchHandler[_DYN_SEND_NEXT_BATCH /* @min:%2esendNextBatch */](callback, false, _senderInst);
|
|
345
349
|
_queueStorageEvent("sendNextBatch", promise);
|
|
346
350
|
}
|
|
347
351
|
}
|
|
@@ -558,6 +562,7 @@ var OfflineChannel = /** @class */ (function (_super) {
|
|
|
558
562
|
// Removed Stub for OfflineChannel.prototype.getOfflineListener.
|
|
559
563
|
// Removed Stub for OfflineChannel.prototype.flush.
|
|
560
564
|
// Removed Stub for OfflineChannel.prototype.onunloadFlush.
|
|
565
|
+
// Removed Stub for OfflineChannel.prototype.sendNextBatch.
|
|
561
566
|
// This is a workaround for an IE bug when using dynamicProto() with classes that don't have any
|
|
562
567
|
// non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.
|
|
563
568
|
OfflineChannel.__ieDyn=1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OfflineChannel.js.map","sources":["OfflineChannel.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, EventPersistence, createOfflineListener } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, EventsDiscardedReason, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dateNow, mergeEvtNamespace, onConfigChange, runTargetUnload } from \"@microsoft/applicationinsights-core-js\";\r\nimport { createAsyncPromise, createTaskScheduler } from \"@nevware21/ts-async\";\r\nimport { isFunction, objDeepFreeze, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { EVT_DISCARD_STR, EVT_SENT_STR, EVT_STORE_STR, batchDropNotification, callNotification, isGreaterThanZero } from \"./Helpers/Utils\";\r\nimport { InMemoryBatch } from \"./InMemoryBatch\";\r\nimport { OfflineBatchHandler } from \"./OfflineBatchHandler\";\r\nimport { isValidPersistenceLevel } from \"./Providers/IndexDbProvider\";\r\nimport { Sender } from \"./Sender\";\r\nimport { _DYN_ADD_EVENT, _DYN_BATCH_HANDLER, _DYN_CANCEL, _DYN_CLEAR, _DYN_COUNT, _DYN_CREATE_ONE_DSPAYLOAD, _DYN_CRITICAL_CNT, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_ITEMS, _DYN_GET_OFFLINE_SUPPORT, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_COMPLETELY_IDLE, _DYN_IS_ONLINE, _DYN_LENGTH, _DYN_MIN_PERSISTENCE_CACH0, _DYN_ONUNLOAD_FLUSH, _DYN_OVERRIDE_INSTRUMENTA1, _DYN_PERSISTENCE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REFRESH, _DYN_STATE, _DYN_TEARDOWN } from \"./__DynamicConstants\";\r\nvar version = '0.2.2-nightly3.2405-28';\r\nvar DefaultOfflineIdentifier = \"OfflineChannel\";\r\nvar DefaultBatchInterval = 15000;\r\nvar DefaultInMemoMaxTime = 15000;\r\nvar PostChannelIdentifier = \"PostChannel\";\r\nvar undefValue = undefined;\r\nvar DefaultBatchSizeLimitBytes = 63000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nvar defaultOfflineChannelConfig = objDeepFreeze({\r\n maxStorageSizeInBytes: { isVal: isGreaterThanZero, v: 5000000 },\r\n storageKey: undefValue,\r\n minPersistenceLevel: { isVal: isValidPersistenceLevel, v: EventPersistence.Normal },\r\n providers: [1 /* eStorageProviders.LocalStorage */, 3 /* eStorageProviders.IndexedDb */],\r\n indexedDbName: undefValue,\r\n maxStorageItems: { isVal: isGreaterThanZero, v: undefValue },\r\n inMemoMaxTime: { isVal: isGreaterThanZero, v: DefaultInMemoMaxTime },\r\n maxRetry: { isVal: isGreaterThanZero, v: 1 },\r\n maxBatchsize: { isVal: isGreaterThanZero, v: DefaultBatchSizeLimitBytes },\r\n maxSentBatchInterval: { isVal: isGreaterThanZero, v: DefaultBatchInterval },\r\n primaryOnlineChannelId: [BreezeChannelIdentifier, PostChannelIdentifier],\r\n overrideInstrumentationKey: undefValue,\r\n senderCfg: {}\r\n});\r\n//TODO: add tests for sharedAnanlytics\r\nvar OfflineChannel = /** @class */ (function (_super) {\r\n __extends(OfflineChannel, _super);\r\n function OfflineChannel() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = DefaultOfflineIdentifier;\r\n _this.priority = 1000; // before channel (post = 1011 and sender = 1001, teechannel = 999, localstorage: 1009)\r\n _this.version = version;\r\n dynamicProto(OfflineChannel, _this, function (_self, _base) {\r\n // Internal properties used for tracking the current state, these are \"true\" internal/private properties for this instance\r\n var _hasInitialized;\r\n var _paused;\r\n var _inMemoBatch;\r\n var _sender;\r\n var _urlCfg;\r\n var _offlineListener;\r\n var _inMemoFlushTimer;\r\n var _inMemoTimerOut;\r\n var _diagLogger;\r\n var _endpoint;\r\n var _maxBatchSize;\r\n var _sendNextBatchTimer;\r\n var _convertUndefined;\r\n var _retryAt;\r\n var _maxBatchInterval;\r\n var _consecutiveErrors;\r\n var _senderInst;\r\n var _taskScheduler;\r\n var _offineSupport;\r\n var _primaryChannelId;\r\n var _overrideIkey;\r\n var _evtsLimitInMemo;\r\n var _notificationManager;\r\n _initDefaults();\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (coreConfig, core, extensions, pluginChain) {\r\n if (!_hasInitialized) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](coreConfig, core, extensions);\r\n _hasInitialized = true;\r\n _diagLogger = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n var evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineSender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(evtNamespace); // TODO: add config to be passed\r\n _taskScheduler = createTaskScheduler(createAsyncPromise, \"offline channel\");\r\n _notificationManager = core.getNotifyMgr();\r\n }\r\n try {\r\n _createUrlConfig(coreConfig, core, extensions, pluginChain);\r\n var ctx = _getCoreItemCtx(coreConfig, core, extensions, pluginChain);\r\n _sender[_DYN_INITIALIZE /* @min:%2einitialize */](coreConfig, core, ctx, _diagLogger, _primaryChannelId, _self._unloadHooks);\r\n if (_sender) {\r\n _senderInst = _sender.getXhrInst();\r\n _offlineListener.addListener(function (val) {\r\n if (!val[_DYN_IS_ONLINE /* @min:%2eisOnline */]) {\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n else {\r\n _setSendNextTimer();\r\n }\r\n });\r\n // need it for first time to confirm if there are any events\r\n _setSendNextTimer();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n };\r\n _self.processTelemetry = function (evt, itemCtx) {\r\n try {\r\n var onlineStatus = _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]();\r\n itemCtx = itemCtx || _self._getTelCtx(itemCtx);\r\n if (!!onlineStatus || !_offineSupport || !_endpoint) {\r\n // if we can't get url from online sender or core config, process next\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](evt, itemCtx);\r\n return;\r\n }\r\n if (_hasInitialized && !_paused) {\r\n var shouldProcess = true;\r\n if (isFunction(_offineSupport.shouldProcess)) {\r\n shouldProcess = _offineSupport.shouldProcess(evt);\r\n }\r\n if (!shouldProcess) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](evt, itemCtx);\r\n return;\r\n }\r\n var item = evt;\r\n //TODO: add function to better get level\r\n item[_DYN_PERSISTENCE /* @min:%2epersistence */] = item[_DYN_PERSISTENCE /* @min:%2epersistence */] || (item.baseData && item.baseData[_DYN_PERSISTENCE /* @min:%2epersistence */]) || EventPersistence.Normal; // in case the level is in baseData\r\n if (_shouldCacheEvent(_urlCfg, item) && _inMemoBatch) {\r\n if (_overrideIkey) {\r\n item.iKey = _overrideIkey;\r\n }\r\n var added = _inMemoBatch[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt);\r\n // inMemo is full\r\n if (!added) {\r\n _flushInMemoItems();\r\n var retry = _inMemoBatch[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt);\r\n if (!retry) {\r\n _evtDropNotification([evt], EventsDiscardedReason.QueueFull);\r\n _throwInternal(_diagLogger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum offline in-memory buffer size reached\", true);\r\n }\r\n }\r\n // start timer when the first should-cache event added\r\n _setupInMemoTimer();\r\n }\r\n else {\r\n // if should not cache,send event drop notification\r\n _evtDropNotification([item], EventsDiscardedReason.InvalidEvent);\r\n }\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](evt, itemCtx);\r\n };\r\n _self.pause = function () {\r\n _paused = true;\r\n _clearScheduledTimer();\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n };\r\n _self.resume = function () {\r\n _paused = false;\r\n _clearScheduledTimer();\r\n _setupInMemoTimer();\r\n _setSendNextTimer();\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function () {\r\n if (!_paused) {\r\n while (_inMemoBatch[_DYN_COUNT /* @min:%2ecount */]()) {\r\n _flushInMemoItems(true);\r\n }\r\n // TODO: unloadprovider might send events out of order\r\n }\r\n };\r\n _self.flush = function (sync, callBack, sendReason) {\r\n // TODO: should we implement normal flush\r\n return _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n };\r\n _self.getOfflineListener = function () {\r\n return _offlineListener;\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n _offlineListener && runTargetUnload(_offlineListener, false);\r\n var handler = _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */];\r\n handler && handler[_DYN_TEARDOWN /* @min:%2eteardown */]();\r\n _clearScheduledTimer();\r\n _initDefaults();\r\n };\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_urlCfg, _inMemoBatch, _senderInst, _inMemoFlushTimer, _sendNextBatchTimer];\r\n };\r\n function _initDefaults() {\r\n _hasInitialized = false;\r\n _paused = false;\r\n _sender = new Sender();\r\n _urlCfg = null;\r\n _offlineListener = null;\r\n _diagLogger = null;\r\n _endpoint = null;\r\n _inMemoBatch = null;\r\n _convertUndefined = undefValue;\r\n _maxBatchSize = null;\r\n _sendNextBatchTimer = null;\r\n _consecutiveErrors = null;\r\n _retryAt = null;\r\n _maxBatchInterval = null;\r\n _senderInst = null;\r\n _offineSupport = null;\r\n _primaryChannelId = null;\r\n _overrideIkey = null;\r\n _evtsLimitInMemo = null;\r\n }\r\n function _shouldCacheEvent(urlConfig, item) {\r\n if ((item[_DYN_PERSISTENCE /* @min:%2epersistence */]) < urlConfig[_DYN_MIN_PERSISTENCE_CACH0 /* @min:%2eminPersistenceCacheLevel */]) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n function _setupInMemoTimer() {\r\n if (!_inMemoFlushTimer) {\r\n _inMemoFlushTimer = scheduleTimeout(function () {\r\n _flushInMemoItems();\r\n if (_inMemoBatch && _inMemoBatch[_DYN_COUNT /* @min:%2ecount */]() && _inMemoFlushTimer) {\r\n _inMemoFlushTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n _setSendNextTimer();\r\n }, _inMemoTimerOut);\r\n _inMemoFlushTimer.unref();\r\n }\r\n else {\r\n // Restart the timer if not already running https://nevware21.github.io/ts-utils/typedoc/interfaces/ITimerHandler.html#enabled\r\n _inMemoFlushTimer.enabled = true;\r\n }\r\n }\r\n //flush only flush max batch size event, may still have events lefts\r\n function _flushInMemoItems(unload) {\r\n try {\r\n // TODO: add while loop to flush everything\r\n var inMemo = _inMemoBatch;\r\n var evts = inMemo[_DYN_GET_ITEMS /* @min:%2egetItems */]();\r\n if (!evts || !evts[_DYN_LENGTH /* @min:%2elength */]) {\r\n return;\r\n }\r\n var payloadArr_1 = [];\r\n var size_1 = 0;\r\n var idx_1 = -1;\r\n var criticalCnt_1 = 0;\r\n arrForEach(evts, function (evt, index) {\r\n var curEvt = evt;\r\n idx_1 = index;\r\n var payload = _getPayload(curEvt);\r\n size_1 += payload[_DYN_LENGTH /* @min:%2elength */];\r\n if (size_1 > _maxBatchSize) {\r\n return;\r\n }\r\n if (curEvt[_DYN_PERSISTENCE /* @min:%2epersistence */] == EventPersistence.Critical) {\r\n criticalCnt_1++;\r\n }\r\n idx_1 = index;\r\n payloadArr_1[_DYN_PUSH /* @min:%2epush */](payload);\r\n });\r\n if (!payloadArr_1[_DYN_LENGTH /* @min:%2elength */]) {\r\n return;\r\n }\r\n var sentItems_1 = evts.slice(0, idx_1 + 1);\r\n _inMemoBatch = _inMemoBatch.createNew(_endpoint, inMemo[_DYN_GET_ITEMS /* @min:%2egetItems */]().slice(idx_1 + 1), _evtsLimitInMemo);\r\n var payloadData = null;\r\n if (_offineSupport && _offineSupport[_DYN_CREATE_ONE_DSPAYLOAD /* @min:%2ecreateOneDSPayload */]) {\r\n payloadData = _offineSupport[_DYN_CREATE_ONE_DSPAYLOAD /* @min:%2ecreateOneDSPayload */](sentItems_1);\r\n if (payloadData) {\r\n payloadData[_DYN_CRITICAL_CNT /* @min:%2ecriticalCnt */] = criticalCnt_1;\r\n }\r\n }\r\n else {\r\n payloadData = _constructPayloadData(payloadArr_1, criticalCnt_1);\r\n }\r\n var callback = function (res) {\r\n if (!res || !res[_DYN_STATE /* @min:%2estate */]) {\r\n return null;\r\n }\r\n var state = res[_DYN_STATE /* @min:%2estate */];\r\n if (state == 2 /* eBatchStoreStatus.Failure */) {\r\n if (!unload) {\r\n // for unload, just try to add each batch once\r\n arrForEach(sentItems_1, function (item) {\r\n _inMemoBatch[_DYN_ADD_EVENT /* @min:%2eaddEvent */](item);\r\n });\r\n _setupInMemoTimer();\r\n }\r\n else {\r\n // unload, drop events\r\n _evtDropNotification(sentItems_1, EventsDiscardedReason.NonRetryableStatus);\r\n }\r\n }\r\n else {\r\n // if eBatchStoreStatus is success\r\n _storeNotification(sentItems_1);\r\n }\r\n };\r\n if (payloadData) {\r\n var promise = _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */].storeBatch(payloadData, callback, unload);\r\n _queueStorageEvent(\"storeBatch\", promise);\r\n }\r\n if (!_inMemoBatch[_DYN_COUNT /* @min:%2ecount */]()) {\r\n _inMemoFlushTimer && _inMemoFlushTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _setSendNextTimer() {\r\n var isOnline = _offlineListener && _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]();\r\n if (!_sendNextBatchTimer) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_maxBatchInterval, retryInterval);\r\n _sendNextBatchTimer = scheduleTimeout(function () {\r\n if (isOnline) {\r\n // is no isCompletelyIdle function is available, assume we can send\r\n if (isFunction(_sender[_DYN_IS_COMPLETELY_IDLE /* @min:%2eisCompletelyIdle */]) && !_sender[_DYN_IS_COMPLETELY_IDLE /* @min:%2eisCompletelyIdle */]()) {\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n else {\r\n var callback = function (res) {\r\n var state = res && res[_DYN_STATE /* @min:%2estate */];\r\n if (state !== 1 /* eBatchSendStatus.Complete */) {\r\n _consecutiveErrors++;\r\n }\r\n var data = res && res[_DYN_DATA /* @min:%2edata */];\r\n if (state === 1 /* eBatchSendStatus.Complete */ && data) {\r\n // if status is complete and data is null, means no data\r\n _sentNotification(data);\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n if (state === 3 /* eBatchSendStatus.Drop */) {\r\n batchDropNotification(_notificationManager, 1, 1 /* eBatchDiscardedReason.NonRetryableStatus */);\r\n }\r\n };\r\n var promise = _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */].sendNextBatch(callback, false, _senderInst);\r\n _queueStorageEvent(\"sendNextBatch\", promise);\r\n }\r\n }\r\n else {\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n // if offline, do nothing;\r\n }, timerValue);\r\n _sendNextBatchTimer.unref();\r\n }\r\n else {\r\n // only restart it when online\r\n if (isOnline) {\r\n _sendNextBatchTimer.enabled = true;\r\n _sendNextBatchTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n // if offline, do noting\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n _inMemoFlushTimer && _inMemoFlushTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _inMemoFlushTimer = null;\r\n _sendNextBatchTimer = null;\r\n }\r\n function _queueStorageEvent(taskName, task) {\r\n if (_taskScheduler) {\r\n _taskScheduler.queue(function () {\r\n return task;\r\n }, taskName).catch(function (reason) {\r\n // Just handling any rejection to avoid an unhandled rejection event\r\n });\r\n }\r\n }\r\n function _setRetryTime(linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n function _getCoreItemCtx(coreConfig, core, extensions, pluginChain) {\r\n if (coreConfig) {\r\n // Make sure the extensionConfig exists\r\n coreConfig.extensionConfig = coreConfig.extensionConfig || {};\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core.getProcessTelContext().getNext();\r\n }\r\n var nextPlugin = null;\r\n var rootNext = _self._getTelCtx().getNext();\r\n if (rootNext) {\r\n nextPlugin = rootNext.getPlugin();\r\n }\r\n return createProcessTelemetryContext(pluginChain, coreConfig, core, nextPlugin);\r\n }\r\n function _getPayload(evt) {\r\n try {\r\n if (evt) {\r\n return _offineSupport.serialize(evt, _convertUndefined);\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _constructPayloadData(payloadArr, criticalCnt) {\r\n try {\r\n if (!_offineSupport) {\r\n return null;\r\n }\r\n var cnt = criticalCnt || 0;\r\n var payload = _offineSupport.batch(payloadArr);\r\n var payloadData = _offineSupport.createPayload && _offineSupport.createPayload(payload);\r\n if (payloadData) {\r\n payloadData[_DYN_CRITICAL_CNT /* @min:%2ecriticalCnt */] = cnt;\r\n return payloadData;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _createUrlConfig(coreConfig, core, extensions, pluginChain) {\r\n _self._addHook(onConfigChange(coreConfig, function (details) {\r\n var storageConfig = null;\r\n var theConfig = details.cfg;\r\n var ctx = createProcessTelemetryContext(null, theConfig, core);\r\n storageConfig = ctx.getExtCfg(_self.identifier, defaultOfflineChannelConfig);\r\n var channelIds = storageConfig.primaryOnlineChannelId;\r\n var onlineUrl = null;\r\n if (channelIds && channelIds[_DYN_LENGTH /* @min:%2elength */]) {\r\n arrForEach(channelIds, function (id) {\r\n var plugin = _self.core.getPlugin(id);\r\n var channel = plugin && plugin.plugin;\r\n if (channel) {\r\n _primaryChannelId = id;\r\n if (isFunction(channel[_DYN_GET_OFFLINE_SUPPORT /* @min:%2egetOfflineSupport */])) {\r\n _offineSupport = channel[_DYN_GET_OFFLINE_SUPPORT /* @min:%2egetOfflineSupport */]();\r\n onlineUrl = isFunction(_offineSupport && _offineSupport.getUrl) && _offineSupport.getUrl();\r\n }\r\n return;\r\n }\r\n });\r\n }\r\n _overrideIkey = storageConfig[_DYN_OVERRIDE_INSTRUMENTA1 /* @min:%2eoverrideInstrumentationKey */];\r\n var urlConfig = _urlCfg;\r\n var curUrl = onlineUrl || coreConfig.endpointUrl || _endpoint;\r\n // NOTE: should add default endpoint value to core as well\r\n if (curUrl !== _endpoint) {\r\n var coreRootCtx = _getCoreItemCtx(coreConfig, core, extensions, pluginChain);\r\n var providerContext = {\r\n itemCtx: coreRootCtx,\r\n storageConfig: storageConfig,\r\n id: _self.id,\r\n endpoint: curUrl,\r\n notificationMgr: _notificationManager\r\n };\r\n var oriHandler = _urlCfg && _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */];\r\n try {\r\n oriHandler && oriHandler[_DYN_TEARDOWN /* @min:%2eteardown */]();\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n var handler = new OfflineBatchHandler(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), _self._unloadHooks);\r\n handler[_DYN_INITIALIZE /* @min:%2einitialize */](providerContext);\r\n urlConfig = {\r\n iKey: coreConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */],\r\n url: curUrl,\r\n minPersistenceCacheLevel: storageConfig.minPersistenceLevel,\r\n coreRootCtx: coreRootCtx,\r\n providerContext: providerContext,\r\n batchHandler: handler\r\n };\r\n _evtsLimitInMemo = storageConfig.eventsLimitInMem;\r\n // transfer previous events to new buffer\r\n var evts = null;\r\n var curEvts = _inMemoBatch && _inMemoBatch[_DYN_GET_ITEMS /* @min:%2egetItems */]();\r\n if (curEvts && curEvts[_DYN_LENGTH /* @min:%2elength */]) {\r\n evts = curEvts.slice(0);\r\n _inMemoBatch[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _inMemoBatch = new InMemoryBatch(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), curUrl, evts, _evtsLimitInMemo);\r\n _inMemoTimerOut = storageConfig.inMemoMaxTime;\r\n var onlineConfig = ctx.getExtCfg(_primaryChannelId, {}) || {};\r\n _convertUndefined = onlineConfig.convertUndefined;\r\n _endpoint = curUrl;\r\n _setRetryTime();\r\n _maxBatchInterval = storageConfig.maxSentBatchInterval;\r\n _maxBatchSize = storageConfig.maxBatchsize;\r\n }\r\n _urlCfg = urlConfig;\r\n _endpoint = curUrl;\r\n }));\r\n }\r\n function _callNotification(evtName, theArgs) {\r\n callNotification(_notificationManager, evtName, theArgs);\r\n }\r\n function _evtDropNotification(events, reason) {\r\n if (events && events[_DYN_LENGTH /* @min:%2elength */]) {\r\n _callNotification(EVT_DISCARD_STR, [events, reason]);\r\n }\r\n return;\r\n }\r\n function _sentNotification(batch) {\r\n if (batch && batch[_DYN_DATA /* @min:%2edata */]) {\r\n _callNotification(EVT_SENT_STR, [batch]);\r\n }\r\n return;\r\n }\r\n function _storeNotification(events) {\r\n if (events && events[_DYN_LENGTH /* @min:%2elength */]) {\r\n _callNotification(EVT_STORE_STR, [events]);\r\n }\r\n return;\r\n }\r\n });\r\n return _this;\r\n }\r\n /* ================================================================================================================\r\n * DO NOT add any code to these empty implementations as any code defined here will be removed, as\r\n * this class is using @dynamicProto which will implement the methods during the execution of the\r\n * dynamicProto() in the constructor.\r\n *\r\n * The final generated files will also have these implementations removed as part of the packaging process.\r\n *\r\n * These empty definitions exists only to keep the generated TypeScript definition files aligned with the\r\n * actual resulting implementation, this is so that TS is still happy to create extension classes from the\r\n * resulting definitions.\r\n *\r\n * This also keeps the generated *.d.ts files and documentation the same as they where prior to using dynamicProto()\r\n */\r\n /**\r\n * The function does the initial set up. It adds a notification listener to determine which events to remove.\r\n * @param coreConfig - The core configuration.\r\n * @param core - The AppInsights core.\r\n * @param extensions - An array of all the plugins being used.\r\n */\r\n OfflineChannel.prototype.initialize = function (coreConfig, core, extensions, pluginChain) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Process an event to add it to the local storage and then pass it to the next plugin.\r\n * @param event - The event that needs to be stored.\r\n * @param itemCtx - This is the context for the current request, ITelemetryPlugin instances\r\n * can optionally use this to access the current core instance or define / pass additional information\r\n * to later plugins (vs appending items to the telemetry item)\r\n */\r\n OfflineChannel.prototype.processTelemetry = function (evt, itemCtx) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n // ================================================================================================================\r\n /**\r\n * Pauses the adding of new events to the plugin. Also calls pause on the next\r\n * plugin.\r\n */\r\n OfflineChannel.prototype.pause = function () {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resumes the adding of new events to the plugin. Also calls resume on\r\n * the next plugin. Adds all events in storage to the next plugin.\r\n */\r\n OfflineChannel.prototype.resume = function () {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get offline listener\r\n * @returns offline listener\r\n */\r\n OfflineChannel.prototype.getOfflineListener = function () {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n *No op\r\n */\r\n OfflineChannel.prototype.flush = function (sync, callBack, sendReason) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the batched events synchronously (if possible -- based on configuration).\r\n * Will not flush if the Send has been paused.\r\n */\r\n OfflineChannel.prototype.onunloadFlush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return OfflineChannel;\r\n}(BaseTelemetryPlugin));\r\nexport { OfflineChannel };\r\n//# sourceMappingURL=OfflineChannel.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC,gFAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;8DAkBM;AACN;AACA;;;;2DAkCM,CAAC;;;;;0BACmB;AAC1B;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"OfflineChannel.js.map","sources":["OfflineChannel.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, EventPersistence, createOfflineListener } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, EventsDiscardedReason, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dateNow, mergeEvtNamespace, onConfigChange, runTargetUnload } from \"@microsoft/applicationinsights-core-js\";\r\nimport { createAsyncPromise, createTaskScheduler } from \"@nevware21/ts-async\";\r\nimport { isFunction, objDeepFreeze, scheduleTimeout } from \"@nevware21/ts-utils\";\r\nimport { EVT_DISCARD_STR, EVT_SENT_STR, EVT_STORE_STR, batchDropNotification, callNotification, isGreaterThanZero } from \"./Helpers/Utils\";\r\nimport { InMemoryBatch } from \"./InMemoryBatch\";\r\nimport { OfflineBatchHandler } from \"./OfflineBatchHandler\";\r\nimport { isValidPersistenceLevel } from \"./Providers/IndexDbProvider\";\r\nimport { Sender } from \"./Sender\";\r\nimport { _DYN_ADD_EVENT, _DYN_BATCH_HANDLER, _DYN_CANCEL, _DYN_CLEAR, _DYN_COUNT, _DYN_CREATE_ONE_DSPAYLOAD, _DYN_CRITICAL_CNT, _DYN_DATA, _DYN_DIAG_LOG, _DYN_GET_ITEMS, _DYN_GET_OFFLINE_SUPPORT, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_COMPLETELY_IDLE, _DYN_IS_ONLINE, _DYN_LENGTH, _DYN_MIN_PERSISTENCE_CACH0, _DYN_ONUNLOAD_FLUSH, _DYN_OVERRIDE_INSTRUMENTA1, _DYN_PERSISTENCE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REFRESH, _DYN_SEND_NEXT_BATCH, _DYN_STATE, _DYN_TEARDOWN } from \"./__DynamicConstants\";\r\nvar version = '0.2.2-nightly3.2405-29';\r\nvar DefaultOfflineIdentifier = \"OfflineChannel\";\r\nvar DefaultBatchInterval = 15000;\r\nvar DefaultInMemoMaxTime = 15000;\r\nvar PostChannelIdentifier = \"PostChannel\";\r\nvar undefValue = undefined;\r\nvar DefaultBatchSizeLimitBytes = 63000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nvar defaultOfflineChannelConfig = objDeepFreeze({\r\n maxStorageSizeInBytes: { isVal: isGreaterThanZero, v: 5000000 },\r\n storageKey: undefValue,\r\n minPersistenceLevel: { isVal: isValidPersistenceLevel, v: EventPersistence.Normal },\r\n providers: [1 /* eStorageProviders.LocalStorage */, 3 /* eStorageProviders.IndexedDb */],\r\n indexedDbName: undefValue,\r\n maxStorageItems: { isVal: isGreaterThanZero, v: undefValue },\r\n inMemoMaxTime: { isVal: isGreaterThanZero, v: DefaultInMemoMaxTime },\r\n maxRetry: { isVal: isGreaterThanZero, v: 1 },\r\n maxBatchsize: { isVal: isGreaterThanZero, v: DefaultBatchSizeLimitBytes },\r\n maxSentBatchInterval: { isVal: isGreaterThanZero, v: DefaultBatchInterval },\r\n primaryOnlineChannelId: [BreezeChannelIdentifier, PostChannelIdentifier],\r\n overrideInstrumentationKey: undefValue,\r\n senderCfg: {}\r\n});\r\n//TODO: add tests for sharedAnanlytics\r\nvar OfflineChannel = /** @class */ (function (_super) {\r\n __extends(OfflineChannel, _super);\r\n function OfflineChannel() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = DefaultOfflineIdentifier;\r\n _this.priority = 1000; // before channel (post = 1011 and sender = 1001, teechannel = 999, localstorage: 1009)\r\n _this.version = version;\r\n dynamicProto(OfflineChannel, _this, function (_self, _base) {\r\n // Internal properties used for tracking the current state, these are \"true\" internal/private properties for this instance\r\n var _hasInitialized;\r\n var _paused;\r\n var _inMemoBatch;\r\n var _sender;\r\n var _urlCfg;\r\n var _offlineListener;\r\n var _inMemoFlushTimer;\r\n var _inMemoTimerOut;\r\n var _diagLogger;\r\n var _endpoint;\r\n var _maxBatchSize;\r\n var _sendNextBatchTimer;\r\n var _convertUndefined;\r\n var _retryAt;\r\n var _maxBatchInterval;\r\n var _consecutiveErrors;\r\n var _senderInst;\r\n var _taskScheduler;\r\n var _offineSupport;\r\n var _primaryChannelId;\r\n var _overrideIkey;\r\n var _evtsLimitInMemo;\r\n var _notificationManager;\r\n _initDefaults();\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (coreConfig, core, extensions, pluginChain) {\r\n if (!_hasInitialized) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](coreConfig, core, extensions);\r\n _hasInitialized = true;\r\n _diagLogger = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n var evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineSender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(evtNamespace); // TODO: add config to be passed\r\n _taskScheduler = createTaskScheduler(createAsyncPromise, \"offline channel\");\r\n _notificationManager = core.getNotifyMgr();\r\n }\r\n try {\r\n _createUrlConfig(coreConfig, core, extensions, pluginChain);\r\n var ctx = _getCoreItemCtx(coreConfig, core, extensions, pluginChain);\r\n _sender[_DYN_INITIALIZE /* @min:%2einitialize */](coreConfig, core, ctx, _diagLogger, _primaryChannelId, _self._unloadHooks);\r\n if (_sender) {\r\n _senderInst = _sender.getXhrInst();\r\n _offlineListener.addListener(function (val) {\r\n if (!val[_DYN_IS_ONLINE /* @min:%2eisOnline */]) {\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n else {\r\n _setSendNextTimer();\r\n }\r\n });\r\n // need it for first time to confirm if there are any events\r\n _setSendNextTimer();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n };\r\n _self.processTelemetry = function (evt, itemCtx) {\r\n try {\r\n var onlineStatus = _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]();\r\n itemCtx = itemCtx || _self._getTelCtx(itemCtx);\r\n if (!!onlineStatus || !_offineSupport || !_endpoint) {\r\n // if we can't get url from online sender or core config, process next\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](evt, itemCtx);\r\n return;\r\n }\r\n if (_hasInitialized && !_paused) {\r\n var shouldProcess = true;\r\n if (isFunction(_offineSupport.shouldProcess)) {\r\n shouldProcess = _offineSupport.shouldProcess(evt);\r\n }\r\n if (!shouldProcess) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](evt, itemCtx);\r\n return;\r\n }\r\n var item = evt;\r\n //TODO: add function to better get level\r\n item[_DYN_PERSISTENCE /* @min:%2epersistence */] = item[_DYN_PERSISTENCE /* @min:%2epersistence */] || (item.baseData && item.baseData[_DYN_PERSISTENCE /* @min:%2epersistence */]) || EventPersistence.Normal; // in case the level is in baseData\r\n if (_shouldCacheEvent(_urlCfg, item) && _inMemoBatch) {\r\n if (_overrideIkey) {\r\n item.iKey = _overrideIkey;\r\n }\r\n var added = _inMemoBatch[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt);\r\n // inMemo is full\r\n if (!added) {\r\n _flushInMemoItems();\r\n var retry = _inMemoBatch[_DYN_ADD_EVENT /* @min:%2eaddEvent */](evt);\r\n if (!retry) {\r\n _evtDropNotification([evt], EventsDiscardedReason.QueueFull);\r\n _throwInternal(_diagLogger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum offline in-memory buffer size reached\", true);\r\n }\r\n }\r\n // start timer when the first should-cache event added\r\n _setupInMemoTimer();\r\n }\r\n else {\r\n // if should not cache,send event drop notification\r\n _evtDropNotification([item], EventsDiscardedReason.InvalidEvent);\r\n }\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](evt, itemCtx);\r\n };\r\n _self.pause = function () {\r\n _paused = true;\r\n _clearScheduledTimer();\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n };\r\n _self.resume = function () {\r\n _paused = false;\r\n _clearScheduledTimer();\r\n _setupInMemoTimer();\r\n _setSendNextTimer();\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function () {\r\n if (!_paused) {\r\n while (_inMemoBatch[_DYN_COUNT /* @min:%2ecount */]()) {\r\n _flushInMemoItems(true);\r\n }\r\n // TODO: unloadprovider might send events out of order\r\n }\r\n };\r\n _self.flush = function (sync, callBack, sendReason) {\r\n // TODO: should we implement normal flush\r\n return _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n };\r\n _self.getOfflineListener = function () {\r\n return _offlineListener;\r\n };\r\n _self[_DYN_SEND_NEXT_BATCH /* @min:%2esendNextBatch */] = function () {\r\n // TODO: add callback function\r\n return _setSendNextTimer();\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n _offlineListener && runTargetUnload(_offlineListener, false);\r\n var handler = _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */];\r\n handler && handler[_DYN_TEARDOWN /* @min:%2eteardown */]();\r\n _clearScheduledTimer();\r\n _initDefaults();\r\n };\r\n _self[\"_getDbgPlgTargets\"] = function () {\r\n return [_urlCfg, _inMemoBatch, _senderInst, _inMemoFlushTimer, _sendNextBatchTimer];\r\n };\r\n function _initDefaults() {\r\n _hasInitialized = false;\r\n _paused = false;\r\n _sender = new Sender();\r\n _urlCfg = null;\r\n _offlineListener = null;\r\n _diagLogger = null;\r\n _endpoint = null;\r\n _inMemoBatch = null;\r\n _convertUndefined = undefValue;\r\n _maxBatchSize = null;\r\n _sendNextBatchTimer = null;\r\n _consecutiveErrors = null;\r\n _retryAt = null;\r\n _maxBatchInterval = null;\r\n _senderInst = null;\r\n _offineSupport = null;\r\n _primaryChannelId = null;\r\n _overrideIkey = null;\r\n _evtsLimitInMemo = null;\r\n }\r\n function _shouldCacheEvent(urlConfig, item) {\r\n if ((item[_DYN_PERSISTENCE /* @min:%2epersistence */]) < urlConfig[_DYN_MIN_PERSISTENCE_CACH0 /* @min:%2eminPersistenceCacheLevel */]) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n function _setupInMemoTimer() {\r\n if (!_inMemoFlushTimer) {\r\n _inMemoFlushTimer = scheduleTimeout(function () {\r\n _flushInMemoItems();\r\n if (_inMemoBatch && _inMemoBatch[_DYN_COUNT /* @min:%2ecount */]() && _inMemoFlushTimer) {\r\n _inMemoFlushTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n _setSendNextTimer();\r\n }, _inMemoTimerOut);\r\n _inMemoFlushTimer.unref();\r\n }\r\n else {\r\n // Restart the timer if not already running https://nevware21.github.io/ts-utils/typedoc/interfaces/ITimerHandler.html#enabled\r\n _inMemoFlushTimer.enabled = true;\r\n }\r\n }\r\n //flush only flush max batch size event, may still have events lefts\r\n function _flushInMemoItems(unload) {\r\n try {\r\n // TODO: add while loop to flush everything\r\n var inMemo = _inMemoBatch;\r\n var evts = inMemo[_DYN_GET_ITEMS /* @min:%2egetItems */]();\r\n if (!evts || !evts[_DYN_LENGTH /* @min:%2elength */]) {\r\n return;\r\n }\r\n var payloadArr_1 = [];\r\n var size_1 = 0;\r\n var idx_1 = -1;\r\n var criticalCnt_1 = 0;\r\n arrForEach(evts, function (evt, index) {\r\n var curEvt = evt;\r\n idx_1 = index;\r\n var payload = _getPayload(curEvt);\r\n size_1 += payload[_DYN_LENGTH /* @min:%2elength */];\r\n if (size_1 > _maxBatchSize) {\r\n return;\r\n }\r\n if (curEvt[_DYN_PERSISTENCE /* @min:%2epersistence */] == EventPersistence.Critical) {\r\n criticalCnt_1++;\r\n }\r\n idx_1 = index;\r\n payloadArr_1[_DYN_PUSH /* @min:%2epush */](payload);\r\n });\r\n if (!payloadArr_1[_DYN_LENGTH /* @min:%2elength */]) {\r\n return;\r\n }\r\n var sentItems_1 = evts.slice(0, idx_1 + 1);\r\n _inMemoBatch = _inMemoBatch.createNew(_endpoint, inMemo[_DYN_GET_ITEMS /* @min:%2egetItems */]().slice(idx_1 + 1), _evtsLimitInMemo);\r\n var payloadData = null;\r\n if (_offineSupport && _offineSupport[_DYN_CREATE_ONE_DSPAYLOAD /* @min:%2ecreateOneDSPayload */]) {\r\n payloadData = _offineSupport[_DYN_CREATE_ONE_DSPAYLOAD /* @min:%2ecreateOneDSPayload */](sentItems_1);\r\n if (payloadData) {\r\n payloadData[_DYN_CRITICAL_CNT /* @min:%2ecriticalCnt */] = criticalCnt_1;\r\n }\r\n }\r\n else {\r\n payloadData = _constructPayloadData(payloadArr_1, criticalCnt_1);\r\n }\r\n var callback = function (res) {\r\n if (!res || !res[_DYN_STATE /* @min:%2estate */]) {\r\n return null;\r\n }\r\n var state = res[_DYN_STATE /* @min:%2estate */];\r\n if (state == 2 /* eBatchStoreStatus.Failure */) {\r\n if (!unload) {\r\n // for unload, just try to add each batch once\r\n arrForEach(sentItems_1, function (item) {\r\n _inMemoBatch[_DYN_ADD_EVENT /* @min:%2eaddEvent */](item);\r\n });\r\n _setupInMemoTimer();\r\n }\r\n else {\r\n // unload, drop events\r\n _evtDropNotification(sentItems_1, EventsDiscardedReason.NonRetryableStatus);\r\n }\r\n }\r\n else {\r\n // if eBatchStoreStatus is success\r\n _storeNotification(sentItems_1);\r\n }\r\n };\r\n if (payloadData) {\r\n var promise = _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */].storeBatch(payloadData, callback, unload);\r\n _queueStorageEvent(\"storeBatch\", promise);\r\n }\r\n if (!_inMemoBatch[_DYN_COUNT /* @min:%2ecount */]()) {\r\n _inMemoFlushTimer && _inMemoFlushTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _setSendNextTimer() {\r\n var isOnline = _offlineListener && _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]();\r\n if (!_sendNextBatchTimer) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_maxBatchInterval, retryInterval);\r\n _sendNextBatchTimer = scheduleTimeout(function () {\r\n if (isOnline) {\r\n // is no isCompletelyIdle function is available, assume we can send\r\n if (isFunction(_sender[_DYN_IS_COMPLETELY_IDLE /* @min:%2eisCompletelyIdle */]) && !_sender[_DYN_IS_COMPLETELY_IDLE /* @min:%2eisCompletelyIdle */]()) {\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n else {\r\n var callback = function (res) {\r\n var state = res && res[_DYN_STATE /* @min:%2estate */];\r\n if (state !== 1 /* eBatchSendStatus.Complete */) {\r\n _consecutiveErrors++;\r\n }\r\n var data = res && res[_DYN_DATA /* @min:%2edata */];\r\n if (state === 1 /* eBatchSendStatus.Complete */ && data) {\r\n // if status is complete and data is null, means no data\r\n _sentNotification(data);\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n if (state === 3 /* eBatchSendStatus.Drop */) {\r\n batchDropNotification(_notificationManager, 1, 1 /* eBatchDiscardedReason.NonRetryableStatus */);\r\n }\r\n };\r\n var promise = _urlCfg.batchHandler[_DYN_SEND_NEXT_BATCH /* @min:%2esendNextBatch */](callback, false, _senderInst);\r\n _queueStorageEvent(\"sendNextBatch\", promise);\r\n }\r\n }\r\n else {\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n }\r\n // if offline, do nothing;\r\n }, timerValue);\r\n _sendNextBatchTimer.unref();\r\n }\r\n else {\r\n // only restart it when online\r\n if (isOnline) {\r\n _sendNextBatchTimer.enabled = true;\r\n _sendNextBatchTimer[_DYN_REFRESH /* @min:%2erefresh */]();\r\n }\r\n // if offline, do noting\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n _inMemoFlushTimer && _inMemoFlushTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _sendNextBatchTimer && _sendNextBatchTimer[_DYN_CANCEL /* @min:%2ecancel */]();\r\n _inMemoFlushTimer = null;\r\n _sendNextBatchTimer = null;\r\n }\r\n function _queueStorageEvent(taskName, task) {\r\n if (_taskScheduler) {\r\n _taskScheduler.queue(function () {\r\n return task;\r\n }, taskName).catch(function (reason) {\r\n // Just handling any rejection to avoid an unhandled rejection event\r\n });\r\n }\r\n }\r\n function _setRetryTime(linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n function _getCoreItemCtx(coreConfig, core, extensions, pluginChain) {\r\n if (coreConfig) {\r\n // Make sure the extensionConfig exists\r\n coreConfig.extensionConfig = coreConfig.extensionConfig || {};\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core.getProcessTelContext().getNext();\r\n }\r\n var nextPlugin = null;\r\n var rootNext = _self._getTelCtx().getNext();\r\n if (rootNext) {\r\n nextPlugin = rootNext.getPlugin();\r\n }\r\n return createProcessTelemetryContext(pluginChain, coreConfig, core, nextPlugin);\r\n }\r\n function _getPayload(evt) {\r\n try {\r\n if (evt) {\r\n return _offineSupport.serialize(evt, _convertUndefined);\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _constructPayloadData(payloadArr, criticalCnt) {\r\n try {\r\n if (!_offineSupport) {\r\n return null;\r\n }\r\n var cnt = criticalCnt || 0;\r\n var payload = _offineSupport.batch(payloadArr);\r\n var payloadData = _offineSupport.createPayload && _offineSupport.createPayload(payload);\r\n if (payloadData) {\r\n payloadData[_DYN_CRITICAL_CNT /* @min:%2ecriticalCnt */] = cnt;\r\n return payloadData;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n }\r\n function _createUrlConfig(coreConfig, core, extensions, pluginChain) {\r\n _self._addHook(onConfigChange(coreConfig, function (details) {\r\n var storageConfig = null;\r\n var theConfig = details.cfg;\r\n var ctx = createProcessTelemetryContext(null, theConfig, core);\r\n storageConfig = ctx.getExtCfg(_self.identifier, defaultOfflineChannelConfig);\r\n var channelIds = storageConfig.primaryOnlineChannelId;\r\n var onlineUrl = null;\r\n if (channelIds && channelIds[_DYN_LENGTH /* @min:%2elength */]) {\r\n arrForEach(channelIds, function (id) {\r\n var plugin = _self.core.getPlugin(id);\r\n var channel = plugin && plugin.plugin;\r\n if (channel) {\r\n _primaryChannelId = id;\r\n if (isFunction(channel[_DYN_GET_OFFLINE_SUPPORT /* @min:%2egetOfflineSupport */])) {\r\n _offineSupport = channel[_DYN_GET_OFFLINE_SUPPORT /* @min:%2egetOfflineSupport */]();\r\n onlineUrl = isFunction(_offineSupport && _offineSupport.getUrl) && _offineSupport.getUrl();\r\n }\r\n return;\r\n }\r\n });\r\n }\r\n _overrideIkey = storageConfig[_DYN_OVERRIDE_INSTRUMENTA1 /* @min:%2eoverrideInstrumentationKey */];\r\n var urlConfig = _urlCfg;\r\n var curUrl = onlineUrl || coreConfig.endpointUrl || _endpoint;\r\n // NOTE: should add default endpoint value to core as well\r\n if (curUrl !== _endpoint) {\r\n var coreRootCtx = _getCoreItemCtx(coreConfig, core, extensions, pluginChain);\r\n var providerContext = {\r\n itemCtx: coreRootCtx,\r\n storageConfig: storageConfig,\r\n id: _self.id,\r\n endpoint: curUrl,\r\n notificationMgr: _notificationManager\r\n };\r\n var oriHandler = _urlCfg && _urlCfg[_DYN_BATCH_HANDLER /* @min:%2ebatchHandler */];\r\n try {\r\n oriHandler && oriHandler[_DYN_TEARDOWN /* @min:%2eteardown */]();\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n var handler = new OfflineBatchHandler(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), _self._unloadHooks);\r\n handler[_DYN_INITIALIZE /* @min:%2einitialize */](providerContext);\r\n urlConfig = {\r\n iKey: coreConfig[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */],\r\n url: curUrl,\r\n minPersistenceCacheLevel: storageConfig.minPersistenceLevel,\r\n coreRootCtx: coreRootCtx,\r\n providerContext: providerContext,\r\n batchHandler: handler\r\n };\r\n _evtsLimitInMemo = storageConfig.eventsLimitInMem;\r\n // transfer previous events to new buffer\r\n var evts = null;\r\n var curEvts = _inMemoBatch && _inMemoBatch[_DYN_GET_ITEMS /* @min:%2egetItems */]();\r\n if (curEvts && curEvts[_DYN_LENGTH /* @min:%2elength */]) {\r\n evts = curEvts.slice(0);\r\n _inMemoBatch[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _inMemoBatch = new InMemoryBatch(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), curUrl, evts, _evtsLimitInMemo);\r\n _inMemoTimerOut = storageConfig.inMemoMaxTime;\r\n var onlineConfig = ctx.getExtCfg(_primaryChannelId, {}) || {};\r\n _convertUndefined = onlineConfig.convertUndefined;\r\n _endpoint = curUrl;\r\n _setRetryTime();\r\n _maxBatchInterval = storageConfig.maxSentBatchInterval;\r\n _maxBatchSize = storageConfig.maxBatchsize;\r\n }\r\n _urlCfg = urlConfig;\r\n _endpoint = curUrl;\r\n }));\r\n }\r\n function _callNotification(evtName, theArgs) {\r\n callNotification(_notificationManager, evtName, theArgs);\r\n }\r\n function _evtDropNotification(events, reason) {\r\n if (events && events[_DYN_LENGTH /* @min:%2elength */]) {\r\n _callNotification(EVT_DISCARD_STR, [events, reason]);\r\n }\r\n return;\r\n }\r\n function _sentNotification(batch) {\r\n if (batch && batch[_DYN_DATA /* @min:%2edata */]) {\r\n _callNotification(EVT_SENT_STR, [batch]);\r\n }\r\n return;\r\n }\r\n function _storeNotification(events) {\r\n if (events && events[_DYN_LENGTH /* @min:%2elength */]) {\r\n _callNotification(EVT_STORE_STR, [events]);\r\n }\r\n return;\r\n }\r\n });\r\n return _this;\r\n }\r\n /* ================================================================================================================\r\n * DO NOT add any code to these empty implementations as any code defined here will be removed, as\r\n * this class is using @dynamicProto which will implement the methods during the execution of the\r\n * dynamicProto() in the constructor.\r\n *\r\n * The final generated files will also have these implementations removed as part of the packaging process.\r\n *\r\n * These empty definitions exists only to keep the generated TypeScript definition files aligned with the\r\n * actual resulting implementation, this is so that TS is still happy to create extension classes from the\r\n * resulting definitions.\r\n *\r\n * This also keeps the generated *.d.ts files and documentation the same as they where prior to using dynamicProto()\r\n */\r\n /**\r\n * The function does the initial set up. It adds a notification listener to determine which events to remove.\r\n * @param coreConfig - The core configuration.\r\n * @param core - The AppInsights core.\r\n * @param extensions - An array of all the plugins being used.\r\n */\r\n OfflineChannel.prototype.initialize = function (coreConfig, core, extensions, pluginChain) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Process an event to add it to the local storage and then pass it to the next plugin.\r\n * @param event - The event that needs to be stored.\r\n * @param itemCtx - This is the context for the current request, ITelemetryPlugin instances\r\n * can optionally use this to access the current core instance or define / pass additional information\r\n * to later plugins (vs appending items to the telemetry item)\r\n */\r\n OfflineChannel.prototype.processTelemetry = function (evt, itemCtx) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n // ================================================================================================================\r\n /**\r\n * Pauses the adding of new events to the plugin. Also calls pause on the next\r\n * plugin.\r\n */\r\n OfflineChannel.prototype.pause = function () {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resumes the adding of new events to the plugin. Also calls resume on\r\n * the next plugin. Adds all events in storage to the next plugin.\r\n */\r\n OfflineChannel.prototype.resume = function () {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get offline listener\r\n * @returns offline listener\r\n */\r\n OfflineChannel.prototype.getOfflineListener = function () {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n *No op\r\n */\r\n OfflineChannel.prototype.flush = function (sync, callBack, sendReason) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the batched events synchronously (if possible -- based on configuration).\r\n * Will not flush if the Send has been paused.\r\n */\r\n OfflineChannel.prototype.onunloadFlush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the next stored event batch\r\n */\r\n OfflineChannel.prototype.sendNextBatch = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return OfflineChannel;\r\n}(BaseTelemetryPlugin));\r\nexport { OfflineChannel };\r\n//# sourceMappingURL=OfflineChannel.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC,gFAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;8DAkBM;AACN;AACA;;;;;2DAwCM,CAAC;;;;;0BACmB;AAC1B;AACA;AACA"}
|
package/dist-es5/Sender.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-
|
|
2
|
+
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-29
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -26,6 +26,7 @@ export var _DYN_ITEM_CTX = "itemCtx"; // Count: 4
|
|
|
26
26
|
export var _DYN_STORAGE_CONFIG = "storageConfig"; // Count: 4
|
|
27
27
|
export var _DYN_VALUE = "value"; // Count: 12
|
|
28
28
|
export var _DYN_REJECTED = "rejected"; // Count: 6
|
|
29
|
+
export var _DYN_SEND_NEXT_BATCH = "sendNextBatch"; // Count: 3
|
|
29
30
|
export var _DYN_GET_NEXT_BATCH = "getNextBatch"; // Count: 5
|
|
30
31
|
export var _DYN_REMOVE_EVENTS = "removeEvents"; // Count: 3
|
|
31
32
|
export var _DYN_DATA = "data"; // Count: 11
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"__DynamicConstants.js.map","sources":["__DynamicConstants.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_ENDPOINT = \"endpoint\"; // Count: 4\r\nexport var _DYN_ADD_EVENT = \"addEvent\"; // Count: 8\r\nexport var _DYN_COUNT = \"count\"; // Count: 5\r\nexport var _DYN_PUSH = \"push\"; // Count: 18\r\nexport var _DYN_LENGTH = \"length\"; // Count: 50\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 5\r\nexport var _DYN_GET_ITEMS = \"getItems\"; // Count: 4\r\nexport var _DYN_SPLIT = \"split\"; // Count: 5\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 4\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 11\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 6\r\nexport var _DYN_ITEM_CTX = \"itemCtx\"; // Count: 4\r\nexport var _DYN_STORAGE_CONFIG = \"storageConfig\"; // Count: 4\r\nexport var _DYN_VALUE = \"value\"; // Count: 12\r\nexport var _DYN_REJECTED = \"rejected\"; // Count: 6\r\nexport var _DYN_GET_NEXT_BATCH = \"getNextBatch\"; // Count: 5\r\nexport var _DYN_REMOVE_EVENTS = \"removeEvents\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 11\r\nexport var _DYN_SEND_POST = \"sendPOST\"; // Count: 3\r\nexport var _DYN_ATTEMP_CNT = \"attempCnt\"; // Count: 4\r\nexport var _DYN_STATE = \"state\"; // Count: 9\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 6\r\nexport var _DYN_IS_ARR = \"isArr\"; // Count: 5\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 9\r\nexport var _DYN_IS_ONLINE = \"isOnline\"; // Count: 3\r\nexport var _DYN_CANCEL = \"cancel\"; // Count: 5\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 3\r\nexport var _DYN_PERSISTENCE = \"persistence\"; // Count: 8\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 3\r\nexport var _DYN_BATCH_HANDLER = \"batchHandler\"; // Count: 3\r\nexport var _DYN_MIN_PERSISTENCE_CACH0 = \"minPersistenceCacheLevel\"; // Count: 2\r\nexport var _DYN_REFRESH = \"refresh\"; // Count: 4\r\nexport var _DYN_CREATE_ONE_DSPAYLOAD = \"createOneDSPayload\"; // Count: 2\r\nexport var _DYN_CRITICAL_CNT = \"criticalCnt\"; // Count: 8\r\nexport var _DYN_IS_COMPLETELY_IDLE = \"isCompletelyIdle\"; // Count: 5\r\nexport var _DYN_GET_OFFLINE_SUPPORT = \"getOfflineSupport\"; // Count: 2\r\nexport var _DYN_OVERRIDE_INSTRUMENTA1 = \"overrideInstrumentationKey\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 3\r\nexport var _DYN_NOTIFICATION_MGR = \"notificationMgr\"; // Count: 3\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 5\r\nexport var _DYN_ENABLE_SEND_PROMISE = \"enableSendPromise\"; // Count: 2\r\nexport var _DYN_CHAR_CODE_AT = \"charCodeAt\"; // Count: 3\r\nexport var _DYN_CHAR_AT = \"charAt\"; // Count: 8\r\nexport var _DYN_FROM_CHAR_CODE = \"fromCharCode\"; // Count: 3\r\nexport var _DYN_GET_TIME = \"getTime\"; // Count: 5\r\nexport var _DYN_NAME = \"name\"; // Count: 7\r\nexport var _DYN_DB_HDL = \"dbHdl\"; // Count: 7\r\nexport var _DYN_IS_AVAILABLE = \"isAvailable\"; // Count: 8\r\nexport var _DYN_TRANSACTION = \"transaction\"; // Count: 5\r\nexport var _DYN_OPEN_STORE = \"openStore\"; // Count: 3\r\nexport var _DYN_OPEN_CURSOR = \"openCursor\"; // Count: 3\r\nexport var _DYN_DB_NAME = \"dbName\"; // Count: 5\r\nexport var _DYN_REMOVE = \"remove\"; // Count: 4\r\nexport var _DYN_ONERROR = \"onerror\"; // Count: 9\r\nexport var _DYN_ONSUCCESS = \"onsuccess\"; // Count: 7\r\nexport var _DYN_THEN = \"then\"; // Count: 12\r\nexport var _DYN_KEY_RANGE = \"keyRange\"; // Count: 3\r\nexport var _DYN_CONTINUE = \"continue\"; // Count: 7\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 3\r\nexport var _DYN_STORAGE_KEY_PREFIX = \"storageKeyPrefix\"; // Count: 2\r\nexport var _DYN_IN_STORAGE_MAX_TIME = \"inStorageMaxTime\"; // Count: 2\r\nexport var _DYN__EVENTS_TO_DROP_PER_2 = \"EventsToDropPerTime\"; // Count: 2\r\nexport var _DYN_MAX_CRITICAL_EVTS_DR3 = \"maxCriticalEvtsDropCnt\"; // Count: 2\r\nexport var _DYN_SUPPORTS_SYNC_REQUES4 = \"supportsSyncRequests\"; // Count: 2\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_EVTS = \"evts\"; // Count: 6\r\nexport var _DYN_LAST_ACCESS_TIME = \"lastAccessTime\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"__DynamicConstants.js.map","sources":["__DynamicConstants.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_ENDPOINT = \"endpoint\"; // Count: 4\r\nexport var _DYN_ADD_EVENT = \"addEvent\"; // Count: 8\r\nexport var _DYN_COUNT = \"count\"; // Count: 5\r\nexport var _DYN_PUSH = \"push\"; // Count: 18\r\nexport var _DYN_LENGTH = \"length\"; // Count: 50\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 5\r\nexport var _DYN_GET_ITEMS = \"getItems\"; // Count: 4\r\nexport var _DYN_SPLIT = \"split\"; // Count: 5\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 4\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 11\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 6\r\nexport var _DYN_ITEM_CTX = \"itemCtx\"; // Count: 4\r\nexport var _DYN_STORAGE_CONFIG = \"storageConfig\"; // Count: 4\r\nexport var _DYN_VALUE = \"value\"; // Count: 12\r\nexport var _DYN_REJECTED = \"rejected\"; // Count: 6\r\nexport var _DYN_SEND_NEXT_BATCH = \"sendNextBatch\"; // Count: 3\r\nexport var _DYN_GET_NEXT_BATCH = \"getNextBatch\"; // Count: 5\r\nexport var _DYN_REMOVE_EVENTS = \"removeEvents\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 11\r\nexport var _DYN_SEND_POST = \"sendPOST\"; // Count: 3\r\nexport var _DYN_ATTEMP_CNT = \"attempCnt\"; // Count: 4\r\nexport var _DYN_STATE = \"state\"; // Count: 9\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 6\r\nexport var _DYN_IS_ARR = \"isArr\"; // Count: 5\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 9\r\nexport var _DYN_IS_ONLINE = \"isOnline\"; // Count: 3\r\nexport var _DYN_CANCEL = \"cancel\"; // Count: 5\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 3\r\nexport var _DYN_PERSISTENCE = \"persistence\"; // Count: 8\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 3\r\nexport var _DYN_BATCH_HANDLER = \"batchHandler\"; // Count: 3\r\nexport var _DYN_MIN_PERSISTENCE_CACH0 = \"minPersistenceCacheLevel\"; // Count: 2\r\nexport var _DYN_REFRESH = \"refresh\"; // Count: 4\r\nexport var _DYN_CREATE_ONE_DSPAYLOAD = \"createOneDSPayload\"; // Count: 2\r\nexport var _DYN_CRITICAL_CNT = \"criticalCnt\"; // Count: 8\r\nexport var _DYN_IS_COMPLETELY_IDLE = \"isCompletelyIdle\"; // Count: 5\r\nexport var _DYN_GET_OFFLINE_SUPPORT = \"getOfflineSupport\"; // Count: 2\r\nexport var _DYN_OVERRIDE_INSTRUMENTA1 = \"overrideInstrumentationKey\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 3\r\nexport var _DYN_NOTIFICATION_MGR = \"notificationMgr\"; // Count: 3\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 5\r\nexport var _DYN_ENABLE_SEND_PROMISE = \"enableSendPromise\"; // Count: 2\r\nexport var _DYN_CHAR_CODE_AT = \"charCodeAt\"; // Count: 3\r\nexport var _DYN_CHAR_AT = \"charAt\"; // Count: 8\r\nexport var _DYN_FROM_CHAR_CODE = \"fromCharCode\"; // Count: 3\r\nexport var _DYN_GET_TIME = \"getTime\"; // Count: 5\r\nexport var _DYN_NAME = \"name\"; // Count: 7\r\nexport var _DYN_DB_HDL = \"dbHdl\"; // Count: 7\r\nexport var _DYN_IS_AVAILABLE = \"isAvailable\"; // Count: 8\r\nexport var _DYN_TRANSACTION = \"transaction\"; // Count: 5\r\nexport var _DYN_OPEN_STORE = \"openStore\"; // Count: 3\r\nexport var _DYN_OPEN_CURSOR = \"openCursor\"; // Count: 3\r\nexport var _DYN_DB_NAME = \"dbName\"; // Count: 5\r\nexport var _DYN_REMOVE = \"remove\"; // Count: 4\r\nexport var _DYN_ONERROR = \"onerror\"; // Count: 9\r\nexport var _DYN_ONSUCCESS = \"onsuccess\"; // Count: 7\r\nexport var _DYN_THEN = \"then\"; // Count: 12\r\nexport var _DYN_KEY_RANGE = \"keyRange\"; // Count: 3\r\nexport var _DYN_CONTINUE = \"continue\"; // Count: 7\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 3\r\nexport var _DYN_STORAGE_KEY_PREFIX = \"storageKeyPrefix\"; // Count: 2\r\nexport var _DYN_IN_STORAGE_MAX_TIME = \"inStorageMaxTime\"; // Count: 2\r\nexport var _DYN__EVENTS_TO_DROP_PER_2 = \"EventsToDropPerTime\"; // Count: 2\r\nexport var _DYN_MAX_CRITICAL_EVTS_DR3 = \"maxCriticalEvtsDropCnt\"; // Count: 2\r\nexport var _DYN_SUPPORTS_SYNC_REQUES4 = \"supportsSyncRequests\"; // Count: 2\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_EVTS = \"evts\"; // Count: 6\r\nexport var _DYN_LAST_ACCESS_TIME = \"lastAccessTime\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map"],"names":[],"mappings":";;;;AAA4D;AAC1B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,7 +1,9 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-
|
|
2
|
+
* Application Insights JavaScript SDK - Offline Channel, 0.2.2-nightly3.2405-29
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
|
+
export { BatchSendStatus, BatchStoreStatus, StorageType } from "./Interfaces/IOfflineBatch";
|
|
6
|
+
export { StorageProviders } from "./Interfaces/IOfflineProvider";
|
|
5
7
|
export { WebStorageProvider } from "./Providers/WebStorageProvider";
|
|
6
8
|
export { IndexedDbProvider } from "./Providers/IndexDbProvider";
|
|
7
9
|
export { OfflineBatchHandler } from "./OfflineBatchHandler";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applicationinsights-offlinechannel-js.js.map","sources":["applicationinsights-offlinechannel-js.js"],"sourcesContent":["export { WebStorageProvider } from \"./Providers/WebStorageProvider\";\r\nexport { IndexedDbProvider } from \"./Providers/IndexDbProvider\";\r\nexport { OfflineBatchHandler } from \"./OfflineBatchHandler\";\r\nexport { InMemoryBatch } from \"./InMemoryBatch\";\r\nexport { Sender } from \"./Sender\";\r\nexport { OfflineChannel } from \"./OfflineChannel\";\r\n//# sourceMappingURL=applicationinsights-offlinechannel-js.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"applicationinsights-offlinechannel-js.js.map","sources":["applicationinsights-offlinechannel-js.js"],"sourcesContent":["export { BatchSendStatus, BatchStoreStatus, StorageType } from \"./Interfaces/IOfflineBatch\";\r\nexport { StorageProviders } from \"./Interfaces/IOfflineProvider\";\r\nexport { WebStorageProvider } from \"./Providers/WebStorageProvider\";\r\nexport { IndexedDbProvider } from \"./Providers/IndexDbProvider\";\r\nexport { OfflineBatchHandler } from \"./OfflineBatchHandler\";\r\nexport { InMemoryBatch } from \"./InMemoryBatch\";\r\nexport { Sender } from \"./Sender\";\r\nexport { OfflineChannel } from \"./OfflineChannel\";\r\n//# sourceMappingURL=applicationinsights-offlinechannel-js.js.map"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|