@fluidframework/telemetry-utils 2.0.0-internal.3.0.1 → 2.0.0-internal.3.1.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 (97) hide show
  1. package/.eslintrc.js +11 -13
  2. package/.mocharc.js +2 -2
  3. package/api-extractor.json +2 -2
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +3 -3
  6. package/dist/config.js.map +1 -1
  7. package/dist/debugLogger.d.ts.map +1 -1
  8. package/dist/debugLogger.js.map +1 -1
  9. package/dist/errorLogging.d.ts +5 -5
  10. package/dist/errorLogging.d.ts.map +1 -1
  11. package/dist/errorLogging.js +20 -18
  12. package/dist/errorLogging.js.map +1 -1
  13. package/dist/eventEmitterWithErrorHandling.d.ts.map +1 -1
  14. package/dist/eventEmitterWithErrorHandling.js.map +1 -1
  15. package/dist/events.d.ts.map +1 -1
  16. package/dist/events.js.map +1 -1
  17. package/dist/fluidErrorBase.d.ts.map +1 -1
  18. package/dist/fluidErrorBase.js +4 -4
  19. package/dist/fluidErrorBase.js.map +1 -1
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/logger.d.ts.map +1 -1
  24. package/dist/logger.js +13 -12
  25. package/dist/logger.js.map +1 -1
  26. package/dist/mockLogger.d.ts +5 -5
  27. package/dist/mockLogger.d.ts.map +1 -1
  28. package/dist/mockLogger.js +5 -5
  29. package/dist/mockLogger.js.map +1 -1
  30. package/dist/packageVersion.d.ts +1 -1
  31. package/dist/packageVersion.js +1 -1
  32. package/dist/packageVersion.js.map +1 -1
  33. package/dist/sampledTelemetryHelper.d.ts.map +1 -1
  34. package/dist/sampledTelemetryHelper.js.map +1 -1
  35. package/dist/telemetryTypes.d.ts.map +1 -1
  36. package/dist/telemetryTypes.js.map +1 -1
  37. package/dist/thresholdCounter.d.ts.map +1 -1
  38. package/dist/thresholdCounter.js.map +1 -1
  39. package/dist/utils.d.ts.map +1 -1
  40. package/dist/utils.js.map +1 -1
  41. package/lib/config.d.ts.map +1 -1
  42. package/lib/config.js +3 -3
  43. package/lib/config.js.map +1 -1
  44. package/lib/debugLogger.d.ts.map +1 -1
  45. package/lib/debugLogger.js +1 -1
  46. package/lib/debugLogger.js.map +1 -1
  47. package/lib/errorLogging.d.ts +5 -5
  48. package/lib/errorLogging.d.ts.map +1 -1
  49. package/lib/errorLogging.js +20 -18
  50. package/lib/errorLogging.js.map +1 -1
  51. package/lib/eventEmitterWithErrorHandling.d.ts.map +1 -1
  52. package/lib/eventEmitterWithErrorHandling.js.map +1 -1
  53. package/lib/events.d.ts.map +1 -1
  54. package/lib/events.js.map +1 -1
  55. package/lib/fluidErrorBase.d.ts.map +1 -1
  56. package/lib/fluidErrorBase.js +4 -4
  57. package/lib/fluidErrorBase.js.map +1 -1
  58. package/lib/index.d.ts +2 -2
  59. package/lib/index.d.ts.map +1 -1
  60. package/lib/index.js +2 -2
  61. package/lib/index.js.map +1 -1
  62. package/lib/logger.d.ts.map +1 -1
  63. package/lib/logger.js +14 -13
  64. package/lib/logger.js.map +1 -1
  65. package/lib/mockLogger.d.ts +5 -5
  66. package/lib/mockLogger.d.ts.map +1 -1
  67. package/lib/mockLogger.js +5 -5
  68. package/lib/mockLogger.js.map +1 -1
  69. package/lib/packageVersion.d.ts +1 -1
  70. package/lib/packageVersion.js +1 -1
  71. package/lib/packageVersion.js.map +1 -1
  72. package/lib/sampledTelemetryHelper.d.ts.map +1 -1
  73. package/lib/sampledTelemetryHelper.js.map +1 -1
  74. package/lib/telemetryTypes.d.ts.map +1 -1
  75. package/lib/telemetryTypes.js.map +1 -1
  76. package/lib/thresholdCounter.d.ts.map +1 -1
  77. package/lib/thresholdCounter.js.map +1 -1
  78. package/lib/utils.d.ts.map +1 -1
  79. package/lib/utils.js.map +1 -1
  80. package/package.json +107 -110
  81. package/prettier.config.cjs +1 -1
  82. package/src/config.ts +173 -172
  83. package/src/debugLogger.ts +118 -111
  84. package/src/errorLogging.ts +302 -299
  85. package/src/eventEmitterWithErrorHandling.ts +16 -12
  86. package/src/events.ts +26 -26
  87. package/src/fluidErrorBase.ts +42 -38
  88. package/src/index.ts +26 -16
  89. package/src/logger.ts +541 -533
  90. package/src/mockLogger.ts +113 -107
  91. package/src/packageVersion.ts +1 -1
  92. package/src/sampledTelemetryHelper.ts +122 -122
  93. package/src/telemetryTypes.ts +37 -37
  94. package/src/thresholdCounter.ts +34 -34
  95. package/src/utils.ts +15 -15
  96. package/tsconfig.esnext.json +6 -6
  97. 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<TEvent extends IEvent = IEvent> extends TypedEventEmitter<TEvent> {
14
- constructor(private readonly errorHandler: (eventName: EventEmitterEventType, error: any) => void) {
15
- super();
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
- public emit(event: EventEmitterEventType, ...args: any[]): boolean {
19
- try {
20
- return super.emit(event, ...args);
21
- } catch (error) {
22
- this.errorHandler(event, error);
23
- return true;
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
- emitter: EventEmitter,
16
- logger: ITelemetryLogger,
17
- event: string,
18
- ...args) {
19
- try {
20
- emitter.emit(event, ...args);
21
- } catch (error) {
22
- logger.sendErrorEvent({ eventName: "RaiseEventError", event }, error);
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
- logger: ITelemetryLogger,
36
- emitter: EventEmitter,
37
- connected: boolean,
38
- clientId?: string,
39
- disconnectedReason?: string) {
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
- }
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
  }
@@ -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
- /** 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;
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
- typeof x?.getTelemetryProperties === "function" &&
45
- typeof x?.addTelemetryProperties === "function";
44
+ typeof x?.getTelemetryProperties === "function" &&
45
+ typeof x?.addTelemetryProperties === "function";
46
46
 
47
- export const hasErrorInstanceId = (x: any): x is { errorInstanceId: string; } =>
48
- typeof x?.errorInstanceId === "string";
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
- return typeof e?.errorType === "string" &&
53
- typeof e?.message === "string" &&
54
- hasErrorInstanceId(e) &&
55
- hasTelemetryPropFunctions(e);
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
- return typeof e?.errorType === "string" &&
61
- typeof e?.message === "string" &&
62
- hasTelemetryPropFunctions(e);
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
- MonitoringContext,
7
- IConfigProviderBase,
8
- sessionStorageConfigProvider,
9
- mixinMonitoringContext,
10
- IConfigProvider,
11
- ConfigTypes,
12
- loggerToMonitoringContext,
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 { connectedEventName, disconnectedEventName, raiseConnectedEvent, safeRaiseEvent } from "./events";
32
- export { hasErrorInstanceId, IFluidErrorBase, isFluidError, isValidLegacyError } from "./fluidErrorBase";
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
- ITelemetryEventExt,
55
- ITelemetryGenericEventExt,
56
- ITelemetryErrorEventExt,
57
- ITelemetryPerformanceEventExt,
58
- ITelemetryLoggerExt,
59
- ITaggedTelemetryPropertyTypeExt,
60
- ITelemetryPropertiesExt,
64
+ ITelemetryEventExt,
65
+ ITelemetryGenericEventExt,
66
+ ITelemetryErrorEventExt,
67
+ ITelemetryPerformanceEventExt,
68
+ ITelemetryLoggerExt,
69
+ ITaggedTelemetryPropertyTypeExt,
70
+ ITelemetryPropertiesExt,
61
71
  } from "./telemetryTypes";