@fluidframework/telemetry-utils 2.0.0-rc.4.0.6 → 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.
- package/.eslintrc.cjs +1 -1
- package/CHANGELOG.md +27 -0
- package/api-extractor/api-extractor-lint-bundle.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
- package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-public.esm.json +5 -0
- package/api-extractor.json +1 -1
- package/api-report/telemetry-utils.alpha.api.md +107 -0
- package/api-report/telemetry-utils.beta.api.md +29 -0
- package/api-report/telemetry-utils.public.api.md +29 -0
- package/biome.jsonc +4 -0
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/error.d.ts +5 -5
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js.map +1 -1
- package/dist/errorLogging.d.ts +2 -6
- package/dist/errorLogging.d.ts.map +1 -1
- package/dist/errorLogging.js +22 -29
- package/dist/errorLogging.js.map +1 -1
- package/dist/eventEmitterWithErrorHandling.d.ts +2 -2
- package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/dist/eventEmitterWithErrorHandling.js.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/fluidErrorBase.d.ts +0 -6
- package/dist/fluidErrorBase.d.ts.map +1 -1
- package/dist/fluidErrorBase.js +1 -12
- package/dist/fluidErrorBase.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +3 -5
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/mathTools.d.ts +13 -0
- package/dist/mathTools.d.ts.map +1 -0
- package/dist/mathTools.js +20 -0
- package/dist/mathTools.js.map +1 -0
- package/dist/mockLogger.d.ts +99 -19
- package/dist/mockLogger.d.ts.map +1 -1
- package/dist/mockLogger.js +120 -33
- package/dist/mockLogger.js.map +1 -1
- package/dist/sampledTelemetryHelper.d.ts +6 -2
- package/dist/sampledTelemetryHelper.d.ts.map +1 -1
- package/dist/sampledTelemetryHelper.js +11 -3
- package/dist/sampledTelemetryHelper.js.map +1 -1
- package/dist/telemetryEventBatcher.d.ts +64 -0
- package/dist/telemetryEventBatcher.d.ts.map +1 -0
- package/dist/telemetryEventBatcher.js +86 -0
- package/dist/telemetryEventBatcher.js.map +1 -0
- package/dist/telemetryTypes.d.ts +32 -18
- package/dist/telemetryTypes.d.ts.map +1 -1
- package/dist/telemetryTypes.js.map +1 -1
- package/dist/thresholdCounter.d.ts +1 -1
- package/dist/thresholdCounter.d.ts.map +1 -1
- package/dist/thresholdCounter.js.map +1 -1
- package/dist/utils.d.ts +14 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +30 -2
- package/dist/utils.js.map +1 -1
- package/lib/config.d.ts +2 -2
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js.map +1 -1
- package/lib/error.d.ts +5 -5
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js.map +1 -1
- package/lib/errorLogging.d.ts +2 -6
- package/lib/errorLogging.d.ts.map +1 -1
- package/lib/errorLogging.js +23 -30
- package/lib/errorLogging.js.map +1 -1
- package/lib/eventEmitterWithErrorHandling.d.ts +2 -2
- package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/lib/eventEmitterWithErrorHandling.js.map +1 -1
- package/lib/events.js.map +1 -1
- package/lib/fluidErrorBase.d.ts +0 -6
- package/lib/fluidErrorBase.d.ts.map +1 -1
- package/lib/fluidErrorBase.js +0 -10
- package/lib/fluidErrorBase.js.map +1 -1
- package/lib/index.d.ts +8 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -3
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts +3 -5
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js.map +1 -1
- package/lib/mathTools.d.ts +13 -0
- package/lib/mathTools.d.ts.map +1 -0
- package/lib/mathTools.js +16 -0
- package/lib/mathTools.js.map +1 -0
- package/lib/mockLogger.d.ts +99 -19
- package/lib/mockLogger.d.ts.map +1 -1
- package/lib/mockLogger.js +118 -32
- package/lib/mockLogger.js.map +1 -1
- package/lib/sampledTelemetryHelper.d.ts +6 -2
- package/lib/sampledTelemetryHelper.d.ts.map +1 -1
- package/lib/sampledTelemetryHelper.js +11 -3
- package/lib/sampledTelemetryHelper.js.map +1 -1
- package/lib/telemetryEventBatcher.d.ts +64 -0
- package/lib/telemetryEventBatcher.d.ts.map +1 -0
- package/lib/telemetryEventBatcher.js +82 -0
- package/lib/telemetryEventBatcher.js.map +1 -0
- package/lib/telemetryTypes.d.ts +32 -18
- package/lib/telemetryTypes.d.ts.map +1 -1
- package/lib/telemetryTypes.js.map +1 -1
- package/lib/thresholdCounter.d.ts +1 -1
- package/lib/thresholdCounter.d.ts.map +1 -1
- package/lib/thresholdCounter.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/lib/utils.d.ts +14 -2
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +28 -1
- package/lib/utils.js.map +1 -1
- package/package.json +30 -16
- package/src/config.ts +16 -16
- package/src/error.ts +13 -13
- package/src/errorLogging.ts +32 -46
- package/src/eventEmitterWithErrorHandling.ts +3 -3
- package/src/fluidErrorBase.ts +0 -15
- package/src/index.ts +17 -16
- package/src/logger.ts +21 -21
- package/src/mathTools.ts +16 -0
- package/src/mockLogger.ts +165 -35
- package/src/sampledTelemetryHelper.ts +15 -5
- package/src/telemetryEventBatcher.ts +103 -0
- package/src/telemetryTypes.ts +38 -19
- package/src/thresholdCounter.ts +1 -1
- package/src/utils.ts +31 -2
- package/tsconfig.json +2 -0
- package/tsdoc.json +4 -0
- 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
package/tsdoc.json
ADDED
|
@@ -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
|
-
```
|