@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
@@ -0,0 +1,264 @@
1
+ /// <reference types="node" />
2
+
3
+ import { EventEmitter } from 'events';
4
+ import { EventEmitterEventType } from '@fluid-internal/client-utils';
5
+ import { IConfigProviderBase } from '@fluidframework/core-interfaces';
6
+ import { IDisposable } from '@fluidframework/core-interfaces';
7
+ import { IErrorBase } from '@fluidframework/core-interfaces';
8
+ import { IEvent } from '@fluidframework/core-interfaces';
9
+ import { IGenericError } from '@fluidframework/core-interfaces';
10
+ import { ILoggingError } from '@fluidframework/core-interfaces';
11
+ import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
12
+ import { ITelemetryBaseEvent } from '@fluidframework/core-interfaces';
13
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
14
+ import { ITelemetryBaseProperties } from '@fluidframework/core-interfaces';
15
+ import { ITelemetryErrorEvent } from '@fluidframework/core-interfaces';
16
+ import { ITelemetryGenericEvent } from '@fluidframework/core-interfaces';
17
+ import { ITelemetryPerformanceEvent } from '@fluidframework/core-interfaces';
18
+ import { ITelemetryProperties } from '@fluidframework/core-interfaces';
19
+ import { IUsageError } from '@fluidframework/core-interfaces';
20
+ import { Lazy } from '@fluidframework/core-utils';
21
+ import { LogLevel } from '@fluidframework/core-interfaces';
22
+ import { Tagged } from '@fluidframework/core-interfaces';
23
+ import { TelemetryBaseEventPropertyType } from '@fluidframework/core-interfaces';
24
+ import { TelemetryEventPropertyType } from '@fluidframework/core-interfaces';
25
+ import { TypedEventEmitter } from '@fluid-internal/client-utils';
26
+
27
+ /* Excluded from this release type: connectedEventName */
28
+
29
+ /* Excluded from this release type: createChildLogger */
30
+
31
+ /* Excluded from this release type: createChildMonitoringContext */
32
+
33
+ /* Excluded from this release type: createMultiSinkLogger */
34
+
35
+ /* Excluded from this release type: createSampledLogger */
36
+
37
+ /* Excluded from this release type: DataCorruptionError */
38
+
39
+ /* Excluded from this release type: DataProcessingError */
40
+
41
+ /* Excluded from this release type: disconnectedEventName */
42
+
43
+ /**
44
+ * Event Emitter helper class
45
+ *
46
+ * @remarks
47
+ * Any exceptions thrown by listeners will be caught and raised through "error" event.
48
+ * Any exception thrown by "error" listeners will propagate to the caller.
49
+ * @privateRemarks
50
+ * This probably doesn't belong in this package, as it is not telemetry-specific, and is really only intended for internal fluid-framework use.
51
+ * We should consider moving it to the `core-utils` package.
52
+ * @public
53
+ */
54
+ export declare class EventEmitterWithErrorHandling<TEvent extends IEvent = IEvent> extends TypedEventEmitter<TEvent> {
55
+ private readonly errorHandler;
56
+ constructor(errorHandler: (eventName: EventEmitterEventType, error: any) => void);
57
+ emit(event: EventEmitterEventType, ...args: unknown[]): boolean;
58
+ }
59
+
60
+ /* Excluded from this release type: eventNamespaceSeparator */
61
+
62
+ /* Excluded from this release type: extractLogSafeErrorProperties */
63
+
64
+ /* Excluded from this release type: extractSafePropertiesFromMessage */
65
+
66
+ /* Excluded from this release type: formatTick */
67
+
68
+ /* Excluded from this release type: generateErrorWithStack */
69
+
70
+ /* Excluded from this release type: generateStack */
71
+
72
+ /* Excluded from this release type: GenericError */
73
+
74
+ /* Excluded from this release type: getCircularReplacer */
75
+
76
+ /* Excluded from this release type: hasErrorInstanceId */
77
+
78
+ /* Excluded from this release type: IConfigProvider */
79
+
80
+ /* Excluded from this release type: IEventSampler */
81
+
82
+ /* Excluded from this release type: IFluidErrorAnnotations */
83
+
84
+ /* Excluded from this release type: IFluidErrorBase */
85
+
86
+ /* Excluded from this release type: IGenericError */
87
+
88
+ /* Excluded from this release type: ILoggingError */
89
+
90
+ /* Excluded from this release type: IPerformanceEventMarkers */
91
+
92
+ /* Excluded from this release type: ISampledTelemetryLogger */
93
+
94
+ /* Excluded from this release type: isExternalError */
95
+
96
+ /* Excluded from this release type: isFluidError */
97
+
98
+ /* Excluded from this release type: isILoggingError */
99
+
100
+ /* Excluded from this release type: isTaggedTelemetryPropertyValue */
101
+
102
+ /* Excluded from this release type: isValidLegacyError */
103
+
104
+ /* Excluded from this release type: ITaggedTelemetryPropertyTypeExt */
105
+
106
+ /**
107
+ * Error telemetry event.
108
+ * @remarks Maps to category = "error"
109
+ * @public
110
+ */
111
+ export declare interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
112
+ eventName: string;
113
+ }
114
+
115
+ /* Excluded from this release type: ITelemetryEventExt */
116
+
117
+ /**
118
+ * Informational (non-error) telemetry event
119
+ * @remarks Maps to category = "generic"
120
+ * @public
121
+ */
122
+ export declare interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
123
+ eventName: string;
124
+ category?: TelemetryEventCategory;
125
+ }
126
+
127
+ /**
128
+ * An extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} which allows for more lenient event types.
129
+ *
130
+ * @remarks
131
+ * This interface is meant to be used internally within the Fluid Framework,
132
+ * and `ITelemetryBaseLogger` should be used when loggers are passed between layers.
133
+ * @public
134
+ */
135
+ export declare interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
136
+ /**
137
+ * Send information telemetry event
138
+ * @param event - Event to send
139
+ * @param error - optional error object to log
140
+ * @param logLevel - optional level of the log.
141
+ */
142
+ sendTelemetryEvent(event: ITelemetryGenericEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
143
+ /**
144
+ * Send error telemetry event
145
+ * @param event - Event to send
146
+ * @param error - optional error object to log
147
+ */
148
+ sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
149
+ /**
150
+ * Send performance telemetry event
151
+ * @param event - Event to send
152
+ * @param error - optional error object to log
153
+ * @param logLevel - optional level of the log.
154
+ */
155
+ sendPerformanceEvent(event: ITelemetryPerformanceEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
156
+ }
157
+
158
+ /* Excluded from this release type: ITelemetryLoggerPropertyBag */
159
+
160
+ /* Excluded from this release type: ITelemetryLoggerPropertyBags */
161
+
162
+ /**
163
+ * Performance telemetry event.
164
+ * @remarks Maps to category = "performance"
165
+ * @public
166
+ */
167
+ export declare interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {
168
+ duration?: number;
169
+ }
170
+
171
+ /**
172
+ * JSON-serializable properties, which will be logged with telemetry.
173
+ * @public
174
+ */
175
+ export declare interface ITelemetryPropertiesExt {
176
+ [index: string]: TelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>;
177
+ }
178
+
179
+ /* Excluded from this release type: IUsageError */
180
+
181
+ /* Excluded from this release type: Lazy */
182
+
183
+ /* Excluded from this release type: loggerToMonitoringContext */
184
+
185
+ /* Excluded from this release type: LoggingError */
186
+
187
+ /* Excluded from this release type: logIfFalse */
188
+
189
+ /* Excluded from this release type: mixinMonitoringContext */
190
+
191
+ /* Excluded from this release type: MockLogger */
192
+
193
+ /* Excluded from this release type: MonitoringContext */
194
+
195
+ /* Excluded from this release type: MultiSinkLoggerProperties */
196
+
197
+ /* Excluded from this release type: NORMALIZED_ERROR_TYPE */
198
+
199
+ /* Excluded from this release type: normalizeError */
200
+
201
+ /* Excluded from this release type: numberFromString */
202
+
203
+ /* Excluded from this release type: overwriteStack */
204
+
205
+ /* Excluded from this release type: PerformanceEvent */
206
+
207
+ /* Excluded from this release type: raiseConnectedEvent */
208
+
209
+ /* Excluded from this release type: safeRaiseEvent */
210
+
211
+ /* Excluded from this release type: SampledTelemetryHelper */
212
+
213
+ /* Excluded from this release type: sessionStorageConfigProvider */
214
+
215
+ /* Excluded from this release type: tagCodeArtifacts */
216
+
217
+ /* Excluded from this release type: tagData */
218
+
219
+ /* Excluded from this release type: TaggedLoggerAdapter */
220
+
221
+ /* Excluded from this release type: TelemetryBaseEventPropertyType */
222
+
223
+ /* Excluded from this release type: TelemetryDataTag */
224
+
225
+ /**
226
+ * The categories FF uses when instrumenting the code.
227
+ *
228
+ * generic - Informational log event
229
+ *
230
+ * error - Error log event, ideally 0 of these are logged during a session
231
+ *
232
+ * performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking
233
+ * @public
234
+ */
235
+ export declare type TelemetryEventCategory = "generic" | "error" | "performance";
236
+
237
+ /**
238
+ * Property types that can be logged.
239
+ *
240
+ * @remarks
241
+ * Includes extra types beyond {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType}, which must be
242
+ * converted before sending to a base logger.
243
+ * @public
244
+ */
245
+ export declare type TelemetryEventPropertyTypeExt = string | number | boolean | undefined | (string | number | boolean)[] | {
246
+ [key: string]: // Flat objects can have the same properties as the event itself
247
+ string | number | boolean | undefined | (string | number | boolean)[];
248
+ };
249
+
250
+ /* Excluded from this release type: TelemetryEventPropertyTypes */
251
+
252
+ /* Excluded from this release type: TelemetryNullLogger */
253
+
254
+ /* Excluded from this release type: ThresholdCounter */
255
+
256
+ /* Excluded from this release type: UsageError */
257
+
258
+ /* Excluded from this release type: validatePrecondition */
259
+
260
+ /* Excluded from this release type: wrapError */
261
+
262
+ /* Excluded from this release type: wrapErrorAndLog */
263
+
264
+ export { }