Skip to content

Commit e14de0b

Browse files
committed
firestore[-lite].api.md update
1 parent f921d25 commit e14de0b

File tree

2 files changed

+149
-153
lines changed

2 files changed

+149
-153
lines changed

common/api-review/firestore-lite.api.md

Lines changed: 65 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { FirebaseError } from '@firebase/util';
1010
import { LogLevelString as LogLevel } from '@firebase/logger';
1111

1212
// @public
13-
export function addDoc<T>(reference: CollectionReference<T>, data: WithFieldValue<T>): Promise<DocumentReference<T>>;
13+
export function addDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: CollectionReference<AppType, DbType>, data: WithFieldValue<AppType>): Promise<DocumentReference<AppType, DbType>>;
1414

1515
// @public
1616
export type AddPrefixToKeys<Prefix extends string, T extends Record<string, unknown>> = {
@@ -26,14 +26,14 @@ export class AggregateField<T> {
2626
export type AggregateFieldType = AggregateField<number | null>;
2727

2828
// @public
29-
export class AggregateQuerySnapshot<T extends AggregateSpec> {
30-
data(): AggregateSpecData<T>;
31-
readonly query: Query<unknown>;
29+
export class AggregateQuerySnapshot<AggregateSpecType extends AggregateSpec, AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> {
30+
data(): AggregateSpecData<AggregateSpecType>;
31+
readonly query: Query<AppType, DbType>;
3232
readonly type = "AggregateQuerySnapshot";
3333
}
3434

3535
// @public
36-
export function aggregateQuerySnapshotEqual<T extends AggregateSpec>(left: AggregateQuerySnapshot<T>, right: AggregateQuerySnapshot<T>): boolean;
36+
export function aggregateQuerySnapshotEqual<AggregateSpecType extends AggregateSpec>(left: AggregateQuerySnapshot<AggregateSpecType>, right: AggregateQuerySnapshot<AggregateSpecType>): boolean;
3737

3838
// @public
3939
export interface AggregateSpec {
@@ -69,25 +69,25 @@ export class Bytes {
6969
export type ChildUpdateFields<K extends string, V> = V extends Record<string, unknown> ? AddPrefixToKeys<K, UpdateData<V>> : never;
7070

7171
// @public
72-
export function collection(firestore: Firestore, path: string, ...pathSegments: string[]): CollectionReference<DocumentData>;
72+
export function collection(firestore: Firestore, path: string, ...pathSegments: string[]): CollectionReference<DocumentData, DocumentData>;
7373

7474
// @public
75-
export function collection(reference: CollectionReference<unknown>, path: string, ...pathSegments: string[]): CollectionReference<DocumentData>;
75+
export function collection<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: CollectionReference<AppType, DbType>, path: string, ...pathSegments: string[]): CollectionReference<DocumentData, DocumentData>;
7676

7777
// @public
78-
export function collection(reference: DocumentReference, path: string, ...pathSegments: string[]): CollectionReference<DocumentData>;
78+
export function collection<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>, path: string, ...pathSegments: string[]): CollectionReference<DocumentData, DocumentData>;
7979

8080
// @public
81-
export function collectionGroup(firestore: Firestore, collectionId: string): Query<DocumentData>;
81+
export function collectionGroup(firestore: Firestore, collectionId: string): Query<DocumentData, DocumentData>;
8282

8383
// @public
84-
export class CollectionReference<T = DocumentData> extends Query<T> {
84+
export class CollectionReference<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> extends Query<AppType, DbType> {
8585
get id(): string;
86-
get parent(): DocumentReference<DocumentData> | null;
86+
get parent(): DocumentReference<DocumentData, DocumentData> | null;
8787
get path(): string;
8888
readonly type = "collection";
89-
withConverter<U>(converter: FirestoreDataConverter<U>): CollectionReference<U>;
90-
withConverter(converter: null): CollectionReference<DocumentData>;
89+
withConverter<NewAppType = DocumentData, NewDbType extends DocumentData = NewAppType extends DocumentData ? NewAppType : DocumentData>(converter: FirestoreDataConverter<NewAppType, NewDbType>): CollectionReference<NewAppType, NewDbType>;
90+
withConverter(converter: null): CollectionReference<DocumentData, DocumentData>;
9191
}
9292

9393
// @public
@@ -96,48 +96,46 @@ export function connectFirestoreEmulator(firestore: Firestore, host: string, por
9696
}): void;
9797

9898
// @public
99-
export function deleteDoc(reference: DocumentReference<unknown>): Promise<void>;
99+
export function deleteDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>): Promise<void>;
100100

101101
// @public
102102
export function deleteField(): FieldValue;
103103

104104
// @public
105-
export function doc(firestore: Firestore, path: string, ...pathSegments: string[]): DocumentReference<DocumentData>;
105+
export function doc(firestore: Firestore, path: string, ...pathSegments: string[]): DocumentReference<DocumentData, DocumentData>;
106106

107107
// @public
108-
export function doc<T>(reference: CollectionReference<T>, path?: string, ...pathSegments: string[]): DocumentReference<T>;
108+
export function doc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: CollectionReference<AppType, DbType>, path?: string, ...pathSegments: string[]): DocumentReference<AppType, DbType>;
109109

110110
// @public
111-
export function doc(reference: DocumentReference<unknown>, path: string, ...pathSegments: string[]): DocumentReference<DocumentData>;
111+
export function doc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>, path: string, ...pathSegments: string[]): DocumentReference<DocumentData, DocumentData>;
112112

113113
// @public
114-
export interface DocumentData {
115-
[field: string]: any;
116-
}
114+
export type DocumentData = Record<string, any>;
117115

118116
// @public
119117
export function documentId(): FieldPath;
120118

121119
// @public
122-
export class DocumentReference<T = DocumentData> {
123-
readonly converter: FirestoreDataConverter<T> | null;
120+
export class DocumentReference<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> {
121+
readonly converter: FirestoreDataConverter<AppType, DbType> | null;
124122
readonly firestore: Firestore;
125123
get id(): string;
126-
get parent(): CollectionReference<T>;
124+
get parent(): CollectionReference<AppType, DbType>;
127125
get path(): string;
128126
readonly type = "document";
129-
withConverter<U>(converter: FirestoreDataConverter<U>): DocumentReference<U>;
130-
withConverter(converter: null): DocumentReference<DocumentData>;
127+
withConverter<NewAppType = DocumentData, NewDbType extends DocumentData = NewAppType extends DocumentData ? NewAppType : DocumentData>(converter: FirestoreDataConverter<NewAppType, NewDbType>): DocumentReference<NewAppType, NewDbType>;
128+
withConverter(converter: null): DocumentReference<DocumentData, DocumentData>;
131129
}
132130

133131
// @public
134-
export class DocumentSnapshot<T = DocumentData> {
132+
export class DocumentSnapshot<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> {
135133
protected constructor();
136-
data(): T | undefined;
137-
exists(): this is QueryDocumentSnapshot<T>;
134+
data(): AppType | undefined;
135+
exists(): this is QueryDocumentSnapshot<AppType, DbType>;
138136
get(fieldPath: string | FieldPath): any;
139137
get id(): string;
140-
get ref(): DocumentReference<T>;
138+
get ref(): DocumentReference<AppType, DbType>;
141139
}
142140

143141
export { EmulatorMockTokenOptions }
@@ -173,10 +171,10 @@ export class Firestore {
173171
}
174172

175173
// @public
176-
export interface FirestoreDataConverter<T> {
177-
fromFirestore(snapshot: QueryDocumentSnapshot<DocumentData>): T;
178-
toFirestore(modelObject: WithFieldValue<T>): DocumentData;
179-
toFirestore(modelObject: PartialWithFieldValue<T>, options: SetOptions): DocumentData;
174+
export interface FirestoreDataConverter<AppType, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> {
175+
fromFirestore(snapshot: QueryDocumentSnapshot<DbType, DbType>): AppType;
176+
toFirestore(modelObject: WithFieldValue<AppType>): WithFieldValue<DbType>;
177+
toFirestore(modelObject: PartialWithFieldValue<AppType>, options: SetOptions): PartialWithFieldValue<DbType>;
180178
}
181179

182180
// @public
@@ -202,15 +200,15 @@ export class GeoPoint {
202200
}
203201

204202
// @public
205-
export function getCount(query: Query<unknown>): Promise<AggregateQuerySnapshot<{
203+
export function getCount<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(query: Query<AppType, DbType>): Promise<AggregateQuerySnapshot<{
206204
count: AggregateField<number>;
207-
}>>;
205+
}, AppType, DbType>>;
208206

209207
// @public
210-
export function getDoc<T>(reference: DocumentReference<T>): Promise<DocumentSnapshot<T>>;
208+
export function getDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>): Promise<DocumentSnapshot<AppType, DbType>>;
211209

212210
// @public
213-
export function getDocs<T>(query: Query<T>): Promise<QuerySnapshot<T>>;
211+
export function getDocs<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(query: Query<AppType, DbType>): Promise<QuerySnapshot<AppType, DbType>>;
214212

215213
// @public
216214
export function getFirestore(): Firestore;
@@ -255,20 +253,20 @@ export type PartialWithFieldValue<T> = Partial<T> | (T extends Primitive ? T : T
255253
export type Primitive = string | number | boolean | undefined | null;
256254

257255
// @public
258-
export class Query<T = DocumentData> {
256+
export class Query<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> {
259257
protected constructor();
260-
readonly converter: FirestoreDataConverter<T> | null;
258+
readonly converter: FirestoreDataConverter<AppType, DbType> | null;
261259
readonly firestore: Firestore;
262260
readonly type: 'query' | 'collection';
263-
withConverter(converter: null): Query<DocumentData>;
264-
withConverter<U>(converter: FirestoreDataConverter<U>): Query<U>;
261+
withConverter(converter: null): Query<DocumentData, DocumentData>;
262+
withConverter<NewAppType = DocumentData, NewDbType extends DocumentData = NewAppType extends DocumentData ? NewAppType : DocumentData>(converter: FirestoreDataConverter<NewAppType, NewDbType>): Query<NewAppType, NewDbType>;
265263
}
266264

267265
// @public
268-
export function query<T>(query: Query<T>, compositeFilter: QueryCompositeFilterConstraint, ...queryConstraints: QueryNonFilterConstraint[]): Query<T>;
266+
export function query<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(query: Query<AppType, DbType>, compositeFilter: QueryCompositeFilterConstraint, ...queryConstraints: QueryNonFilterConstraint[]): Query<AppType, DbType>;
269267

270268
// @public
271-
export function query<T>(query: Query<T>, ...queryConstraints: QueryConstraint[]): Query<T>;
269+
export function query<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(query: Query<AppType, DbType>, ...queryConstraints: QueryConstraint[]): Query<AppType, DbType>;
272270

273271
// @public
274272
export class QueryCompositeFilterConstraint {
@@ -284,9 +282,9 @@ export abstract class QueryConstraint {
284282
export type QueryConstraintType = 'where' | 'orderBy' | 'limit' | 'limitToLast' | 'startAt' | 'startAfter' | 'endAt' | 'endBefore';
285283

286284
// @public
287-
export class QueryDocumentSnapshot<T = DocumentData> extends DocumentSnapshot<T> {
285+
export class QueryDocumentSnapshot<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> extends DocumentSnapshot<AppType, DbType> {
288286
// @override
289-
data(): T;
287+
data(): AppType;
290288
}
291289

292290
// @public
@@ -295,7 +293,7 @@ export class QueryEndAtConstraint extends QueryConstraint {
295293
}
296294

297295
// @public
298-
export function queryEqual<T>(left: Query<T>, right: Query<T>): boolean;
296+
export function queryEqual<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(left: Query<AppType, DbType>, right: Query<AppType, DbType>): boolean;
299297

300298
// @public
301299
export class QueryFieldFilterConstraint extends QueryConstraint {
@@ -319,11 +317,11 @@ export class QueryOrderByConstraint extends QueryConstraint {
319317
}
320318

321319
// @public
322-
export class QuerySnapshot<T = DocumentData> {
323-
get docs(): Array<QueryDocumentSnapshot<T>>;
320+
export class QuerySnapshot<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData> {
321+
get docs(): Array<QueryDocumentSnapshot<AppType, DbType>>;
324322
get empty(): boolean;
325-
forEach(callback: (result: QueryDocumentSnapshot<T>) => void, thisArg?: unknown): void;
326-
readonly query: Query<T>;
323+
forEach(callback: (result: QueryDocumentSnapshot<AppType, DbType>) => void, thisArg?: unknown): void;
324+
readonly query: Query<AppType, DbType>;
327325
get size(): number;
328326
}
329327

@@ -333,7 +331,7 @@ export class QueryStartAtConstraint extends QueryConstraint {
333331
}
334332

335333
// @public
336-
export function refEqual<T>(left: DocumentReference<T> | CollectionReference<T>, right: DocumentReference<T> | CollectionReference<T>): boolean;
334+
export function refEqual<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(left: DocumentReference<AppType, DbType> | CollectionReference<AppType, DbType>, right: DocumentReference<AppType, DbType> | CollectionReference<AppType, DbType>): boolean;
337335

338336
// @public
339337
export function runTransaction<T>(firestore: Firestore, updateFunction: (transaction: Transaction) => Promise<T>, options?: TransactionOptions): Promise<T>;
@@ -342,10 +340,10 @@ export function runTransaction<T>(firestore: Firestore, updateFunction: (transac
342340
export function serverTimestamp(): FieldValue;
343341

344342
// @public
345-
export function setDoc<T>(reference: DocumentReference<T>, data: WithFieldValue<T>): Promise<void>;
343+
export function setDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>, data: WithFieldValue<AppType>): Promise<void>;
346344

347345
// @public
348-
export function setDoc<T>(reference: DocumentReference<T>, data: PartialWithFieldValue<T>, options: SetOptions): Promise<void>;
346+
export function setDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>, data: PartialWithFieldValue<AppType>, options: SetOptions): Promise<void>;
349347

350348
// @public
351349
export function setLogLevel(logLevel: LogLevel): void;
@@ -365,7 +363,7 @@ export interface Settings {
365363
}
366364

367365
// @public
368-
export function snapshotEqual<T>(left: DocumentSnapshot<T> | QuerySnapshot<T>, right: DocumentSnapshot<T> | QuerySnapshot<T>): boolean;
366+
export function snapshotEqual<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(left: DocumentSnapshot<AppType, DbType> | QuerySnapshot<AppType, DbType>, right: DocumentSnapshot<AppType, DbType> | QuerySnapshot<AppType, DbType>): boolean;
369367

370368
// @public
371369
export function startAfter(snapshot: DocumentSnapshot<unknown>): QueryStartAtConstraint;
@@ -405,12 +403,12 @@ export class Timestamp {
405403

406404
// @public
407405
export class Transaction {
408-
delete(documentRef: DocumentReference<unknown>): this;
409-
get<T>(documentRef: DocumentReference<T>): Promise<DocumentSnapshot<T>>;
410-
set<T>(documentRef: DocumentReference<T>, data: WithFieldValue<T>): this;
411-
set<T>(documentRef: DocumentReference<T>, data: PartialWithFieldValue<T>, options: SetOptions): this;
412-
update<T>(documentRef: DocumentReference<T>, data: UpdateData<T>): this;
413-
update(documentRef: DocumentReference<unknown>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): this;
406+
delete<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>): this;
407+
get<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>): Promise<DocumentSnapshot<AppType, DbType>>;
408+
set<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, data: WithFieldValue<AppType>): this;
409+
set<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, data: PartialWithFieldValue<AppType>, options: SetOptions): this;
410+
update<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, data: UpdateData<DbType>): this;
411+
update<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): this;
414412
}
415413

416414
// @public
@@ -427,10 +425,10 @@ export type UpdateData<T> = T extends Primitive ? T : T extends {} ? {
427425
} & NestedUpdateFields<T> : Partial<T>;
428426

429427
// @public
430-
export function updateDoc<T>(reference: DocumentReference<T>, data: UpdateData<T>): Promise<void>;
428+
export function updateDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>, data: UpdateData<DbType>): Promise<void>;
431429

432430
// @public
433-
export function updateDoc(reference: DocumentReference<unknown>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): Promise<void>;
431+
export function updateDoc<AppType = DocumentData, DbType extends DocumentData = AppType extends DocumentData ? AppType : DocumentData>(reference: DocumentReference<AppType, DbType>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): Promise<void>;
434432

435433
// @public
436434
export function where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: unknown): QueryFieldFilterConstraint;
@@ -446,11 +444,11 @@ export type WithFieldValue<T> = T | (T extends Primitive ? T : T extends {} ? {
446444
// @public
447445
export class WriteBatch {
448446
commit(): Promise<void>;
449-
delete(documentRef: DocumentReference<unknown>): WriteBatch;
450-
set<T>(documentRef: DocumentReference<T>, data: WithFieldValue<T>): WriteBatch;
451-
set<T>(documentRef: DocumentReference<T>, data: PartialWithFieldValue<T>, options: SetOptions): WriteBatch;
452-
update<T>(documentRef: DocumentReference<T>, data: UpdateData<T>): WriteBatch;
453-
update(documentRef: DocumentReference<unknown>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): WriteBatch;
447+
delete<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>): WriteBatch;
448+
set<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, data: WithFieldValue<AppType>): WriteBatch;
449+
set<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, data: PartialWithFieldValue<AppType>, options: SetOptions): WriteBatch;
450+
update<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, data: UpdateData<DbType>): WriteBatch;
451+
update<AppType, DbType extends DocumentData>(documentRef: DocumentReference<AppType, DbType>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): WriteBatch;
454452
}
455453

456454
// @public

0 commit comments

Comments
 (0)