Skip to content

Commit 6cfd009

Browse files
Migrate to firebase v9 modular sdk (#243)
* [WIP] Update to modular SDK * Lint * Version 9.0.0-beta.1 * Package lock * test * replace uglify with terser * use stable version of firebase v9 * bump ci to node 10 * Reference --> DatabaseReference in tests * unsubscribe from listeners instead of calling off() * callback --> unsubscribe * add migration guide * update reference docs * update example fish1 * update remaining examples * update common/package-lock * update package-lock.json files * Update migration.md * Update packages/geofire/src/GeoQuery.ts * add changelog entry Co-authored-by: Sam <[email protected]>
1 parent d5250d5 commit 6cfd009

25 files changed

+1838
-1203
lines changed

.github/workflows/test.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
strategy:
1414
matrix:
1515
node-version:
16-
- 8.x
16+
- 10.x
1717
steps:
1818
- uses: actions/checkout@v1
1919
- uses: actions/setup-node@v1

CHANGELOG.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
1+
- [Breaking change] Upgraded GeoFire to use the Firebase JS SDK v9. GeoFire no longer supports Firebase SDK below version 9.0.0
2+
- [Internal] Replace the `uglify` plugin with `terser`
3+
- See the migration guide (https://github.com/firebase/geofire-js/tree/master/migration#upgrading-from-geofire-3xx-to-4xx) for upgrade instructions

docs/migration.md

+39
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,45 @@
33
Below are instructions for migrating from one version of GeoFire to another. If you are upgrading
44
several versions at once, make sure you follow the migration instructions for all upgrades.
55

6+
## `5.x.x` to `6.x.x`
7+
8+
With the release of GeoFire `6.0.0`, GeoFire now uses the new
9+
[Firebase Modular SDK](https://firebase.blog/posts/2021/07/introducing-the-new-firebase-js-sdk#introducing-firestore-lite). This new SDK is incompatible with previous versions, so if you're still using an older version of the Firebase SDK or our [compat module](https://firebase.google.com/docs/web/modular-upgrade#update_imports_to_v9_compat), please stick to version `5.x.x` of GeoFire.
10+
11+
This change only affects the way you interact with the Firebase SDK, but not how you interact with GeoFire.
12+
13+
For example, this:
14+
```js
15+
// Initialize the Firebase SDK
16+
firebase.initializeApp({
17+
// ...
18+
});
19+
20+
// Create a Firebase reference where GeoFire will store its information
21+
var firebaseRef = firebase.database().ref();
22+
23+
// Create a GeoFire index
24+
var geoFire = new GeoFire(firebaseRef);
25+
```
26+
27+
Becomes:
28+
```js
29+
import { initializeApp } from 'firebase/app';
30+
import { getDatabase, ref } from "firebase/database";
31+
32+
// Initialize the Firebase SDK
33+
initializeApp({
34+
// ...
35+
});
36+
37+
// Create a Firebase reference where GeoFire will store its information
38+
var firebaseRef = ref(getDatabase());
39+
40+
// Create a GeoFire index
41+
var geoFire = new GeoFire(firebaseRef);
42+
```
43+
44+
See [Firebase's upgrade guide](https://firebase.google.com/docs/web/modular-upgrade) for more details.
645

746
## `3.x.x` to `4.x.x`
847

docs/reference.md

+8-3
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,16 @@ Creates and returns a new `GeoFire` instance to manage your location data. Data
3232
the location pointed to by `firebaseRef`. Note that this `firebaseRef` can point to anywhere in your Firebase database.
3333

3434
```JavaScript
35+
import { initializeApp } from 'firebase/app';
36+
import { getDatabase, ref } from "firebase/database";
37+
3538
// Initialize the Firebase SDK
36-
firebase.initializeApp({
39+
initializeApp({
3740
// ...
3841
});
3942

4043
// Create a Firebase reference where GeoFire will store its information
41-
var firebaseRef = firebase.database().ref();
44+
var firebaseRef = ref(getDatabase());
4245

4346
// Create a GeoFire index
4447
var geoFire = new GeoFire(firebaseRef);
@@ -49,7 +52,9 @@ var geoFire = new GeoFire(firebaseRef);
4952
Returns the `Firebase` reference used to create this `GeoFire` instance.
5053

5154
```JavaScript
52-
var firebaseRef = firebase.database().ref();
55+
import { getDatabase, ref } from "firebase/database";
56+
57+
var firebaseRef = ref(getDatabase());
5358
var geoFire = new GeoFire(firebaseRef);
5459

5560
var ref = geoFire.ref(); // ref === firebaseRef

examples/fish1/index.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
<title>GeoFire fish1 Example</title>
55

66
<!-- Firebase -->
7-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js"></script>
8-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-database.js"></script>
7+
<script type="module">
8+
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-app.js'
9+
import { getDatabase, ref, push } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-database.js'
10+
</script>
911

1012
<!-- RSVP -->
1113
<script src="https://unpkg.com/[email protected]/dist/rsvp.min.js"></script>
1214

1315
<!-- GeoFire -->
14-
<script src="https://cdn.firebase.com/libs/geofire/5.0.1/geofire.min.js"></script>
16+
<script src="https://cdn.firebase.com/libs/geofire/6.0.0/geofire.min.js"></script>
1517

1618
<!-- Custom JS -->
1719
<script src="js/fish1.js" defer></script>

examples/fish1/js/fish1.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
(function() {
22
// Initialize the Firebase SDK
3-
firebase.initializeApp({
3+
initializeApp({
44
apiKey: "AIzaSyCR4ND2xwX3kU1IxTn0youF5OlI3x6MFZs",
55
databaseURL: "https://geofire-gh-tests.firebaseio.com",
66
projectId: "geofire-gh-tests"
77
});
88

99
// Generate a random Firebase location
10-
var firebaseRef = firebase.database().ref().push();
10+
var firebaseRef = push(ref(getDatabase()));
1111

1212
// Create a new GeoFire instance at the random Firebase location
1313
var geoFireInstance = new geofire.GeoFire(firebaseRef);

examples/fish2/index.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
<title>GeoFire fish2 Example</title>
55

66
<!-- Firebase -->
7-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js"></script>
8-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-database.js"></script>
7+
<script type="module">
8+
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-app.js'
9+
import { getDatabase, ref, push } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-database.js'
10+
</script>
911

1012
<!-- RSVP -->
1113
<script src="https://unpkg.com/[email protected]/dist/rsvp.min.js"></script>
1214

1315
<!-- GeoFire -->
14-
<script src="https://cdn.firebase.com/libs/geofire/5.0.1/geofire.min.js"></script>
16+
<script src="https://cdn.firebase.com/libs/geofire/6.0.0/geofire.min.js"></script>
1517

1618
<!-- Custom JS -->
1719
<script src="js/fish2.js" defer></script>

examples/fish2/js/fish2.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
(function() {
22
// Initialize the Firebase SDK
3-
firebase.initializeApp({
3+
initializeApp({
44
apiKey: "sAIzaSyCR4ND2xwX3kU1IxTn0youF5OlI3x6MFZs",
55
databaseURL: "https://geofire-gh-tests.firebaseio.com",
66
projectId: "geofire-gh-tests"
77
});
88

99
// Generate a random Firebase location
10-
var firebaseRef = firebase.database().ref().push();
10+
var firebaseRef = push(ref(getDatabase()));
1111

1212
// Create a new GeoFire instance at the random Firebase location
1313
var geoFireInstance = new geofire.GeoFire(firebaseRef);

examples/fish3/index.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44
<title>GeoFire fish3 Example</title>
55

66
<!-- Firebase -->
7-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js"></script>
8-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-database.js"></script>
7+
<script type="module">
8+
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-app.js'
9+
import { getDatabase, ref, push } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-database.js'
10+
</script>
911

1012
<!-- RSVP -->
1113
<script src="https://unpkg.com/[email protected]/dist/rsvp.min.js"></script>
1214

1315
<!-- GeoFire -->
14-
<script src="https://cdn.firebase.com/libs/geofire/5.0.1/geofire.min.js"></script>
16+
<script src="https://cdn.firebase.com/libs/geofire/6.0.0/geofire.min.js"></script>
1517

1618
<!-- Custom JS -->
1719
<script src="js/fish3.js" defer></script>

examples/fish3/js/fish3.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
(function() {
22
// Initialize the Firebase SDK
3-
firebase.initializeApp({
3+
initializeApp({
44
apiKey: "AIzaSyCR4ND2xwX3kU1IxTn0youF5OlI3x6MFZs",
55
databaseURL: "https://geofire-gh-tests.firebaseio.com",
66
projectId: "geofire-gh-tests"
77
});
88

99
// Generate a random Firebase location
10-
var firebaseRef = firebase.database().ref().push();
10+
var firebaseRef = push(ref(getDatabase()));
1111

1212
// Create a new GeoFire instance at the random Firebase location
1313
var geoFireInstance = new geofire.GeoFire(firebaseRef);

examples/html5Geolocation/index.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
<title>GeoFire HTML5 Geolocation API Example</title>
55

66
<!-- Firebase -->
7-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js"></script>
8-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-database.js"></script>
7+
<script type="module">
8+
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-app.js'
9+
import { getDatabase, ref, push } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-database.js'
10+
</script>
911

1012
<!-- GeoFire -->
11-
<script src="https://cdn.firebase.com/libs/geofire/5.0.1/geofire.min.js"></script>
13+
<script src="https://cdn.firebase.com/libs/geofire/6.0.0/geofire.min.js"></script>
1214

1315
<!-- Custom JS -->
1416
<script src="js/html5Geolocation.js" defer></script>

examples/html5Geolocation/js/html5Geolocation.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
(function() {
22
// Initialize the Firebase SDK
3-
firebase.initializeApp({
3+
initializeApp({
44
apiKey: "AIzaSyCR4ND2xwX3kU1IxTn0youF5OlI3x6MFZs",
55
databaseURL: "https://geofire-gh-tests.firebaseio.com",
66
projectId: "geofire-gh-tests"
77
});
88

99
// Generate a random Firebase location
10-
var firebaseRef = firebase.database().ref().push();
10+
var firebaseRef = push(ref(getDatabase()));
1111

1212
// Create a new GeoFire instance at the random Firebase location
1313
var geoFireInstance = new geofire.GeoFire(firebaseRef);

examples/queryBuilder/index.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
<script src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
88

99
<!-- Firebase -->
10-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-app.js"></script>
11-
<script src="https://www.gstatic.com/firebasejs/5.9.4/firebase-database.js"></script>
10+
<script type="module">
11+
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-app.js'
12+
import { getDatabase, ref, push } from 'https://www.gstatic.com/firebasejs/9.8.4/firebase-database.js'
13+
</script>
1214

1315
<!-- GeoFire -->
14-
<script src="https://cdn.firebase.com/libs/geofire/5.0.1/geofire.min.js"></script>
16+
<script src="https://cdn.firebase.com/libs/geofire/6.0.0/geofire.min.js"></script>
1517

1618
<!-- Custom JS -->
1719
<script src="js/queryBuilder.js" defer></script>

examples/queryBuilder/js/queryBuilder.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
(function() {
22
// Initialize the Firebase SDK
3-
firebase.initializeApp({
3+
initializeApp({
44
apiKey: "AIzaSyCR4ND2xwX3kU1IxTn0youF5OlI3x6MFZs",
55
databaseURL: "https://geofire-gh-tests.firebaseio.com",
66
projectId: "geofire-gh-tests"
77
});
88

99
// Generate a random Firebase location
10-
var firebaseRef = firebase.database().ref().push();
10+
var firebaseRef = push(ref(getDatabase()));
1111

1212
// Create a new GeoFire instance at the random Firebase location
1313
var geoFireInstance = new geofire.GeoFire(firebaseRef);

0 commit comments

Comments
 (0)