@fluidframework/telemetry-utils 2.0.0-internal.3.0.5 → 2.0.0-internal.3.1.1
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.js +11 -13
- package/.mocharc.js +2 -2
- package/api-extractor.json +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/debugLogger.d.ts.map +1 -1
- package/dist/debugLogger.js.map +1 -1
- package/dist/errorLogging.d.ts +5 -5
- package/dist/errorLogging.d.ts.map +1 -1
- package/dist/errorLogging.js +20 -18
- package/dist/errorLogging.js.map +1 -1
- package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/dist/eventEmitterWithErrorHandling.js.map +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/fluidErrorBase.d.ts.map +1 -1
- package/dist/fluidErrorBase.js +4 -4
- package/dist/fluidErrorBase.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +13 -12
- package/dist/logger.js.map +1 -1
- package/dist/mockLogger.d.ts +5 -5
- package/dist/mockLogger.d.ts.map +1 -1
- package/dist/mockLogger.js +5 -5
- package/dist/mockLogger.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/sampledTelemetryHelper.d.ts.map +1 -1
- package/dist/sampledTelemetryHelper.js.map +1 -1
- package/dist/telemetryTypes.d.ts.map +1 -1
- package/dist/telemetryTypes.js.map +1 -1
- package/dist/thresholdCounter.d.ts.map +1 -1
- package/dist/thresholdCounter.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js.map +1 -1
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +3 -3
- package/lib/config.js.map +1 -1
- package/lib/debugLogger.d.ts.map +1 -1
- package/lib/debugLogger.js +1 -1
- package/lib/debugLogger.js.map +1 -1
- package/lib/errorLogging.d.ts +5 -5
- package/lib/errorLogging.d.ts.map +1 -1
- package/lib/errorLogging.js +20 -18
- package/lib/errorLogging.js.map +1 -1
- package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
- package/lib/eventEmitterWithErrorHandling.js.map +1 -1
- package/lib/events.d.ts.map +1 -1
- package/lib/events.js.map +1 -1
- package/lib/fluidErrorBase.d.ts.map +1 -1
- package/lib/fluidErrorBase.js +4 -4
- package/lib/fluidErrorBase.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/logger.d.ts.map +1 -1
- package/lib/logger.js +14 -13
- package/lib/logger.js.map +1 -1
- package/lib/mockLogger.d.ts +5 -5
- package/lib/mockLogger.d.ts.map +1 -1
- package/lib/mockLogger.js +5 -5
- package/lib/mockLogger.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/sampledTelemetryHelper.d.ts.map +1 -1
- package/lib/sampledTelemetryHelper.js.map +1 -1
- package/lib/telemetryTypes.d.ts.map +1 -1
- package/lib/telemetryTypes.js.map +1 -1
- package/lib/thresholdCounter.d.ts.map +1 -1
- package/lib/thresholdCounter.js.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js.map +1 -1
- package/package.json +107 -106
- package/prettier.config.cjs +1 -1
- package/src/config.ts +173 -172
- package/src/debugLogger.ts +118 -111
- package/src/errorLogging.ts +302 -299
- package/src/eventEmitterWithErrorHandling.ts +16 -12
- package/src/events.ts +26 -26
- package/src/fluidErrorBase.ts +42 -38
- package/src/index.ts +26 -16
- package/src/logger.ts +541 -533
- package/src/mockLogger.ts +113 -107
- package/src/packageVersion.ts +1 -1
- package/src/sampledTelemetryHelper.ts +122 -122
- package/src/telemetryTypes.ts +37 -37
- package/src/thresholdCounter.ts +34 -34
- package/src/utils.ts +15 -15
- package/tsconfig.esnext.json +6 -6
- package/tsconfig.json +9 -13
|
@@ -10,17 +10,21 @@ import { TypedEventEmitter, EventEmitterEventType } from "@fluidframework/common
|
|
|
10
10
|
* Any exceptions thrown by listeners will be caught and raised through "error" event.
|
|
11
11
|
* Any exception thrown by "error" listeners will propagate to the caller.
|
|
12
12
|
*/
|
|
13
|
-
export class EventEmitterWithErrorHandling<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
export class EventEmitterWithErrorHandling<
|
|
14
|
+
TEvent extends IEvent = IEvent,
|
|
15
|
+
> extends TypedEventEmitter<TEvent> {
|
|
16
|
+
constructor(
|
|
17
|
+
private readonly errorHandler: (eventName: EventEmitterEventType, error: any) => void,
|
|
18
|
+
) {
|
|
19
|
+
super();
|
|
20
|
+
}
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
public emit(event: EventEmitterEventType, ...args: any[]): boolean {
|
|
23
|
+
try {
|
|
24
|
+
return super.emit(event, ...args);
|
|
25
|
+
} catch (error) {
|
|
26
|
+
this.errorHandler(event, error);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
26
30
|
}
|
package/src/events.ts
CHANGED
|
@@ -4,23 +4,22 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { EventEmitter } from "events";
|
|
7
|
-
import {
|
|
8
|
-
ITelemetryLogger,
|
|
9
|
-
} from "@fluidframework/common-definitions";
|
|
7
|
+
import { ITelemetryLogger } from "@fluidframework/common-definitions";
|
|
10
8
|
|
|
11
9
|
export const connectedEventName = "connected";
|
|
12
10
|
export const disconnectedEventName = "disconnected";
|
|
13
11
|
|
|
14
12
|
export function safeRaiseEvent(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
emitter: EventEmitter,
|
|
14
|
+
logger: ITelemetryLogger,
|
|
15
|
+
event: string,
|
|
16
|
+
...args
|
|
17
|
+
) {
|
|
18
|
+
try {
|
|
19
|
+
emitter.emit(event, ...args);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
logger.sendErrorEvent({ eventName: "RaiseEventError", event }, error);
|
|
22
|
+
}
|
|
24
23
|
}
|
|
25
24
|
|
|
26
25
|
/**
|
|
@@ -32,18 +31,19 @@ export function safeRaiseEvent(
|
|
|
32
31
|
* @param disconnectedReason - The reason for the connection to be disconnected (Used for telemetry purposes only)
|
|
33
32
|
*/
|
|
34
33
|
export function raiseConnectedEvent(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
34
|
+
logger: ITelemetryLogger,
|
|
35
|
+
emitter: EventEmitter,
|
|
36
|
+
connected: boolean,
|
|
37
|
+
clientId?: string,
|
|
38
|
+
disconnectedReason?: string,
|
|
39
|
+
) {
|
|
40
|
+
try {
|
|
41
|
+
if (connected) {
|
|
42
|
+
emitter.emit(connectedEventName, clientId);
|
|
43
|
+
} else {
|
|
44
|
+
emitter.emit(disconnectedEventName, disconnectedReason);
|
|
45
|
+
}
|
|
46
|
+
} catch (error) {
|
|
47
|
+
logger.sendErrorEvent({ eventName: "RaiseConnectedEventError" }, error);
|
|
48
|
+
}
|
|
49
49
|
}
|
package/src/fluidErrorBase.ts
CHANGED
|
@@ -11,53 +11,57 @@ import { ITelemetryProperties } from "@fluidframework/common-definitions";
|
|
|
11
11
|
* and a getter/setter for telemetry props to be included when the error is logged.
|
|
12
12
|
*/
|
|
13
13
|
export interface IFluidErrorBase extends Error {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
/** Classification of what type of error this is, used programmatically by consumers to interpret the error */
|
|
15
|
+
readonly errorType: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Error's message property, made readonly.
|
|
19
|
+
* Be specific, but also take care when including variable data to consider suitability for aggregation in telemetry
|
|
20
|
+
* Also avoid including any data that jeopardizes the user's privacy. Add a tagged telemetry property instead.
|
|
21
|
+
*/
|
|
22
|
+
readonly message: string;
|
|
23
|
+
|
|
24
|
+
/** Error's stack property, made readonly */
|
|
25
|
+
readonly stack?: string;
|
|
26
|
+
|
|
27
|
+
/** Error's name property, made readonly */
|
|
28
|
+
readonly name: string;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* A Guid identifying this error instance.
|
|
32
|
+
* Useful in telemetry for deduping multiple logging events arising from the same error,
|
|
33
|
+
* or correlating an error with an inner error that caused it, in case of error wrapping.
|
|
34
|
+
*/
|
|
35
|
+
readonly errorInstanceId: string;
|
|
36
|
+
|
|
37
|
+
/** Get the telemetry properties stashed on this error for logging */
|
|
38
|
+
getTelemetryProperties(): ITelemetryProperties;
|
|
39
|
+
/** Add telemetry properties to this error which will be logged with the error */
|
|
40
|
+
addTelemetryProperties: (props: ITelemetryProperties) => void;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
const hasTelemetryPropFunctions = (x: any): boolean =>
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
typeof x?.getTelemetryProperties === "function" &&
|
|
45
|
+
typeof x?.addTelemetryProperties === "function";
|
|
46
46
|
|
|
47
|
-
export const hasErrorInstanceId = (x: any): x is { errorInstanceId: string
|
|
48
|
-
|
|
47
|
+
export const hasErrorInstanceId = (x: any): x is { errorInstanceId: string } =>
|
|
48
|
+
typeof x?.errorInstanceId === "string";
|
|
49
49
|
|
|
50
50
|
/** type guard for IFluidErrorBase interface */
|
|
51
51
|
export function isFluidError(e: any): e is IFluidErrorBase {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
return (
|
|
53
|
+
typeof e?.errorType === "string" &&
|
|
54
|
+
typeof e?.message === "string" &&
|
|
55
|
+
hasErrorInstanceId(e) &&
|
|
56
|
+
hasTelemetryPropFunctions(e)
|
|
57
|
+
);
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
/** type guard for old standard of valid/known errors */
|
|
59
61
|
export function isValidLegacyError(e: any): e is Omit<IFluidErrorBase, "errorInstanceId"> {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
return (
|
|
63
|
+
typeof e?.errorType === "string" &&
|
|
64
|
+
typeof e?.message === "string" &&
|
|
65
|
+
hasTelemetryPropFunctions(e)
|
|
66
|
+
);
|
|
63
67
|
}
|
package/src/index.ts
CHANGED
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
export {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
MonitoringContext,
|
|
7
|
+
IConfigProviderBase,
|
|
8
|
+
sessionStorageConfigProvider,
|
|
9
|
+
mixinMonitoringContext,
|
|
10
|
+
IConfigProvider,
|
|
11
|
+
ConfigTypes,
|
|
12
|
+
loggerToMonitoringContext,
|
|
13
13
|
} from "./config";
|
|
14
14
|
export { DebugLogger } from "./debugLogger";
|
|
15
15
|
export {
|
|
@@ -28,8 +28,18 @@ export {
|
|
|
28
28
|
wrapErrorAndLog,
|
|
29
29
|
} from "./errorLogging";
|
|
30
30
|
export { EventEmitterWithErrorHandling } from "./eventEmitterWithErrorHandling";
|
|
31
|
-
export {
|
|
32
|
-
|
|
31
|
+
export {
|
|
32
|
+
connectedEventName,
|
|
33
|
+
disconnectedEventName,
|
|
34
|
+
raiseConnectedEvent,
|
|
35
|
+
safeRaiseEvent,
|
|
36
|
+
} from "./events";
|
|
37
|
+
export {
|
|
38
|
+
hasErrorInstanceId,
|
|
39
|
+
IFluidErrorBase,
|
|
40
|
+
isFluidError,
|
|
41
|
+
isValidLegacyError,
|
|
42
|
+
} from "./fluidErrorBase";
|
|
33
43
|
export {
|
|
34
44
|
BaseTelemetryNullLogger,
|
|
35
45
|
ChildLogger,
|
|
@@ -51,11 +61,11 @@ export { SampledTelemetryHelper } from "./sampledTelemetryHelper";
|
|
|
51
61
|
export { logIfFalse } from "./utils";
|
|
52
62
|
export {
|
|
53
63
|
TelemetryEventPropertyTypeExt,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
ITelemetryEventExt,
|
|
65
|
+
ITelemetryGenericEventExt,
|
|
66
|
+
ITelemetryErrorEventExt,
|
|
67
|
+
ITelemetryPerformanceEventExt,
|
|
68
|
+
ITelemetryLoggerExt,
|
|
69
|
+
ITaggedTelemetryPropertyTypeExt,
|
|
70
|
+
ITelemetryPropertiesExt,
|
|
61
71
|
} from "./telemetryTypes";
|