@fluidframework/telemetry-utils 2.102.0 → 2.110.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 (49) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/DEV.md +0 -14
  3. package/api-report/telemetry-utils.legacy.beta.api.md +1 -26
  4. package/dist/api.d.ts +0 -1
  5. package/dist/api.d.ts.map +1 -1
  6. package/dist/api.js.map +1 -1
  7. package/dist/errorLogging.js +1 -1
  8. package/dist/errorLogging.js.map +1 -1
  9. package/dist/internal.d.ts +0 -11
  10. package/dist/internal.d.ts.map +1 -1
  11. package/dist/internal.js.map +1 -1
  12. package/dist/legacy.d.ts +0 -4
  13. package/dist/logger.d.ts +16 -4
  14. package/dist/logger.d.ts.map +1 -1
  15. package/dist/logger.js +22 -1
  16. package/dist/logger.js.map +1 -1
  17. package/dist/main.d.ts +1 -1
  18. package/dist/main.d.ts.map +1 -1
  19. package/dist/main.js.map +1 -1
  20. package/dist/telemetryTypes.d.ts +9 -50
  21. package/dist/telemetryTypes.d.ts.map +1 -1
  22. package/dist/telemetryTypes.js.map +1 -1
  23. package/lib/api.d.ts +0 -1
  24. package/lib/api.d.ts.map +1 -1
  25. package/lib/api.js.map +1 -1
  26. package/lib/errorLogging.js +1 -1
  27. package/lib/errorLogging.js.map +1 -1
  28. package/lib/internal.d.ts +0 -11
  29. package/lib/internal.d.ts.map +1 -1
  30. package/lib/internal.js.map +1 -1
  31. package/lib/legacy.d.ts +0 -4
  32. package/lib/logger.d.ts +16 -4
  33. package/lib/logger.d.ts.map +1 -1
  34. package/lib/logger.js +22 -1
  35. package/lib/logger.js.map +1 -1
  36. package/lib/main.d.ts +1 -1
  37. package/lib/main.d.ts.map +1 -1
  38. package/lib/main.js.map +1 -1
  39. package/lib/telemetryTypes.d.ts +9 -50
  40. package/lib/telemetryTypes.d.ts.map +1 -1
  41. package/lib/telemetryTypes.js.map +1 -1
  42. package/package.json +29 -9
  43. package/src/api.ts +0 -9
  44. package/src/errorLogging.ts +1 -1
  45. package/src/internal.ts +0 -13
  46. package/src/logger.ts +40 -7
  47. package/src/main.ts +1 -0
  48. package/src/telemetryTypes.ts +16 -61
  49. package/tsconfig.json +0 -1
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import type { ITelemetryBaseLogger, LogLevel, Tagged } from "@fluidframework/core-interfaces";
5
+ import type { ErasedType, ITelemetryBaseLogger, LogLevel, Tagged } from "@fluidframework/core-interfaces";
6
6
  /**
7
7
  * The categories FF uses when instrumenting the code.
8
8
  *
@@ -11,9 +11,8 @@ import type { ITelemetryBaseLogger, LogLevel, Tagged } from "@fluidframework/cor
11
11
  * error - Error log event, ideally 0 of these are logged during a session
12
12
  *
13
13
  * performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking
14
- * @deprecated This type is being removed without a replacement.
15
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
16
- * @legacy @beta
14
+ *
15
+ * @internal
17
16
  */
18
17
  export type TelemetryEventCategory = "generic" | "error" | "performance";
19
18
  /**
@@ -51,9 +50,7 @@ export interface ITelemetryEventExt extends ITelemetryPropertiesExt {
51
50
  /**
52
51
  * Informational (non-error) telemetry event
53
52
  * @remarks Maps to category = "generic"
54
- * @deprecated This type is being removed without a replacement.
55
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
56
- * @legacy @beta
53
+ * @internal
57
54
  */
58
55
  export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
59
56
  /**
@@ -69,9 +66,7 @@ export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
69
66
  /**
70
67
  * Error telemetry event.
71
68
  * @remarks Maps to category = "error"
72
- * @deprecated This type is being removed without a replacement.
73
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
74
- * @legacy @beta
69
+ * @internal
75
70
  */
76
71
  export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
77
72
  /**
@@ -82,9 +77,7 @@ export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
82
77
  /**
83
78
  * Performance telemetry event.
84
79
  * @remarks Maps to category = "performance"
85
- * @deprecated This type is being removed without a replacement.
86
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
87
- * @legacy @beta
80
+ * @internal
88
81
  */
89
82
  export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {
90
83
  /**
@@ -93,15 +86,9 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt
93
86
  duration?: number;
94
87
  }
95
88
  /**
96
- * This is the externally facing type for a FluidFramework internal telemetry logger wrapper.
97
- *
98
- * @remarks
99
- * The methods if this interface are not to be used directly by consumers and are all
100
- * deprecated to removed without replacement. This type is not deprecated and will
101
- * transition to an erased type to handle cases where "internal" `ITelemetryLoggerExt`
102
- * previously leaked out.
89
+ * Handle for an extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} used internally within the Fluid Framework.
103
90
  *
104
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for deprecation and breaking change details.
91
+ * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for past method deprecation and breaking change details.
105
92
  *
106
93
  * @privateRemarks
107
94
  * External APIs taking in an `ITelemetryLoggerExt` ideally should be updated to
@@ -111,35 +98,7 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt
111
98
  * @legacy
112
99
  * @beta
113
100
  */
114
- export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
115
- /**
116
- * Send an information telemetry event.
117
- * @param event - Event to send.
118
- * @param error - Optional error object to log.
119
- * @param logLevel - Optional level of the log. If undefined, the logLevel should be treated as {@link @fluidframework/core-interfaces#LogLevel.essential}.
120
- * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevel.essential}.
121
- * @deprecated This method is being removed without a replacement.
122
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
123
- */
124
- sendTelemetryEvent(event: ITelemetryGenericEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.info): void;
125
- /**
126
- * Send an error telemetry event.
127
- * @param event - Event to send.
128
- * @param error - Optional error object to log.
129
- * @deprecated This method is being removed without a replacement.
130
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
131
- */
132
- sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
133
- /**
134
- * Send a performance telemetry event.
135
- * @param event - Event to send
136
- * @param error - Optional error object to log.
137
- * @param logLevel - Optional level of the log. If undefined, the logLevel should be treated as {@link @fluidframework/core-interfaces#LogLevel.essential}.
138
- * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevel.essential}.
139
- * @deprecated This method is being removed without a replacement.
140
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
141
- */
142
- sendPerformanceEvent(event: ITelemetryPerformanceEventExt, error?: unknown, logLevel?: typeof LogLevel.verbose | typeof LogLevel.info): void;
101
+ export interface ITelemetryLoggerExt extends ErasedType<"TelemetryLoggerExt">, ITelemetryBaseLogger {
143
102
  }
144
103
  /**
145
104
  * An extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} which allows for more lenient event types.
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryTypes.d.ts","sourceRoot":"","sources":["../src/telemetryTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9F;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,MAAM,6BAA6B,GACtC,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAEzF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC3C,MAAM,EACN,6BAA6B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CACrE,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IAClE;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACzE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACvE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC/E;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAChE;;;;;;;;OAQG;IACH,kBAAkB,CACjB,KAAK,EAAE,yBAAyB,EAChC,KAAK,CAAC,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,OAAO,QAAQ,CAAC,IAAI,GACvD,IAAI,CAAC;IAER;;;;;;OAMG;IACH,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtE;;;;;;;;OAQG;IACH,oBAAoB,CACnB,KAAK,EAAE,6BAA6B,EACpC,KAAK,CAAC,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,OAAO,QAAQ,CAAC,IAAI,GACvD,IAAI,CAAC;CACR;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC/D;;;;;;OAMG;IACH,kBAAkB,CACjB,KAAK,EAAE,yBAAyB,EAChC,KAAK,CAAC,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,OAAO,QAAQ,CAAC,IAAI,GACvD,IAAI,CAAC;IAER;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtE;;;;;;OAMG;IACH,oBAAoB,CACnB,KAAK,EAAE,6BAA6B,EACpC,KAAK,CAAC,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,OAAO,QAAQ,CAAC,IAAI,GACvD,IAAI,CAAC;CACR"}
1
+ {"version":3,"file":"telemetryTypes.d.ts","sourceRoot":"","sources":["../src/telemetryTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,UAAU,EACV,oBAAoB,EACpB,QAAQ,EACR,MAAM,EACN,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,MAAM,6BAA6B,GACtC,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAEzF;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC3C,MAAM,EACN,6BAA6B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CACrE,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IAClE;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACzE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACvE;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC/E;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAChB,SAAQ,UAAU,CAAC,oBAAoB,CAAC,EACvC,oBAAoB;CAAG;AAEzB;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC/D;;;;;;OAMG;IACH,kBAAkB,CACjB,KAAK,EAAE,yBAAyB,EAChC,KAAK,CAAC,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,OAAO,QAAQ,CAAC,IAAI,GACvD,IAAI,CAAC;IAER;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtE;;;;;;OAMG;IACH,oBAAoB,CACnB,KAAK,EAAE,6BAA6B,EACpC,KAAK,CAAC,EAAE,OAAO,EACf,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC,OAAO,GAAG,OAAO,QAAQ,CAAC,IAAI,GACvD,IAAI,CAAC;CACR"}
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryTypes.js","sourceRoot":"","sources":["../src/telemetryTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { ITelemetryBaseLogger, LogLevel, Tagged } from \"@fluidframework/core-interfaces\";\n\n/**\n * The categories FF uses when instrumenting the code.\n *\n * generic - Informational log event\n *\n * error - Error log event, ideally 0 of these are logged during a session\n *\n * performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking\n * @deprecated This type is being removed without a replacement.\n * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n * @legacy @beta\n */\nexport type TelemetryEventCategory = \"generic\" | \"error\" | \"performance\";\n\n/**\n * Property types that can be logged.\n *\n * @remarks\n * Includes extra types beyond {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType}, which must be\n * converted before sending to a base logger.\n * @legacy @beta\n */\nexport type TelemetryEventPropertyTypeExt =\n\t| string\n\t| number\n\t| boolean\n\t| undefined\n\t| (string | number | boolean)[]\n\t| Record<string, string | number | boolean | undefined | (string | number | boolean)[]>;\n\n/**\n * JSON-serializable properties, which will be logged with telemetry.\n * @legacy @beta\n */\nexport type ITelemetryPropertiesExt = Record<\n\tstring,\n\tTelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>\n>;\n\n/**\n * Interface for logging telemetry statements.\n * @remarks May contain any number of properties that get serialized as json payload.\n * @param category - category of the event, like \"error\", \"performance\", \"generic\", etc.\n * @param eventName - name of the event.\n *\n * @internal\n */\nexport interface ITelemetryEventExt extends ITelemetryPropertiesExt {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.category}\n\t */\n\tcategory: string;\n\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.eventName}\n\t */\n\teventName: string;\n}\n\n/**\n * Informational (non-error) telemetry event\n * @remarks Maps to category = \"generic\"\n * @deprecated This type is being removed without a replacement.\n * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n * @legacy @beta\n */\nexport interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.eventName}\n\t */\n\teventName: string;\n\n\t/**\n\t * Optional event {@link @fluidframework/core-interfaces#ITelemetryBaseEvent.category}.\n\t * @defaultValue \"generic\"\n\t */\n\tcategory?: TelemetryEventCategory;\n}\n\n/**\n * Error telemetry event.\n * @remarks Maps to category = \"error\"\n * @deprecated This type is being removed without a replacement.\n * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n * @legacy @beta\n */\nexport interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.eventName}\n\t */\n\teventName: string;\n}\n\n/**\n * Performance telemetry event.\n * @remarks Maps to category = \"performance\"\n * @deprecated This type is being removed without a replacement.\n * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n * @legacy @beta\n */\nexport interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {\n\t/**\n\t * Duration of event (optional)\n\t */\n\tduration?: number;\n}\n\n/**\n * This is the externally facing type for a FluidFramework internal telemetry logger wrapper.\n *\n * @remarks\n * The methods if this interface are not to be used directly by consumers and are all\n * deprecated to removed without replacement. This type is not deprecated and will\n * transition to an erased type to handle cases where \"internal\" `ITelemetryLoggerExt`\n * previously leaked out.\n *\n * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for deprecation and breaking change details.\n *\n * @privateRemarks\n * External APIs taking in an `ITelemetryLoggerExt` ideally should be updated to\n * accept `ITelemetryBaseLogger` instead.\n *\n * @sealed\n * @legacy\n * @beta\n */\nexport interface ITelemetryLoggerExt extends ITelemetryBaseLogger {\n\t/**\n\t * Send an information telemetry event.\n\t * @param event - Event to send.\n\t * @param error - Optional error object to log.\n\t * @param logLevel - Optional level of the log. If undefined, the logLevel should be treated as {@link @fluidframework/core-interfaces#LogLevel.essential}.\n\t * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevel.essential}.\n\t * @deprecated This method is being removed without a replacement.\n\t * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n\t */\n\tsendTelemetryEvent(\n\t\tevent: ITelemetryGenericEventExt,\n\t\terror?: unknown,\n\t\tlogLevel?: typeof LogLevel.verbose | typeof LogLevel.info,\n\t): void;\n\n\t/**\n\t * Send an error telemetry event.\n\t * @param event - Event to send.\n\t * @param error - Optional error object to log.\n\t * @deprecated This method is being removed without a replacement.\n\t * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n\t */\n\tsendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;\n\n\t/**\n\t * Send a performance telemetry event.\n\t * @param event - Event to send\n\t * @param error - Optional error object to log.\n\t * @param logLevel - Optional level of the log. If undefined, the logLevel should be treated as {@link @fluidframework/core-interfaces#LogLevel.essential}.\n\t * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevel.essential}.\n\t * @deprecated This method is being removed without a replacement.\n\t * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.\n\t */\n\tsendPerformanceEvent(\n\t\tevent: ITelemetryPerformanceEventExt,\n\t\terror?: unknown,\n\t\tlogLevel?: typeof LogLevel.verbose | typeof LogLevel.info,\n\t): void;\n}\n\n/**\n * An extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} which allows for more lenient event types.\n *\n * @remarks\n * This interface is meant to be used internally within the Fluid Framework,\n * and `ITelemetryBaseLogger` should be used when loggers are passed between layers.\n * @internal\n */\nexport interface TelemetryLoggerExt extends ITelemetryBaseLogger {\n\t/**\n\t * Send an information telemetry event.\n\t * @param event - Event to send.\n\t * @param error - Optional error object to log.\n\t * @param logLevel - Optional level of the log. If undefined, the logLevel will be treated as {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t */\n\tsendTelemetryEvent(\n\t\tevent: ITelemetryGenericEventExt,\n\t\terror?: unknown,\n\t\tlogLevel?: typeof LogLevel.verbose | typeof LogLevel.info,\n\t): void;\n\n\t/**\n\t * Send an error telemetry event.\n\t * @param event - Event to send.\n\t * @param error - Optional error object to log.\n\t */\n\tsendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;\n\n\t/**\n\t * Send a performance telemetry event.\n\t * @param event - Event to send\n\t * @param error - Optional error object to log.\n\t * @param logLevel - Optional level of the log. If undefined, the logLevel will be treated as {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t */\n\tsendPerformanceEvent(\n\t\tevent: ITelemetryPerformanceEventExt,\n\t\terror?: unknown,\n\t\tlogLevel?: typeof LogLevel.verbose | typeof LogLevel.info,\n\t): void;\n}\n"]}
1
+ {"version":3,"file":"telemetryTypes.js","sourceRoot":"","sources":["../src/telemetryTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type {\n\tErasedType,\n\tITelemetryBaseLogger,\n\tLogLevel,\n\tTagged,\n} from \"@fluidframework/core-interfaces\";\n\n/**\n * The categories FF uses when instrumenting the code.\n *\n * generic - Informational log event\n *\n * error - Error log event, ideally 0 of these are logged during a session\n *\n * performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking\n *\n * @internal\n */\nexport type TelemetryEventCategory = \"generic\" | \"error\" | \"performance\";\n\n/**\n * Property types that can be logged.\n *\n * @remarks\n * Includes extra types beyond {@link @fluidframework/core-interfaces#TelemetryBaseEventPropertyType}, which must be\n * converted before sending to a base logger.\n * @legacy @beta\n */\nexport type TelemetryEventPropertyTypeExt =\n\t| string\n\t| number\n\t| boolean\n\t| undefined\n\t| (string | number | boolean)[]\n\t| Record<string, string | number | boolean | undefined | (string | number | boolean)[]>;\n\n/**\n * JSON-serializable properties, which will be logged with telemetry.\n * @legacy @beta\n */\nexport type ITelemetryPropertiesExt = Record<\n\tstring,\n\tTelemetryEventPropertyTypeExt | Tagged<TelemetryEventPropertyTypeExt>\n>;\n\n/**\n * Interface for logging telemetry statements.\n * @remarks May contain any number of properties that get serialized as json payload.\n * @param category - category of the event, like \"error\", \"performance\", \"generic\", etc.\n * @param eventName - name of the event.\n *\n * @internal\n */\nexport interface ITelemetryEventExt extends ITelemetryPropertiesExt {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.category}\n\t */\n\tcategory: string;\n\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.eventName}\n\t */\n\teventName: string;\n}\n\n/**\n * Informational (non-error) telemetry event\n * @remarks Maps to category = \"generic\"\n * @internal\n */\nexport interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.eventName}\n\t */\n\teventName: string;\n\n\t/**\n\t * Optional event {@link @fluidframework/core-interfaces#ITelemetryBaseEvent.category}.\n\t * @defaultValue \"generic\"\n\t */\n\tcategory?: TelemetryEventCategory;\n}\n\n/**\n * Error telemetry event.\n * @remarks Maps to category = \"error\"\n * @internal\n */\nexport interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {\n\t/**\n\t * {@inheritDoc @fluidframework/core-interfaces#ITelemetryBaseEvent.eventName}\n\t */\n\teventName: string;\n}\n\n/**\n * Performance telemetry event.\n * @remarks Maps to category = \"performance\"\n * @internal\n */\nexport interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {\n\t/**\n\t * Duration of event (optional)\n\t */\n\tduration?: number;\n}\n\n/**\n * Handle for an extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} used internally within the Fluid Framework.\n *\n * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for past method deprecation and breaking change details.\n *\n * @privateRemarks\n * External APIs taking in an `ITelemetryLoggerExt` ideally should be updated to\n * accept `ITelemetryBaseLogger` instead.\n *\n * @sealed\n * @legacy\n * @beta\n */\nexport interface ITelemetryLoggerExt\n\textends ErasedType<\"TelemetryLoggerExt\">,\n\t\tITelemetryBaseLogger {}\n\n/**\n * An extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} which allows for more lenient event types.\n *\n * @remarks\n * This interface is meant to be used internally within the Fluid Framework,\n * and `ITelemetryBaseLogger` should be used when loggers are passed between layers.\n * @internal\n */\nexport interface TelemetryLoggerExt extends ITelemetryBaseLogger {\n\t/**\n\t * Send an information telemetry event.\n\t * @param event - Event to send.\n\t * @param error - Optional error object to log.\n\t * @param logLevel - Optional level of the log. If undefined, the logLevel will be treated as {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t */\n\tsendTelemetryEvent(\n\t\tevent: ITelemetryGenericEventExt,\n\t\terror?: unknown,\n\t\tlogLevel?: typeof LogLevel.verbose | typeof LogLevel.info,\n\t): void;\n\n\t/**\n\t * Send an error telemetry event.\n\t * @param event - Event to send.\n\t * @param error - Optional error object to log.\n\t */\n\tsendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;\n\n\t/**\n\t * Send a performance telemetry event.\n\t * @param event - Event to send\n\t * @param error - Optional error object to log.\n\t * @param logLevel - Optional level of the log. If undefined, the logLevel will be treated as {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevelConst.essential | LogLevel.essential}.\n\t */\n\tsendPerformanceEvent(\n\t\tevent: ITelemetryPerformanceEventExt,\n\t\terror?: unknown,\n\t\tlogLevel?: typeof LogLevel.verbose | typeof LogLevel.info,\n\t): void;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/telemetry-utils",
3
- "version": "2.102.0",
3
+ "version": "2.110.0",
4
4
  "description": "Collection of telemetry relates utilities for Fluid",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -69,22 +69,22 @@
69
69
  "temp-directory": "nyc/.nyc_output"
70
70
  },
71
71
  "dependencies": {
72
- "@fluid-internal/client-utils": "~2.102.0",
73
- "@fluidframework/core-interfaces": "~2.102.0",
74
- "@fluidframework/core-utils": "~2.102.0",
75
- "@fluidframework/driver-definitions": "~2.102.0",
72
+ "@fluid-internal/client-utils": "~2.110.0",
73
+ "@fluidframework/core-interfaces": "~2.110.0",
74
+ "@fluidframework/core-utils": "~2.110.0",
75
+ "@fluidframework/driver-definitions": "~2.110.0",
76
76
  "debug": "^4.3.4",
77
77
  "uuid": "^11.1.0"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@arethetypeswrong/cli": "^0.18.2",
81
81
  "@biomejs/biome": "~2.4.5",
82
- "@fluid-internal/mocha-test-setup": "~2.102.0",
82
+ "@fluid-internal/mocha-test-setup": "~2.110.0",
83
83
  "@fluid-tools/build-cli": "^0.65.0",
84
84
  "@fluidframework/build-common": "^2.0.3",
85
85
  "@fluidframework/build-tools": "^0.65.0",
86
- "@fluidframework/eslint-config-fluid": "^9.0.0",
87
- "@fluidframework/telemetry-utils-previous": "npm:@fluidframework/telemetry-utils@2.101.0",
86
+ "@fluidframework/eslint-config-fluid": "^13.0.0",
87
+ "@fluidframework/telemetry-utils-previous": "npm:@fluidframework/telemetry-utils@2.103.0",
88
88
  "@microsoft/api-extractor": "7.58.1",
89
89
  "@types/debug": "^4.1.5",
90
90
  "@types/mocha": "^10.0.10",
@@ -103,7 +103,27 @@
103
103
  "typescript": "~5.4.5"
104
104
  },
105
105
  "typeValidation": {
106
- "broken": {},
106
+ "broken": {
107
+ "Interface_ITelemetryErrorEventExt": {
108
+ "backCompat": false,
109
+ "forwardCompat": false
110
+ },
111
+ "Interface_ITelemetryGenericEventExt": {
112
+ "backCompat": false,
113
+ "forwardCompat": false
114
+ },
115
+ "Interface_ITelemetryLoggerExt": {
116
+ "backCompat": false
117
+ },
118
+ "Interface_ITelemetryPerformanceEventExt": {
119
+ "backCompat": false,
120
+ "forwardCompat": false
121
+ },
122
+ "TypeAlias_TelemetryEventCategory": {
123
+ "backCompat": false,
124
+ "forwardCompat": false
125
+ }
126
+ },
107
127
  "entrypoint": "legacy"
108
128
  },
109
129
  "scripts": {
package/src/api.ts CHANGED
@@ -6,15 +6,6 @@
6
6
  // eslint-disable-next-line no-restricted-syntax
7
7
  export * from "./main.js";
8
8
 
9
- // Additional APIs that are deprecated and thus left out of the common export set.
10
- export type {
11
- ITelemetryErrorEventExt,
12
- ITelemetryGenericEventExt,
13
- ITelemetryLoggerExt,
14
- ITelemetryPerformanceEventExt,
15
- TelemetryEventCategory,
16
- } from "./telemetryTypes.js";
17
-
18
9
  // ----------------------------------------------------------------------------
19
10
  // Export `createChildLogger` helper without internal `TelemetryLoggerExt`
20
11
 
@@ -128,7 +128,7 @@ export function normalizeError(
128
128
  const { message, stack } = extractLogSafeErrorProperties(error, false /* sanitizeStack */);
129
129
  const fluidError: IFluidErrorBase = new NormalizedLoggingError({
130
130
  message,
131
- stack,
131
+ ...(stack === undefined ? {} : { stack }),
132
132
  });
133
133
 
134
134
  // We need to preserve these properties which are used in a non-typesafe way throughout driver code (see #8743)
package/src/internal.ts CHANGED
@@ -102,16 +102,3 @@ export type {
102
102
  } from "./telemetryTypesUndeprecated.js";
103
103
  export { TelemetryEventBatcher } from "./telemetryEventBatcher.js";
104
104
  export { allowIncompatibleLayersKey, validateLayerCompatibility } from "./layerCompatError.js";
105
-
106
- import type { TelemetryLoggerExt } from "./telemetryTypes.js";
107
-
108
- /**
109
- * Renamed version of TelemetryLoggerExt for convenience of internal use.
110
- * Where "`ITelemetryLoggerExt`" is exposed in customer API surface, true
111
- * `ITelemetryLoggerExt` (that is an erased type) must be used. To access
112
- * use `@fluidframework/telemetry-utils/legacy` import spec. All internal
113
- * usages should be promoted to `TelemetryLoggerExt` naming.
114
- *
115
- * @internal
116
- */
117
- export type ITelemetryLoggerExt = TelemetryLoggerExt;
package/src/logger.ts CHANGED
@@ -430,7 +430,7 @@ function toEitherTelemetryLoggerExt(
430
430
  * exactly an {@link ITelemetryLoggerExt}.
431
431
  */
432
432
  export function createChildLogger(props?: {
433
- logger?: ITelemetryBaseLogger;
433
+ logger?: ITelemetryBaseLogger | undefined;
434
434
  namespace?: string;
435
435
  properties?: ITelemetryLoggerPropertyBags;
436
436
  }): TelemetryLoggerExt & ITelemetryLoggerExt {
@@ -453,8 +453,8 @@ export class ChildLogger extends TelemetryLogger {
453
453
  * @param properties - Base properties to add to all events
454
454
  */
455
455
  public static create(
456
- baseLogger?: ITelemetryBaseLogger,
457
- namespace?: string,
456
+ baseLogger: ITelemetryBaseLogger | undefined,
457
+ namespace: string | undefined,
458
458
  properties?: ITelemetryLoggerPropertyBags,
459
459
  ): TelemetryLogger {
460
460
  // if we are creating a child of a child, rather than nest, which will increase
@@ -675,7 +675,11 @@ export class MultiSinkLogger extends TelemetryLogger {
675
675
  export interface IPerformanceEventMarkers {
676
676
  start?: true;
677
677
  end?: true;
678
- cancel?: "generic" | "error"; // tells wether to issue "generic" or "error" category cancel event
678
+ cancel?: "generic" | "error"; // tells whether to issue "generic" or "error" category cancel event
679
+ /**
680
+ * If specified, _end events whose duration is greater than this threshold are logged as essential.
681
+ */
682
+ endEventEssentialDurationThresholdMs?: number;
679
683
  }
680
684
 
681
685
  /**
@@ -801,9 +805,9 @@ export class PerformanceEvent {
801
805
  return performanceNow() - this.startTime;
802
806
  }
803
807
 
804
- private event?: ITelemetryGenericEventExt;
808
+ private event: ITelemetryGenericEventExt | undefined;
805
809
  private readonly startTime = performanceNow();
806
- private startMark?: string;
810
+ private startMark: string | undefined;
807
811
 
808
812
  private constructor(
809
813
  private readonly logger: TelemetryLoggerExt,
@@ -895,7 +899,36 @@ export class PerformanceEvent {
895
899
  event.duration = this.duration;
896
900
  }
897
901
 
898
- this.logger.sendPerformanceEvent(event, error, this.logLevel);
902
+ this.logger.sendPerformanceEvent(event, error, this.getLogLevel(eventNameSuffix, event));
903
+ }
904
+
905
+ /**
906
+ * Get the LogLevel for performance events.
907
+ * @param eventNameSuffix - The suffix of the event name.
908
+ * @param event - The telemetry performance event.
909
+ * @returns The log level for the event.
910
+ *
911
+ */
912
+ private getLogLevel(
913
+ eventNameSuffix: string,
914
+ event: ITelemetryPerformanceEventExt,
915
+ ): typeof LogLevel.verbose | typeof LogLevel.info | undefined {
916
+ if (eventNameSuffix === "cancel") {
917
+ // When undefined is returned, the LogLevel will be set to LogLevel.essential. See ChildLogger.send
918
+ return undefined;
919
+ }
920
+
921
+ if (
922
+ eventNameSuffix === "end" &&
923
+ event.duration !== undefined &&
924
+ this.markers.endEventEssentialDurationThresholdMs !== undefined &&
925
+ event.duration > this.markers.endEventEssentialDurationThresholdMs
926
+ ) {
927
+ // When undefined is returned, the LogLevel will be set to LogLevel.essential. See ChildLogger.send
928
+ return undefined;
929
+ }
930
+
931
+ return this.logLevel;
899
932
  }
900
933
 
901
934
  private static readonly eventHits = new Map<string, number>();
package/src/main.ts CHANGED
@@ -14,6 +14,7 @@ export type {
14
14
  TelemetryEventPropertyTypes,
15
15
  } from "./logger.js";
16
16
  export type {
17
+ ITelemetryLoggerExt,
17
18
  ITelemetryPropertiesExt,
18
19
  TelemetryEventPropertyTypeExt,
19
20
  } from "./telemetryTypes.js";
@@ -3,7 +3,12 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { ITelemetryBaseLogger, LogLevel, Tagged } from "@fluidframework/core-interfaces";
6
+ import type {
7
+ ErasedType,
8
+ ITelemetryBaseLogger,
9
+ LogLevel,
10
+ Tagged,
11
+ } from "@fluidframework/core-interfaces";
7
12
 
8
13
  /**
9
14
  * The categories FF uses when instrumenting the code.
@@ -13,9 +18,8 @@ import type { ITelemetryBaseLogger, LogLevel, Tagged } from "@fluidframework/cor
13
18
  * error - Error log event, ideally 0 of these are logged during a session
14
19
  *
15
20
  * performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking
16
- * @deprecated This type is being removed without a replacement.
17
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
18
- * @legacy @beta
21
+ *
22
+ * @internal
19
23
  */
20
24
  export type TelemetryEventCategory = "generic" | "error" | "performance";
21
25
 
@@ -67,9 +71,7 @@ export interface ITelemetryEventExt extends ITelemetryPropertiesExt {
67
71
  /**
68
72
  * Informational (non-error) telemetry event
69
73
  * @remarks Maps to category = "generic"
70
- * @deprecated This type is being removed without a replacement.
71
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
72
- * @legacy @beta
74
+ * @internal
73
75
  */
74
76
  export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
75
77
  /**
@@ -87,9 +89,7 @@ export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt {
87
89
  /**
88
90
  * Error telemetry event.
89
91
  * @remarks Maps to category = "error"
90
- * @deprecated This type is being removed without a replacement.
91
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
92
- * @legacy @beta
92
+ * @internal
93
93
  */
94
94
  export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
95
95
  /**
@@ -101,9 +101,7 @@ export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt {
101
101
  /**
102
102
  * Performance telemetry event.
103
103
  * @remarks Maps to category = "performance"
104
- * @deprecated This type is being removed without a replacement.
105
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
106
- * @legacy @beta
104
+ * @internal
107
105
  */
108
106
  export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt {
109
107
  /**
@@ -113,15 +111,9 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt
113
111
  }
114
112
 
115
113
  /**
116
- * This is the externally facing type for a FluidFramework internal telemetry logger wrapper.
117
- *
118
- * @remarks
119
- * The methods if this interface are not to be used directly by consumers and are all
120
- * deprecated to removed without replacement. This type is not deprecated and will
121
- * transition to an erased type to handle cases where "internal" `ITelemetryLoggerExt`
122
- * previously leaked out.
114
+ * Handle for an extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} used internally within the Fluid Framework.
123
115
  *
124
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for deprecation and breaking change details.
116
+ * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for past method deprecation and breaking change details.
125
117
  *
126
118
  * @privateRemarks
127
119
  * External APIs taking in an `ITelemetryLoggerExt` ideally should be updated to
@@ -131,46 +123,9 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt
131
123
  * @legacy
132
124
  * @beta
133
125
  */
134
- export interface ITelemetryLoggerExt extends ITelemetryBaseLogger {
135
- /**
136
- * Send an information telemetry event.
137
- * @param event - Event to send.
138
- * @param error - Optional error object to log.
139
- * @param logLevel - Optional level of the log. If undefined, the logLevel should be treated as {@link @fluidframework/core-interfaces#LogLevel.essential}.
140
- * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevel.essential}.
141
- * @deprecated This method is being removed without a replacement.
142
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
143
- */
144
- sendTelemetryEvent(
145
- event: ITelemetryGenericEventExt,
146
- error?: unknown,
147
- logLevel?: typeof LogLevel.verbose | typeof LogLevel.info,
148
- ): void;
149
-
150
- /**
151
- * Send an error telemetry event.
152
- * @param event - Event to send.
153
- * @param error - Optional error object to log.
154
- * @deprecated This method is being removed without a replacement.
155
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
156
- */
157
- sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void;
158
-
159
- /**
160
- * Send a performance telemetry event.
161
- * @param event - Event to send
162
- * @param error - Optional error object to log.
163
- * @param logLevel - Optional level of the log. If undefined, the logLevel should be treated as {@link @fluidframework/core-interfaces#LogLevel.essential}.
164
- * If the event's category is `error`, the logLevel will be upgraded to {@link @fluidframework/core-interfaces#LogLevel.essential}.
165
- * @deprecated This method is being removed without a replacement.
166
- * @see {@link https://github.com/microsoft/FluidFramework/issues/26910 | Issue #26910} for details.
167
- */
168
- sendPerformanceEvent(
169
- event: ITelemetryPerformanceEventExt,
170
- error?: unknown,
171
- logLevel?: typeof LogLevel.verbose | typeof LogLevel.info,
172
- ): void;
173
- }
126
+ export interface ITelemetryLoggerExt
127
+ extends ErasedType<"TelemetryLoggerExt">,
128
+ ITelemetryBaseLogger {}
174
129
 
175
130
  /**
176
131
  * An extended {@link @fluidframework/core-interfaces#ITelemetryBaseLogger} which allows for more lenient event types.
package/tsconfig.json CHANGED
@@ -4,7 +4,6 @@
4
4
  "compilerOptions": {
5
5
  "rootDir": "./src",
6
6
  "outDir": "./lib",
7
- "exactOptionalPropertyTypes": false,
8
7
  },
9
8
  "include": ["src/**/*"],
10
9
  }