@fluidframework/telemetry-utils 2.0.0-internal.6.1.2 → 2.0.0-internal.6.2.1

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 (109) hide show
  1. package/.eslintrc.js +2 -1
  2. package/CHANGELOG.md +31 -0
  3. package/README.md +4 -3
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +9 -4
  6. package/dist/config.js.map +1 -1
  7. package/dist/error.d.ts +92 -0
  8. package/dist/error.d.ts.map +1 -0
  9. package/dist/error.js +133 -0
  10. package/dist/error.js.map +1 -0
  11. package/dist/errorLogging.d.ts +27 -11
  12. package/dist/errorLogging.d.ts.map +1 -1
  13. package/dist/errorLogging.js +42 -17
  14. package/dist/errorLogging.js.map +1 -1
  15. package/dist/eventEmitterWithErrorHandling.d.ts +2 -2
  16. package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
  17. package/dist/eventEmitterWithErrorHandling.js +4 -1
  18. package/dist/eventEmitterWithErrorHandling.js.map +1 -1
  19. package/dist/events.d.ts +1 -1
  20. package/dist/events.d.ts.map +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/fluidErrorBase.d.ts +48 -15
  23. package/dist/fluidErrorBase.d.ts.map +1 -1
  24. package/dist/fluidErrorBase.js +18 -11
  25. package/dist/fluidErrorBase.js.map +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +7 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/logger.d.ts +28 -16
  31. package/dist/logger.d.ts.map +1 -1
  32. package/dist/logger.js +41 -14
  33. package/dist/logger.js.map +1 -1
  34. package/dist/mockLogger.d.ts +14 -5
  35. package/dist/mockLogger.d.ts.map +1 -1
  36. package/dist/mockLogger.js +19 -7
  37. package/dist/mockLogger.js.map +1 -1
  38. package/dist/sampledTelemetryHelper.d.ts +8 -7
  39. package/dist/sampledTelemetryHelper.d.ts.map +1 -1
  40. package/dist/sampledTelemetryHelper.js +10 -8
  41. package/dist/sampledTelemetryHelper.js.map +1 -1
  42. package/dist/telemetryTypes.d.ts +8 -4
  43. package/dist/telemetryTypes.d.ts.map +1 -1
  44. package/dist/telemetryTypes.js.map +1 -1
  45. package/dist/thresholdCounter.d.ts.map +1 -1
  46. package/dist/thresholdCounter.js.map +1 -1
  47. package/dist/utils.d.ts +1 -1
  48. package/dist/utils.d.ts.map +1 -1
  49. package/dist/utils.js.map +1 -1
  50. package/lib/config.d.ts.map +1 -1
  51. package/lib/config.js +9 -4
  52. package/lib/config.js.map +1 -1
  53. package/lib/error.d.ts +92 -0
  54. package/lib/error.d.ts.map +1 -0
  55. package/lib/error.js +125 -0
  56. package/lib/error.js.map +1 -0
  57. package/lib/errorLogging.d.ts +27 -11
  58. package/lib/errorLogging.d.ts.map +1 -1
  59. package/lib/errorLogging.js +42 -17
  60. package/lib/errorLogging.js.map +1 -1
  61. package/lib/eventEmitterWithErrorHandling.d.ts +2 -2
  62. package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
  63. package/lib/eventEmitterWithErrorHandling.js +4 -1
  64. package/lib/eventEmitterWithErrorHandling.js.map +1 -1
  65. package/lib/events.d.ts +1 -1
  66. package/lib/events.d.ts.map +1 -1
  67. package/lib/events.js.map +1 -1
  68. package/lib/fluidErrorBase.d.ts +48 -15
  69. package/lib/fluidErrorBase.d.ts.map +1 -1
  70. package/lib/fluidErrorBase.js +18 -11
  71. package/lib/fluidErrorBase.js.map +1 -1
  72. package/lib/index.d.ts +1 -0
  73. package/lib/index.d.ts.map +1 -1
  74. package/lib/index.js +1 -0
  75. package/lib/index.js.map +1 -1
  76. package/lib/logger.d.ts +28 -16
  77. package/lib/logger.d.ts.map +1 -1
  78. package/lib/logger.js +41 -14
  79. package/lib/logger.js.map +1 -1
  80. package/lib/mockLogger.d.ts +14 -5
  81. package/lib/mockLogger.d.ts.map +1 -1
  82. package/lib/mockLogger.js +19 -7
  83. package/lib/mockLogger.js.map +1 -1
  84. package/lib/sampledTelemetryHelper.d.ts +8 -7
  85. package/lib/sampledTelemetryHelper.d.ts.map +1 -1
  86. package/lib/sampledTelemetryHelper.js +10 -8
  87. package/lib/sampledTelemetryHelper.js.map +1 -1
  88. package/lib/telemetryTypes.d.ts +8 -4
  89. package/lib/telemetryTypes.d.ts.map +1 -1
  90. package/lib/telemetryTypes.js.map +1 -1
  91. package/lib/thresholdCounter.d.ts.map +1 -1
  92. package/lib/thresholdCounter.js.map +1 -1
  93. package/lib/utils.d.ts +1 -1
  94. package/lib/utils.d.ts.map +1 -1
  95. package/lib/utils.js.map +1 -1
  96. package/package.json +11 -11
  97. package/src/config.ts +12 -7
  98. package/src/error.ts +202 -0
  99. package/src/errorLogging.ts +78 -38
  100. package/src/eventEmitterWithErrorHandling.ts +4 -2
  101. package/src/events.ts +3 -3
  102. package/src/fluidErrorBase.ts +62 -26
  103. package/src/index.ts +7 -0
  104. package/src/logger.ts +109 -35
  105. package/src/mockLogger.ts +25 -14
  106. package/src/sampledTelemetryHelper.ts +17 -13
  107. package/src/telemetryTypes.ts +20 -4
  108. package/src/thresholdCounter.ts +2 -2
  109. package/src/utils.ts +1 -1
@@ -12,11 +12,14 @@ import {
12
12
  import { performance } from "@fluidframework/common-utils";
13
13
  import { ITelemetryLoggerExt } from "./telemetryTypes";
14
14
 
15
+ /**
16
+ * @privateRemarks
17
+ *
18
+ * The names of the properties in this interface are the ones that will get stamped in the
19
+ * telemetry event, changes should be considered carefully. The optional properties should
20
+ * only be populated if 'includeAggregateMetrics' is true.
21
+ */
15
22
  interface Measurements {
16
- // The names of the properties in this interface are the ones that will get stamped in the
17
- // telemetry event, changes should be considered carefully. The optional properties should
18
- // only be populated if 'includeAggregateMetrics' is true.
19
-
20
23
  /**
21
24
  * The duration of the latest execution.
22
25
  */
@@ -45,7 +48,7 @@ interface Measurements {
45
48
 
46
49
  /**
47
50
  * Helper class that executes a specified code block and writes an
48
- * {@link @fluidframework/common-definitions#ITelemetryPerformanceEvent} to a specified logger every time a specified
51
+ * {@link @fluidframework/core-interfaces#ITelemetryPerformanceEvent} to a specified logger every time a specified
49
52
  * number of executions is reached (or when the class is disposed). The `duration` field in the telemetry event is
50
53
  * the duration of the latest execution (sample) of the specified function. See the documentation of the
51
54
  * `includeAggregateMetrics` parameter for additional details that can be included.
@@ -82,12 +85,13 @@ export class SampledTelemetryHelper implements IDisposable {
82
85
  ) {}
83
86
 
84
87
  /**
85
- * @param codeToMeasure -
86
- * The code to be executed and measured.
87
- * @param bucket -
88
- * A key to track executions of the code block separately. Each different value of this parameter has a separate
89
- * set of executions and metrics tracked by the class. If no such distinction needs to be made, do not provide a
90
- * value.
88
+ * Executes the specified code and keeps track of execution time statistics.
89
+ * If it's been called enough times (the sampleThreshold for the class) then it generates a log message with the necessary information.
90
+ *
91
+ * @param codeToMeasure - The code to be executed and measured.
92
+ * @param bucket - A key to track executions of the code block separately.
93
+ * Each different value of this parameter has a separate set of executions and metrics tracked by the class.
94
+ * If no such distinction needs to be made, do not provide a value.
91
95
  * @returns Whatever the passed-in code block returns.
92
96
  */
93
97
  public measure<T>(codeToMeasure: () => T, bucket: string = ""): T {
@@ -116,7 +120,7 @@ export class SampledTelemetryHelper implements IDisposable {
116
120
  return returnValue;
117
121
  }
118
122
 
119
- private flushBucket(bucket: string) {
123
+ private flushBucket(bucket: string): void {
120
124
  const measurements = this.measurementsMap.get(bucket);
121
125
  if (measurements === undefined) {
122
126
  return;
@@ -137,6 +141,6 @@ export class SampledTelemetryHelper implements IDisposable {
137
141
  }
138
142
 
139
143
  public dispose(error?: Error | undefined): void {
140
- this.measurementsMap.forEach((_, k) => this.flushBucket(k));
144
+ for (const [k] of this.measurementsMap.entries()) this.flushBucket(k);
141
145
  }
142
146
  }
@@ -3,7 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryBaseLogger, TelemetryEventCategory } from "@fluidframework/core-interfaces";
6
+ import {
7
+ ITelemetryBaseLogger,
8
+ LogLevel,
9
+ TelemetryEventCategory,
10
+ } from "@fluidframework/core-interfaces";
7
11
 
8
12
  /**
9
13
  * Property types that can be logged.
@@ -83,18 +87,30 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
83
87
  * Send information telemetry event
84
88
  * @param event - Event to send
85
89
  * @param error - optional error object to log
90
+ * @param logLevel - optional level of the log.
86
91
  */
87
- sendTelemetryEvent(event: ITelemetryGenericEventExt, error?: any): void;
92
+ sendTelemetryEvent(
93
+ event: ITelemetryGenericEventExt,
94
+ error?: unknown,
95
+ logLevel?: LogLevel.verbose | LogLevel.default,
96
+ ): void;
88
97
 
89
98
  /**
90
99
  * Send error telemetry event
91
100
  * @param event - Event to send
101
+ * @param error - optional error object to log
92
102
  */
93
- sendErrorEvent(event: ITelemetryErrorEventExt, error?: any): void;
103
+ sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
94
104
 
95
105
  /**
96
106
  * Send performance telemetry event
97
107
  * @param event - Event to send
108
+ * @param error - optional error object to log
109
+ * @param logLevel - optional level of the log.
98
110
  */
99
- sendPerformanceEvent(event: ITelemetryPerformanceEventExt, error?: any): void;
111
+ sendPerformanceEvent(
112
+ event: ITelemetryPerformanceEventExt,
113
+ error?: unknown,
114
+ logLevel?: LogLevel.verbose | LogLevel.default,
115
+ ): void;
100
116
  }
@@ -19,7 +19,7 @@ export class ThresholdCounter {
19
19
  /**
20
20
  * Sends the value if it's above the treshold.
21
21
  */
22
- public send(eventName: string, value: number) {
22
+ public send(eventName: string, value: number): void {
23
23
  if (value < this.threshold) {
24
24
  return;
25
25
  }
@@ -36,7 +36,7 @@ export class ThresholdCounter {
36
36
  * To be used in scenarios where we'd like to record a
37
37
  * threshold violation while reducing telemetry noise.
38
38
  */
39
- public sendIfMultiple(eventName: string, value: number) {
39
+ public sendIfMultiple(eventName: string, value: number): void {
40
40
  if (value === this.thresholdMultiple) {
41
41
  this.logger.sendPerformanceEvent({
42
42
  eventName,
package/src/utils.ts CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  * @returns - The outcome of the condition
17
17
  */
18
18
  export function logIfFalse(
19
- condition: any,
19
+ condition: unknown,
20
20
  logger: ITelemetryBaseLogger,
21
21
  event: string | ITelemetryGenericEvent,
22
22
  ): condition is true {