Skip to content

Commit 0acd89c

Browse files
committed
Docs and more
1 parent ceb9a5c commit 0acd89c

File tree

20 files changed

+1258
-124
lines changed

20 files changed

+1258
-124
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ test/ng-build/**/yarn.lock
1818
tools/build.js
1919
coverage
2020
*.log
21+
api-*.json

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
"tsconfig-paths": "^3.8.0",
9999
"tsickle": "^0.35.0",
100100
"tslint": "^5.17.0",
101+
"typedoc": "^0.16.4",
101102
"typescript": "~3.6.4"
102103
},
103104
"typings": "index.d.ts"

src/analytics/analytics.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Injectable, Inject, Optional, NgZone, InjectionToken, PLATFORM_ID } fro
22
import { of, empty, throwError } from 'rxjs';
33
import { isPlatformBrowser } from '@angular/common';
44
import { map, tap, shareReplay, switchMap, catchError } from 'rxjs/operators';
5-
import { FirebaseAppConfig, FirebaseOptions, ɵrunOutsideAngular, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵfirebaseAppFactory, PromiseProxy } from '@angular/fire';
5+
import { FirebaseAppConfig, FirebaseOptions, ɵrunOutsideAngular, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵfirebaseAppFactory, ɵPromiseProxy } from '@angular/fire';
66
import { analytics } from 'firebase';
77

88
export interface Config {[key:string]: any};
@@ -21,7 +21,7 @@ const GTAG_CONFIG_COMMAND = 'config';
2121
const GTAG_FUNCTION_NAME = 'gtag';
2222
const DATA_LAYER_NAME = 'dataLayer';
2323

24-
export interface AngularFireAnalytics extends PromiseProxy<analytics.Analytics> {};
24+
export interface AngularFireAnalytics extends ɵPromiseProxy<analytics.Analytics> {};
2525

2626
@Injectable({
2727
providedIn: 'root'

src/auth/auth.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core';
22
import { Observable, of, from } from 'rxjs';
33
import { switchMap, shareReplay, map } from 'rxjs/operators';
4-
import { FIREBASE_OPTIONS, FIREBASE_APP_NAME, FirebaseOptions, FirebaseAppConfig, FirebaseAuth, ɵfirebaseAppFactory, ɵFirebaseZoneScheduler, ɵrunOutsideAngular, PromiseProxy, ɵlazySDKProxy } from '@angular/fire';
4+
import { FIREBASE_OPTIONS, FIREBASE_APP_NAME, FirebaseOptions, FirebaseAppConfig, ɵfirebaseAppFactory, ɵFirebaseZoneScheduler, ɵrunOutsideAngular, ɵPromiseProxy, ɵlazySDKProxy } from '@angular/fire';
55
import { User, auth } from 'firebase/app';
66

7-
export interface AngularFireAuth extends PromiseProxy<auth.Auth> {};
7+
export interface AngularFireAuth extends ɵPromiseProxy<auth.Auth> {};
88

99
@Injectable({
1010
providedIn: 'root'

src/core/angularfire2.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { isPlatformServer } from '@angular/common';
33
import { Observable, Subscription, queueScheduler as queue } from 'rxjs';
44

55
// SEMVER put in database.ts when we drop database-depreciated
6-
export const DATABASE_URL = new InjectionToken<string>('angularfire2.realtimeDatabaseURL');
6+
export const ɵDATABASE_URL = new InjectionToken<string>('angularfire2.realtimeDatabaseURL');
77

88
export class ɵFirebaseZoneScheduler {
99
constructor(public zone: NgZone, private platformId: Object) {}
@@ -72,7 +72,7 @@ type PromiseReturningFunctionPropertyNames<T> = { [K in FunctionPropertyNames<T>
7272
type NonPromiseReturningFunctionPropertyNames<T> = { [K in FunctionPropertyNames<T>]: ReturnType<T[K]> extends Promise<any> ? never : K }[FunctionPropertyNames<T>];
7373
type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
7474

75-
export type PromiseProxy<T> = { [K in NonFunctionPropertyNames<T>]: Promise<T[K]> } &
75+
export type ɵPromiseProxy<T> = { [K in NonFunctionPropertyNames<T>]: Promise<T[K]> } &
7676
{ [K in NonPromiseReturningFunctionPropertyNames<T>]: (...args: Parameters<T[K]>) => Promise<ReturnType<T[K]>> } &
7777
{ [K in PromiseReturningFunctionPropertyNames<T> ]: (...args: Parameters<T[K]>) => ReturnType<T[K]> };
7878

src/core/firebase.app.module.ts

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,21 @@ export interface FirebaseAppConfig {[key:string]: any};
1111
export const FIREBASE_OPTIONS = new InjectionToken<FirebaseOptions>('angularfire2.app.options');
1212
export const FIREBASE_APP_NAME = new InjectionToken<string|FirebaseAppConfig|undefined>('angularfire2.app.nameOrConfig');
1313

14-
export type FirebaseDatabase = database.Database;
15-
export type FirebaseAuth = auth.Auth;
16-
export type FirebaseAnalytics = analytics.Analytics;
17-
export type FirebaseMessaging = messaging.Messaging;
18-
export type FirebasePerformance = performance.Performance;
19-
export type FirebaseStorage = storage.Storage;
20-
export type FirebaseFirestore = firestore.Firestore;
21-
export type FirebaseFunctions = functions.Functions;
22-
export type FirebaseRemoteConfig = remoteConfig.RemoteConfig;
23-
2414
// Have to implement as we need to return a class from the provider, we should consider exporting
2515
// this in the firebase/app types as this is our highest risk of breaks
2616
export class FirebaseApp implements Partial<app.App> {
2717
name: string;
2818
options: {};
29-
analytics: () => FirebaseAnalytics;
30-
auth: () => FirebaseAuth;
31-
database: (databaseURL?: string) => FirebaseDatabase;
32-
messaging: () => FirebaseMessaging;
33-
performance: () => FirebasePerformance;
34-
storage: (storageBucket?: string) => FirebaseStorage;
19+
analytics: () => analytics.Analytics;
20+
auth: () => auth.Auth;
21+
database: (databaseURL?: string) => database.Database;
22+
messaging: () => messaging.Messaging;
23+
performance: () => performance.Performance;
24+
storage: (storageBucket?: string) => storage.Storage;
3525
delete: () => Promise<void>;
36-
firestore: () => FirebaseFirestore;
37-
functions: (region?: string) => FirebaseFunctions;
38-
remoteConfig: () => FirebaseRemoteConfig;
26+
firestore: () => firestore.Firestore;
27+
functions: (region?: string) => functions.Functions;
28+
remoteConfig: () => remoteConfig.RemoteConfig;
3929
}
4030

4131
export function ɵfirebaseAppFactory(options: FirebaseOptions, zone: NgZone, nameOrConfig?: string|FirebaseAppConfig|null) {

src/database-deprecated/database.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import { FirebaseListFactoryOpts, FirebaseObjectFactoryOpts, PathReference } fro
55
import { FirebaseObjectFactory } from './firebase_object_factory';
66
import { FirebaseObjectObservable } from './firebase_object_observable';
77
import * as utils from './utils';
8-
import { FirebaseDatabase, FirebaseOptions, FirebaseAppConfig, FIREBASE_OPTIONS, FIREBASE_APP_NAME, DATABASE_URL, ɵfirebaseAppFactory } from '@angular/fire';
8+
import { FirebaseOptions, FirebaseAppConfig, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵDATABASE_URL as URL, ɵfirebaseAppFactory } from '@angular/fire';
9+
import { database } from 'firebase/app';
10+
11+
export { URL };
912

1013
@Injectable({
1114
providedIn: 'root'
@@ -15,12 +18,12 @@ export class AngularFireDatabase {
1518
/**
1619
* Firebase Database instance
1720
*/
18-
database: FirebaseDatabase;
21+
database: database.Database;
1922

2023
constructor(
2124
@Inject(FIREBASE_OPTIONS) options:FirebaseOptions,
2225
@Optional() @Inject(FIREBASE_APP_NAME) nameOrConfig:string|FirebaseAppConfig|null|undefined,
23-
@Optional() @Inject(DATABASE_URL) databaseURL:string|null,
26+
@Optional() @Inject(URL) databaseURL:string|null,
2427
zone: NgZone
2528
) {
2629
this.database = zone.runOutsideAngular(() => {
@@ -40,6 +43,4 @@ export class AngularFireDatabase {
4043
return FirebaseObjectFactory(ref, opts);
4144
}
4245

43-
}
44-
45-
export { DATABASE_URL, DATABASE_URL as URL };
46+
}

src/database-deprecated/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Subscription, Scheduler, queueScheduler as queue } from 'rxjs';
22
import { DataSnapshot, AFUnwrappedDataSnapshot, PathReference, DatabaseReference } from './interfaces';
3-
import { FirebaseDatabase } from '@angular/fire';
3+
import { database } from 'firebase/app';
44

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

@@ -101,7 +101,7 @@ export function isAbsoluteUrl(url: string) {
101101
* @param app - Firebase App
102102
* @param path - Database path, relative or absolute
103103
*/
104-
export function getRef(database: FirebaseDatabase, pathRef: PathReference): DatabaseReference {
104+
export function getRef(database: database.Database, pathRef: PathReference): DatabaseReference {
105105
// if a db ref was passed in, just return it
106106
if(isFirebaseRef(pathRef)) {
107107
return pathRef as DatabaseReference;

src/database/database.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@ import { DatabaseQuery, PathReference, QueryFn, AngularFireList, AngularFireObje
33
import { getRef } from './utils';
44
import { createListReference } from './list/create-reference';
55
import { createObjectReference } from './object/create-reference';
6-
import { FirebaseDatabase, FirebaseOptions, FirebaseAppConfig, DATABASE_URL, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵfirebaseAppFactory, ɵFirebaseZoneScheduler } from '@angular/fire';
6+
import { FirebaseOptions, FirebaseAppConfig, ɵDATABASE_URL as URL, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵfirebaseAppFactory, ɵFirebaseZoneScheduler } from '@angular/fire';
7+
import { database } from 'firebase/app';
8+
9+
export { URL };
710

811
@Injectable({
912
providedIn: 'root'
1013
})
1114
export class AngularFireDatabase {
12-
public readonly database: FirebaseDatabase;
15+
public readonly database: database.Database;
1316
public readonly scheduler: ɵFirebaseZoneScheduler;
1417

1518
constructor(
1619
@Inject(FIREBASE_OPTIONS) options:FirebaseOptions,
1720
@Optional() @Inject(FIREBASE_APP_NAME) nameOrConfig:string|FirebaseAppConfig|null|undefined,
18-
@Optional() @Inject(DATABASE_URL) databaseURL:string|null,
21+
@Optional() @Inject(URL) databaseURL:string|null,
1922
@Inject(PLATFORM_ID) platformId: Object,
2023
zone: NgZone
2124
) {
@@ -58,6 +61,4 @@ export {
5861
AngularFireAction,
5962
Action,
6063
SnapshotAction
61-
} from './interfaces';
62-
63-
export { DATABASE_URL as URL };
64+
} from './interfaces';

src/database/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Subscription, Scheduler } from 'rxjs';
22
import { PathReference, DatabaseReference, FirebaseOperation, FirebaseOperationCases } from './interfaces';
3-
import { FirebaseDatabase } from '@angular/fire';
3+
import { database } from 'firebase/app';
44

55
export function isString(value: any): boolean {
66
return typeof value === 'string';
@@ -24,7 +24,7 @@ export function isFirebaseRef(value: any): boolean {
2424
* @param app - Firebase App
2525
* @param path - Database path, relative or absolute
2626
*/
27-
export function getRef(database: FirebaseDatabase, pathRef: PathReference): DatabaseReference {
27+
export function getRef(database: database.Database, pathRef: PathReference): DatabaseReference {
2828
// if a db ref was passed in, just return it
2929
return isFirebaseRef(pathRef) ? pathRef as DatabaseReference
3030
: database.ref(pathRef as string);

src/firestore/firestore.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import { Settings, PersistenceSettings, CollectionReference, DocumentReference,
44
import { AngularFirestoreDocument } from './document/document';
55
import { AngularFirestoreCollection } from './collection/collection';
66
import { AngularFirestoreCollectionGroup } from './collection-group/collection-group';
7-
import { FirebaseFirestore, FirebaseOptions, FirebaseAppConfig, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵfirebaseAppFactory, ɵFirebaseZoneScheduler } from '@angular/fire';
7+
import { FirebaseOptions, FirebaseAppConfig, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵfirebaseAppFactory, ɵFirebaseZoneScheduler } from '@angular/fire';
88
import { isPlatformServer } from '@angular/common';
9+
import { firestore } from 'firebase/app';
910

1011
/**
1112
* The value of this token determines whether or not the firestore will have persistance enabled
@@ -91,7 +92,7 @@ export function associateQuery(collectionRef: CollectionReference, queryFn = ref
9192
providedIn: 'root'
9293
})
9394
export class AngularFirestore {
94-
public readonly firestore: FirebaseFirestore;
95+
public readonly firestore: firestore.Firestore;
9596
public readonly persistenceEnabled$: Observable<boolean>;
9697
public readonly scheduler: ɵFirebaseZoneScheduler;
9798

src/functions/functions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { Injectable, Inject, Optional, NgZone, InjectionToken } from '@angular/core';
22
import { of, from, Observable } from 'rxjs';
33
import { map, switchMap, shareReplay, tap } from 'rxjs/operators';
4-
import { FirebaseOptions, FirebaseAppConfig, FIREBASE_APP_NAME, ɵrunOutsideAngular, ɵlazySDKProxy, PromiseProxy } from '@angular/fire';
4+
import { FirebaseOptions, FirebaseAppConfig, FIREBASE_APP_NAME, ɵrunOutsideAngular, ɵlazySDKProxy, ɵPromiseProxy } from '@angular/fire';
55
import { FIREBASE_OPTIONS, ɵfirebaseAppFactory } from '@angular/fire';
66
import { functions } from 'firebase/app';
77

88
export const ORIGIN = new InjectionToken<string>('angularfire2.functions.origin');
99
export const REGION = new InjectionToken<string>('angularfire2.functions.region');
1010

1111
// override httpsCallable for compatibility with 5.x
12-
export interface AngularFireFunctions extends Omit<PromiseProxy<functions.Functions>, 'httpsCallable'> { };
12+
export interface AngularFireFunctions extends Omit<ɵPromiseProxy<functions.Functions>, 'httpsCallable'> { };
1313

1414
@Injectable({
1515
providedIn: 'root'

src/messaging/messaging.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core
22
import { messaging } from 'firebase/app';
33
import { Observable, empty, from, of, throwError } from 'rxjs';
44
import { mergeMap, catchError, map, switchMap, concat, shareReplay, defaultIfEmpty } from 'rxjs/operators';
5-
import { FirebaseOptions, FirebaseAppConfig, ɵrunOutsideAngular, FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵlazySDKProxy, PromiseProxy } from '@angular/fire';
5+
import { FirebaseOptions, FirebaseAppConfig, ɵrunOutsideAngular, FIREBASE_APP_NAME, FIREBASE_OPTIONS, ɵlazySDKProxy, ɵPromiseProxy } from '@angular/fire';
66
import { ɵfirebaseAppFactory } from '@angular/fire';
77
import { isPlatformServer } from '@angular/common';
88

9-
export interface AngularFireMessaging extends Omit<PromiseProxy<messaging.Messaging>, 'deleteToken'|'getToken'|'requestPermission'> {};
9+
export interface AngularFireMessaging extends Omit<ɵPromiseProxy<messaging.Messaging>, 'deleteToken'|'getToken'|'requestPermission'> {};
1010

1111
@Injectable({
1212
providedIn: 'root'

src/performance/performance.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { Injectable, NgZone, ApplicationRef, InjectionToken, Inject, Optional }
22
import { Observable, Subscription, of } from 'rxjs';
33
import { first, tap, map, shareReplay, switchMap } from 'rxjs/operators';
44
import { performance } from 'firebase/app';
5-
import { FirebaseApp, PromiseProxy, ɵlazySDKProxy } from '@angular/fire';
5+
import { FirebaseApp, ɵPromiseProxy, ɵlazySDKProxy } from '@angular/fire';
66

77
// SEMVER @ v6, drop and move core ng metrics to a service
88
export const AUTOMATICALLY_TRACE_CORE_NG_METRICS = new InjectionToken<boolean>('angularfire2.performance.auto_trace');
99
export const INSTRUMENTATION_ENABLED = new InjectionToken<boolean>('angularfire2.performance.instrumentationEnabled');
1010
export const DATA_COLLECTION_ENABLED = new InjectionToken<boolean>('angularfire2.performance.dataCollectionEnabled');
1111

12-
export interface AngularFirePerformance extends Omit<PromiseProxy<performance.Performance>, 'trace'> {};
12+
export interface AngularFirePerformance extends Omit<ɵPromiseProxy<performance.Performance>, 'trace'> {};
1313

1414
export type TraceOptions = {
1515
metrics?: {[key:string]: number},

src/remote-config/remote-config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Injectable, Inject, Optional, NgZone, InjectionToken } from '@angular/core';
22
import { Observable, concat, of, pipe, OperatorFunction, MonoTypeOperatorFunction, empty, throwError } from 'rxjs';
33
import { map, switchMap, tap, shareReplay, distinctUntilChanged, filter, groupBy, mergeMap, scan, withLatestFrom, startWith, debounceTime, catchError } from 'rxjs/operators';
4-
import { FirebaseAppConfig, FirebaseOptions, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, PromiseProxy } from '@angular/fire';
4+
import { FirebaseAppConfig, FirebaseOptions, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵPromiseProxy } from '@angular/fire';
55
import { remoteConfig } from 'firebase/app';
66
import { ɵfirebaseAppFactory, ɵrunOutsideAngular } from '@angular/fire';
77

@@ -10,7 +10,7 @@ export interface ConfigTemplate {[key:string]: string|number|boolean};
1010
export const SETTINGS = new InjectionToken<remoteConfig.Settings>('angularfire2.remoteConfig.settings');
1111
export const DEFAULTS = new InjectionToken<ConfigTemplate>('angularfire2.remoteConfig.defaultConfig');
1212

13-
export interface AngularFireRemoteConfig extends PromiseProxy<remoteConfig.RemoteConfig> {};
13+
export interface AngularFireRemoteConfig extends ɵPromiseProxy<remoteConfig.RemoteConfig> {};
1414

1515
// TODO export as implements Partial<...> so minor doesn't break us
1616
export class Value implements remoteConfig.Value {

src/storage/storage.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { Injectable, Inject, Optional, InjectionToken, NgZone, PLATFORM_ID } from '@angular/core';
22
import { createStorageRef } from './ref';
3-
import { FirebaseStorage, FirebaseOptions, FirebaseAppConfig, ɵFirebaseZoneScheduler, ɵfirebaseAppFactory, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire';
3+
import { FirebaseOptions, FirebaseAppConfig, ɵFirebaseZoneScheduler, ɵfirebaseAppFactory, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire';
44
import { UploadMetadata } from './interfaces';
5+
import { storage } from 'firebase/app';
56

67
export const BUCKET = new InjectionToken<string>('angularfire2.storageBucket');
78

@@ -16,7 +17,7 @@ export const BUCKET = new InjectionToken<string>('angularfire2.storageBucket');
1617
providedIn: 'root'
1718
})
1819
export class AngularFireStorage {
19-
public readonly storage: FirebaseStorage;
20+
public readonly storage: storage.Storage;
2021
public readonly scheduler: ɵFirebaseZoneScheduler;
2122

2223
constructor(

test/ng-build/ng9/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"@angular/platform-browser": "~9.0.0-rc.8",
2323
"@angular/platform-browser-dynamic": "~9.0.0-rc.8",
2424
"@angular/router": "~9.0.0-rc.8",
25+
"firebase": "^7.6.2",
2526
"rxjs": "~6.5.3",
2627
"tslib": "^1.10.0",
2728
"zone.js": "~0.10.2"

0 commit comments

Comments
 (0)