@microsoft/applicationinsights-debugplugin-js 2.7.2-nightly.2111-10 → 2.7.2-nightly.2111-15

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.
Files changed (55) hide show
  1. package/browser/{ai.dbg.2.7.2-nightly.2111-10.cjs.js → ai.dbg.2.7.2-nightly.2111-15.cjs.js} +47 -7
  2. package/browser/ai.dbg.2.7.2-nightly.2111-15.cjs.js.map +1 -0
  3. package/browser/ai.dbg.2.7.2-nightly.2111-15.cjs.min.js +6 -0
  4. package/browser/ai.dbg.2.7.2-nightly.2111-15.cjs.min.js.map +1 -0
  5. package/browser/{ai.dbg.2.7.2-nightly.2111-10.gbl.js → ai.dbg.2.7.2-nightly.2111-15.gbl.js} +47 -7
  6. package/browser/ai.dbg.2.7.2-nightly.2111-15.gbl.js.map +1 -0
  7. package/browser/ai.dbg.2.7.2-nightly.2111-15.gbl.min.js +6 -0
  8. package/browser/ai.dbg.2.7.2-nightly.2111-15.gbl.min.js.map +1 -0
  9. package/browser/ai.dbg.2.7.2-nightly.2111-15.integrity.json +66 -0
  10. package/browser/{ai.dbg.2.7.2-nightly.2111-10.js → ai.dbg.2.7.2-nightly.2111-15.js} +47 -7
  11. package/browser/ai.dbg.2.7.2-nightly.2111-15.js.map +1 -0
  12. package/browser/ai.dbg.2.7.2-nightly.2111-15.min.js +6 -0
  13. package/browser/ai.dbg.2.7.2-nightly.2111-15.min.js.map +1 -0
  14. package/browser/ai.dbg.2.cjs.js +46 -6
  15. package/browser/ai.dbg.2.cjs.js.map +1 -1
  16. package/browser/ai.dbg.2.cjs.min.js +2 -2
  17. package/browser/ai.dbg.2.cjs.min.js.map +1 -1
  18. package/browser/ai.dbg.2.gbl.js +46 -6
  19. package/browser/ai.dbg.2.gbl.js.map +1 -1
  20. package/browser/ai.dbg.2.gbl.min.js +2 -2
  21. package/browser/ai.dbg.2.gbl.min.js.map +1 -1
  22. package/browser/ai.dbg.2.js +46 -6
  23. package/browser/ai.dbg.2.js.map +1 -1
  24. package/browser/ai.dbg.2.min.js +2 -2
  25. package/browser/ai.dbg.2.min.js.map +1 -1
  26. package/dist/applicationinsights-debugplugin-js.d.ts +1 -1
  27. package/dist/applicationinsights-debugplugin-js.js +46 -6
  28. package/dist/applicationinsights-debugplugin-js.js.map +1 -1
  29. package/dist/applicationinsights-debugplugin-js.min.js +2 -2
  30. package/dist/applicationinsights-debugplugin-js.min.js.map +1 -1
  31. package/dist/applicationinsights-debugplugin-js.rollup.d.ts +1 -1
  32. package/dist-esm/DebugPlugin.js +12 -5
  33. package/dist-esm/DebugPlugin.js.map +1 -1
  34. package/dist-esm/applicationinsights-debugplugin-js.js +1 -1
  35. package/dist-esm/components/Dashboard.js +1 -1
  36. package/dist-esm/components/LogEntry.js +1 -1
  37. package/dist-esm/components/debugBins.js +1 -1
  38. package/dist-esm/components/filterList.js +1 -1
  39. package/dist-esm/components/helpers.js +3 -2
  40. package/dist-esm/components/helpers.js.map +1 -1
  41. package/dist-esm/components/styleNodeSrc.js +1 -1
  42. package/dist-esm/interfaces/IDebugPluginConfig.js +1 -1
  43. package/package.json +3 -3
  44. package/src/DebugPlugin.ts +17 -4
  45. package/src/components/helpers.ts +3 -2
  46. package/browser/ai.dbg.2.7.2-nightly.2111-10.cjs.js.map +0 -1
  47. package/browser/ai.dbg.2.7.2-nightly.2111-10.cjs.min.js +0 -6
  48. package/browser/ai.dbg.2.7.2-nightly.2111-10.cjs.min.js.map +0 -1
  49. package/browser/ai.dbg.2.7.2-nightly.2111-10.gbl.js.map +0 -1
  50. package/browser/ai.dbg.2.7.2-nightly.2111-10.gbl.min.js +0 -6
  51. package/browser/ai.dbg.2.7.2-nightly.2111-10.gbl.min.js.map +0 -1
  52. package/browser/ai.dbg.2.7.2-nightly.2111-10.integrity.json +0 -66
  53. package/browser/ai.dbg.2.7.2-nightly.2111-10.js.map +0 -1
  54. package/browser/ai.dbg.2.7.2-nightly.2111-10.min.js +0 -6
  55. package/browser/ai.dbg.2.7.2-nightly.2111-10.min.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Microsoft.ApplicationInsights, 2.7.2-nightly.2111-10
2
+ * Microsoft.ApplicationInsights, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  *
5
5
  * Microsoft Application Insights Team
@@ -1,11 +1,11 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
6
6
 
7
7
  import { __extendsFn as __extends } from "@microsoft/applicationinsights-shims";
8
- import { BaseTelemetryPlugin, arrForEach, InstrumentFunc, objForEachKey, isFunction, dateNow, isArray, isUndefined } from "@microsoft/applicationinsights-core-js";
8
+ import { BaseTelemetryPlugin, arrForEach, InstrumentFunc, objForEachKey, isFunction, dateNow, isArray, isUndefined, getDebugExt } from "@microsoft/applicationinsights-core-js";
9
9
  import { Dashboard } from "./components/Dashboard";
10
10
  import { getTargetName } from "./components/helpers";
11
11
  import { permStyle } from "./components/styleNodeSrc";
@@ -253,6 +253,13 @@ var DebugPlugin = /** @class */ (function (_super) {
253
253
  }
254
254
  return evtPrefix;
255
255
  }
256
+ function _logEntry(theEvent, evtName, kind) {
257
+ dashboard.newLogEntry(theEvent, dateNow() - startTime, evtName, 0, kind);
258
+ var dbgExt = getDebugExt(_self.core.config);
259
+ if (dbgExt && dbgExt.debugMsg) {
260
+ dbgExt.debugMsg(evtName, theEvent);
261
+ }
262
+ }
256
263
  function _handleInstPreHook() {
257
264
  return function (funcArgs) {
258
265
  var orgArgs = [];
@@ -264,7 +271,7 @@ var DebugPlugin = /** @class */ (function (_super) {
264
271
  debugBinParent.addClassToEl("notify");
265
272
  }
266
273
  var evtPrefix = _getEvtPrefix(funcArgs);
267
- dashboard.newLogEntry(_createInstrumentObject(funcArgs, orgArgs), dateNow() - startTime, "".concat(evtPrefix), 0, funcArgs.name);
274
+ _logEntry(_createInstrumentObject(funcArgs, orgArgs), evtPrefix, funcArgs.name);
268
275
  if (_theConfig.dumpToConsole() && console && console.log) {
269
276
  console.log("[".concat(evtPrefix, "] preProcess - funcArgs: "), funcArgs);
270
277
  console.log("[".concat(evtPrefix, "] preProcess - orgArgs: "), orgArgs);
@@ -283,7 +290,7 @@ var DebugPlugin = /** @class */ (function (_super) {
283
290
  debugBinParent.addClassToEl("notify");
284
291
  }
285
292
  // The called function threw an exception
286
- dashboard.newLogEntry(_createInstrumentObject(funcArgs, orgArgs), dateNow() - startTime, "".concat(evtPrefix), 0, funcArgs.name);
293
+ _logEntry(_createInstrumentObject(funcArgs, orgArgs), evtPrefix, funcArgs.name);
287
294
  if (_theConfig.dumpToConsole() && console && console.log) {
288
295
  console.log("[".concat(evtPrefix, "] complete"));
289
296
  }
@@ -295,7 +302,7 @@ var DebugPlugin = /** @class */ (function (_super) {
295
302
  console.log("[".concat(_self.identifier, ":processTelemetry] complete"));
296
303
  }
297
304
  if (!debugBins["processTelemetry"] && _theConfig.logProcessTelemetry() === true) {
298
- dashboard.newLogEntry(event, dateNow() - startTime, "[".concat(_self.identifier, ":processTelemetry[").concat(event.baseType, "]"), 0, "processTelemetry");
305
+ _logEntry(event, "[".concat(_self.identifier, ":processTelemetry[").concat(event.baseType, "]"), "processTelemetry");
299
306
  }
300
307
  _self.processNext(event, itemCtx);
301
308
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DebugPlugin.js.map","sources":["DebugPlugin.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport { BaseTelemetryPlugin, arrForEach, InstrumentFunc, objForEachKey, isFunction, dateNow, isArray, isUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Dashboard } from \"./components/Dashboard\";\r\nimport { getTargetName } from \"./components/helpers\";\r\nimport { permStyle } from \"./components/styleNodeSrc\";\r\nimport { DebugBin, DebugBinParent } from \"./components/debugBins\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar getDefaultConfig = function () {\r\n var config = {\r\n trackers: function () { return [\r\n \"flush\",\r\n \"track\",\r\n \"trackEvent\",\r\n \"trackPageView\",\r\n \"trackPageViewPerformance\",\r\n \"trackException\",\r\n \"trackTrace\",\r\n \"trackMetric\",\r\n \"trackDependencyData\",\r\n \"processTelemetry\",\r\n \"throwInternal\",\r\n \"logInternalMessage\",\r\n \"triggerSend\",\r\n \"_sender\",\r\n \"perfEvent\",\r\n \"initialize\"\r\n ]; },\r\n excludeKeys: function () { return [\r\n \"_dynInstFuncs\",\r\n \"_getTelCtx\",\r\n \"_baseTelInit\",\r\n \"diagLog\",\r\n \"isInitialized\",\r\n \"setInitialized\",\r\n \"setNextPlugin\",\r\n \"processNext\"\r\n ]; },\r\n cssPrefix: function () { return \"ai\"; },\r\n disableNotifications: function () { return false; },\r\n dumpToConsole: function () { return false; },\r\n maxMessages: function () { return 5000; },\r\n showFunctions: function () { return false; },\r\n logProcessTelemetry: function () { return false; }\r\n };\r\n return config;\r\n};\r\nvar DebugPlugin = /** @class */ (function (_super) {\r\n __extends(DebugPlugin, _super);\r\n function DebugPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = DebugPlugin.identifier;\r\n var dashboard;\r\n /**\r\n * the style that will be permanently embedded in the webpage\r\n * TODO: manage style conflicts (prepend unique ID to relevant class names?)\r\n */\r\n var permStyleEl;\r\n /**\r\n * an object containing the individual debug bin items\r\n */\r\n var debugBins;\r\n /**\r\n * the parent containing all the individual debugBins\r\n */\r\n var debugBinParent;\r\n /**\r\n * the different telemetry functions that will be tracked\r\n */\r\n var trackers;\r\n /**\r\n * timestamp used to track number of seconds since webpage was loaded\r\n */\r\n var startTime = +new Date();\r\n /**\r\n * the config for this plugin\r\n */\r\n var _theConfig = getDefaultConfig();\r\n dynamicProto(DebugPlugin, _this, function (_self, base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n base.initialize(config, core, extensions, pluginChain);\r\n var defaultConfig = getDefaultConfig();\r\n var ctx_1 = _self._getTelCtx();\r\n var identifier_1 = _self.identifier;\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _theConfig[field] = function () { return ctx_1.getConfig(identifier_1, field, value()); };\r\n });\r\n var foundTrackers_1 = [];\r\n trackers = _theConfig.trackers();\r\n var prefix = _theConfig.cssPrefix();\r\n // 1. Listen to Notifications\r\n if (!_theConfig.disableNotifications()) {\r\n var notifyMgr = (isFunction(core.getNotifyMgr) && core.getNotifyMgr()) || core[\"_notificationManager\"];\r\n if (notifyMgr) {\r\n notifyMgr.addNotificationListener({\r\n eventsSent: function (events) {\r\n dashboard.newLogEntry(events, dateNow() - startTime, \"Notification:eventsSent\", 0, \"eventsSent\");\r\n },\r\n eventsDiscarded: function (events, reason) {\r\n dashboard.newLogEntry({\r\n events: events,\r\n reason: reason\r\n }, dateNow() - startTime, \"Notification:eventsDiscarded\", 0, \"eventsDiscarded\");\r\n },\r\n eventsSendRequest: function (sendReason, isAsync) {\r\n dashboard.newLogEntry({\r\n sendReason: sendReason,\r\n isAsync: isAsync\r\n }, dateNow() - startTime, \"Notification:eventsSendRequest\", 0, \"eventsSendRequest\");\r\n },\r\n perfEvent: function (perfEvent) {\r\n var evtName = \"Notification:perfEvent[\".concat(perfEvent.name, \"]\");\r\n dashboard.newLogEntry(perfEvent, dateNow() - startTime, evtName, 0, \"perfEvent\");\r\n }\r\n });\r\n if (trackers.indexOf(\"eventsSent\") !== -1) {\r\n foundTrackers_1.push(\"eventsSent\");\r\n }\r\n if (trackers.indexOf(\"eventsSendRequest\") !== -1) {\r\n foundTrackers_1.push(\"eventsSendRequest\");\r\n }\r\n if (trackers.indexOf(\"eventsDiscarded\") !== -1) {\r\n foundTrackers_1.push(\"eventsDiscarded\");\r\n }\r\n if (trackers.indexOf(\"perfEvent\") !== -1) {\r\n foundTrackers_1.push(\"perfEvent\");\r\n }\r\n }\r\n }\r\n // 2. Get all of the extensions and channels\r\n debugBins = {};\r\n var targetObjects_1 = [core, _self.diagLog()];\r\n // Get all of the config extensions\r\n if (config.extensions) {\r\n arrForEach(config.extensions, function (ext) {\r\n _addTargets(targetObjects_1, ext);\r\n });\r\n }\r\n // Get all of the passed extensions\r\n if (extensions) {\r\n arrForEach(extensions, function (ext) {\r\n _addTargets(targetObjects_1, ext);\r\n });\r\n }\r\n if (isFunction(core.getTransmissionControls)) {\r\n var channelControls = core.getTransmissionControls();\r\n if (channelControls) {\r\n arrForEach(channelControls, function (channel) {\r\n if (isArray(channel)) {\r\n arrForEach(channel, function (theChannel) {\r\n _addTargets(targetObjects_1, theChannel);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n // 3. Instrument the functions\r\n arrForEach(trackers, function (tracker) {\r\n arrForEach(targetObjects_1, function (target, idx) {\r\n var val = InstrumentFunc(target, tracker, {\r\n req: _handleInstPreHook(),\r\n rsp: _handleInstPostHook()\r\n }, true);\r\n if (val) {\r\n if (foundTrackers_1.indexOf(tracker) === -1) {\r\n foundTrackers_1.push(tracker);\r\n }\r\n }\r\n });\r\n });\r\n // Sort the items\r\n foundTrackers_1 = foundTrackers_1.sort();\r\n // 4. Create the Dashboard\r\n dashboard = new Dashboard({\r\n prefix: prefix,\r\n trackers: foundTrackers_1,\r\n excludeKeys: _theConfig.excludeKeys(),\r\n maxMessages: _theConfig.maxMessages(),\r\n includeFunctions: _theConfig.showFunctions()\r\n });\r\n // 5. setup debugBin\r\n var debugBinContainer = document.createElement(\"div\");\r\n debugBinContainer.className = \"\".concat(prefix, \"-debug-bin-container\");\r\n debugBinParent = new DebugBinParent(debugBinContainer, [], 0, prefix);\r\n arrForEach(foundTrackers_1, function (tracker, idx) {\r\n debugBins[tracker] = new DebugBin(tracker, 0, debugBinParent, (idx + 1) * 50);\r\n });\r\n // 6. append permanent style\r\n permStyleEl = document.createElement(\"style\");\r\n permStyleEl.innerHTML = permStyle(prefix);\r\n document.head.appendChild(permStyleEl);\r\n // 7. add button to debugBinParent\r\n debugBinParent.addButton(function (evt) {\r\n evt.stopPropagation();\r\n if (dashboard.isDisplayed()) {\r\n dashboard.hide();\r\n }\r\n else {\r\n dashboard.show();\r\n }\r\n }, \"show dashboard\");\r\n document.body.appendChild(debugBinContainer);\r\n // 8. Log the config as \"keep\" so it won't be dropped or cleared\r\n dashboard.newLogEntry(config, 0, \"config\", 0, \"config\", true);\r\n }\r\n };\r\n function _addTarget(targetObjects, ext) {\r\n if (ext && targetObjects.indexOf(ext) === -1) {\r\n targetObjects.push(ext);\r\n return true;\r\n }\r\n return false;\r\n }\r\n function _addTargets(targetObjects, ext) {\r\n if (_addTarget(targetObjects, ext)) {\r\n if (isFunction(ext[\"_getDbgPlgTargets\"])) {\r\n var extra = ext[\"_getDbgPlgTargets\"]();\r\n if (isArray(extra)) {\r\n arrForEach(extra, function (tgt) {\r\n _addTargets(targetObjects, tgt);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n function _createInstrumentObject(funcArgs, orgArgs) {\r\n var result = {\r\n funcName: funcArgs.name,\r\n inst: funcArgs.inst\r\n };\r\n if (orgArgs && orgArgs.length) {\r\n result.args = orgArgs;\r\n }\r\n if (!isUndefined(funcArgs.err)) {\r\n result.err = funcArgs.err;\r\n }\r\n if (!isUndefined(funcArgs.rslt)) {\r\n result.rslt = funcArgs.rslt;\r\n }\r\n return result;\r\n }\r\n function _getEvtPrefix(funcArgs) {\r\n var identifier = getTargetName(funcArgs.inst);\r\n var evtPrefix = funcArgs.name;\r\n if (identifier) {\r\n evtPrefix += \":\" + identifier;\r\n }\r\n return evtPrefix;\r\n }\r\n function _handleInstPreHook() {\r\n return function (funcArgs) {\r\n var orgArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n orgArgs[_i - 1] = arguments[_i];\r\n }\r\n (debugBins[funcArgs.name] || debugBins[\"default\"]).increment();\r\n if (funcArgs.name === \"trackException\" && !debugBinParent.showChildren) {\r\n debugBinParent.addClassToEl(\"notify\");\r\n }\r\n var evtPrefix = _getEvtPrefix(funcArgs);\r\n dashboard.newLogEntry(_createInstrumentObject(funcArgs, orgArgs), dateNow() - startTime, \"\".concat(evtPrefix), 0, funcArgs.name);\r\n if (_theConfig.dumpToConsole() && console && console.log) {\r\n console.log(\"[\".concat(evtPrefix, \"] preProcess - funcArgs: \"), funcArgs);\r\n console.log(\"[\".concat(evtPrefix, \"] preProcess - orgArgs: \"), orgArgs);\r\n }\r\n };\r\n }\r\n function _handleInstPostHook() {\r\n return function (funcArgs) {\r\n var orgArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n orgArgs[_i - 1] = arguments[_i];\r\n }\r\n if (!isUndefined(funcArgs.err)) {\r\n var evtPrefix = _getEvtPrefix(funcArgs);\r\n if (!debugBinParent.showChildren) {\r\n debugBinParent.addClassToEl(\"notify\");\r\n }\r\n // The called function threw an exception\r\n dashboard.newLogEntry(_createInstrumentObject(funcArgs, orgArgs), dateNow() - startTime, \"\".concat(evtPrefix), 0, funcArgs.name);\r\n if (_theConfig.dumpToConsole() && console && console.log) {\r\n console.log(\"[\".concat(evtPrefix, \"] complete\"));\r\n }\r\n }\r\n };\r\n }\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (_theConfig.dumpToConsole() && console && console.log) {\r\n console.log(\"[\".concat(_self.identifier, \":processTelemetry] complete\"));\r\n }\r\n if (!debugBins[\"processTelemetry\"] && _theConfig.logProcessTelemetry() === true) {\r\n dashboard.newLogEntry(event, dateNow() - startTime, \"[\".concat(_self.identifier, \":processTelemetry[\").concat(event.baseType, \"]\"), 0, \"processTelemetry\");\r\n }\r\n _self.processNext(event, itemCtx);\r\n };\r\n });\r\n return _this;\r\n }\r\n DebugPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n DebugPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n DebugPlugin.identifier = \"DebugPlugin\";\r\n return DebugPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default DebugPlugin;\r\n//# sourceMappingURL=DebugPlugin.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;2DAKM;AACN;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"DebugPlugin.js.map","sources":["DebugPlugin.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport { BaseTelemetryPlugin, arrForEach, InstrumentFunc, objForEachKey, isFunction, dateNow, isArray, isUndefined, getDebugExt } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Dashboard } from \"./components/Dashboard\";\r\nimport { getTargetName } from \"./components/helpers\";\r\nimport { permStyle } from \"./components/styleNodeSrc\";\r\nimport { DebugBin, DebugBinParent } from \"./components/debugBins\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nvar getDefaultConfig = function () {\r\n var config = {\r\n trackers: function () { return [\r\n \"flush\",\r\n \"track\",\r\n \"trackEvent\",\r\n \"trackPageView\",\r\n \"trackPageViewPerformance\",\r\n \"trackException\",\r\n \"trackTrace\",\r\n \"trackMetric\",\r\n \"trackDependencyData\",\r\n \"processTelemetry\",\r\n \"throwInternal\",\r\n \"logInternalMessage\",\r\n \"triggerSend\",\r\n \"_sender\",\r\n \"perfEvent\",\r\n \"initialize\"\r\n ]; },\r\n excludeKeys: function () { return [\r\n \"_dynInstFuncs\",\r\n \"_getTelCtx\",\r\n \"_baseTelInit\",\r\n \"diagLog\",\r\n \"isInitialized\",\r\n \"setInitialized\",\r\n \"setNextPlugin\",\r\n \"processNext\"\r\n ]; },\r\n cssPrefix: function () { return \"ai\"; },\r\n disableNotifications: function () { return false; },\r\n dumpToConsole: function () { return false; },\r\n maxMessages: function () { return 5000; },\r\n showFunctions: function () { return false; },\r\n logProcessTelemetry: function () { return false; }\r\n };\r\n return config;\r\n};\r\nvar DebugPlugin = /** @class */ (function (_super) {\r\n __extends(DebugPlugin, _super);\r\n function DebugPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = DebugPlugin.identifier;\r\n var dashboard;\r\n /**\r\n * the style that will be permanently embedded in the webpage\r\n * TODO: manage style conflicts (prepend unique ID to relevant class names?)\r\n */\r\n var permStyleEl;\r\n /**\r\n * an object containing the individual debug bin items\r\n */\r\n var debugBins;\r\n /**\r\n * the parent containing all the individual debugBins\r\n */\r\n var debugBinParent;\r\n /**\r\n * the different telemetry functions that will be tracked\r\n */\r\n var trackers;\r\n /**\r\n * timestamp used to track number of seconds since webpage was loaded\r\n */\r\n var startTime = +new Date();\r\n /**\r\n * the config for this plugin\r\n */\r\n var _theConfig = getDefaultConfig();\r\n dynamicProto(DebugPlugin, _this, function (_self, base) {\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n base.initialize(config, core, extensions, pluginChain);\r\n var defaultConfig = getDefaultConfig();\r\n var ctx_1 = _self._getTelCtx();\r\n var identifier_1 = _self.identifier;\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _theConfig[field] = function () { return ctx_1.getConfig(identifier_1, field, value()); };\r\n });\r\n var foundTrackers_1 = [];\r\n trackers = _theConfig.trackers();\r\n var prefix = _theConfig.cssPrefix();\r\n // 1. Listen to Notifications\r\n if (!_theConfig.disableNotifications()) {\r\n var notifyMgr = (isFunction(core.getNotifyMgr) && core.getNotifyMgr()) || core[\"_notificationManager\"];\r\n if (notifyMgr) {\r\n notifyMgr.addNotificationListener({\r\n eventsSent: function (events) {\r\n dashboard.newLogEntry(events, dateNow() - startTime, \"Notification:eventsSent\", 0, \"eventsSent\");\r\n },\r\n eventsDiscarded: function (events, reason) {\r\n dashboard.newLogEntry({\r\n events: events,\r\n reason: reason\r\n }, dateNow() - startTime, \"Notification:eventsDiscarded\", 0, \"eventsDiscarded\");\r\n },\r\n eventsSendRequest: function (sendReason, isAsync) {\r\n dashboard.newLogEntry({\r\n sendReason: sendReason,\r\n isAsync: isAsync\r\n }, dateNow() - startTime, \"Notification:eventsSendRequest\", 0, \"eventsSendRequest\");\r\n },\r\n perfEvent: function (perfEvent) {\r\n var evtName = \"Notification:perfEvent[\".concat(perfEvent.name, \"]\");\r\n dashboard.newLogEntry(perfEvent, dateNow() - startTime, evtName, 0, \"perfEvent\");\r\n }\r\n });\r\n if (trackers.indexOf(\"eventsSent\") !== -1) {\r\n foundTrackers_1.push(\"eventsSent\");\r\n }\r\n if (trackers.indexOf(\"eventsSendRequest\") !== -1) {\r\n foundTrackers_1.push(\"eventsSendRequest\");\r\n }\r\n if (trackers.indexOf(\"eventsDiscarded\") !== -1) {\r\n foundTrackers_1.push(\"eventsDiscarded\");\r\n }\r\n if (trackers.indexOf(\"perfEvent\") !== -1) {\r\n foundTrackers_1.push(\"perfEvent\");\r\n }\r\n }\r\n }\r\n // 2. Get all of the extensions and channels\r\n debugBins = {};\r\n var targetObjects_1 = [core, _self.diagLog()];\r\n // Get all of the config extensions\r\n if (config.extensions) {\r\n arrForEach(config.extensions, function (ext) {\r\n _addTargets(targetObjects_1, ext);\r\n });\r\n }\r\n // Get all of the passed extensions\r\n if (extensions) {\r\n arrForEach(extensions, function (ext) {\r\n _addTargets(targetObjects_1, ext);\r\n });\r\n }\r\n if (isFunction(core.getTransmissionControls)) {\r\n var channelControls = core.getTransmissionControls();\r\n if (channelControls) {\r\n arrForEach(channelControls, function (channel) {\r\n if (isArray(channel)) {\r\n arrForEach(channel, function (theChannel) {\r\n _addTargets(targetObjects_1, theChannel);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n // 3. Instrument the functions\r\n arrForEach(trackers, function (tracker) {\r\n arrForEach(targetObjects_1, function (target, idx) {\r\n var val = InstrumentFunc(target, tracker, {\r\n req: _handleInstPreHook(),\r\n rsp: _handleInstPostHook()\r\n }, true);\r\n if (val) {\r\n if (foundTrackers_1.indexOf(tracker) === -1) {\r\n foundTrackers_1.push(tracker);\r\n }\r\n }\r\n });\r\n });\r\n // Sort the items\r\n foundTrackers_1 = foundTrackers_1.sort();\r\n // 4. Create the Dashboard\r\n dashboard = new Dashboard({\r\n prefix: prefix,\r\n trackers: foundTrackers_1,\r\n excludeKeys: _theConfig.excludeKeys(),\r\n maxMessages: _theConfig.maxMessages(),\r\n includeFunctions: _theConfig.showFunctions()\r\n });\r\n // 5. setup debugBin\r\n var debugBinContainer = document.createElement(\"div\");\r\n debugBinContainer.className = \"\".concat(prefix, \"-debug-bin-container\");\r\n debugBinParent = new DebugBinParent(debugBinContainer, [], 0, prefix);\r\n arrForEach(foundTrackers_1, function (tracker, idx) {\r\n debugBins[tracker] = new DebugBin(tracker, 0, debugBinParent, (idx + 1) * 50);\r\n });\r\n // 6. append permanent style\r\n permStyleEl = document.createElement(\"style\");\r\n permStyleEl.innerHTML = permStyle(prefix);\r\n document.head.appendChild(permStyleEl);\r\n // 7. add button to debugBinParent\r\n debugBinParent.addButton(function (evt) {\r\n evt.stopPropagation();\r\n if (dashboard.isDisplayed()) {\r\n dashboard.hide();\r\n }\r\n else {\r\n dashboard.show();\r\n }\r\n }, \"show dashboard\");\r\n document.body.appendChild(debugBinContainer);\r\n // 8. Log the config as \"keep\" so it won't be dropped or cleared\r\n dashboard.newLogEntry(config, 0, \"config\", 0, \"config\", true);\r\n }\r\n };\r\n function _addTarget(targetObjects, ext) {\r\n if (ext && targetObjects.indexOf(ext) === -1) {\r\n targetObjects.push(ext);\r\n return true;\r\n }\r\n return false;\r\n }\r\n function _addTargets(targetObjects, ext) {\r\n if (_addTarget(targetObjects, ext)) {\r\n if (isFunction(ext[\"_getDbgPlgTargets\"])) {\r\n var extra = ext[\"_getDbgPlgTargets\"]();\r\n if (isArray(extra)) {\r\n arrForEach(extra, function (tgt) {\r\n _addTargets(targetObjects, tgt);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n function _createInstrumentObject(funcArgs, orgArgs) {\r\n var result = {\r\n funcName: funcArgs.name,\r\n inst: funcArgs.inst\r\n };\r\n if (orgArgs && orgArgs.length) {\r\n result.args = orgArgs;\r\n }\r\n if (!isUndefined(funcArgs.err)) {\r\n result.err = funcArgs.err;\r\n }\r\n if (!isUndefined(funcArgs.rslt)) {\r\n result.rslt = funcArgs.rslt;\r\n }\r\n return result;\r\n }\r\n function _getEvtPrefix(funcArgs) {\r\n var identifier = getTargetName(funcArgs.inst);\r\n var evtPrefix = funcArgs.name;\r\n if (identifier) {\r\n evtPrefix += \":\" + identifier;\r\n }\r\n return evtPrefix;\r\n }\r\n function _logEntry(theEvent, evtName, kind) {\r\n dashboard.newLogEntry(theEvent, dateNow() - startTime, evtName, 0, kind);\r\n var dbgExt = getDebugExt(_self.core.config);\r\n if (dbgExt && dbgExt.debugMsg) {\r\n dbgExt.debugMsg(evtName, theEvent);\r\n }\r\n }\r\n function _handleInstPreHook() {\r\n return function (funcArgs) {\r\n var orgArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n orgArgs[_i - 1] = arguments[_i];\r\n }\r\n (debugBins[funcArgs.name] || debugBins[\"default\"]).increment();\r\n if (funcArgs.name === \"trackException\" && !debugBinParent.showChildren) {\r\n debugBinParent.addClassToEl(\"notify\");\r\n }\r\n var evtPrefix = _getEvtPrefix(funcArgs);\r\n _logEntry(_createInstrumentObject(funcArgs, orgArgs), evtPrefix, funcArgs.name);\r\n if (_theConfig.dumpToConsole() && console && console.log) {\r\n console.log(\"[\".concat(evtPrefix, \"] preProcess - funcArgs: \"), funcArgs);\r\n console.log(\"[\".concat(evtPrefix, \"] preProcess - orgArgs: \"), orgArgs);\r\n }\r\n };\r\n }\r\n function _handleInstPostHook() {\r\n return function (funcArgs) {\r\n var orgArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n orgArgs[_i - 1] = arguments[_i];\r\n }\r\n if (!isUndefined(funcArgs.err)) {\r\n var evtPrefix = _getEvtPrefix(funcArgs);\r\n if (!debugBinParent.showChildren) {\r\n debugBinParent.addClassToEl(\"notify\");\r\n }\r\n // The called function threw an exception\r\n _logEntry(_createInstrumentObject(funcArgs, orgArgs), evtPrefix, funcArgs.name);\r\n if (_theConfig.dumpToConsole() && console && console.log) {\r\n console.log(\"[\".concat(evtPrefix, \"] complete\"));\r\n }\r\n }\r\n };\r\n }\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (_theConfig.dumpToConsole() && console && console.log) {\r\n console.log(\"[\".concat(_self.identifier, \":processTelemetry] complete\"));\r\n }\r\n if (!debugBins[\"processTelemetry\"] && _theConfig.logProcessTelemetry() === true) {\r\n _logEntry(event, \"[\".concat(_self.identifier, \":processTelemetry[\").concat(event.baseType, \"]\"), \"processTelemetry\");\r\n }\r\n _self.processNext(event, itemCtx);\r\n };\r\n });\r\n return _this;\r\n }\r\n DebugPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n DebugPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n DebugPlugin.identifier = \"DebugPlugin\";\r\n return DebugPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default DebugPlugin;\r\n//# sourceMappingURL=DebugPlugin.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;2DAKM;AACN;AACA;AACA;AACA;AACA"}
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  import { arrForEach } from "@microsoft/applicationinsights-core-js";
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
  import { isBoolean, isNumber, isObject, isString } from "@microsoft/applicationinsights-core-js";
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -12,9 +12,10 @@ var strGetOwnPropertyNames = "getOwnPropertyNames";
12
12
  export var MAX_DEPTH = 16;
13
13
  export function makeRegex(value) {
14
14
  if (value && value.length > 0) {
15
+ // Escape any slashes first!
15
16
  value = value.replace(/\\/g, "\\\\");
16
17
  // eslint-disable-next-line security/detect-non-literal-regexp
17
- value = value.replace(/([\+\?\|\{\[\(\)\^\$\#\.]}])/g, "\\$1");
18
+ value = value.replace(/([\+\?\|\{\}\[\]\(\)\^\$\#\.\=\!\:\/])/g, "\\$1");
18
19
  value = value.replace(/\*/g, ".*");
19
20
  return new RegExp("(" + value + ")");
20
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js.map","sources":["helpers.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, hasOwnProperty, isFunction, isObject, isString, isSymbol, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Util } from \"@microsoft/applicationinsights-common\";\r\nimport { strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nvar strConstructor = \"constructor\";\r\nvar strGetOwnPropertyNames = \"getOwnPropertyNames\";\r\nexport var MAX_DEPTH = 16;\r\nexport function makeRegex(value) {\r\n if (value && value.length > 0) {\r\n value = value.replace(/\\\\/g, \"\\\\\\\\\");\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n value = value.replace(/([\\+\\?\\|\\{\\[\\(\\)\\^\\$\\#\\.]}])/g, \"\\\\$1\");\r\n value = value.replace(/\\*/g, \".*\");\r\n return new RegExp(\"(\" + value + \")\");\r\n }\r\n return null;\r\n}\r\nexport function toggleClassName(el, className) {\r\n var idx = el.className.indexOf(className);\r\n if (idx === -1) {\r\n el.className += className;\r\n }\r\n else {\r\n el.className = el.className.substring(0, idx) + el.className.substring(idx + className.length);\r\n }\r\n}\r\nexport function traverseAndReplace(target, maxDepth, currentDepth, thingsReferenced, excludedKeys, includeFunctions) {\r\n var out = {};\r\n if (!thingsReferenced) {\r\n thingsReferenced = [];\r\n }\r\n if (isObject(target)) {\r\n for (var _i = 0, _a = getTargetKeys(target, excludedKeys, includeFunctions); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n var targetValue = target[key];\r\n if (isSymbol(targetValue)) {\r\n targetValue = targetValue.toString();\r\n }\r\n if (targetValue !== null && arrIndexOf(thingsReferenced, targetValue) !== -1) {\r\n out[key] = \"<circular (\".concat(key, \" - \\\"\").concat(getTargetName(targetValue), \"\\\")>\");\r\n }\r\n else if (targetValue !== null && isObject(targetValue)) {\r\n if (currentDepth >= maxDepth) {\r\n out[key] = \"<max allowed depth reached>\";\r\n }\r\n else {\r\n thingsReferenced.push(target);\r\n out[key] = traverseAndReplace(targetValue, maxDepth, currentDepth + 1, thingsReferenced, excludedKeys, includeFunctions);\r\n thingsReferenced.pop();\r\n }\r\n }\r\n else {\r\n out[key] = targetValue;\r\n }\r\n }\r\n }\r\n return out;\r\n}\r\nfunction _sanitizeText(value) {\r\n if (value) {\r\n value = value.replace(/&/g, \"&amp;\");\r\n value = value.replace(/>/g, \"&gt;\");\r\n value = value.replace(/</g, \"&lt;\");\r\n }\r\n return value;\r\n}\r\nfunction _setInnerText(elm, theText, textFilter) {\r\n var innerText = theText;\r\n var matchPos = -1;\r\n var matchLen = 0;\r\n var rg = makeRegex(textFilter);\r\n if (rg) {\r\n var matchTxt = rg.exec(innerText);\r\n if (matchTxt && matchTxt[1]) {\r\n matchPos = theText.indexOf(matchTxt[1]);\r\n matchLen = matchTxt[1].length;\r\n }\r\n }\r\n if (matchPos !== -1) {\r\n var innerHtml = _sanitizeText(theText.substring(0, matchPos)) +\r\n \"<span class=\\\"matched-text-filter\\\">\" +\r\n _sanitizeText(theText.substring(matchPos, matchPos + matchLen)) +\r\n \"</span>\" +\r\n theText.substring(matchPos + matchLen);\r\n elm.innerHTML = innerHtml;\r\n return true;\r\n }\r\n elm.innerText = theText;\r\n return false;\r\n}\r\nvar lastSelectedElement;\r\nvar selectedObject;\r\nexport function copySelectedTree() {\r\n var toCopy = selectedObject;\r\n if (!toCopy) {\r\n return;\r\n }\r\n var textArea = document.createElement(\"textarea\");\r\n textArea.innerText = JSON.stringify(toCopy);\r\n textArea.style.opacity = \"0\";\r\n document.body.appendChild(textArea);\r\n textArea.select();\r\n document.execCommand(\"copy\");\r\n textArea.parentElement.removeChild(textArea);\r\n}\r\nexport function focusHandler(evt, target, level, excludeKeys, includeFunctions) {\r\n if (lastSelectedElement) {\r\n toggleClassName(lastSelectedElement, \" last-selected-element\");\r\n }\r\n lastSelectedElement = evt.target;\r\n for (var i = 0; i < 10; i++) {\r\n if (lastSelectedElement.tagName === \"DIV\") {\r\n break;\r\n }\r\n lastSelectedElement = lastSelectedElement.parentElement;\r\n }\r\n lastSelectedElement.className += \" last-selected-element\";\r\n selectedObject = traverseAndReplace(target, MAX_DEPTH, level, null, excludeKeys, includeFunctions);\r\n}\r\nfunction _navHandler(evt, openHandler, currentState) {\r\n var el = evt.target;\r\n switch (evt.which) {\r\n // Enter\r\n case 13:\r\n (openHandler) ? openHandler(evt) : void 0;\r\n break;\r\n // ArrowUp\r\n case 38:\r\n evt.preventDefault();\r\n var prev = el.previousElementSibling;\r\n if (prev && prev.tagName !== \"BUTTON\") {\r\n prev.focus();\r\n }\r\n break;\r\n // ArrowDown\r\n case 40:\r\n evt.preventDefault();\r\n var next = el.nextElementSibling;\r\n if (next) {\r\n next.focus();\r\n }\r\n break;\r\n // ArrowRight\r\n case 39:\r\n if (openHandler) {\r\n openHandler(evt, true);\r\n if (currentState) {\r\n el.firstElementChild.nextSibling.focus();\r\n }\r\n }\r\n break;\r\n // ArrowLeft\r\n case 37:\r\n if (openHandler) {\r\n openHandler(evt, false);\r\n }\r\n if (!currentState) {\r\n el.parentElement.focus();\r\n }\r\n break;\r\n // c\r\n case 67:\r\n if (evt.ctrlKey) {\r\n copySelectedTree();\r\n evt.target.focus();\r\n }\r\n break;\r\n }\r\n}\r\nexport function getTargetName(target) {\r\n if (target) {\r\n if (isString(target.identifier)) {\r\n return target.identifier;\r\n }\r\n if (isString(target.name)) {\r\n return target.name;\r\n }\r\n if (hasOwnProperty(target, strShimPrototype)) {\r\n // Look like a prototype\r\n return target.name || \"\";\r\n }\r\n return ((target[strConstructor]) || {}).name || \"\";\r\n }\r\n return \"\";\r\n}\r\nfunction _toString(value) {\r\n if (isString(value)) {\r\n return value;\r\n }\r\n if (isSymbol(value)) {\r\n return value.toString();\r\n }\r\n if (isFunction(value[\"toString\"])) {\r\n return value[\"toString\"]() || \"\";\r\n }\r\n return \"\";\r\n}\r\nexport function getTargetKeys(target, excludedKeys, includeFunctions) {\r\n var keys = objKeys(target);\r\n if (!Util.isArray(target)) {\r\n try {\r\n if (Object[strGetOwnPropertyNames]) {\r\n // We need to use this for built in objects such as Error which don't return their values via objKeys because they are not enumerable for example\r\n var propKeys = Object[strGetOwnPropertyNames](target);\r\n if (propKeys) {\r\n arrForEach(propKeys, function (key) {\r\n var theKey = _toString(key);\r\n if (theKey && keys.indexOf(theKey) === -1) {\r\n keys.push(key);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n // getOwnPropertyNames can fail in ES5, if the argument to this method is not an object (a primitive),\r\n // then it will cause a TypeError. In ES2015, a non-object argument will be coerced to an object.\r\n }\r\n }\r\n var theKeys = [];\r\n arrForEach(keys, function (key) {\r\n if (!includeFunctions && isFunction(target[key])) {\r\n return;\r\n }\r\n var theKey = _toString(key);\r\n if (theKey && excludedKeys.indexOf(theKey) === -1) {\r\n theKeys.push(theKey);\r\n }\r\n });\r\n return theKeys;\r\n}\r\nexport function formatLogElements(target, tmLabel, key, level, textFilter, excludeKeys, thingsReferenced, includeFunctions) {\r\n var openState = false;\r\n if (!level) {\r\n level = 0;\r\n }\r\n if (!thingsReferenced) {\r\n thingsReferenced = [];\r\n }\r\n var isObj = isObject(target) || Util.isError(target);\r\n var isErr = target[\"baseType\"] === \"ExceptionData\" || Util.isError(target);\r\n var children = [];\r\n function _openNode(currentLine) {\r\n openState = true;\r\n arrForEach(children, function (child) {\r\n rootDiv.appendChild(child);\r\n });\r\n currentLine.className = \"obj-key expandable open\";\r\n }\r\n function _collapseNode(currentLine) {\r\n // rootDiv.innerHTML = '';\r\n arrForEach(children, function (child) {\r\n rootDiv.removeChild(child);\r\n });\r\n // rootDiv.appendChild(currentLine);\r\n openState = false;\r\n currentLine.className = \"obj-key expandable closed\";\r\n }\r\n var matched = false;\r\n var childOpened = false;\r\n var keys = getTargetKeys(target, excludeKeys, includeFunctions);\r\n if (keys.length === 0) {\r\n keys.push(\"<empty>\");\r\n }\r\n if (level >= MAX_DEPTH) {\r\n keys.unshift(\"<maxdepth>\");\r\n }\r\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\r\n var key_1 = keys_1[_i];\r\n if (excludeKeys.indexOf(key_1) !== -1) {\r\n continue;\r\n }\r\n var targetValue = target[key_1];\r\n if (isSymbol(targetValue)) {\r\n targetValue = targetValue.toString();\r\n }\r\n if (key_1 === \"<maxdepth>\") {\r\n var builder = document.createElement(\"div\");\r\n builder.className = \"empty\";\r\n builder.innerText = \"<max allowed depth reached>\";\r\n children.push(builder);\r\n break;\r\n }\r\n else if (key_1 === \"<empty>\") {\r\n var builder = document.createElement(\"div\");\r\n builder.className = \"empty\";\r\n builder.innerText = \"<empty>\";\r\n children.push(builder);\r\n }\r\n else if (targetValue !== null && arrIndexOf(thingsReferenced, targetValue) !== -1) {\r\n var builder = document.createElement(\"div\");\r\n builder.className = \"empty\";\r\n builder.innerText = \"<circular (\".concat(key_1, \") - \\\"\").concat(getTargetName(targetValue), \"\\\">\");\r\n children.push(builder);\r\n }\r\n else if (targetValue !== null && (isObject(targetValue) || Util.isError(targetValue))) {\r\n thingsReferenced.push(target);\r\n var formatted = formatLogElements(targetValue, null, key_1, level + 1, textFilter, excludeKeys, thingsReferenced, includeFunctions);\r\n thingsReferenced.pop();\r\n if (formatted.matched) {\r\n childOpened = true;\r\n }\r\n if (formatted.isErr) {\r\n isErr = true;\r\n }\r\n children.push(formatted.root);\r\n }\r\n else {\r\n var builder = document.createElement(\"div\");\r\n builder.setAttribute(\"tabindex\", \"0\");\r\n builder.onclick = function (evt) {\r\n evt.stopPropagation();\r\n };\r\n builder.ontouchend = function (evt) {\r\n evt.stopPropagation();\r\n };\r\n builder.onkeydown = function (evt) {\r\n evt.stopPropagation();\r\n _navHandler(evt);\r\n };\r\n builder.onfocus = function (evt) {\r\n focusHandler(evt, target, level, excludeKeys, includeFunctions);\r\n };\r\n var outerSpan = document.createElement(\"span\");\r\n var keySpan = document.createElement(\"span\");\r\n keySpan.className = \"key\";\r\n if (_setInnerText(keySpan, \"\".concat(key_1, \": \"), textFilter)) {\r\n childOpened = true;\r\n }\r\n outerSpan.appendChild(keySpan);\r\n var valueSpan = document.createElement(\"span\");\r\n if (isFunction(targetValue)) {\r\n var fnStr = targetValue.toString();\r\n var fnHead = fnStr.match(/^([^{]+)/)[1];\r\n valueSpan.textContent = \"\".concat(fnHead, \"{...}\");\r\n }\r\n else {\r\n if (_setInnerText(valueSpan, \"\".concat(targetValue), textFilter)) {\r\n childOpened = true;\r\n }\r\n }\r\n valueSpan.className = \"\".concat(typeof targetValue);\r\n outerSpan.appendChild(valueSpan);\r\n builder.appendChild(outerSpan);\r\n children.push(builder);\r\n }\r\n }\r\n var rootDiv = document.createElement(\"div\");\r\n var innerText = \"\";\r\n var currentLine = document.createElement(\"span\");\r\n if (isObj || children.length) {\r\n innerText = \"\".concat(key ? key : \"obj\", \": \");\r\n if (Util.isArray(target)) {\r\n innerText += \"[\".concat(getTargetKeys(target, excludeKeys, includeFunctions).length, \"]\");\r\n }\r\n else {\r\n var targetName = getTargetName(target);\r\n if (targetName) {\r\n innerText += \" <\\\"\".concat(targetName, \"\\\"> \");\r\n }\r\n innerText += \"{\".concat(getTargetKeys(target, excludeKeys, includeFunctions).length, \"}\");\r\n }\r\n matched = _setInnerText(currentLine, innerText, textFilter);\r\n if (tmLabel) {\r\n var tmWrapper = document.createElement(\"span\");\r\n var tmDetails = document.createElement(\"span\");\r\n tmDetails.className = \"obj-time\";\r\n tmDetails.innerText = tmLabel;\r\n tmWrapper.appendChild(tmDetails);\r\n tmWrapper.appendChild(currentLine);\r\n currentLine = tmWrapper;\r\n }\r\n currentLine.className = \"obj-key expandable closed\";\r\n }\r\n else {\r\n innerText = \"\".concat(key ? key : \"obj\", \": \").concat(target.toString());\r\n matched = _setInnerText(currentLine, innerText, textFilter);\r\n currentLine.className = \"obj-key\";\r\n }\r\n rootDiv.appendChild(currentLine);\r\n rootDiv.setAttribute(\"tabindex\", \"0\");\r\n if (childOpened) {\r\n // A child node matched so auto-expand\r\n _openNode(currentLine);\r\n }\r\n if (isObj) {\r\n if (isErr) {\r\n rootDiv.className = \"exception\";\r\n }\r\n var openHandler_1 = function (evt, forceState) {\r\n evt.stopPropagation();\r\n if (Util.getIEVersion()) {\r\n focusHandler(evt, target, level, excludeKeys, includeFunctions);\r\n }\r\n if (forceState !== undefined && openState === forceState) {\r\n return;\r\n }\r\n if (lastSelectedElement === rootDiv) {\r\n if (openState) {\r\n _collapseNode(currentLine);\r\n }\r\n else {\r\n _openNode(currentLine);\r\n }\r\n }\r\n };\r\n rootDiv.onkeydown = function (evt) {\r\n _navHandler(evt, openHandler_1, openState);\r\n };\r\n rootDiv.onclick = function (evt) {\r\n openHandler_1(evt);\r\n };\r\n rootDiv.ontouchend = function (evt) {\r\n openHandler_1(evt);\r\n };\r\n rootDiv.onfocus = function (evt) {\r\n focusHandler(evt, target, level, excludeKeys, includeFunctions);\r\n };\r\n }\r\n return {\r\n root: rootDiv,\r\n isErr: isErr,\r\n matched: matched || childOpened\r\n };\r\n}\r\n//# sourceMappingURL=helpers.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"helpers.js.map","sources":["helpers.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, hasOwnProperty, isFunction, isObject, isString, isSymbol, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Util } from \"@microsoft/applicationinsights-common\";\r\nimport { strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nvar strConstructor = \"constructor\";\r\nvar strGetOwnPropertyNames = \"getOwnPropertyNames\";\r\nexport var MAX_DEPTH = 16;\r\nexport function makeRegex(value) {\r\n if (value && value.length > 0) {\r\n // Escape any slashes first!\r\n value = value.replace(/\\\\/g, \"\\\\\\\\\");\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n value = value.replace(/([\\+\\?\\|\\{\\}\\[\\]\\(\\)\\^\\$\\#\\.\\=\\!\\:\\/])/g, \"\\\\$1\");\r\n value = value.replace(/\\*/g, \".*\");\r\n return new RegExp(\"(\" + value + \")\");\r\n }\r\n return null;\r\n}\r\nexport function toggleClassName(el, className) {\r\n var idx = el.className.indexOf(className);\r\n if (idx === -1) {\r\n el.className += className;\r\n }\r\n else {\r\n el.className = el.className.substring(0, idx) + el.className.substring(idx + className.length);\r\n }\r\n}\r\nexport function traverseAndReplace(target, maxDepth, currentDepth, thingsReferenced, excludedKeys, includeFunctions) {\r\n var out = {};\r\n if (!thingsReferenced) {\r\n thingsReferenced = [];\r\n }\r\n if (isObject(target)) {\r\n for (var _i = 0, _a = getTargetKeys(target, excludedKeys, includeFunctions); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n var targetValue = target[key];\r\n if (isSymbol(targetValue)) {\r\n targetValue = targetValue.toString();\r\n }\r\n if (targetValue !== null && arrIndexOf(thingsReferenced, targetValue) !== -1) {\r\n out[key] = \"<circular (\".concat(key, \" - \\\"\").concat(getTargetName(targetValue), \"\\\")>\");\r\n }\r\n else if (targetValue !== null && isObject(targetValue)) {\r\n if (currentDepth >= maxDepth) {\r\n out[key] = \"<max allowed depth reached>\";\r\n }\r\n else {\r\n thingsReferenced.push(target);\r\n out[key] = traverseAndReplace(targetValue, maxDepth, currentDepth + 1, thingsReferenced, excludedKeys, includeFunctions);\r\n thingsReferenced.pop();\r\n }\r\n }\r\n else {\r\n out[key] = targetValue;\r\n }\r\n }\r\n }\r\n return out;\r\n}\r\nfunction _sanitizeText(value) {\r\n if (value) {\r\n value = value.replace(/&/g, \"&amp;\");\r\n value = value.replace(/>/g, \"&gt;\");\r\n value = value.replace(/</g, \"&lt;\");\r\n }\r\n return value;\r\n}\r\nfunction _setInnerText(elm, theText, textFilter) {\r\n var innerText = theText;\r\n var matchPos = -1;\r\n var matchLen = 0;\r\n var rg = makeRegex(textFilter);\r\n if (rg) {\r\n var matchTxt = rg.exec(innerText);\r\n if (matchTxt && matchTxt[1]) {\r\n matchPos = theText.indexOf(matchTxt[1]);\r\n matchLen = matchTxt[1].length;\r\n }\r\n }\r\n if (matchPos !== -1) {\r\n var innerHtml = _sanitizeText(theText.substring(0, matchPos)) +\r\n \"<span class=\\\"matched-text-filter\\\">\" +\r\n _sanitizeText(theText.substring(matchPos, matchPos + matchLen)) +\r\n \"</span>\" +\r\n theText.substring(matchPos + matchLen);\r\n elm.innerHTML = innerHtml;\r\n return true;\r\n }\r\n elm.innerText = theText;\r\n return false;\r\n}\r\nvar lastSelectedElement;\r\nvar selectedObject;\r\nexport function copySelectedTree() {\r\n var toCopy = selectedObject;\r\n if (!toCopy) {\r\n return;\r\n }\r\n var textArea = document.createElement(\"textarea\");\r\n textArea.innerText = JSON.stringify(toCopy);\r\n textArea.style.opacity = \"0\";\r\n document.body.appendChild(textArea);\r\n textArea.select();\r\n document.execCommand(\"copy\");\r\n textArea.parentElement.removeChild(textArea);\r\n}\r\nexport function focusHandler(evt, target, level, excludeKeys, includeFunctions) {\r\n if (lastSelectedElement) {\r\n toggleClassName(lastSelectedElement, \" last-selected-element\");\r\n }\r\n lastSelectedElement = evt.target;\r\n for (var i = 0; i < 10; i++) {\r\n if (lastSelectedElement.tagName === \"DIV\") {\r\n break;\r\n }\r\n lastSelectedElement = lastSelectedElement.parentElement;\r\n }\r\n lastSelectedElement.className += \" last-selected-element\";\r\n selectedObject = traverseAndReplace(target, MAX_DEPTH, level, null, excludeKeys, includeFunctions);\r\n}\r\nfunction _navHandler(evt, openHandler, currentState) {\r\n var el = evt.target;\r\n switch (evt.which) {\r\n // Enter\r\n case 13:\r\n (openHandler) ? openHandler(evt) : void 0;\r\n break;\r\n // ArrowUp\r\n case 38:\r\n evt.preventDefault();\r\n var prev = el.previousElementSibling;\r\n if (prev && prev.tagName !== \"BUTTON\") {\r\n prev.focus();\r\n }\r\n break;\r\n // ArrowDown\r\n case 40:\r\n evt.preventDefault();\r\n var next = el.nextElementSibling;\r\n if (next) {\r\n next.focus();\r\n }\r\n break;\r\n // ArrowRight\r\n case 39:\r\n if (openHandler) {\r\n openHandler(evt, true);\r\n if (currentState) {\r\n el.firstElementChild.nextSibling.focus();\r\n }\r\n }\r\n break;\r\n // ArrowLeft\r\n case 37:\r\n if (openHandler) {\r\n openHandler(evt, false);\r\n }\r\n if (!currentState) {\r\n el.parentElement.focus();\r\n }\r\n break;\r\n // c\r\n case 67:\r\n if (evt.ctrlKey) {\r\n copySelectedTree();\r\n evt.target.focus();\r\n }\r\n break;\r\n }\r\n}\r\nexport function getTargetName(target) {\r\n if (target) {\r\n if (isString(target.identifier)) {\r\n return target.identifier;\r\n }\r\n if (isString(target.name)) {\r\n return target.name;\r\n }\r\n if (hasOwnProperty(target, strShimPrototype)) {\r\n // Look like a prototype\r\n return target.name || \"\";\r\n }\r\n return ((target[strConstructor]) || {}).name || \"\";\r\n }\r\n return \"\";\r\n}\r\nfunction _toString(value) {\r\n if (isString(value)) {\r\n return value;\r\n }\r\n if (isSymbol(value)) {\r\n return value.toString();\r\n }\r\n if (isFunction(value[\"toString\"])) {\r\n return value[\"toString\"]() || \"\";\r\n }\r\n return \"\";\r\n}\r\nexport function getTargetKeys(target, excludedKeys, includeFunctions) {\r\n var keys = objKeys(target);\r\n if (!Util.isArray(target)) {\r\n try {\r\n if (Object[strGetOwnPropertyNames]) {\r\n // We need to use this for built in objects such as Error which don't return their values via objKeys because they are not enumerable for example\r\n var propKeys = Object[strGetOwnPropertyNames](target);\r\n if (propKeys) {\r\n arrForEach(propKeys, function (key) {\r\n var theKey = _toString(key);\r\n if (theKey && keys.indexOf(theKey) === -1) {\r\n keys.push(key);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n // getOwnPropertyNames can fail in ES5, if the argument to this method is not an object (a primitive),\r\n // then it will cause a TypeError. In ES2015, a non-object argument will be coerced to an object.\r\n }\r\n }\r\n var theKeys = [];\r\n arrForEach(keys, function (key) {\r\n if (!includeFunctions && isFunction(target[key])) {\r\n return;\r\n }\r\n var theKey = _toString(key);\r\n if (theKey && excludedKeys.indexOf(theKey) === -1) {\r\n theKeys.push(theKey);\r\n }\r\n });\r\n return theKeys;\r\n}\r\nexport function formatLogElements(target, tmLabel, key, level, textFilter, excludeKeys, thingsReferenced, includeFunctions) {\r\n var openState = false;\r\n if (!level) {\r\n level = 0;\r\n }\r\n if (!thingsReferenced) {\r\n thingsReferenced = [];\r\n }\r\n var isObj = isObject(target) || Util.isError(target);\r\n var isErr = target[\"baseType\"] === \"ExceptionData\" || Util.isError(target);\r\n var children = [];\r\n function _openNode(currentLine) {\r\n openState = true;\r\n arrForEach(children, function (child) {\r\n rootDiv.appendChild(child);\r\n });\r\n currentLine.className = \"obj-key expandable open\";\r\n }\r\n function _collapseNode(currentLine) {\r\n // rootDiv.innerHTML = '';\r\n arrForEach(children, function (child) {\r\n rootDiv.removeChild(child);\r\n });\r\n // rootDiv.appendChild(currentLine);\r\n openState = false;\r\n currentLine.className = \"obj-key expandable closed\";\r\n }\r\n var matched = false;\r\n var childOpened = false;\r\n var keys = getTargetKeys(target, excludeKeys, includeFunctions);\r\n if (keys.length === 0) {\r\n keys.push(\"<empty>\");\r\n }\r\n if (level >= MAX_DEPTH) {\r\n keys.unshift(\"<maxdepth>\");\r\n }\r\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\r\n var key_1 = keys_1[_i];\r\n if (excludeKeys.indexOf(key_1) !== -1) {\r\n continue;\r\n }\r\n var targetValue = target[key_1];\r\n if (isSymbol(targetValue)) {\r\n targetValue = targetValue.toString();\r\n }\r\n if (key_1 === \"<maxdepth>\") {\r\n var builder = document.createElement(\"div\");\r\n builder.className = \"empty\";\r\n builder.innerText = \"<max allowed depth reached>\";\r\n children.push(builder);\r\n break;\r\n }\r\n else if (key_1 === \"<empty>\") {\r\n var builder = document.createElement(\"div\");\r\n builder.className = \"empty\";\r\n builder.innerText = \"<empty>\";\r\n children.push(builder);\r\n }\r\n else if (targetValue !== null && arrIndexOf(thingsReferenced, targetValue) !== -1) {\r\n var builder = document.createElement(\"div\");\r\n builder.className = \"empty\";\r\n builder.innerText = \"<circular (\".concat(key_1, \") - \\\"\").concat(getTargetName(targetValue), \"\\\">\");\r\n children.push(builder);\r\n }\r\n else if (targetValue !== null && (isObject(targetValue) || Util.isError(targetValue))) {\r\n thingsReferenced.push(target);\r\n var formatted = formatLogElements(targetValue, null, key_1, level + 1, textFilter, excludeKeys, thingsReferenced, includeFunctions);\r\n thingsReferenced.pop();\r\n if (formatted.matched) {\r\n childOpened = true;\r\n }\r\n if (formatted.isErr) {\r\n isErr = true;\r\n }\r\n children.push(formatted.root);\r\n }\r\n else {\r\n var builder = document.createElement(\"div\");\r\n builder.setAttribute(\"tabindex\", \"0\");\r\n builder.onclick = function (evt) {\r\n evt.stopPropagation();\r\n };\r\n builder.ontouchend = function (evt) {\r\n evt.stopPropagation();\r\n };\r\n builder.onkeydown = function (evt) {\r\n evt.stopPropagation();\r\n _navHandler(evt);\r\n };\r\n builder.onfocus = function (evt) {\r\n focusHandler(evt, target, level, excludeKeys, includeFunctions);\r\n };\r\n var outerSpan = document.createElement(\"span\");\r\n var keySpan = document.createElement(\"span\");\r\n keySpan.className = \"key\";\r\n if (_setInnerText(keySpan, \"\".concat(key_1, \": \"), textFilter)) {\r\n childOpened = true;\r\n }\r\n outerSpan.appendChild(keySpan);\r\n var valueSpan = document.createElement(\"span\");\r\n if (isFunction(targetValue)) {\r\n var fnStr = targetValue.toString();\r\n var fnHead = fnStr.match(/^([^{]+)/)[1];\r\n valueSpan.textContent = \"\".concat(fnHead, \"{...}\");\r\n }\r\n else {\r\n if (_setInnerText(valueSpan, \"\".concat(targetValue), textFilter)) {\r\n childOpened = true;\r\n }\r\n }\r\n valueSpan.className = \"\".concat(typeof targetValue);\r\n outerSpan.appendChild(valueSpan);\r\n builder.appendChild(outerSpan);\r\n children.push(builder);\r\n }\r\n }\r\n var rootDiv = document.createElement(\"div\");\r\n var innerText = \"\";\r\n var currentLine = document.createElement(\"span\");\r\n if (isObj || children.length) {\r\n innerText = \"\".concat(key ? key : \"obj\", \": \");\r\n if (Util.isArray(target)) {\r\n innerText += \"[\".concat(getTargetKeys(target, excludeKeys, includeFunctions).length, \"]\");\r\n }\r\n else {\r\n var targetName = getTargetName(target);\r\n if (targetName) {\r\n innerText += \" <\\\"\".concat(targetName, \"\\\"> \");\r\n }\r\n innerText += \"{\".concat(getTargetKeys(target, excludeKeys, includeFunctions).length, \"}\");\r\n }\r\n matched = _setInnerText(currentLine, innerText, textFilter);\r\n if (tmLabel) {\r\n var tmWrapper = document.createElement(\"span\");\r\n var tmDetails = document.createElement(\"span\");\r\n tmDetails.className = \"obj-time\";\r\n tmDetails.innerText = tmLabel;\r\n tmWrapper.appendChild(tmDetails);\r\n tmWrapper.appendChild(currentLine);\r\n currentLine = tmWrapper;\r\n }\r\n currentLine.className = \"obj-key expandable closed\";\r\n }\r\n else {\r\n innerText = \"\".concat(key ? key : \"obj\", \": \").concat(target.toString());\r\n matched = _setInnerText(currentLine, innerText, textFilter);\r\n currentLine.className = \"obj-key\";\r\n }\r\n rootDiv.appendChild(currentLine);\r\n rootDiv.setAttribute(\"tabindex\", \"0\");\r\n if (childOpened) {\r\n // A child node matched so auto-expand\r\n _openNode(currentLine);\r\n }\r\n if (isObj) {\r\n if (isErr) {\r\n rootDiv.className = \"exception\";\r\n }\r\n var openHandler_1 = function (evt, forceState) {\r\n evt.stopPropagation();\r\n if (Util.getIEVersion()) {\r\n focusHandler(evt, target, level, excludeKeys, includeFunctions);\r\n }\r\n if (forceState !== undefined && openState === forceState) {\r\n return;\r\n }\r\n if (lastSelectedElement === rootDiv) {\r\n if (openState) {\r\n _collapseNode(currentLine);\r\n }\r\n else {\r\n _openNode(currentLine);\r\n }\r\n }\r\n };\r\n rootDiv.onkeydown = function (evt) {\r\n _navHandler(evt, openHandler_1, openState);\r\n };\r\n rootDiv.onclick = function (evt) {\r\n openHandler_1(evt);\r\n };\r\n rootDiv.ontouchend = function (evt) {\r\n openHandler_1(evt);\r\n };\r\n rootDiv.onfocus = function (evt) {\r\n focusHandler(evt, target, level, excludeKeys, includeFunctions);\r\n };\r\n }\r\n return {\r\n root: rootDiv,\r\n isErr: isErr,\r\n matched: matched || childOpened\r\n };\r\n}\r\n//# sourceMappingURL=helpers.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-10
2
+ * Application Insights JavaScript SDK - Debug Plugin, 2.7.2-nightly.2111-15
3
3
  * Copyright (c) Microsoft and contributors. All rights reserved.
4
4
  */
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/applicationinsights-debugplugin-js",
3
- "version": "2.7.2-nightly.2111-10",
3
+ "version": "2.7.2-nightly.2111-15",
4
4
  "description": "Microsoft Application Insights JavaScript SDK - Debug Plugin extension",
5
5
  "homepage": "https://github.com/microsoft/ApplicationInsights-JS#readme",
6
6
  "author": "Microsoft Application Insights Team",
@@ -46,8 +46,8 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "@microsoft/dynamicproto-js": "^1.1.4",
49
- "@microsoft/applicationinsights-common": "2.7.2-nightly.2111-10",
50
- "@microsoft/applicationinsights-core-js": "2.7.2-nightly.2111-10",
49
+ "@microsoft/applicationinsights-common": "2.7.2-nightly.2111-15",
50
+ "@microsoft/applicationinsights-core-js": "2.7.2-nightly.2111-15",
51
51
  "@microsoft/applicationinsights-shims": "2.0.0"
52
52
  },
53
53
  "license": "MIT",
@@ -4,7 +4,8 @@
4
4
  import {
5
5
  BaseTelemetryPlugin, IConfiguration, arrForEach,
6
6
  IAppInsightsCore, IPlugin, ITelemetryItem, IProcessTelemetryContext, _InternalLogMessage, _InternalMessageId,
7
- ITelemetryPluginChain, InstrumentFunc, IInstrumentCallDetails, InstrumentorHooksCallback, IPerfEvent, IChannelControls, objForEachKey, isFunction, dateNow, isArray, isUndefined
7
+ ITelemetryPluginChain, InstrumentFunc, IInstrumentCallDetails, InstrumentorHooksCallback, IPerfEvent, IChannelControls,
8
+ objForEachKey, isFunction, dateNow, isArray, isUndefined, getDebugExt
8
9
  } from "@microsoft/applicationinsights-core-js";
9
10
  import { Dashboard } from "./components/Dashboard";
10
11
  import { getTargetName } from "./components/helpers";
@@ -319,6 +320,15 @@ export default class DebugPlugin extends BaseTelemetryPlugin {
319
320
  return evtPrefix;
320
321
  }
321
322
 
323
+ function _logEntry(theEvent: any, evtName: string, kind: string) {
324
+ dashboard.newLogEntry(theEvent, dateNow() - startTime, evtName, 0, kind);
325
+
326
+ let dbgExt = getDebugExt(_self.core.config);
327
+ if (dbgExt && dbgExt.debugMsg) {
328
+ dbgExt.debugMsg(evtName, theEvent);
329
+ }
330
+ }
331
+
322
332
  function _handleInstPreHook() {
323
333
  return (funcArgs: IInstrumentCallDetails, ...orgArgs: any[]) => {
324
334
  (debugBins[funcArgs.name] || debugBins.default).increment();
@@ -327,7 +337,8 @@ export default class DebugPlugin extends BaseTelemetryPlugin {
327
337
  }
328
338
 
329
339
  let evtPrefix = _getEvtPrefix(funcArgs);
330
- dashboard.newLogEntry(_createInstrumentObject(funcArgs, orgArgs), dateNow() - startTime, `${evtPrefix}`, 0, funcArgs.name);
340
+ _logEntry(_createInstrumentObject(funcArgs, orgArgs), evtPrefix, funcArgs.name);
341
+
331
342
  if (_theConfig.dumpToConsole() && console && console.log) {
332
343
  console.log(`[${evtPrefix}] preProcess - funcArgs: `, funcArgs);
333
344
  console.log(`[${evtPrefix}] preProcess - orgArgs: `, orgArgs);
@@ -345,7 +356,8 @@ export default class DebugPlugin extends BaseTelemetryPlugin {
345
356
  }
346
357
 
347
358
  // The called function threw an exception
348
- dashboard.newLogEntry(_createInstrumentObject(funcArgs, orgArgs), dateNow() - startTime, `${evtPrefix}`, 0, funcArgs.name)
359
+ _logEntry(_createInstrumentObject(funcArgs, orgArgs), evtPrefix, funcArgs.name);
360
+
349
361
  if (_theConfig.dumpToConsole() && console && console.log) {
350
362
  console.log(`[${evtPrefix}] complete`);
351
363
  }
@@ -359,8 +371,9 @@ export default class DebugPlugin extends BaseTelemetryPlugin {
359
371
  }
360
372
 
361
373
  if (!debugBins["processTelemetry"] && _theConfig.logProcessTelemetry() === true) {
362
- dashboard.newLogEntry(event, dateNow() - startTime, `[${_self.identifier}:processTelemetry[${event.baseType}]`, 0, "processTelemetry");
374
+ _logEntry(event, `[${_self.identifier}:processTelemetry[${event.baseType}]`, "processTelemetry");
363
375
  }
376
+
364
377
  _self.processNext(event, itemCtx);
365
378
  }
366
379
  });
@@ -12,13 +12,14 @@ export const MAX_DEPTH = 16;
12
12
 
13
13
  export function makeRegex(value: string) {
14
14
  if (value && value.length > 0) {
15
+ // Escape any slashes first!
15
16
  value = value.replace(/\\/g, "\\\\");
16
17
  // eslint-disable-next-line security/detect-non-literal-regexp
17
- value = value.replace(/([\+\?\|\{\[\(\)\^\$\#\.]}])/g, "\\$1");
18
+ value = value.replace(/([\+\?\|\{\}\[\]\(\)\^\$\#\.\=\!\:\/])/g, "\\$1");
18
19
  value = value.replace(/\*/g, ".*");
19
20
  return new RegExp("(" + value + ")");
20
21
  }
21
-
22
+
22
23
  return null;
23
24
  }
24
25