@fluidframework/telemetry-utils 2.0.0-internal.6.2.0 → 2.0.0-internal.6.3.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/CHANGELOG.md +28 -0
- package/dist/errorLogging.d.ts +7 -7
- package/dist/errorLogging.d.ts.map +1 -1
- package/dist/errorLogging.js.map +1 -1
- package/dist/eventEmitterWithErrorHandling.d.ts +1 -1
- package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/dist/eventEmitterWithErrorHandling.js +6 -2
- package/dist/eventEmitterWithErrorHandling.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +13 -9
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +34 -14
- package/dist/logger.js.map +1 -1
- package/dist/mockLogger.d.ts +3 -1
- package/dist/mockLogger.d.ts.map +1 -1
- package/dist/mockLogger.js +4 -3
- package/dist/mockLogger.js.map +1 -1
- package/dist/sampledTelemetryHelper.js +3 -3
- package/dist/sampledTelemetryHelper.js.map +1 -1
- package/dist/telemetryTypes.d.ts +15 -5
- package/dist/telemetryTypes.d.ts.map +1 -1
- package/dist/telemetryTypes.js.map +1 -1
- package/lib/errorLogging.d.ts +7 -7
- package/lib/errorLogging.d.ts.map +1 -1
- package/lib/errorLogging.js.map +1 -1
- package/lib/eventEmitterWithErrorHandling.d.ts +1 -1
- package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/lib/eventEmitterWithErrorHandling.js +5 -1
- package/lib/eventEmitterWithErrorHandling.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts +13 -9
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +30 -10
- package/lib/logger.js.map +1 -1
- package/lib/mockLogger.d.ts +3 -1
- package/lib/mockLogger.d.ts.map +1 -1
- package/lib/mockLogger.js +3 -2
- package/lib/mockLogger.js.map +1 -1
- package/lib/sampledTelemetryHelper.js +1 -1
- package/lib/sampledTelemetryHelper.js.map +1 -1
- package/lib/telemetryTypes.d.ts +15 -5
- package/lib/telemetryTypes.d.ts.map +1 -1
- package/lib/telemetryTypes.js.map +1 -1
- package/package.json +12 -15
- package/src/errorLogging.ts +20 -22
- package/src/eventEmitterWithErrorHandling.ts +1 -1
- package/src/index.ts +1 -0
- package/src/logger.ts +38 -14
- package/src/mockLogger.ts +8 -2
- package/src/sampledTelemetryHelper.ts +1 -1
- package/src/telemetryTypes.ts +16 -9
package/src/errorLogging.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
ILoggingError,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
ITelemetryBaseProperties,
|
|
9
|
+
TelemetryBaseEventPropertyType,
|
|
10
|
+
Tagged,
|
|
11
11
|
} from "@fluidframework/core-interfaces";
|
|
12
12
|
import { v4 as uuid } from "uuid";
|
|
13
13
|
import {
|
|
@@ -16,11 +16,7 @@ import {
|
|
|
16
16
|
isFluidError,
|
|
17
17
|
isValidLegacyError,
|
|
18
18
|
} from "./fluidErrorBase";
|
|
19
|
-
import {
|
|
20
|
-
ITaggedTelemetryPropertyTypeExt,
|
|
21
|
-
ITelemetryLoggerExt,
|
|
22
|
-
TelemetryEventPropertyTypeExt,
|
|
23
|
-
} from "./telemetryTypes";
|
|
19
|
+
import { ITelemetryLoggerExt, TelemetryEventPropertyTypeExt } from "./telemetryTypes";
|
|
24
20
|
|
|
25
21
|
/**
|
|
26
22
|
* Determines if the provided value is an object but neither null nor an array.
|
|
@@ -87,8 +83,8 @@ export const isILoggingError = (x: unknown): x is ILoggingError =>
|
|
|
87
83
|
* Copy props from source onto target, but do not overwrite an existing prop that matches
|
|
88
84
|
*/
|
|
89
85
|
function copyProps(
|
|
90
|
-
target:
|
|
91
|
-
source:
|
|
86
|
+
target: ITelemetryBaseProperties | LoggingError,
|
|
87
|
+
source: ITelemetryBaseProperties,
|
|
92
88
|
): void {
|
|
93
89
|
for (const key of Object.keys(source)) {
|
|
94
90
|
if (target[key] === undefined) {
|
|
@@ -104,7 +100,7 @@ export interface IFluidErrorAnnotations {
|
|
|
104
100
|
/**
|
|
105
101
|
* Telemetry props to log with the error
|
|
106
102
|
*/
|
|
107
|
-
props?:
|
|
103
|
+
props?: ITelemetryBaseProperties;
|
|
108
104
|
}
|
|
109
105
|
|
|
110
106
|
/**
|
|
@@ -319,9 +315,9 @@ export function isExternalError(error: unknown): boolean {
|
|
|
319
315
|
* Type guard to identify if a particular telemetry property appears to be a tagged telemetry property
|
|
320
316
|
*/
|
|
321
317
|
export function isTaggedTelemetryPropertyValue(
|
|
322
|
-
x:
|
|
323
|
-
): x is
|
|
324
|
-
return typeof (x as Partial<
|
|
318
|
+
x: Tagged<TelemetryEventPropertyTypeExt> | TelemetryEventPropertyTypeExt,
|
|
319
|
+
): x is Tagged<TelemetryEventPropertyTypeExt> {
|
|
320
|
+
return typeof (x as Partial<Tagged<unknown>>)?.tag === "string";
|
|
325
321
|
}
|
|
326
322
|
|
|
327
323
|
/**
|
|
@@ -330,7 +326,7 @@ export function isTaggedTelemetryPropertyValue(
|
|
|
330
326
|
* @returns - as-is if x is primitive. returns stringified if x is an array of primitive.
|
|
331
327
|
* otherwise returns null since this is what we support at the moment.
|
|
332
328
|
*/
|
|
333
|
-
function filterValidTelemetryProps(x: unknown, key: string):
|
|
329
|
+
function filterValidTelemetryProps(x: unknown, key: string): TelemetryBaseEventPropertyType {
|
|
334
330
|
if (Array.isArray(x) && x.every((val) => isTelemetryEventPropertyValue(val))) {
|
|
335
331
|
return JSON.stringify(x);
|
|
336
332
|
}
|
|
@@ -343,7 +339,7 @@ function filterValidTelemetryProps(x: unknown, key: string): TelemetryEventPrope
|
|
|
343
339
|
}
|
|
344
340
|
|
|
345
341
|
// checking type of x, returns false if x is null
|
|
346
|
-
function isTelemetryEventPropertyValue(x: unknown): x is
|
|
342
|
+
function isTelemetryEventPropertyValue(x: unknown): x is TelemetryBaseEventPropertyType {
|
|
347
343
|
switch (typeof x) {
|
|
348
344
|
case "string":
|
|
349
345
|
case "number":
|
|
@@ -357,13 +353,15 @@ function isTelemetryEventPropertyValue(x: unknown): x is TelemetryEventPropertyT
|
|
|
357
353
|
/**
|
|
358
354
|
* Walk an object's enumerable properties to find those fit for telemetry.
|
|
359
355
|
*/
|
|
360
|
-
function getValidTelemetryProps(obj: object, keysToOmit: Set<string>):
|
|
361
|
-
const props:
|
|
356
|
+
function getValidTelemetryProps(obj: object, keysToOmit: Set<string>): ITelemetryBaseProperties {
|
|
357
|
+
const props: ITelemetryBaseProperties = {};
|
|
362
358
|
for (const key of Object.keys(obj)) {
|
|
363
359
|
if (keysToOmit.has(key)) {
|
|
364
360
|
continue;
|
|
365
361
|
}
|
|
366
|
-
const val = obj[key] as
|
|
362
|
+
const val = obj[key] as
|
|
363
|
+
| TelemetryEventPropertyTypeExt
|
|
364
|
+
| Tagged<TelemetryEventPropertyTypeExt>;
|
|
367
365
|
|
|
368
366
|
// ensure only valid props get logged, since props of logging error could be in any shape
|
|
369
367
|
if (isTaggedTelemetryPropertyValue(val)) {
|
|
@@ -435,7 +433,7 @@ export class LoggingError
|
|
|
435
433
|
*/
|
|
436
434
|
constructor(
|
|
437
435
|
message: string,
|
|
438
|
-
props?:
|
|
436
|
+
props?: ITelemetryBaseProperties,
|
|
439
437
|
private readonly omitPropsFromLogging: Set<string> = new Set(),
|
|
440
438
|
) {
|
|
441
439
|
super(message);
|
|
@@ -468,14 +466,14 @@ export class LoggingError
|
|
|
468
466
|
/**
|
|
469
467
|
* Add additional properties to be logged
|
|
470
468
|
*/
|
|
471
|
-
public addTelemetryProperties(props:
|
|
469
|
+
public addTelemetryProperties(props: ITelemetryBaseProperties): void {
|
|
472
470
|
copyProps(this, props);
|
|
473
471
|
}
|
|
474
472
|
|
|
475
473
|
/**
|
|
476
474
|
* Get all properties fit to be logged to telemetry for this error
|
|
477
475
|
*/
|
|
478
|
-
public getTelemetryProperties():
|
|
476
|
+
public getTelemetryProperties(): ITelemetryBaseProperties {
|
|
479
477
|
const taggableProps = getValidTelemetryProps(this, this.omitPropsFromLogging);
|
|
480
478
|
// Include non-enumerable props that are not returned by getValidTelemetryProps
|
|
481
479
|
return {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
+
import { TypedEventEmitter, EventEmitterEventType } from "@fluid-internal/client-utils";
|
|
5
6
|
import { IEvent } from "@fluidframework/core-interfaces";
|
|
6
|
-
import { TypedEventEmitter, EventEmitterEventType } from "@fluidframework/common-utils";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Event Emitter helper class
|
package/src/index.ts
CHANGED
package/src/logger.ts
CHANGED
|
@@ -10,12 +10,12 @@ import {
|
|
|
10
10
|
ITelemetryGenericEvent,
|
|
11
11
|
ITelemetryPerformanceEvent,
|
|
12
12
|
ITelemetryProperties,
|
|
13
|
-
TelemetryEventPropertyType,
|
|
14
|
-
ITaggedTelemetryPropertyType,
|
|
15
|
-
TelemetryEventCategory,
|
|
13
|
+
TelemetryBaseEventPropertyType as TelemetryEventPropertyType,
|
|
16
14
|
LogLevel,
|
|
15
|
+
Tagged,
|
|
16
|
+
ITelemetryBaseProperties,
|
|
17
17
|
} from "@fluidframework/core-interfaces";
|
|
18
|
-
import { IsomorphicPerformance, performance } from "@
|
|
18
|
+
import { IsomorphicPerformance, performance } from "@fluid-internal/client-utils";
|
|
19
19
|
import { CachedConfigProvider, loggerIsMonitoringContext, mixinMonitoringContext } from "./config";
|
|
20
20
|
import {
|
|
21
21
|
isILoggingError,
|
|
@@ -24,13 +24,12 @@ import {
|
|
|
24
24
|
isTaggedTelemetryPropertyValue,
|
|
25
25
|
} from "./errorLogging";
|
|
26
26
|
import {
|
|
27
|
-
ITaggedTelemetryPropertyTypeExt,
|
|
28
27
|
ITelemetryEventExt,
|
|
29
28
|
ITelemetryGenericEventExt,
|
|
30
29
|
ITelemetryLoggerExt,
|
|
31
30
|
ITelemetryPerformanceEventExt,
|
|
32
|
-
ITelemetryPropertiesExt,
|
|
33
31
|
TelemetryEventPropertyTypeExt,
|
|
32
|
+
TelemetryEventCategory,
|
|
34
33
|
} from "./telemetryTypes";
|
|
35
34
|
|
|
36
35
|
export interface Memory {
|
|
@@ -55,7 +54,7 @@ export enum TelemetryDataTag {
|
|
|
55
54
|
UserData = "UserData",
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
export type TelemetryEventPropertyTypes =
|
|
57
|
+
export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string];
|
|
59
58
|
|
|
60
59
|
export interface ITelemetryLoggerPropertyBag {
|
|
61
60
|
[index: string]: TelemetryEventPropertyTypes | (() => TelemetryEventPropertyTypes);
|
|
@@ -160,7 +159,7 @@ export abstract class TelemetryLogger implements ITelemetryLoggerExt {
|
|
|
160
159
|
public sendTelemetryEvent(
|
|
161
160
|
event: ITelemetryGenericEventExt,
|
|
162
161
|
error?: unknown,
|
|
163
|
-
logLevel: LogLevel.verbose | LogLevel.default = LogLevel.default,
|
|
162
|
+
logLevel: typeof LogLevel.verbose | typeof LogLevel.default = LogLevel.default,
|
|
164
163
|
): void {
|
|
165
164
|
this.sendTelemetryEventCore(
|
|
166
165
|
{ ...event, category: event.category ?? "generic" },
|
|
@@ -225,7 +224,7 @@ export abstract class TelemetryLogger implements ITelemetryLoggerExt {
|
|
|
225
224
|
public sendPerformanceEvent(
|
|
226
225
|
event: ITelemetryPerformanceEventExt,
|
|
227
226
|
error?: unknown,
|
|
228
|
-
logLevel: LogLevel.verbose | LogLevel.default = LogLevel.default,
|
|
227
|
+
logLevel: typeof LogLevel.verbose | typeof LogLevel.default = LogLevel.default,
|
|
229
228
|
): void {
|
|
230
229
|
const perfEvent = {
|
|
231
230
|
...event,
|
|
@@ -424,7 +423,11 @@ export class ChildLogger extends TelemetryLogger {
|
|
|
424
423
|
}
|
|
425
424
|
}
|
|
426
425
|
|
|
427
|
-
|
|
426
|
+
public get minLogLevel(): LogLevel | undefined {
|
|
427
|
+
return this.baseLogger.minLogLevel;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
private shouldFilterOutEvent(event: ITelemetryBaseEvent, logLevel?: LogLevel): boolean {
|
|
428
431
|
const eventLogLevel = logLevel ?? LogLevel.default;
|
|
429
432
|
const configLogLevel = this.baseLogger.minLogLevel ?? LogLevel.default;
|
|
430
433
|
// Filter out in case event log level is below what is wanted in config.
|
|
@@ -469,6 +472,9 @@ export function createMultiSinkLogger(props: {
|
|
|
469
472
|
*/
|
|
470
473
|
export class MultiSinkLogger extends TelemetryLogger {
|
|
471
474
|
protected loggers: ITelemetryBaseLogger[];
|
|
475
|
+
// This is minimum of minLlogLevel of all loggers.
|
|
476
|
+
private _minLogLevelOfAllLoggers: LogLevel;
|
|
477
|
+
|
|
472
478
|
/**
|
|
473
479
|
* Create multiple sink logger (i.e. logger that sends events to multiple sinks)
|
|
474
480
|
* @param namespace - Telemetry event name prefix to add to all events
|
|
@@ -500,6 +506,22 @@ export class MultiSinkLogger extends TelemetryLogger {
|
|
|
500
506
|
|
|
501
507
|
super(namespace, realProperties);
|
|
502
508
|
this.loggers = loggers;
|
|
509
|
+
this._minLogLevelOfAllLoggers = LogLevel.default;
|
|
510
|
+
this.calculateMinLogLevel();
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
public get minLogLevel(): LogLevel {
|
|
514
|
+
return this._minLogLevelOfAllLoggers;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
private calculateMinLogLevel(): void {
|
|
518
|
+
if (this.loggers.length > 0) {
|
|
519
|
+
const logLevels: LogLevel[] = [];
|
|
520
|
+
for (const logger of this.loggers) {
|
|
521
|
+
logLevels.push(logger.minLogLevel ?? LogLevel.default);
|
|
522
|
+
}
|
|
523
|
+
this._minLogLevelOfAllLoggers = Math.min(...logLevels) as LogLevel;
|
|
524
|
+
}
|
|
503
525
|
}
|
|
504
526
|
|
|
505
527
|
/**
|
|
@@ -509,6 +531,8 @@ export class MultiSinkLogger extends TelemetryLogger {
|
|
|
509
531
|
public addLogger(logger?: ITelemetryBaseLogger): void {
|
|
510
532
|
if (logger !== undefined && logger !== null) {
|
|
511
533
|
this.loggers.push(logger);
|
|
534
|
+
// Update in case the logLevel of added logger is less than the current.
|
|
535
|
+
this.calculateMinLogLevel();
|
|
512
536
|
}
|
|
513
537
|
}
|
|
514
538
|
|
|
@@ -720,15 +744,15 @@ function convertToBaseEvent({
|
|
|
720
744
|
/**
|
|
721
745
|
* Takes in value, and does one of 4 things.
|
|
722
746
|
* if value is of primitive type - returns the original value.
|
|
723
|
-
* If the value is
|
|
724
|
-
* If the value is an object of type
|
|
747
|
+
* If the value is a flat array or object - returns a stringified version of the array/object.
|
|
748
|
+
* If the value is an object of type Tagged<TelemetryEventPropertyType> - returns the object
|
|
725
749
|
* with its values recursively converted to base property Type.
|
|
726
750
|
* If none of these cases are reached - returns an error string
|
|
727
751
|
* @param x - value passed in to convert to a base property type
|
|
728
752
|
*/
|
|
729
753
|
export function convertToBasePropertyType(
|
|
730
|
-
x: TelemetryEventPropertyTypeExt |
|
|
731
|
-
): TelemetryEventPropertyType |
|
|
754
|
+
x: TelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>,
|
|
755
|
+
): TelemetryEventPropertyType | Tagged<TelemetryEventPropertyType> {
|
|
732
756
|
return isTaggedTelemetryPropertyValue(x)
|
|
733
757
|
? {
|
|
734
758
|
value: convertToBasePropertyTypeUntagged(x.value),
|
package/src/mockLogger.ts
CHANGED
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
ITelemetryBaseEvent,
|
|
8
|
+
ITelemetryBaseLogger,
|
|
9
|
+
LogLevel,
|
|
10
|
+
} from "@fluidframework/core-interfaces";
|
|
11
|
+
import { assert } from "@fluidframework/core-utils";
|
|
8
12
|
import { ITelemetryLoggerExt, ITelemetryPropertiesExt } from "./telemetryTypes";
|
|
9
13
|
import { createChildLogger } from "./logger";
|
|
10
14
|
|
|
@@ -15,6 +19,8 @@ import { createChildLogger } from "./logger";
|
|
|
15
19
|
export class MockLogger implements ITelemetryBaseLogger {
|
|
16
20
|
events: ITelemetryBaseEvent[] = [];
|
|
17
21
|
|
|
22
|
+
constructor(public readonly minLogLevel?: LogLevel) {}
|
|
23
|
+
|
|
18
24
|
clear(): void {
|
|
19
25
|
this.events = [];
|
|
20
26
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
ITelemetryProperties,
|
|
10
10
|
IDisposable,
|
|
11
11
|
} from "@fluidframework/core-interfaces";
|
|
12
|
-
import { performance } from "@
|
|
12
|
+
import { performance } from "@fluid-internal/client-utils";
|
|
13
13
|
import { ITelemetryLoggerExt } from "./telemetryTypes";
|
|
14
14
|
|
|
15
15
|
/**
|
package/src/telemetryTypes.ts
CHANGED
|
@@ -3,15 +3,20 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { ITelemetryBaseLogger, LogLevel, Tagged } from "@fluidframework/core-interfaces";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The categories FF uses when instrumenting the code.
|
|
10
|
+
*
|
|
11
|
+
* generic - Informational log event
|
|
12
|
+
* error - Error log event, ideally 0 of these are logged during a session
|
|
13
|
+
* performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking
|
|
14
|
+
*/
|
|
15
|
+
export type TelemetryEventCategory = "generic" | "error" | "performance";
|
|
11
16
|
|
|
12
17
|
/**
|
|
13
18
|
* Property types that can be logged.
|
|
14
|
-
* Includes extra types beyond
|
|
19
|
+
* Includes extra types beyond TelemetryBaseEventPropertyType, which must be converted before sending to a base logger
|
|
15
20
|
*/
|
|
16
21
|
export type TelemetryEventPropertyTypeExt =
|
|
17
22
|
| string
|
|
@@ -28,6 +33,8 @@ export type TelemetryEventPropertyTypeExt =
|
|
|
28
33
|
* A property to be logged to telemetry containing both the value and a tag. Tags are generic strings that can be used
|
|
29
34
|
* to mark pieces of information that should be organized or handled differently by loggers in various first or third
|
|
30
35
|
* party scenarios. For example, tags are used to mark personal information that should not be stored in logs.
|
|
36
|
+
*
|
|
37
|
+
* @deprecated Use Tagged<TelemetryEventPropertyTypeExt>
|
|
31
38
|
*/
|
|
32
39
|
export interface ITaggedTelemetryPropertyTypeExt {
|
|
33
40
|
value: TelemetryEventPropertyTypeExt;
|
|
@@ -38,7 +45,7 @@ export interface ITaggedTelemetryPropertyTypeExt {
|
|
|
38
45
|
* JSON-serializable properties, which will be logged with telemetry.
|
|
39
46
|
*/
|
|
40
47
|
export interface ITelemetryPropertiesExt {
|
|
41
|
-
[index: string]: TelemetryEventPropertyTypeExt |
|
|
48
|
+
[index: string]: TelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>;
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
/**
|
|
@@ -92,7 +99,7 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
|
|
|
92
99
|
sendTelemetryEvent(
|
|
93
100
|
event: ITelemetryGenericEventExt,
|
|
94
101
|
error?: unknown,
|
|
95
|
-
logLevel?: LogLevel.verbose | LogLevel.default,
|
|
102
|
+
logLevel?: typeof LogLevel.verbose | typeof LogLevel.default,
|
|
96
103
|
): void;
|
|
97
104
|
|
|
98
105
|
/**
|
|
@@ -111,6 +118,6 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
|
|
|
111
118
|
sendPerformanceEvent(
|
|
112
119
|
event: ITelemetryPerformanceEventExt,
|
|
113
120
|
error?: unknown,
|
|
114
|
-
logLevel?: LogLevel.verbose | LogLevel.default,
|
|
121
|
+
logLevel?: typeof LogLevel.verbose | typeof LogLevel.default,
|
|
115
122
|
): void;
|
|
116
123
|
}
|