@fluidframework/telemetry-utils 2.0.0-rc.4.0.5 → 2.0.0-rc.5.0.0

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 (133) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/CHANGELOG.md +27 -0
  3. package/api-extractor/api-extractor-lint-bundle.json +5 -0
  4. package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
  5. package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
  6. package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
  7. package/api-extractor/api-extractor-lint-public.esm.json +5 -0
  8. package/api-extractor.json +1 -1
  9. package/api-report/telemetry-utils.alpha.api.md +107 -0
  10. package/api-report/telemetry-utils.beta.api.md +29 -0
  11. package/api-report/telemetry-utils.public.api.md +29 -0
  12. package/biome.jsonc +4 -0
  13. package/dist/config.d.ts +2 -2
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js.map +1 -1
  16. package/dist/error.d.ts +5 -5
  17. package/dist/error.d.ts.map +1 -1
  18. package/dist/error.js.map +1 -1
  19. package/dist/errorLogging.d.ts +2 -6
  20. package/dist/errorLogging.d.ts.map +1 -1
  21. package/dist/errorLogging.js +22 -29
  22. package/dist/errorLogging.js.map +1 -1
  23. package/dist/eventEmitterWithErrorHandling.d.ts +2 -2
  24. package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
  25. package/dist/eventEmitterWithErrorHandling.js.map +1 -1
  26. package/dist/events.js.map +1 -1
  27. package/dist/fluidErrorBase.d.ts +0 -6
  28. package/dist/fluidErrorBase.d.ts.map +1 -1
  29. package/dist/fluidErrorBase.js +1 -12
  30. package/dist/fluidErrorBase.js.map +1 -1
  31. package/dist/index.d.ts +8 -7
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +5 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/logger.d.ts +3 -5
  36. package/dist/logger.d.ts.map +1 -1
  37. package/dist/logger.js.map +1 -1
  38. package/dist/mathTools.d.ts +13 -0
  39. package/dist/mathTools.d.ts.map +1 -0
  40. package/dist/mathTools.js +20 -0
  41. package/dist/mathTools.js.map +1 -0
  42. package/dist/mockLogger.d.ts +99 -19
  43. package/dist/mockLogger.d.ts.map +1 -1
  44. package/dist/mockLogger.js +120 -33
  45. package/dist/mockLogger.js.map +1 -1
  46. package/dist/sampledTelemetryHelper.d.ts +6 -2
  47. package/dist/sampledTelemetryHelper.d.ts.map +1 -1
  48. package/dist/sampledTelemetryHelper.js +11 -3
  49. package/dist/sampledTelemetryHelper.js.map +1 -1
  50. package/dist/telemetryEventBatcher.d.ts +64 -0
  51. package/dist/telemetryEventBatcher.d.ts.map +1 -0
  52. package/dist/telemetryEventBatcher.js +86 -0
  53. package/dist/telemetryEventBatcher.js.map +1 -0
  54. package/dist/telemetryTypes.d.ts +32 -18
  55. package/dist/telemetryTypes.d.ts.map +1 -1
  56. package/dist/telemetryTypes.js.map +1 -1
  57. package/dist/thresholdCounter.d.ts +1 -1
  58. package/dist/thresholdCounter.d.ts.map +1 -1
  59. package/dist/thresholdCounter.js.map +1 -1
  60. package/dist/utils.d.ts +14 -2
  61. package/dist/utils.d.ts.map +1 -1
  62. package/dist/utils.js +30 -2
  63. package/dist/utils.js.map +1 -1
  64. package/lib/config.d.ts +2 -2
  65. package/lib/config.d.ts.map +1 -1
  66. package/lib/config.js.map +1 -1
  67. package/lib/error.d.ts +5 -5
  68. package/lib/error.d.ts.map +1 -1
  69. package/lib/error.js.map +1 -1
  70. package/lib/errorLogging.d.ts +2 -6
  71. package/lib/errorLogging.d.ts.map +1 -1
  72. package/lib/errorLogging.js +23 -30
  73. package/lib/errorLogging.js.map +1 -1
  74. package/lib/eventEmitterWithErrorHandling.d.ts +2 -2
  75. package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
  76. package/lib/eventEmitterWithErrorHandling.js.map +1 -1
  77. package/lib/events.js.map +1 -1
  78. package/lib/fluidErrorBase.d.ts +0 -6
  79. package/lib/fluidErrorBase.d.ts.map +1 -1
  80. package/lib/fluidErrorBase.js +0 -10
  81. package/lib/fluidErrorBase.js.map +1 -1
  82. package/lib/index.d.ts +8 -7
  83. package/lib/index.d.ts.map +1 -1
  84. package/lib/index.js +4 -3
  85. package/lib/index.js.map +1 -1
  86. package/lib/logger.d.ts +3 -5
  87. package/lib/logger.d.ts.map +1 -1
  88. package/lib/logger.js.map +1 -1
  89. package/lib/mathTools.d.ts +13 -0
  90. package/lib/mathTools.d.ts.map +1 -0
  91. package/lib/mathTools.js +16 -0
  92. package/lib/mathTools.js.map +1 -0
  93. package/lib/mockLogger.d.ts +99 -19
  94. package/lib/mockLogger.d.ts.map +1 -1
  95. package/lib/mockLogger.js +118 -32
  96. package/lib/mockLogger.js.map +1 -1
  97. package/lib/sampledTelemetryHelper.d.ts +6 -2
  98. package/lib/sampledTelemetryHelper.d.ts.map +1 -1
  99. package/lib/sampledTelemetryHelper.js +11 -3
  100. package/lib/sampledTelemetryHelper.js.map +1 -1
  101. package/lib/telemetryEventBatcher.d.ts +64 -0
  102. package/lib/telemetryEventBatcher.d.ts.map +1 -0
  103. package/lib/telemetryEventBatcher.js +82 -0
  104. package/lib/telemetryEventBatcher.js.map +1 -0
  105. package/lib/telemetryTypes.d.ts +32 -18
  106. package/lib/telemetryTypes.d.ts.map +1 -1
  107. package/lib/telemetryTypes.js.map +1 -1
  108. package/lib/thresholdCounter.d.ts +1 -1
  109. package/lib/thresholdCounter.d.ts.map +1 -1
  110. package/lib/thresholdCounter.js.map +1 -1
  111. package/lib/tsdoc-metadata.json +1 -1
  112. package/lib/utils.d.ts +14 -2
  113. package/lib/utils.d.ts.map +1 -1
  114. package/lib/utils.js +28 -1
  115. package/lib/utils.js.map +1 -1
  116. package/package.json +30 -16
  117. package/src/config.ts +16 -16
  118. package/src/error.ts +13 -13
  119. package/src/errorLogging.ts +32 -46
  120. package/src/eventEmitterWithErrorHandling.ts +3 -3
  121. package/src/fluidErrorBase.ts +0 -15
  122. package/src/index.ts +17 -16
  123. package/src/logger.ts +21 -21
  124. package/src/mathTools.ts +16 -0
  125. package/src/mockLogger.ts +165 -35
  126. package/src/sampledTelemetryHelper.ts +15 -5
  127. package/src/telemetryEventBatcher.ts +103 -0
  128. package/src/telemetryTypes.ts +38 -19
  129. package/src/thresholdCounter.ts +1 -1
  130. package/src/utils.ts +31 -2
  131. package/tsconfig.json +2 -0
  132. package/tsdoc.json +4 -0
  133. package/api-report/telemetry-utils.api.md +0 -425
package/src/utils.ts CHANGED
@@ -3,10 +3,10 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryBaseEvent } from "@fluidframework/core-interfaces";
6
+ import type { ITelemetryBaseEvent } from "@fluidframework/core-interfaces";
7
7
 
8
8
  import { loggerToMonitoringContext } from "./config.js";
9
- import { ITelemetryGenericEventExt, ITelemetryLoggerExt } from "./telemetryTypes.js";
9
+ import type { ITelemetryGenericEventExt, ITelemetryLoggerExt } from "./telemetryTypes.js";
10
10
 
11
11
  /**
12
12
  * An object that contains a callback used in conjunction with the {@link createSampledLogger} utility function to provide custom logic for sampling events.
@@ -56,6 +56,7 @@ export interface ISampledTelemetryLogger extends ITelemetryLoggerExt {
56
56
  export function createSampledLogger(
57
57
  logger: ITelemetryLoggerExt,
58
58
  eventSampler?: IEventSampler,
59
+ skipLoggingWhenSamplingIsDisabled?: boolean,
59
60
  ): ISampledTelemetryLogger {
60
61
  const monitoringContext = loggerToMonitoringContext(logger);
61
62
  const isSamplingDisabled =
@@ -66,22 +67,35 @@ export function createSampledLogger(
66
67
  // The sampler uses the following logic for sending events:
67
68
  // 1. If isSamplingDisabled is true, then this means events should be unsampled. Therefore we send the event without any checks.
68
69
  // 2. If isSamplingDisabled is false, then event should be sampled using the event sampler, if the sampler is not defined just send all events, other use the eventSampler.sample() method.
70
+ // 3. If skipLoggingWhenSamplingIsDisabled is true, then no event is sent.
69
71
  if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {
72
+ if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {
73
+ return;
74
+ }
70
75
  logger.send(event);
71
76
  }
72
77
  },
73
78
  sendTelemetryEvent: (event: ITelemetryGenericEventExt): void => {
74
79
  if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {
80
+ if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {
81
+ return;
82
+ }
75
83
  logger.sendTelemetryEvent(event);
76
84
  }
77
85
  },
78
86
  sendErrorEvent: (event: ITelemetryGenericEventExt): void => {
79
87
  if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {
88
+ if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {
89
+ return;
90
+ }
80
91
  logger.sendErrorEvent(event);
81
92
  }
82
93
  },
83
94
  sendPerformanceEvent: (event: ITelemetryGenericEventExt): void => {
84
95
  if (isSamplingDisabled || eventSampler === undefined || eventSampler.sample()) {
96
+ if (isSamplingDisabled && skipLoggingWhenSamplingIsDisabled) {
97
+ return;
98
+ }
85
99
  logger.sendPerformanceEvent(event);
86
100
  }
87
101
  },
@@ -90,3 +104,18 @@ export function createSampledLogger(
90
104
 
91
105
  return sampledLogger;
92
106
  }
107
+
108
+ /**
109
+ * Runs the specified function and returns an object with the time it took to run as well as any output from it.
110
+ * @remarks Useful in conjunction with {@link TelemetryEventBatcher}.
111
+ *
112
+ * @param codeToMeasure - The code to be executed and measured.
113
+ * @returns The total duration of the code execution and whatever the passed-in code block returns.
114
+ * @internal
115
+ */
116
+ export function measure<T>(codeToMeasure: () => T): { duration: number; output: T } {
117
+ const start = performance.now();
118
+ const output = codeToMeasure();
119
+ const duration = performance.now() - start;
120
+ return { duration, output };
121
+ }
package/tsconfig.json CHANGED
@@ -4,6 +4,8 @@
4
4
  "compilerOptions": {
5
5
  "rootDir": "./src",
6
6
  "outDir": "./lib",
7
+ "exactOptionalPropertyTypes": false,
8
+ "noUncheckedIndexedAccess": false,
7
9
  },
8
10
  "include": ["src/**/*"],
9
11
  }
package/tsdoc.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
3
+ "extends": ["../../../common/build/build-common/tsdoc-base.json"]
4
+ }
@@ -1,425 +0,0 @@
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
- import { ConfigTypes } from '@fluidframework/core-interfaces';
8
- import type { EventEmitter } from '@fluid-internal/client-utils';
9
- import { EventEmitterEventType } from '@fluid-internal/client-utils';
10
- import { IConfigProviderBase } from '@fluidframework/core-interfaces';
11
- import type { IDisposable } from '@fluidframework/core-interfaces';
12
- import { IErrorBase } from '@fluidframework/core-interfaces';
13
- import { IEvent } from '@fluidframework/core-interfaces';
14
- import { IGenericError } from '@fluidframework/core-interfaces/internal';
15
- import type { ILoggingError } from '@fluidframework/core-interfaces/internal';
16
- import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
17
- import { ITelemetryBaseEvent } from '@fluidframework/core-interfaces';
18
- import { ITelemetryBaseLogger } from '@fluidframework/core-interfaces';
19
- import { ITelemetryBaseProperties } from '@fluidframework/core-interfaces';
20
- import { IUsageError } from '@fluidframework/core-interfaces/internal';
21
- import { Lazy } from '@fluidframework/core-utils/internal';
22
- import { LogLevel } from '@fluidframework/core-interfaces';
23
- import { Tagged } from '@fluidframework/core-interfaces';
24
- import { TelemetryBaseEventPropertyType } from '@fluidframework/core-interfaces';
25
- import { TypedEventEmitter } from '@fluid-internal/client-utils';
26
-
27
- // @internal (undocumented)
28
- export const connectedEventName = "connected";
29
-
30
- // @alpha
31
- export function createChildLogger(props?: {
32
- logger?: ITelemetryBaseLogger;
33
- namespace?: string;
34
- properties?: ITelemetryLoggerPropertyBags;
35
- }): ITelemetryLoggerExt;
36
-
37
- // @internal
38
- export function createChildMonitoringContext(props: Parameters<typeof createChildLogger>[0]): MonitoringContext;
39
-
40
- // @internal
41
- export function createMultiSinkLogger(props: MultiSinkLoggerProperties): ITelemetryLoggerExt;
42
-
43
- // @internal
44
- export function createSampledLogger(logger: ITelemetryLoggerExt, eventSampler?: IEventSampler): ISampledTelemetryLogger;
45
-
46
- // @internal
47
- export class DataCorruptionError extends LoggingError implements IErrorBase, IFluidErrorBase {
48
- constructor(message: string, props: ITelemetryBaseProperties);
49
- // (undocumented)
50
- readonly canRetry = false;
51
- // (undocumented)
52
- readonly errorType: "dataCorruptionError";
53
- }
54
-
55
- // @internal
56
- export class DataProcessingError extends LoggingError implements IErrorBase, IFluidErrorBase {
57
- // (undocumented)
58
- readonly canRetry = false;
59
- static create(errorMessage: string, dataProcessingCodepath: string, sequencedMessage?: ISequencedDocumentMessage, props?: ITelemetryPropertiesExt): IFluidErrorBase;
60
- readonly errorType: "dataProcessingError";
61
- static wrapIfUnrecognized(originalError: unknown, dataProcessingCodepath: string, messageLike?: Partial<Pick<ISequencedDocumentMessage, "clientId" | "sequenceNumber" | "clientSequenceNumber" | "referenceSequenceNumber" | "minimumSequenceNumber" | "timestamp">>): IFluidErrorBase;
62
- }
63
-
64
- // @internal (undocumented)
65
- export const disconnectedEventName = "disconnected";
66
-
67
- // @alpha
68
- export class EventEmitterWithErrorHandling<TEvent extends IEvent = IEvent> extends TypedEventEmitter<TEvent> {
69
- constructor(errorHandler: (eventName: EventEmitterEventType, error: any) => void);
70
- // (undocumented)
71
- emit(event: EventEmitterEventType, ...args: unknown[]): boolean;
72
- }
73
-
74
- // @internal
75
- export const eventNamespaceSeparator: ":";
76
-
77
- // @internal
78
- export function extractLogSafeErrorProperties(error: unknown, sanitizeStack: boolean): {
79
- message: string;
80
- errorType?: string | undefined;
81
- stack?: string | undefined;
82
- };
83
-
84
- // @internal
85
- export const extractSafePropertiesFromMessage: (messageLike: Partial<Pick<ISequencedDocumentMessage, "clientId" | "sequenceNumber" | "clientSequenceNumber" | "referenceSequenceNumber" | "minimumSequenceNumber" | "timestamp">>) => {
86
- messageClientId: string | undefined;
87
- messageSequenceNumber: number | undefined;
88
- messageClientSequenceNumber: number | undefined;
89
- messageReferenceSequenceNumber: number | undefined;
90
- messageMinimumSequenceNumber: number | undefined;
91
- messageTimestamp: number | undefined;
92
- };
93
-
94
- // @internal (undocumented)
95
- export function formatTick(tick: number): number;
96
-
97
- // @internal
98
- export function generateErrorWithStack(): Error;
99
-
100
- // @internal
101
- export function generateStack(): string | undefined;
102
-
103
- // @internal
104
- export class GenericError extends LoggingError implements IGenericError, IFluidErrorBase {
105
- constructor(message: string, error?: any, props?: ITelemetryBaseProperties);
106
- // (undocumented)
107
- readonly error?: any;
108
- // (undocumented)
109
- readonly errorType: "genericError";
110
- }
111
-
112
- // @internal
113
- export const getCircularReplacer: () => (key: string, value: unknown) => any;
114
-
115
- // @internal
116
- export const hasErrorInstanceId: (x: unknown) => x is {
117
- errorInstanceId: string;
118
- };
119
-
120
- // @internal
121
- export interface IConfigProvider extends IConfigProviderBase {
122
- // (undocumented)
123
- getBoolean(name: string): boolean | undefined;
124
- // (undocumented)
125
- getBooleanArray(name: string): boolean[] | undefined;
126
- // (undocumented)
127
- getNumber(name: string): number | undefined;
128
- // (undocumented)
129
- getNumberArray(name: string): number[] | undefined;
130
- // (undocumented)
131
- getString(name: string): string | undefined;
132
- // (undocumented)
133
- getStringArray(name: string): string[] | undefined;
134
- }
135
-
136
- // @internal
137
- export interface IEventSampler {
138
- // (undocumented)
139
- sample: () => boolean | undefined;
140
- }
141
-
142
- // @internal
143
- export interface IFluidErrorAnnotations {
144
- props?: ITelemetryBaseProperties;
145
- }
146
-
147
- // @internal
148
- export interface IFluidErrorBase extends Error {
149
- addTelemetryProperties: (props: ITelemetryPropertiesExt) => void;
150
- readonly errorInstanceId: string;
151
- readonly errorType: string;
152
- getTelemetryProperties(): ITelemetryBaseProperties;
153
- readonly message: string;
154
- readonly name: string;
155
- readonly stack?: string;
156
- }
157
-
158
- // @internal
159
- export interface IPerformanceEventMarkers {
160
- // (undocumented)
161
- cancel?: "generic" | "error";
162
- // (undocumented)
163
- end?: true;
164
- // (undocumented)
165
- start?: true;
166
- }
167
-
168
- // @internal
169
- export interface ISampledTelemetryLogger extends ITelemetryLoggerExt {
170
- isSamplingDisabled: boolean;
171
- }
172
-
173
- // @internal
174
- export function isExternalError(error: unknown): boolean;
175
-
176
- // @internal
177
- export function isFluidError(error: unknown): error is IFluidErrorBase;
178
-
179
- // @internal
180
- export const isILoggingError: (x: unknown) => x is ILoggingError;
181
-
182
- // @internal
183
- export function isTaggedTelemetryPropertyValue(x: Tagged<TelemetryEventPropertyTypeExt> | TelemetryEventPropertyTypeExt): x is Tagged<TelemetryEventPropertyTypeExt>;
184
-
185
- // @internal
186
- export function isValidLegacyError(error: unknown): error is Omit<IFluidErrorBase, "errorInstanceId">;
187
-
188
- // @internal @deprecated
189
- export interface ITaggedTelemetryPropertyTypeExt {
190
- // (undocumented)
191
- tag: string;
192
- // (undocumented)
193
- value: TelemetryEventPropertyTypeExt;
194
- }
195
-
196
- // @alpha
197
- export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
198
- // (undocumented)
199
- eventName: string;
200
- }
201
-
202
- // @internal
203
- export interface ITelemetryEventExt extends ITelemetryPropertiesExt {
204
- // (undocumented)
205
- category: string;
206
- // (undocumented)
207
- eventName: string;
208
- }
209
-
210
- // @alpha
211
- export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
212
- // (undocumented)
213
- category?: TelemetryEventCategory;
214
- // (undocumented)
215
- eventName: string;
216
- }
217
-
218
- // @alpha
219
- export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
220
- sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
221
- sendPerformanceEvent(event: ITelemetryPerformanceEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
222
- sendTelemetryEvent(event: ITelemetryGenericEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.default): void;
223
- }
224
-
225
- // @alpha (undocumented)
226
- export interface ITelemetryLoggerPropertyBag {
227
- // (undocumented)
228
- [index: string]: TelemetryEventPropertyTypes | (() => TelemetryEventPropertyTypes);
229
- }
230
-
231
- // @alpha (undocumented)
232
- export interface ITelemetryLoggerPropertyBags {
233
- // (undocumented)
234
- all?: ITelemetryLoggerPropertyBag;
235
- // (undocumented)
236
- error?: ITelemetryLoggerPropertyBag;
237
- }
238
-
239
- // @alpha
240
- export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {
241
- // (undocumented)
242
- duration?: number;
243
- }
244
-
245
- // @alpha
246
- export interface ITelemetryPropertiesExt {
247
- // (undocumented)
248
- [index: string]: TelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>;
249
- }
250
-
251
- // @internal
252
- export function loggerToMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(logger: L): MonitoringContext<L>;
253
-
254
- // @internal
255
- export class LoggingError extends Error implements ILoggingError, Omit<IFluidErrorBase, "errorType"> {
256
- constructor(message: string, props?: ITelemetryBaseProperties, omitPropsFromLogging?: Set<string>);
257
- addTelemetryProperties(props: ITelemetryPropertiesExt): void;
258
- // (undocumented)
259
- get errorInstanceId(): string;
260
- getTelemetryProperties(): ITelemetryBaseProperties;
261
- // (undocumented)
262
- overwriteErrorInstanceId(id: string): void;
263
- static typeCheck(object: unknown): object is LoggingError;
264
- }
265
-
266
- // @internal
267
- export function mixinMonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt>(logger: L, ...configs: (IConfigProviderBase | undefined)[]): MonitoringContext<L>;
268
-
269
- // @alpha
270
- export class MockLogger implements ITelemetryBaseLogger {
271
- constructor(minLogLevel?: LogLevel | undefined);
272
- assertMatch(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
273
- assertMatchAny(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
274
- assertMatchNone(disallowedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
275
- assertMatchStrict(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], message?: string, inlineDetailsProp?: boolean): void;
276
- // (undocumented)
277
- clear(): void;
278
- // (undocumented)
279
- events: ITelemetryBaseEvent[];
280
- matchAnyEvent(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], inlineDetailsProp?: boolean): boolean;
281
- matchEvents(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], inlineDetailsProp?: boolean): boolean;
282
- matchEventStrict(expectedEvents: Omit<ITelemetryBaseEvent, "category">[], inlineDetailsProp?: boolean): boolean;
283
- // (undocumented)
284
- readonly minLogLevel?: LogLevel | undefined;
285
- // (undocumented)
286
- send(event: ITelemetryBaseEvent): void;
287
- // (undocumented)
288
- toTelemetryLogger(): ITelemetryLoggerExt;
289
- }
290
-
291
- // @internal
292
- export interface MonitoringContext<L extends ITelemetryBaseLogger = ITelemetryLoggerExt> {
293
- // (undocumented)
294
- config: IConfigProvider;
295
- // (undocumented)
296
- logger: L;
297
- }
298
-
299
- // @internal
300
- export interface MultiSinkLoggerProperties {
301
- loggers?: (ITelemetryBaseLogger | undefined)[];
302
- namespace?: string;
303
- properties?: ITelemetryLoggerPropertyBags;
304
- tryInheritProperties?: true;
305
- }
306
-
307
- // @internal
308
- export const NORMALIZED_ERROR_TYPE = "genericError";
309
-
310
- // @internal
311
- export function normalizeError(error: unknown, annotations?: IFluidErrorAnnotations): IFluidErrorBase;
312
-
313
- // @internal
314
- export function numberFromString(str: string | null | undefined): string | number | undefined;
315
-
316
- // @internal
317
- export function overwriteStack(error: IFluidErrorBase | LoggingError, stack: string): void;
318
-
319
- // @internal
320
- export class PerformanceEvent {
321
- protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean);
322
- // (undocumented)
323
- cancel(props?: ITelemetryPropertiesExt, error?: unknown): void;
324
- // (undocumented)
325
- get duration(): number;
326
- // (undocumented)
327
- end(props?: ITelemetryPropertiesExt): void;
328
- reportEvent(eventNameSuffix: string, props?: ITelemetryPropertiesExt, error?: unknown): void;
329
- // (undocumented)
330
- reportProgress(props?: ITelemetryPropertiesExt, eventNameSuffix?: string): void;
331
- static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean): PerformanceEvent;
332
- static timedExec<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => T, markers?: IPerformanceEventMarkers, sampleThreshold?: number): T;
333
- static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, sampleThreshold?: number): Promise<T>;
334
- }
335
-
336
- // @internal
337
- export function raiseConnectedEvent(logger: ITelemetryLoggerExt, emitter: EventEmitter, connected: boolean, clientId?: string, disconnectedReason?: string): void;
338
-
339
- // @internal (undocumented)
340
- export function safeRaiseEvent(emitter: EventEmitter, logger: ITelemetryLoggerExt, event: string, ...args: unknown[]): void;
341
-
342
- // @internal
343
- export class SampledTelemetryHelper implements IDisposable {
344
- constructor(eventBase: ITelemetryGenericEventExt, logger: ITelemetryLoggerExt, sampleThreshold: number, includeAggregateMetrics?: boolean, perBucketProperties?: Map<string, ITelemetryBaseProperties>);
345
- // (undocumented)
346
- dispose(error?: Error | undefined): void;
347
- // (undocumented)
348
- disposed: boolean;
349
- measure<T>(codeToMeasure: () => T, bucket?: string): T;
350
- }
351
-
352
- // @internal
353
- export const sessionStorageConfigProvider: Lazy<IConfigProviderBase>;
354
-
355
- // @internal
356
- export const tagCodeArtifacts: <T extends Record<string, TelemetryBaseEventPropertyType | (() => TelemetryBaseEventPropertyType)>>(values: T) => { [P in keyof T]: (T[P] extends () => TelemetryBaseEventPropertyType ? () => {
357
- value: ReturnType<T[P]>;
358
- tag: TelemetryDataTag.CodeArtifact;
359
- } : {
360
- value: Exclude<T[P], undefined>;
361
- tag: TelemetryDataTag.CodeArtifact;
362
- }) | (T[P] extends undefined ? undefined : never); };
363
-
364
- // @internal
365
- export const tagData: <T extends TelemetryDataTag, V extends Record<string, TelemetryBaseEventPropertyType | (() => TelemetryBaseEventPropertyType)>>(tag: T, values: V) => { [P in keyof V]: (V[P] extends () => TelemetryBaseEventPropertyType ? () => {
366
- value: ReturnType<V[P]>;
367
- tag: T;
368
- } : {
369
- value: Exclude<V[P], undefined>;
370
- tag: T;
371
- }) | (V[P] extends undefined ? undefined : never); };
372
-
373
- // @internal @deprecated (undocumented)
374
- export class TaggedLoggerAdapter implements ITelemetryBaseLogger {
375
- constructor(logger: ITelemetryBaseLogger);
376
- send(eventWithTagsMaybe: ITelemetryBaseEvent): void;
377
- }
378
-
379
- // @internal
380
- export enum TelemetryDataTag {
381
- CodeArtifact = "CodeArtifact",
382
- UserData = "UserData"
383
- }
384
-
385
- // @alpha
386
- export type TelemetryEventCategory = "generic" | "error" | "performance";
387
-
388
- // @alpha
389
- export type TelemetryEventPropertyTypeExt = string | number | boolean | undefined | (string | number | boolean)[] | {
390
- [key: string]: // Flat objects can have the same properties as the event itself
391
- string | number | boolean | undefined | (string | number | boolean)[];
392
- };
393
-
394
- // @alpha (undocumented)
395
- export type TelemetryEventPropertyTypes = ITelemetryPropertiesExt[string];
396
-
397
- // @internal
398
- export class ThresholdCounter {
399
- constructor(threshold: number, logger: ITelemetryLoggerExt, thresholdMultiple?: number);
400
- send(eventName: string, value: number): void;
401
- sendIfMultiple(eventName: string, value: number): void;
402
- }
403
-
404
- // @internal
405
- export class UsageError extends LoggingError implements IUsageError, IFluidErrorBase {
406
- constructor(message: string, props?: ITelemetryBaseProperties);
407
- // (undocumented)
408
- readonly errorType: "usageError";
409
- }
410
-
411
- // @internal
412
- export function validatePrecondition(condition: boolean, message: string, props?: ITelemetryBaseProperties): asserts condition;
413
-
414
- // @internal
415
- export const wrapConfigProviderWithDefaults: (original: IConfigProviderBase | undefined, defaults: Record<string, ConfigTypes>) => IConfigProviderBase;
416
-
417
- // @internal
418
- export function wrapError<T extends LoggingError>(innerError: unknown, newErrorFn: (message: string) => T): T;
419
-
420
- // @internal
421
- export function wrapErrorAndLog<T extends LoggingError>(innerError: unknown, newErrorFn: (message: string) => T, logger: ITelemetryLoggerExt): T;
422
-
423
- // (No @packageDocumentation comment for this package)
424
-
425
- ```