Skip to content

Commit 6d31930

Browse files
authored
Quick fix for FirebaseServerApp#toJSON (#8109)
* Quick fix for FirebaseServerApp#toJSON * initalization => initialization
1 parent 666ddda commit 6d31930

File tree

5 files changed

+32
-3
lines changed

5 files changed

+32
-3
lines changed

.changeset/shy-bats-wave.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@firebase/app': patch
3+
---
4+
5+
FirebaseServerApp should not be JSON serializable

docs-devsite/app.firebaseserverappsettings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings
2323
2424
| Property | Type | Description |
2525
| --- | --- | --- |
26-
| [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 <code>getAuth</code> with a <code>FirebaseServerApp</code> configured with a validated <code>authIdToken</code> causes an automatic attempt to sign in the user that the <code>authIdToken</code> 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 initalization.<!-- -->If a user is successfully signed in, then the Auth instance's <code>onAuthStateChanged</code> callback is invoked with the <code>User</code> object as per standard Auth flows. However, <code>User</code> objects created via an <code>authIdToken</code> do not have a refresh token. Attempted <code>refreshToken</code> operations fail. |
26+
| [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 <code>getAuth</code> with a <code>FirebaseServerApp</code> configured with a validated <code>authIdToken</code> causes an automatic attempt to sign in the user that the <code>authIdToken</code> 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 <code>onAuthStateChanged</code> callback is invoked with the <code>User</code> object as per standard Auth flows. However, <code>User</code> objects created via an <code>authIdToken</code> do not have a refresh token. Attempted <code>refreshToken</code> operations fail. |
2727
| [name](./app.firebaseserverappsettings.md#firebaseserverappsettingsname) | undefined | There is no <code>getApp()</code> operation for <code>FirebaseServerApp</code>, so the name is not relevant for applications. However, it may be used internally, and is declared here so that <code>FirebaseServerApp</code> conforms to the <code>FirebaseApp</code> interface. |
2828
| [releaseOnDeref](./app.firebaseserverappsettings.md#firebaseserverappsettingsreleaseonderef) | object | An optional object. If provided, the Firebase SDK uses a <code>FinalizationRegistry</code> object to monitor the garbage collection status of the provided object. The Firebase SDK releases its reference on the <code>FirebaseServerApp</code> instance when the provided <code>releaseOnDeref</code> 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 <code>FirebaseServerApp</code> 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 <code>FirebaseServerApp</code> instance by invoking <code>deleteApp</code>.<!-- -->If the application provides an object in this parameter, but the application is executed in a JavaScript engine that predates the support of <code>FinalizationRegistry</code> (introduced in node v14.6.0, for instance), then an error is thrown at <code>FirebaseServerApp</code> initialization. |
2929
@@ -33,7 +33,7 @@ An optional Auth ID token used to resume a signed in user session from a client
3333
3434
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.
3535
36-
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 initalization.
36+
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.
3737
3838
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.
3939

packages/app/src/firebaseServerApp.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,24 @@ describe('FirebaseServerApp', () => {
135135

136136
expect(() => app.settings).throws('Firebase Server App has been deleted');
137137
});
138+
139+
it('should not be JSON serializable', () => {
140+
const options = {
141+
apiKey: 'APIKEY'
142+
};
143+
144+
const serverAppSettings: FirebaseServerAppSettings = {
145+
automaticDataCollectionEnabled: false,
146+
releaseOnDeref: options
147+
};
148+
149+
const app = new FirebaseServerAppImpl(
150+
options,
151+
serverAppSettings,
152+
'testName',
153+
new ComponentContainer('test')
154+
);
155+
156+
expect(JSON.stringify(app)).to.eql(undefined);
157+
});
138158
});

packages/app/src/firebaseServerApp.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ export class FirebaseServerAppImpl
8282
registerVersion(packageName, version, 'serverapp');
8383
}
8484

85+
toJSON(): undefined {
86+
return undefined;
87+
}
88+
8589
get refCount(): number {
8690
return this._refCount;
8791
}

packages/app/src/public-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings {
186186
*
187187
* If the token fails local verification, or if the Auth service has failed to validate it when
188188
* the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not
189-
* sign in a user on initalization.
189+
* sign in a user on initialization.
190190
*
191191
* If a user is successfully signed in, then the Auth instance's `onAuthStateChanged` callback
192192
* is invoked with the `User` object as per standard Auth flows. However, `User` objects

0 commit comments

Comments
 (0)