Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions common/api-review/telemetry-angular.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -18,7 +17,6 @@ export class FirebaseErrorHandler implements ErrorHandler {
// @public
export interface Telemetry {
app: FirebaseApp;
loggerProvider: LoggerProvider;
}

// @public
Expand Down
2 changes: 0 additions & 2 deletions common/api-review/telemetry-react.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
```ts

import { FirebaseApp } from '@firebase/app';
import { LoggerProvider } from '@opentelemetry/sdk-logs';

// @public
export function FirebaseTelemetry({ firebaseApp, telemetryOptions }: {
Expand All @@ -16,7 +15,6 @@ export function FirebaseTelemetry({ firebaseApp, telemetryOptions }: {
// @public
export interface Telemetry {
app: FirebaseApp;
loggerProvider: LoggerProvider;
}

// @public
Expand Down
2 changes: 0 additions & 2 deletions common/api-review/telemetry.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -26,7 +25,6 @@ export function nextOnRequestError(telemetryOptions?: TelemetryOptions): Instrum
// @public
export interface Telemetry {
app: FirebaseApp;
loggerProvider: LoggerProvider;
}

// @public
Expand Down
11 changes: 0 additions & 11 deletions docs-devsite/telemetry_.telemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.

<b>Signature:</b>

```typescript
loggerProvider: LoggerProvider;
```
11 changes: 0 additions & 11 deletions docs-devsite/telemetry_angular.telemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.

<b>Signature:</b>

```typescript
loggerProvider: LoggerProvider;
```
11 changes: 0 additions & 11 deletions docs-devsite/telemetry_react.telemetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.

<b>Signature:</b>

```typescript
loggerProvider: LoggerProvider;
```
6 changes: 3 additions & 3 deletions packages/telemetry/src/api.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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';
Expand All @@ -66,7 +66,7 @@ const fakeLoggerProvider = {
shutdown: () => Promise.resolve()
} as unknown as LoggerProvider;

const fakeTelemetry: Telemetry = {
const fakeTelemetry: TelemetryInternal = {
app: {
name: 'DEFAULT',
automaticDataCollectionEnabled: true,
Expand Down Expand Up @@ -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'
Expand Down
15 changes: 11 additions & 4 deletions packages/telemetry/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -137,7 +141,10 @@ export function captureError(
* @returns a promise which is resolved when all flushes are complete
*/
export function flush(telemetry: Telemetry): Promise<void> {
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);
});
}
6 changes: 3 additions & 3 deletions packages/telemetry/src/helpers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
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,
TELEMETRY_SESSION_ID_KEY
} 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';

Expand All @@ -47,7 +47,7 @@ describe('helpers', () => {
shutdown: () => Promise.resolve()
} as unknown as LoggerProvider;

const fakeTelemetry: Telemetry = {
const fakeTelemetry: TelemetryInternal = {
app: {
name: 'DEFAULT',
automaticDataCollectionEnabled: true,
Expand Down Expand Up @@ -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' };

Expand Down
4 changes: 3 additions & 1 deletion packages/telemetry/src/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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'
Expand Down
4 changes: 0 additions & 4 deletions packages/telemetry/src/public-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
*/

import { FirebaseApp } from '@firebase/app';
import { LoggerProvider } from '@opentelemetry/sdk-logs';

/**
* An instance of the Firebase Telemetry SDK.
Expand All @@ -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;
}

/**
Expand Down
12 changes: 12 additions & 0 deletions packages/telemetry/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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];

/**
Expand Down
Loading