Skip to content

Commit 160db5e

Browse files
authored
chore: update to firebase 8x (#940)
1 parent 2db373f commit 160db5e

27 files changed

+280
-256
lines changed

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"eslint": "^6.1.0",
2424
"eslint-config-prettier": "^6.0.0",
2525
"eslint-plugin-prettier": "^3.1.0",
26-
"firebase": "^7.2.3",
26+
"firebase": "^8.1.1",
2727
"jest": "^25.1.0",
2828
"lerna": "^3.16.2",
2929
"prettier": "^1.18.2",

Diff for: packages/@posva/vuefire-core/__tests__/firestore/collection.spec.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { bindCollection } from '../../src'
22
import { db, createOps, spyUnbind } from '@posva/vuefire-test-helpers'
3-
import { firestore } from 'firebase'
3+
import firebase from 'firebase/app'
44
import { OperationsType } from '../../src/shared'
55

66
describe('collections', () => {
7-
let collection: firestore.CollectionReference,
7+
let collection: firebase.firestore.CollectionReference,
88
vm: Record<string, any>,
99
resolve: (data: any) => void,
1010
reject: (error: any) => void,

Diff for: packages/@posva/vuefire-core/__tests__/firestore/document.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { bindDocument } from '../../src'
22
import { db, spyUnbind, createOps } from '@posva/vuefire-test-helpers'
3-
import { firestore } from 'firebase'
3+
import firebase from 'firebase/app'
44
import { OperationsType } from '../../src/shared'
55

66
describe('documents', () => {
7-
let collection: firestore.CollectionReference,
8-
document: firestore.DocumentReference,
7+
let collection: firebase.firestore.CollectionReference,
8+
document: firebase.firestore.DocumentReference,
99
vm: Record<string, any>,
1010
resolve: (data: any) => void,
1111
reject: (error: any) => void,

Diff for: packages/@posva/vuefire-core/__tests__/firestore/options.spec.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { bindDocument, firestoreOptions, bindCollection } from '../../src'
2-
import { db, createOps, CollectionReference, DocumentReference } from '@posva/vuefire-test-helpers'
3-
import { firestore } from 'firebase'
2+
import { db, createOps } from '@posva/vuefire-test-helpers'
3+
import firebase from 'firebase/app'
44

55
describe('options', () => {
6-
let collection: firestore.CollectionReference,
7-
document: firestore.DocumentReference,
6+
let collection: firebase.firestore.CollectionReference,
7+
document: firebase.firestore.DocumentReference,
88
vm: Record<string, any>,
99
resolve: (data: any) => void,
1010
reject: (error: any) => void

Diff for: packages/@posva/vuefire-core/__tests__/firestore/refs-collections.spec.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { bindCollection, FirestoreOptions } from '../../src'
22
import { db, delay, spyUnbind, delayUpdate, createOps } from '@posva/vuefire-test-helpers'
33
import { OperationsType } from '../../src/shared'
4-
import { firestore } from 'firebase'
4+
import firebase from 'firebase/app'
55

66
describe('refs in collections', () => {
7-
let collection: firestore.CollectionReference,
8-
a: firestore.DocumentReference,
9-
b: firestore.DocumentReference,
7+
let collection: firebase.firestore.CollectionReference,
8+
a: firebase.firestore.DocumentReference,
9+
b: firebase.firestore.DocumentReference,
1010
vm: Record<string, any>,
1111
bind: (
1212
key: string,
13-
collection: firestore.CollectionReference,
13+
collection: firebase.firestore.CollectionReference,
1414
options?: FirestoreOptions
1515
) => void,
1616
unbind: () => void,

Diff for: packages/@posva/vuefire-core/__tests__/firestore/refs-documents.spec.ts

+13-9
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,27 @@ import {
77
spyOnSnapshotCallback,
88
createOps,
99
} from '@posva/vuefire-test-helpers'
10-
import { firestore } from 'firebase'
10+
import firebase from 'firebase/app'
1111
import { OperationsType } from '../../src/shared'
1212

1313
describe('refs in documents', () => {
1414
// a and c existing objects { isA: true }
1515
// item is an empty ready to use object
1616
// empty is an empty object that is left empty
1717
// d has a ref to c
18-
let collection: firestore.CollectionReference,
19-
a: firestore.DocumentReference,
20-
b: firestore.DocumentReference,
21-
c: firestore.DocumentReference,
22-
d: firestore.DocumentReference,
23-
empty: firestore.DocumentReference,
24-
item: firestore.DocumentReference,
18+
let collection: firebase.firestore.CollectionReference,
19+
a: firebase.firestore.DocumentReference,
20+
b: firebase.firestore.DocumentReference,
21+
c: firebase.firestore.DocumentReference,
22+
d: firebase.firestore.DocumentReference,
23+
empty: firebase.firestore.DocumentReference,
24+
item: firebase.firestore.DocumentReference,
2525
vm: Record<string, any>,
26-
bind: (key: string, document: firestore.DocumentReference, options?: FirestoreOptions) => void,
26+
bind: (
27+
key: string,
28+
document: firebase.firestore.DocumentReference,
29+
options?: FirestoreOptions
30+
) => void,
2731
unbind: () => void,
2832
ops: OperationsType
2933

Diff for: packages/@posva/vuefire-core/src/firestore/index.ts

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createSnapshot, extractRefs, FirestoreSerializer } from './utils'
22
import { walkGet, callOnceWithArg, OperationsType } from '../shared'
3-
import { firestore } from 'firebase'
3+
import firebase from 'firebase/app'
44

55
export interface FirestoreOptions {
66
maxRefDepth?: number
@@ -21,7 +21,7 @@ interface FirestoreSubscription {
2121
unsub: () => void
2222
// Firestore unique key eg: items/12
2323
path: string
24-
data: () => firestore.DocumentData | null
24+
data: () => firebase.firestore.DocumentData | null
2525
// // path inside the object to access the data items.3
2626
// key: string
2727
}
@@ -36,7 +36,7 @@ function updateDataFromDocumentSnapshot(
3636
options: Required<FirestoreOptions>,
3737
target: CommonBindOptionsParameter['vm'],
3838
path: string,
39-
snapshot: firestore.DocumentSnapshot,
39+
snapshot: firebase.firestore.DocumentSnapshot,
4040
subs: Record<string, FirestoreSubscription>,
4141
ops: CommonBindOptionsParameter['ops'],
4242
depth: number,
@@ -53,7 +53,7 @@ interface SubscribeToDocumentParamater {
5353
depth: number
5454
resolve: () => void
5555
ops: CommonBindOptionsParameter['ops']
56-
ref: firestore.DocumentReference
56+
ref: firebase.firestore.DocumentReference
5757
}
5858

5959
function subscribeToDocument(
@@ -79,7 +79,7 @@ function subscribeToDocument(
7979
interface SubscribeToRefsParameter {
8080
subs: Record<string, FirestoreSubscription>
8181
target: CommonBindOptionsParameter['vm']
82-
refs: Record<string, firestore.DocumentReference>
82+
refs: Record<string, firebase.firestore.DocumentReference>
8383
path: string | number
8484
depth: number
8585
resolve: CommonBindOptionsParameter['resolve']
@@ -94,7 +94,7 @@ function subscribeToRefs(
9494
target: CommonBindOptionsParameter['vm'],
9595
path: string | number,
9696
subs: Record<string, FirestoreSubscription>,
97-
refs: Record<string, firestore.DocumentReference>,
97+
refs: Record<string, firebase.firestore.DocumentReference>,
9898
ops: CommonBindOptionsParameter['ops'],
9999
depth: number,
100100
resolve: CommonBindOptionsParameter['resolve']
@@ -159,7 +159,7 @@ interface CommonBindOptionsParameter {
159159
}
160160

161161
interface BindCollectionParamater extends CommonBindOptionsParameter {
162-
collection: firestore.CollectionReference | firestore.Query
162+
collection: firebase.firestore.CollectionReference | firebase.firestore.Query
163163
}
164164

165165
// TODO: refactor without using an object to improve size like the other functions
@@ -179,14 +179,14 @@ export function bindCollection(
179179
const arraySubs: Record<string, FirestoreSubscription>[] = []
180180

181181
const change = {
182-
added: ({ newIndex, doc }: firestore.DocumentChange) => {
182+
added: ({ newIndex, doc }: firebase.firestore.DocumentChange) => {
183183
arraySubs.splice(newIndex, 0, Object.create(null))
184184
const subs = arraySubs[newIndex]
185185
const [data, refs] = extractRefs(options.serialize(doc), undefined, subs)
186186
ops.add(array, newIndex, data)
187187
subscribeToRefs(options, array, newIndex, subs, refs, ops, 0, resolve.bind(null, doc))
188188
},
189-
modified: ({ oldIndex, newIndex, doc }: firestore.DocumentChange) => {
189+
modified: ({ oldIndex, newIndex, doc }: firebase.firestore.DocumentChange) => {
190190
const subs = arraySubs[oldIndex]
191191
const oldData = array[oldIndex]
192192
const [data, refs] = extractRefs(options.serialize(doc), oldData, subs)
@@ -197,7 +197,7 @@ export function bindCollection(
197197
ops.add(array, newIndex, data)
198198
subscribeToRefs(options, array, newIndex, subs, refs, ops, 0, resolve)
199199
},
200-
removed: ({ oldIndex }: firestore.DocumentChange) => {
200+
removed: ({ oldIndex }: firebase.firestore.DocumentChange) => {
201201
ops.remove(array, oldIndex)
202202
unsubscribeAll(arraySubs.splice(oldIndex, 1)[0])
203203
},
@@ -215,7 +215,7 @@ export function bindCollection(
215215
typeof snapshot.docChanges === 'function'
216216
? snapshot.docChanges()
217217
: /* istanbul ignore next to support firebase < 5*/
218-
((snapshot.docChanges as unknown) as firestore.DocumentChange[])
218+
((snapshot.docChanges as unknown) as firebase.firestore.DocumentChange[])
219219

220220
if (!isResolved && docChanges.length) {
221221
// isResolved is only meant to make sure we do the check only once
@@ -263,7 +263,7 @@ export function bindCollection(
263263
}
264264

265265
interface BindDocumentParamater extends CommonBindOptionsParameter {
266-
document: firestore.DocumentReference
266+
document: firebase.firestore.DocumentReference
267267
}
268268

269269
/**

Diff for: packages/@posva/vuefire-core/src/firestore/utils.ts

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { firestore } from 'firebase'
1+
import firebase from 'firebase/app'
22
import { isTimestamp, isObject, isDocumentRef, TODO } from '../shared'
33

44
export type FirestoreReference =
5-
| firestore.Query
6-
| firestore.DocumentReference
7-
| firestore.CollectionReference
5+
| firebase.firestore.Query
6+
| firebase.firestore.DocumentReference
7+
| firebase.firestore.CollectionReference
88

99
// TODO: fix type not to be any
10-
export function createSnapshot(doc: firestore.DocumentSnapshot): TODO {
10+
export function createSnapshot(doc: firebase.firestore.DocumentSnapshot): TODO {
1111
// TODO: it should create a deep copy instead because otherwise we will modify internal data
1212
// defaults everything to false, so no need to set
1313
return Object.defineProperty(doc.data() || {}, 'id', { value: doc.id })
@@ -16,26 +16,26 @@ export function createSnapshot(doc: firestore.DocumentSnapshot): TODO {
1616
export type FirestoreSerializer = typeof createSnapshot
1717

1818
export function extractRefs(
19-
doc: firestore.DocumentData,
20-
oldDoc: firestore.DocumentData | void,
21-
subs: Record<string, { path: string; data: () => firestore.DocumentData | null }>
22-
): [firestore.DocumentData, Record<string, firestore.DocumentReference>] {
23-
const dataAndRefs: [firestore.DocumentData, Record<string, firestore.DocumentReference>] = [
24-
{},
25-
{},
26-
]
19+
doc: firebase.firestore.DocumentData,
20+
oldDoc: firebase.firestore.DocumentData | void,
21+
subs: Record<string, { path: string; data: () => firebase.firestore.DocumentData | null }>
22+
): [firebase.firestore.DocumentData, Record<string, firebase.firestore.DocumentReference>] {
23+
const dataAndRefs: [
24+
firebase.firestore.DocumentData,
25+
Record<string, firebase.firestore.DocumentReference>
26+
] = [{}, {}]
2727

2828
const subsByPath = Object.keys(subs).reduce((resultSubs, subKey) => {
2929
const sub = subs[subKey]
3030
resultSubs[sub.path] = sub.data()
3131
return resultSubs
32-
}, {} as Record<string, firestore.DocumentData | null>)
32+
}, {} as Record<string, firebase.firestore.DocumentData | null>)
3333

3434
function recursiveExtract(
35-
doc: firestore.DocumentData,
36-
oldDoc: firestore.DocumentData | void,
35+
doc: firebase.firestore.DocumentData,
36+
oldDoc: firebase.firestore.DocumentData | void,
3737
path: string,
38-
result: [firestore.DocumentData, Record<string, firestore.DocumentReference>]
38+
result: [firebase.firestore.DocumentData, Record<string, firebase.firestore.DocumentReference>]
3939
): void {
4040
// make it easier to later on access the value
4141
oldDoc = oldDoc || {}

Diff for: packages/@posva/vuefire-core/src/rtdb/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { database } from 'firebase'
1+
import firebase from 'firebase/app'
22
import { createRecordFromRTDBSnapshot, indexForKey, RTDBSerializer } from './utils'
33
import { OperationsType, ResetOption } from '../shared'
44

@@ -27,7 +27,7 @@ interface CommonBindOptionsParameter {
2727
// TODO: refactor using normal arguments instead of an array to improve size
2828

2929
interface BindAsObjectParameter extends CommonBindOptionsParameter {
30-
document: database.Reference | database.Query
30+
document: firebase.database.Reference | firebase.database.Query
3131
}
3232

3333
/**
@@ -60,7 +60,7 @@ export function rtdbBindAsObject(
6060
}
6161

6262
interface BindAsArrayParameter extends CommonBindOptionsParameter {
63-
collection: database.Reference | database.Query
63+
collection: firebase.database.Reference | firebase.database.Query
6464
}
6565

6666
/**

Diff for: packages/@posva/vuefire-core/src/rtdb/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { database } from 'firebase'
1+
import firebase from 'firebase/app'
22
import { isObject } from '../shared'
33

44
/**
@@ -7,7 +7,7 @@ import { isObject } from '../shared'
77
* @param snapshot
88
* @return
99
*/
10-
export function createRecordFromRTDBSnapshot(snapshot: database.DataSnapshot): any {
10+
export function createRecordFromRTDBSnapshot(snapshot: firebase.database.DataSnapshot): any {
1111
const value = snapshot.val()
1212
const res = isObject(value) ? value : Object.defineProperty({}, '.value', { value })
1313
// if (isObject(value)) {

Diff for: packages/@posva/vuefire-core/src/shared.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { firestore } from 'firebase'
1+
import firebase from 'firebase/app'
22

33
export interface OperationsType {
44
set: (target: Record<string, any>, key: string | number, value: any) => any
@@ -62,7 +62,7 @@ export function isTimestamp(o: any): o is Date {
6262
* Checks if a variable is a Firestore Document Reference
6363
* @param o
6464
*/
65-
export function isDocumentRef(o: any): o is firestore.DocumentReference {
65+
export function isDocumentRef(o: any): o is firebase.firestore.DocumentReference {
6666
return o && o.onSnapshot
6767
}
6868

Diff for: packages/@posva/vuefire-test-helpers/src/index.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Vue from 'vue'
22
import { MockFirebase, MockedReference } from 'firebase-mock'
3-
import { firestore } from '../../../../node_modules/firebase/index'
3+
import firebase from '../../../../node_modules/firebase/index'
44
import { walkSet } from '@posva/vuefire-core'
55

66
Vue.config.productionTip = false
@@ -10,9 +10,9 @@ export { Vue, MockFirebase, MockedReference }
1010
export * from './mock'
1111

1212
type FirestoreReference =
13-
| firestore.CollectionReference
14-
| firestore.DocumentReference
15-
| firestore.Query
13+
| firebase.firestore.CollectionReference
14+
| firebase.firestore.DocumentReference
15+
| firebase.firestore.Query
1616

1717
export function spyUnbind(ref: FirestoreReference) {
1818
const unbindSpy = jest.fn()
@@ -49,7 +49,7 @@ export function spyOnSnapshotCallback(ref: FirestoreReference) {
4949
}
5050

5151
// This makes sure some tests fail by delaying callbacks
52-
export function delayUpdate(ref: firestore.DocumentReference, time = 0) {
52+
export function delayUpdate(ref: firebase.firestore.DocumentReference, time = 0) {
5353
const onSnapshot = ref.onSnapshot.bind(ref)
5454
// @ts-ignore
5555
ref.onSnapshot = fn =>

Diff for: packages/global.d.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
declare module 'firebase-mock' {
2-
import { database } from 'firebase'
3-
2+
import firebase from 'firebase/app'
43
type TODO = any
54

65
interface MockFirebaseConstructor {
76
new (): MockFirebaseI
87
}
98

10-
export interface MockedReference extends database.Reference {
9+
export interface MockedReference extends firebase.database.Reference {
1110
flush: () => void
1211
forceCancel: (error: any) => void
1312
autoFlush: () => void

0 commit comments

Comments
 (0)