-
Notifications
You must be signed in to change notification settings - Fork 938
[Feat] WIP FS SSR serialization #8926
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…ure branch (#8872) Merge the initial bundler implementation into the Firestore Result Serialization feature branch. Implementation includes the ability to invoke `toJSON()` on `QuerySnapshot` and `DocumentSnapshot` instances.
…8896) Pull request to add onSnapshot listeners support for bundles to the Firestore SSR serialization feature branch. This change adds a series of onSnapshot overloads that match the existing onSnapshot variants (observer, individual callback functions, etc) but accepts a bundle instead of a QuerySnapshot or a DocumentSnapshot. The toJSON methods of `QuerySnapshot` and `DocumentSnapshot` have also been updated to explicitly name the fields in the object return type. Fixed an issue in the bundle builder where the bundleName for `DocumentSnapshots` didn't match the `ResourcePath` of the document, which is needed when reconstituting the `DocumentReference` in `onSnapshot`. Finally, I cleaned up the text wrapping for the `onSnapshot` reference doc comments so they take up fewer lines of source code.
|
Size Report 1Affected Products
Test Logs |
Size Analysis Report 1This report is too large (1,175,552 characters) to be displayed here in a GitHub comment. Please use the below link to see the full report on Google Cloud Storage.Test Logs |
commit 05338d8 Author: DellaBitta <[email protected]> Date: Thu Apr 24 15:58:18 2025 -0400 test fixes commit 28c6da9 Author: DellaBitta <[email protected]> Date: Thu Apr 24 15:39:22 2025 -0400 update vector_value commit 0aa81ce Author: DellaBitta <[email protected]> Date: Thu Apr 24 15:39:11 2025 -0400 update reference commit e20bac9 Author: DellaBitta <[email protected]> Date: Thu Apr 24 15:24:50 2025 -0400 update timestamp commit 05b29c4 Author: DellaBitta <[email protected]> Date: Thu Apr 24 15:24:39 2025 -0400 update geopoint commit 4cf66f2 Author: DellaBitta <[email protected]> Date: Thu Apr 24 15:16:15 2025 -0400 convert DocumentReference to new JSON validator. commit 00a2423 Author: DellaBitta <[email protected]> Date: Thu Apr 24 13:44:27 2025 -0400 format fix. commit 09eb5cf Author: DellaBitta <[email protected]> Date: Thu Apr 24 13:43:13 2025 -0400 Bytes prototype. commit b753f49 Author: DellaBitta <[email protected]> Date: Thu Apr 24 13:26:41 2025 -0400 Linter doesn't like it, but API extractor does commit 775cc69 Author: DellaBitta <[email protected]> Date: Thu Apr 17 13:13:52 2025 -0400 lower case types commit 188c86f Author: DellaBitta <[email protected]> Date: Thu Apr 17 10:41:58 2025 -0400 DocumentReference unit and integration tests commit 44d8045 Author: DellaBitta <[email protected]> Date: Wed Apr 16 20:39:55 2025 -0400 map Timestamp fields to DbTimestamp fields commit f305182 Author: DellaBitta <[email protected]> Date: Wed Apr 16 15:54:23 2025 -0400 DocumentReference impl commit 05a49aa Author: DellaBitta <[email protected]> Date: Wed Apr 16 11:14:00 2025 -0400 Timestamp, GeoPoint, VectorValue commit 1652e8b Author: DellaBitta <[email protected]> Date: Tue Apr 15 17:33:51 2025 -0400 format commit 8a081e1 Author: DellaBitta <[email protected]> Date: Tue Apr 15 17:26:09 2025 -0400 Bytes and VectorValue to/from JSON commit 2a07791 Author: DellaBitta <[email protected]> Date: Tue Apr 15 14:07:25 2025 -0400 Bytes
Add a methods to parse bundles synchronously to extract single `DocumentSnapshots` or `QuerySnapshots` containing documents. Hook the new bundle parser up the `documentSnapshotFromJSON` and `querySnapshotFromJSON`. ### Testing Local testing with Next.js app. Added unit tests and integration tests. ### API Changes go/fs-js-json-serialization
Vertex AI Mock Responses Check
|
To reduce bundle size on clients, the `toJSON` methods of `DocumentSnapshot` and `QuerySnapshot` will not create bundles. ### Testing Updated the integration and unit tests to test `fromJSON` functionality in node environments only. I did attempt to create pre-packaged bundles so that we can test in browser still, but unforunately the bundle includes the project name, and the project that we test against varies depending on the profile of tests that were running (prod, local, etc). If these don't match then an error is thrown. ### API Changes N/A
Discussion
Do not merge. Work in progress feature branch.
Support the ability to resume
onSnapshot
listeners in the CSR phase based on serializedDataSnapshot
s andQuerySnapshot
s built in the SSR phase. Allow Firestore result types to be serialized withtoJSON
and then deserialized withfromJSON
methods on the objects.DocumentSnapshot
andQuerySnapshot
deserialization methods will be standalone, tree-shakable functionsdataSnapshotFromJSON
andquerySnapshotFromJSON
.Testing
Integration Tests.
Unit Tests.
Locally tested with Next.JS.
Will add to our Next.js End to End test suite when the change has been staged.
API Changes
In review: go/fs-js-json-serialization.