diff --git a/common/api-review/telemetry-angular.api.md b/common/api-review/telemetry-angular.api.md
index ec667fc70a..0b3198be1d 100644
--- a/common/api-review/telemetry-angular.api.md
+++ b/common/api-review/telemetry-angular.api.md
@@ -6,7 +6,6 @@
import { ErrorHandler } from '@angular/core';
import { FirebaseApp } from '@firebase/app';
-import { LoggerProvider } from '@opentelemetry/sdk-logs';
// @public
export class FirebaseErrorHandler implements ErrorHandler {
@@ -18,7 +17,6 @@ export class FirebaseErrorHandler implements ErrorHandler {
// @public
export interface Telemetry {
app: FirebaseApp;
- loggerProvider: LoggerProvider;
}
// @public
diff --git a/common/api-review/telemetry-react.api.md b/common/api-review/telemetry-react.api.md
index 78571088c5..5cc0f4c730 100644
--- a/common/api-review/telemetry-react.api.md
+++ b/common/api-review/telemetry-react.api.md
@@ -5,7 +5,6 @@
```ts
import { FirebaseApp } from '@firebase/app';
-import { LoggerProvider } from '@opentelemetry/sdk-logs';
// @public
export function FirebaseTelemetry({ firebaseApp, telemetryOptions }: {
@@ -16,7 +15,6 @@ export function FirebaseTelemetry({ firebaseApp, telemetryOptions }: {
// @public
export interface Telemetry {
app: FirebaseApp;
- loggerProvider: LoggerProvider;
}
// @public
diff --git a/common/api-review/telemetry.api.md b/common/api-review/telemetry.api.md
index 38d4e62560..784542917f 100644
--- a/common/api-review/telemetry.api.md
+++ b/common/api-review/telemetry.api.md
@@ -7,7 +7,6 @@
import { AnyValueMap } from '@opentelemetry/api-logs';
import { FirebaseApp } from '@firebase/app';
import { Instrumentation } from 'next';
-import { LoggerProvider } from '@opentelemetry/sdk-logs';
// @public
export function captureError(telemetry: Telemetry, error: unknown, attributes?: AnyValueMap): void;
@@ -26,7 +25,6 @@ export function nextOnRequestError(telemetryOptions?: TelemetryOptions): Instrum
// @public
export interface Telemetry {
app: FirebaseApp;
- loggerProvider: LoggerProvider;
}
// @public
diff --git a/docs-devsite/telemetry_.telemetry.md b/docs-devsite/telemetry_.telemetry.md
index 9ae0536a47..2fa907abbd 100644
--- a/docs-devsite/telemetry_.telemetry.md
+++ b/docs-devsite/telemetry_.telemetry.md
@@ -25,7 +25,6 @@ export interface Telemetry
| Property | Type | Description |
| --- | --- | --- |
| [app](./telemetry_.telemetry.md#telemetryapp) | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance is associated with. |
-| [loggerProvider](./telemetry_.telemetry.md#telemetryloggerprovider) | LoggerProvider | The this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance uses. |
## Telemetry.app
@@ -36,13 +35,3 @@ The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this [Telemetry](.
```typescript
app: FirebaseApp;
```
-
-## Telemetry.loggerProvider
-
-The this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance uses.
-
-Signature:
-
-```typescript
-loggerProvider: LoggerProvider;
-```
diff --git a/docs-devsite/telemetry_angular.telemetry.md b/docs-devsite/telemetry_angular.telemetry.md
index d376755090..b2eaca867e 100644
--- a/docs-devsite/telemetry_angular.telemetry.md
+++ b/docs-devsite/telemetry_angular.telemetry.md
@@ -25,7 +25,6 @@ export interface Telemetry
| Property | Type | Description |
| --- | --- | --- |
| [app](./telemetry_angular.telemetry.md#telemetryapp) | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance is associated with. |
-| [loggerProvider](./telemetry_angular.telemetry.md#telemetryloggerprovider) | LoggerProvider | The this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance uses. |
## Telemetry.app
@@ -36,13 +35,3 @@ The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this [Telemetry](.
```typescript
app: FirebaseApp;
```
-
-## Telemetry.loggerProvider
-
-The this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance uses.
-
-Signature:
-
-```typescript
-loggerProvider: LoggerProvider;
-```
diff --git a/docs-devsite/telemetry_react.telemetry.md b/docs-devsite/telemetry_react.telemetry.md
index 5a767aa609..fdbe964135 100644
--- a/docs-devsite/telemetry_react.telemetry.md
+++ b/docs-devsite/telemetry_react.telemetry.md
@@ -25,7 +25,6 @@ export interface Telemetry
| Property | Type | Description |
| --- | --- | --- |
| [app](./telemetry_react.telemetry.md#telemetryapp) | [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) | The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance is associated with. |
-| [loggerProvider](./telemetry_react.telemetry.md#telemetryloggerprovider) | LoggerProvider | The this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance uses. |
## Telemetry.app
@@ -36,13 +35,3 @@ The [FirebaseApp](./app.firebaseapp.md#firebaseapp_interface) this [Telemetry](.
```typescript
app: FirebaseApp;
```
-
-## Telemetry.loggerProvider
-
-The this [Telemetry](./telemetry_.telemetry.md#telemetry_interface) instance uses.
-
-Signature:
-
-```typescript
-loggerProvider: LoggerProvider;
-```
diff --git a/packages/telemetry/src/api.test.ts b/packages/telemetry/src/api.test.ts
index a3252de7c9..3a5dc843b8 100644
--- a/packages/telemetry/src/api.test.ts
+++ b/packages/telemetry/src/api.test.ts
@@ -17,7 +17,6 @@
import { expect } from 'chai';
import { LoggerProvider } from '@opentelemetry/sdk-logs';
-import { Telemetry } from './public-types';
import { trace } from '@opentelemetry/api';
import { Logger, LogRecord, SeverityNumber } from '@opentelemetry/api-logs';
import {
@@ -43,6 +42,7 @@ import { TelemetryService } from './service';
import { registerTelemetry } from './register';
import { _FirebaseInstallationsInternal } from '@firebase/installations';
import { AUTO_CONSTANTS } from './auto-constants';
+import { TelemetryInternal } from './types';
const PROJECT_ID = 'my-project';
const APP_ID = 'my-appid';
@@ -66,7 +66,7 @@ const fakeLoggerProvider = {
shutdown: () => Promise.resolve()
} as unknown as LoggerProvider;
-const fakeTelemetry: Telemetry = {
+const fakeTelemetry: TelemetryInternal = {
app: {
name: 'DEFAULT',
automaticDataCollectionEnabled: true,
@@ -307,7 +307,7 @@ describe('Top level API', () => {
AUTO_CONSTANTS.appVersion = '1.2.3'; // Unused
const telemetry = new TelemetryService(
fakeTelemetry.app,
- fakeTelemetry.loggerProvider
+ fakeLoggerProvider
);
telemetry.options = {
appVersion: '1.0.0'
diff --git a/packages/telemetry/src/api.ts b/packages/telemetry/src/api.ts
index 9f2f38fc1c..1a80a32505 100644
--- a/packages/telemetry/src/api.ts
+++ b/packages/telemetry/src/api.ts
@@ -23,6 +23,7 @@ import { AnyValueMap, SeverityNumber } from '@opentelemetry/api-logs';
import { trace } from '@opentelemetry/api';
import { TelemetryService } from './service';
import { getAppVersion, getSessionId } from './helpers';
+import { TelemetryInternal } from './types';
declare module '@firebase/component' {
interface NameServiceMapping {
@@ -78,7 +79,10 @@ export function captureError(
error: unknown,
attributes?: AnyValueMap
): void {
- const logger = telemetry.loggerProvider.getLogger('error-logger');
+ // Cast to TelemetryInternal to access internal loggerProvider
+ const logger = (telemetry as TelemetryInternal).loggerProvider.getLogger(
+ 'error-logger'
+ );
const customAttributes = attributes || {};
// Add trace metadata
@@ -137,7 +141,10 @@ export function captureError(
* @returns a promise which is resolved when all flushes are complete
*/
export function flush(telemetry: Telemetry): Promise {
- return telemetry.loggerProvider.forceFlush().catch(err => {
- console.error('Error flushing logs from Firebase Telemetry:', err);
- });
+ // Cast to TelemetryInternal to access internal loggerProvider
+ return (telemetry as TelemetryInternal).loggerProvider
+ .forceFlush()
+ .catch(err => {
+ console.error('Error flushing logs from Firebase Telemetry:', err);
+ });
}
diff --git a/packages/telemetry/src/helpers.test.ts b/packages/telemetry/src/helpers.test.ts
index 0d0a96fdf8..dbd450e89a 100644
--- a/packages/telemetry/src/helpers.test.ts
+++ b/packages/telemetry/src/helpers.test.ts
@@ -18,7 +18,6 @@
import { expect } from 'chai';
import { LoggerProvider } from '@opentelemetry/sdk-logs';
import { Logger, LogRecord } from '@opentelemetry/api-logs';
-import { Telemetry } from './public-types';
import { startNewSession } from './helpers';
import {
LOG_ENTRY_ATTRIBUTE_KEYS,
@@ -26,6 +25,7 @@ import {
} from './constants';
import { AUTO_CONSTANTS } from './auto-constants';
import { TelemetryService } from './service';
+import { TelemetryInternal } from './types';
const MOCK_SESSION_ID = '00000000-0000-0000-0000-000000000000';
@@ -47,7 +47,7 @@ describe('helpers', () => {
shutdown: () => Promise.resolve()
} as unknown as LoggerProvider;
- const fakeTelemetry: Telemetry = {
+ const fakeTelemetry: TelemetryInternal = {
app: {
name: 'DEFAULT',
automaticDataCollectionEnabled: true,
@@ -124,7 +124,7 @@ describe('helpers', () => {
it('should log app version from telemetry options', () => {
const telemetryWithVersion = new TelemetryService(
fakeTelemetry.app,
- fakeTelemetry.loggerProvider
+ fakeLoggerProvider
);
telemetryWithVersion.options = { appVersion: '9.9.9' };
diff --git a/packages/telemetry/src/helpers.ts b/packages/telemetry/src/helpers.ts
index 94c8e77670..0603f8dcec 100644
--- a/packages/telemetry/src/helpers.ts
+++ b/packages/telemetry/src/helpers.ts
@@ -23,6 +23,7 @@ import {
} from './constants';
import { Telemetry } from './public-types';
import { TelemetryService } from './service';
+import { TelemetryInternal } from './types';
/**
* Returns the app version from the provided Telemetry instance, if available.
@@ -55,7 +56,8 @@ export function getSessionId(): string | undefined {
* 2. In Cloud Logging as its own log entry
*/
export function startNewSession(telemetry: Telemetry): void {
- const { loggerProvider } = telemetry;
+ // Cast to TelemetryInternal to access internal loggerProvider
+ const { loggerProvider } = telemetry as TelemetryInternal;
if (
typeof sessionStorage !== 'undefined' &&
typeof crypto?.randomUUID === 'function'
diff --git a/packages/telemetry/src/public-types.ts b/packages/telemetry/src/public-types.ts
index 0d807e8408..8c06027dd7 100644
--- a/packages/telemetry/src/public-types.ts
+++ b/packages/telemetry/src/public-types.ts
@@ -16,7 +16,6 @@
*/
import { FirebaseApp } from '@firebase/app';
-import { LoggerProvider } from '@opentelemetry/sdk-logs';
/**
* An instance of the Firebase Telemetry SDK.
@@ -30,9 +29,6 @@ export interface Telemetry {
* The {@link @firebase/app#FirebaseApp} this {@link Telemetry} instance is associated with.
*/
app: FirebaseApp;
-
- /** The {@link LoggerProvider} this {@link Telemetry} instance uses. */
- loggerProvider: LoggerProvider;
}
/**
diff --git a/packages/telemetry/src/types.ts b/packages/telemetry/src/types.ts
index 3c9d915a0e..b43c94c284 100644
--- a/packages/telemetry/src/types.ts
+++ b/packages/telemetry/src/types.ts
@@ -15,6 +15,18 @@
* limitations under the License.
*/
+import { LoggerProvider } from '@opentelemetry/sdk-logs';
+import { Telemetry } from './public-types';
+
+/**
+ * An internal interface for the Telemetry service.
+ *
+ * @internal
+ */
+export interface TelemetryInternal extends Telemetry {
+ loggerProvider: LoggerProvider;
+}
+
type KeyValuePair = [key: string, value: string];
/**