@fluidframework/telemetry-utils
Advanced tools
Comparing version 2.0.0-dev-rc.3.0.0.254866 to 2.0.0-dev-rc.4.0.0.261659
@@ -196,3 +196,3 @@ ## API Report File for "@fluidframework/telemetry-utils" | ||
// @public | ||
// @alpha | ||
export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt { | ||
@@ -211,3 +211,3 @@ // (undocumented) | ||
// @public | ||
// @alpha | ||
export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt { | ||
@@ -220,3 +220,3 @@ // (undocumented) | ||
// @public | ||
// @alpha | ||
export interface ITelemetryLoggerExt extends ITelemetryBaseLogger { | ||
@@ -242,3 +242,3 @@ sendErrorEvent(event: ITelemetryErrorEventExt, error?: unknown): void; | ||
// @public | ||
// @alpha | ||
export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt { | ||
@@ -249,3 +249,3 @@ // (undocumented) | ||
// @public | ||
// @alpha | ||
export interface ITelemetryPropertiesExt { | ||
@@ -274,3 +274,3 @@ // (undocumented) | ||
// @internal | ||
// @alpha | ||
export class MockLogger implements ITelemetryBaseLogger { | ||
@@ -327,3 +327,3 @@ constructor(minLogLevel?: LogLevel | undefined); | ||
export class PerformanceEvent { | ||
protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean); | ||
protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean); | ||
// (undocumented) | ||
@@ -338,5 +338,5 @@ cancel(props?: ITelemetryPropertiesExt, error?: unknown): void; | ||
reportProgress(props?: ITelemetryPropertiesExt, eventNameSuffix?: string): void; | ||
static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean): PerformanceEvent; | ||
static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean): PerformanceEvent; | ||
static timedExec<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => T, markers?: IPerformanceEventMarkers, sampleThreshold?: number): T; | ||
static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, sampleThreshold?: number): Promise<T>; | ||
static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, sampleThreshold?: number): Promise<T>; | ||
} | ||
@@ -393,6 +393,6 @@ | ||
// @public | ||
// @alpha | ||
export type TelemetryEventCategory = "generic" | "error" | "performance"; | ||
// @public | ||
// @alpha | ||
export type TelemetryEventPropertyTypeExt = string | number | boolean | undefined | (string | number | boolean)[] | { | ||
@@ -404,3 +404,3 @@ [key: string]: // Flat objects can have the same properties as the event itself | ||
// @alpha (undocumented) | ||
export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string]; | ||
export type TelemetryEventPropertyTypes = ITelemetryPropertiesExt[string]; | ||
@@ -407,0 +407,0 @@ // @internal |
# @fluidframework/telemetry-utils | ||
## 2.0.0-rc.3.0.0 | ||
### Major Changes | ||
- Packages now use package.json "exports" and require modern module resolution [97d68aa06b](https://github.com/microsoft/FluidFramework/commit/97d68aa06bd5c022ecb026655814aea222a062ae) | ||
Fluid Framework packages have been updated to use the [package.json "exports" | ||
field](https://nodejs.org/docs/latest-v18.x/api/packages.html#exports) to define explicit entry points for both | ||
TypeScript types and implementation code. | ||
This means that using Fluid Framework packages require the following TypeScript settings in tsconfig.json: | ||
- `"moduleResolution": "Node16"` with `"module": "Node16"` | ||
- `"moduleResolution": "Bundler"` with `"module": "ESNext"` | ||
We recommend using Node16/Node16 unless absolutely necessary. That will produce transpiled JavaScript that is suitable | ||
for use with modern versions of Node.js _and_ Bundlers. | ||
[See the TypeScript documentation](https://www.typescriptlang.org/tsconfig#moduleResolution) for more information | ||
regarding the module and moduleResolution options. | ||
**Node10 moduleResolution is not supported; it does not support Fluid Framework's API structuring pattern that is used | ||
to distinguish stable APIs from those that are in development.** | ||
## 2.0.0-rc.2.0.0 | ||
@@ -4,0 +27,0 @@ |
@@ -5,11 +5,4 @@ /*! | ||
*/ | ||
import { IsomorphicPerformance } from "@fluid-internal/client-utils"; | ||
import { ITelemetryBaseEvent, ITelemetryBaseLogger, ITelemetryBaseProperties, LogLevel, Tagged, TelemetryBaseEventPropertyType } from "@fluidframework/core-interfaces"; | ||
import { ITelemetryBaseEvent, ITelemetryBaseLogger, LogLevel, Tagged, TelemetryBaseEventPropertyType } from "@fluidframework/core-interfaces"; | ||
import { type ITelemetryErrorEventExt, ITelemetryGenericEventExt, ITelemetryLoggerExt, ITelemetryPerformanceEventExt, ITelemetryPropertiesExt, TelemetryEventCategory, TelemetryEventPropertyTypeExt } from "./telemetryTypes.js"; | ||
export interface Memory { | ||
usedJSHeapSize: number; | ||
} | ||
export interface PerformanceWithMemory extends IsomorphicPerformance { | ||
readonly memory: Memory; | ||
} | ||
/** | ||
@@ -35,3 +28,3 @@ * Broad classifications to be applied to individual properties as they're prepared to be logged to telemetry. | ||
*/ | ||
export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string]; | ||
export type TelemetryEventPropertyTypes = ITelemetryPropertiesExt[string]; | ||
/** | ||
@@ -273,3 +266,2 @@ * @alpha | ||
private readonly markers; | ||
private readonly recordHeapSize; | ||
private readonly emitLogs; | ||
@@ -286,3 +278,3 @@ /** | ||
*/ | ||
static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean): PerformanceEvent; | ||
static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean): PerformanceEvent; | ||
/** | ||
@@ -320,3 +312,3 @@ * Measure a synchronous task | ||
*/ | ||
static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, sampleThreshold?: number): Promise<T>; | ||
static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, sampleThreshold?: number): Promise<T>; | ||
get duration(): number; | ||
@@ -326,4 +318,3 @@ private event?; | ||
private startMark?; | ||
private startMemoryCollection; | ||
protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean); | ||
protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean); | ||
reportProgress(props?: ITelemetryPropertiesExt, eventNameSuffix?: string): void; | ||
@@ -330,0 +321,0 @@ private autoEnd; |
@@ -446,4 +446,4 @@ "use strict"; | ||
*/ | ||
static start(logger, event, markers, recordHeapSize = false, emitLogs = true) { | ||
return new PerformanceEvent(logger, event, markers, recordHeapSize, emitLogs); | ||
static start(logger, event, markers, emitLogs = true) { | ||
return new PerformanceEvent(logger, event, markers, emitLogs); | ||
} | ||
@@ -466,4 +466,3 @@ /** | ||
static timedExec(logger, event, callback, markers, sampleThreshold = 1) { | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, undefined, // recordHeapSize | ||
PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
try { | ||
@@ -495,4 +494,4 @@ const ret = callback(perfEvent); | ||
*/ | ||
static async timedExecAsync(logger, event, callback, markers, recordHeapSize, sampleThreshold = 1) { | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, recordHeapSize, PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
static async timedExecAsync(logger, event, callback, markers, sampleThreshold = 1) { | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
try { | ||
@@ -511,9 +510,7 @@ const ret = await callback(perfEvent); | ||
} | ||
constructor(logger, event, markers = { end: true, cancel: "generic" }, recordHeapSize = false, emitLogs = true) { | ||
constructor(logger, event, markers = { end: true, cancel: "generic" }, emitLogs = true) { | ||
this.logger = logger; | ||
this.markers = markers; | ||
this.recordHeapSize = recordHeapSize; | ||
this.emitLogs = emitLogs; | ||
this.startTime = client_utils_1.performance.now(); | ||
this.startMemoryCollection = 0; | ||
this.event = { ...event }; | ||
@@ -575,15 +572,3 @@ if (this.markers.start) { | ||
event.duration = this.duration; | ||
if (this.startMemoryCollection) { | ||
const currentMemory = client_utils_1.performance?.memory | ||
?.usedJSHeapSize; | ||
const differenceInKBytes = Math.floor((currentMemory - this.startMemoryCollection) / 1024); | ||
if (differenceInKBytes > 0) { | ||
event.usedJSHeapSize = differenceInKBytes; | ||
} | ||
} | ||
} | ||
else if (this.recordHeapSize) { | ||
this.startMemoryCollection = client_utils_1.performance?.memory | ||
?.usedJSHeapSize; | ||
} | ||
this.logger.sendPerformanceEvent(event, error); | ||
@@ -675,3 +660,3 @@ } | ||
.filter((e) => e[1] !== undefined) | ||
// eslint-disable-next-line unicorn/no-array-reduce, unicorn/prefer-object-from-entries | ||
// eslint-disable-next-line unicorn/no-array-reduce | ||
.reduce((pv, cv) => { | ||
@@ -678,0 +663,0 @@ const [key, value] = cv; |
@@ -11,3 +11,3 @@ /*! | ||
* | ||
* @internal | ||
* @alpha | ||
*/ | ||
@@ -14,0 +14,0 @@ export declare class MockLogger implements ITelemetryBaseLogger { |
@@ -14,3 +14,3 @@ "use strict"; | ||
* | ||
* @internal | ||
* @alpha | ||
*/ | ||
@@ -51,3 +51,3 @@ class MockLogger { | ||
if (!this.matchEvents(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -79,3 +79,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (!this.matchAnyEvent(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -106,3 +106,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (!this.matchEventStrict(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -121,3 +121,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (this.matchAnyEvent(disallowedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
disallowed events: | ||
@@ -124,0 +124,0 @@ ${JSON.stringify(disallowedEvents)} |
@@ -10,11 +10,4 @@ /*! | ||
*/ | ||
export { | ||
// public APIs | ||
ITelemetryErrorEventExt, | ||
ITelemetryGenericEventExt, | ||
ITelemetryLoggerExt, | ||
ITelemetryPerformanceEventExt, | ||
ITelemetryPropertiesExt, | ||
TelemetryEventCategory, | ||
TelemetryEventPropertyTypeExt | ||
} from "./index.js"; | ||
export {} | ||
@@ -14,3 +14,3 @@ /*! | ||
* performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -24,3 +24,3 @@ export type TelemetryEventCategory = "generic" | "error" | "performance"; | ||
* converted before sending to a base logger. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -45,3 +45,3 @@ export type TelemetryEventPropertyTypeExt = string | number | boolean | undefined | (string | number | boolean)[] | { | ||
* JSON-serializable properties, which will be logged with telemetry. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -66,3 +66,3 @@ export interface ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "generic" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -76,3 +76,3 @@ export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "error" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -85,3 +85,3 @@ export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "performance" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -97,3 +97,3 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt { | ||
* and `ITelemetryBaseLogger` should be used when loggers are passed between layers. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -100,0 +100,0 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger { |
@@ -5,11 +5,4 @@ /*! | ||
*/ | ||
import { IsomorphicPerformance } from "@fluid-internal/client-utils"; | ||
import { ITelemetryBaseEvent, ITelemetryBaseLogger, ITelemetryBaseProperties, LogLevel, Tagged, TelemetryBaseEventPropertyType } from "@fluidframework/core-interfaces"; | ||
import { ITelemetryBaseEvent, ITelemetryBaseLogger, LogLevel, Tagged, TelemetryBaseEventPropertyType } from "@fluidframework/core-interfaces"; | ||
import { type ITelemetryErrorEventExt, ITelemetryGenericEventExt, ITelemetryLoggerExt, ITelemetryPerformanceEventExt, ITelemetryPropertiesExt, TelemetryEventCategory, TelemetryEventPropertyTypeExt } from "./telemetryTypes.js"; | ||
export interface Memory { | ||
usedJSHeapSize: number; | ||
} | ||
export interface PerformanceWithMemory extends IsomorphicPerformance { | ||
readonly memory: Memory; | ||
} | ||
/** | ||
@@ -35,3 +28,3 @@ * Broad classifications to be applied to individual properties as they're prepared to be logged to telemetry. | ||
*/ | ||
export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string]; | ||
export type TelemetryEventPropertyTypes = ITelemetryPropertiesExt[string]; | ||
/** | ||
@@ -273,3 +266,2 @@ * @alpha | ||
private readonly markers; | ||
private readonly recordHeapSize; | ||
private readonly emitLogs; | ||
@@ -286,3 +278,3 @@ /** | ||
*/ | ||
static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean): PerformanceEvent; | ||
static start(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean): PerformanceEvent; | ||
/** | ||
@@ -320,3 +312,3 @@ * Measure a synchronous task | ||
*/ | ||
static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, sampleThreshold?: number): Promise<T>; | ||
static timedExecAsync<T>(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, callback: (event: PerformanceEvent) => Promise<T>, markers?: IPerformanceEventMarkers, sampleThreshold?: number): Promise<T>; | ||
get duration(): number; | ||
@@ -326,4 +318,3 @@ private event?; | ||
private startMark?; | ||
private startMemoryCollection; | ||
protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, recordHeapSize?: boolean, emitLogs?: boolean); | ||
protected constructor(logger: ITelemetryLoggerExt, event: ITelemetryGenericEventExt, markers?: IPerformanceEventMarkers, emitLogs?: boolean); | ||
reportProgress(props?: ITelemetryPropertiesExt, eventNameSuffix?: string): void; | ||
@@ -330,0 +321,0 @@ private autoEnd; |
@@ -435,4 +435,4 @@ /*! | ||
*/ | ||
static start(logger, event, markers, recordHeapSize = false, emitLogs = true) { | ||
return new PerformanceEvent(logger, event, markers, recordHeapSize, emitLogs); | ||
static start(logger, event, markers, emitLogs = true) { | ||
return new PerformanceEvent(logger, event, markers, emitLogs); | ||
} | ||
@@ -455,4 +455,3 @@ /** | ||
static timedExec(logger, event, callback, markers, sampleThreshold = 1) { | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, undefined, // recordHeapSize | ||
PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
try { | ||
@@ -484,4 +483,4 @@ const ret = callback(perfEvent); | ||
*/ | ||
static async timedExecAsync(logger, event, callback, markers, recordHeapSize, sampleThreshold = 1) { | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, recordHeapSize, PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
static async timedExecAsync(logger, event, callback, markers, sampleThreshold = 1) { | ||
const perfEvent = PerformanceEvent.start(logger, event, markers, PerformanceEvent.shouldReport(event, sampleThreshold)); | ||
try { | ||
@@ -500,9 +499,7 @@ const ret = await callback(perfEvent); | ||
} | ||
constructor(logger, event, markers = { end: true, cancel: "generic" }, recordHeapSize = false, emitLogs = true) { | ||
constructor(logger, event, markers = { end: true, cancel: "generic" }, emitLogs = true) { | ||
this.logger = logger; | ||
this.markers = markers; | ||
this.recordHeapSize = recordHeapSize; | ||
this.emitLogs = emitLogs; | ||
this.startTime = performance.now(); | ||
this.startMemoryCollection = 0; | ||
this.event = { ...event }; | ||
@@ -564,15 +561,3 @@ if (this.markers.start) { | ||
event.duration = this.duration; | ||
if (this.startMemoryCollection) { | ||
const currentMemory = performance?.memory | ||
?.usedJSHeapSize; | ||
const differenceInKBytes = Math.floor((currentMemory - this.startMemoryCollection) / 1024); | ||
if (differenceInKBytes > 0) { | ||
event.usedJSHeapSize = differenceInKBytes; | ||
} | ||
} | ||
} | ||
else if (this.recordHeapSize) { | ||
this.startMemoryCollection = performance?.memory | ||
?.usedJSHeapSize; | ||
} | ||
this.logger.sendPerformanceEvent(event, error); | ||
@@ -662,3 +647,3 @@ } | ||
.filter((e) => e[1] !== undefined) | ||
// eslint-disable-next-line unicorn/no-array-reduce, unicorn/prefer-object-from-entries | ||
// eslint-disable-next-line unicorn/no-array-reduce | ||
.reduce((pv, cv) => { | ||
@@ -665,0 +650,0 @@ const [key, value] = cv; |
@@ -11,3 +11,3 @@ /*! | ||
* | ||
* @internal | ||
* @alpha | ||
*/ | ||
@@ -14,0 +14,0 @@ export declare class MockLogger implements ITelemetryBaseLogger { |
@@ -11,3 +11,3 @@ /*! | ||
* | ||
* @internal | ||
* @alpha | ||
*/ | ||
@@ -48,3 +48,3 @@ export class MockLogger { | ||
if (!this.matchEvents(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -76,3 +76,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (!this.matchAnyEvent(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -103,3 +103,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (!this.matchEventStrict(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -118,3 +118,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (this.matchAnyEvent(disallowedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
disallowed events: | ||
@@ -121,0 +121,0 @@ ${JSON.stringify(disallowedEvents)} |
@@ -10,11 +10,4 @@ /*! | ||
*/ | ||
export { | ||
// public APIs | ||
ITelemetryErrorEventExt, | ||
ITelemetryGenericEventExt, | ||
ITelemetryLoggerExt, | ||
ITelemetryPerformanceEventExt, | ||
ITelemetryPropertiesExt, | ||
TelemetryEventCategory, | ||
TelemetryEventPropertyTypeExt | ||
} from "./index.js"; | ||
export {} | ||
@@ -14,3 +14,3 @@ /*! | ||
* performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -24,3 +24,3 @@ export type TelemetryEventCategory = "generic" | "error" | "performance"; | ||
* converted before sending to a base logger. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -45,3 +45,3 @@ export type TelemetryEventPropertyTypeExt = string | number | boolean | undefined | (string | number | boolean)[] | { | ||
* JSON-serializable properties, which will be logged with telemetry. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -66,3 +66,3 @@ export interface ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "generic" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -76,3 +76,3 @@ export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "error" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -85,3 +85,3 @@ export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "performance" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -97,3 +97,3 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt { | ||
* and `ITelemetryBaseLogger` should be used when loggers are passed between layers. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -100,0 +100,0 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger { |
{ | ||
"name": "@fluidframework/telemetry-utils", | ||
"version": "2.0.0-dev-rc.3.0.0.254866", | ||
"version": "2.0.0-dev-rc.4.0.0.261659", | ||
"description": "Collection of telemetry relates utilities for Fluid", | ||
@@ -26,9 +26,9 @@ "homepage": "https://fluidframework.com", | ||
}, | ||
"./alpha": { | ||
"./legacy": { | ||
"import": { | ||
"types": "./lib/alpha.d.ts", | ||
"types": "./lib/legacy.d.ts", | ||
"default": "./lib/index.js" | ||
}, | ||
"require": { | ||
"types": "./dist/alpha.d.ts", | ||
"types": "./dist/legacy.d.ts", | ||
"default": "./dist/index.js" | ||
@@ -48,4 +48,4 @@ } | ||
}, | ||
"main": "dist/index.js", | ||
"types": "./dist/public.d.ts", | ||
"main": "lib/index.js", | ||
"types": "lib/public.d.ts", | ||
"c8": { | ||
@@ -72,5 +72,5 @@ "all": true, | ||
"dependencies": { | ||
"@fluid-internal/client-utils": "2.0.0-dev-rc.3.0.0.254866", | ||
"@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.254866", | ||
"@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.254866", | ||
"@fluid-internal/client-utils": "2.0.0-dev-rc.4.0.0.261659", | ||
"@fluidframework/core-interfaces": "2.0.0-dev-rc.4.0.0.261659", | ||
"@fluidframework/core-utils": "2.0.0-dev-rc.4.0.0.261659", | ||
"@fluidframework/protocol-definitions": "^3.2.0", | ||
@@ -83,8 +83,8 @@ "debug": "^4.3.4", | ||
"@biomejs/biome": "^1.6.2", | ||
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.254866", | ||
"@fluid-tools/build-cli": "^0.35.0", | ||
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.4.0.0.261659", | ||
"@fluid-tools/build-cli": "0.38.0-259537", | ||
"@fluidframework/build-common": "^2.0.3", | ||
"@fluidframework/build-tools": "^0.35.0", | ||
"@fluidframework/build-tools": "0.38.0-259537", | ||
"@fluidframework/eslint-config-fluid": "^5.1.0", | ||
"@fluidframework/telemetry-utils-previous": "npm:@fluidframework/telemetry-utils@2.0.0-internal.8.0.0", | ||
"@fluidframework/telemetry-utils-previous": "npm:@fluidframework/telemetry-utils@2.0.0-rc.3.0.0", | ||
"@microsoft/api-extractor": "^7.42.3", | ||
@@ -111,17 +111,4 @@ "@types/debug": "^4.1.5", | ||
"broken": { | ||
"RemovedInterfaceDeclaration_IConfigProviderBase": { | ||
"forwardCompat": false, | ||
"TypeAliasDeclaration_TelemetryEventPropertyTypes": { | ||
"backCompat": false | ||
}, | ||
"RemovedTypeAliasDeclaration_ConfigTypes": { | ||
"backCompat": false, | ||
"forwardCompat": false | ||
}, | ||
"RemovedFunctionDeclaration_logIfFalse": { | ||
"backCompat": false, | ||
"forwardCompat": false | ||
}, | ||
"RemovedClassDeclaration_TelemetryNullLogger": { | ||
"backCompat": false, | ||
"forwardCompat": false | ||
} | ||
@@ -132,4 +119,4 @@ } | ||
"api": "fluid-build . --task api", | ||
"api-extractor:commonjs": "flub generate entrypoints --outDir ./dist", | ||
"api-extractor:esnext": "flub generate entrypoints --outDir ./lib", | ||
"api-extractor:commonjs": "flub generate entrypoints --outFileAlpha legacy --outDir ./dist", | ||
"api-extractor:esnext": "flub generate entrypoints --outFileAlpha legacy --outDir ./lib --node10TypeCompat", | ||
"build": "fluid-build . --task build", | ||
@@ -144,7 +131,7 @@ "build:commonjs": "fluid-build . --task commonjs", | ||
"bump-version": "npm version minor --no-push --no-git-tag-version && npm run build:genver", | ||
"check:are-the-types-wrong": "attw --pack . --entrypoints .", | ||
"check:are-the-types-wrong": "attw --pack .", | ||
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore", | ||
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json", | ||
"ci:build:docs": "api-extractor run", | ||
"clean": "rimraf --glob dist lib \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc", | ||
"clean": "rimraf --glob dist lib \"*.d.ts\" \"**/*.tsbuildinfo\" \"**/*.build.log\" _api-extractor-temp nyc", | ||
"eslint": "eslint --format stylish src", | ||
@@ -163,5 +150,5 @@ "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout", | ||
"tsc": "fluid-tsc commonjs --project ./tsconfig.cjs.json && copyfiles -f ../../../common/build/build-common/src/cjs/package.json ./dist", | ||
"typetests:gen": "fluid-type-test-generator", | ||
"typetests:gen": "flub generate typetests --dir . -v --publicFallback", | ||
"typetests:prepare": "flub typetests --dir . --reset --previous --normalize" | ||
} | ||
} |
@@ -6,7 +6,6 @@ /*! | ||
import { IsomorphicPerformance, performance } from "@fluid-internal/client-utils"; | ||
import { performance } from "@fluid-internal/client-utils"; | ||
import { | ||
ITelemetryBaseEvent, | ||
ITelemetryBaseLogger, | ||
ITelemetryBaseProperties, | ||
LogLevel, | ||
@@ -39,10 +38,2 @@ Tagged, | ||
export interface Memory { | ||
usedJSHeapSize: number; | ||
} | ||
export interface PerformanceWithMemory extends IsomorphicPerformance { | ||
readonly memory: Memory; | ||
} | ||
/** | ||
@@ -69,3 +60,3 @@ * Broad classifications to be applied to individual properties as they're prepared to be logged to telemetry. | ||
*/ | ||
export type TelemetryEventPropertyTypes = ITelemetryBaseProperties[string]; | ||
export type TelemetryEventPropertyTypes = ITelemetryPropertiesExt[string]; | ||
@@ -652,6 +643,5 @@ /** | ||
markers?: IPerformanceEventMarkers, | ||
recordHeapSize: boolean = false, | ||
emitLogs: boolean = true, | ||
): PerformanceEvent { | ||
return new PerformanceEvent(logger, event, markers, recordHeapSize, emitLogs); | ||
return new PerformanceEvent(logger, event, markers, emitLogs); | ||
} | ||
@@ -685,3 +675,2 @@ | ||
markers, | ||
undefined, // recordHeapSize | ||
PerformanceEvent.shouldReport(event, sampleThreshold), | ||
@@ -720,3 +709,2 @@ ); | ||
markers?: IPerformanceEventMarkers, | ||
recordHeapSize?: boolean, | ||
sampleThreshold: number = 1, | ||
@@ -728,3 +716,2 @@ ): Promise<T> { | ||
markers, | ||
recordHeapSize, | ||
PerformanceEvent.shouldReport(event, sampleThreshold), | ||
@@ -749,3 +736,2 @@ ); | ||
private startMark?: string; | ||
private startMemoryCollection: number | undefined = 0; | ||
@@ -756,3 +742,2 @@ protected constructor( | ||
private readonly markers: IPerformanceEventMarkers = { end: true, cancel: "generic" }, | ||
private readonly recordHeapSize: boolean = false, | ||
private readonly emitLogs: boolean = true, | ||
@@ -832,15 +817,2 @@ ) { | ||
event.duration = this.duration; | ||
if (this.startMemoryCollection) { | ||
const currentMemory = (performance as PerformanceWithMemory)?.memory | ||
?.usedJSHeapSize; | ||
const differenceInKBytes = Math.floor( | ||
(currentMemory - this.startMemoryCollection) / 1024, | ||
); | ||
if (differenceInKBytes > 0) { | ||
event.usedJSHeapSize = differenceInKBytes; | ||
} | ||
} | ||
} else if (this.recordHeapSize) { | ||
this.startMemoryCollection = (performance as PerformanceWithMemory)?.memory | ||
?.usedJSHeapSize; | ||
} | ||
@@ -971,3 +943,3 @@ | ||
.filter((e) => e[1] !== undefined) | ||
// eslint-disable-next-line unicorn/no-array-reduce, unicorn/prefer-object-from-entries | ||
// eslint-disable-next-line unicorn/no-array-reduce | ||
.reduce((pv, cv) => { | ||
@@ -974,0 +946,0 @@ const [key, value] = cv; |
@@ -20,3 +20,3 @@ /*! | ||
* | ||
* @internal | ||
* @alpha | ||
*/ | ||
@@ -71,3 +71,3 @@ export class MockLogger implements ITelemetryBaseLogger { | ||
if (!this.matchEvents(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -111,3 +111,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (!this.matchAnyEvent(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -149,3 +149,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (!this.matchEventStrict(expectedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
expected: | ||
@@ -169,3 +169,3 @@ ${JSON.stringify(expectedEvents)} | ||
if (this.matchAnyEvent(disallowedEvents, inlineDetailsProp)) { | ||
throw new Error(`${message} | ||
throw new Error(`${message ?? "Logs don't match"} | ||
disallowed events: | ||
@@ -172,0 +172,0 @@ ${JSON.stringify(disallowedEvents)} |
@@ -16,3 +16,3 @@ /*! | ||
* performance - Includes duration, and often has _start, _end, or _cancel suffixes for activity tracking | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -27,3 +27,3 @@ export type TelemetryEventCategory = "generic" | "error" | "performance"; | ||
* converted before sending to a base logger. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -56,3 +56,3 @@ export type TelemetryEventPropertyTypeExt = | ||
* JSON-serializable properties, which will be logged with telemetry. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -79,3 +79,3 @@ export interface ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "generic" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -90,3 +90,3 @@ export interface ITelemetryGenericEventExt extends ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "error" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -100,3 +100,3 @@ export interface ITelemetryErrorEventExt extends ITelemetryPropertiesExt { | ||
* @remarks Maps to category = "performance" | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -113,3 +113,3 @@ export interface ITelemetryPerformanceEventExt extends ITelemetryGenericEventExt { | ||
* and `ITelemetryBaseLogger` should be used when loggers are passed between layers. | ||
* @public | ||
* @alpha | ||
*/ | ||
@@ -116,0 +116,0 @@ export interface ITelemetryLoggerExt extends ITelemetryBaseLogger { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
763126
9569
+ Added@fluid-internal/client-utils@2.0.0-dev-rc.4.0.0.261659(transitive)
+ Added@fluidframework/core-interfaces@2.0.0-dev-rc.4.0.0.261659(transitive)
+ Added@fluidframework/core-utils@2.0.0-dev-rc.4.0.0.261659(transitive)
- Removed@fluid-internal/client-utils@2.0.0-dev-rc.3.0.0.254866(transitive)
- Removed@fluidframework/core-interfaces@2.0.0-dev-rc.3.0.0.254866(transitive)
- Removed@fluidframework/core-utils@2.0.0-dev-rc.3.0.0.254866(transitive)
Updated@fluid-internal/client-utils@2.0.0-dev-rc.4.0.0.261659
Updated@fluidframework/core-interfaces@2.0.0-dev-rc.4.0.0.261659