@@ -57,13 +57,13 @@ import {
57
57
Unsubscribe
58
58
} from '../../../src/api/observer' ;
59
59
import {
60
- getEventManager ,
61
60
executeQueryFromCache ,
62
61
executeQueryViaSnapshotListener ,
63
- readDocumentFromCache ,
64
- readDocumentViaSnapshotListener ,
62
+ firestoreClientWrite ,
63
+ getEventManager ,
65
64
getLocalStore ,
66
- firestoreClientWrite
65
+ readDocumentFromCache ,
66
+ readDocumentViaSnapshotListener
67
67
} from '../../../src/core/firestore_client' ;
68
68
import {
69
69
newQueryForPath ,
@@ -80,6 +80,15 @@ import {
80
80
} from '../../../src/core/event_manager' ;
81
81
import { FirestoreError } from '../../../src/util/error' ;
82
82
import { Compat } from '../../../src/compat/compat' ;
83
+ import { ByteString } from '../../../src/util/byte_string' ;
84
+ import { Bytes } from '../../../lite/src/api/bytes' ;
85
+ import { AbstractUserDataWriter } from '../../../src/api/user_data_writer' ;
86
+
87
+ export {
88
+ DocumentReference ,
89
+ CollectionReference ,
90
+ Query
91
+ } from '../../../lite/src/api/reference' ;
83
92
84
93
/**
85
94
* An options object that can be passed to {@link onSnapshot()} and {@link
@@ -128,6 +137,21 @@ export function getDoc<T>(
128
137
) ;
129
138
}
130
139
140
+ export class ExpUserDataWriter extends AbstractUserDataWriter {
141
+ constructor ( protected firestore : FirebaseFirestore ) {
142
+ super ( ) ;
143
+ }
144
+
145
+ protected convertBytes ( bytes : ByteString ) : Bytes {
146
+ return new Bytes ( bytes ) ;
147
+ }
148
+
149
+ protected convertReference ( name : string ) : DocumentReference {
150
+ const key = this . convertDocumentKey ( name , this . firestore . _databaseId ) ;
151
+ return new DocumentReference ( this . firestore , /* converter= */ null , key ) ;
152
+ }
153
+ }
154
+
131
155
/**
132
156
* Reads the document referred to by this `DocumentReference` from cache.
133
157
* Returns an error if the document is not currently cached.
@@ -140,6 +164,7 @@ export function getDocFromCache<T>(
140
164
) : Promise < DocumentSnapshot < T > > {
141
165
const firestore = cast ( reference . firestore , FirebaseFirestore ) ;
142
166
const client = ensureFirestoreConfigured ( firestore ) ;
167
+ const userDataWriter = new ExpUserDataWriter ( firestore ) ;
143
168
144
169
const deferred = new Deferred < Document | null > ( ) ;
145
170
firestore . _queue . enqueueAndForget ( async ( ) => {
@@ -150,6 +175,7 @@ export function getDocFromCache<T>(
150
175
doc =>
151
176
new DocumentSnapshot (
152
177
firestore ,
178
+ userDataWriter ,
153
179
reference . _key ,
154
180
doc ,
155
181
new SnapshotMetadata (
@@ -203,6 +229,7 @@ export function getDocFromServer<T>(
203
229
export function getDocs < T > ( query : Query < T > ) : Promise < QuerySnapshot < T > > {
204
230
const firestore = cast ( query . firestore , FirebaseFirestore ) ;
205
231
const client = ensureFirestoreConfigured ( firestore ) ;
232
+ const userDataWriter = new ExpUserDataWriter ( firestore ) ;
206
233
207
234
validateHasExplicitOrderByForLimitToLast ( query . _query ) ;
208
235
@@ -218,7 +245,7 @@ export function getDocs<T>(query: Query<T>): Promise<QuerySnapshot<T>> {
218
245
) ;
219
246
} ) ;
220
247
return deferred . promise . then (
221
- snapshot => new QuerySnapshot ( firestore , query , snapshot )
248
+ snapshot => new QuerySnapshot ( firestore , userDataWriter , query , snapshot )
222
249
) ;
223
250
}
224
251
@@ -233,14 +260,15 @@ export function getDocsFromCache<T>(
233
260
) : Promise < QuerySnapshot < T > > {
234
261
const firestore = cast ( query . firestore , FirebaseFirestore ) ;
235
262
const client = ensureFirestoreConfigured ( firestore ) ;
263
+ const userDataWriter = new ExpUserDataWriter ( firestore ) ;
236
264
237
265
const deferred = new Deferred < ViewSnapshot > ( ) ;
238
266
firestore . _queue . enqueueAndForget ( async ( ) => {
239
267
const localStore = await getLocalStore ( client ) ;
240
268
await executeQueryFromCache ( localStore , query . _query , deferred ) ;
241
269
} ) ;
242
270
return deferred . promise . then (
243
- snapshot => new QuerySnapshot ( firestore , query , snapshot )
271
+ snapshot => new QuerySnapshot ( firestore , userDataWriter , query , snapshot )
244
272
) ;
245
273
}
246
274
@@ -255,6 +283,7 @@ export function getDocsFromServer<T>(
255
283
) : Promise < QuerySnapshot < T > > {
256
284
const firestore = cast ( query . firestore , FirebaseFirestore ) ;
257
285
const client = ensureFirestoreConfigured ( firestore ) ;
286
+ const userDataWriter = new ExpUserDataWriter ( firestore ) ;
258
287
259
288
const deferred = new Deferred < ViewSnapshot > ( ) ;
260
289
firestore . _queue . enqueueAndForget ( async ( ) => {
@@ -268,7 +297,7 @@ export function getDocsFromServer<T>(
268
297
) ;
269
298
} ) ;
270
299
return deferred . promise . then (
271
- snapshot => new QuerySnapshot ( firestore , query , snapshot )
300
+ snapshot => new QuerySnapshot ( firestore , userDataWriter , query , snapshot )
272
301
) ;
273
302
}
274
303
@@ -701,12 +730,13 @@ export function onSnapshot<T>(
701
730
} else {
702
731
firestore = cast ( reference . firestore , FirebaseFirestore ) ;
703
732
internalQuery = reference . _query ;
733
+ const userDataWriter = new ExpUserDataWriter ( firestore ) ;
704
734
705
735
observer = {
706
736
next : snapshot => {
707
737
if ( args [ currArg ] ) {
708
738
( args [ currArg ] as NextFn < QuerySnapshot < T > > ) (
709
- new QuerySnapshot ( firestore , reference , snapshot )
739
+ new QuerySnapshot ( firestore , userDataWriter , reference , snapshot )
710
740
) ;
711
741
}
712
742
} ,
@@ -836,8 +866,10 @@ function convertToDocSnapshot<T>(
836
866
) ;
837
867
const doc = snapshot . docs . get ( ref . _key ) ;
838
868
869
+ const userDataWriter = new ExpUserDataWriter ( firestore ) ;
839
870
return new DocumentSnapshot (
840
871
firestore ,
872
+ userDataWriter ,
841
873
ref . _key ,
842
874
doc ,
843
875
new SnapshotMetadata ( snapshot . hasPendingWrites , snapshot . fromCache ) ,
0 commit comments