From 292dcb7dafe0e2f5acff8fce1c0e7d3698ef4346 Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Thu, 27 Jun 2024 10:41:09 -0400 Subject: [PATCH 01/10] ServerAppSettings name now aligns with AppSettings --- common/api-review/app.api.md | 2 +- docs-devsite/app.firebaseserverappsettings.md | 6 +++--- packages/app/src/api.ts | 2 ++ packages/app/src/firebaseServerApp.ts | 2 ++ packages/app/src/public-types.ts | 7 ++++--- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/common/api-review/app.api.md b/common/api-review/app.api.md index e226940ef1b..24c6129eb71 100644 --- a/common/api-review/app.api.md +++ b/common/api-review/app.api.md @@ -80,7 +80,7 @@ export interface FirebaseServerApp extends FirebaseApp { // @public export interface FirebaseServerAppSettings extends FirebaseAppSettings { authIdToken?: string; - name?: undefined; + name?: string; releaseOnDeref?: object; } diff --git a/docs-devsite/app.firebaseserverappsettings.md b/docs-devsite/app.firebaseserverappsettings.md index 59aba9bca78..831ac167d45 100644 --- a/docs-devsite/app.firebaseserverappsettings.md +++ b/docs-devsite/app.firebaseserverappsettings.md @@ -24,7 +24,7 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings | Property | Type | Description | | --- | --- | --- | | [authIdToken](./app.firebaseserverappsettings.md#firebaseserverappsettingsauthidtoken) | string | An optional Auth ID token used to resume a signed in user session from a client runtime environment.Invoking getAuth with a FirebaseServerApp configured with a validated authIdToken causes an automatic attempt to sign in the user that the authIdToken represents. The token needs to have been recently minted for this operation to succeed.If the token fails local verification, or if the Auth service has failed to validate it when the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not sign in a user on initialization.If a user is successfully signed in, then the Auth instance's onAuthStateChanged callback is invoked with the User object as per standard Auth flows. However, User objects created via an authIdToken do not have a refresh token. Attempted refreshToken operations fail. | -| [name](./app.firebaseserverappsettings.md#firebaseserverappsettingsname) | undefined | There is no getApp() operation for FirebaseServerApp, so the name is not relevant for applications. However, it may be used internally, and is declared here so that FirebaseServerApp conforms to the FirebaseApp interface. | +| [name](./app.firebaseserverappsettings.md#firebaseserverappsettingsname) | string | There is no getApp() operation for FirebaseServerApp, so the name is not relevant for applications. Therefore, this field will be ignored during FirebaseServerApp initialization, and is defined here solely to conform to TypeScript's exactOptionalPropertyTypes requirements. | | [releaseOnDeref](./app.firebaseserverappsettings.md#firebaseserverappsettingsreleaseonderef) | object | An optional object. If provided, the Firebase SDK uses a FinalizationRegistry object to monitor the garbage collection status of the provided object. The Firebase SDK releases its reference on the FirebaseServerApp instance when the provided releaseOnDeref object is garbage collected.You can use this field to reduce memory management overhead for your application. If provided, an app running in a SSR pass does not need to perform FirebaseServerApp cleanup, so long as the reference object is deleted (by falling out of SSR scope, for instance.)If an object is not provided then the application must clean up the FirebaseServerApp instance by invoking deleteApp.If the application provides an object in this parameter, but the application is executed in a JavaScript engine that predates the support of FinalizationRegistry (introduced in node v14.6.0, for instance), then an error is thrown at FirebaseServerApp initialization. | ## FirebaseServerAppSettings.authIdToken @@ -45,12 +45,12 @@ authIdToken?: string; ## FirebaseServerAppSettings.name -There is no `getApp()` operation for `FirebaseServerApp`, so the name is not relevant for applications. However, it may be used internally, and is declared here so that `FirebaseServerApp` conforms to the `FirebaseApp` interface. +There is no `getApp()` operation for `FirebaseServerApp`, so the name is not relevant for applications. Therefore, this field will be ignored during `FirebaseServerApp` initialization, and is defined here solely to conform to TypeScript's `exactOptionalPropertyTypes` requirements. Signature: ```typescript -name?: undefined; +name?: string; ``` ## FirebaseServerAppSettings.releaseOnDeref diff --git a/packages/app/src/api.ts b/packages/app/src/api.ts index 5928fd737a8..c385064dc97 100644 --- a/packages/app/src/api.ts +++ b/packages/app/src/api.ts @@ -252,6 +252,8 @@ export function initializeServerApp( ...appOptions }; + delete nameObj.name; + // However, Do not mangle the name based on releaseOnDeref, since it will vary between the // construction of FirebaseServerApp instances. For example, if the object is the request headers. if (nameObj.releaseOnDeref !== undefined) { diff --git a/packages/app/src/firebaseServerApp.ts b/packages/app/src/firebaseServerApp.ts index 6b6c33d316b..e59c6ba73a8 100644 --- a/packages/app/src/firebaseServerApp.ts +++ b/packages/app/src/firebaseServerApp.ts @@ -67,6 +67,8 @@ export class FirebaseServerAppImpl ...serverConfig }; + delete this._serverConfig.name; + this._finalizationRegistry = new FinalizationRegistry(() => { this.automaticCleanup(); }); diff --git a/packages/app/src/public-types.ts b/packages/app/src/public-types.ts index eb963a54adf..3fc28e1e198 100644 --- a/packages/app/src/public-types.ts +++ b/packages/app/src/public-types.ts @@ -218,10 +218,11 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings { /** * There is no `getApp()` operation for `FirebaseServerApp`, so the name is not relevant for - * applications. However, it may be used internally, and is declared here so that - * `FirebaseServerApp` conforms to the `FirebaseApp` interface. + * applications. Therefore, this field will be ignored during `FirebaseServerApp` initialization, + * and is defined here solely to conform to TypeScript's `exactOptionalPropertyTypes` + * requirements. */ - name?: undefined; + name?: string; } /** From cafed75d6a5478559d0ff65dc962cf3705373810 Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Fri, 28 Jun 2024 09:33:32 -0400 Subject: [PATCH 02/10] Omit name from FirebaseServerAppSettings. --- common/api-review/app.api.md | 3 +-- packages/app/src/api.ts | 2 -- packages/app/src/firebaseServerApp.ts | 2 -- packages/app/src/public-types.ts | 10 +--------- 4 files changed, 2 insertions(+), 15 deletions(-) diff --git a/common/api-review/app.api.md b/common/api-review/app.api.md index 24c6129eb71..33fffbb1f0c 100644 --- a/common/api-review/app.api.md +++ b/common/api-review/app.api.md @@ -78,9 +78,8 @@ export interface FirebaseServerApp extends FirebaseApp { } // @public -export interface FirebaseServerAppSettings extends FirebaseAppSettings { +export interface FirebaseServerAppSettings extends Omit { authIdToken?: string; - name?: string; releaseOnDeref?: object; } diff --git a/packages/app/src/api.ts b/packages/app/src/api.ts index c385064dc97..5928fd737a8 100644 --- a/packages/app/src/api.ts +++ b/packages/app/src/api.ts @@ -252,8 +252,6 @@ export function initializeServerApp( ...appOptions }; - delete nameObj.name; - // However, Do not mangle the name based on releaseOnDeref, since it will vary between the // construction of FirebaseServerApp instances. For example, if the object is the request headers. if (nameObj.releaseOnDeref !== undefined) { diff --git a/packages/app/src/firebaseServerApp.ts b/packages/app/src/firebaseServerApp.ts index e59c6ba73a8..6b6c33d316b 100644 --- a/packages/app/src/firebaseServerApp.ts +++ b/packages/app/src/firebaseServerApp.ts @@ -67,8 +67,6 @@ export class FirebaseServerAppImpl ...serverConfig }; - delete this._serverConfig.name; - this._finalizationRegistry = new FinalizationRegistry(() => { this.automaticCleanup(); }); diff --git a/packages/app/src/public-types.ts b/packages/app/src/public-types.ts index 3fc28e1e198..07fb1de66f0 100644 --- a/packages/app/src/public-types.ts +++ b/packages/app/src/public-types.ts @@ -175,7 +175,7 @@ export interface FirebaseAppSettings { * * Configuration options given to {@link (initializeServerApp:1) | initializeServerApp()} */ -export interface FirebaseServerAppSettings extends FirebaseAppSettings { +export interface FirebaseServerAppSettings extends Omit { /** * An optional Auth ID token used to resume a signed in user session from a client * runtime environment. @@ -215,14 +215,6 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings { * initialization. */ releaseOnDeref?: object; - - /** - * There is no `getApp()` operation for `FirebaseServerApp`, so the name is not relevant for - * applications. Therefore, this field will be ignored during `FirebaseServerApp` initialization, - * and is defined here solely to conform to TypeScript's `exactOptionalPropertyTypes` - * requirements. - */ - name?: string; } /** From e321fde169bb3eb467c1860b6a9d7cbdde4395dd Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Fri, 28 Jun 2024 09:39:00 -0400 Subject: [PATCH 03/10] changeset --- .changeset/silver-crews-build.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/silver-crews-build.md diff --git a/.changeset/silver-crews-build.md b/.changeset/silver-crews-build.md new file mode 100644 index 00000000000..99bd25f86d4 --- /dev/null +++ b/.changeset/silver-crews-build.md @@ -0,0 +1,7 @@ +--- +'@firebase/app': minor +--- + +The `FirebaseServerAppSettings.name` field inherited from `FirebaseAppSettings` is now omitted +instead of overloading the value as `undefined`. This fixes a TypeScript compilation error. For more +information, see [GitHub Issue #8336](https://github.com/firebase/firebase-js-sdk/issues/8336). From b71a10f94af5eea780f2e5deacaf1e65c7567e0b Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Fri, 28 Jun 2024 09:43:23 -0400 Subject: [PATCH 04/10] Minor bump `firebase` in the changeset. --- .changeset/silver-crews-build.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.changeset/silver-crews-build.md b/.changeset/silver-crews-build.md index 99bd25f86d4..1be57e5f6b1 100644 --- a/.changeset/silver-crews-build.md +++ b/.changeset/silver-crews-build.md @@ -1,4 +1,5 @@ --- +'firebase': minor '@firebase/app': minor --- From 5ff07dda10da93974d14338432e4c3f13f659b57 Mon Sep 17 00:00:00 2001 From: Daniel La Rocque Date: Fri, 28 Jun 2024 12:57:53 -0400 Subject: [PATCH 05/10] Generate refdocs --- docs-devsite/app.firebaseserverappsettings.md | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/docs-devsite/app.firebaseserverappsettings.md b/docs-devsite/app.firebaseserverappsettings.md index 831ac167d45..878804b0f64 100644 --- a/docs-devsite/app.firebaseserverappsettings.md +++ b/docs-devsite/app.firebaseserverappsettings.md @@ -15,16 +15,15 @@ Configuration options given to [initializeServerApp()](./app.md#initializeserver Signature: ```typescript -export interface FirebaseServerAppSettings extends FirebaseAppSettings +export interface FirebaseServerAppSettings extends Omit ``` -Extends: [FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface) +Extends: Omit<[FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface), "name?"> ## Properties | Property | Type | Description | | --- | --- | --- | | [authIdToken](./app.firebaseserverappsettings.md#firebaseserverappsettingsauthidtoken) | string | An optional Auth ID token used to resume a signed in user session from a client runtime environment.Invoking getAuth with a FirebaseServerApp configured with a validated authIdToken causes an automatic attempt to sign in the user that the authIdToken represents. The token needs to have been recently minted for this operation to succeed.If the token fails local verification, or if the Auth service has failed to validate it when the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not sign in a user on initialization.If a user is successfully signed in, then the Auth instance's onAuthStateChanged callback is invoked with the User object as per standard Auth flows. However, User objects created via an authIdToken do not have a refresh token. Attempted refreshToken operations fail. | -| [name](./app.firebaseserverappsettings.md#firebaseserverappsettingsname) | string | There is no getApp() operation for FirebaseServerApp, so the name is not relevant for applications. Therefore, this field will be ignored during FirebaseServerApp initialization, and is defined here solely to conform to TypeScript's exactOptionalPropertyTypes requirements. | | [releaseOnDeref](./app.firebaseserverappsettings.md#firebaseserverappsettingsreleaseonderef) | object | An optional object. If provided, the Firebase SDK uses a FinalizationRegistry object to monitor the garbage collection status of the provided object. The Firebase SDK releases its reference on the FirebaseServerApp instance when the provided releaseOnDeref object is garbage collected.You can use this field to reduce memory management overhead for your application. If provided, an app running in a SSR pass does not need to perform FirebaseServerApp cleanup, so long as the reference object is deleted (by falling out of SSR scope, for instance.)If an object is not provided then the application must clean up the FirebaseServerApp instance by invoking deleteApp.If the application provides an object in this parameter, but the application is executed in a JavaScript engine that predates the support of FinalizationRegistry (introduced in node v14.6.0, for instance), then an error is thrown at FirebaseServerApp initialization. | ## FirebaseServerAppSettings.authIdToken @@ -43,16 +42,6 @@ If a user is successfully signed in, then the Auth instance's `onAuthStateChange authIdToken?: string; ``` -## FirebaseServerAppSettings.name - -There is no `getApp()` operation for `FirebaseServerApp`, so the name is not relevant for applications. Therefore, this field will be ignored during `FirebaseServerApp` initialization, and is defined here solely to conform to TypeScript's `exactOptionalPropertyTypes` requirements. - -Signature: - -```typescript -name?: string; -``` - ## FirebaseServerAppSettings.releaseOnDeref An optional object. If provided, the Firebase SDK uses a `FinalizationRegistry` object to monitor the garbage collection status of the provided object. The Firebase SDK releases its reference on the `FirebaseServerApp` instance when the provided `releaseOnDeref` object is garbage collected. From 2b233555b2ff712baf8a864eb4665f3bcf6cb2b3 Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Fri, 28 Jun 2024 14:48:07 -0400 Subject: [PATCH 06/10] format --- packages/app/src/public-types.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/app/src/public-types.ts b/packages/app/src/public-types.ts index 07fb1de66f0..728b6b3daa2 100644 --- a/packages/app/src/public-types.ts +++ b/packages/app/src/public-types.ts @@ -175,7 +175,8 @@ export interface FirebaseAppSettings { * * Configuration options given to {@link (initializeServerApp:1) | initializeServerApp()} */ -export interface FirebaseServerAppSettings extends Omit { +export interface FirebaseServerAppSettings + extends Omit { /** * An optional Auth ID token used to resume a signed in user session from a client * runtime environment. From d331af4e4624ca50fc979342dcdb7ee93c8a73b4 Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Fri, 28 Jun 2024 20:06:02 +0000 Subject: [PATCH 07/10] Update API reports --- common/api-review/app.api.md | 2 +- common/api-review/util.api.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/common/api-review/app.api.md b/common/api-review/app.api.md index 33fffbb1f0c..1eb0b7c7c45 100644 --- a/common/api-review/app.api.md +++ b/common/api-review/app.api.md @@ -78,7 +78,7 @@ export interface FirebaseServerApp extends FirebaseApp { } // @public -export interface FirebaseServerAppSettings extends Omit { +export interface FirebaseServerAppSettings extends Omit { authIdToken?: string; releaseOnDeref?: object; } diff --git a/common/api-review/util.api.md b/common/api-review/util.api.md index 75e484edd50..09558e72ce8 100644 --- a/common/api-review/util.api.md +++ b/common/api-review/util.api.md @@ -329,6 +329,11 @@ export const isValidFormat: (token: string) => boolean; // @public export const isValidTimestamp: (token: string) => boolean; +// Warning: (ae-missing-release-tag) "isWebWorker" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) +// +// @public +export function isWebWorker(): boolean; + // Warning: (ae-missing-release-tag) "jsonEval" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal) // // @public From 62a1cce2d83f7779a9c37283ffc84e80caf3aa6f Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Fri, 28 Jun 2024 16:17:15 -0400 Subject: [PATCH 08/10] docs --- docs-devsite/app.firebaseserverappsettings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-devsite/app.firebaseserverappsettings.md b/docs-devsite/app.firebaseserverappsettings.md index 878804b0f64..cd14691a865 100644 --- a/docs-devsite/app.firebaseserverappsettings.md +++ b/docs-devsite/app.firebaseserverappsettings.md @@ -15,9 +15,9 @@ Configuration options given to [initializeServerApp()](./app.md#initializeserver Signature: ```typescript -export interface FirebaseServerAppSettings extends Omit +export interface FirebaseServerAppSettings extends Omit ``` -Extends: Omit<[FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface), "name?"> +Extends: Omit<[FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface), 'name?'> ## Properties From ef0f1bb3921205456bb95b5766aac5f68c273327 Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Mon, 1 Jul 2024 09:28:38 -0400 Subject: [PATCH 09/10] Update `name?` to `name` --- common/api-review/app.api.md | 2 +- docs-devsite/app.firebaseserverappsettings.md | 4 ++-- packages/app/src/public-types.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/api-review/app.api.md b/common/api-review/app.api.md index 1eb0b7c7c45..bdfb2a681f1 100644 --- a/common/api-review/app.api.md +++ b/common/api-review/app.api.md @@ -78,7 +78,7 @@ export interface FirebaseServerApp extends FirebaseApp { } // @public -export interface FirebaseServerAppSettings extends Omit { +export interface FirebaseServerAppSettings extends Omit { authIdToken?: string; releaseOnDeref?: object; } diff --git a/docs-devsite/app.firebaseserverappsettings.md b/docs-devsite/app.firebaseserverappsettings.md index cd14691a865..bc46c5292d0 100644 --- a/docs-devsite/app.firebaseserverappsettings.md +++ b/docs-devsite/app.firebaseserverappsettings.md @@ -15,9 +15,9 @@ Configuration options given to [initializeServerApp()](./app.md#initializeserver Signature: ```typescript -export interface FirebaseServerAppSettings extends Omit +export interface FirebaseServerAppSettings extends Omit ``` -Extends: Omit<[FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface), 'name?'> +Extends: Omit<[FirebaseAppSettings](./app.firebaseappsettings.md#firebaseappsettings_interface), 'name'> ## Properties diff --git a/packages/app/src/public-types.ts b/packages/app/src/public-types.ts index 728b6b3daa2..ff25de93a46 100644 --- a/packages/app/src/public-types.ts +++ b/packages/app/src/public-types.ts @@ -176,7 +176,7 @@ export interface FirebaseAppSettings { * Configuration options given to {@link (initializeServerApp:1) | initializeServerApp()} */ export interface FirebaseServerAppSettings - extends Omit { + extends Omit { /** * An optional Auth ID token used to resume a signed in user session from a client * runtime environment. From ad7a9ad7c57f8d63863d3fc45e95afa9fff88b3f Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Mon, 1 Jul 2024 09:32:39 -0400 Subject: [PATCH 10/10] Update changeset --- .changeset/silver-crews-build.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/silver-crews-build.md b/.changeset/silver-crews-build.md index 1be57e5f6b1..e9cf0d08eae 100644 --- a/.changeset/silver-crews-build.md +++ b/.changeset/silver-crews-build.md @@ -1,6 +1,6 @@ --- -'firebase': minor -'@firebase/app': minor +'firebase': patch +'@firebase/app': patch --- The `FirebaseServerAppSettings.name` field inherited from `FirebaseAppSettings` is now omitted