diff --git a/src/firestore/collection-group/collection-group.spec.ts b/src/firestore/collection-group/collection-group.spec.ts index aa4b094ce..b7f3d27c9 100644 --- a/src/firestore/collection-group/collection-group.spec.ts +++ b/src/firestore/collection-group/collection-group.spec.ts @@ -1,6 +1,6 @@ import { AngularFireModule, FirebaseApp } from '@angular/fire'; import { AngularFirestore, AngularFirestoreCollectionGroup, AngularFirestoreModule, SETTINGS } from '../public_api'; -import { Query, QueryGroupFn } from '../interfaces'; +import { QueryGroupFn, Query } from '../interfaces'; import { BehaviorSubject } from 'rxjs'; import { skip, switchMap, take } from 'rxjs/operators'; import { TestBed } from '@angular/core/testing'; @@ -19,11 +19,11 @@ import { Stock } from '../utils.spec'; -async function collectionHarness(afs: AngularFirestore, items: number, queryGroupFn?: QueryGroupFn) { +async function collectionHarness(afs: AngularFirestore, items: number, queryGroupFn?: QueryGroupFn) { const randomCollectionName = randomName(afs.firestore); const ref = afs.firestore.collection(`${randomCollectionName}`); - const firestore: any = afs.firestore; - const collectionGroup: Query = firestore.collectionGroup(randomCollectionName); + const firestore = afs.firestore; + const collectionGroup = firestore.collectionGroup(randomCollectionName) as Query; const queryFn = queryGroupFn || (ref => ref); const stocks = new AngularFirestoreCollectionGroup(queryFn(collectionGroup), afs); const names = await createRandomStocks(afs.firestore, ref, items); diff --git a/src/firestore/collection-group/collection-group.ts b/src/firestore/collection-group/collection-group.ts index b2cef5cd5..5e8ed5437 100644 --- a/src/firestore/collection-group/collection-group.ts +++ b/src/firestore/collection-group/collection-group.ts @@ -26,13 +26,13 @@ import { AngularFirestore } from '../firestore'; * // Subscribe to changes as snapshots. This provides you data updates as well as delta updates. * fakeStock.valueChanges().subscribe(value => console.log(value)); */ -export class AngularFirestoreCollectionGroup { +export class AngularFirestoreCollectionGroup { /** * The constructor takes in a CollectionGroupQuery to provide wrapper methods * for data operations and data streaming. */ constructor( - private readonly query: Query, + private readonly query: Query, private readonly afs: AngularFirestore) { } /** diff --git a/src/firestore/collection/collection.spec.ts b/src/firestore/collection/collection.spec.ts index 5d1951a59..eb933c6e2 100644 --- a/src/firestore/collection/collection.spec.ts +++ b/src/firestore/collection/collection.spec.ts @@ -2,7 +2,7 @@ import { AngularFireModule, FirebaseApp } from '@angular/fire'; import { AngularFirestore, SETTINGS } from '../firestore'; import { AngularFirestoreModule } from '../firestore.module'; import { AngularFirestoreCollection } from './collection'; -import { QueryFn } from '../interfaces'; +import { QueryFn, CollectionReference } from '../interfaces'; import { BehaviorSubject } from 'rxjs'; import { skip, switchMap, take } from 'rxjs/operators'; import 'firebase/firestore'; @@ -22,9 +22,9 @@ import { Stock } from '../utils.spec'; -async function collectionHarness(afs: AngularFirestore, items: number, queryFn?: QueryFn) { +async function collectionHarness(afs: AngularFirestore, items: number, queryFn?: QueryFn) { const randomCollectionName = randomName(afs.firestore); - const ref = afs.firestore.collection(`${randomCollectionName}`); + const ref = afs.firestore.collection(`${randomCollectionName}`) as CollectionReference; if (!queryFn) { queryFn = (ref) => ref; } diff --git a/src/firestore/collection/collection.ts b/src/firestore/collection/collection.ts index 1b276d417..d87b0013c 100644 --- a/src/firestore/collection/collection.ts +++ b/src/firestore/collection/collection.ts @@ -38,7 +38,7 @@ export function validateEventsArray(events?: DocumentChangeType[]) { * // Subscribe to changes as snapshots. This provides you data updates as well as delta updates. * fakeStock.valueChanges().subscribe(value => console.log(value)); */ -export class AngularFirestoreCollection { +export class AngularFirestoreCollection { /** * The constructor takes in a CollectionReference and Query to provide wrapper methods * for data operations and data streaming. @@ -49,8 +49,8 @@ export class AngularFirestoreCollection { * on this implication. */ constructor( - public readonly ref: CollectionReference, - private readonly query: Query, + public readonly ref: CollectionReference, + private readonly query: Query, private readonly afs: AngularFirestore) { } /** @@ -134,7 +134,7 @@ export class AngularFirestoreCollection { * when you update data it is not updating data to the window of your query unless * the data fits the criteria of the query. */ - add(data: T): Promise { + add(data: T): Promise> { return this.ref.add(data); } diff --git a/src/firestore/document/document.spec.ts b/src/firestore/document/document.spec.ts index 4059c8ba8..b65cde549 100644 --- a/src/firestore/document/document.spec.ts +++ b/src/firestore/document/document.spec.ts @@ -3,6 +3,7 @@ import { AngularFirestore, SETTINGS } from '../firestore'; import { AngularFirestoreModule } from '../firestore.module'; import { Subscription } from 'rxjs'; import { AngularFirestoreDocument } from './document'; +import { DocumentReference } from '../interfaces'; import { take } from 'rxjs/operators'; import { TestBed } from '@angular/core/testing'; @@ -69,7 +70,7 @@ describe('AngularFirestoreDocument', () => { it('should get action updates', async (done: any) => { const randomCollectionName = randomName(afs.firestore); - const ref = afs.firestore.doc(`${randomCollectionName}/FAKE`); + const ref = afs.firestore.doc(`${randomCollectionName}/FAKE`) as DocumentReference; const stock = new AngularFirestoreDocument(ref, afs); await stock.set(FAKE_STOCK_DATA); const sub = stock @@ -85,7 +86,7 @@ describe('AngularFirestoreDocument', () => { it('should get unwrapped snapshot', async (done: any) => { const randomCollectionName = afs.firestore.collection('a').doc().id; - const ref = afs.firestore.doc(`${randomCollectionName}/FAKE`); + const ref = afs.firestore.doc(`${randomCollectionName}/FAKE`) as DocumentReference; const stock = new AngularFirestoreDocument(ref, afs); await stock.set(FAKE_STOCK_DATA); const obs$ = stock.valueChanges(); diff --git a/src/firestore/document/document.ts b/src/firestore/document/document.ts index 4f0b205c1..780ad357c 100644 --- a/src/firestore/document/document.ts +++ b/src/firestore/document/document.ts @@ -31,10 +31,10 @@ import firebase from 'firebase/app'; export class AngularFirestoreDocument { /** - * The contstuctor takes in a DocumentReference to provide wrapper methods + * The constructor takes in a DocumentReference to provide wrapper methods * for data operations, data streaming, and Symbol.observable. */ - constructor(public ref: DocumentReference, private afs: AngularFirestore) { } + constructor(public ref: DocumentReference, private afs: AngularFirestore) { } /** * Create or overwrite a single document. diff --git a/src/firestore/firestore.ts b/src/firestore/firestore.ts index 19bf27fdd..b821737fd 100644 --- a/src/firestore/firestore.ts +++ b/src/firestore/firestore.ts @@ -46,7 +46,7 @@ export const SETTINGS = new InjectionToken('angularfire2.firestore.set * return ref.where('age', '<', 200); * }); */ -export function associateQuery(collectionRef: CollectionReference, queryFn = ref => ref): AssociatedReference { +export function associateQuery(collectionRef: CollectionReference, queryFn = ref => ref): AssociatedReference { const query = queryFn(collectionRef); const ref = collectionRef; return { query, ref }; @@ -173,14 +173,14 @@ export class AngularFirestore { collection(path: string, queryFn?: QueryFn): AngularFirestoreCollection; // tslint:disable-next-line:unified-signatures collection(ref: CollectionReference, queryFn?: QueryFn): AngularFirestoreCollection; - collection(pathOrRef: string | CollectionReference, queryFn?: QueryFn): AngularFirestoreCollection { - let collectionRef: CollectionReference; + collection(pathOrRef: string | CollectionReference, queryFn?: QueryFn): AngularFirestoreCollection { + let collectionRef: CollectionReference; if (typeof pathOrRef === 'string') { - collectionRef = this.firestore.collection(pathOrRef); + collectionRef = this.firestore.collection(pathOrRef) as firebase.firestore.CollectionReference; } else { collectionRef = pathOrRef; } - const { ref, query } = associateQuery(collectionRef, queryFn); + const { ref, query } = associateQuery(collectionRef, queryFn); const refInZone = this.schedulers.ngZone.run(() => ref); return new AngularFirestoreCollection(refInZone, query, this); } @@ -190,9 +190,9 @@ export class AngularFirestore { * and an optional query function to narrow the result * set. */ - collectionGroup(collectionId: string, queryGroupFn?: QueryGroupFn): AngularFirestoreCollectionGroup { + collectionGroup(collectionId: string, queryGroupFn?: QueryGroupFn): AngularFirestoreCollectionGroup { const queryFn = queryGroupFn || (ref => ref); - const collectionGroup: Query = this.firestore.collectionGroup(collectionId); + const collectionGroup: Query = this.firestore.collectionGroup(collectionId) as firebase.firestore.Query; return new AngularFirestoreCollectionGroup(queryFn(collectionGroup), this); } @@ -205,10 +205,10 @@ export class AngularFirestore { doc(path: string): AngularFirestoreDocument; // tslint:disable-next-line:unified-signatures doc(ref: DocumentReference): AngularFirestoreDocument; - doc(pathOrRef: string | DocumentReference): AngularFirestoreDocument { - let ref: DocumentReference; + doc(pathOrRef: string | DocumentReference): AngularFirestoreDocument { + let ref: DocumentReference; if (typeof pathOrRef === 'string') { - ref = this.firestore.doc(pathOrRef); + ref = this.firestore.doc(pathOrRef) as firebase.firestore.DocumentReference; } else { ref = pathOrRef; } diff --git a/src/firestore/interfaces.ts b/src/firestore/interfaces.ts index ebb5cb014..fa9e0286e 100644 --- a/src/firestore/interfaces.ts +++ b/src/firestore/interfaces.ts @@ -2,13 +2,13 @@ import { Subscriber } from 'rxjs'; import firebase from 'firebase/app'; export type Settings = firebase.firestore.Settings; -export type CollectionReference = firebase.firestore.CollectionReference; -export type DocumentReference = firebase.firestore.DocumentReference; +export type CollectionReference = firebase.firestore.CollectionReference; +export type DocumentReference = firebase.firestore.DocumentReference; export type PersistenceSettings = firebase.firestore.PersistenceSettings; export type DocumentChangeType = firebase.firestore.DocumentChangeType; export type SnapshotOptions = firebase.firestore.SnapshotOptions; export type FieldPath = firebase.firestore.FieldPath; -export type Query = firebase.firestore.Query; +export type Query = firebase.firestore.Query; export type SetOptions = firebase.firestore.SetOptions; export type DocumentData = firebase.firestore.DocumentData; @@ -54,9 +54,9 @@ export interface Reference { // A convience type for making a query. // Example: const query = (ref) => ref.where('name', == 'david'); -export type QueryFn = (ref: CollectionReference) => Query; +export type QueryFn = (ref: CollectionReference) => Query; -export type QueryGroupFn = (query: Query) => Query; +export type QueryGroupFn = (query: Query) => Query; /** * A structure that provides an association between a reference @@ -80,7 +80,7 @@ export type QueryGroupFn = (query: Query) => Query; * publisher: 'SportsPublisher' * }); */ -export interface AssociatedReference { - ref: CollectionReference; - query: Query; +export interface AssociatedReference { + ref: CollectionReference; + query: Query; } diff --git a/src/firestore/observable/fromRef.ts b/src/firestore/observable/fromRef.ts index bfdd345e1..d1fa98d90 100644 --- a/src/firestore/observable/fromRef.ts +++ b/src/firestore/observable/fromRef.ts @@ -4,7 +4,7 @@ import { map } from 'rxjs/operators'; function _fromRef(ref: Reference, scheduler: SchedulerLike = asyncScheduler): Observable { return new Observable(subscriber => { - let unsubscribe; + let unsubscribe: () => void; if (scheduler != null) { scheduler.schedule(() => { unsubscribe = ref.onSnapshot(subscriber); @@ -21,17 +21,17 @@ function _fromRef(ref: Reference, scheduler: SchedulerLike = asyncSched }); } -export function fromRef(ref: DocumentReference | Query, scheduler?: SchedulerLike) { +export function fromRef(ref: DocumentReference | Query, scheduler?: SchedulerLike) { return _fromRef(ref, scheduler); } -export function fromDocRef(ref: DocumentReference, scheduler?: SchedulerLike): Observable>> { - return fromRef>(ref, scheduler) +export function fromDocRef(ref: DocumentReference, scheduler?: SchedulerLike): Observable>> { + return fromRef, T>(ref, scheduler) .pipe( map(payload => ({ payload, type: 'value' })) ); } -export function fromCollectionRef(ref: Query, scheduler?: SchedulerLike): Observable>> { - return fromRef>(ref, scheduler).pipe(map(payload => ({ payload, type: 'query' }))); +export function fromCollectionRef(ref: Query, scheduler?: SchedulerLike): Observable>> { + return fromRef, T>(ref, scheduler).pipe(map(payload => ({ payload, type: 'query' }))); }