@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
package/lib/logger.d.ts CHANGED
@@ -2,47 +2,81 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ITelemetryBaseEvent, ITelemetryBaseLogger, ITelemetryErrorEvent, ITelemetryGenericEvent, ITelemetryLogger, ITelemetryPerformanceEvent, ITelemetryProperties, TelemetryEventPropertyType, ITaggedTelemetryPropertyType, TelemetryEventCategory } from "@fluidframework/common-definitions";
5
+ import { ITelemetryBaseEvent, ITelemetryBaseLogger, ITelemetryErrorEvent, ITelemetryGenericEvent, ITelemetryPerformanceEvent, TelemetryBaseEventPropertyType as TelemetryEventPropertyType, LogLevel, Tagged, ITelemetryBaseProperties, TelemetryBaseEventPropertyType } from "@fluidframework/core-interfaces";
6
+ import { IsomorphicPerformance } from "@fluid-internal/client-utils";
7
+ import { ITelemetryGenericEventExt, ITelemetryLoggerExt, ITelemetryPerformanceEventExt, TelemetryEventPropertyTypeExt, TelemetryEventCategory, ITelemetryPropertiesExt } from "./telemetryTypes";
8
+ export interface Memory {
9
+ usedJSHeapSize: number;
10
+ }
11
+ export interface PerformanceWithMemory extends IsomorphicPerformance {
12
+ readonly memory: Memory;
13
+ }
6
14
  /**
7
15
  * Broad classifications to be applied to individual properties as they're prepared to be logged to telemetry.
8
- * Please do not modify existing entries for backwards compatibility.
16
+ *
17
+ * @privateRemarks Please do not modify existing entries, to maintain backwards compatibility.
18
+ *
19
+ * @internal
9
20
  */
10
21
  export declare enum TelemetryDataTag {
11
22
  /**
12
- * Data containing terms from code packages that may have been dynamically loaded
13
- * @deprecated 1.0, will be removed in next release (see issue #6603). Use `TelemetryDataTag.CodeArtifact` instead.
23
+ * Data containing terms or IDs from code packages that may have been dynamically loaded
14
24
  */
15
- PackageData = "PackageData",
16
- /** Data containing terms or IDs from code packages that may have been dynamically loaded */
17
25
  CodeArtifact = "CodeArtifact",
18
- /** Personal data of a variety of classifications that pertains to the user */
26
+ /**
27
+ * Personal data of a variety of classifications that pertains to the user
28
+ */
19
29
  UserData = "UserData"
20
30
  }
21
- export declare type TelemetryEventPropertyTypes = TelemetryEventPropertyType | ITaggedTelemetryPropertyType;
31
+ /**
32
+ * @alpha
33
+ */
34
+ export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string];
35
+ /**
36
+ * @alpha
37
+ */
22
38
  export interface ITelemetryLoggerPropertyBag {
23
39
  [index: string]: TelemetryEventPropertyTypes | (() => TelemetryEventPropertyTypes);
24
40
  }
41
+ /**
42
+ * @alpha
43
+ */
25
44
  export interface ITelemetryLoggerPropertyBags {
26
45
  all?: ITelemetryLoggerPropertyBag;
27
46
  error?: ITelemetryLoggerPropertyBag;
28
47
  }
48
+ /**
49
+ * Attempts to parse number from string.
50
+ * If it fails, it will return the original string.
51
+ *
52
+ * @remarks
53
+ * Used to make telemetry data typed (and support math operations, like comparison),
54
+ * in places where we do expect numbers (like contentsize/duration property in http header).
55
+ *
56
+ * @internal
57
+ */
58
+ export declare function numberFromString(str: string | null | undefined): string | number | undefined;
59
+ /**
60
+ * @internal
61
+ */
62
+ export declare function formatTick(tick: number): number;
63
+ /**
64
+ * String used to concatenate the namespace of parent loggers and their child loggers.
65
+ * @internal
66
+ */
67
+ export declare const eventNamespaceSeparator: ":";
29
68
  /**
30
69
  * TelemetryLogger class contains various helper telemetry methods,
31
70
  * encoding in one place schemas for various types of Fluid telemetry events.
32
71
  * Creates sub-logger that appends properties to all events
33
72
  */
34
- export declare abstract class TelemetryLogger implements ITelemetryLogger {
73
+ export declare abstract class TelemetryLogger implements ITelemetryLoggerExt {
35
74
  protected readonly namespace?: string | undefined;
36
75
  protected readonly properties?: ITelemetryLoggerPropertyBags | undefined;
37
- static readonly eventNamespaceSeparator = ":";
38
- static formatTick(tick: number): number;
39
76
  /**
40
- * Attempts to parse number from string.
41
- * If fails,returns original string.
42
- * Used to make telemetry data typed (and support math operations, like comparison),
43
- * in places where we do expect numbers (like contentsize/duration property in http header)
77
+ * {@inheritDoc eventNamespaceSeparator}
44
78
  */
45
- static numberFromString(str: string | null | undefined): string | number | undefined;
79
+ static readonly eventNamespaceSeparator: ":";
46
80
  static sanitizePkgName(name: string): string;
47
81
  /**
48
82
  * Take an unknown error object and add the appropriate info from it to the event. Message and stack will be copied
@@ -51,94 +85,153 @@ export declare abstract class TelemetryLogger implements ITelemetryLogger {
51
85
  * @param error - Error to extract info from
52
86
  * @param fetchStack - Whether to fetch the current callstack if error.stack is undefined
53
87
  */
54
- static prepareErrorObject(event: ITelemetryBaseEvent, error: any, fetchStack: boolean): void;
88
+ static prepareErrorObject(event: ITelemetryBaseEvent, error: unknown, fetchStack: boolean): void;
55
89
  constructor(namespace?: string | undefined, properties?: ITelemetryLoggerPropertyBags | undefined);
56
90
  /**
57
91
  * Send an event with the logger
58
92
  *
59
93
  * @param event - the event to send
60
94
  */
61
- abstract send(event: ITelemetryBaseEvent): void;
95
+ abstract send(event: ITelemetryBaseEvent, logLevel?: LogLevel): void;
62
96
  /**
63
97
  * Send a telemetry event with the logger
64
98
  *
65
99
  * @param event - the event to send
66
100
  * @param error - optional error object to log
101
+ * @param logLevel - optional level of the log. It category of event is set as error,
102
+ * then the logLevel will be upgraded to be an error.
67
103
  */
68
- sendTelemetryEvent(event: ITelemetryGenericEvent, error?: any): void;
104
+ sendTelemetryEvent(event: ITelemetryGenericEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
69
105
  /**
70
106
  * Send a telemetry event with the logger
71
107
  *
72
108
  * @param event - the event to send
73
109
  * @param error - optional error object to log
110
+ * @param logLevel - optional level of the log.
74
111
  */
75
- protected sendTelemetryEventCore(event: ITelemetryGenericEvent & {
112
+ protected sendTelemetryEventCore(event: ITelemetryGenericEventExt & {
76
113
  category: TelemetryEventCategory;
77
- }, error?: any): void;
114
+ }, error?: unknown, logLevel?: LogLevel): void;
78
115
  /**
79
116
  * Send an error telemetry event with the logger
80
117
  *
81
118
  * @param event - the event to send
82
119
  * @param error - optional error object to log
83
120
  */
84
- sendErrorEvent(event: ITelemetryErrorEvent, error?: any): void;
121
+ sendErrorEvent(event: ITelemetryErrorEvent, error?: unknown): void;
85
122
  /**
86
123
  * Send a performance telemetry event with the logger
87
124
  *
88
125
  * @param event - Event to send
89
126
  * @param error - optional error object to log
127
+ * @param logLevel - optional level of the log. It category of event is set as error,
128
+ * then the logLevel will be upgraded to be an error.
90
129
  */
91
- sendPerformanceEvent(event: ITelemetryPerformanceEvent, error?: any): void;
130
+ sendPerformanceEvent(event: ITelemetryPerformanceEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
92
131
  protected prepareEvent(event: ITelemetryBaseEvent): ITelemetryBaseEvent;
132
+ private extendProperties;
93
133
  }
94
134
  /**
95
135
  * @deprecated 0.56, remove TaggedLoggerAdapter once its usage is removed from
96
136
  * container-runtime. Issue: #8191
97
137
  * TaggedLoggerAdapter class can add tag handling to your logger.
138
+ *
139
+ * @internal
98
140
  */
99
141
  export declare class TaggedLoggerAdapter implements ITelemetryBaseLogger {
100
142
  private readonly logger;
101
143
  constructor(logger: ITelemetryBaseLogger);
144
+ /**
145
+ * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseLogger.send}
146
+ */
102
147
  send(eventWithTagsMaybe: ITelemetryBaseEvent): void;
103
148
  }
149
+ /**
150
+ * Create a child logger based on the provided props object.
151
+ *
152
+ * @remarks
153
+ * Passing in no props object (i.e. undefined) will return a logger that is effectively a no-op.
154
+ *
155
+ * @param props - logger is the base logger the child will log to after it's processing, namespace will be prefixed to all event names, properties are default properties that will be applied events.
156
+ *
157
+ * @alpha
158
+ */
159
+ export declare function createChildLogger(props?: {
160
+ logger?: ITelemetryBaseLogger;
161
+ namespace?: string;
162
+ properties?: ITelemetryLoggerPropertyBags;
163
+ }): ITelemetryLoggerExt;
104
164
  /**
105
165
  * ChildLogger class contains various helper telemetry methods,
106
166
  * encoding in one place schemas for various types of Fluid telemetry events.
107
- * Creates sub-logger that appends properties to all events
167
+ * Creates sub-logger that appends properties to all events.
108
168
  */
109
169
  export declare class ChildLogger extends TelemetryLogger {
110
170
  protected readonly baseLogger: ITelemetryBaseLogger;
111
171
  /**
112
172
  * Create child logger
113
173
  * @param baseLogger - Base logger to use to output events. If undefined, proper child logger
114
- * is created, but it does not sends telemetry events anywhere.
174
+ * is created, but it does not send telemetry events anywhere.
115
175
  * @param namespace - Telemetry event name prefix to add to all events
116
176
  * @param properties - Base properties to add to all events
117
- * @param propertyGetters - Getters to add additional properties to all events
118
177
  */
119
178
  static create(baseLogger?: ITelemetryBaseLogger, namespace?: string, properties?: ITelemetryLoggerPropertyBags): TelemetryLogger;
120
179
  private constructor();
180
+ get minLogLevel(): LogLevel | undefined;
181
+ private shouldFilterOutEvent;
121
182
  /**
122
183
  * Send an event with the logger
123
184
  *
124
185
  * @param event - the event to send
125
186
  */
126
- send(event: ITelemetryBaseEvent): void;
187
+ send(event: ITelemetryBaseEvent, logLevel?: LogLevel): void;
127
188
  }
189
+ /**
190
+ * Input properties for {@link createMultiSinkLogger}.
191
+ *
192
+ * @internal
193
+ */
194
+ export interface MultiSinkLoggerProperties {
195
+ /**
196
+ * Will be prefixed to all event names.
197
+ */
198
+ namespace?: string;
199
+ /**
200
+ * Default properties that will be applied to all events flowing through this logger.
201
+ */
202
+ properties?: ITelemetryLoggerPropertyBags;
203
+ /**
204
+ * The base loggers that this logger will forward the logs to, after it processes them.
205
+ */
206
+ loggers?: (ITelemetryBaseLogger | undefined)[];
207
+ /**
208
+ * If true, the logger will attempt to copy the custom properties (if they are of a known type, i.e. one from this package) of all the base loggers passed to it, to apply them itself to logs that flow through.
209
+ */
210
+ tryInheritProperties?: true;
211
+ }
212
+ /**
213
+ * Create a logger which logs to multiple other loggers based on the provided props object.
214
+ *
215
+ * @internal
216
+ */
217
+ export declare function createMultiSinkLogger(props: MultiSinkLoggerProperties): ITelemetryLoggerExt;
128
218
  /**
129
219
  * Multi-sink logger
130
220
  * Takes multiple ITelemetryBaseLogger objects (sinks) and logs all events into each sink
131
- * Implements ITelemetryBaseLogger (through static create() method)
132
221
  */
133
222
  export declare class MultiSinkLogger extends TelemetryLogger {
134
223
  protected loggers: ITelemetryBaseLogger[];
224
+ private _minLogLevelOfAllLoggers;
135
225
  /**
136
226
  * Create multiple sink logger (i.e. logger that sends events to multiple sinks)
137
227
  * @param namespace - Telemetry event name prefix to add to all events
138
228
  * @param properties - Base properties to add to all events
139
- * @param propertyGetters - Getters to add additional properties to all events
229
+ * @param loggers - The list of loggers to use as sinks
230
+ * @param tryInheritProperties - Will attempted to copy those loggers properties to this loggers if they are of a known type e.g. one from this package
140
231
  */
141
- constructor(namespace?: string, properties?: ITelemetryLoggerPropertyBags);
232
+ constructor(namespace?: string, properties?: ITelemetryLoggerPropertyBags, loggers?: ITelemetryBaseLogger[], tryInheritProperties?: true);
233
+ get minLogLevel(): LogLevel;
234
+ private calculateMinLogLevel;
142
235
  /**
143
236
  * Add logger to send all events to
144
237
  * @param logger - Logger to add
@@ -152,10 +245,15 @@ export declare class MultiSinkLogger extends TelemetryLogger {
152
245
  send(event: ITelemetryBaseEvent): void;
153
246
  }
154
247
  /**
155
- * Describes what events PerformanceEvent should log
156
- * By default, all events are logged, but client can override this behavior
157
- * For example, there is rarely a need to record start event, as we really after
248
+ * Describes what events {@link PerformanceEvent} should log.
249
+ *
250
+ * @remarks
251
+ * By default, all events are logged, but the client can override this behavior.
252
+ *
253
+ * For example, there is rarely a need to record a start event, as we're really after
158
254
  * success / failure tracking, including duration (on success).
255
+ *
256
+ * @internal
159
257
  */
160
258
  export interface IPerformanceEventMarkers {
161
259
  start?: true;
@@ -163,42 +261,160 @@ export interface IPerformanceEventMarkers {
163
261
  cancel?: "generic" | "error";
164
262
  }
165
263
  /**
166
- * Helper class to log performance events
264
+ * Helper class to log performance events.
265
+ *
266
+ * @internal
167
267
  */
168
268
  export declare class PerformanceEvent {
169
269
  private readonly logger;
170
270
  private readonly markers;
171
- static start(logger: ITelemetryLogger, event: ITelemetryGenericEvent, markers?: IPerformanceEventMarkers): PerformanceEvent;
172
- static timedExec<T>(logger: ITelemetryLogger, event: ITelemetryGenericEvent, callback: (event: PerformanceEvent) => T, markers?: IPerformanceEventMarkers): T;
173
- static timedExecAsync<T>(logger: ITelemetryLogger, event: ITelemetryGenericEvent, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers): Promise<T>;
271
+ private readonly recordHeapSize;
272
+ private readonly emitLogs;
273
+ /**
274
+ * Creates an instance of {@link PerformanceEvent} and starts measurements
275
+ * @param logger - the logger to be used for publishing events
276
+ * @param event - the logging event details which will be published with the performance measurements
277
+ * @param markers - See {@link IPerformanceEventMarkers}
278
+ * @param recordHeapSize - whether or not to also record memory performance
279
+ * @param emitLogs - should this instance emit logs. If set to false, logs will not be emitted to the logger,
280
+ * but measurements will still be performed and any specified markers will be generated.
281
+ * @returns An instance of {@link PerformanceEvent}
282
+ */
283
+ static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean): PerformanceEvent;
284
+ /**
285
+ * Measure a synchronous task
286
+ * @param logger - the logger to be used for publishing events
287
+ * @param event - the logging event details which will be published with the performance measurements
288
+ * @param callback - the task to be executed and measured
289
+ * @param markers - See {@link IPerformanceEventMarkers}
290
+ * @param sampleThreshold - events with the same name and category will be sent to the logger
291
+ * only when we hit this many executions of the task. If unspecified, all events will be sent.
292
+ * @returns The results of the executed task
293
+ *
294
+ * @remarks Note that if the "same" event (category + eventName) would be emitted by different
295
+ * tasks (`callback`), `sampleThreshold` is still applied only based on the event's category + eventName,
296
+ * so executing either of the tasks will increase the internal counter and they
297
+ * effectively "share" the sampling rate for the event.
298
+ */
299
+ static timedExec<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => T, markers?: IPerformanceEventMarkers, sampleThreshold?: number): T;
300
+ /**
301
+ * Measure an asynchronous task
302
+ * @param logger - the logger to be used for publishing events
303
+ * @param event - the logging event details which will be published with the performance measurements
304
+ * @param callback - the task to be executed and measured
305
+ * @param markers - See {@link IPerformanceEventMarkers}
306
+ * @param recordHeapSize - whether or not to also record memory performance
307
+ * @param sampleThreshold - events with the same name and category will be sent to the logger
308
+ * only when we hit this many executions of the task. If unspecified, all events will be sent.
309
+ * @returns The results of the executed task
310
+ *
311
+ * @remarks Note that if the "same" event (category + eventName) would be emitted by different
312
+ * tasks (`callback`), `sampleThreshold` is still applied only based on the event's category + eventName,
313
+ * so executing either of the tasks will increase the internal counter and they
314
+ * effectively "share" the sampling rate for the event.
315
+ */
316
+ static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, sampleThreshold?: number): Promise<T>;
174
317
  get duration(): number;
175
318
  private event?;
176
319
  private readonly startTime;
177
320
  private startMark?;
178
- protected constructor(logger: ITelemetryLogger, event: ITelemetryGenericEvent, markers?: IPerformanceEventMarkers);
179
- reportProgress(props?: ITelemetryProperties, eventNameSuffix?: string): void;
321
+ private startMemoryCollection;
322
+ protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean);
323
+ reportProgress(props?: ITelemetryPropertiesExt, eventNameSuffix?: string): void;
180
324
  private autoEnd;
181
- end(props?: ITelemetryProperties): void;
325
+ end(props?: ITelemetryPropertiesExt): void;
182
326
  private performanceEndMark;
183
- cancel(props?: ITelemetryProperties, error?: any): void;
327
+ cancel(props?: ITelemetryPropertiesExt, error?: unknown): void;
184
328
  /**
185
329
  * Report the event, if it hasn't already been reported.
186
330
  */
187
- reportEvent(eventNameSuffix: string, props?: ITelemetryProperties, error?: any): void;
331
+ reportEvent(eventNameSuffix: string, props?: ITelemetryPropertiesExt, error?: unknown): void;
332
+ private static readonly eventHits;
333
+ private static shouldReport;
188
334
  }
189
335
  /**
190
- * Logger that is useful for UT
191
- * It can be used in places where logger instance is required, but events should be not send over.
336
+ * Null logger that no-ops for all telemetry events passed to it.
337
+ *
338
+ * @deprecated This will be removed in a future release.
339
+ * For internal use within the FluidFramework codebase, use {@link createChildLogger} with no arguments instead.
340
+ * For external consumers we recommend writing a trivial implementation of {@link @fluidframework/core-interfaces#ITelemetryBaseLogger}
341
+ * where the send() method does nothing and using that.
342
+ *
343
+ * @internal
192
344
  */
193
- export declare class TelemetryUTLogger implements ITelemetryLogger {
345
+ export declare class TelemetryNullLogger implements ITelemetryLoggerExt {
194
346
  send(event: ITelemetryBaseEvent): void;
195
- sendTelemetryEvent(event: ITelemetryGenericEvent, error?: any): void;
196
- sendErrorEvent(event: ITelemetryErrorEvent, error?: any): void;
197
- sendPerformanceEvent(event: ITelemetryPerformanceEvent, error?: any): void;
198
- logGenericError(eventName: string, error: any): void;
199
- logException(event: ITelemetryErrorEvent, exception: any): void;
200
- debugAssert(condition: boolean, event?: ITelemetryErrorEvent): void;
201
- shipAssert(condition: boolean, event?: ITelemetryErrorEvent): void;
202
- private reportError;
347
+ sendTelemetryEvent(event: ITelemetryGenericEvent, error?: unknown): void;
348
+ sendErrorEvent(event: ITelemetryErrorEvent, error?: unknown): void;
349
+ sendPerformanceEvent(event: ITelemetryPerformanceEvent, error?: unknown): void;
203
350
  }
351
+ /**
352
+ * Takes in value, and does one of 4 things.
353
+ * if value is of primitive type - returns the original value.
354
+ * If the value is a flat array or object - returns a stringified version of the array/object.
355
+ * If the value is an object of type Tagged<TelemetryEventPropertyType> - returns the object
356
+ * with its values recursively converted to base property Type.
357
+ * If none of these cases are reached - returns an error string
358
+ * @param x - value passed in to convert to a base property type
359
+ */
360
+ export declare function convertToBasePropertyType(x: TelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>): TelemetryEventPropertyType | Tagged<TelemetryEventPropertyType>;
361
+ /**
362
+ * Tags all given `values` with the same `tag`.
363
+ *
364
+ * @param tag - The tag with which all `values` will be annotated.
365
+ * @param values - The values to be tagged.
366
+ *
367
+ * @remarks
368
+ * It supports properties of type {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType},
369
+ * as well as callbacks that return that type.
370
+ *
371
+ * @example Sample usage
372
+ * ```typescript
373
+ * {
374
+ * // ...Other properties being added to a telemetry event
375
+ * ...tagData("someTag", {foo: 1, bar: 2}),
376
+ * // ...
377
+ * }
378
+ * ```
379
+ * This will result in `foo` and `bar` added to the event with their values tagged.
380
+ *
381
+ * @internal
382
+ */
383
+ export declare const tagData: <T extends TelemetryDataTag, V extends Record<string, import("@fluidframework/core-interfaces").TelemetryEventPropertyType | (() => TelemetryBaseEventPropertyType)>>(tag: T, values: V) => { [P in keyof V]: (V[P] extends () => TelemetryBaseEventPropertyType ? () => {
384
+ value: ReturnType<V[P]>;
385
+ tag: T;
386
+ } : {
387
+ value: Exclude<V[P], undefined>;
388
+ tag: T;
389
+ }) | (V[P] extends undefined ? undefined : never); };
390
+ /**
391
+ * Tags all provided `values` as {@link TelemetryDataTag.CodeArtifact}.
392
+ *
393
+ * @param values - The values to be tagged.
394
+ *
395
+ * @remarks
396
+ * It supports properties of type {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType},
397
+ * as well as callbacks that return that type.
398
+ *
399
+ * @example Sample usage
400
+ * ```typescript
401
+ * {
402
+ * // ...Other properties being added to a telemetry event
403
+ * ...tagCodeArtifacts("someTag", {foo: 1, bar: 2}),
404
+ * // ...
405
+ * }
406
+ * ```
407
+ * This will result in `foo` and `bar` added to the event with their values tagged as {@link TelemetryDataTag.CodeArtifact}.
408
+ *
409
+ * @see {@link tagData}
410
+ *
411
+ * @internal
412
+ */
413
+ export declare const tagCodeArtifacts: <T extends Record<string, import("@fluidframework/core-interfaces").TelemetryEventPropertyType | (() => TelemetryBaseEventPropertyType)>>(values: T) => { [P in keyof T]: (T[P] extends () => TelemetryBaseEventPropertyType ? () => {
414
+ value: ReturnType<T[P]>;
415
+ tag: TelemetryDataTag.CodeArtifact;
416
+ } : {
417
+ value: Exclude<T[P], undefined>;
418
+ tag: TelemetryDataTag.CodeArtifact;
419
+ }) | (T[P] extends undefined ? undefined : never); };
204
420
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}