@microsoft/sp-diagnostics 1.23.2 → 1.24.0-beta.2

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 (223) hide show
  1. package/dist/78359e4b-07c2-43c6-8d0b-d060b4d577e8.manifest.json +6 -11
  2. package/dist/index-internal-beta.d.ts +20 -0
  3. package/dist/index-internal-public.d.ts +20 -0
  4. package/dist/index-internal.d.ts +20 -0
  5. package/dist/sp-diagnostics_none_1b5b73722b91f3231f63.js +1 -0
  6. package/dist/tsdoc-metadata.json +1 -1
  7. package/lib-commonjs/Api/Engagement/EngagementLogger.js +91 -96
  8. package/lib-commonjs/Api/Engagement/IEngagementHandler.js +9 -3
  9. package/lib-commonjs/Api/ExecutionQueue.js +73 -86
  10. package/lib-commonjs/Api/ILogData.js +6 -3
  11. package/lib-commonjs/Api/ILogEntry.js +5 -2
  12. package/lib-commonjs/Api/ILogErrorData.js +6 -3
  13. package/lib-commonjs/Api/ILogSource.js +10 -3
  14. package/lib-commonjs/Api/ILogVerboseData.js +6 -3
  15. package/lib-commonjs/Api/Log/LogHandler.js +27 -26
  16. package/lib-commonjs/Api/LogEntry.js +40 -39
  17. package/lib-commonjs/Api/LogFeature.js +14 -10
  18. package/lib-commonjs/Api/LogLevel.js +22 -19
  19. package/lib-commonjs/Api/LogManager/CircularBuffer.js +56 -64
  20. package/lib-commonjs/Api/LogManager/LogManager.js +61 -78
  21. package/lib-commonjs/Api/LogSource.js +37 -35
  22. package/lib-commonjs/Api/LogType.js +20 -15
  23. package/lib-commonjs/Api/Qos/AutoAlertableQosMonitor.js +68 -82
  24. package/lib-commonjs/Api/Qos/CustomerPromiseInterfaces/ICustomerPromiseErrorDetails.js +5 -2
  25. package/lib-commonjs/Api/Qos/CustomerPromiseInterfaces/IExtraDataForCustomerPromise.js +5 -2
  26. package/lib-commonjs/Api/Qos/IQos.js +5 -2
  27. package/lib-commonjs/Api/Qos/IQosEndEvent.js +5 -2
  28. package/lib-commonjs/Api/Qos/IQosExtraData.js +15 -3
  29. package/lib-commonjs/Api/Qos/IQosStartEvent.js +9 -3
  30. package/lib-commonjs/Api/Qos/QosLogger.js +54 -60
  31. package/lib-commonjs/Api/Qos/QosMonitor.js +163 -209
  32. package/lib-commonjs/Api/Qos/QosMonitorShareFailureWithCP.js +72 -92
  33. package/lib-commonjs/Api/Qos/QosResultType.js +14 -7
  34. package/lib-commonjs/Api/Trace/DefaultTraceHandler.js +20 -22
  35. package/lib-commonjs/Api/Trace/ITraceHandler.js +9 -3
  36. package/lib-commonjs/Api/Trace/ITraceLogger.js +5 -2
  37. package/lib-commonjs/Api/Trace/LogEvent.js +86 -125
  38. package/lib-commonjs/Api/Trace/TraceLogger.js +149 -161
  39. package/lib-commonjs/Diagnostics.js +57 -72
  40. package/lib-commonjs/DiagnosticsSettingsManager.js +37 -43
  41. package/lib-commonjs/IDiagnosticsSettings.js +5 -2
  42. package/lib-commonjs/common/Killswitches.js +13 -9
  43. package/lib-commonjs/extraData/DisplayApp.js +13 -5
  44. package/lib-commonjs/extraData/IDiagnosticContextInfo.js +5 -2
  45. package/lib-commonjs/extraData/IPageExtraData.js +5 -2
  46. package/lib-commonjs/extraData/PageType.js +15 -8
  47. package/lib-commonjs/extraData/PromotedState.js +18 -13
  48. package/lib-commonjs/extraData/WebTemplateId.js +13 -5
  49. package/lib-commonjs/extraData/setPageExtraData.js +37 -37
  50. package/lib-commonjs/index.js +102 -50
  51. package/{lib → lib-dts}/Api/Engagement/IEngagementHandler.d.ts +2 -0
  52. package/lib-esm/Api/Engagement/EngagementLogger.js +137 -0
  53. package/lib-esm/Api/Engagement/IEngagementHandler.js +9 -0
  54. package/lib-esm/Api/ExecutionQueue.js +114 -0
  55. package/lib-esm/Api/ILogData.js +4 -0
  56. package/lib-esm/Api/ILogEntry.js +3 -0
  57. package/lib-esm/Api/ILogErrorData.js +4 -0
  58. package/lib-esm/Api/ILogSource.js +8 -0
  59. package/lib-esm/Api/ILogVerboseData.js +4 -0
  60. package/lib-esm/Api/Log/LogHandler.js +37 -0
  61. package/lib-esm/Api/LogEntry.js +44 -0
  62. package/lib-esm/Api/LogFeature.js +8 -0
  63. package/lib-esm/Api/LogLevel.js +20 -0
  64. package/lib-esm/Api/LogManager/CircularBuffer.js +83 -0
  65. package/lib-esm/Api/LogManager/LogManager.js +103 -0
  66. package/lib-esm/Api/LogSource.js +32 -0
  67. package/lib-esm/Api/LogType.js +20 -0
  68. package/lib-esm/Api/Qos/AutoAlertableQosMonitor.js +74 -0
  69. package/lib-esm/Api/Qos/CustomerPromiseInterfaces/ICustomerPromiseErrorDetails.js +6 -0
  70. package/lib-esm/Api/Qos/CustomerPromiseInterfaces/IExtraDataForCustomerPromise.js +6 -0
  71. package/lib-esm/Api/Qos/IQos.js +6 -0
  72. package/lib-esm/Api/Qos/IQosEndEvent.js +6 -0
  73. package/lib-esm/Api/Qos/IQosExtraData.js +12 -0
  74. package/lib-esm/Api/Qos/IQosStartEvent.js +6 -0
  75. package/lib-esm/Api/Qos/QosLogger.js +64 -0
  76. package/lib-esm/Api/Qos/QosMonitor.js +258 -0
  77. package/lib-esm/Api/Qos/QosMonitorShareFailureWithCP.js +89 -0
  78. package/lib-esm/Api/Qos/QosResultType.js +11 -0
  79. package/lib-esm/Api/Trace/DefaultTraceHandler.js +23 -0
  80. package/lib-esm/Api/Trace/ITraceHandler.js +9 -0
  81. package/lib-esm/Api/Trace/ITraceLogger.js +3 -0
  82. package/lib-esm/Api/Trace/LogEvent.js +104 -0
  83. package/lib-esm/Api/Trace/TraceLogger.js +180 -0
  84. package/lib-esm/Diagnostics.js +67 -0
  85. package/lib-esm/DiagnosticsSettingsManager.js +54 -0
  86. package/lib-esm/IDiagnosticsSettings.js +3 -0
  87. package/{lib → lib-esm}/common/Killswitches.js +3 -4
  88. package/{lib → lib-esm}/extraData/DisplayApp.js +3 -2
  89. package/lib-esm/extraData/IDiagnosticContextInfo.js +7 -0
  90. package/lib-esm/extraData/IPageExtraData.js +3 -0
  91. package/{lib → lib-esm}/extraData/PageType.js +4 -4
  92. package/lib-esm/extraData/PromotedState.js +15 -0
  93. package/{lib → lib-esm}/extraData/WebTemplateId.js +3 -2
  94. package/{lib → lib-esm}/extraData/setPageExtraData.js +14 -20
  95. package/{lib → lib-esm}/index.js +3 -3
  96. package/package.json +33 -6
  97. package/dist/sp-diagnostics_none_414da724f4073ce8bb98.js +0 -1
  98. package/lib/Api/Engagement/EngagementLogger.d.ts.map +0 -1
  99. package/lib/Api/Engagement/EngagementLogger.js +0 -143
  100. package/lib/Api/Engagement/IEngagementHandler.d.ts.map +0 -1
  101. package/lib/Api/Engagement/IEngagementHandler.js +0 -2
  102. package/lib/Api/ExecutionQueue.d.ts.map +0 -1
  103. package/lib/Api/ExecutionQueue.js +0 -131
  104. package/lib/Api/ILogData.d.ts.map +0 -1
  105. package/lib/Api/ILogData.js +0 -3
  106. package/lib/Api/ILogEntry.d.ts.map +0 -1
  107. package/lib/Api/ILogEntry.js +0 -2
  108. package/lib/Api/ILogErrorData.d.ts.map +0 -1
  109. package/lib/Api/ILogErrorData.js +0 -3
  110. package/lib/Api/ILogSource.d.ts.map +0 -1
  111. package/lib/Api/ILogSource.js +0 -3
  112. package/lib/Api/ILogVerboseData.d.ts.map +0 -1
  113. package/lib/Api/ILogVerboseData.js +0 -3
  114. package/lib/Api/Log/LogHandler.d.ts.map +0 -1
  115. package/lib/Api/Log/LogHandler.js +0 -40
  116. package/lib/Api/LogEntry.d.ts.map +0 -1
  117. package/lib/Api/LogEntry.js +0 -51
  118. package/lib/Api/LogFeature.d.ts.map +0 -1
  119. package/lib/Api/LogFeature.js +0 -11
  120. package/lib/Api/LogLevel.d.ts.map +0 -1
  121. package/lib/Api/LogLevel.js +0 -24
  122. package/lib/Api/LogManager/CircularBuffer.d.ts.map +0 -1
  123. package/lib/Api/LogManager/CircularBuffer.js +0 -98
  124. package/lib/Api/LogManager/LogManager.d.ts.map +0 -1
  125. package/lib/Api/LogManager/LogManager.js +0 -121
  126. package/lib/Api/LogSource.d.ts.map +0 -1
  127. package/lib/Api/LogSource.js +0 -40
  128. package/lib/Api/LogType.d.ts.map +0 -1
  129. package/lib/Api/LogType.js +0 -23
  130. package/lib/Api/Qos/AutoAlertableQosMonitor.d.ts.map +0 -1
  131. package/lib/Api/Qos/AutoAlertableQosMonitor.js +0 -93
  132. package/lib/Api/Qos/CustomerPromiseInterfaces/ICustomerPromiseErrorDetails.d.ts.map +0 -1
  133. package/lib/Api/Qos/CustomerPromiseInterfaces/ICustomerPromiseErrorDetails.js +0 -2
  134. package/lib/Api/Qos/CustomerPromiseInterfaces/IExtraDataForCustomerPromise.d.ts.map +0 -1
  135. package/lib/Api/Qos/CustomerPromiseInterfaces/IExtraDataForCustomerPromise.js +0 -2
  136. package/lib/Api/Qos/IQos.d.ts.map +0 -1
  137. package/lib/Api/Qos/IQos.js +0 -2
  138. package/lib/Api/Qos/IQosEndEvent.d.ts.map +0 -1
  139. package/lib/Api/Qos/IQosEndEvent.js +0 -2
  140. package/lib/Api/Qos/IQosExtraData.d.ts.map +0 -1
  141. package/lib/Api/Qos/IQosExtraData.js +0 -2
  142. package/lib/Api/Qos/IQosStartEvent.d.ts.map +0 -1
  143. package/lib/Api/Qos/IQosStartEvent.js +0 -2
  144. package/lib/Api/Qos/QosLogger.d.ts.map +0 -1
  145. package/lib/Api/Qos/QosLogger.js +0 -74
  146. package/lib/Api/Qos/QosMonitor.d.ts.map +0 -1
  147. package/lib/Api/Qos/QosMonitor.js +0 -304
  148. package/lib/Api/Qos/QosMonitorShareFailureWithCP.d.ts.map +0 -1
  149. package/lib/Api/Qos/QosMonitorShareFailureWithCP.js +0 -114
  150. package/lib/Api/Qos/QosResultType.d.ts.map +0 -1
  151. package/lib/Api/Qos/QosResultType.js +0 -11
  152. package/lib/Api/Trace/DefaultTraceHandler.d.ts.map +0 -1
  153. package/lib/Api/Trace/DefaultTraceHandler.js +0 -30
  154. package/lib/Api/Trace/ITraceHandler.d.ts.map +0 -1
  155. package/lib/Api/Trace/ITraceHandler.js +0 -2
  156. package/lib/Api/Trace/ITraceLogger.d.ts.map +0 -1
  157. package/lib/Api/Trace/ITraceLogger.js +0 -2
  158. package/lib/Api/Trace/LogEvent.d.ts.map +0 -1
  159. package/lib/Api/Trace/LogEvent.js +0 -147
  160. package/lib/Api/Trace/TraceLogger.d.ts.map +0 -1
  161. package/lib/Api/Trace/TraceLogger.js +0 -196
  162. package/lib/Diagnostics.d.ts.map +0 -1
  163. package/lib/Diagnostics.js +0 -82
  164. package/lib/DiagnosticsSettingsManager.d.ts.map +0 -1
  165. package/lib/DiagnosticsSettingsManager.js +0 -62
  166. package/lib/IDiagnosticsSettings.d.ts.map +0 -1
  167. package/lib/IDiagnosticsSettings.js +0 -2
  168. package/lib/common/Killswitches.d.ts.map +0 -1
  169. package/lib/extraData/DisplayApp.d.ts.map +0 -1
  170. package/lib/extraData/IDiagnosticContextInfo.d.ts.map +0 -1
  171. package/lib/extraData/IDiagnosticContextInfo.js +0 -2
  172. package/lib/extraData/IPageExtraData.d.ts.map +0 -1
  173. package/lib/extraData/IPageExtraData.js +0 -2
  174. package/lib/extraData/PageType.d.ts.map +0 -1
  175. package/lib/extraData/PromotedState.d.ts.map +0 -1
  176. package/lib/extraData/PromotedState.js +0 -17
  177. package/lib/extraData/WebTemplateId.d.ts.map +0 -1
  178. package/lib/extraData/setPageExtraData.d.ts.map +0 -1
  179. package/lib/index.d.ts.map +0 -1
  180. /package/{lib → lib-dts}/Api/Engagement/EngagementLogger.d.ts +0 -0
  181. /package/{lib → lib-dts}/Api/ExecutionQueue.d.ts +0 -0
  182. /package/{lib → lib-dts}/Api/ILogData.d.ts +0 -0
  183. /package/{lib → lib-dts}/Api/ILogEntry.d.ts +0 -0
  184. /package/{lib → lib-dts}/Api/ILogErrorData.d.ts +0 -0
  185. /package/{lib → lib-dts}/Api/ILogSource.d.ts +0 -0
  186. /package/{lib → lib-dts}/Api/ILogVerboseData.d.ts +0 -0
  187. /package/{lib → lib-dts}/Api/Log/LogHandler.d.ts +0 -0
  188. /package/{lib → lib-dts}/Api/LogEntry.d.ts +0 -0
  189. /package/{lib → lib-dts}/Api/LogFeature.d.ts +0 -0
  190. /package/{lib → lib-dts}/Api/LogLevel.d.ts +0 -0
  191. /package/{lib → lib-dts}/Api/LogManager/CircularBuffer.d.ts +0 -0
  192. /package/{lib → lib-dts}/Api/LogManager/LogManager.d.ts +0 -0
  193. /package/{lib → lib-dts}/Api/LogSource.d.ts +0 -0
  194. /package/{lib → lib-dts}/Api/LogType.d.ts +0 -0
  195. /package/{lib → lib-dts}/Api/Qos/AutoAlertableQosMonitor.d.ts +0 -0
  196. /package/{lib → lib-dts}/Api/Qos/CustomerPromiseInterfaces/ICustomerPromiseErrorDetails.d.ts +0 -0
  197. /package/{lib → lib-dts}/Api/Qos/CustomerPromiseInterfaces/IExtraDataForCustomerPromise.d.ts +0 -0
  198. /package/{lib → lib-dts}/Api/Qos/IQos.d.ts +0 -0
  199. /package/{lib → lib-dts}/Api/Qos/IQosEndEvent.d.ts +0 -0
  200. /package/{lib → lib-dts}/Api/Qos/IQosExtraData.d.ts +0 -0
  201. /package/{lib → lib-dts}/Api/Qos/IQosStartEvent.d.ts +0 -0
  202. /package/{lib → lib-dts}/Api/Qos/QosLogger.d.ts +0 -0
  203. /package/{lib → lib-dts}/Api/Qos/QosMonitor.d.ts +0 -0
  204. /package/{lib → lib-dts}/Api/Qos/QosMonitorShareFailureWithCP.d.ts +0 -0
  205. /package/{lib → lib-dts}/Api/Qos/QosResultType.d.ts +0 -0
  206. /package/{lib → lib-dts}/Api/Trace/DefaultTraceHandler.d.ts +0 -0
  207. /package/{lib → lib-dts}/Api/Trace/ITraceHandler.d.ts +0 -0
  208. /package/{lib → lib-dts}/Api/Trace/ITraceLogger.d.ts +0 -0
  209. /package/{lib → lib-dts}/Api/Trace/LogEvent.d.ts +0 -0
  210. /package/{lib → lib-dts}/Api/Trace/TraceLogger.d.ts +0 -0
  211. /package/{lib → lib-dts}/Diagnostics.d.ts +0 -0
  212. /package/{lib → lib-dts}/DiagnosticsSettingsManager.d.ts +0 -0
  213. /package/{lib → lib-dts}/IDiagnosticsSettings.d.ts +0 -0
  214. /package/{lib → lib-dts}/common/Killswitches.d.ts +0 -0
  215. /package/{lib → lib-dts}/extraData/DisplayApp.d.ts +0 -0
  216. /package/{lib → lib-dts}/extraData/IDiagnosticContextInfo.d.ts +0 -0
  217. /package/{lib → lib-dts}/extraData/IPageExtraData.d.ts +0 -0
  218. /package/{lib → lib-dts}/extraData/PageType.d.ts +0 -0
  219. /package/{lib → lib-dts}/extraData/PromotedState.d.ts +0 -0
  220. /package/{lib → lib-dts}/extraData/WebTemplateId.d.ts +0 -0
  221. /package/{lib → lib-dts}/extraData/setPageExtraData.d.ts +0 -0
  222. /package/{lib → lib-dts}/index.d.ts +0 -0
  223. /package/{lib → lib-esm}/sp-diagnostics.manifest.json +0 -0
@@ -0,0 +1,180 @@
1
+ import { Validate } from '@microsoft/sp-core-library';
2
+ import LogEvent from './LogEvent';
3
+ import { LogLevel } from '../LogLevel';
4
+ import DefaultTraceHandler from './DefaultTraceHandler';
5
+ import LogManager from '../LogManager/LogManager';
6
+ class TraceLogger {
7
+ /**
8
+ * Init function for the passed logger object
9
+ *
10
+ * @internal
11
+ */ static _addHandler(logger) {
12
+ TraceLogger._logManager.addHandler(logger.log);
13
+ TraceLogger._logManager.processAll(logger.log);
14
+ TraceLogger._verboseLogManager.addHandler(logger.verbose);
15
+ TraceLogger._verboseLogManager.processAll(logger.verbose);
16
+ }
17
+ /**
18
+ * Exception logging
19
+ * This shoule be used whenever you want to log something that might in future help to debug failures.
20
+ * The error parameter is the only required one and basically will be just converted to string and
21
+ * logged to Debug stream (RealibilityLogs in SLAPI).
22
+ * It will also be uploaded to the server immediately and not wait for next batch log upload.
23
+ * If you don't specify second parameter:eventName
24
+ * the event name for all errors logged that way will be same "CaughtError" with
25
+ * appropriate prefix ("ModernPublish.CaughtError" etc.)
26
+ * These two parameters "eventName and resultCode" are there to be used from Qos.
27
+ * It is not encouraged to use them directly from ErrorHelper but if you do,
28
+ * the log will be written with custom event name of following format:
29
+ * <Workload>.<eventName>.<resultCode>.Failure, Workload is set in Telemetry settings.
30
+ **/ static logError(source, error, eventName, resultCode) {
31
+ Validate.isNotNullOrUndefined(error, 'error');
32
+ this._log(source, error, eventName, true, resultCode);
33
+ }
34
+ /**
35
+ * Exception logging intended to replace to logError.
36
+ *
37
+ * @remarks
38
+ * Uses the `ILogErrorData` interface to prevent excessive undefined parameters
39
+ * when calling this function.
40
+ * This should be used whenever you want to log something that might in future help to
41
+ * debug failures.
42
+ * It will also be uploaded to the server immediately and not wait for next batch log upload.
43
+ */ static logErrorData(data) {
44
+ Validate.isNotNullOrUndefined(data.error, 'error');
45
+ const errorInfo = data.logEntry ? data.logEntry.toString() : data.error;
46
+ this._log(data.source, errorInfo, data.eventName, true, data.resultCode, data.serviceScope);
47
+ }
48
+ /**
49
+ * Trace logging
50
+ * The idea here is that verbose logs don't get uploaded to the server unless
51
+ * a failure is logged using ErrorHelper.log method.
52
+ * There is a circular buffer that holds last 50 verbose logs from all scenarios and
53
+ * it is only flushed and uploaded in case a failure is logged.
54
+ * That way whenever you get a failure event with message you also have all supportive verbose messages
55
+ * you logged throughout your scenario execution (or other scenarios).
56
+ * And hopefully that would help you get to the bottom of what exactly went wrong.
57
+ * If no failure happens and your scenario succeeds, verbose logs will be just left in the buffer
58
+ * and most likely overriden by next scenario that logs something verbose.
59
+ **/ static logVerbose(source, message, eventName) {
60
+ Validate.isNonemptyString(message, 'message');
61
+ this._log(source, message, eventName, false, undefined);
62
+ }
63
+ /**
64
+ * Verbose logging intended to replace to logVerbose.
65
+ * The idea here is that verbose logs don't get uploaded to the server unless
66
+ * a failure is logged using ErrorHelper.log method.
67
+ * There is a circular buffer that holds last 50 verbose logs from all scenarios and
68
+ * it is only flushed and uploaded in case a failure is logged.
69
+ * That way whenever you get a failure event with message you also have all supportive verbose messages
70
+ * you logged throughout your scenario execution (or other scenarios).
71
+ * And hopefully that would help you get to the bottom of what exactly went wrong.
72
+ * If no failure happens and your scenario succeeds, verbose logs will be just left in the buffer
73
+ * and most likely overridden by next scenario that logs something verbose.
74
+ */ static logVerboseData(data) {
75
+ const message = data.logEntry ? data.logEntry.toString() : data.message;
76
+ this._log(data.source, message, data.eventName, false, undefined, data.serviceScope);
77
+ }
78
+ /**
79
+ * Exception logging With LogEntry
80
+ * error message should be packed into logProperties
81
+ * LogType should be LogType.Error and LogProperties should have `{error:errorMessage}`
82
+ * Do NOT add PII data!
83
+ **/ static logErrorWithLogEntry(source, logEntry, eventName, resultCode) {
84
+ Validate.isNotNullOrUndefined(source, 'source');
85
+ Validate.isNotNullOrUndefined(logEntry, 'logEntry');
86
+ this._log(source, logEntry.toString(), eventName, true, resultCode);
87
+ }
88
+ /**
89
+ * Indicates if the log entries should be output to the console.
90
+ * This flag is set to true by default.
91
+ *
92
+ * Toggles console output functionality.
93
+ * Property can be changed by remote caller.
94
+ */ static get shouldWriteToConsole() {
95
+ return TraceLogger._shouldWriteToConsole;
96
+ }
97
+ static set shouldWriteToConsole(shouldWrite) {
98
+ if (TraceLogger._shouldWriteToConsole && !shouldWrite) {
99
+ TraceLogger._logManager.removeHandler(TraceLogger._defaultLogger.log);
100
+ TraceLogger._verboseLogManager.removeHandler(TraceLogger._defaultLogger.verbose);
101
+ } else if (!TraceLogger._shouldWriteToConsole && shouldWrite) {
102
+ TraceLogger._logManager.addHandler(TraceLogger._defaultLogger.log);
103
+ TraceLogger._verboseLogManager.addHandler(TraceLogger._defaultLogger.verbose);
104
+ }
105
+ TraceLogger._shouldWriteToConsole = shouldWrite;
106
+ }
107
+ /*
108
+ * Trace logging with `LogEntry`
109
+ * The same with above other than wrapped log into `logEntry`
110
+ * Trace message should be packed into `logProperties`
111
+ * `LogType` should be `LogType.Trace` and LogProperties should have something like `{errors:errorMessage}`
112
+ * Do NOT add PII data!
113
+ **/ static logVerboseWithLogEntry(source, logEntry, eventName) {
114
+ Validate.isNotNullOrUndefined(logEntry, 'LogEntry');
115
+ this._log(source, logEntry.toString(), eventName, false, undefined);
116
+ }
117
+ static _log(source, data, eventName, isError, resultCode, serviceScope) {
118
+ const enhancedEventName = this._addEventPrefix(source, eventName);
119
+ let logEvent;
120
+ if (isError) {
121
+ logEvent = LogEvent.log(enhancedEventName, data, LogLevel.Error, serviceScope);
122
+ TraceLogger._logManager.log({
123
+ data: data,
124
+ eventName: logEvent.prefix,
125
+ resultCode: resultCode
126
+ });
127
+ } else {
128
+ logEvent = LogEvent.log(enhancedEventName, data.toString(), LogLevel.Verbose, serviceScope);
129
+ TraceLogger._verboseLogManager.log({
130
+ data: data,
131
+ eventName: logEvent.prefix
132
+ });
133
+ }
134
+ if (TraceLogger.shouldWriteToConsole || DEBUG && !DEPRECATED_UNIT_TEST) {
135
+ this._writeToConsole(logEvent, isError, resultCode);
136
+ }
137
+ }
138
+ /*
139
+ * EventName is:
140
+ * sourceId.eventName or sourceId if eventName is not provided.
141
+ */ static _addEventPrefix(source, eventName) {
142
+ if (!eventName) {
143
+ return source.id;
144
+ } else {
145
+ return `${source.id}.${eventName}`;
146
+ }
147
+ }
148
+ /*
149
+ * The log message in console is:
150
+ * `[eventName]: data`.
151
+ */ static _writeToConsole(logEvent, isError, resultCode) {
152
+ // @todo (SPPPLAT VSO#250083): This date should be a part of the logEvent.
153
+ let errorString = logEvent.toString();
154
+ if (resultCode) {
155
+ errorString += `. resultCode: ${resultCode}`;
156
+ }
157
+ // Task 191596: only write to console when a condition is satisfied (e.g., a query parameter provided).
158
+ if (isError) {
159
+ // eslint-disable-next-line no-console
160
+ console.error(errorString);
161
+ } else {
162
+ // eslint-disable-next-line no-console
163
+ console.log(errorString);
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * Allows process trace log events.
169
+ */ TraceLogger._logManager = new LogManager();
170
+ /**
171
+ * Allows process verbose trace log events.
172
+ */ TraceLogger._verboseLogManager = new LogManager();
173
+ TraceLogger._defaultLogger = new DefaultTraceHandler();
174
+ TraceLogger._shouldWriteToConsole = false;
175
+ /**
176
+ * This is used to log traces of failed operations and debugging information.
177
+ * @internal
178
+ */ export { TraceLogger as default };
179
+
180
+ //# sourceMappingURL=./TraceLogger.js.map
@@ -0,0 +1,67 @@
1
+ import { Log } from '@microsoft/sp-core-library';
2
+ import DiagnosticsSettingsManager from './DiagnosticsSettingsManager';
3
+ import TraceLogger from './Api/Trace/TraceLogger';
4
+ class Diagnostics {
5
+ /**
6
+ * Initializes the diagnostics pipelines
7
+ */ static initialize(settings) {
8
+ if (!Diagnostics._isInitialized) {
9
+ DiagnosticsSettingsManager.initialize(settings);
10
+ TraceLogger.shouldWriteToConsole = settings.enableConsoleLog;
11
+ TraceLogger._addHandler({
12
+ log: (traceEvent)=>{
13
+ Log.info(traceEvent.eventName, `EventName:${traceEvent.data.toString()}, ResultCode: ${traceEvent.resultCode}`);
14
+ },
15
+ verbose: (traceEvent)=>{
16
+ Log.verbose(traceEvent.eventName, traceEvent.data.toString());
17
+ }
18
+ });
19
+ Diagnostics._isInitialized = true;
20
+ }
21
+ }
22
+ /**
23
+ * Returns true if diagnostics has been already initialized.
24
+ */ static get isInitialized() {
25
+ return this._isInitialized;
26
+ }
27
+ /**
28
+ * Used to refresh the telemetry settings when they change from the application
29
+ * (i.e. when an in-place navigation to a different site happens)
30
+ * @param settings - the subset of the telemetry settings to be updated
31
+ */ static updateSettings(settings) {
32
+ DiagnosticsSettingsManager.updateSettings(settings);
33
+ }
34
+ /**
35
+ * Get the authoring session client count info from the extraDiagnosticsInfo from Diagnostics settings
36
+ * @deprecated - Read from @see getExtraDiagnosticInfo
37
+ * @returns the number of clients in the authoring session
38
+ */ static getAuthoringSessionClientCountInfo() {
39
+ return DiagnosticsSettingsManager.settings?.extraDiagnosticInfo?.authoringSessionClientCount;
40
+ }
41
+ /**
42
+ * Get the extra diagnostic info for logging purpose.
43
+ * @internal
44
+ * @returns @see IExtraDiagnosticInfo
45
+ */ static _getExtraDiagnosticInfo() {
46
+ return DiagnosticsSettingsManager.settings?.extraDiagnosticInfo;
47
+ }
48
+ /**
49
+ * Used to delete telemetry settings when they are no longer needed or need to be reset.
50
+ * The current updateSettings implementation does not support un-setting previously
51
+ * set settings values.
52
+ * @param settings - the subset of the telemetry settings to be cleared.
53
+ */ static clearSettings(settings) {
54
+ DiagnosticsSettingsManager.clearSettings(settings);
55
+ }
56
+ }
57
+ Diagnostics._isInitialized = false;
58
+ /**
59
+ * Diagnostics class initializes the diagnostics pipeline and connect to backend server.
60
+ * Diagnostics contains a set of internal APIs that collects data and reports data via
61
+ * the pipeline. The APIs consist of
62
+ * -- TraceLogger - for logging diagnostic information
63
+ *
64
+ * @internal
65
+ */ export { Diagnostics as default };
66
+
67
+ //# sourceMappingURL=./Diagnostics.js.map
@@ -0,0 +1,54 @@
1
+ import { Guid } from '@microsoft/sp-core-library';
2
+ import { cloneDeep, merge } from '@microsoft/sp-lodash-subset';
3
+ class DiagnosticsSettingsManager {
4
+ static initialize(settings) {
5
+ this.settings = cloneDeep(settings);
6
+ this._initialized = true;
7
+ this._normalizeContextIds();
8
+ }
9
+ static updateSettings(settings) {
10
+ this.settings = merge(this.settings, settings);
11
+ this._normalizeContextIds();
12
+ }
13
+ static clearSettings(settings) {
14
+ if (settings.diagnosticSettings) {
15
+ settings.diagnosticSettings.forEach((setting)=>{
16
+ delete this.settings[setting];
17
+ });
18
+ }
19
+ if (settings.extraDiagnosticInfo) {
20
+ settings.extraDiagnosticInfo.forEach((info)=>{
21
+ if (this.settings.extraDiagnosticInfo && this.settings.extraDiagnosticInfo[info]) {
22
+ delete this.settings.extraDiagnosticInfo[info];
23
+ }
24
+ });
25
+ }
26
+ }
27
+ static get isInitialized() {
28
+ return this._initialized;
29
+ }
30
+ static _normalizeId(id) {
31
+ const guid = Guid.tryParse(id);
32
+ return guid?.toString() || id;
33
+ }
34
+ static _normalizeContextIds() {
35
+ this.settings.siteId = this._normalizeId(this.settings.siteId);
36
+ this.settings.webId = this._normalizeId(this.settings.webId);
37
+ this.settings.correlationId = this._normalizeId(this.settings.correlationId);
38
+ if (this.settings.listId) {
39
+ this.settings.listId = this._normalizeId(this.settings.listId);
40
+ if (this.settings.listItemUniqueId) {
41
+ this.settings.listItemUniqueId = this._normalizeId(this.settings.listItemUniqueId);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ DiagnosticsSettingsManager._initialized = false;
47
+ /**
48
+ * TelemetrySettingsManager stores the configuration for Telemetry passed
49
+ * down by the calling application during bootstrapping.
50
+ *
51
+ * @internal
52
+ */ export { DiagnosticsSettingsManager as default };
53
+
54
+ //# sourceMappingURL=./DiagnosticsSettingsManager.js.map
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=./IDiagnosticsSettings.js.map
@@ -1,8 +1,7 @@
1
1
  import { _SPKillSwitch } from '@microsoft/sp-core-library';
2
2
  // cross-project: also in sp-edit-customer-promise
3
3
  export function isAppendSuffixIfBrowserIsOfflineAtLoggingTimeKsActive() {
4
- return _SPKillSwitch.isActivated('c125685f-83e7-44c8-b602-5c21f5b748ae'
5
- /* '06/25/2025', 'atagle -appends the " (offline)" suffix to the ASHA error code name the browser is offline at the time of logging' */
6
- );
4
+ return _SPKillSwitch.isActivated('c125685f-83e7-44c8-b602-5c21f5b748ae');
7
5
  }
8
- //# sourceMappingURL=Killswitches.js.map
6
+
7
+ //# sourceMappingURL=./Killswitches.js.map
@@ -1,6 +1,7 @@
1
1
  // eslint-disable-next-line @typescript-eslint/typedef
2
- export var DisplayApp = {
2
+ export const DisplayApp = {
3
3
  Sharepoint: 'Sharepoint',
4
4
  Teams: 'Teams'
5
5
  };
6
- //# sourceMappingURL=DisplayApp.js.map
6
+
7
+ //# sourceMappingURL=./DisplayApp.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Diagnostics context info
3
+ *
4
+ * @internal
5
+ */ export { };
6
+
7
+ //# sourceMappingURL=./IDiagnosticContextInfo.js.map
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=./IPageExtraData.js.map
@@ -2,15 +2,15 @@
2
2
  * Page Type
3
3
  *
4
4
  * @internal
5
- */
6
- // This is quite similar to CurrentPage but these are simplified names that
5
+ */ // This is quite similar to CurrentPage but these are simplified names that
7
6
  // we want to build dashboards with.
8
7
  export var PageType;
9
- (function (PageType) {
8
+ (function(PageType) {
10
9
  PageType["News"] = "News";
11
10
  PageType["Article"] = "Article";
12
11
  PageType["Home"] = "Home";
13
12
  PageType["Space"] = "Space";
14
13
  PageType["NewsDigest"] = "NewsDigest";
15
14
  })(PageType || (PageType = {}));
16
- //# sourceMappingURL=PageType.js.map
15
+
16
+ //# sourceMappingURL=./PageType.js.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Promoted state
3
+ *
4
+ * @internal
5
+ */ export var PromotedState;
6
+ (function(PromotedState) {
7
+ /**
8
+ * Regular page (can later be promoted to news)
9
+ */ PromotedState[PromotedState["NotPromoted"] = 0] = "NotPromoted";
10
+ /**
11
+ * News post (a page with special notifications sent out upon publishing)
12
+ */ PromotedState[PromotedState["Promoted"] = 2] = "Promoted";
13
+ })(PromotedState || (PromotedState = {}));
14
+
15
+ //# sourceMappingURL=./PromotedState.js.map
@@ -1,10 +1,11 @@
1
1
  // One place to find the list is at
2
2
  // https://onedrive.visualstudio.com/SPIN/_git/FFTScripts?path=%2Fsrc%2FCreateDBScripts%2FFFTDashboard-WebTemplateNames.sql&version=GBmaster
3
3
  // eslint-disable-next-line @typescript-eslint/typedef
4
- export var WebTemplateId = {
4
+ export const WebTemplateId = {
5
5
  TeamSite: '1',
6
6
  MySite: '21',
7
7
  GroupSite: '64',
8
8
  SitePagePublishing: '68'
9
9
  };
10
- //# sourceMappingURL=WebTemplateId.js.map
10
+
11
+ //# sourceMappingURL=./WebTemplateId.js.map
@@ -9,12 +9,10 @@ export function setPageExtraData(contextInfo, extraData) {
9
9
  if (contextInfo.isHubSite) {
10
10
  extraData.hubSiteId = contextInfo.hubSiteId;
11
11
  extraData.isAssociatedSite = false;
12
- }
13
- else if (!contextInfo.isHubSite && contextInfo.hubSiteId) {
12
+ } else if (!contextInfo.isHubSite && contextInfo.hubSiteId) {
14
13
  // If isHubSite is false, but hubSiteId is set, we call it associatedSite
15
14
  extraData.isAssociatedSite = true;
16
- }
17
- else {
15
+ } else {
18
16
  extraData.isAssociatedSite = false;
19
17
  }
20
18
  if (!extraData.displayApp) {
@@ -23,35 +21,30 @@ export function setPageExtraData(contextInfo, extraData) {
23
21
  if (contextInfo.isEduClass) {
24
22
  extraData.isEduClass = true;
25
23
  }
26
- }
27
- else {
24
+ } else {
28
25
  extraData.displayApp = DisplayApp.Sharepoint;
29
26
  }
30
27
  }
31
28
  extraData.userAgent = navigator.userAgent;
32
- var webTemplate = contextInfo.webTemplate;
29
+ const webTemplate = contextInfo.webTemplate;
33
30
  extraData.webTemplate = webTemplate;
34
- var siteType;
31
+ let siteType;
35
32
  if (webTemplate === WebTemplateId.TeamSite) {
36
33
  siteType = 'TeamSite';
37
- }
38
- else if (webTemplate === WebTemplateId.GroupSite) {
34
+ } else if (webTemplate === WebTemplateId.GroupSite) {
39
35
  siteType = 'GroupSite';
40
- }
41
- else if (webTemplate === WebTemplateId.SitePagePublishing) {
36
+ } else if (webTemplate === WebTemplateId.SitePagePublishing) {
42
37
  siteType = 'CommunicationSite';
43
- }
44
- else if (webTemplate === WebTemplateId.MySite) {
38
+ } else if (webTemplate === WebTemplateId.MySite) {
45
39
  siteType = 'MySite';
46
40
  }
47
- var promotedState = contextInfo.promotedState;
48
- var pageLayoutType = contextInfo.pageType;
49
- var pageType = pageLayoutType;
41
+ const promotedState = contextInfo.promotedState;
42
+ const pageLayoutType = contextInfo.pageType;
43
+ let pageType = pageLayoutType;
50
44
  if (pageLayoutType === PageType.Article) {
51
45
  if (promotedState === PromotedState.NotPromoted || promotedState === undefined) {
52
46
  pageType = PageType.Article;
53
- }
54
- else {
47
+ } else {
55
48
  pageType = PageType.News;
56
49
  }
57
50
  }
@@ -60,4 +53,5 @@ export function setPageExtraData(contextInfo, extraData) {
60
53
  extraData.isDebug = !!_BrowserUtilities.safelyAccessSessionStorage('spfx-debug');
61
54
  extraData.hasCopilotLicense = !!contextInfo.hasCopilotLicense;
62
55
  }
63
- //# sourceMappingURL=setPageExtraData.js.map
56
+
57
+ //# sourceMappingURL=./setPageExtraData.js.map
@@ -3,8 +3,7 @@
3
3
  * including monitoring, trace, user engagement and performance logging.
4
4
  *
5
5
  * @packagedocumentation
6
- */
7
- export { default as _TraceLogger } from './Api/Trace/TraceLogger';
6
+ */ export { default as _TraceLogger } from './Api/Trace/TraceLogger';
8
7
  export { default as _LogEntry } from './Api/LogEntry';
9
8
  export { default as _LogFeature } from './Api/LogFeature';
10
9
  export { default as _LogSource, logSourceServiceKey as _logSourceServiceKey } from './Api/LogSource';
@@ -24,4 +23,5 @@ export { QosMonitorShareFailureWithCP as _QosMonitorShareFailureWithCP } from '.
24
23
  export { default as _QosLogger } from './Api/Qos/QosLogger';
25
24
  export { QosResultType as _QosResultType } from './Api/Qos/QosResultType';
26
25
  export { default as _ExecutionQueue } from './Api/ExecutionQueue';
27
- //# sourceMappingURL=index.js.map
26
+
27
+ //# sourceMappingURL=./index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/sp-diagnostics",
3
- "version": "1.23.2",
3
+ "version": "1.24.0-beta.2",
4
4
  "description": "Diagnostics tools for the SharePoint Framework",
5
5
  "homepage": "http://aka.ms/spfx",
6
6
  "license": "https://aka.ms/spfx/license",
@@ -8,19 +8,46 @@
8
8
  "node": ">=18.17.1 <19.0.0 || >=22.14.0 < 23.0.0"
9
9
  },
10
10
  "main": "lib-commonjs/index.js",
11
- "module": "lib/index.js",
11
+ "module": "lib-esm/index.js",
12
12
  "typings": "dist/index-internal.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index-internal.d.ts",
16
+ "import": "./lib-esm/index.js",
17
+ "require": "./lib-commonjs/index.js"
18
+ },
19
+ "./lib/*.resx": "./lib-esm/*.resx.json",
20
+ "./lib/*": {
21
+ "types": "./lib-dts/*.d.ts",
22
+ "import": "./lib-esm/*.js",
23
+ "require": "./lib-commonjs/*.js"
24
+ },
25
+ "./lib-commonjs/*.resx": "./lib-esm/*.resx.json",
26
+ "./lib-commonjs/*": {
27
+ "types": "./lib-dts/*.d.ts",
28
+ "import": "./lib-esm/*.js",
29
+ "require": "./lib-commonjs/*.js"
30
+ },
31
+ "./package.json": "./package.json"
32
+ },
33
+ "typesVersions": {
34
+ "*": {
35
+ "lib/*": [
36
+ "lib-dts/*"
37
+ ]
38
+ }
39
+ },
13
40
  "dependencies": {
14
- "@microsoft/sp-core-library": "1.23.2",
15
- "@microsoft/sp-lodash-subset": "1.23.2"
41
+ "@microsoft/sp-core-library": "1.24.0-beta.2",
42
+ "@microsoft/sp-lodash-subset": "1.24.0-beta.2"
16
43
  },
17
44
  "devDependencies": {
18
45
  "@rushstack/heft": "1.2.17",
19
46
  "@swc/helpers": "^0.5.12",
20
47
  "eslint": "9.37.0",
21
48
  "tslib": "2.3.1",
22
- "@msinternal/odsp-core-bundle": "1.5.82",
23
- "@msinternal/spfx-internal-web-build-rig": "0.1.0"
49
+ "@msinternal/spfx-internal-web-build-rig": "0.1.0",
50
+ "@msinternal/odsp-core-bundle": "1.5.166"
24
51
  },
25
52
  "scripts": {
26
53
  "build": "heft test --clean",
@@ -1 +0,0 @@
1
- define("78359e4b-07c2-43c6-8d0b-d060b4d577e8_1.23.2",["@microsoft/sp-core-library","@microsoft/sp-lodash-subset","@msinternal/odsp-core-bundle","tslib"],(e,t,n,a)=>(()=>{"use strict";var i={676(t){t.exports=e},529(e){e.exports=t},277(e){e.exports=n},280(e){e.exports=a}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var n=r[e]={exports:{}};return i[e](n,n.exports,o),n.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{o.r(s),o.d(s,{_AutoAlertableMonitorType:()=>L,_AutoAlertableQosMonitor:()=>k,_CircularBuffer:()=>i,_Diagnostics:()=>g,_EngagementLogger:()=>S,_ExecutionQueue:()=>C,_LogEntry:()=>_,_LogEvent:()=>c,_LogFeature:()=>f,_LogHandler:()=>D,_LogLevel:()=>d,_LogManager:()=>r,_LogSource:()=>n,_LogType:()=>m,_PageType:()=>y,_PromotedState:()=>v,_QosLogger:()=>O,_QosMonitor:()=>E,_QosMonitorShareFailureWithCP:()=>M,_QosResultType:()=>x,_TraceLogger:()=>u,_logSourceServiceKey:()=>a});var e=o(676),t=function(){function t(t){e.Validate.isNotNullOrUndefined(t,"id"),this._id=t}return t.create=function(e){return new t(e)},Object.defineProperty(t.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),t.prototype.isEmpty=function(){return 0===this._id.length},t}();const n=t;var a=e.ServiceKey.createCustom("sp-client-base:LogSource",function(e){return t.create("")});const i=function(){function e(e){if(this._head=-1,this._count=0,this._isIterating=!1,e<=0)throw new Error("Size must be positive");this._size=e,this._buffer=new Array(e)}return Object.defineProperty(e.prototype,"count",{get:function(){return this._count},enumerable:!1,configurable:!0}),e.prototype.push=function(e){this._ensureNotIterating(),this._head++,this._count++,this._head===this._size&&(this._head=0),this._buffer[this._head]=e},e.prototype.forEach=function(e){if(0!==this._count){this._isIterating=!0;try{for(var t=this._tail,n=0;n<this._size&&(e(this._buffer[t]),t!==this._head);n++)t=this._getNext(t)}finally{this._isIterating=!1}}},e.prototype.removeAll=function(){this._ensureNotIterating(),this._head=-1,this._count=0},Object.defineProperty(e.prototype,"_tail",{get:function(){return this._isNotWrapped()?0:this._getNext(this._head)},enumerable:!1,configurable:!0}),e.prototype._isNotWrapped=function(){return this._count===this._head+1},e.prototype._getNext=function(e){var t=e+1;return t===this._size&&(t=0),t},e.prototype._ensureNotIterating=function(){if(this._isIterating)throw new Error("Circular buffer cannot be modified during iteration")},e}(),r=function(){function e(t){this._shouldLogInRealTime=[],this._handlers=[],this._events=new i(e._maxVerboseLog),t&&this.addHandler(t)}return Object.defineProperty(e,"_maxVerboseLog",{get:function(){return 5e3},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"events",{get:function(){return this._events},enumerable:!1,configurable:!0}),e.prototype.addHandler=function(e){this._containsHandler(e)||(this._handlers.push(e),this._shouldLogInRealTime.push(!1))},e.prototype.log=function(e){Object.freeze(e),this._events.push(e),this._processLogEvent(e)},e.prototype.removeHandler=function(e){var t=this._handlers.indexOf(e);t>-1&&(this._handlers.splice(t,1),this._shouldLogInRealTime.splice(t,1))},e.prototype.reset=function(){this._handlers=[],this._shouldLogInRealTime=[],this._events.removeAll()},e.prototype.processAll=function(e){this._handlers.indexOf(e)>-1&&this._processAllEvents(e)},e.prototype._containsHandler=function(e){for(var t=0,n=this._handlers;t<n.length;t++)if(n[t]===e)return!0;return!1},e.prototype._processAllEvents=function(e){this._events.forEach(function(t){if(t)try{e(t)}catch(e){console.error("failed to handle event:"+e.toString())}}),this._shouldLogInRealTime[this._handlers.indexOf(e)]=!0},e.prototype._processLogEvent=function(e){for(var t=0;t<this._handlers.length;t++)if(this._shouldLogInRealTime[t]&&e)try{this._handlers[t](e)}catch(e){console.error("failed to handle event:"+e.toString())}},e}(),c=function(){function e(e,t,n,a){this._validate(e,t),this._timestamp=(new Date).getTime(),this._scope=this._getScope(a),this._source=e.substr(0,this._maxSourceLength),this._setData(t),this._level=n,this._prefix=this._getPrefix()}return e.log=function(t,n,a,i){var r=new e(t,n,a,i);return e.logManager.log(r),r},e.prototype.toString=function(){var e="[".concat(this._timestamp,"][").concat(this._prefix,"]");return this._message?"".concat(e," ").concat(this._message):this._error?"".concat(e," ").concat(this._error.toString()):e},Object.defineProperty(e.prototype,"timestamp",{get:function(){return this._timestamp},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"level",{get:function(){return this._level},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"prefix",{get:function(){return this._prefix},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"scope",{get:function(){return this._scope},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"source",{get:function(){return this._source},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"error",{get:function(){return this._error},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_maxSourceLength",{get:function(){return 30},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"_maxMessageLength",{get:function(){return 150},enumerable:!1,configurable:!0}),e.prototype._validate=function(e,t){if(!e)throw new Error("source cannot be undefined or null for Logger");if(!t)throw new Error("data cannot be undefined or null")},e.prototype._setData=function(e){"string"==typeof e?this._message=e.substr(0,this._maxMessageLength):e instanceof Error&&(this._error=e)},e.prototype._getPrefix=function(){var e="".concat(this._source);return this._scope&&!this._scope.isEmpty()&&(e="".concat(this._scope.id.substr(0,this._maxSourceLength),".").concat(e)),"".concat(e)},e.prototype._getScope=function(e){var t;return e&&e.whenFinished(function(){t=e.consume(a)}),t},e.logManager=new r,e}();var d;!function(e){e[e.Verbose=1]="Verbose",e[e.Info=2]="Info",e[e.Warning=3]="Warning",e[e.Error=4]="Error"}(d||(d={}));const l=function(){function e(){}return e.prototype.log=function(e){console.log("Error: ".concat(e.data,", ")+"Event Name: ".concat(e.eventName,", ")+"Result Code: ".concat(e.resultCode))},e.prototype.verbose=function(e){console.log("Error: ".concat(e.data,", Event Name: ").concat(e.eventName))},e}(),u=function(){function t(){}return t._addHandler=function(e){t._logManager.addHandler(e.log),t._logManager.processAll(e.log),t._verboseLogManager.addHandler(e.verbose),t._verboseLogManager.processAll(e.verbose)},t.logError=function(t,n,a,i){e.Validate.isNotNullOrUndefined(n,"error"),this._log(t,n,a,!0,i)},t.logErrorData=function(t){e.Validate.isNotNullOrUndefined(t.error,"error");var n=t.logEntry?t.logEntry.toString():t.error;this._log(t.source,n,t.eventName,!0,t.resultCode,t.serviceScope)},t.logVerbose=function(t,n,a){e.Validate.isNonemptyString(n,"message"),this._log(t,n,a,!1,void 0)},t.logVerboseData=function(e){var t=e.logEntry?e.logEntry.toString():e.message;this._log(e.source,t,e.eventName,!1,void 0,e.serviceScope)},t.logErrorWithLogEntry=function(t,n,a,i){e.Validate.isNotNullOrUndefined(t,"source"),e.Validate.isNotNullOrUndefined(n,"logEntry"),this._log(t,n.toString(),a,!0,i)},Object.defineProperty(t,"shouldWriteToConsole",{get:function(){return t._shouldWriteToConsole},set:function(e){t._shouldWriteToConsole&&!e?(t._logManager.removeHandler(t._defaultLogger.log),t._verboseLogManager.removeHandler(t._defaultLogger.verbose)):!t._shouldWriteToConsole&&e&&(t._logManager.addHandler(t._defaultLogger.log),t._verboseLogManager.addHandler(t._defaultLogger.verbose)),t._shouldWriteToConsole=e},enumerable:!1,configurable:!0}),t.logVerboseWithLogEntry=function(t,n,a){e.Validate.isNotNullOrUndefined(n,"LogEntry"),this._log(t,n.toString(),a,!1,void 0)},t._log=function(e,n,a,i,r,o){var s,l=this._addEventPrefix(e,a);i?(s=c.log(l,n,d.Error,o),t._logManager.log({data:n,eventName:s.prefix,resultCode:r})):(s=c.log(l,n.toString(),d.Verbose,o),t._verboseLogManager.log({data:n,eventName:s.prefix})),t.shouldWriteToConsole&&this._writeToConsole(s,i,r)},t._addEventPrefix=function(e,t){return t?"".concat(e.id,".").concat(t):e.id},t._writeToConsole=function(e,t,n){var a=e.toString();n&&(a+=". resultCode: ".concat(n)),t?console.error(a):console.log(a)},t._logManager=new r,t._verboseLogManager=new r,t._defaultLogger=new l,t._shouldWriteToConsole=!1,t}(),f=function(){function e(){}return e.None="None",e}();var p;!function(e){e[e.Trace=1]="Trace",e[e.Event=2]="Event",e[e.Error=3]="Error"}(p||(p={}));const m=p,_=function(){function e(e,t,n,a,i){if(void 0===t&&(t=f.None),void 0===n&&(n=m.Trace),!e)throw new Error("moduleName is invalid");this.moduleName=e,this.logFeature=t,this.logType=n,this.logProperties=a,this.isIntentional=i}return e.prototype.toString=function(){var e=void 0;if(this.logProperties)try{e=JSON.stringify(this.logProperties)}catch(e){console.log("Error happens in toString():"+e)}return"".concat(this.moduleName," | ").concat(this.logFeature," | ").concat(this.logType," | ").concat(e)},e}();var h=o(529);const b=function(){function t(){}return t.initialize=function(e){this.settings=(0,h.cloneDeep)(e),this._initialized=!0,this._normalizeContextIds()},t.updateSettings=function(e){this.settings=(0,h.merge)(this.settings,e),this._normalizeContextIds()},t.clearSettings=function(e){var t=this;e.diagnosticSettings&&e.diagnosticSettings.forEach(function(e){delete t.settings[e]}),e.extraDiagnosticInfo&&e.extraDiagnosticInfo.forEach(function(e){t.settings.extraDiagnosticInfo&&t.settings.extraDiagnosticInfo[e]&&delete t.settings.extraDiagnosticInfo[e]})},Object.defineProperty(t,"isInitialized",{get:function(){return this._initialized},enumerable:!1,configurable:!0}),t._normalizeId=function(t){var n=e.Guid.tryParse(t);return(null==n?void 0:n.toString())||t},t._normalizeContextIds=function(){this.settings.siteId=this._normalizeId(this.settings.siteId),this.settings.webId=this._normalizeId(this.settings.webId),this.settings.correlationId=this._normalizeId(this.settings.correlationId),this.settings.listId&&(this.settings.listId=this._normalizeId(this.settings.listId),this.settings.listItemUniqueId&&(this.settings.listItemUniqueId=this._normalizeId(this.settings.listItemUniqueId)))},t._initialized=!1,t}(),g=function(){function t(){}return t.initialize=function(n){t._isInitialized||(b.initialize(n),u.shouldWriteToConsole=n.enableConsoleLog,u._addHandler({log:function(t){e.Log.info(t.eventName,"EventName:".concat(t.data.toString(),", ResultCode: ").concat(t.resultCode))},verbose:function(t){e.Log.verbose(t.eventName,t.data.toString())}}),t._isInitialized=!0)},Object.defineProperty(t,"isInitialized",{get:function(){return this._isInitialized},enumerable:!1,configurable:!0}),t.updateSettings=function(e){b.updateSettings(e)},t.getAuthoringSessionClientCountInfo=function(){var e,t;return null===(t=null===(e=b.settings)||void 0===e?void 0:e.extraDiagnosticInfo)||void 0===t?void 0:t.authoringSessionClientCount},t._getExtraDiagnosticInfo=function(){var e;return null===(e=b.settings)||void 0===e?void 0:e.extraDiagnosticInfo},t.clearSettings=function(e){b.clearSettings(e)},t._isInitialized=!1,t}();var v,y;!function(e){e[e.NotPromoted=0]="NotPromoted",e[e.Promoted=2]="Promoted"}(v||(v={})),function(e){e.News="News",e.Article="Article",e.Home="Home",e.Space="Space",e.NewsDigest="NewsDigest"}(y||(y={}));const S=function(){function t(){}return t._addHandler=function(e){t._handler=function(t){e.logData(t)},t._logManager.addHandler(t._handler)},t.startRealTimeProcessing=function(){this._shouldProcessInRealTime||(t._logManager.processAll(t._handler),this._shouldProcessInRealTime=!0)},t.log=function(e){t._logEngagementData(e)},t.logEvent=function(e,n){var a={name:e};n&&0!==n.length&&(a.extraData={action:n}),t._logEngagementData(a)},t.logEventWithLogEntry=function(e){var n={isIntentional:e.isIntentional,name:e.moduleName+"."+e.logFeature,extraData:e.logProperties};t._logEngagementData(n,!0)},t._logEngagementData=function(e,n){if(void 0===n&&(n=!1),!e.name||0===e.name.length)throw new Error("LogEntry is invalid");t._checkValidTagName(e,n),t._addContextData(e),t._appendExtraData(e),t._logManager.log(e)},t._checkValidTagName=function(e,t){if(void 0===t&&(t=!1),!t&&!1===/(\w+)\.(\w+).(\w+)/gi.test(e.name))throw new Error("".concat(e.name," tagName does not follow AppName.ControlName.ActionName pattern"))},t._addContextData=function(e){if(b.isInitialized){var t=b.settings,n=t.listId,a=t.listItemUniqueId,i=t.siteId,r=t.webId;e.siteId=i,e.webId=r,n&&(e.listId=n,a&&(e.docId=a))}},t._appendExtraData=function(t){if(b.isInitialized){var n=b.settings.contextInfo;n&&(t.extraData||(t.extraData={}),function(t,n){n.pageId=t.pageId,n.isHub=t.isHubSite,t.isHubSite?(n.hubSiteId=t.hubSiteId,n.isAssociatedSite=!1):!t.isHubSite&&t.hubSiteId?n.isAssociatedSite=!0:n.isAssociatedSite=!1,n.displayApp||(e._BrowserUtilities.isTeamsHosted()?(n.displayApp="Teams",t.isEduClass&&(n.isEduClass=!0)):n.displayApp="Sharepoint"),n.userAgent=navigator.userAgent;var a,i=t.webTemplate;n.webTemplate=i,"1"===i?a="TeamSite":"64"===i?a="GroupSite":"68"===i?a="CommunicationSite":"21"===i&&(a="MySite");var r=t.promotedState,o=t.pageType,s=o;o===y.Article&&(s=r===v.NotPromoted||void 0===r?y.Article:y.News),n.siteType=a,n.pageType=s,n.isDebug=!!e._BrowserUtilities.safelyAccessSessionStorage("spfx-debug"),n.hasCopilotLicense=!!t.hasCopilotLicense}(n,t.extraData))}},t._logManager=new r,t}(),D=function(){function e(){}return e.prototype.verbose=function(e,t,n){c.log(e,t,d.Verbose,n)},e.prototype.info=function(e,t,n){c.log(e,t,d.Info,n)},e.prototype.warn=function(e,t,n){c.log(e,t,d.Warning,n)},e.prototype.error=function(e,t,n){c.log(e,t,d.Error,n)},e}();var I=o(277),x={Success:0,Failure:1,ExpectedFailure:2};const C=function(){function e(){this._shouldExecuteInRealTime=!1,this._handlers={},this._executionEntries=[]}return Object.defineProperty(e.prototype,"shouldExecuteInRealTime",{get:function(){return this._shouldExecuteInRealTime},set:function(e){this._shouldExecuteInRealTime=e,this._shouldExecuteInRealTime&&this.flush()},enumerable:!1,configurable:!0}),e.prototype.addHandler=function(e,t){if(!this._containsHandler(e,t)){this._initializeHandlerArrayForKey(e);var n=this._handlers[e];-1===n.indexOf(t)&&n.push(t)}},e.prototype.addExecutionEntry=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];Object.freeze(t),this._shouldExecuteInRealTime?this._processExecutionEntry(e,t):this._executionEntries.push({key:e,args:t})},e.prototype.removeHandler=function(e,t){var n=this._handlers[e].indexOf(t);n>-1&&this._handlers[e].splice(n,1)},e.prototype.reset=function(){this._handlers={},this._executionEntries=[]},e.prototype.flush=function(){this._processAllExecutionEntries(),this._executionEntries=[]},e.prototype._containsHandler=function(e,t){return null!==this._handlers[e]&&void 0!==this._handlers[e]&&this._handlers[e].indexOf(t)>-1},e.prototype._initializeHandlerArrayForKey=function(e){null!==this._handlers[e]&&void 0!==this._handlers[e]||(this._handlers[e]=[])},e.prototype._processAllExecutionEntries=function(){for(var e=0,t=this._executionEntries;e<t.length;e++){var n=t[e];if(n&&this._handlers[n.key])try{for(var a=0,i=this._handlers[n.key];a<i.length;a++)i[a].apply(this,n.args)}catch(e){console.error("failed to process execution entry:"+e.toString())}}},e.prototype._processExecutionEntry=function(e,t){for(var n=0;n<this._handlers[e].length;n++)try{this._handlers[e][n].apply(this,t)}catch(e){console.error("failed to process execution entry:"+e.toString())}},e}(),O=function(){function e(){this._qosEvents=new Map,this._deferExecutor=new C,this._shouldProcessInRealTime=!1,this._initializeLogger()}return Object.defineProperty(e,"instance",{get:function(){return this._instance||(this._instance=new e),this._instance},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shouldProcessInRealTime",{get:function(){return this._shouldProcessInRealTime},set:function(e){this._shouldProcessInRealTime=e,this._deferExecutor.shouldExecuteInRealTime=e},enumerable:!1,configurable:!0}),e.prototype.setLogger=function(e){this._qosLogger=e},e.prototype.getQosEvent=function(e){return this._qosEvents.get(e)},e.prototype.startQosMonitor=function(e,t){this._qosEvents.has(e)||this._deferExecutor.addExecutionEntry("start",e,t)},e.prototype.writeQosEndResult=function(e,t){this._deferExecutor.addExecutionEntry("end",e,t)},e.prototype._startMonitor=function(e,t){this._qosLogger&&this._qosEvents.set(e,new this._qosLogger(t))},e.prototype._endMonitor=function(e,t){var n=this._qosEvents.get(e);n&&(n.end(t),this._qosEvents.delete(e))},e.prototype._initializeLogger=function(){var e=this;this._deferExecutor.addHandler("start",function(t,n){e._startMonitor(t,n)}),this._deferExecutor.addHandler("end",function(t,n){e._endMonitor(t,n)})},e}();var w={id:"QosMonitor"};const E=function(){function t(t,n,a){var i;void 0===n&&(n=!1),void 0===a&&(a=!1);var r=this;this._qosResultTypeValue=((i={})[x.Success]="Success",i[x.Failure]="Failure",i[x.ExpectedFailure]="ExpectedFailure",i),this._ensureAuthoringSessionId=function(){var e,t,n,a,i=null===(t=null===(e=b.settings)||void 0===e?void 0:e.extraDiagnosticInfo)||void 0===t?void 0:t.authoringSessionId;if(i){r._ensureEndExtraData(),r._endExtraData.AuthoringSessionId=i;var o=null===(a=null===(n=b.settings)||void 0===n?void 0:n.extraDiagnosticInfo)||void 0===a?void 0:a.authoringOpSequenceId;o&&(r._endExtraData.AuthoringOpSequenceId=o);var s=g.getAuthoringSessionClientCountInfo();s&&r._endExtraData&&(r._endExtraData.AuthoringSessionClientCount=s)}},e.Validate.isNonemptyString(t,"scenarioName"),this._id=e.Guid.newGuid().toString(),this._isDebugSession()||O.instance.startQosMonitor(this._id,{name:t}),this._scenarioName=t,this._hasEnded=!1,this._copyToCosmos=n,this._copyToInterana=a}return t.startRealTimeProcessing=function(){O.instance.shouldProcessInRealTime||this._shouldProcessInRealTime(!0)},t._shouldProcessInRealTime=function(e){O.instance.shouldProcessInRealTime=e},Object.defineProperty(t.prototype,"name",{get:function(){return this._scenarioName},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"shortEventName",{get:function(){return"Qos"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"resultCode",{get:function(){return this._endResultCode},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"resultType",{get:function(){return this._endResult},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"extraData",{get:function(){return this._endExtraData},set:function(e){this._endExtraData=e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hasEnded",{get:function(){return this._hasEnded},enumerable:!1,configurable:!0}),t.prototype.writeSuccess=function(e){this._writeQosEnd(x.Success,void 0,void 0,e)},t.prototype.writeUnexpectedFailure=function(e,t,n){void 0===e&&(e="DefaultUnexpected"),this._writeQosEnd(x.Failure,e,t,n)},t.prototype.writeExpectedFailure=function(e,t,n){void 0===e&&(e="DefaultExpected"),this._writeQosEnd(x.ExpectedFailure,e,t,n)},t.prototype._writeQosEnd=function(e,t,n,a){if(!this._shouldSkip(e)){this._ensureCorrelationId(e,a),this._endResultCode=t,this._endResult=e;var i=n?(0,I.getErrorMessage)(n):void 0;if(n instanceof I.CustomError){var r=(0,I.getQosEndSchemaFromError)(n);r&&(r.resultType=this._endResult,r.extraData=(0,h.merge)({},this._endExtraData,r.extraData)),O.instance.writeQosEndResult(this._id,r)}else{var o={resultCode:this._endResultCode,resultType:this._endResult,error:i,extraData:this._endExtraData};O.instance.writeQosEndResult(this._id,o)}this._writeToEngagement()}},t.prototype._ensureCorrelationId=function(e,t){var n=this;if(t&&(this._ensureEndExtraData(),Object.keys(t).forEach(function(e){return n._endExtraData[e]=t[e]})),b.isInitialized&&e!==x.Success){var a="CorrelationId",i=this._endExtraData&&(this._endExtraData[a]||this._endExtraData.correlationId)||b.settings.correlationId;i&&(this._endExtraData||(this._endExtraData={}),this._endExtraData[a]=i)}this._logHostType(),this._ensureAuthoringSessionId()},t.prototype._ensureEndExtraData=function(){this._endExtraData||(this._endExtraData={})},t.prototype._logHostType=function(){if(b.isInitialized){var t=e._BrowserUtilities.getTeamsAppType();if(t){this._ensureEndExtraData();var n="appHostType";this._endExtraData[n]||(this._endExtraData[n]=t)}}},t.prototype._isDebugSession=function(){try{return!!e._SPKillSwitch.isActivated("761ccb86-4fa0-4f56-a05b-477bcc09bd9f")&&!!e._BrowserUtilities.safelyAccessSessionStorage("spfx-debug")}catch(e){return!1}},t.prototype._shouldSkip=function(t){if(this._hasEnded&&void 0!==this._endResult){var n=e.Text.format("QoS monitor '{0}' has ended with '{1}' already. Ignoring '{2}' tag.",this.name,this._qosResultTypeValue[this._endResult],this._qosResultTypeValue[t]);return this._endResult!==t&&u.logError(w,new Error(n)),!0}return this._hasEnded=!0,this._isDebugSession()},t.prototype._writeToEngagement=function(){if(this._copyToInterana&&S.log({name:this.name,isIntentional:!!(this.extraData||{}).isIntentional,extraData:this.extraData||{}}),this._copyToCosmos){var e={name:"Spfx.Qos.ToEngagement",extraData:this.extraData||{}};e.extraData.qosName=this.name,this.resultType&&(e.extraData.qosResultType=this._qosResultTypeValue[this.resultType]),this.resultCode&&(e.extraData.qosResultCode=this.resultCode),S.log(e)}},t}();var A=o(280),L={StaticReliabilityQos95Sev4:"StaticReliabilityQos95Sev4",DynamicReliabilityQosMediumSev4:"DynamicReliabilityQosMediumSev4",DynamicReliabilityExpectedFailureHighSev4:"DynamicReliabilityExpectedFailureHighSev4"},k=function(e){function t(t,n,a){void 0===a&&(a=!1);var i=e.call(this,t,!1,a)||this;return i._autoAlertableMonitorType=n,i}return(0,A.__extends)(t,e),t.prototype.writeSuccess=function(t){e.prototype.writeSuccess.call(this,this._getExtraDataWithAutoAlertableFields(t))},t.prototype.writeUnexpectedFailure=function(t,n,a){void 0===t&&(t="DefaultUnexpected"),e.prototype.writeUnexpectedFailure.call(this,t,n,this._getExtraDataWithAutoAlertableFields(a))},t.prototype.writeExpectedFailure=function(t,n,a){void 0===t&&(t="DefaultExpected"),e.prototype.writeExpectedFailure.call(this,t,n,this._getExtraDataWithAutoAlertableFields(a))},t.prototype._getExtraDataWithAutoAlertableFields=function(e){var t=null!=e?e:{};return t.autoAlertableMonitorType=L[this._autoAlertableMonitorType],t},t}(E),M=function(t){function n(e,n,a,i){void 0===n&&(n=!1),void 0===i&&(i=!1);var r=t.call(this,e,i,n)||this;return r._extraDataForCustomerPromise=a,r}return(0,A.__extends)(n,t),n.prototype.writeUnexpectedFailure=function(e,n,a){void 0===e&&(e="DefaultUnexpected"),t.prototype.writeUnexpectedFailure.call(this,e,n,a),this._logCustomerPromiseFailure((null==n?void 0:n.message)||"DefaultErrorMessage",e,x.Failure,a)},n.prototype.writeExpectedFailure=function(e,n,a,i){void 0===e&&(e="DefaultExpected"),void 0===i&&(i=!1),t.prototype.writeExpectedFailure.call(this,e,n,a),i||this._logCustomerPromiseFailure((null==n?void 0:n.message)||"DefaultErrorMessage",e,x.ExpectedFailure,a)},n.prototype._logCustomerPromiseFailure=function(t,n,a,i){void 0===a&&(a=x.Failure),this._extraDataForCustomerPromise&&this._extraDataForCustomerPromise.forEach(function(r){var o,s=r.logFailure,c=r.veto;s({errorCode:r.errorModuleName+((o=g._getExtraDiagnosticInfo())&&o.hasAuthoringStarted?o.authoringSessionClientCount?o.authoringSessionClientCount>1?" with Multiple Users":"":o.isAuthoringUsingDDS?" in Legacy Authoring (DDS)":" in Legacy Authoring (no DDS)":"")+(e._SPKillSwitch.isActivated("c125685f-83e7-44c8-b602-5c21f5b748ae")||window.navigator.onLine?"":" (offline)"),errorScenario:n,errorMessage:t,resultType:a,pageType:null==i?void 0:i.pageType,errorStack:null==i?void 0:i.errorStack,veto:c})})},n}(E)})(),s})());
@@ -1 +0,0 @@
1
- {"version":3,"file":"EngagementLogger.d.ts","sourceRoot":"","sources":["../../../src/Api/Engagement/EngagementLogger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAM1C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAkE;IAC5F,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAU;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAEtD;;OAEG;WACW,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAO3D;;OAEG;WACW,uBAAuB,IAAI,IAAI;IAO7C;;;;;;;;;;;;;;;OAeG;WACW,GAAG,CAAC,cAAc,EAAE,eAAe,GAAG,IAAI;IAIxD;;;;;;;;;;;;OAYG;WACW,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAUlE;;;;;;;;;;;;;;;OAeG;WACW,oBAAoB,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAU7D,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAchC"}