From a3b0b9cdedc093ce959292847dfa51d5730fe91c Mon Sep 17 00:00:00 2001 From: James Daniels Date: Fri, 11 May 2018 18:25:23 -0700 Subject: [PATCH] feat(firestore): Support Firestore Settings, timestampsInSnapshots default to true --- package.json | 24 +++++----- src/firestore/firestore.ts | 9 +++- yarn.lock | 94 ++++++-------------------------------- 3 files changed, 33 insertions(+), 94 deletions(-) diff --git a/package.json b/package.json index a43132183..8953069b8 100644 --- a/package.json +++ b/package.json @@ -34,19 +34,19 @@ "@angular/core": "^5.0.0", "@angular/platform-browser": "^5.0.0", "@angular/platform-browser-dynamic": "^5.0.0", - "@firebase/app": "^0.1.6", - "@firebase/app-types": "^0.1.1", - "@firebase/auth": "^0.3.2", - "@firebase/auth-types": "^0.1.1", - "@firebase/database": "^0.1.7", - "@firebase/database-types": "^0.1.1", - "@firebase/firestore": "^0.2.3", - "@firebase/firestore-types": "^0.1.1", - "@firebase/messaging-types": "^0.1.1", - "@firebase/storage": "^0.1.6", - "@firebase/storage-types": "^0.1.1", + "@firebase/app": "^0.2.0", + "@firebase/app-types": "^0.2.0", + "@firebase/auth": "^0.4.2", + "@firebase/auth-types": "^0.2.1", + "@firebase/database": "^0.2.2", + "@firebase/database-types": "^0.2.1", + "@firebase/firestore": "^0.4.1", + "@firebase/firestore-types": "^0.3.0", + "@firebase/messaging-types": "^0.1.3", + "@firebase/storage": "^0.1.9", + "@firebase/storage-types": "^0.1.3", "bufferutil": "^3.0.3", - "firebase": "^4.8.2", + "firebase": "^4.13.0", "rxjs": "^5.5.4", "utf-8-validate": "^4.0.0", "ws": "^3.3.2", diff --git a/src/firestore/firestore.ts b/src/firestore/firestore.ts index 7d04cc98f..1164c78f9 100644 --- a/src/firestore/firestore.ts +++ b/src/firestore/firestore.ts @@ -1,5 +1,5 @@ import { InjectionToken, NgZone, PLATFORM_ID } from '@angular/core'; -import { FirebaseFirestore, CollectionReference, DocumentReference } from '@firebase/firestore-types'; +import { FirebaseFirestore, CollectionReference, DocumentReference, Settings } from '@firebase/firestore-types'; import { Observable, Subscriber } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; @@ -18,7 +18,9 @@ import { FirebaseAppConfig, FirebaseAppName, _firebaseAppFactory, FirebaseZoneSc * The value of this token determines whether or not the firestore will have persistance enabled */ export const EnablePersistenceToken = new InjectionToken('angularfire2.enableFirestorePersistence'); +export const FirestoreSettingsToken = new InjectionToken('angularfire2.firestore.settings'); +export const DefaultFirestoreSettings = {timestampsInSnapshots: true} as Settings; /** * A utility methods for associating a collection reference with @@ -109,13 +111,16 @@ export class AngularFirestore { @Inject(FirebaseAppConfig) config:FirebaseOptions, @Optional() @Inject(FirebaseAppName) name:string, @Optional() @Inject(EnablePersistenceToken) shouldEnablePersistence: boolean, + @Optional() @Inject(FirestoreSettingsToken) settings: Settings, @Inject(PLATFORM_ID) platformId: Object, zone: NgZone ) { this.scheduler = new FirebaseZoneScheduler(zone, platformId); this.firestore = zone.runOutsideAngular(() => { const app = _firebaseAppFactory(config, name); - return app.firestore(); + const firestore = app.firestore(); + firestore.settings(settings || DefaultFirestoreSettings); + return firestore; }); this.persistenceEnabled$ = zone.runOutsideAngular(() => diff --git a/yarn.lock b/yarn.lock index 0d95ea185..b515956cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -49,15 +49,11 @@ tslib "^1.7.1" xhr2 "^0.1.4" -"@firebase/app-types@0.1.2", "@firebase/app-types@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.1.2.tgz#a20cb346e3be374c0bdee6b102de0ea5e8e6fa27" - -"@firebase/app-types@0.2.0": +"@firebase/app-types@0.2.0", "@firebase/app-types@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.2.0.tgz#2a0e9c433d5f39e428358c5cd8065010d5a07985" -"@firebase/app@0.2.0": +"@firebase/app@0.2.0", "@firebase/app@^0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.2.0.tgz#015c270f07be2b01cf64129a2d0f9b3b87f3c135" dependencies: @@ -65,43 +61,21 @@ "@firebase/util" "0.1.11" tslib "1.9.0" -"@firebase/app@^0.1.6": - 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/auth-types@0.1.2", "@firebase/auth-types@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.1.2.tgz#15415ed12b038356f79f22f9059002a29873a15a" - -"@firebase/auth-types@0.2.1": +"@firebase/auth-types@0.2.1", "@firebase/auth-types@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.2.1.tgz#83a03939358ce8a59de85404b9ed7ca13a51548f" -"@firebase/auth@0.4.2": +"@firebase/auth@0.4.2", "@firebase/auth@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.4.2.tgz#63044e6ca6fb98ddc2de5a442f56f9d612ed1903" dependencies: "@firebase/auth-types" "0.2.1" -"@firebase/auth@^0.3.2": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.3.4.tgz#79dd0b9d86d51fd6874fa2fff2e3c06ceef07d41" - dependencies: - "@firebase/auth-types" "0.1.2" - -"@firebase/database-types@0.1.2", "@firebase/database-types@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.1.2.tgz#c6a23b8aa721ca16951c752430167ee764659916" - -"@firebase/database-types@0.2.1": +"@firebase/database-types@0.2.1", "@firebase/database-types@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.2.1.tgz#f83a6d03af5f8c93276ceb89e1f31e4664c9df1b" -"@firebase/database@0.2.2": +"@firebase/database@0.2.2", "@firebase/database@^0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.2.2.tgz#a8a0709644d7f281b400e983c71c8c65fba90c70" dependencies: @@ -111,24 +85,11 @@ faye-websocket "0.11.1" tslib "1.9.0" -"@firebase/database@^0.1.7": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.1.11.tgz#652731bfd844bb858ab616e3dc8a3d5b8181101c" - dependencies: - "@firebase/database-types" "0.1.2" - "@firebase/util" "0.1.10" - faye-websocket "0.11.1" - tslib "^1.9.0" - -"@firebase/firestore-types@0.1.1", "@firebase/firestore-types@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-0.1.1.tgz#c711a0dcc440cdc668662b6017b1f730cc124586" - -"@firebase/firestore-types@0.3.0": +"@firebase/firestore-types@0.3.0", "@firebase/firestore-types@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-0.3.0.tgz#9df0af784145c568c6d306eda1dd25198b5a2b50" -"@firebase/firestore@0.4.1": +"@firebase/firestore@0.4.1", "@firebase/firestore@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-0.4.1.tgz#c42e0c7aebab96eecec5e8ac4a3fe944d573458f" dependencies: @@ -138,14 +99,6 @@ grpc "1.10.1" tslib "1.9.0" -"@firebase/firestore@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-0.2.3.tgz#1d0bc56319b9eb17db449d85d47cd46290604dc5" - dependencies: - "@firebase/firestore-types" "0.1.1" - "@firebase/webchannel-wrapper" "0.2.6" - grpc "^1.7.1" - "@firebase/functions-types@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.1.1.tgz#3b2176bdb30a4682321eb2ff79e796f6d9c010e0" @@ -162,7 +115,7 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.1.1.tgz#af5df54253286993f4b367c3dabe569c848860d3" -"@firebase/messaging-types@0.1.3", "@firebase/messaging-types@^0.1.1": +"@firebase/messaging-types@0.1.3", "@firebase/messaging-types@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.1.3.tgz#0a80c69c8f791e3aa94b28f4d2e296d0ea2571bc" @@ -182,33 +135,23 @@ promise-polyfill "7.1.2" whatwg-fetch "2.0.4" -"@firebase/storage-types@0.1.3", "@firebase/storage-types@^0.1.1": +"@firebase/storage-types@0.1.3", "@firebase/storage-types@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.1.3.tgz#3e68942c5aab9f5f7180a797dff22d239821668e" -"@firebase/storage@0.1.9", "@firebase/storage@^0.1.6": +"@firebase/storage@0.1.9", "@firebase/storage@^0.1.9": version "0.1.9" resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.1.9.tgz#1a32bd3f48a98f7eb1472cb3e5e4e37e04464c48" dependencies: "@firebase/storage-types" "0.1.3" tslib "1.9.0" -"@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.11": version "0.1.11" resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.1.11.tgz#9990dff53930aa9fcae31494ebe8de5c5b8e815c" dependencies: tslib "1.9.0" -"@firebase/webchannel-wrapper@0.2.6": - version "0.2.6" - resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.6.tgz#a4b81ca8cdeb1acbc7923289a4a514f61b59db86" - "@firebase/webchannel-wrapper@0.2.8": version "0.2.8" resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.8.tgz#38a936b60b898a1ad0f3719543ff1a1031f60f8b" @@ -1961,7 +1904,7 @@ fined@^1.0.1: object.pick "^1.2.0" parse-filepath "^1.0.1" -firebase@^4.8.2: +firebase@^4.13.0: version "4.13.1" resolved "https://registry.yarnpkg.com/firebase/-/firebase-4.13.1.tgz#87ab64bbb7f707244fb878f2a28235b0e3aed3ec" dependencies: @@ -2384,15 +2327,6 @@ grpc@1.10.1: node-pre-gyp "0.7.0" protobufjs "^5.0.0" -grpc@^1.7.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.11.0.tgz#89d761726f1bc2d8485426b762e70308efc61b21" - dependencies: - lodash "^4.15.0" - nan "^2.0.0" - node-pre-gyp "0.7.0" - 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" @@ -3778,7 +3712,7 @@ multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" -nan@^2.0.0, nan@^2.0.5, nan@^2.10.0, nan@^2.9.2, nan@~2.10.0: +nan@^2.0.5, nan@^2.10.0, nan@^2.9.2, nan@~2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -5571,7 +5505,7 @@ tsickle@^0.27.2: source-map "^0.6.0" source-map-support "^0.5.0" -tslib@1.9.0, tslib@^1.7.1, tslib@^1.9.0: +tslib@1.9.0, tslib@^1.7.1: version "1.9.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"