diff --git a/docs/ionic/authentication.md b/docs/ionic/authentication.md index 2182e6cae..ea2486fa1 100644 --- a/docs/ionic/authentication.md +++ b/docs/ionic/authentication.md @@ -47,7 +47,7 @@ at `login.service.ts` add this function: ```ts import { AngularFireAuth } from 'angularfire2/auth'; -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; import AuthProvider = firebase.auth.AuthProvider; export class AuthService { diff --git a/docs/ionic/v2.md b/docs/ionic/v2.md index 77cfc06b1..ddf317973 100644 --- a/docs/ionic/v2.md +++ b/docs/ionic/v2.md @@ -264,7 +264,7 @@ import { Observable } from 'rxjs/Observable'; import { Injectable } from '@angular/core'; import { AngularFireAuth } from 'AngularFire/auth'; // Do not import from 'firebase' as you'll lose the tree shaking benefits -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; @Injectable() export class AuthService { @@ -467,7 +467,7 @@ import { Observable } from 'rxjs/Observable'; import { Injectable } from '@angular/core'; import { AngularFireAuth } from 'AngularFire/auth'; // Do not import from 'firebase' as you'll lose the tree shaking benefits -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; import { Platform } from 'ionic-angular'; import { Facebook } from 'ionic-native'; diff --git a/docs/ionic/v3.md b/docs/ionic/v3.md index c53fb145c..325e59230 100644 --- a/docs/ionic/v3.md +++ b/docs/ionic/v3.md @@ -370,7 +370,7 @@ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { AngularFireAuth } from 'angularfire2/auth'; -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; @Component({ selector: 'page-home', @@ -423,7 +423,7 @@ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { AngularFireAuth } from 'angularfire2/auth'; -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; @Component({ selector: 'page-home', @@ -581,7 +581,7 @@ import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { AngularFireAuth } from 'angularfire2/auth'; -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; import { Platform } from 'ionic-angular'; import { Facebook } from '@ionic-native/facebook'; diff --git a/docs/version-4-upgrade.md b/docs/version-4-upgrade.md index 56ad8a80d..787d3fa87 100644 --- a/docs/version-4-upgrade.md +++ b/docs/version-4-upgrade.md @@ -36,7 +36,7 @@ In 4.0 we've reduced the complexity of the auth module by providing only [`fireb ```typescript import { AngularFireAuth } from 'angularfire2/auth'; // Do not import from 'firebase' as you'd lose the tree shaking benefits -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; ... user: Observable; @@ -75,7 +75,7 @@ import { AngularFireAuthModule, AngularFireAuth } from 'angularfire2/auth'; import { environment } from '../environments/environment'; // Do not import from 'firebase' as you'd lose the tree shaking benefits -import * as firebase from 'firebase/app'; +import firebase from 'firebase/app'; @NgModule({ diff --git a/src/auth/auth.spec.ts b/src/auth/auth.spec.ts index 557301c41..3e7fd6df1 100644 --- a/src/auth/auth.spec.ts +++ b/src/auth/auth.spec.ts @@ -1,5 +1,4 @@ import { User } from 'firebase'; -import { ReflectiveInjector, Provider } from '@angular/core'; import { Observable, Subject } from 'rxjs' import { TestBed, inject } from '@angular/core/testing'; import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseNameOrConfigToken } from 'angularfire2'; diff --git a/src/auth/auth.ts b/src/auth/auth.ts index 5d3b3685b..8f12d57d8 100644 --- a/src/auth/auth.ts +++ b/src/auth/auth.ts @@ -2,7 +2,6 @@ import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core import { Observable, of, from } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { FirebaseAppConfig, FirebaseOptions } from 'angularfire2'; - import { User, auth } from 'firebase'; import { FirebaseAuth, FirebaseOptionsToken, FirebaseNameOrConfigToken, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; diff --git a/src/core/angularfire2.spec.ts b/src/core/angularfire2.spec.ts index fe2575563..0aa158b30 100644 --- a/src/core/angularfire2.spec.ts +++ b/src/core/angularfire2.spec.ts @@ -1,6 +1,5 @@ - -import { TestBed, inject, withModule, async } from '@angular/core/testing'; -import { ReflectiveInjector, Provider, PlatformRef, NgModule, Compiler, ApplicationRef, CompilerFactory } from '@angular/core'; +import { TestBed, inject } from '@angular/core/testing'; +import { PlatformRef, NgModule, CompilerFactory } from '@angular/core'; import { FirebaseApp, AngularFireModule } from 'angularfire2'; import { Subscription } from 'rxjs'; import { COMMON_CONFIG } from './test-config'; diff --git a/src/core/firebase.app.module.ts b/src/core/firebase.app.module.ts index c1315af5e..4cbe1355a 100644 --- a/src/core/firebase.app.module.ts +++ b/src/core/firebase.app.module.ts @@ -1,6 +1,6 @@ -import { InjectionToken, NgZone, NgModule, Optional } from '@angular/core'; -import { app, auth, database, firestore, functions, messaging, storage } from 'firebase'; -// @ts-ignore +import { InjectionToken, NgModule, Optional } from '@angular/core'; +import {app, auth, database, firestore, functions, messaging, storage } from 'firebase'; +// @ts-ignore (https://github.com/firebase/firebase-js-sdk/pull/1206) import firebase from 'firebase/app'; // Public types don't expose FirebaseOptions or FirebaseAppConfig @@ -36,9 +36,11 @@ export function _firebaseAppFactory(options: FirebaseOptions, nameOrConfig?: str const name = typeof nameOrConfig === 'string' && nameOrConfig || '[DEFAULT]'; const config = typeof nameOrConfig === 'object' && nameOrConfig || {}; config.name = config.name || name; - const existingApp = firebase.apps.filter(app => app && app.name === config.name)[0]; + // Added any due to some inconsistency between @firebase/app and firebase types + const existingApp = firebase.apps.filter(app => app && app.name === config.name)[0] as any; // We support FirebaseConfig, initializeApp's public type only accepts string; need to cast as any - return (existingApp || firebase.initializeApp(options, config)) as FirebaseApp; + // Should be solved with https://github.com/firebase/firebase-js-sdk/pull/1206 + return (existingApp || firebase.initializeApp(options, config as any)) as FirebaseApp; } const FirebaseAppProvider = { diff --git a/src/firestore/collection/collection.ts b/src/firestore/collection/collection.ts index f9b8e2b50..610bdb3b6 100644 --- a/src/firestore/collection/collection.ts +++ b/src/firestore/collection/collection.ts @@ -1,7 +1,7 @@ import { Observable, from } from 'rxjs'; import { fromCollectionRef } from '../observable/fromRef'; import { map, filter, scan } from 'rxjs/operators'; -import { firestore } from 'firebase/app'; +import { firestore } from 'firebase'; import { DocumentChangeType, CollectionReference, Query, DocumentReference, DocumentData, DocumentChangeAction } from '../interfaces'; import { docChanges, sortedChanges } from './changes'; diff --git a/src/firestore/document/document.ts b/src/firestore/document/document.ts index 4f5effcbd..dca90ca99 100644 --- a/src/firestore/document/document.ts +++ b/src/firestore/document/document.ts @@ -5,7 +5,7 @@ import { map } from 'rxjs/operators'; import { AngularFirestore, associateQuery } from '../firestore'; import { AngularFirestoreCollection } from '../collection/collection'; -import { firestore } from 'firebase/app'; +import { firestore } from 'firebase'; import { runInZone } from 'angularfire2'; /** diff --git a/src/firestore/firestore.ts b/src/firestore/firestore.ts index 9e3d5163a..646976461 100644 --- a/src/firestore/firestore.ts +++ b/src/firestore/firestore.ts @@ -2,7 +2,7 @@ import { InjectionToken, NgZone, PLATFORM_ID, Injectable, Inject, Optional } fro import { Observable, of, from } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { firestore } from 'firebase/app'; +import { firestore } from 'firebase'; import { Settings, CollectionReference, DocumentReference, QueryFn, AssociatedReference } from './interfaces'; import { AngularFirestoreDocument } from './document/document';