Skip to content

Commit ba2b11f

Browse files
Make Converter explicit (#4817)
1 parent d422436 commit ba2b11f

11 files changed

+46
-42
lines changed

packages/firestore/src/api/database.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ export class Transaction implements PublicTransaction, Compat<ExpTransaction> {
409409
result._key,
410410
result._document,
411411
result.metadata,
412-
ref._converter
412+
ref.converter
413413
)
414414
)
415415
);
@@ -775,7 +775,7 @@ export class DocumentReference<T = PublicDocumentData>
775775
result._key,
776776
result._document,
777777
result.metadata,
778-
this._delegate._converter
778+
this._delegate.converter
779779
)
780780
)
781781
);
@@ -802,7 +802,7 @@ export class DocumentReference<T = PublicDocumentData>
802802
result._key,
803803
result._document,
804804
result.metadata,
805-
this._delegate._converter as UntypedFirestoreDataConverter<T>
805+
this._delegate.converter as UntypedFirestoreDataConverter<T>
806806
)
807807
)
808808
);

packages/firestore/src/exp/database.ts

+2
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ export const CACHE_SIZE_UNLIMITED = LRU_COLLECTION_DISABLED;
8080
* Do not call this constructor directly. Instead, use {@link getFirestore}.
8181
*/
8282
export class FirebaseFirestore extends LiteFirestore {
83+
type: 'firestore-lite' | 'firestore' = 'firestore';
84+
8385
readonly _queue: AsyncQueue = newAsyncQueue();
8486
readonly _persistenceKey: string;
8587

packages/firestore/src/exp/reference_impl.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ export function getDocFromCache<T>(
143143
doc !== null && doc.hasLocalMutations,
144144
/* fromCache= */ true
145145
),
146-
reference._converter
146+
reference.converter
147147
)
148148
);
149149
}
@@ -270,7 +270,7 @@ export function setDoc<T>(
270270
const firestore = cast(reference.firestore, FirebaseFirestore);
271271

272272
const convertedValue = applyFirestoreDataConverter(
273-
reference._converter,
273+
reference.converter,
274274
data,
275275
options
276276
);
@@ -280,7 +280,7 @@ export function setDoc<T>(
280280
'setDoc',
281281
reference._key,
282282
convertedValue,
283-
reference._converter !== null,
283+
reference.converter !== null,
284284
options
285285
);
286286

@@ -398,18 +398,15 @@ export function addDoc<T>(
398398
const firestore = cast(reference.firestore, FirebaseFirestore);
399399

400400
const docRef = doc(reference);
401-
const convertedValue = applyFirestoreDataConverter(
402-
reference._converter,
403-
data
404-
);
401+
const convertedValue = applyFirestoreDataConverter(reference.converter, data);
405402

406403
const dataReader = newUserDataReader(reference.firestore);
407404
const parsed = parseSetData(
408405
dataReader,
409406
'addDoc',
410407
docRef._key,
411408
convertedValue,
412-
reference._converter !== null,
409+
reference.converter !== null,
413410
{}
414411
);
415412

@@ -794,6 +791,6 @@ function convertToDocSnapshot<T>(
794791
ref._key,
795792
doc,
796793
new SnapshotMetadata(snapshot.hasPendingWrites, snapshot.fromCache),
797-
ref._converter
794+
ref.converter
798795
);
799796
}

packages/firestore/src/exp/snapshot.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ export class QuerySnapshot<T = DocumentData> {
427427
this._snapshot.mutatedKeys.has(doc.key),
428428
this._snapshot.fromCache
429429
),
430-
this.query._converter
430+
this.query.converter
431431
)
432432
);
433433
});
@@ -497,7 +497,7 @@ export function changesFromSnapshot<T>(
497497
querySnapshot._snapshot.mutatedKeys.has(change.doc.key),
498498
querySnapshot._snapshot.fromCache
499499
),
500-
querySnapshot.query._converter
500+
querySnapshot.query.converter
501501
);
502502
lastDoc = change.doc;
503503
return {
@@ -525,7 +525,7 @@ export function changesFromSnapshot<T>(
525525
querySnapshot._snapshot.mutatedKeys.has(change.doc.key),
526526
querySnapshot._snapshot.fromCache
527527
),
528-
querySnapshot.query._converter
528+
querySnapshot.query.converter
529529
);
530530
let oldIndex = -1;
531531
let newIndex = -1;

packages/firestore/src/exp/transaction.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export class Transaction extends LiteTransaction {
6666
/* hasPendingWrites= */ false,
6767
/* fromCache= */ false
6868
),
69-
ref._converter
69+
ref.converter
7070
)
7171
);
7272
}

packages/firestore/src/lite/database.ts

+2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ declare module '@firebase/component' {
5656
* Do not call this constructor directly. Instead, use {@link getFirestore}.
5757
*/
5858
export class FirebaseFirestore implements FirestoreService {
59+
type: 'firestore-lite' | 'firestore' = 'firestore-lite';
60+
5961
readonly _databaseId: DatabaseId;
6062
readonly _persistenceKey: string = '(lite)';
6163
_credentials: CredentialsProvider;

packages/firestore/src/lite/query.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ class QueryFilterConstraint extends QueryConstraint {
147147
);
148148
return new Query(
149149
query.firestore,
150-
query._converter,
150+
query.converter,
151151
queryWithAddedFilter(query._query, filter)
152152
);
153153
}
@@ -205,7 +205,7 @@ class QueryOrderByConstraint extends QueryConstraint {
205205
const orderBy = newQueryOrderBy(query._query, this._field, this._direction);
206206
return new Query(
207207
query.firestore,
208-
query._converter,
208+
query.converter,
209209
queryWithAddedOrderBy(query._query, orderBy)
210210
);
211211
}
@@ -247,7 +247,7 @@ class QueryLimitConstraint extends QueryConstraint {
247247
_apply<T>(query: Query<T>): Query<T> {
248248
return new Query(
249249
query.firestore,
250-
query._converter,
250+
query.converter,
251251
queryWithLimit(query._query, this._limit, this._limitType)
252252
);
253253
}
@@ -296,7 +296,7 @@ class QueryStartAtConstraint extends QueryConstraint {
296296
);
297297
return new Query(
298298
query.firestore,
299-
query._converter,
299+
query.converter,
300300
queryWithStartAt(query._query, bound)
301301
);
302302
}
@@ -378,7 +378,7 @@ class QueryEndAtConstraint extends QueryConstraint {
378378
);
379379
return new Query(
380380
query.firestore,
381-
query._converter,
381+
query.converter,
382382
queryWithEndAt(query._query, bound)
383383
);
384384
}

packages/firestore/src/lite/reference.ts

+12-6
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,10 @@ export class DocumentReference<T = DocumentData> {
9898
/** @hideconstructor */
9999
constructor(
100100
firestore: FirebaseFirestore,
101-
readonly _converter: FirestoreDataConverter<T> | null,
101+
/**
102+
* If provided, the `FirestoreDataConverter` associated with this instance.
103+
*/
104+
readonly converter: FirestoreDataConverter<T> | null,
102105
readonly _key: DocumentKey
103106
) {
104107
this.firestore = firestore;
@@ -129,7 +132,7 @@ export class DocumentReference<T = DocumentData> {
129132
get parent(): CollectionReference<T> {
130133
return new CollectionReference<T>(
131134
this.firestore,
132-
this._converter,
135+
this.converter,
133136
this._key.path.popLast()
134137
);
135138
}
@@ -178,7 +181,10 @@ export class Query<T = DocumentData> {
178181
/** @hideconstructor protected */
179182
constructor(
180183
firestore: FirebaseFirestore,
181-
readonly _converter: FirestoreDataConverter<T> | null,
184+
/**
185+
* If provided, the `FirestoreDataConverter` associated with this instance.
186+
*/
187+
readonly converter: FirestoreDataConverter<T> | null,
182188
readonly _query: InternalQuery
183189
) {
184190
this.firestore = firestore;
@@ -502,7 +508,7 @@ export function doc<T>(
502508
validateDocumentPath(absolutePath);
503509
return new DocumentReference(
504510
parent.firestore,
505-
parent instanceof CollectionReference ? parent._converter : null,
511+
parent instanceof CollectionReference ? parent.converter : null,
506512
new DocumentKey(absolutePath)
507513
);
508514
}
@@ -531,7 +537,7 @@ export function refEqual<T>(
531537
return (
532538
left.firestore === right.firestore &&
533539
left.path === right.path &&
534-
left._converter === right._converter
540+
left.converter === right.converter
535541
);
536542
}
537543
return false;
@@ -554,7 +560,7 @@ export function queryEqual<T>(left: Query<T>, right: Query<T>): boolean {
554560
return (
555561
left.firestore === right.firestore &&
556562
queryEquals(left._query, right._query) &&
557-
left._converter === right._converter
563+
left.converter === right.converter
558564
);
559565
}
560566
return false;

packages/firestore/src/lite/reference_impl.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ export function getDoc<T>(
134134
userDataWriter,
135135
reference._key,
136136
document.isFoundDocument() ? document : null,
137-
reference._converter
137+
reference.converter
138138
);
139139
}
140140
);
@@ -166,7 +166,7 @@ export function getDocs<T>(query: Query<T>): Promise<QuerySnapshot<T>> {
166166
userDataWriter,
167167
doc.key,
168168
doc,
169-
query._converter
169+
query.converter
170170
)
171171
);
172172

@@ -227,7 +227,7 @@ export function setDoc<T>(
227227
): Promise<void> {
228228
reference = cast<DocumentReference<T>>(reference, DocumentReference);
229229
const convertedValue = applyFirestoreDataConverter(
230-
reference._converter,
230+
reference.converter,
231231
data,
232232
options
233233
);
@@ -237,7 +237,7 @@ export function setDoc<T>(
237237
'setDoc',
238238
reference._key,
239239
convertedValue,
240-
reference._converter !== null,
240+
reference.converter !== null,
241241
options
242242
);
243243

@@ -378,18 +378,15 @@ export function addDoc<T>(
378378
reference = cast<CollectionReference<T>>(reference, CollectionReference);
379379
const docRef = doc(reference);
380380

381-
const convertedValue = applyFirestoreDataConverter(
382-
reference._converter,
383-
data
384-
);
381+
const convertedValue = applyFirestoreDataConverter(reference.converter, data);
385382

386383
const dataReader = newUserDataReader(reference.firestore);
387384
const parsed = parseSetData(
388385
dataReader,
389386
'addDoc',
390387
docRef._key,
391388
convertedValue,
392-
docRef._converter !== null,
389+
docRef.converter !== null,
393390
{}
394391
);
395392

packages/firestore/src/lite/transaction.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,15 @@ export class Transaction {
8888
userDataWriter,
8989
doc.key,
9090
doc,
91-
ref._converter
91+
ref.converter
9292
);
9393
} else if (doc.isNoDocument()) {
9494
return new DocumentSnapshot(
9595
this._firestore,
9696
userDataWriter,
9797
ref._key,
9898
null,
99-
ref._converter
99+
ref.converter
100100
);
101101
} else {
102102
throw fail(
@@ -138,7 +138,7 @@ export class Transaction {
138138
): this {
139139
const ref = validateReference(documentRef, this._firestore);
140140
const convertedValue = applyFirestoreDataConverter(
141-
ref._converter,
141+
ref.converter,
142142
value,
143143
options
144144
);
@@ -147,7 +147,7 @@ export class Transaction {
147147
'Transaction.set',
148148
ref._key,
149149
convertedValue,
150-
ref._converter !== null,
150+
ref.converter !== null,
151151
options
152152
);
153153
this._transaction.set(ref._key, parsed);

packages/firestore/src/lite/write_batch.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ export class WriteBatch {
9393
const ref = validateReference(documentRef, this._firestore);
9494

9595
const convertedValue = applyFirestoreDataConverter(
96-
ref._converter,
96+
ref.converter,
9797
data,
9898
options
9999
);
@@ -102,7 +102,7 @@ export class WriteBatch {
102102
'WriteBatch.set',
103103
ref._key,
104104
convertedValue,
105-
ref._converter !== null,
105+
ref.converter !== null,
106106
options
107107
);
108108
this._mutations.push(parsed.toMutation(ref._key, Precondition.none()));

0 commit comments

Comments
 (0)