diff --git a/common/api-review/telemetry-angular.api.md b/common/api-review/telemetry-angular.api.md index 05ddf91ccd..c3ca0aa2ea 100644 --- a/common/api-review/telemetry-angular.api.md +++ b/common/api-review/telemetry-angular.api.md @@ -8,7 +8,7 @@ import { ErrorHandler } from '@angular/core'; import { FirebaseApp } from '@firebase/app'; import { LoggerProvider } from '@opentelemetry/sdk-logs'; -// @public (undocumented) +// @public export class FirebaseErrorHandler implements ErrorHandler { constructor(telemetryOptions?: TelemetryOptions | undefined); // (undocumented) diff --git a/docs-devsite/telemetry_angular.firebaseerrorhandler.md b/docs-devsite/telemetry_angular.firebaseerrorhandler.md index 11a115d969..7fbed3d7cf 100644 --- a/docs-devsite/telemetry_angular.firebaseerrorhandler.md +++ b/docs-devsite/telemetry_angular.firebaseerrorhandler.md @@ -10,6 +10,10 @@ https://github.com/firebase/firebase-js-sdk {% endcomment %} # FirebaseErrorHandler class +A custom ErrorHandler that captures uncaught errors and sends them to Firebase Telemetry. + +This should be provided in your application's root module. + Signature: ```typescript @@ -63,3 +67,44 @@ handleError(error: unknown): void; void +### Example 1 + +Basic usage: + +```typescript +import { ErrorHandler } from '@angular/core'; +import { FirebaseErrorHandler } from '@firebase/telemetry-angular'; + +@NgModule({ + // ... + providers: [ + { provide: ErrorHandler, useClass: FirebaseErrorHandler } + ], + // ... +}) +export class AppModule { } + +``` + +### Example 2 + +Providing telemetry options: + +```typescript +import { ErrorHandler } from '@angular/core'; +import { FirebaseErrorHandler } from '@firebase/telemetry-angular'; + +@NgModule({ + // ... + providers: [ + { + provide: ErrorHandler, + useFactory: () => new FirebaseErrorHandler({ appVersion: '1.2.3' }) + } + ], + // ... +}) +export class AppModule { } + +``` + diff --git a/docs-devsite/telemetry_angular.md b/docs-devsite/telemetry_angular.md index bb341d2eb2..c868ee3abe 100644 --- a/docs-devsite/telemetry_angular.md +++ b/docs-devsite/telemetry_angular.md @@ -15,7 +15,7 @@ https://github.com/firebase/firebase-js-sdk | Class | Description | | --- | --- | -| [FirebaseErrorHandler](./telemetry_angular.firebaseerrorhandler.md#firebaseerrorhandler_class) | | +| [FirebaseErrorHandler](./telemetry_angular.firebaseerrorhandler.md#firebaseerrorhandler_class) | A custom ErrorHandler that captures uncaught errors and sends them to Firebase Telemetry.This should be provided in your application's root module. | ## Interfaces diff --git a/packages/telemetry/src/angular/index.ts b/packages/telemetry/src/angular/index.ts index a761f46df9..38a8027763 100644 --- a/packages/telemetry/src/angular/index.ts +++ b/packages/telemetry/src/angular/index.ts @@ -28,6 +28,51 @@ registerTelemetry(); export * from '../public-types'; +/** + * A custom ErrorHandler that captures uncaught errors and sends them to Firebase Telemetry. + * + * This should be provided in your application's root module. + * + * @example + * Basic usage: + * ```typescript + * import { ErrorHandler } from '@angular/core'; + * import { FirebaseErrorHandler } from '@firebase/telemetry-angular'; + * + * @NgModule({ + * // ... + * providers: [ + * { provide: ErrorHandler, useClass: FirebaseErrorHandler } + * ], + * // ... + * }) + * export class AppModule { } + * ``` + * + * @example + * Providing telemetry options: + * ```typescript + * import { ErrorHandler } from '@angular/core'; + * import { FirebaseErrorHandler } from '@firebase/telemetry-angular'; + * + * @NgModule({ + * // ... + * providers: [ + * { + * provide: ErrorHandler, + * useFactory: () => new FirebaseErrorHandler({ appVersion: '1.2.3' }) + * } + * ], + * // ... + * }) + * export class AppModule { } + * ``` + * + * @param telemetryOptions - Optional. {@link TelemetryOptions} that configure the Telemetry instance. + * To provide these options, you must use a `useFactory` provider as shown in the example above. + * + * @public + */ export class FirebaseErrorHandler implements ErrorHandler { private readonly router = inject(Router);