@fluidframework/telemetry-utils 1.4.0-115997 → 2.0.0-dev-rc.1.0.0.224419

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 (155) 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-lint.json +4 -0
  6. package/api-extractor.json +2 -2
  7. package/api-report/telemetry-utils.api.md +444 -0
  8. package/dist/config.d.ts +47 -16
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js +88 -38
  11. package/dist/config.js.map +1 -1
  12. package/dist/error.d.ts +112 -0
  13. package/dist/error.d.ts.map +1 -0
  14. package/dist/error.js +159 -0
  15. package/dist/error.js.map +1 -0
  16. package/dist/errorLogging.d.ts +86 -20
  17. package/dist/errorLogging.d.ts.map +1 -1
  18. package/dist/errorLogging.js +190 -60
  19. package/dist/errorLogging.js.map +1 -1
  20. package/dist/eventEmitterWithErrorHandling.d.ts +9 -3
  21. package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
  22. package/dist/eventEmitterWithErrorHandling.js +16 -3
  23. package/dist/eventEmitterWithErrorHandling.js.map +1 -1
  24. package/dist/events.d.ts +27 -3
  25. package/dist/events.d.ts.map +1 -1
  26. package/dist/events.js +26 -2
  27. package/dist/events.js.map +1 -1
  28. package/dist/fluidErrorBase.d.ts +57 -16
  29. package/dist/fluidErrorBase.d.ts.map +1 -1
  30. package/dist/fluidErrorBase.js +27 -14
  31. package/dist/fluidErrorBase.js.map +1 -1
  32. package/dist/index.d.ts +12 -11
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +55 -21
  35. package/dist/index.js.map +1 -1
  36. package/dist/logger.d.ts +267 -51
  37. package/dist/logger.d.ts.map +1 -1
  38. package/dist/logger.js +423 -132
  39. package/dist/logger.js.map +1 -1
  40. package/dist/mockLogger.d.ts +39 -12
  41. package/dist/mockLogger.d.ts.map +1 -1
  42. package/dist/mockLogger.js +105 -22
  43. package/dist/mockLogger.js.map +1 -1
  44. package/dist/sampledTelemetryHelper.d.ts +18 -12
  45. package/dist/sampledTelemetryHelper.d.ts.map +1 -1
  46. package/dist/sampledTelemetryHelper.js +28 -19
  47. package/dist/sampledTelemetryHelper.js.map +1 -1
  48. package/dist/telemetry-utils-alpha.d.ts +290 -0
  49. package/dist/telemetry-utils-beta.d.ts +264 -0
  50. package/dist/telemetry-utils-public.d.ts +264 -0
  51. package/dist/telemetry-utils-untrimmed.d.ts +1102 -0
  52. package/dist/telemetryTypes.d.ts +115 -0
  53. package/dist/telemetryTypes.d.ts.map +1 -0
  54. package/dist/telemetryTypes.js +7 -0
  55. package/dist/telemetryTypes.js.map +1 -0
  56. package/dist/thresholdCounter.d.ts +6 -5
  57. package/dist/thresholdCounter.d.ts.map +1 -1
  58. package/dist/thresholdCounter.js +4 -3
  59. package/dist/thresholdCounter.js.map +1 -1
  60. package/dist/tsdoc-metadata.json +11 -0
  61. package/dist/utils.d.ts +54 -3
  62. package/dist/utils.d.ts.map +1 -1
  63. package/dist/utils.js +58 -3
  64. package/dist/utils.js.map +1 -1
  65. package/lib/config.d.ts +47 -16
  66. package/lib/config.d.ts.map +1 -1
  67. package/lib/config.js +85 -36
  68. package/lib/config.js.map +1 -1
  69. package/lib/error.d.ts +112 -0
  70. package/lib/error.d.ts.map +1 -0
  71. package/lib/error.js +150 -0
  72. package/lib/error.js.map +1 -0
  73. package/lib/errorLogging.d.ts +86 -20
  74. package/lib/errorLogging.d.ts.map +1 -1
  75. package/lib/errorLogging.js +189 -60
  76. package/lib/errorLogging.js.map +1 -1
  77. package/lib/eventEmitterWithErrorHandling.d.ts +9 -3
  78. package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
  79. package/lib/eventEmitterWithErrorHandling.js +15 -2
  80. package/lib/eventEmitterWithErrorHandling.js.map +1 -1
  81. package/lib/events.d.ts +27 -3
  82. package/lib/events.d.ts.map +1 -1
  83. package/lib/events.js +26 -2
  84. package/lib/events.js.map +1 -1
  85. package/lib/fluidErrorBase.d.ts +57 -16
  86. package/lib/fluidErrorBase.d.ts.map +1 -1
  87. package/lib/fluidErrorBase.js +27 -14
  88. package/lib/fluidErrorBase.js.map +1 -1
  89. package/lib/index.d.ts +12 -11
  90. package/lib/index.d.ts.map +1 -1
  91. package/lib/index.js +11 -11
  92. package/lib/index.js.map +1 -1
  93. package/lib/logger.d.ts +267 -51
  94. package/lib/logger.d.ts.map +1 -1
  95. package/lib/logger.js +415 -131
  96. package/lib/logger.js.map +1 -1
  97. package/lib/mockLogger.d.ts +39 -12
  98. package/lib/mockLogger.d.ts.map +1 -1
  99. package/lib/mockLogger.js +106 -23
  100. package/lib/mockLogger.js.map +1 -1
  101. package/lib/sampledTelemetryHelper.d.ts +18 -12
  102. package/lib/sampledTelemetryHelper.d.ts.map +1 -1
  103. package/lib/sampledTelemetryHelper.js +26 -17
  104. package/lib/sampledTelemetryHelper.js.map +1 -1
  105. package/lib/telemetry-utils-alpha.d.ts +290 -0
  106. package/lib/telemetry-utils-beta.d.ts +264 -0
  107. package/lib/telemetry-utils-public.d.ts +264 -0
  108. package/lib/telemetry-utils-untrimmed.d.ts +1102 -0
  109. package/lib/telemetryTypes.d.ts +115 -0
  110. package/lib/telemetryTypes.d.ts.map +1 -0
  111. package/lib/telemetryTypes.js +6 -0
  112. package/lib/telemetryTypes.js.map +1 -0
  113. package/lib/thresholdCounter.d.ts +6 -5
  114. package/lib/thresholdCounter.d.ts.map +1 -1
  115. package/lib/thresholdCounter.js +4 -3
  116. package/lib/thresholdCounter.js.map +1 -1
  117. package/lib/utils.d.ts +54 -3
  118. package/lib/utils.d.ts.map +1 -1
  119. package/lib/utils.js +56 -2
  120. package/lib/utils.js.map +1 -1
  121. package/package.json +86 -57
  122. package/prettier.config.cjs +8 -0
  123. package/src/config.ts +254 -189
  124. package/src/error.ts +235 -0
  125. package/src/errorLogging.ts +440 -290
  126. package/src/eventEmitterWithErrorHandling.ts +26 -14
  127. package/src/events.ts +54 -25
  128. package/src/fluidErrorBase.ts +94 -46
  129. package/src/index.ts +76 -17
  130. package/src/logger.ts +966 -505
  131. package/src/mockLogger.ts +225 -83
  132. package/src/sampledTelemetryHelper.ts +136 -128
  133. package/src/telemetryTypes.ts +140 -0
  134. package/src/thresholdCounter.ts +38 -37
  135. package/src/utils.ts +108 -17
  136. package/tsconfig.esnext.json +6 -6
  137. package/tsconfig.json +9 -13
  138. package/dist/debugLogger.d.ts +0 -39
  139. package/dist/debugLogger.d.ts.map +0 -1
  140. package/dist/debugLogger.js +0 -101
  141. package/dist/debugLogger.js.map +0 -1
  142. package/dist/packageVersion.d.ts +0 -9
  143. package/dist/packageVersion.d.ts.map +0 -1
  144. package/dist/packageVersion.js +0 -12
  145. package/dist/packageVersion.js.map +0 -1
  146. package/lib/debugLogger.d.ts +0 -39
  147. package/lib/debugLogger.d.ts.map +0 -1
  148. package/lib/debugLogger.js +0 -97
  149. package/lib/debugLogger.js.map +0 -1
  150. package/lib/packageVersion.d.ts +0 -9
  151. package/lib/packageVersion.d.ts.map +0 -1
  152. package/lib/packageVersion.js +0 -9
  153. package/lib/packageVersion.js.map +0 -1
  154. package/src/debugLogger.ts +0 -126
  155. package/src/packageVersion.ts +0 -9
@@ -0,0 +1,444 @@
1
+ ## API Report File for "@fluidframework/telemetry-utils"
2
+
3
+ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
4
+
5
+ ```ts
6
+
7
+ /// <reference types="node" />
8
+
9
+ import { EventEmitter } from 'events';
10
+ import { EventEmitterEventType } from '@fluid-internal/client-utils';
11
+ import { IConfigProviderBase } from '@fluidframework/core-interfaces';
12
+ import { IDisposable } from '@fluidframework/core-interfaces';
13
+ import { IErrorBase } from '@fluidframework/core-interfaces';
14
+ import { IEvent } from '@fluidframework/core-interfaces';
15
+ import { IGenericError } from '@fluidframework/core-interfaces';
16
+ import { ILoggingError } from '@fluidframework/core-interfaces';
17
+ import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
18
+ import { ITelemetryBaseEvent } from '@fluidframework/core-interfaces';
19
+ import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
20
+ import { ITelemetryBaseProperties } from '@fluidframework/core-interfaces';
21
+ import { ITelemetryErrorEvent } from '@fluidframework/core-interfaces';
22
+ import { ITelemetryGenericEvent } from '@fluidframework/core-interfaces';
23
+ import { ITelemetryPerformanceEvent } from '@fluidframework/core-interfaces';
24
+ import { ITelemetryProperties } from '@fluidframework/core-interfaces';
25
+ import { IUsageError } from '@fluidframework/core-interfaces';
26
+ import { Lazy } from '@fluidframework/core-utils';
27
+ import { LogLevel } from '@fluidframework/core-interfaces';
28
+ import { Tagged } from '@fluidframework/core-interfaces';
29
+ import { TelemetryBaseEventPropertyType } from '@fluidframework/core-interfaces';
30
+ import { TelemetryEventPropertyType } from '@fluidframework/core-interfaces';
31
+ import { TypedEventEmitter } from '@fluid-internal/client-utils';
32
+
33
+ // @internal (undocumented)
34
+ export const connectedEventName = "connected";
35
+
36
+ // @alpha
37
+ export function createChildLogger(props?: {
38
+ logger?: ITelemetryBaseLogger;
39
+ namespace?: string;
40
+ properties?: ITelemetryLoggerPropertyBags;
41
+ }): ITelemetryLoggerExt;
42
+
43
+ // @internal
44
+ export function createChildMonitoringContext(props: Parameters<typeof createChildLogger>[0]): MonitoringContext;
45
+
46
+ // @internal
47
+ export function createMultiSinkLogger(props: MultiSinkLoggerProperties): ITelemetryLoggerExt;
48
+
49
+ // @internal
50
+ export function createSampledLogger(logger: ITelemetryLoggerExt, eventSampler?: IEventSampler): ISampledTelemetryLogger;
51
+
52
+ // @internal
53
+ export class DataCorruptionError extends LoggingError implements IErrorBase, IFluidErrorBase {
54
+ constructor(message: string, props: ITelemetryBaseProperties);
55
+ // (undocumented)
56
+ readonly canRetry = false;
57
+ // (undocumented)
58
+ readonly errorType: "dataCorruptionError";
59
+ }
60
+
61
+ // @internal
62
+ export class DataProcessingError extends LoggingError implements IErrorBase, IFluidErrorBase {
63
+ // (undocumented)
64
+ readonly canRetry = false;
65
+ static create(errorMessage: string, dataProcessingCodepath: string, sequencedMessage?: ISequencedDocumentMessage, props?: ITelemetryBaseProperties): IFluidErrorBase;
66
+ readonly errorType: "dataProcessingError";
67
+ static wrapIfUnrecognized(originalError: unknown, dataProcessingCodepath: string, messageLike?: Partial<Pick<ISequencedDocumentMessage, "clientId" | "sequenceNumber" | "clientSequenceNumber" | "referenceSequenceNumber" | "minimumSequenceNumber" | "timestamp">>): IFluidErrorBase;
68
+ }
69
+
70
+ // @internal (undocumented)
71
+ export const disconnectedEventName = "disconnected";
72
+
73
+ // @public
74
+ export class EventEmitterWithErrorHandling<TEvent extends IEvent = IEvent> extends TypedEventEmitter<TEvent> {
75
+ constructor(errorHandler: (eventName: EventEmitterEventType, error: any) => void);
76
+ // (undocumented)
77
+ emit(event: EventEmitterEventType, ...args: unknown[]): boolean;
78
+ }
79
+
80
+ // @internal
81
+ export const eventNamespaceSeparator: ":";
82
+
83
+ // @internal
84
+ export function extractLogSafeErrorProperties(error: unknown, sanitizeStack: boolean): {
85
+ message: string;
86
+ errorType?: string | undefined;
87
+ stack?: string | undefined;
88
+ };
89
+
90
+ // @internal
91
+ export const extractSafePropertiesFromMessage: (messageLike: Partial<Pick<ISequencedDocumentMessage, "clientId" | "sequenceNumber" | "clientSequenceNumber" | "referenceSequenceNumber" | "minimumSequenceNumber" | "timestamp">>) => {
92
+ messageClientId: string | undefined;
93
+ messageSequenceNumber: number | undefined;
94
+ messageClientSequenceNumber: number | undefined;
95
+ messageReferenceSequenceNumber: number | undefined;
96
+ messageMinimumSequenceNumber: number | undefined;
97
+ messageTimestamp: number | undefined;
98
+ };
99
+
100
+ // @internal (undocumented)
101
+ export function formatTick(tick: number): number;
102
+
103
+ // @internal
104
+ export function generateErrorWithStack(): Error;
105
+
106
+ // @internal
107
+ export function generateStack(): string | undefined;
108
+
109
+ // @internal
110
+ export class GenericError extends LoggingError implements IGenericError, IFluidErrorBase {
111
+ constructor(message: string, error?: any, props?: ITelemetryBaseProperties);
112
+ // (undocumented)
113
+ readonly error?: any;
114
+ // (undocumented)
115
+ readonly errorType: "genericError";
116
+ }
117
+
118
+ // @internal
119
+ export const getCircularReplacer: () => (key: string, value: unknown) => any;
120
+
121
+ // @internal
122
+ export const hasErrorInstanceId: (x: unknown) => x is {
123
+ errorInstanceId: string;
124
+ };
125
+
126
+ // @internal
127
+ export interface IConfigProvider extends IConfigProviderBase {
128
+ // (undocumented)
129
+ getBoolean(name: string): boolean | undefined;
130
+ // (undocumented)
131
+ getBooleanArray(name: string): boolean[] | undefined;
132
+ // (undocumented)
133
+ getNumber(name: string): number | undefined;
134
+ // (undocumented)
135
+ getNumberArray(name: string): number[] | undefined;
136
+ // (undocumented)
137
+ getString(name: string): string | undefined;
138
+ // (undocumented)
139
+ getStringArray(name: string): string[] | undefined;
140
+ }
141
+
142
+ // @internal
143
+ export interface IEventSampler {
144
+ // (undocumented)
145
+ sample: () => boolean | undefined;
146
+ }
147
+
148
+ // @internal
149
+ export interface IFluidErrorAnnotations {
150
+ props?: ITelemetryBaseProperties;
151
+ }
152
+
153
+ // @internal
154
+ export interface IFluidErrorBase extends Error {
155
+ addTelemetryProperties: (props: ITelemetryProperties) => void;
156
+ readonly errorInstanceId: string;
157
+ readonly errorType: string;
158
+ getTelemetryProperties(): ITelemetryProperties;
159
+ readonly message: string;
160
+ readonly name: string;
161
+ readonly stack?: string;
162
+ }
163
+
164
+ // @internal
165
+ export interface IPerformanceEventMarkers {
166
+ // (undocumented)
167
+ cancel?: "generic" | "error";
168
+ // (undocumented)
169
+ end?: true;
170
+ // (undocumented)
171
+ start?: true;
172
+ }
173
+
174
+ // @internal
175
+ export interface ISampledTelemetryLogger extends ITelemetryLoggerExt {
176
+ isSamplingDisabled: boolean;
177
+ }
178
+
179
+ // @internal
180
+ export function isExternalError(error: unknown): boolean;
181
+
182
+ // @internal
183
+ export function isFluidError(error: unknown): error is IFluidErrorBase;
184
+
185
+ // @internal
186
+ export const isILoggingError: (x: unknown) => x is ILoggingError;
187
+
188
+ // @internal
189
+ export function isTaggedTelemetryPropertyValue(x: Tagged<TelemetryEventPropertyTypeExt> | TelemetryEventPropertyTypeExt): x is Tagged<TelemetryEventPropertyTypeExt>;
190
+
191
+ // @internal
192
+ export function isValidLegacyError(error: unknown): error is Omit<IFluidErrorBase, "errorInstanceId">;
193
+
194
+ // @internal @deprecated
195
+ export interface ITaggedTelemetryPropertyTypeExt {
196
+ // (undocumented)
197
+ tag: string;
198
+ // (undocumented)
199
+ value: TelemetryEventPropertyTypeExt;
200
+ }
201
+
202
+ // @public
203
+ export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
204
+ // (undocumented)
205
+ eventName: string;
206
+ }
207
+
208
+ // @internal
209
+ export interface ITelemetryEventExt extends ITelemetryPropertiesExt {
210
+ // (undocumented)
211
+ category: string;
212
+ // (undocumented)
213
+ eventName: string;
214
+ }
215
+
216
+ // @public
217
+ export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
218
+ // (undocumented)
219
+ category?: TelemetryEventCategory;
220
+ // (undocumented)
221
+ eventName: string;
222
+ }
223
+
224
+ // @public
225
+ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
226
+ sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
227
+ sendPerformanceEvent(event: ITelemetryPerformanceEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
228
+ sendTelemetryEvent(event: ITelemetryGenericEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
229
+ }
230
+
231
+ // @alpha (undocumented)
232
+ export interface ITelemetryLoggerPropertyBag {
233
+ // (undocumented)
234
+ [index: string]: TelemetryEventPropertyTypes | (() => TelemetryEventPropertyTypes);
235
+ }
236
+
237
+ // @alpha (undocumented)
238
+ export interface ITelemetryLoggerPropertyBags {
239
+ // (undocumented)
240
+ all?: ITelemetryLoggerPropertyBag;
241
+ // (undocumented)
242
+ error?: ITelemetryLoggerPropertyBag;
243
+ }
244
+
245
+ // @public
246
+ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {
247
+ // (undocumented)
248
+ duration?: number;
249
+ }
250
+
251
+ // @public
252
+ export interface ITelemetryPropertiesExt {
253
+ // (undocumented)
254
+ [index: string]: TelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>;
255
+ }
256
+
257
+ // @internal
258
+ export function loggerToMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(logger: L): MonitoringContext<L>;
259
+
260
+ // @internal
261
+ export class LoggingError extends Error implements ILoggingError, Omit<IFluidErrorBase, "errorType"> {
262
+ constructor(message: string, props?: ITelemetryBaseProperties, omitPropsFromLogging?: Set<string>);
263
+ addTelemetryProperties(props: ITelemetryBaseProperties): void;
264
+ // (undocumented)
265
+ get errorInstanceId(): string;
266
+ getTelemetryProperties(): ITelemetryBaseProperties;
267
+ // (undocumented)
268
+ overwriteErrorInstanceId(id: string): void;
269
+ static typeCheck(object: unknown): object is LoggingError;
270
+ }
271
+
272
+ // @internal @deprecated
273
+ export function logIfFalse(condition: unknown, logger: ITelemetryBaseLogger, event: string | ITelemetryGenericEvent): condition is true;
274
+
275
+ // @internal
276
+ export function mixinMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(logger: L, ...configs: (IConfigProviderBase | undefined)[]): MonitoringContext<L>;
277
+
278
+ // @internal
279
+ export class MockLogger implements ITelemetryBaseLogger {
280
+ constructor(minLogLevel?: LogLevel | undefined);
281
+ assertMatch(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
282
+ assertMatchAny(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
283
+ assertMatchNone(disallowedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
284
+ assertMatchStrict(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
285
+ // (undocumented)
286
+ clear(): void;
287
+ // (undocumented)
288
+ events: ITelemetryBaseEvent[];
289
+ matchAnyEvent(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], inlineDetailsProp?: boolean): boolean;
290
+ matchEvents(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], inlineDetailsProp?: boolean): boolean;
291
+ matchEventStrict(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], inlineDetailsProp?: boolean): boolean;
292
+ // (undocumented)
293
+ readonly minLogLevel?: LogLevel | undefined;
294
+ // (undocumented)
295
+ send(event: ITelemetryBaseEvent): void;
296
+ // (undocumented)
297
+ toTelemetryLogger(): ITelemetryLoggerExt;
298
+ }
299
+
300
+ // @internal
301
+ export interface MonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt> {
302
+ // (undocumented)
303
+ config: IConfigProvider;
304
+ // (undocumented)
305
+ logger: L;
306
+ }
307
+
308
+ // @internal
309
+ export interface MultiSinkLoggerProperties {
310
+ loggers?: (ITelemetryBaseLogger | undefined)[];
311
+ namespace?: string;
312
+ properties?: ITelemetryLoggerPropertyBags;
313
+ tryInheritProperties?: true;
314
+ }
315
+
316
+ // @internal
317
+ export const NORMALIZED_ERROR_TYPE = "genericError";
318
+
319
+ // @internal
320
+ export function normalizeError(error: unknown, annotations?: IFluidErrorAnnotations): IFluidErrorBase;
321
+
322
+ // @internal
323
+ export function numberFromString(str: string | null | undefined): string | number | undefined;
324
+
325
+ // @internal
326
+ export function overwriteStack(error: IFluidErrorBase | LoggingError, stack: string): void;
327
+
328
+ // @internal
329
+ export class PerformanceEvent {
330
+ protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEvent, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean);
331
+ // (undocumented)
332
+ cancel(props?: ITelemetryProperties, error?: unknown): void;
333
+ // (undocumented)
334
+ get duration(): number;
335
+ // (undocumented)
336
+ end(props?: ITelemetryProperties): void;
337
+ reportEvent(eventNameSuffix: string, props?: ITelemetryProperties, error?: unknown): void;
338
+ // (undocumented)
339
+ reportProgress(props?: ITelemetryProperties, eventNameSuffix?: string): void;
340
+ static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEvent, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean): PerformanceEvent;
341
+ static timedExec<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEvent, callback: (event: PerformanceEvent) => T, markers?: IPerformanceEventMarkers, sampleThreshold?: number): T;
342
+ static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEvent, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, sampleThreshold?: number): Promise<T>;
343
+ }
344
+
345
+ // @internal
346
+ export function raiseConnectedEvent(logger: ITelemetryLoggerExt, emitter: EventEmitter, connected: boolean, clientId?: string, disconnectedReason?: string): void;
347
+
348
+ // @internal (undocumented)
349
+ export function safeRaiseEvent(emitter: EventEmitter, logger: ITelemetryLoggerExt, event: string, ...args: unknown[]): void;
350
+
351
+ // @internal
352
+ export class SampledTelemetryHelper implements IDisposable {
353
+ constructor(eventBase: ITelemetryGenericEvent, logger: ITelemetryLoggerExt, sampleThreshold: number, includeAggregateMetrics?: boolean, perBucketProperties?: Map<string, ITelemetryProperties>);
354
+ // (undocumented)
355
+ dispose(error?: Error | undefined): void;
356
+ // (undocumented)
357
+ disposed: boolean;
358
+ measure<T>(codeToMeasure: () => T, bucket?: string): T;
359
+ }
360
+
361
+ // @internal
362
+ export const sessionStorageConfigProvider: Lazy<IConfigProviderBase>;
363
+
364
+ // @internal
365
+ export const tagCodeArtifacts: <T extends Record<string, TelemetryEventPropertyType | (() => TelemetryBaseEventPropertyType)>>(values: T) => { [P in keyof T]: (T[P] extends () => TelemetryBaseEventPropertyType ? () => {
366
+ value: ReturnType<T[P]>;
367
+ tag: TelemetryDataTag.CodeArtifact;
368
+ } : {
369
+ value: Exclude<T[P], undefined>;
370
+ tag: TelemetryDataTag.CodeArtifact;
371
+ }) | (T[P] extends undefined ? undefined : never); };
372
+
373
+ // @internal
374
+ export const tagData: <T extends TelemetryDataTag, V extends Record<string, TelemetryEventPropertyType | (() => TelemetryBaseEventPropertyType)>>(tag: T, values: V) => { [P in keyof V]: (V[P] extends () => TelemetryBaseEventPropertyType ? () => {
375
+ value: ReturnType<V[P]>;
376
+ tag: T;
377
+ } : {
378
+ value: Exclude<V[P], undefined>;
379
+ tag: T;
380
+ }) | (V[P] extends undefined ? undefined : never); };
381
+
382
+ // @internal @deprecated (undocumented)
383
+ export class TaggedLoggerAdapter implements ITelemetryBaseLogger {
384
+ constructor(logger: ITelemetryBaseLogger);
385
+ // (undocumented)
386
+ send(eventWithTagsMaybe: ITelemetryBaseEvent): void;
387
+ }
388
+
389
+ // @internal
390
+ export enum TelemetryDataTag {
391
+ CodeArtifact = "CodeArtifact",
392
+ UserData = "UserData"
393
+ }
394
+
395
+ // @public
396
+ export type TelemetryEventCategory = "generic" | "error" | "performance";
397
+
398
+ // @public
399
+ export type TelemetryEventPropertyTypeExt = string | number | boolean | undefined | (string | number | boolean)[] | {
400
+ [key: string]: // Flat objects can have the same properties as the event itself
401
+ string | number | boolean | undefined | (string | number | boolean)[];
402
+ };
403
+
404
+ // @alpha (undocumented)
405
+ export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string];
406
+
407
+ // @internal @deprecated
408
+ export class TelemetryNullLogger implements ITelemetryLoggerExt {
409
+ // (undocumented)
410
+ send(event: ITelemetryBaseEvent): void;
411
+ // (undocumented)
412
+ sendErrorEvent(event: ITelemetryErrorEvent, error?: unknown): void;
413
+ // (undocumented)
414
+ sendPerformanceEvent(event: ITelemetryPerformanceEvent, error?: unknown): void;
415
+ // (undocumented)
416
+ sendTelemetryEvent(event: ITelemetryGenericEvent, error?: unknown): void;
417
+ }
418
+
419
+ // @internal
420
+ export class ThresholdCounter {
421
+ constructor(threshold: number, logger: ITelemetryLoggerExt, thresholdMultiple?: number);
422
+ send(eventName: string, value: number): void;
423
+ sendIfMultiple(eventName: string, value: number): void;
424
+ }
425
+
426
+ // @internal
427
+ export class UsageError extends LoggingError implements IUsageError, IFluidErrorBase {
428
+ constructor(message: string, props?: ITelemetryBaseProperties);
429
+ // (undocumented)
430
+ readonly errorType: "usageError";
431
+ }
432
+
433
+ // @internal
434
+ export function validatePrecondition(condition: boolean, message: string, props?: ITelemetryBaseProperties): asserts condition;
435
+
436
+ // @internal
437
+ export function wrapError<T extends LoggingError>(innerError: unknown, newErrorFn: (message: string) => T): T;
438
+
439
+ // @internal
440
+ export function wrapErrorAndLog<T extends LoggingError>(innerError: unknown, newErrorFn: (message: string) => T, logger: ITelemetryLoggerExt): T;
441
+
442
+ // (No @packageDocumentation comment for this package)
443
+
444
+ ```
package/dist/config.d.ts CHANGED
@@ -2,17 +2,14 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { ITelemetryBaseLogger, ITelemetryLogger } from "@fluidframework/common-definitions";
6
- import { Lazy } from "@fluidframework/common-utils";
7
- export declare type ConfigTypes = string | number | boolean | number[] | string[] | boolean[] | undefined;
5
+ import { ITelemetryBaseLogger, IConfigProviderBase, ConfigTypes } from "@fluidframework/core-interfaces";
6
+ import { Lazy } from "@fluidframework/core-utils";
7
+ import { createChildLogger } from "./logger";
8
+ import { ITelemetryLoggerExt } from "./telemetryTypes";
8
9
  /**
9
- * Base interface for providing configurations to enable/disable/control features
10
- */
11
- export interface IConfigProviderBase {
12
- getRawConfig(name: string): ConfigTypes;
13
- }
14
- /**
15
- * Explicitly typed interface for reading configurations
10
+ * Explicitly typed interface for reading configurations.
11
+ *
12
+ * @internal
16
13
  */
17
14
  export interface IConfigProvider extends IConfigProviderBase {
18
15
  getBoolean(name: string): boolean | undefined;
@@ -26,6 +23,8 @@ export interface IConfigProvider extends IConfigProviderBase {
26
23
  * Creates a base configuration provider based on `sessionStorage`
27
24
  *
28
25
  * @returns A lazy initialized base configuration provider with `sessionStorage` as the underlying config store
26
+ *
27
+ * @internal
29
28
  */
30
29
  export declare const sessionStorageConfigProvider: Lazy<IConfigProviderBase>;
31
30
  /**
@@ -40,9 +39,10 @@ export declare const inMemoryConfigProvider: (storage: Storage | undefined) => I
40
39
  * Implementation of {@link IConfigProvider} which contains nested {@link IConfigProviderBase} instances
41
40
  */
42
41
  export declare class CachedConfigProvider implements IConfigProvider {
42
+ private readonly logger?;
43
43
  private readonly configCache;
44
44
  private readonly orderedBaseProviders;
45
- constructor(...orderedBaseProviders: (IConfigProviderBase | undefined)[]);
45
+ constructor(logger?: ITelemetryBaseLogger | undefined, ...orderedBaseProviders: (IConfigProviderBase | undefined)[]);
46
46
  getBoolean(name: string): boolean | undefined;
47
47
  getNumber(name: string): number | undefined;
48
48
  getString(name: string): string | undefined;
@@ -53,13 +53,44 @@ export declare class CachedConfigProvider implements IConfigProvider {
53
53
  private getCacheEntry;
54
54
  }
55
55
  /**
56
- * A type containing both a telemetry logger and a configuration provider
56
+ * A type containing both a telemetry logger and a configuration provider.
57
+ *
58
+ * @internal
57
59
  */
58
- export interface MonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLogger> {
60
+ export interface MonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt> {
59
61
  config: IConfigProvider;
60
62
  logger: L;
61
63
  }
62
- export declare function loggerIsMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLogger>(obj: L): obj is L & MonitoringContext<L>;
63
- export declare function loggerToMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLogger>(logger: L): MonitoringContext<L>;
64
- export declare function mixinMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLogger>(logger: L, ...configs: (IConfigProviderBase | undefined)[]): MonitoringContext<L>;
64
+ /**
65
+ * Determines whether or not the provided object is a {@link MonitoringContext}.
66
+ * @remarks Can be used for type-narrowing.
67
+ *
68
+ * @internal
69
+ */
70
+ export declare function loggerIsMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(obj: L): obj is L & MonitoringContext<L>;
71
+ /**
72
+ * Creates a {@link MonitoringContext} from the provided logger, if it isn't already one.
73
+ *
74
+ * @internal
75
+ */
76
+ export declare function loggerToMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(logger: L): MonitoringContext<L>;
77
+ /**
78
+ * Creates a {@link MonitoringContext} from the provided logger.
79
+ *
80
+ * @remarks
81
+ * Assumes that the provided logger is not itself already a {@link MonitoringContext}, and will throw an error if it is.
82
+ * If you are unsure, use {@link loggerToMonitoringContext} instead.
83
+ *
84
+ * @throws If the provided logger is already a {@link MonitoringContext}.
85
+ *
86
+ * @internal
87
+ */
88
+ export declare function mixinMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(logger: L, ...configs: (IConfigProviderBase | undefined)[]): MonitoringContext<L>;
89
+ /**
90
+ * Creates a child logger with a {@link MonitoringContext}.
91
+ *
92
+ * @see {@link loggerToMonitoringContext}
93
+ * @internal
94
+ */
95
+ export declare function createChildMonitoringContext(props: Parameters<typeof createChildLogger>[0]): MonitoringContext;
65
96
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEpD,oBAAY,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;AAElG;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;CAC3C;AAED;;GAEG;AACF,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IACzD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC5C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC;IACrD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;CACrD;AACF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,2BAC4C,CAAC;AAMtF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,YACrB,OAAO,GAAG,SAAS,KAAG,mBAYnC,CAAC;AA4FF;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyC;IACrE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsC;gBAGvE,GAAI,oBAAoB,EAAE,CAAC,mBAAmB,GAAG,SAAS,CAAC,EAAE;IAoBjE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAG7C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG3C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG3C,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,SAAS;IAGpD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAGlD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAIlD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAIvC,OAAO,CAAC,aAAa;CAcxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAC9B,CAAC,SAAS,oBAAoB,GAAG,gBAAgB;IAEjD,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC;CACb;AAED,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,oBAAoB,GAAG,gBAAgB,EACvF,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAG3C;AAED,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,oBAAoB,GAAG,gBAAgB,EACvF,MAAM,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAKnC;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,oBAAoB,GAAG,gBAAgB,EACpF,MAAM,EAAE,CAAC,EAAE,GAAI,OAAO,EAAE,CAAC,mBAAmB,GAAG,SAAS,CAAC,EAAE,wBAgB9D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}