Skip to content

Commit fa34c8e

Browse files
committed
First.
1 parent 2c70e3f commit fa34c8e

18 files changed

+122
-168
lines changed

src/auth/auth.module.ts

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,9 @@
1-
import { NgModule, NgZone } from '@angular/core';
2-
import { FirebaseApp, AngularFireModule } from 'angularfire2';
1+
import { NgModule } from '@angular/core';
32
import { AngularFireAuth } from './auth';
43
import '@firebase/auth';
5-
6-
export function _getAngularFireAuth(app: FirebaseApp) {
7-
return new AngularFireAuth(app);
8-
}
9-
10-
export const AngularFireAuthProvider = {
11-
provide: AngularFireAuth,
12-
useFactory: _getAngularFireAuth,
13-
deps: [ FirebaseApp ]
14-
};
15-
16-
export const AUTH_PROVIDERS = [
17-
AngularFireAuthProvider,
18-
];
4+
import { FirebaseApp } from '@firebase/app-types'
195

206
@NgModule({
21-
imports: [ AngularFireModule ],
22-
providers: [ AUTH_PROVIDERS ]
7+
providers: [ AngularFireAuth ]
238
})
249
export class AngularFireAuthModule { }

src/auth/auth.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { TestBed, inject } from '@angular/core/testing';
88
import { _do } from 'rxjs/operator/do';
99
import { take } from 'rxjs/operator/take';
1010
import { skip } from 'rxjs/operator/skip';
11-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
11+
import { FirebaseAppConfig, AngularFireModule } from 'angularfire2';
1212
import { AngularFireAuth, AngularFireAuthModule } from 'angularfire2/auth';
1313
import { COMMON_CONFIG } from './test-config';
1414

@@ -51,7 +51,7 @@ describe('AngularFireAuth', () => {
5151
});
5252

5353
afterEach(done => {
54-
app.delete().then(done, done.fail);
54+
afAuth.auth.app.delete().then(done, done.fail);
5555
});
5656

5757
describe('Zones', () => {

src/auth/auth.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { FirebaseAuth, User } from '@firebase/auth-types';
2-
import { Injectable, NgZone } from '@angular/core';
2+
import { FirebaseOptions } from '@firebase/app-types';
3+
import { Injectable, NgZone, Inject, Optional } from '@angular/core';
34
import { Observable } from 'rxjs/Observable';
45
import { observeOn } from 'rxjs/operator/observeOn';
5-
import { FirebaseApp, ZoneScheduler } from 'angularfire2';
6+
import { ZoneScheduler } from 'angularfire2';
7+
8+
import { FirebaseAppConfig, FirebaseAppName, firebaseAppFactory } from 'angularfire2';
69

710
import 'rxjs/add/operator/switchMap';
811
import 'rxjs/add/observable/of';
@@ -26,8 +29,12 @@ export class AngularFireAuth {
2629
*/
2730
public readonly idToken: Observable<string|null>;
2831

29-
constructor(public app: FirebaseApp) {
30-
this.auth = app.auth();
32+
constructor(
33+
@Inject(FirebaseAppConfig) config:FirebaseOptions,
34+
@Optional() @Inject(FirebaseAppName) name:string
35+
) {
36+
const app = firebaseAppFactory(config, name);
37+
this.auth = app.auth!();
3138

3239
const authState$ = new Observable(subscriber => {
3340
const unsubscribe = this.auth.onAuthStateChanged(subscriber);

src/core/angularfire2.ts

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,55 @@
1-
import { FirebaseAppConfigToken, FirebaseApp, _firebaseAppFactory } from './firebase.app.module';
21
import { Injectable, InjectionToken, NgModule } from '@angular/core';
32
import { Subscription } from 'rxjs/Subscription';
43
import { Scheduler } from 'rxjs/Scheduler';
54
import { queue } from 'rxjs/scheduler/queue';
65

7-
export interface FirebaseAppConfig {
8-
apiKey?: string;
9-
authDomain?: string;
10-
databaseURL?: string;
11-
storageBucket?: string;
12-
messagingSenderId?: string;
13-
projectId?: string;
6+
import firebase from '@firebase/app';
7+
import { FirebaseApp as FBApp, FirebaseOptions } from '@firebase/app-types';
8+
import { FirebaseAuth } from '@firebase/auth-types';
9+
import { FirebaseDatabase } from '@firebase/database-types';
10+
import { FirebaseMessaging } from '@firebase/messaging-types';
11+
import { FirebaseStorage } from '@firebase/storage-types';
12+
import { FirebaseFirestore } from '@firebase/firestore-types';
13+
14+
export function firebaseAppFactory(config: FirebaseOptions, name?: string): FBApp {
15+
const appName = name || '[DEFAULT]';
16+
const existingApp = firebase.apps.filter(app => app.name == appName)[0];
17+
return existingApp || firebase.initializeApp(config, appName);
1418
}
1519

16-
const FirebaseAppName = new InjectionToken<string>('FirebaseAppName');
20+
export class FirebaseApp implements FBApp {
21+
constructor() {
22+
console.warn('FirebaseApp will be depreciated in favor @firebase/auth-types/FirebaseApp');
23+
}
24+
name: string;
25+
options: {};
26+
auth: () => FirebaseAuth;
27+
database: () => FirebaseDatabase;
28+
messaging: () => FirebaseMessaging;
29+
storage: () => FirebaseStorage;
30+
delete: () => Promise<any>;
31+
firestore: () => FirebaseFirestore;
32+
}
33+
34+
export const FirebaseAppName = new InjectionToken<string>('angularfire2.appName');
35+
export const FirebaseAppConfig = new InjectionToken<FirebaseOptions>('angularfire2.config');
1736

1837
export const FirebaseAppProvider = {
1938
provide: FirebaseApp,
20-
useFactory: _firebaseAppFactory,
21-
deps: [ FirebaseAppConfigToken, FirebaseAppName ]
39+
useFactory: firebaseAppFactory,
40+
deps: [ FirebaseAppConfig, FirebaseAppName ]
2241
};
2342

2443
@NgModule({
2544
providers: [ FirebaseAppProvider ],
2645
})
2746
export class AngularFireModule {
28-
static initializeApp(config: FirebaseAppConfig, appName?: string) {
47+
static initializeApp(config: FirebaseOptions, appName?: string) {
48+
console.warn('initializeApp will be depreciated in favor of the angularfire2/FirebaseAppConfig provider');
2949
return {
3050
ngModule: AngularFireModule,
3151
providers: [
32-
{ provide: FirebaseAppConfigToken, useValue: config },
52+
{ provide: FirebaseAppConfig, useValue: config },
3353
{ provide: FirebaseAppName, useValue: appName }
3454
]
3555
}
@@ -49,5 +69,3 @@ export class ZoneScheduler {
4969
return <Subscription>this.zone.run(() => queue.schedule.apply(queue, args));
5070
}
5171
}
52-
53-
export { FirebaseApp, FirebaseAppName, FirebaseAppConfigToken };

src/core/firebase.app.module.ts

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/database-deprecated/database.module.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { NgModule } from '@angular/core';
2-
import { AngularFireModule, FirebaseApp } from 'angularfire2';
2+
import { AngularFireModule } from 'angularfire2';
3+
import { FirebaseApp } from '@firebase/app-types';
34
import { AngularFireDatabase } from './database';
45
import '@firebase/database';
56

src/database-deprecated/database.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { FirebaseDatabase } from '@firebase/database-types';
22
import { Inject, Injectable } from '@angular/core';
3-
import { FirebaseAppConfigToken, FirebaseAppConfig, FirebaseApp } from 'angularfire2';
3+
import { FirebaseApp } from '@firebase/app-types';
44
import { FirebaseListFactory } from './firebase_list_factory';
55
import { FirebaseListObservable } from './firebase_list_observable';
66
import { FirebaseListFactoryOpts, FirebaseObjectFactoryOpts, PathReference } from './interfaces';
@@ -17,7 +17,7 @@ export class AngularFireDatabase {
1717
database: FirebaseDatabase;
1818

1919
constructor(public app: FirebaseApp) {
20-
this.database = app.database();
20+
this.database = app.database!();
2121
}
2222

2323
list(pathOrRef: PathReference, opts?:FirebaseListFactoryOpts):FirebaseListObservable<any[]> {

src/database-deprecated/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Subscription } from 'rxjs/Subscription';
33
import { Scheduler } from 'rxjs/Scheduler';
44
import { queue } from 'rxjs/scheduler/queue';
55
import { AFUnwrappedDataSnapshot, PathReference, DatabaseReference } from './interfaces';
6-
import { FirebaseApp } from 'angularfire2';
6+
import { FirebaseApp } from '@firebase/app-types';
77

88
const REGEX_ABSOLUTE_URL = /^[a-z]+:\/\/.*/;
99

@@ -118,7 +118,7 @@ export function getRef(app: FirebaseApp, pathRef: PathReference): DatabaseRefere
118118

119119
const path = pathRef as string;
120120
if(isAbsoluteUrl(<string>pathRef)) {
121-
return app.database().refFromURL(path);
121+
return app.database!().refFromURL(path);
122122
}
123-
return app.database().ref(path);
123+
return app.database!().ref(path);
124124
}

src/database/database.module.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,8 @@
11
import { NgModule } from '@angular/core';
2-
import { AngularFireModule, FirebaseApp } from 'angularfire2';
3-
import { AngularFireDatabase } from './database';
2+
import { AngularFireDatabase, RealtimeDatabaseURL } from './database';
43
import '@firebase/database';
54

6-
export function _getAngularFireDatabase(app: FirebaseApp) {
7-
return new AngularFireDatabase(app);
8-
}
9-
10-
export const AngularFireDatabaseProvider = {
11-
provide: AngularFireDatabase,
12-
useFactory: _getAngularFireDatabase,
13-
deps: [ FirebaseApp ]
14-
};
15-
16-
export const DATABASE_PROVIDERS = [
17-
AngularFireDatabaseProvider,
18-
];
19-
205
@NgModule({
21-
imports: [ AngularFireModule ],
22-
providers: [ DATABASE_PROVIDERS ]
6+
providers: [ AngularFireDatabase ]
237
})
248
export class AngularFireDatabaseModule { }

src/database/database.ts

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
1-
import { Injectable } from '@angular/core';
1+
import { Injectable, Inject, Optional } from '@angular/core';
22
import { FirebaseDatabase } from '@firebase/database-types';
3-
import { FirebaseApp } from 'angularfire2';
43
import { PathReference, DatabaseQuery, DatabaseReference, DatabaseSnapshot, ChildEvent, ListenEvent, QueryFn, AngularFireList, AngularFireObject } from './interfaces';
54
import { getRef } from './utils';
5+
import { InjectionToken } from '@angular/core';
6+
import { FirebaseApp, FirebaseOptions } from '@firebase/app-types';
67
import { createListReference } from './list/create-reference';
78
import { createObjectReference } from './object/create-reference';
9+
import { FirebaseAppConfig, FirebaseAppName, firebaseAppFactory } from 'angularfire2';
10+
11+
export const RealtimeDatabaseURL = new InjectionToken<string>('angularfire2.realtimeDatabaseURL');
812

913
@Injectable()
1014
export class AngularFireDatabase {
11-
database: FirebaseDatabase;
15+
public readonly database: FirebaseDatabase;
1216

13-
constructor(public app: FirebaseApp) {
14-
this.database = app.database();
17+
constructor(
18+
@Inject(FirebaseAppConfig) config:FirebaseOptions,
19+
@Optional() @Inject(FirebaseAppName) name:string,
20+
@Optional() @Inject(RealtimeDatabaseURL) databaseURL:string
21+
) {
22+
const app = firebaseAppFactory(config, name);
23+
this.database = app.database!(databaseURL);
1524
}
1625

1726
list<T>(pathOrRef: PathReference, queryFn?: QueryFn): AngularFireList<T> {
18-
const ref = getRef(this.app, pathOrRef);
27+
const ref = getRef(this.database, pathOrRef);
1928
let query: DatabaseQuery = ref;
2029
if(queryFn) {
2130
query = queryFn(ref);
@@ -24,7 +33,7 @@ export class AngularFireDatabase {
2433
}
2534

2635
object<T>(pathOrRef: PathReference): AngularFireObject<T> {
27-
const ref = getRef(this.app, pathOrRef);
36+
const ref = getRef(this.database, pathOrRef);
2837
return createObjectReference<T>(ref);
2938
}
3039

src/database/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Subscription } from 'rxjs/Subscription';
22
import { Scheduler } from 'rxjs/Scheduler';
33
import { queue } from 'rxjs/scheduler/queue';
44
import { PathReference, DatabaseReference, FirebaseOperation, FirebaseOperationCases } from './interfaces';
5-
import { FirebaseApp } from 'angularfire2';
5+
import { FirebaseDatabase } from '@firebase/database-types';
66

77
export function isString(value: any): boolean {
88
return typeof value === 'string';
@@ -26,10 +26,10 @@ export function isFirebaseRef(value: any): boolean {
2626
* @param app - Firebase App
2727
* @param path - Database path, relative or absolute
2828
*/
29-
export function getRef(app: FirebaseApp, pathRef: PathReference): DatabaseReference {
29+
export function getRef(database: FirebaseDatabase, pathRef: PathReference): DatabaseReference {
3030
// if a db ref was passed in, just return it
3131
return isFirebaseRef(pathRef) ? pathRef as DatabaseReference
32-
: app.database().ref(pathRef as string);
32+
: database.ref(pathRef as string);
3333
}
3434

3535
export function checkOperationCases(item: FirebaseOperation, cases: FirebaseOperationCases) : Promise<void> {

src/firestore/collection/collection.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'rxjs/add/operator/map';
66
import 'rxjs/add/operator/filter';
77

88
import { Injectable } from '@angular/core';
9-
import { FirebaseApp } from 'angularfire2';
9+
import { FirebaseApp } from '@firebase/app-types';
1010

1111
import { QueryFn, AssociatedReference, DocumentChangeAction } from '../interfaces';
1212
import { docChanges, sortedChanges } from './changes';

src/firestore/document/document.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ import { fromDocRef } from '../observable/fromRef';
66
import 'rxjs/add/operator/map';
77

88
import { Injectable } from '@angular/core';
9-
import { FirebaseApp } from 'angularfire2';
9+
import { FirebaseApp } from '@firebase/app-types';
1010

1111
import { associateQuery } from '../firestore';
1212
import { AngularFirestoreCollection } from '../collection/collection';
1313

14-
1514
/**
1615
* AngularFirestoreDocument service
1716
*

src/firestore/enable-persistance-token.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/firestore/firestore.module.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
2-
import { FirebaseApp, AngularFireModule } from 'angularfire2';
3-
import { AngularFirestore } from './firestore';
4-
import { from } from 'rxjs/observable/from';
2+
import { AngularFirestore, EnablePersistenceToken } from './firestore';
53
import '@firebase/firestore';
64

7-
import { EnablePersistenceToken } from './enable-persistance-token';
8-
95
@NgModule({
10-
imports: [ AngularFireModule ],
11-
providers: [
12-
AngularFirestore,
13-
]
6+
providers: [ AngularFirestore ]
147
})
158
export class AngularFirestoreModule {
169
/**

0 commit comments

Comments
 (0)