@fluidframework/telemetry-utils 1.4.0-121020 → 2.0.0-dev-rc.1.0.0.225277

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 (156) hide show
  1. package/.eslintrc.js +12 -13
  2. package/.mocharc.js +12 -0
  3. package/CHANGELOG.md +249 -0
  4. package/README.md +68 -1
  5. package/api-extractor-esm.json +5 -0
  6. package/api-extractor-lint.json +4 -0
  7. package/api-extractor.json +2 -2
  8. package/api-report/telemetry-utils.api.md +444 -0
  9. package/dist/config.d.ts +47 -16
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +88 -38
  12. package/dist/config.js.map +1 -1
  13. package/dist/error.d.ts +112 -0
  14. package/dist/error.d.ts.map +1 -0
  15. package/dist/error.js +159 -0
  16. package/dist/error.js.map +1 -0
  17. package/dist/errorLogging.d.ts +86 -20
  18. package/dist/errorLogging.d.ts.map +1 -1
  19. package/dist/errorLogging.js +190 -60
  20. package/dist/errorLogging.js.map +1 -1
  21. package/dist/eventEmitterWithErrorHandling.d.ts +9 -3
  22. package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
  23. package/dist/eventEmitterWithErrorHandling.js +16 -3
  24. package/dist/eventEmitterWithErrorHandling.js.map +1 -1
  25. package/dist/events.d.ts +27 -3
  26. package/dist/events.d.ts.map +1 -1
  27. package/dist/events.js +26 -2
  28. package/dist/events.js.map +1 -1
  29. package/dist/fluidErrorBase.d.ts +57 -16
  30. package/dist/fluidErrorBase.d.ts.map +1 -1
  31. package/dist/fluidErrorBase.js +27 -14
  32. package/dist/fluidErrorBase.js.map +1 -1
  33. package/dist/index.d.ts +12 -11
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +55 -21
  36. package/dist/index.js.map +1 -1
  37. package/dist/logger.d.ts +269 -53
  38. package/dist/logger.d.ts.map +1 -1
  39. package/dist/logger.js +423 -132
  40. package/dist/logger.js.map +1 -1
  41. package/dist/mockLogger.d.ts +39 -12
  42. package/dist/mockLogger.d.ts.map +1 -1
  43. package/dist/mockLogger.js +105 -22
  44. package/dist/mockLogger.js.map +1 -1
  45. package/dist/sampledTelemetryHelper.d.ts +18 -12
  46. package/dist/sampledTelemetryHelper.d.ts.map +1 -1
  47. package/dist/sampledTelemetryHelper.js +28 -19
  48. package/dist/sampledTelemetryHelper.js.map +1 -1
  49. package/dist/telemetry-utils-alpha.d.ts +290 -0
  50. package/dist/telemetry-utils-beta.d.ts +264 -0
  51. package/dist/telemetry-utils-public.d.ts +264 -0
  52. package/dist/telemetry-utils-untrimmed.d.ts +1102 -0
  53. package/dist/telemetryTypes.d.ts +115 -0
  54. package/dist/telemetryTypes.d.ts.map +1 -0
  55. package/dist/telemetryTypes.js +7 -0
  56. package/dist/telemetryTypes.js.map +1 -0
  57. package/dist/thresholdCounter.d.ts +6 -5
  58. package/dist/thresholdCounter.d.ts.map +1 -1
  59. package/dist/thresholdCounter.js +4 -3
  60. package/dist/thresholdCounter.js.map +1 -1
  61. package/dist/tsdoc-metadata.json +11 -0
  62. package/dist/utils.d.ts +54 -3
  63. package/dist/utils.d.ts.map +1 -1
  64. package/dist/utils.js +58 -3
  65. package/dist/utils.js.map +1 -1
  66. package/lib/config.d.ts +47 -16
  67. package/lib/config.d.ts.map +1 -1
  68. package/lib/config.js +85 -36
  69. package/lib/config.js.map +1 -1
  70. package/lib/error.d.ts +112 -0
  71. package/lib/error.d.ts.map +1 -0
  72. package/lib/error.js +150 -0
  73. package/lib/error.js.map +1 -0
  74. package/lib/errorLogging.d.ts +86 -20
  75. package/lib/errorLogging.d.ts.map +1 -1
  76. package/lib/errorLogging.js +189 -60
  77. package/lib/errorLogging.js.map +1 -1
  78. package/lib/eventEmitterWithErrorHandling.d.ts +9 -3
  79. package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
  80. package/lib/eventEmitterWithErrorHandling.js +15 -2
  81. package/lib/eventEmitterWithErrorHandling.js.map +1 -1
  82. package/lib/events.d.ts +27 -3
  83. package/lib/events.d.ts.map +1 -1
  84. package/lib/events.js +26 -2
  85. package/lib/events.js.map +1 -1
  86. package/lib/fluidErrorBase.d.ts +57 -16
  87. package/lib/fluidErrorBase.d.ts.map +1 -1
  88. package/lib/fluidErrorBase.js +27 -14
  89. package/lib/fluidErrorBase.js.map +1 -1
  90. package/lib/index.d.ts +12 -11
  91. package/lib/index.d.ts.map +1 -1
  92. package/lib/index.js +11 -11
  93. package/lib/index.js.map +1 -1
  94. package/lib/logger.d.ts +269 -53
  95. package/lib/logger.d.ts.map +1 -1
  96. package/lib/logger.js +415 -131
  97. package/lib/logger.js.map +1 -1
  98. package/lib/mockLogger.d.ts +39 -12
  99. package/lib/mockLogger.d.ts.map +1 -1
  100. package/lib/mockLogger.js +106 -23
  101. package/lib/mockLogger.js.map +1 -1
  102. package/lib/sampledTelemetryHelper.d.ts +18 -12
  103. package/lib/sampledTelemetryHelper.d.ts.map +1 -1
  104. package/lib/sampledTelemetryHelper.js +26 -17
  105. package/lib/sampledTelemetryHelper.js.map +1 -1
  106. package/lib/telemetry-utils-alpha.d.mts +290 -0
  107. package/lib/telemetry-utils-beta.d.mts +264 -0
  108. package/lib/telemetry-utils-public.d.mts +264 -0
  109. package/lib/telemetry-utils-untrimmed.d.mts +1102 -0
  110. package/lib/telemetryTypes.d.ts +115 -0
  111. package/lib/telemetryTypes.d.ts.map +1 -0
  112. package/lib/telemetryTypes.js +6 -0
  113. package/lib/telemetryTypes.js.map +1 -0
  114. package/lib/thresholdCounter.d.ts +6 -5
  115. package/lib/thresholdCounter.d.ts.map +1 -1
  116. package/lib/thresholdCounter.js +4 -3
  117. package/lib/thresholdCounter.js.map +1 -1
  118. package/lib/utils.d.ts +54 -3
  119. package/lib/utils.d.ts.map +1 -1
  120. package/lib/utils.js +56 -2
  121. package/lib/utils.js.map +1 -1
  122. package/package.json +86 -57
  123. package/prettier.config.cjs +8 -0
  124. package/src/config.ts +254 -189
  125. package/src/error.ts +235 -0
  126. package/src/errorLogging.ts +440 -290
  127. package/src/eventEmitterWithErrorHandling.ts +26 -14
  128. package/src/events.ts +54 -25
  129. package/src/fluidErrorBase.ts +94 -46
  130. package/src/index.ts +76 -17
  131. package/src/logger.ts +972 -505
  132. package/src/mockLogger.ts +225 -83
  133. package/src/sampledTelemetryHelper.ts +136 -128
  134. package/src/telemetryTypes.ts +140 -0
  135. package/src/thresholdCounter.ts +38 -37
  136. package/src/utils.ts +108 -17
  137. package/tsconfig.esnext.json +6 -6
  138. package/tsconfig.json +9 -13
  139. package/dist/debugLogger.d.ts +0 -39
  140. package/dist/debugLogger.d.ts.map +0 -1
  141. package/dist/debugLogger.js +0 -101
  142. package/dist/debugLogger.js.map +0 -1
  143. package/dist/packageVersion.d.ts +0 -9
  144. package/dist/packageVersion.d.ts.map +0 -1
  145. package/dist/packageVersion.js +0 -12
  146. package/dist/packageVersion.js.map +0 -1
  147. package/lib/debugLogger.d.ts +0 -39
  148. package/lib/debugLogger.d.ts.map +0 -1
  149. package/lib/debugLogger.js +0 -97
  150. package/lib/debugLogger.js.map +0 -1
  151. package/lib/packageVersion.d.ts +0 -9
  152. package/lib/packageVersion.d.ts.map +0 -1
  153. package/lib/packageVersion.js +0 -9
  154. package/lib/packageVersion.js.map +0 -1
  155. package/src/debugLogger.ts +0 -126
  156. package/src/packageVersion.ts +0 -9
@@ -2,25 +2,37 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { IEvent } from "@fluidframework/common-definitions";
6
- import { TypedEventEmitter, EventEmitterEventType } from "@fluidframework/common-utils";
5
+ import { TypedEventEmitter, EventEmitterEventType } from "@fluid-internal/client-utils";
6
+ import { IEvent } from "@fluidframework/core-interfaces";
7
7
 
8
8
  /**
9
9
  * Event Emitter helper class
10
+ *
11
+ * @remarks
10
12
  * Any exceptions thrown by listeners will be caught and raised through "error" event.
11
13
  * Any exception thrown by "error" listeners will propagate to the caller.
14
+ * @privateRemarks
15
+ * This probably doesn't belong in this package, as it is not telemetry-specific, and is really only intended for internal fluid-framework use.
16
+ * We should consider moving it to the `core-utils` package.
17
+ * @public
12
18
  */
13
- export class EventEmitterWithErrorHandling<TEvent extends IEvent = IEvent> extends TypedEventEmitter<TEvent> {
14
- constructor(private readonly errorHandler: (eventName: EventEmitterEventType, error: any) => void) {
15
- super();
16
- }
19
+ export class EventEmitterWithErrorHandling<
20
+ TEvent extends IEvent = IEvent,
21
+ > extends TypedEventEmitter<TEvent> {
22
+ constructor(
23
+ // TODO: use `unknown` instead (breaking API change)
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ private readonly errorHandler: (eventName: EventEmitterEventType, error: any) => void,
26
+ ) {
27
+ super();
28
+ }
17
29
 
18
- public emit(event: EventEmitterEventType, ...args: any[]): boolean {
19
- try {
20
- return super.emit(event, ...args);
21
- } catch (error) {
22
- this.errorHandler(event, error);
23
- return true;
24
- }
25
- }
30
+ public emit(event: EventEmitterEventType, ...args: unknown[]): boolean {
31
+ try {
32
+ return super.emit(event, ...args);
33
+ } catch (error) {
34
+ this.errorHandler(event, error);
35
+ return true;
36
+ }
37
+ }
26
38
  }
package/src/events.ts CHANGED
@@ -3,38 +3,67 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
+ // False positive: this is an import from the `events` package, not from Node.
7
+ // eslint-disable-next-line unicorn/prefer-node-protocol
6
8
  import { EventEmitter } from "events";
7
- import {
8
- ITelemetryLogger,
9
- } from "@fluidframework/common-definitions";
9
+ import { ITelemetryLoggerExt } from "./telemetryTypes";
10
10
 
11
+ /**
12
+ * Note: The contents of this file really don't belong in this package, as they are only intended for internal use.
13
+ * They should be moved into the `core-utils` package in the future.
14
+ */
15
+
16
+ /**
17
+ * @internal
18
+ */
11
19
  export const connectedEventName = "connected";
20
+
21
+ /**
22
+ * @internal
23
+ */
12
24
  export const disconnectedEventName = "disconnected";
13
25
 
26
+ // eslint-disable-next-line jsdoc/require-description
27
+ /**
28
+ * @internal
29
+ */
14
30
  export function safeRaiseEvent(
15
- emitter: EventEmitter,
16
- logger: ITelemetryLogger,
17
- event: string,
18
- ...args) {
19
- try {
20
- emitter.emit(event, ...args);
21
- } catch (error) {
22
- logger.sendErrorEvent({ eventName: "RaiseEventError", event }, error);
23
- }
31
+ emitter: EventEmitter,
32
+ logger: ITelemetryLoggerExt,
33
+ event: string,
34
+ ...args: unknown[]
35
+ ): void {
36
+ try {
37
+ emitter.emit(event, ...args);
38
+ } catch (error) {
39
+ logger.sendErrorEvent({ eventName: "RaiseEventError", event }, error);
40
+ }
24
41
  }
25
42
 
43
+ /**
44
+ * Raises events pertaining to the connection
45
+ * @param logger - The logger to log telemetry
46
+ * @param emitter - The event emitter instance
47
+ * @param connected - A boolean tracking whether the connection was in a connected state or not
48
+ * @param clientId - The connected/disconnected clientId
49
+ * @param disconnectedReason - The reason for the connection to be disconnected (Used for telemetry purposes only)
50
+ *
51
+ * @internal
52
+ */
26
53
  export function raiseConnectedEvent(
27
- logger: ITelemetryLogger,
28
- emitter: EventEmitter,
29
- connected: boolean,
30
- clientId?: string) {
31
- try {
32
- if (connected) {
33
- emitter.emit(connectedEventName, clientId);
34
- } else {
35
- emitter.emit(disconnectedEventName);
36
- }
37
- } catch (error) {
38
- logger.sendErrorEvent({ eventName: "RaiseConnectedEventError" }, error);
39
- }
54
+ logger: ITelemetryLoggerExt,
55
+ emitter: EventEmitter,
56
+ connected: boolean,
57
+ clientId?: string,
58
+ disconnectedReason?: string,
59
+ ): void {
60
+ try {
61
+ if (connected) {
62
+ emitter.emit(connectedEventName, clientId);
63
+ } else {
64
+ emitter.emit(disconnectedEventName, disconnectedReason);
65
+ }
66
+ } catch (error) {
67
+ logger.sendErrorEvent({ eventName: "RaiseConnectedEventError" }, error);
68
+ }
40
69
  }
@@ -3,61 +3,109 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryProperties } from "@fluidframework/common-definitions";
6
+ import { ITelemetryProperties } from "@fluidframework/core-interfaces";
7
7
 
8
8
  /**
9
+ * An error emitted by the Fluid Framework.
10
+ *
11
+ * @remarks
12
+ *
9
13
  * All normalized errors flowing through the Fluid Framework adhere to this readonly interface.
10
- * It features errorType and errorInstanceId on top of Error's members as readonly,
11
- * and a getter/setter for telemetry props to be included when the error is logged.
14
+ *
15
+ * It features the members of {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error | Error}
16
+ * made readonly, as well as {@link IFluidErrorBase.errorType} and {@link IFluidErrorBase.errorInstanceId}.
17
+ * It also features getters and setters for telemetry props to be included when the error is logged.
18
+ *
19
+ * @internal
12
20
  */
13
21
  export interface IFluidErrorBase extends Error {
14
- /** Classification of what type of error this is, used programmatically by consumers to interpret the error */
15
- readonly errorType: string;
16
-
17
- /**
18
- * Error's message property, made readonly.
19
- * Be specific, but also take care when including variable data to consider suitability for aggregation in telemetry
20
- * Also avoid including any data that jeopardizes the user's privacy. Add a tagged telemetry property instead.
21
- */
22
- readonly message: string;
23
-
24
- /** Error's stack property, made readonly */
25
- readonly stack?: string;
26
-
27
- /** Error's name property, made readonly */
28
- readonly name: string;
29
-
30
- /**
31
- * A Guid identifying this error instance.
32
- * Useful in telemetry for deduping multiple logging events arising from the same error,
33
- * or correlating an error with an inner error that caused it, in case of error wrapping.
34
- */
35
- readonly errorInstanceId: string;
36
-
37
- /** Get the telemetry properties stashed on this error for logging */
38
- getTelemetryProperties(): ITelemetryProperties;
39
- /** Add telemetry properties to this error which will be logged with the error */
40
- addTelemetryProperties: (props: ITelemetryProperties) => void;
22
+ /**
23
+ * Classification of what type of error this is.
24
+ *
25
+ * @remarks Used programmatically by consumers to interpret the error.
26
+ */
27
+ readonly errorType: string;
28
+
29
+ /**
30
+ * Error's message property, made readonly.
31
+ *
32
+ * @remarks
33
+ *
34
+ * Recommendations:
35
+ *
36
+ * Be specific, but also take care when including variable data to consider suitability for aggregation in telemetry.
37
+ * Also avoid including any data that jeopardizes the user's privacy. Add a tagged telemetry property instead.
38
+ */
39
+ readonly message: string;
40
+
41
+ /**
42
+ * See {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stack}.
43
+ */
44
+ readonly stack?: string;
45
+
46
+ /**
47
+ * See {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name}.
48
+ */
49
+ readonly name: string;
50
+
51
+ /**
52
+ * A Guid identifying this error instance.
53
+ *
54
+ * @remarks
55
+ *
56
+ * Useful in telemetry for deduplicating multiple logging events arising from the same error,
57
+ * or correlating an error with an inner error that caused it, in case of error wrapping.
58
+ */
59
+ readonly errorInstanceId: string;
60
+
61
+ /**
62
+ * Get the telemetry properties stashed on this error for logging.
63
+ */
64
+ getTelemetryProperties(): ITelemetryProperties;
65
+
66
+ /**
67
+ * Add telemetry properties to this error which will be logged with the error
68
+ */
69
+ addTelemetryProperties: (props: ITelemetryProperties) => void;
41
70
  }
42
71
 
43
- const hasTelemetryPropFunctions = (x: any): boolean =>
44
- typeof x?.getTelemetryProperties === "function" &&
45
- typeof x?.addTelemetryProperties === "function";
72
+ const hasTelemetryPropFunctions = (x: unknown): boolean =>
73
+ typeof (x as Partial<IFluidErrorBase>)?.getTelemetryProperties === "function" &&
74
+ typeof (x as Partial<IFluidErrorBase>)?.addTelemetryProperties === "function";
46
75
 
47
- export const hasErrorInstanceId = (x: any): x is { errorInstanceId: string; } =>
48
- typeof x?.errorInstanceId === "string";
76
+ /**
77
+ * Type guard for error data containing the {@link IFluidErrorBase.errorInstanceId} property.
78
+ *
79
+ * @internal
80
+ */
81
+ export const hasErrorInstanceId = (x: unknown): x is { errorInstanceId: string } =>
82
+ typeof (x as Partial<{ errorInstanceId: string }>)?.errorInstanceId === "string";
49
83
 
50
- /** type guard for IFluidErrorBase interface */
51
- export function isFluidError(e: any): e is IFluidErrorBase {
52
- return typeof e?.errorType === "string" &&
53
- typeof e?.message === "string" &&
54
- hasErrorInstanceId(e) &&
55
- hasTelemetryPropFunctions(e);
84
+ /**
85
+ * Type guard for {@link IFluidErrorBase}.
86
+ *
87
+ * @internal
88
+ */
89
+ export function isFluidError(error: unknown): error is IFluidErrorBase {
90
+ return (
91
+ typeof (error as Partial<IFluidErrorBase>)?.errorType === "string" &&
92
+ typeof (error as Partial<IFluidErrorBase>)?.message === "string" &&
93
+ hasErrorInstanceId(error) &&
94
+ hasTelemetryPropFunctions(error)
95
+ );
56
96
  }
57
97
 
58
- /** type guard for old standard of valid/known errors */
59
- export function isValidLegacyError(e: any): e is Omit<IFluidErrorBase, "errorInstanceId"> {
60
- return typeof e?.errorType === "string" &&
61
- typeof e?.message === "string" &&
62
- hasTelemetryPropFunctions(e);
98
+ /**
99
+ * Type guard for old standard of valid/known errors.
100
+ *
101
+ * @internal
102
+ */
103
+ export function isValidLegacyError(
104
+ error: unknown,
105
+ ): error is Omit<IFluidErrorBase, "errorInstanceId"> {
106
+ return (
107
+ typeof (error as Partial<IFluidErrorBase>)?.errorType === "string" &&
108
+ typeof (error as Partial<IFluidErrorBase>)?.message === "string" &&
109
+ hasTelemetryPropFunctions(error)
110
+ );
63
111
  }
package/src/index.ts CHANGED
@@ -2,22 +2,81 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- export * from "./debugLogger";
6
- export * from "./errorLogging";
7
- export * from "./eventEmitterWithErrorHandling";
8
- export * from "./events";
9
- export * from "./fluidErrorBase";
10
- export * from "./logger";
11
- export * from "./mockLogger";
12
- export * from "./thresholdCounter";
13
- export * from "./utils";
14
- export * from "./sampledTelemetryHelper";
15
5
  export {
16
- MonitoringContext,
17
- IConfigProviderBase,
18
- sessionStorageConfigProvider,
19
- mixinMonitoringContext,
20
- IConfigProvider,
21
- ConfigTypes,
22
- loggerToMonitoringContext,
6
+ createChildMonitoringContext,
7
+ MonitoringContext,
8
+ sessionStorageConfigProvider,
9
+ mixinMonitoringContext,
10
+ IConfigProvider,
11
+ loggerToMonitoringContext,
23
12
  } from "./config";
13
+ export {
14
+ DataCorruptionError,
15
+ DataProcessingError,
16
+ extractSafePropertiesFromMessage,
17
+ GenericError,
18
+ UsageError,
19
+ validatePrecondition,
20
+ } from "./error";
21
+ export {
22
+ extractLogSafeErrorProperties,
23
+ generateErrorWithStack,
24
+ generateStack,
25
+ getCircularReplacer,
26
+ IFluidErrorAnnotations,
27
+ isExternalError,
28
+ isILoggingError,
29
+ isTaggedTelemetryPropertyValue,
30
+ LoggingError,
31
+ NORMALIZED_ERROR_TYPE,
32
+ normalizeError,
33
+ overwriteStack,
34
+ wrapError,
35
+ wrapErrorAndLog,
36
+ } from "./errorLogging";
37
+ export { EventEmitterWithErrorHandling } from "./eventEmitterWithErrorHandling";
38
+ export {
39
+ connectedEventName,
40
+ disconnectedEventName,
41
+ raiseConnectedEvent,
42
+ safeRaiseEvent,
43
+ } from "./events";
44
+ export {
45
+ hasErrorInstanceId,
46
+ IFluidErrorBase,
47
+ isFluidError,
48
+ isValidLegacyError,
49
+ } from "./fluidErrorBase";
50
+ export {
51
+ eventNamespaceSeparator,
52
+ createChildLogger,
53
+ createMultiSinkLogger,
54
+ formatTick,
55
+ IPerformanceEventMarkers,
56
+ ITelemetryLoggerPropertyBag,
57
+ ITelemetryLoggerPropertyBags,
58
+ MultiSinkLoggerProperties,
59
+ numberFromString,
60
+ PerformanceEvent,
61
+ TaggedLoggerAdapter,
62
+ tagData,
63
+ tagCodeArtifacts,
64
+ TelemetryDataTag,
65
+ TelemetryEventPropertyTypes,
66
+ TelemetryNullLogger,
67
+ } from "./logger";
68
+ export { MockLogger } from "./mockLogger";
69
+ export { ThresholdCounter } from "./thresholdCounter";
70
+ export { SampledTelemetryHelper } from "./sampledTelemetryHelper";
71
+ export { logIfFalse, createSampledLogger, IEventSampler, ISampledTelemetryLogger } from "./utils";
72
+ export {
73
+ TelemetryEventPropertyTypeExt,
74
+ ITelemetryEventExt,
75
+ ITelemetryGenericEventExt,
76
+ ITelemetryErrorEventExt,
77
+ ITelemetryPerformanceEventExt,
78
+ ITelemetryLoggerExt,
79
+ ITaggedTelemetryPropertyTypeExt,
80
+ ITelemetryPropertiesExt,
81
+ TelemetryEventCategory,
82
+ } from "./telemetryTypes";