From eebcee7cefae8af90f7a77fa1bb664012c21bccf Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 20 Mar 2018 20:31:10 -0700 Subject: [PATCH 1/6] First. --- package.json | 4 +- src/core/firebase.app.module.ts | 2 + src/functions/functions.module.ts | 8 ++ src/functions/functions.spec.ts | 92 ++++++++++++++ src/functions/functions.ts | 44 +++++++ src/functions/index.spec.ts | 1 + src/functions/index.ts | 1 + src/functions/package.json | 31 +++++ src/functions/public_api.ts | 2 + src/functions/test-config.ts | 7 ++ src/functions/tsconfig-build.json | 33 +++++ src/functions/tsconfig-esm.json | 19 +++ src/functions/tsconfig-test.json | 14 +++ src/root.spec.js | 1 + src/tsconfig.json | 1 + tools/build.js | 16 ++- yarn.lock | 203 ++++++++++++++++++++++++------ 17 files changed, 436 insertions(+), 43 deletions(-) create mode 100644 src/functions/functions.module.ts create mode 100644 src/functions/functions.spec.ts create mode 100644 src/functions/functions.ts create mode 100644 src/functions/index.spec.ts create mode 100644 src/functions/index.ts create mode 100644 src/functions/package.json create mode 100644 src/functions/public_api.ts create mode 100644 src/functions/test-config.ts create mode 100644 src/functions/tsconfig-build.json create mode 100644 src/functions/tsconfig-esm.json create mode 100644 src/functions/tsconfig-test.json diff --git a/package.json b/package.json index 75370c6f7..7d69af0d9 100644 --- a/package.json +++ b/package.json @@ -42,11 +42,13 @@ "@firebase/database-types": "^0.1.1", "@firebase/firestore": "^0.2.3", "@firebase/firestore-types": "^0.1.1", + "@firebase/functions": "^0.1.0", + "@firebase/functions-types": "^0.1.0", "@firebase/messaging-types": "^0.1.1", "@firebase/storage": "^0.1.6", "@firebase/storage-types": "^0.1.1", "bufferutil": "^3.0.3", - "firebase": "^4.8.2", + "firebase": "^4.11.0", "rxjs": "^5.5.4", "utf-8-validate": "^4.0.0", "ws": "^3.3.2", diff --git a/src/core/firebase.app.module.ts b/src/core/firebase.app.module.ts index 969a30364..14baaa311 100644 --- a/src/core/firebase.app.module.ts +++ b/src/core/firebase.app.module.ts @@ -9,6 +9,7 @@ import { FirebaseDatabase } from '@firebase/database-types'; import { FirebaseMessaging } from '@firebase/messaging-types'; import { FirebaseStorage } from '@firebase/storage-types'; import { FirebaseFirestore } from '@firebase/firestore-types'; +import { FirebaseFunctions } from '@firebase/functions-types'; export class FirebaseApp implements _FirebaseApp { name: string; @@ -19,6 +20,7 @@ export class FirebaseApp implements _FirebaseApp { storage: (storageBucket?: string) => FirebaseStorage; delete: () => Promise; firestore: () => FirebaseFirestore; + functions: () => FirebaseFunctions; } export function _firebaseAppFactory(config: FirebaseOptions, name?: string): FirebaseApp { diff --git a/src/functions/functions.module.ts b/src/functions/functions.module.ts new file mode 100644 index 000000000..0809e29f6 --- /dev/null +++ b/src/functions/functions.module.ts @@ -0,0 +1,8 @@ +import { NgModule } from '@angular/core'; +import { AngularFireFunctions } from './functions'; +import '@firebase/functions' + +@NgModule({ + providers: [ AngularFireFunctions ] +}) +export class AngularFireFunctionsModule { } diff --git a/src/functions/functions.spec.ts b/src/functions/functions.spec.ts new file mode 100644 index 000000000..991acc9d2 --- /dev/null +++ b/src/functions/functions.spec.ts @@ -0,0 +1,92 @@ +import { ReflectiveInjector, Provider } from '@angular/core'; +import { Observable } from 'rxjs/Observable' +import { Subject } from 'rxjs/Subject' +import { Observer } from 'rxjs/Observer'; +import { TestBed, inject } from '@angular/core/testing'; +import { _do } from 'rxjs/operator/do'; +import { take } from 'rxjs/operator/take'; +import { skip } from 'rxjs/operator/skip'; +import { FirebaseApp, FirebaseAppConfig, AngularFireModule, FirebaseAppName } from 'angularfire2'; +import { AngularFireFunctions, AngularFireFunctionsModule } from 'angularfire2/functions'; +import { COMMON_CONFIG } from './test-config'; + +describe('AngularFireFunctions', () => { + let app: FirebaseApp; + let afFns: AngularFireFunctions; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + AngularFireModule.initializeApp(COMMON_CONFIG), + AngularFireFunctionsModule + ] + }); + inject([FirebaseApp, AngularFireFunctions], (app_: FirebaseApp, _fn: AngularFireFunctions) => { + app = app_; + afFns = _fn; + })(); + }); + + afterEach(done => { + afFns.functions.app.delete().then(done, done.fail); + }); + + it('should be exist', () => { + expect(afFns instanceof AngularFireFunctions).toBe(true); + }); + + it('should have the Firebase Functions instance', () => { + expect(afFns.functions).toBeDefined(); + }); + + it('should have an initialized Firebase app', () => { + expect(afFns.functions.app).toBeDefined(); + expect(afFns.functions.app).toEqual(app); + }); + +}); + +const FIREBASE_APP_NAME_TOO = (Math.random() + 1).toString(36).substring(7); + +describe('AngularFireFunctions with different app', () => { + let app: FirebaseApp; + let afFns: AngularFireFunctions; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + AngularFireModule.initializeApp(COMMON_CONFIG), + AngularFireFunctionsModule + ], + providers: [ + { provide: FirebaseAppName, useValue: FIREBASE_APP_NAME_TOO }, + { provide: FirebaseAppConfig, useValue: COMMON_CONFIG } + ] + }); + inject([FirebaseApp, AngularFireFunctions], (app_: FirebaseApp, _fns: AngularFireFunctions) => { + app = app_; + afFns = _fns; + })(); + }); + + afterEach(done => { + app.delete().then(done, done.fail); + }); + + describe('', () => { + + it('should be an AngularFireAuth type', () => { + expect(afFns instanceof AngularFireFunctions).toEqual(true); + }); + + it('should have an initialized Firebase app', () => { + expect(afFns.functinos.app).toBeDefined(); + expect(afFns.functinos.app).toEqual(app); + }); + + it('should have an initialized Firebase app instance member', () => { + expect(afFns.functinos.app.name).toEqual(FIREBASE_APP_NAME_TOO); + }); + }); + +}); diff --git a/src/functions/functions.ts b/src/functions/functions.ts new file mode 100644 index 000000000..872d75dc1 --- /dev/null +++ b/src/functions/functions.ts @@ -0,0 +1,44 @@ +import { FirebaseFunctions, HttpsCallableResult } from '@firebase/functions-types'; +import { FirebaseOptions } from '@firebase/app-types'; +import { Injectable, Inject, Optional, NgZone } from '@angular/core'; +import { Observable } from 'rxjs/Observable'; + +import { FirebaseAppConfig, FirebaseAppName, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; + +import 'rxjs/add/observable/fromPromise'; + +@Injectable() +export class AngularFireFunctions { + + /** + * Firebase Functions instance + */ + public readonly functions: FirebaseFunctions; + + public readonly scheduler: FirebaseZoneScheduler; + + public call(name: string, data?: any) { + return this.scheduler.keepUnstableUntilFirst( + this.scheduler.runOutsideAngular( + Observable.fromPromise( + this.functions.httpsCallable(name)(data) + ) + ) + ) + } + + constructor( + @Inject(FirebaseAppConfig) config:FirebaseOptions, + @Optional() @Inject(FirebaseAppName) name:string, + private zone: NgZone + ) { + this.scheduler = new FirebaseZoneScheduler(zone); + + this.functions = zone.runOutsideAngular(() => { + const app = _firebaseAppFactory(config, name); + return app.functions(); + }); + + } + +} diff --git a/src/functions/index.spec.ts b/src/functions/index.spec.ts new file mode 100644 index 000000000..64df0015c --- /dev/null +++ b/src/functions/index.spec.ts @@ -0,0 +1 @@ +import './functions.spec'; diff --git a/src/functions/index.ts b/src/functions/index.ts new file mode 100644 index 000000000..4aaf8f92e --- /dev/null +++ b/src/functions/index.ts @@ -0,0 +1 @@ +export * from './public_api'; diff --git a/src/functions/package.json b/src/functions/package.json new file mode 100644 index 000000000..62b3386ae --- /dev/null +++ b/src/functions/package.json @@ -0,0 +1,31 @@ +{ + "name": "angularfire2/functions", + "version": "ANGULARFIRE2_VERSION", + "description": "The functions module", + "main": "../bundles/functions.umd.js", + "module": "index.js", + "es2015": "./es2015/index.js", + "keywords": [ + "angular", + "firebase", + "rxjs" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/angular/angularfire2.git" + }, + "author": "angular,firebase", + "license": "MIT", + "peerDependencies": { + "angularfire2": "ANGULARFIRE2_VERSION", + "@angular/common": "ANGULAR_VERSION", + "@angular/core": "ANGULAR_VERSION", + "@angular/platform-browser": "ANGULAR_VERSION", + "@angular/platform-browser-dynamic": "ANGULAR_VERSION", + "@firebase/app": "FIREBASE_APP_VERSION", + "@firebase/functions": "FIREBASE_FUNCTIONS_VERSION", + "rxjs": "RXJS_VERSION", + "zone.js": "ZONEJS_VERSION" + }, + "typings": "index.d.ts" +} diff --git a/src/functions/public_api.ts b/src/functions/public_api.ts new file mode 100644 index 000000000..ebea7ec53 --- /dev/null +++ b/src/functions/public_api.ts @@ -0,0 +1,2 @@ +export * from './functions'; +export * from './functions.module'; diff --git a/src/functions/test-config.ts b/src/functions/test-config.ts new file mode 100644 index 000000000..4b69c98dd --- /dev/null +++ b/src/functions/test-config.ts @@ -0,0 +1,7 @@ + +export const COMMON_CONFIG = { + apiKey: "AIzaSyBVSy3YpkVGiKXbbxeK0qBnu3-MNZ9UIjA", + authDomain: "angularfire2-test.firebaseapp.com", + databaseURL: "https://angularfire2-test.firebaseio.com", + storageBucket: "angularfire2-test.appspot.com", +}; diff --git a/src/functions/tsconfig-build.json b/src/functions/tsconfig-build.json new file mode 100644 index 000000000..97c12201b --- /dev/null +++ b/src/functions/tsconfig-build.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "module": "es2015", + "target": "es2015", + "noImplicitAny": false, + "outDir": "../../dist/packages-dist/functions/es2015", + "rootDir": ".", + "sourceMap": true, + "inlineSources": true, + "declaration": false, + "removeComments": true, + "strictNullChecks": true, + "lib": ["es2015", "dom", "es2015.promise", "es2015.collection", "es2015.iterable"], + "skipLibCheck": true, + "moduleResolution": "node", + "paths": { + "angularfire2": ["../../dist/packages-dist"] + } + }, + "files": [ + "index.ts", + "../../node_modules/zone.js/dist/zone.js.d.ts" + ], + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableSummariesForJit": false + } +} + diff --git a/src/functions/tsconfig-esm.json b/src/functions/tsconfig-esm.json new file mode 100644 index 000000000..c5d589d43 --- /dev/null +++ b/src/functions/tsconfig-esm.json @@ -0,0 +1,19 @@ +{ + "extends": "./tsconfig-build.json", + "compilerOptions": { + "target": "es5", + "outDir": "../../dist/packages-dist/functions", + "declaration": true + }, + "files": [ + "public_api.ts", + "../../node_modules/zone.js/dist/zone.js.d.ts" + ], + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableSummariesForJit": false, + "flatModuleOutFile": "index.js", + "flatModuleId": "angularfire2/functions" + } +} diff --git a/src/functions/tsconfig-test.json b/src/functions/tsconfig-test.json new file mode 100644 index 000000000..2f96c7bb9 --- /dev/null +++ b/src/functions/tsconfig-test.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig-esm.json", + "compilerOptions": { + "baseUrl": ".", + "paths": { + "angularfire2": ["../../dist/packages-dist"], + "angularfire2/functions": ["../../dist/packages-dist/functions"] + } + }, + "files": [ + "index.spec.ts", + "../../node_modules/zone.js/dist/zone.js.d.ts" + ] +} diff --git a/src/root.spec.js b/src/root.spec.js index b60264afb..476e302b2 100644 --- a/src/root.spec.js +++ b/src/root.spec.js @@ -4,6 +4,7 @@ export * from './packages-dist/auth/auth.spec'; export * from './packages-dist/firestore/firestore.spec'; export * from './packages-dist/firestore/document/document.spec'; export * from './packages-dist/firestore/collection/collection.spec'; +export * from './packages-dist/functions/functions.spec'; export * from './packages-dist/database/database.spec'; export * from './packages-dist/database/utils.spec'; export * from './packages-dist/database/observable/fromRef.spec'; diff --git a/src/tsconfig.json b/src/tsconfig.json index 2a0a351e4..35fa29c65 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -14,6 +14,7 @@ "angularfire2/auth": ["./auth"], "angularfire2/database": ["./database"], "angularfire2/firestore": ["./firestore"], + "angularfire2/functions": ["./functions"], "angularfire2/storage": ["./storage"], "angularfire2/database-deprecated": ["./database-deprecated"] }, diff --git a/tools/build.js b/tools/build.js index 01982db52..e10e0cdaf 100644 --- a/tools/build.js +++ b/tools/build.js @@ -59,11 +59,13 @@ const GLOBALS = { 'firebase/app': 'firebase', 'firebase/database': 'firebase', 'firebase/firestore': 'firebase', + 'firebase/functions': 'firebase', 'firebase/storage': 'firebase', '@firebase/auth': 'firebase', '@firebase/app': 'firebase', '@firebase/database': 'firebase', '@firebase/firestore': 'firebase', + '@firebase/functions': 'firebase', '@firebase/storage': 'firebase', '@firebase/util': 'firebase', '@firebase/webchannel-wrapper': 'firebase', @@ -74,6 +76,7 @@ const GLOBALS = { 'angularfire2/database': 'angularfire2.database', 'angularfire2/database-deprecated': 'angularfire2.database_deprecated', 'angularfire2/firestore': 'angularfire2.firestore', + 'angularfire2/functions': 'angularfire2.functions', 'angularfire2/storage': 'angularfire2.storage', 'zone.js': 'Zone' }; @@ -82,9 +85,10 @@ const GLOBALS = { const VERSIONS = { ANGULAR_VERSION: pkg.dependencies['@angular/core'], FIREBASE_APP_VERSION: pkg.dependencies['@firebase/app'], + FIREBASE_AUTH_VERSION: pkg.dependencies['@firebase/auth'], FIREBASE_DATABASE_VERSION: pkg.dependencies['@firebase/database'], FIREBASE_FIRESTORE_VERSION: pkg.dependencies['@firebase/firestore'], - FIREBASE_AUTH_VERSION: pkg.dependencies['@firebase/auth'], + FIREBASE_FUNCTIONS_VERSION: pkg.dependencies['@firebase/functions'], FIREBASE_STORAGE_VERSION: pkg.dependencies['@firebase/storage'], RXJS_VERSION: pkg.dependencies['rxjs'], ZONEJS_VERSION: pkg.dependencies['zone.js'], @@ -102,6 +106,7 @@ const MODULE_NAMES = { database: 'angularfire2.database', "database-deprecated": 'angularfire2.database_deprecated', firestore: 'angularfire2.firestore', + functions: 'angularfire2.functions', storage: 'angularfire2.storage' }; @@ -111,6 +116,7 @@ const ENTRIES = { database: `${process.cwd()}/dist/packages-dist/database/index.js`, "database-deprecated": `${process.cwd()}/dist/packages-dist/database-deprecated/index.js`, firestore: `${process.cwd()}/dist/packages-dist/firestore/index.js`, + functions: `${process.cwd()}/dist/packages-dist/functions/index.js`, storage: `${process.cwd()}/dist/packages-dist/storage/index.js` }; @@ -121,6 +127,7 @@ const SRC_PKG_PATHS = { "database-deprecated": `${process.cwd()}/src/database-deprecated/package.json`, firestore: `${process.cwd()}/src/firestore/package.json`, "firebase-node": `${process.cwd()}/src/firebase-node/package.json`, + functions: `${process.cwd()}/src/functions/package.json`, storage: `${process.cwd()}/src/storage/package.json` }; @@ -131,6 +138,7 @@ const DEST_PKG_PATHS = { "database-deprecated": `${process.cwd()}/dist/packages-dist/database-deprecated/package.json`, firestore: `${process.cwd()}/dist/packages-dist/firestore/package.json`, "firebase-node": `${process.cwd()}/dist/packages-dist/firebase-node/package.json`, + functions: `${process.cwd()}/dist/packages-dist/functions/package.json`, storage: `${process.cwd()}/dist/packages-dist/storage/package.json` }; @@ -139,6 +147,7 @@ const FIREBASE_FEATURE_MODULES = { auth: `${process.cwd()}/node_modules/@firebase/auth/dist/auth.js`, database: `${process.cwd()}/node_modules/@firebase/database/dist/esm/index.js`, firestore: `${process.cwd()}/node_modules/@firebase/firestore/dist/esm/index.js`, + functions: `${process.cwd()}/node_modules/@firebase/functions/dist/esm/index.js`, storage: `${process.cwd()}/node_modules/@firebase/storage/dist/esm/index.js`, util: `${process.cwd()}/node_modules/@firebase/util/dist/esm/index.js`, }; @@ -299,6 +308,7 @@ function getVersions() { getDestPackageFile('database'), getDestPackageFile('firestore'), getDestPackageFile('firebase-node'), + getDestPackageFile('functions'), getDestPackageFile('storage'), getDestPackageFile('database-deprecated') ]; @@ -337,6 +347,7 @@ function buildModules(globals) { const auth$ = buildModule('auth', globals); const db$ = buildModule('database', globals); const firestore$ = buildModule('firestore', globals); + const functions$ = buildModule('functions', globals); const storage$ = buildModule('storage', globals); const dbdep$ = buildModule('database-deprecated', globals); return Observable @@ -344,6 +355,7 @@ function buildModules(globals) { .switchMapTo(auth$) .switchMapTo(db$) .switchMapTo(firestore$) + .switchMapTo(functions$) .switchMapTo(storage$) .switchMapTo(dbdep$); } @@ -363,6 +375,7 @@ function buildLibrary(globals) { const authStats = measure('auth'); const dbStats = measure('database'); const fsStats = measure('firestore'); + const functionsStats = measure('functions'); const storageStats = measure('storage'); const dbdepStats = measure('database-deprecated'); console.log(` @@ -370,6 +383,7 @@ function buildLibrary(globals) { auth.umd.js - ${authStats.size}, ${authStats.gzip} database.umd.js - ${dbStats.size}, ${dbStats.gzip} firestore.umd.js - ${fsStats.size}, ${fsStats.gzip} + functions.umd.js - ${functionsStats.size}, ${functionsStats.gzip} storage.umd.js - ${storageStats.size}, ${storageStats.gzip} database-deprecated.umd.js - ${dbdepStats.size}, ${dbdepStats.gzip} `); diff --git a/yarn.lock b/yarn.lock index a29229e4b..8a1e195bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,7 +53,19 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.1.1.tgz#1b794e101c779310763b1bfce8c24e7728fb9a91" -"@firebase/app@0.1.8", "@firebase/app@^0.1.6": +"@firebase/app-types@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.1.2.tgz#a20cb346e3be374c0bdee6b102de0ea5e8e6fa27" + +"@firebase/app@0.1.10": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.1.10.tgz#fc80c62dbe4d601cad1495bc095309adb9074f85" + dependencies: + "@firebase/app-types" "0.1.2" + "@firebase/util" "0.1.10" + tslib "^1.9.0" + +"@firebase/app@^0.1.6": version "0.1.8" resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.1.8.tgz#0952d0c0cb2926aaa9b39459c7d9df653fa54330" dependencies: @@ -64,7 +76,17 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.1.1.tgz#1b38caa9971cc9d8ed6dd114976d18d986f24a9a" -"@firebase/auth@0.3.3", "@firebase/auth@^0.3.2": +"@firebase/auth-types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.2.0.tgz#38f9ce77b7b513eafac7e2e8291f1fe97031895a" + +"@firebase/auth@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.4.0.tgz#7e767b652247176bd07291bf1cb4155037623fa7" + dependencies: + "@firebase/auth-types" "0.2.0" + +"@firebase/auth@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.3.3.tgz#4efabc46e11b4d186458232b7743d203847827c9" dependencies: @@ -74,7 +96,21 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.1.1.tgz#601b8040191766777b785c1675eac34ce57c669c" -"@firebase/database@0.1.9", "@firebase/database@^0.1.7": +"@firebase/database-types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.2.0.tgz#c442af71e4c376e6bb78f6aa62645b5a0e2b87b6" + +"@firebase/database@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.2.1.tgz#af4f3b80a7bccd4a561fdc76d8c1867243dd0665" + dependencies: + "@firebase/database-types" "0.2.0" + "@firebase/logger" "0.1.0" + "@firebase/util" "0.1.10" + faye-websocket "0.11.1" + tslib "^1.9.0" + +"@firebase/database@^0.1.7": version "0.1.9" resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.1.9.tgz#ea5f376d1a59d16f909dfb46c597b55e35d9834b" dependencies: @@ -86,17 +122,19 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-0.1.1.tgz#c711a0dcc440cdc668662b6017b1f730cc124586" -"@firebase/firestore-types@0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-0.2.1.tgz#f2f35856b283a521c64ac4fa45d140010037e046" +"@firebase/firestore-types@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-0.2.2.tgz#e60b6c7a458538b1bf8ed89d9df981fa17a74871" -"@firebase/firestore@0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-0.3.2.tgz#d997bcd96edc36b9b4abadb5c50d940ecea5d7bf" +"@firebase/firestore@0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-0.3.6.tgz#70eaf11929950d2a012c9f666b1522be62308054" dependencies: - "@firebase/firestore-types" "0.2.1" + "@firebase/firestore-types" "0.2.2" + "@firebase/logger" "0.1.0" "@firebase/webchannel-wrapper" "0.2.6" - grpc "^1.7.1" + grpc "^1.9.1" + tslib "^1.9.0" "@firebase/firestore@^0.2.3": version "0.2.3" @@ -106,33 +144,73 @@ "@firebase/webchannel-wrapper" "0.2.6" grpc "^1.7.1" -"@firebase/messaging-types@0.1.1", "@firebase/messaging-types@^0.1.1": +"@firebase/functions-types@0.1.0", "@firebase/functions-types@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.1.0.tgz#2295f51acc15a9301ab7ff802039cf3c2b9e5a36" + +"@firebase/functions@0.1.0", "@firebase/functions@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.1.0.tgz#70794ca535f8ec71781f1e6d44bc7d1ad4715a1a" + dependencies: + "@firebase/functions-types" "0.1.0" + "@firebase/messaging-types" "^0.1.1" + isomorphic-fetch "^2.2.1" + +"@firebase/logger@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.0.tgz#0a7b3af8a43e4b48cc9b16e518c07d8a2ea290e8" + +"@firebase/messaging-types@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.1.2.tgz#4975eeb31db0a16a9fcc7b9afb2ff60f79160c46" + +"@firebase/messaging-types@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.1.1.tgz#66d61d800081b3f7e4d26f1f8523f0a307e37730" -"@firebase/messaging@0.1.9": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.1.9.tgz#0b231da9d5b89c9d1a176ee532dda164fe59c263" +"@firebase/messaging@0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.2.2.tgz#4ff4d1a37fb3251b97f9c2614ac1604b55e2b994" dependencies: - "@firebase/messaging-types" "0.1.1" - "@firebase/util" "0.1.8" + "@firebase/messaging-types" "0.1.2" + "@firebase/util" "0.1.10" + tslib "^1.9.0" -"@firebase/polyfill@0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.1.4.tgz#a17538ab0359f0398f360c561dc444249b2095c6" +"@firebase/polyfill@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.0.tgz#a28af79ebd99ee96f388a9f51a430b0c5e9efe00" dependencies: - promise-polyfill "^6.0.2" + promise-polyfill "^7.1.0" + tslib "^1.9.0" + whatwg-fetch "^2.0.3" "@firebase/storage-types@0.1.1", "@firebase/storage-types@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.1.1.tgz#c8e1cd328e96ef5b88e07b0a4f5ce1c68087126b" -"@firebase/storage@0.1.6", "@firebase/storage@^0.1.6": +"@firebase/storage-types@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.1.2.tgz#682a60117ff51ab861830727fb7b52f7998701fd" + +"@firebase/storage@0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.1.8.tgz#81a71de873130184446f07c813f882fd168cd524" + dependencies: + "@firebase/storage-types" "0.1.2" + tslib "^1.9.0" + +"@firebase/storage@^0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.1.6.tgz#a7a54ed9ec77bd47b9eb5b1353083bc3edd92e3e" dependencies: "@firebase/storage-types" "0.1.1" +"@firebase/util@0.1.10": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.1.10.tgz#7898f6e36c8231c287c4024c313000df677b1363" + dependencies: + tslib "^1.9.0" + "@firebase/util@0.1.8": version "0.1.8" resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.1.8.tgz#7a7eb9d5fc56ba9e9b854bb2357d51f83b07df31" @@ -1788,6 +1866,12 @@ encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -2121,17 +2205,18 @@ fined@^1.0.1: object.pick "^1.2.0" parse-filepath "^1.0.1" -firebase@^4.8.2: - version "4.9.1" - resolved "https://registry.yarnpkg.com/firebase/-/firebase-4.9.1.tgz#7adda5cf05dbb9d65e316adb61e2c62abcef2586" - dependencies: - "@firebase/app" "0.1.8" - "@firebase/auth" "0.3.3" - "@firebase/database" "0.1.9" - "@firebase/firestore" "0.3.2" - "@firebase/messaging" "0.1.9" - "@firebase/polyfill" "0.1.4" - "@firebase/storage" "0.1.6" +firebase@^4.11.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-4.12.0.tgz#fdc7eaee1769b1ec72ae56fea56c120a13f54d76" + dependencies: + "@firebase/app" "0.1.10" + "@firebase/auth" "0.4.0" + "@firebase/database" "0.2.1" + "@firebase/firestore" "0.3.6" + "@firebase/functions" "0.1.0" + "@firebase/messaging" "0.2.2" + "@firebase/polyfill" "0.3.0" + "@firebase/storage" "0.1.8" dom-storage "^2.0.2" xmlhttprequest "^1.8.0" @@ -2515,6 +2600,15 @@ grpc@^1.7.1: node-pre-gyp "^0.6.39" protobufjs "^5.0.0" +grpc@^1.9.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.10.0.tgz#a3bab7f7e6b37727c5a6eb8427fc58775823edce" + dependencies: + lodash "^4.15.0" + nan "^2.0.0" + node-pre-gyp "^0.6.39" + protobufjs "^5.0.0" + gulp-jasmine@^2.2.1: version "2.4.2" resolved "https://registry.yarnpkg.com/gulp-jasmine/-/gulp-jasmine-2.4.2.tgz#5a7f47e27370c3619ac0a2a442be399671409db3" @@ -2873,7 +2967,7 @@ iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" -iconv-lite@0.4.19: +iconv-lite@0.4.19, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -3207,6 +3301,13 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +isomorphic-fetch@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.1, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -3947,11 +4048,18 @@ netmask@~1.0.4: resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" node-abi@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.2.0.tgz#e802ac7a2408e2c0593fb3176ffdf8a99a9b4dec" + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.3.0.tgz#f3d554d6ac72a9ee16f0f4dc9548db7c08de4986" dependencies: semver "^5.4.1" +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" @@ -4452,9 +4560,9 @@ process@~0.11.0: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" -promise-polyfill@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" +promise-polyfill@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-7.1.0.tgz#4d749485b44577c14137591c6f36e5d7e2dd3378" protobufjs@^5.0.0: version "5.0.2" @@ -4600,7 +4708,16 @@ raw-body@2, raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" -rc@^1.1.6, rc@^1.1.7: +rc@^1.1.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.6.tgz#eb18989c6d4f4f162c399f79ddd29f3835568092" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +rc@^1.1.7: version "1.2.5" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" dependencies: @@ -5647,7 +5764,7 @@ tsickle@^0.26.0: source-map "^0.5.6" source-map-support "^0.4.2" -tslib@^1.7.1: +tslib@^1.7.1, tslib@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" @@ -5959,6 +6076,10 @@ websocket-extensions@>=0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" +whatwg-fetch@>=0.10.0, whatwg-fetch@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + when@^3.7.2, when@^3.7.5, when@^3.7.7: version "3.7.8" resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" From b43316fd1a8de609f6ba122a8edf3682250a0ce3 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 20 Mar 2018 23:12:25 -0700 Subject: [PATCH 2/6] Types and map --- src/functions/functions.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/functions/functions.ts b/src/functions/functions.ts index 872d75dc1..ebebb9e70 100644 --- a/src/functions/functions.ts +++ b/src/functions/functions.ts @@ -6,6 +6,7 @@ import { Observable } from 'rxjs/Observable'; import { FirebaseAppConfig, FirebaseAppName, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; import 'rxjs/add/observable/fromPromise'; +import 'rxjs/add/operator/map' @Injectable() export class AngularFireFunctions { @@ -17,14 +18,14 @@ export class AngularFireFunctions { public readonly scheduler: FirebaseZoneScheduler; - public call(name: string, data?: any) { - return this.scheduler.keepUnstableUntilFirst( - this.scheduler.runOutsideAngular( - Observable.fromPromise( - this.functions.httpsCallable(name)(data) - ) + public httpsCallable(name: string) { + const callable = this.functions.httpsCallable(name); + return (data: T) => { + return this.scheduler.runOutsideAngular( + Observable.fromPromise(callable(data)) + .map(r => r.data as R) ) - ) + } } constructor( From d37e452d4ddd00555e5b859d7c09d766740caed0 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 20 Mar 2018 23:15:06 -0700 Subject: [PATCH 3/6] Tests --- src/functions/functions.spec.ts | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/functions/functions.spec.ts b/src/functions/functions.spec.ts index 991acc9d2..f05bcff2d 100644 --- a/src/functions/functions.spec.ts +++ b/src/functions/functions.spec.ts @@ -28,7 +28,7 @@ describe('AngularFireFunctions', () => { }); afterEach(done => { - afFns.functions.app.delete().then(done, done.fail); + app.delete().then(done, done.fail); }); it('should be exist', () => { @@ -39,11 +39,6 @@ describe('AngularFireFunctions', () => { expect(afFns.functions).toBeDefined(); }); - it('should have an initialized Firebase app', () => { - expect(afFns.functions.app).toBeDefined(); - expect(afFns.functions.app).toEqual(app); - }); - }); const FIREBASE_APP_NAME_TOO = (Math.random() + 1).toString(36).substring(7); @@ -79,14 +74,6 @@ describe('AngularFireFunctions with different app', () => { expect(afFns instanceof AngularFireFunctions).toEqual(true); }); - it('should have an initialized Firebase app', () => { - expect(afFns.functinos.app).toBeDefined(); - expect(afFns.functinos.app).toEqual(app); - }); - - it('should have an initialized Firebase app instance member', () => { - expect(afFns.functinos.app.name).toEqual(FIREBASE_APP_NAME_TOO); - }); }); }); From 727198e743117fd2bc10be9155036f478bdce616 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Sun, 13 May 2018 21:25:33 -0700 Subject: [PATCH 4/6] Pipeable operators and cleanup --- src/functions/functions.spec.ts | 12 ++------ src/functions/functions.ts | 49 +++++++++++++++++---------------- tools/build.js | 1 - 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/functions/functions.spec.ts b/src/functions/functions.spec.ts index f05bcff2d..6f3dd6a3b 100644 --- a/src/functions/functions.spec.ts +++ b/src/functions/functions.spec.ts @@ -1,12 +1,6 @@ import { ReflectiveInjector, Provider } from '@angular/core'; -import { Observable } from 'rxjs/Observable' -import { Subject } from 'rxjs/Subject' -import { Observer } from 'rxjs/Observer'; import { TestBed, inject } from '@angular/core/testing'; -import { _do } from 'rxjs/operator/do'; -import { take } from 'rxjs/operator/take'; -import { skip } from 'rxjs/operator/skip'; -import { FirebaseApp, FirebaseAppConfig, AngularFireModule, FirebaseAppName } from 'angularfire2'; +import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseAppNameToken } from 'angularfire2'; import { AngularFireFunctions, AngularFireFunctionsModule } from 'angularfire2/functions'; import { COMMON_CONFIG } from './test-config'; @@ -54,8 +48,8 @@ describe('AngularFireFunctions with different app', () => { AngularFireFunctionsModule ], providers: [ - { provide: FirebaseAppName, useValue: FIREBASE_APP_NAME_TOO }, - { provide: FirebaseAppConfig, useValue: COMMON_CONFIG } + { provide: FirebaseAppNameToken, useValue: FIREBASE_APP_NAME_TOO }, + { provide: FirebaseOptionsToken, useValue: COMMON_CONFIG } ] }); inject([FirebaseApp, AngularFireFunctions], (app_: FirebaseApp, _fns: AngularFireFunctions) => { diff --git a/src/functions/functions.ts b/src/functions/functions.ts index ebebb9e70..5268e81d8 100644 --- a/src/functions/functions.ts +++ b/src/functions/functions.ts @@ -1,12 +1,11 @@ -import { FirebaseFunctions, HttpsCallableResult } from '@firebase/functions-types'; -import { FirebaseOptions } from '@firebase/app-types'; -import { Injectable, Inject, Optional, NgZone } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; +import { FirebaseFunctions } from '@firebase/functions-types'; +import { FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types'; +import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core'; +import { Observable } from 'rxjs'; +import { from } from 'rxjs/observable/from'; +import { map } from 'rxjs/operators'; -import { FirebaseAppConfig, FirebaseAppName, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; - -import 'rxjs/add/observable/fromPromise'; -import 'rxjs/add/operator/map' +import { FirebaseOptionsToken, FirebaseAppConfigToken, FirebaseAppNameToken, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; @Injectable() export class AngularFireFunctions { @@ -18,28 +17,32 @@ export class AngularFireFunctions { public readonly scheduler: FirebaseZoneScheduler; - public httpsCallable(name: string) { - const callable = this.functions.httpsCallable(name); - return (data: T) => { - return this.scheduler.runOutsideAngular( - Observable.fromPromise(callable(data)) - .map(r => r.data as R) - ) - } - } - constructor( - @Inject(FirebaseAppConfig) config:FirebaseOptions, - @Optional() @Inject(FirebaseAppName) name:string, - private zone: NgZone + @Inject(FirebaseOptionsToken) options:FirebaseOptions, + @Optional() @Inject(FirebaseAppConfigToken) config:FirebaseAppConfig, + @Optional() @Inject(FirebaseAppNameToken) name:string, + @Inject(PLATFORM_ID) platformId: Object, + zone: NgZone ) { - this.scheduler = new FirebaseZoneScheduler(zone); + this.scheduler = new FirebaseZoneScheduler(zone, platformId); this.functions = zone.runOutsideAngular(() => { - const app = _firebaseAppFactory(config, name); + const app = _firebaseAppFactory(options, name, config); return app.functions(); }); } + public httpsCallable(name: string) { + const callable = this.functions.httpsCallable(name); + return (data: T) => { + const callable$ = from(callable(data)); + return this.scheduler.runOutsideAngular( + callable$.pipe( + map(r => r.data as R) + ) + ) + } + } + } diff --git a/tools/build.js b/tools/build.js index 493838ed1..77478835d 100644 --- a/tools/build.js +++ b/tools/build.js @@ -46,7 +46,6 @@ const GLOBALS = { 'rxjs/add/operator/switchMap': 'Rx.Observable.prototype', 'rxjs/add/observable/merge': 'Rx.Observable', 'rxjs/add/observable/of': 'Rx.Observable.prototype', - 'rxjs/add/observable/fromPromise': 'Rx.Observable.prototype', 'rxjs/add/operator/delay': 'Rx.Observable', 'rxjs/add/operator/debounce': 'Rx.Observable', 'rxjs/add/operator/share': 'Rx.Observable', From 74664e6b6b8dc9cc6952c2617dbb11bd6f0f69f4 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 15 May 2018 16:18:16 -0700 Subject: [PATCH 5/6] Bring up to date with config and default T & R to any --- src/functions/functions.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/functions/functions.ts b/src/functions/functions.ts index f6cfd152e..41bc0dda8 100644 --- a/src/functions/functions.ts +++ b/src/functions/functions.ts @@ -4,7 +4,7 @@ import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core import { Observable, from } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FirebaseOptionsToken, FirebaseAppConfigToken, FirebaseAppNameToken, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; +import { FirebaseOptionsToken, FirebaseNameOrConfigToken, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2'; @Injectable() export class AngularFireFunctions { @@ -18,21 +18,20 @@ export class AngularFireFunctions { constructor( @Inject(FirebaseOptionsToken) options:FirebaseOptions, - @Optional() @Inject(FirebaseAppConfigToken) config:FirebaseAppConfig, - @Optional() @Inject(FirebaseAppNameToken) name:string, + @Optional() @Inject(FirebaseNameOrConfigToken) nameOrConfig:string|FirebaseAppConfig|undefined, @Inject(PLATFORM_ID) platformId: Object, zone: NgZone ) { this.scheduler = new FirebaseZoneScheduler(zone, platformId); this.functions = zone.runOutsideAngular(() => { - const app = _firebaseAppFactory(options, name, config); + const app = _firebaseAppFactory(options, nameOrConfig); return app.functions(); }); } - public httpsCallable(name: string) { + public httpsCallable(name: string) { const callable = this.functions.httpsCallable(name); return (data: T) => { const callable$ = from(callable(data)); From 89724037a8465c51a78008a7f112fcc6db26fc7c Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 15 May 2018 16:25:16 -0700 Subject: [PATCH 6/6] Update test --- src/functions/functions.spec.ts | 4 ++-- yarn.lock | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/functions/functions.spec.ts b/src/functions/functions.spec.ts index 749085deb..ec0a8109e 100644 --- a/src/functions/functions.spec.ts +++ b/src/functions/functions.spec.ts @@ -1,6 +1,6 @@ import { ReflectiveInjector, Provider } from '@angular/core'; import { TestBed, inject } from '@angular/core/testing'; -import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseAppNameToken } from 'angularfire2'; +import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseNameOrConfigToken } from 'angularfire2'; import { AngularFireFunctions, AngularFireFunctionsModule } from 'angularfire2/functions'; import { COMMON_CONFIG } from './test-config'; @@ -49,7 +49,7 @@ describe('AngularFireFunctions with different app', () => { AngularFireFunctionsModule ], providers: [ - { provide: FirebaseAppNameToken, useValue: FIREBASE_APP_NAME_TOO }, + { provide: FirebaseNameOrConfigToken, useValue: FIREBASE_APP_NAME_TOO }, { provide: FirebaseOptionsToken, useValue: COMMON_CONFIG } ] }); diff --git a/yarn.lock b/yarn.lock index 7087a4165..3d8b4d445 100644 --- a/yarn.lock +++ b/yarn.lock @@ -73,7 +73,7 @@ dependencies: "@firebase/auth-types" "0.3.2" -"@firebase/database-types@^0.3.1": +"@firebase/database-types@0.3.1", "@firebase/database-types@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.3.1.tgz#4a15423f3b2cb3bed111f5a353c5c1bb2e2787ba" @@ -1825,6 +1825,12 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +faye-websocket@0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + file-uri-to-path@1: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -2588,6 +2594,10 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" +http-parser-js@>=0.4.0: + version "0.4.12" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.12.tgz#b9cfbf4a2cf26f0fc34b10ca1489a27771e3474f" + http-proxy-agent@1: version "1.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz#cc1ce38e453bf984a0f7702d2dd59c73d081284a" @@ -5770,6 +5780,17 @@ void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + whatwg-fetch@2.0.4, whatwg-fetch@>=0.10.0: version "2.0.4" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"