Skip to content

Commit

Permalink
Merge 95679e3 into ab3f16c
Browse files Browse the repository at this point in the history
  • Loading branch information
MarkDuckworth committed Nov 21, 2022
2 parents ab3f16c + 95679e3 commit 2843522
Show file tree
Hide file tree
Showing 33 changed files with 4,539 additions and 1,081 deletions.
8 changes: 8 additions & 0 deletions .changeset/lucky-games-arrive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@firebase/firestore": minor
"firebase": minor
---

Functions in the Firestore package that return QueryConstraints (for example: `where(...)`, `limit(...)`, and `orderBy(...)`)
now return a more specific type, which extends QueryConstraint. Refactoring and code that supports future features is also
included in this release.
52 changes: 40 additions & 12 deletions common/api-review/firestore-lite.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,16 +140,16 @@ export class DocumentSnapshot<T = DocumentData> {
export { EmulatorMockTokenOptions }

// @public
export function endAt(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function endAt(snapshot: DocumentSnapshot<unknown>): QueryEndAtConstraint;

// @public
export function endAt(...fieldValues: unknown[]): QueryConstraint;
export function endAt(...fieldValues: unknown[]): QueryEndAtConstraint;

// @public
export function endBefore(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function endBefore(snapshot: DocumentSnapshot<unknown>): QueryEndAtConstraint;

// @public
export function endBefore(...fieldValues: unknown[]): QueryConstraint;
export function endBefore(...fieldValues: unknown[]): QueryEndAtConstraint;

// @public
export class FieldPath {
Expand Down Expand Up @@ -222,10 +222,10 @@ export function increment(n: number): FieldValue;
export function initializeFirestore(app: FirebaseApp, settings: Settings): Firestore;

// @public
export function limit(limit: number): QueryConstraint;
export function limit(limit: number): QueryLimitConstraint;

// @public
export function limitToLast(limit: number): QueryConstraint;
export function limitToLast(limit: number): QueryLimitConstraint;

export { LogLevel }

Expand All @@ -235,7 +235,7 @@ export type NestedUpdateFields<T extends Record<string, unknown>> = UnionToInter
}[keyof T & string]>;

// @public
export function orderBy(fieldPath: string | FieldPath, directionStr?: OrderByDirection): QueryConstraint;
export function orderBy(fieldPath: string | FieldPath, directionStr?: OrderByDirection): QueryOrderByConstraint;

// @public
export type OrderByDirection = 'desc' | 'asc';
Expand Down Expand Up @@ -275,9 +275,32 @@ export class QueryDocumentSnapshot<T = DocumentData> extends DocumentSnapshot<T>
data(): T;
}

// @public
export class QueryEndAtConstraint extends QueryConstraint {
readonly type: 'endBefore' | 'endAt';
}

// @public
export function queryEqual<T>(left: Query<T>, right: Query<T>): boolean;

// @public
export class QueryFieldFilterConstraint extends QueryConstraint {
readonly type = "where";
}

// @public
export class QueryLimitConstraint extends QueryConstraint {
readonly type: 'limit' | 'limitToLast';
}

// @public
export type QueryNonFilterConstraint = QueryOrderByConstraint | QueryLimitConstraint | QueryStartAtConstraint | QueryEndAtConstraint;

// @public
export class QueryOrderByConstraint extends QueryConstraint {
readonly type = "orderBy";
}

// @public
export class QuerySnapshot<T = DocumentData> {
get docs(): Array<QueryDocumentSnapshot<T>>;
Expand All @@ -287,6 +310,11 @@ export class QuerySnapshot<T = DocumentData> {
get size(): number;
}

// @public
export class QueryStartAtConstraint extends QueryConstraint {
readonly type: 'startAt' | 'startAfter';
}

// @public
export function refEqual<T>(left: DocumentReference<T> | CollectionReference<T>, right: DocumentReference<T> | CollectionReference<T>): boolean;

Expand Down Expand Up @@ -323,16 +351,16 @@ export interface Settings {
export function snapshotEqual<T>(left: DocumentSnapshot<T> | QuerySnapshot<T>, right: DocumentSnapshot<T> | QuerySnapshot<T>): boolean;

// @public
export function startAfter(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function startAfter(snapshot: DocumentSnapshot<unknown>): QueryStartAtConstraint;

// @public
export function startAfter(...fieldValues: unknown[]): QueryConstraint;
export function startAfter(...fieldValues: unknown[]): QueryStartAtConstraint;

// @public
export function startAt(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function startAt(snapshot: DocumentSnapshot<unknown>): QueryStartAtConstraint;

// @public
export function startAt(...fieldValues: unknown[]): QueryConstraint;
export function startAt(...fieldValues: unknown[]): QueryStartAtConstraint;

// @public
export function terminate(firestore: Firestore): Promise<void>;
Expand Down Expand Up @@ -388,7 +416,7 @@ export function updateDoc<T>(reference: DocumentReference<T>, data: UpdateData<T
export function updateDoc(reference: DocumentReference<unknown>, field: string | FieldPath, value: unknown, ...moreFieldsAndValues: unknown[]): Promise<void>;

// @public
export function where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: unknown): QueryConstraint;
export function where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: unknown): QueryFieldFilterConstraint;

// @public
export type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
Expand Down
52 changes: 40 additions & 12 deletions common/api-review/firestore.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,16 +170,16 @@ export function enableMultiTabIndexedDbPersistence(firestore: Firestore): Promis
export function enableNetwork(firestore: Firestore): Promise<void>;

// @public
export function endAt(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function endAt(snapshot: DocumentSnapshot<unknown>): QueryEndAtConstraint;

// @public
export function endAt(...fieldValues: unknown[]): QueryConstraint;
export function endAt(...fieldValues: unknown[]): QueryEndAtConstraint;

// @public
export function endBefore(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function endBefore(snapshot: DocumentSnapshot<unknown>): QueryEndAtConstraint;

// @public
export function endBefore(...fieldValues: unknown[]): QueryConstraint;
export function endBefore(...fieldValues: unknown[]): QueryEndAtConstraint;

// @public
export class FieldPath {
Expand Down Expand Up @@ -298,10 +298,10 @@ export interface IndexField {
export function initializeFirestore(app: FirebaseApp, settings: FirestoreSettings, databaseId?: string): Firestore;

// @public
export function limit(limit: number): QueryConstraint;
export function limit(limit: number): QueryLimitConstraint;

// @public
export function limitToLast(limit: number): QueryConstraint;
export function limitToLast(limit: number): QueryLimitConstraint;

// @public
export function loadBundle(firestore: Firestore, bundleData: ReadableStream<Uint8Array> | ArrayBuffer | string): LoadBundleTask;
Expand Down Expand Up @@ -383,7 +383,7 @@ export function onSnapshotsInSync(firestore: Firestore, observer: {
export function onSnapshotsInSync(firestore: Firestore, onSync: () => void): Unsubscribe;

// @public
export function orderBy(fieldPath: string | FieldPath, directionStr?: OrderByDirection): QueryConstraint;
export function orderBy(fieldPath: string | FieldPath, directionStr?: OrderByDirection): QueryOrderByConstraint;

// @public
export type OrderByDirection = 'desc' | 'asc';
Expand Down Expand Up @@ -428,9 +428,32 @@ export class QueryDocumentSnapshot<T = DocumentData> extends DocumentSnapshot<T>
data(options?: SnapshotOptions): T;
}

// @public
export class QueryEndAtConstraint extends QueryConstraint {
readonly type: 'endBefore' | 'endAt';
}

// @public
export function queryEqual<T>(left: Query<T>, right: Query<T>): boolean;

// @public
export class QueryFieldFilterConstraint extends QueryConstraint {
readonly type = "where";
}

// @public
export class QueryLimitConstraint extends QueryConstraint {
readonly type: 'limit' | 'limitToLast';
}

// @public
export type QueryNonFilterConstraint = QueryOrderByConstraint | QueryLimitConstraint | QueryStartAtConstraint | QueryEndAtConstraint;

// @public
export class QueryOrderByConstraint extends QueryConstraint {
readonly type = "orderBy";
}

// @public
export class QuerySnapshot<T = DocumentData> {
docChanges(options?: SnapshotListenOptions): Array<DocumentChange<T>>;
Expand All @@ -442,6 +465,11 @@ export class QuerySnapshot<T = DocumentData> {
get size(): number;
}

// @public
export class QueryStartAtConstraint extends QueryConstraint {
readonly type: 'startAt' | 'startAfter';
}

// @public
export function refEqual<T>(left: DocumentReference<T> | CollectionReference<T>, right: DocumentReference<T> | CollectionReference<T>): boolean;

Expand Down Expand Up @@ -494,16 +522,16 @@ export interface SnapshotOptions {
}

// @public
export function startAfter(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function startAfter(snapshot: DocumentSnapshot<unknown>): QueryStartAtConstraint;

// @public
export function startAfter(...fieldValues: unknown[]): QueryConstraint;
export function startAfter(...fieldValues: unknown[]): QueryStartAtConstraint;

// @public
export function startAt(snapshot: DocumentSnapshot<unknown>): QueryConstraint;
export function startAt(snapshot: DocumentSnapshot<unknown>): QueryStartAtConstraint;

// @public
export function startAt(...fieldValues: unknown[]): QueryConstraint;
export function startAt(...fieldValues: unknown[]): QueryStartAtConstraint;

// @public
export type TaskState = 'Error' | 'Running' | 'Success';
Expand Down Expand Up @@ -570,7 +598,7 @@ export function updateDoc(reference: DocumentReference<unknown>, field: string |
export function waitForPendingWrites(firestore: Firestore): Promise<void>;

// @public
export function where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: unknown): QueryConstraint;
export function where(fieldPath: string | FieldPath, opStr: WhereFilterOp, value: unknown): QueryFieldFilterConstraint;

// @public
export type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
Expand Down
18 changes: 14 additions & 4 deletions packages/firestore/lite/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,29 @@ export {
} from '../src/lite-api/reference';

export {
and,
endAt,
endBefore,
startAt,
startAfter,
limit,
limitToLast,
orderBy,
OrderByDirection,
where,
WhereFilterOp,
or,
orderBy,
query,
QueryConstraint,
QueryConstraintType
QueryConstraintType,
QueryCompositeFilterConstraint,
QueryFilterConstraint,
QueryFieldFilterConstraint,
QueryOrderByConstraint,
QueryLimitConstraint,
QueryNonFilterConstraint,
QueryStartAtConstraint,
QueryEndAtConstraint,
OrderByDirection,
WhereFilterOp
} from '../src/lite-api/query';

export {
Expand Down
2 changes: 2 additions & 0 deletions packages/firestore/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
"test:all:ci": "run-p test:browser test:lite:browser test:travis",
"test:all": "run-p test:browser test:lite:browser test:travis test:minified",
"test:browser": "karma start --single-run",
"test:browser:emulator:debug": "karma start --browsers=Chrome --local",
"test:browser:emulator": "karma start --single-run --local",
"test:browser:unit": "karma start --single-run --unit",
"test:browser:debug": "karma start --browsers=Chrome --auto-watch",
"test:node": "node ./scripts/run-tests.js --main=test/register.ts --emulator 'test/{,!(browser|lite)/**/}*.test.ts'",
Expand Down
10 changes: 10 additions & 0 deletions packages/firestore/src/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,27 @@ export {
} from './api/reference';

export {
and,
endAt,
endBefore,
startAt,
startAfter,
limit,
limitToLast,
where,
or,
orderBy,
query,
QueryConstraint,
QueryConstraintType,
QueryCompositeFilterConstraint,
QueryFilterConstraint,
QueryFieldFilterConstraint,
QueryOrderByConstraint,
QueryLimitConstraint,
QueryNonFilterConstraint,
QueryStartAtConstraint,
QueryEndAtConstraint,
OrderByDirection,
WhereFilterOp
} from './api/filter';
Expand Down
12 changes: 11 additions & 1 deletion packages/firestore/src/api/filter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,27 @@
*/

export {
and,
endAt,
endBefore,
startAfter,
startAt,
limitToLast,
limit,
or,
orderBy,
OrderByDirection,
where,
WhereFilterOp,
query,
QueryCompositeFilterConstraint,
QueryConstraint,
QueryConstraintType
QueryConstraintType,
QueryFilterConstraint,
QueryFieldFilterConstraint,
QueryOrderByConstraint,
QueryLimitConstraint,
QueryStartAtConstraint,
QueryEndAtConstraint,
QueryNonFilterConstraint
} from '../lite-api/query';
Loading

0 comments on commit 2843522

Please sign in to comment.