diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28f0fdb00..89127238e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+
+# [7.0.2](https://github.com/angular/angularfire2/compare/7.0.1...7.0.2) (2021-08-30)
+
+### Bug fixes
+
+* **types:** `firebase/*` types were not being reexported from the `@angular/fire/*` modules (modular)
+
# [7.0.1](https://github.com/angular/angularfire2/compare/7.0.0...7.0.1) (2021-08-30)
diff --git a/package.json b/package.json
index 9a9d74b30..bba449c20 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@angular/fire",
- "version": "7.0.1",
+ "version": "7.0.2",
"description": "The official Angular library for Firebase.",
"private": true,
"scripts": {
@@ -93,6 +93,7 @@
"codelyzer": "^6.0.0",
"concurrently": "^2.2.0",
"conventional-changelog-cli": "^1.2.0",
+ "file-loader": "^6.2.0",
"firebase-functions-test": "^0.2.2",
"globalthis": "^1.0.1",
"gzip-size": "^5.1.1",
diff --git a/sample-compat/firestore-protos.ts b/sample-compat/firestore-protos.ts
deleted file mode 100644
index 3ce361529..000000000
--- a/sample-compat/firestore-protos.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = {
- path: './node_modules/@firebase/firestore/dist/src/protos',
- filter: /\.proto$/,
- pathTransform: (path: string) => {
- const name = path.split('./node_modules/@firebase/firestore/dist/')[1];
- return `file-loader?name=${name}!${path}`;
- }
-};
diff --git a/sample-compat/server.ts b/sample-compat/server.ts
index beeeab584..35eabbb26 100644
--- a/sample-compat/server.ts
+++ b/sample-compat/server.ts
@@ -14,8 +14,7 @@ global['XMLHttpRequest'] = require('xhr2');
global['WebSocket'] = require('ws');
/* tslint:enable:no-string-literal */
-// include the protos required to bundle firestore
-// import 'dir-loader!./firestore-protos';
+import '@angular/fire/firestore-protos';
// The Express app is exported so that it can be used by serverless Functions.
export function app() {
diff --git a/sample-compat/src/app/app.module.ts b/sample-compat/src/app/app.module.ts
index c3de9f881..c76f1fade 100644
--- a/sample-compat/src/app/app.module.ts
+++ b/sample-compat/src/app/app.module.ts
@@ -88,7 +88,7 @@ import { UpboatsComponent } from './upboats/upboats.component';
{ provide: REMOTE_CONFIG_DEFAULTS, useValue: { background_color: 'red' } },
{ provide: USE_DEVICE_LANGUAGE, useValue: true },
{ provide: VAPID_KEY, useValue: environment.vapidKey },
- { provide: SERVICE_WORKER, useFactory: () => typeof navigator !== 'undefined' && navigator.serviceWorker?.register('firebase-messaging-sw.js') || undefined },
+ { provide: SERVICE_WORKER, useFactory: () => typeof navigator !== 'undefined' && navigator.serviceWorker?.register('firebase-messaging-sw.js', { scope: '__' }) || undefined },
{ provide: APP_VERSION, useValue: '0.0.0' },
{ provide: APP_NAME, useValue: 'Angular' },
],
diff --git a/sample-compat/src/firebase-messaging-sw.js b/sample-compat/src/firebase-messaging-sw.js
index 38b880c69..4b4c1306d 100644
--- a/sample-compat/src/firebase-messaging-sw.js
+++ b/sample-compat/src/firebase-messaging-sw.js
@@ -1,5 +1,5 @@
-importScripts('https://www.gstatic.com/firebasejs/9.0.0-20217250818/firebase-app-compat.js');
-importScripts('https://www.gstatic.com/firebasejs/9.0.0-20217250818/firebase-messaging-compat.js');
+importScripts('https://www.gstatic.com/firebasejs/9.0.1/firebase-app-compat.js');
+importScripts('https://www.gstatic.com/firebasejs/9.0.1/firebase-messaging-compat.js');
firebase.initializeApp({
apiKey: 'AIzaSyA7CNE9aHbcSEbt9y03QReJ-Xr0nwKg7Yg',
diff --git a/sample-compat/tsconfig.server.json b/sample-compat/tsconfig.server.json
index 4b6cf6c42..4383fc80f 100644
--- a/sample-compat/tsconfig.server.json
+++ b/sample-compat/tsconfig.server.json
@@ -10,8 +10,7 @@
},
"files": [
"src/main.server.ts",
- "server.ts",
- "firestore-protos.ts"
+ "server.ts"
],
"angularCompilerOptions": {
"entryModule": "./src/app/app.server.module#AppServerModule"
diff --git a/sample-compat/yarn.lock b/sample-compat/yarn.lock
index b83a89406..0435ab970 100644
--- a/sample-compat/yarn.lock
+++ b/sample-compat/yarn.lock
@@ -235,7 +235,7 @@
tslib "^2.2.0"
"@angular/fire@../dist/packages-dist":
- version "7.0.0"
+ version "7.0.1"
dependencies:
tslib "^2.0.0"
@@ -1556,10 +1556,10 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d"
integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==
-"@firebase/analytics-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.0.tgz#48f0c3b5557541dd0f1a463ffd1d807454ae1b8e"
- integrity sha512-oaf1FEF7cKci5tO7f52dH63/ZwkBqbdSLLpgo6kyoYoYDuY+on4yAc1CIHh3sNj/L8T4Ni81IQvVs9lE/9oOpg==
+"@firebase/analytics-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.1.tgz#77a3e5d28f15df303c3836db4740a43955fcfcac"
+ integrity sha512-pMTrA8cxMXFRv7bwZEXXz0NCepnyH2Jay/32RZ7xAufij2VJhF5S1BtfCO0wuri3FB94rlM8SmSEbwxxHcAtVg==
dependencies:
"@firebase/analytics" "0.7.0"
"@firebase/analytics-types" "0.7.0"
@@ -1583,10 +1583,10 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/app-check-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.0.tgz#5bf12e5cd82f76cac2eabe51345d1fed9664ed48"
- integrity sha512-T1M2d1oroaHUa448fgx3BdfWg4WXP64yybIWxvmVBuh7YnyMuegJK1sS9zipKBKLkstcQK8vivXYh3+/AnbGFw==
+"@firebase/app-check-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.1.tgz#84c7ef29bb683fd3dea66a66f82b799474c904ee"
+ integrity sha512-XTV5Ns0Lpwn5GgXV5T0soOkoOGACaw9xiNvAXcISQYFBIse0k7fKo8V5J9VUS1ppzGpyTRCg0m9efz4CNrwPyQ==
dependencies:
"@firebase/app-check" "0.4.0"
"@firebase/component" "0.5.6"
@@ -1609,10 +1609,10 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/app-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.0.tgz#101070141198304a50ec546b7626870c7759166b"
- integrity sha512-jnAeFM1ihY5klqg2dvdA4EOk7co8ffSHUj/efqaSwTrMkKTcG/WZKF9WAuXdl+5jEu1BhsGGHveWzGliTFH5Hg==
+"@firebase/app-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.1.tgz#47d5f5ac350f59ea4b721f17e01b1e46a1a3154a"
+ integrity sha512-AoUO7PnQlDPyMAvAE972kBhrwXRZRLGdHM8obyIeTzPNqIiEoULD4Rdq5TBB4UmV2HYAlYdrS+dk4nuWx67w6A==
dependencies:
"@firebase/app" "0.7.0"
"@firebase/component" "0.5.6"
@@ -1640,12 +1640,12 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/auth-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.0.tgz#e5dc6bb6ac89ea21f85c4153eb1cf8a7d69deaa8"
- integrity sha512-OfAt3c5ham07xvmYyJp02v8mUa+HaSEwilvgD2M1JaWqLAtqH66bdBhLBE9N0pq8xtRdXZIF1vSd20a0ulQfQg==
+"@firebase/auth-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.1.tgz#9baf7b50395ea29a8c3bd20d1c1a3d3cf9004534"
+ integrity sha512-wEGEV+SluDt/SRyLJRG+s32EDHsyahlkp7kXTcRLUs5KGHmK0T0wNrWxdN5eeR4wR/tlrasPNveUeQDyoJVQzw==
dependencies:
- "@firebase/auth" "0.17.0"
+ "@firebase/auth" "0.17.1"
"@firebase/auth-types" "0.11.0"
"@firebase/component" "0.5.6"
"@firebase/util" "1.3.0"
@@ -1668,10 +1668,10 @@
resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.11.0.tgz#b9c73c60ca07945b3bbd7a097633e5f78fa9e886"
integrity sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==
-"@firebase/auth@0.17.0":
- version "0.17.0"
- resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.17.0.tgz#e1395779293e1869fabefd07e078242c773b5fcb"
- integrity sha512-4zOGTLGzMjBX96KEyBNYpjOD87c2efCZvUjaJ53QslleW9Xp8kSsSHLRhr8hOkcRXO17CmBKSRx/LnG2vTZWQQ==
+"@firebase/auth@0.17.1":
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.17.1.tgz#4c3dd24ca5a9c47c5e97a9fd1bd4129c46154764"
+ integrity sha512-+YQM0svb10Q1LwoTj+/unrdY/F/C89bgsjlanY14k2124fiOYVZv0M19t5i7nZx8VnsrgzkFaDfKahdcDxjdpA==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/logger" "0.2.6"
@@ -1748,13 +1748,13 @@
faye-websocket "0.11.3"
tslib "^1.11.1"
-"@firebase/firestore-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.0.tgz#9faa1c10a76d67f812dd48469693e8f6bafca3ab"
- integrity sha512-25r1jGpnnx7vXSPVLmHNkuz+EGpZDU5Luro5/MFCMmoV4a+Rmg2n9FRlxRyPn4XOCkc5nrBpT6ESAKAPSNHcpw==
+"@firebase/firestore-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.1.tgz#a990cd4b0aef5e0a18972de71d18c35065099f19"
+ integrity sha512-Ag95WVTSh5Q+GK3egd9HBvXerO/lrRulTO67ryYp4EPyoI/ZmnIoMhYgnOXvb1jCH0Ae01XoSxgU2M2SRvph/Q==
dependencies:
"@firebase/component" "0.5.6"
- "@firebase/firestore" "3.0.0"
+ "@firebase/firestore" "3.0.1"
"@firebase/firestore-types" "2.5.0"
"@firebase/util" "1.3.0"
tslib "^2.1.0"
@@ -1764,10 +1764,10 @@
resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.5.0.tgz#16fca40b6980fdb000de86042d7a96635f2bcdd7"
integrity sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==
-"@firebase/firestore@3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.0.0.tgz#f7b8cc3d8d28b85a901fd66df13f4d61dcc33190"
- integrity sha512-rbs5EbU/01f7NKHDtedBowpBlqnkVnQlpIuSX5wwGMiPgH8f9pMhh59JMk0cTaSqsJXsq3KvafWAD9SqWIqe2w==
+"@firebase/firestore@3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.0.1.tgz#0152c6a767e116382fb28a0e62b6ea7fa331cc20"
+ integrity sha512-HDnmweq9GOrk4AtCyQ50FBj/cRowb7IXeTGOx6/MSGYCodKv+9axviKqKPYlWH7cbyrw2Jf3GJTUdkVghMhn+w==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/logger" "0.2.6"
@@ -1778,10 +1778,10 @@
node-fetch "2.6.1"
tslib "^2.1.0"
-"@firebase/functions-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.0.tgz#53e2b3b9590b04628e9537806196d91deb3e6f3f"
- integrity sha512-uNwHdGYqgIXzF7aTZBeUe00K/sadRg5EeSDuJ6VNo3Gh3ZceX4eRnL5p7l2bEJBh8hBl0brb82+TRYjGHtjtFQ==
+"@firebase/functions-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.1.tgz#b1afb89750ec4d1b9a1a9a188f20c30b75aa4a93"
+ integrity sha512-HELDScvKEP/tM6eW52u+5ilqweCB/cB8ONiQ0aHw2Hjdm20DQ/VsII2JEtbhnFQfuODdugvWLkWV0RPWTFwYqA==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/functions" "0.7.0"
@@ -1914,13 +1914,13 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/storage-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.0.tgz#b8080e3250b19ad6d98a5ade65f1a03aab73f2b8"
- integrity sha512-DJstR2vidnyNSRp14LQhd9QO0PxhMm/xsXrPQ2IEmQ7EWDT4rxGd+pkqXTG6IO+k9ZKMc0BnWIYwlMqkGEJoDg==
+"@firebase/storage-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.1.tgz#9192cd26595a2a09ebef1bbd3da1b63f4716da37"
+ integrity sha512-W2ke6KcnrEY1zvlEZ8GOVt8wgUbIhW3ZCBUYMdpsLKB/uFmn/zgdiba+ojwerqlOH5zUe4CSULqBE1hXDm1pMw==
dependencies:
"@firebase/component" "0.5.6"
- "@firebase/storage" "0.8.0"
+ "@firebase/storage" "0.8.1"
"@firebase/storage-types" "0.6.0"
"@firebase/util" "1.3.0"
tslib "^2.1.0"
@@ -1930,10 +1930,10 @@
resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.6.0.tgz#0b1af64a2965af46fca138e5b70700e9b7e6312a"
integrity sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==
-"@firebase/storage@0.8.0":
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.0.tgz#2766a18a8a9684082d745ab1a93a3c88061169b1"
- integrity sha512-D0HH+y3DLH0+8eOt6h19RffFMpdzPNr7Yv7XpeeM3+VLE4TbQnDie/OAQWOuWLrYoW7MsPQnLkx+zDb3DxOXxw==
+"@firebase/storage@0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.1.tgz#38959b5011df90de4041dbe7277093e010169eba"
+ integrity sha512-kq6biRi86JUNU3ZQc7UrUYJ+QmPmayER68sXtHmn8Kxw7p/V5MchTPVpE8iFAN5a5PhGTPKSD4cuNyUPU9C0Fg==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/util" "1.3.0"
@@ -2484,11 +2484,16 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.9.tgz#04afc9a25c6ff93da14deabd65dc44485b53c8d6"
integrity sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==
-"@types/node@>=10.0.0", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
+"@types/node@>=10.0.0":
version "16.6.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.2.tgz#331b7b9f8621c638284787c5559423822fdffc50"
integrity sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "16.7.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.8.tgz#2448be5f24fe6b77114632b6350fcd219334651e"
+ integrity sha512-8upnoQU0OPzbIkm+ZMM0zCeFCkw2s3mS0IWdx0+AAaWqm4fkBb0UJp8Edl7FVKRamYbpJC/aVsHpKWBIbiC7Zg==
+
"@types/node@^13.7.0":
version "13.13.32"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.32.tgz#f0edd0fb57b3c9f6e64a0b3ddb1e0f729b6f71ce"
@@ -3257,9 +3262,9 @@ backo2@1.0.2:
integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
balanced-match@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
- integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base64-arraybuffer@0.1.4:
version "0.1.4"
@@ -6003,25 +6008,25 @@ firebase-tools@^8.16.1:
ws "^7.2.3"
firebase@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.0.0.tgz#00bfa03a3eb99bde43a472a8861aa808068153bb"
- integrity sha512-atgnuvELhU9D5w9moChnyCb6GRbOCqk54/kHN0J4kdLJBncpcb2culIJ7nlSHILMcW9MNMiNKDJ07RwXVyqFFA==
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.0.1.tgz#6bc5f9d7bdcd864ef98f2219fa0cd240f2e48b3c"
+ integrity sha512-RMpbXsVlxqMX+s/gYudnUZeSZXPiLCJMdaxbZ0WRiMjLuJc6ZkbpRy7yz7rZQpL0wRD6gN4K5C+JaKEQtN3jAQ==
dependencies:
"@firebase/analytics" "0.7.0"
- "@firebase/analytics-compat" "0.1.0"
+ "@firebase/analytics-compat" "0.1.1"
"@firebase/app" "0.7.0"
"@firebase/app-check" "0.4.0"
- "@firebase/app-check-compat" "0.1.0"
- "@firebase/app-compat" "0.1.0"
+ "@firebase/app-check-compat" "0.1.1"
+ "@firebase/app-compat" "0.1.1"
"@firebase/app-types" "0.7.0"
- "@firebase/auth" "0.17.0"
- "@firebase/auth-compat" "0.1.0"
+ "@firebase/auth" "0.17.1"
+ "@firebase/auth-compat" "0.1.1"
"@firebase/database" "0.12.0"
"@firebase/database-compat" "0.1.0"
- "@firebase/firestore" "3.0.0"
- "@firebase/firestore-compat" "0.1.0"
+ "@firebase/firestore" "3.0.1"
+ "@firebase/firestore-compat" "0.1.1"
"@firebase/functions" "0.7.0"
- "@firebase/functions-compat" "0.1.0"
+ "@firebase/functions-compat" "0.1.1"
"@firebase/installations" "0.5.0"
"@firebase/messaging" "0.9.0"
"@firebase/messaging-compat" "0.1.0"
@@ -6030,8 +6035,8 @@ firebase@^9.0.0:
"@firebase/polyfill" "0.3.36"
"@firebase/remote-config" "0.2.0"
"@firebase/remote-config-compat" "0.1.0"
- "@firebase/storage" "0.8.0"
- "@firebase/storage-compat" "0.1.0"
+ "@firebase/storage" "0.8.1"
+ "@firebase/storage-compat" "0.1.1"
"@firebase/util" "1.3.0"
first-input-delay@^0.1.3:
@@ -6384,7 +6389,7 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@7.1.7, glob@^7.1.7:
+glob@7.1.7, glob@^7.1.3, glob@^7.1.7:
version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
@@ -6396,7 +6401,7 @@ glob@7.1.7, glob@^7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -6775,9 +6780,9 @@ http-errors@~1.6.2:
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77"
- integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
+ integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1:
version "4.0.1"
@@ -7856,10 +7861,10 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
-jszip@^3.5.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.6.0.tgz#839b72812e3f97819cc13ac4134ffced95dd6af9"
- integrity sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==
+jszip@^3.5.0, jszip@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9"
+ integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==
dependencies:
lie "~3.3.0"
pako "~1.0.2"
@@ -11081,14 +11086,14 @@ selenium-webdriver@4.0.0-beta.1:
ws "^7.3.1"
selenium-webdriver@^4.0.0-beta.2:
- version "4.0.0-beta.3"
- resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.3.tgz#8c29512a27ca9c1f95a96a9a8f488304c894390e"
- integrity sha512-R0mGHpQkSKgIWiPgcKDcckh4A6aaK0KTyWxs5ieuiI7zsXQ+Kb6neph+dNoeqq3jSBGyv3ONo2w3oohoL4D/Rg==
+ version "4.0.0-beta.4"
+ resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-beta.4.tgz#db4fc7505a515ea3b4a95ded031b738a1544eddd"
+ integrity sha512-+s/CIYkWzmnC9WASBxxVj7Lm0dcyl6OaFxwIJaFCT5WCuACiimEEr4lUnOOFP/QlKfkDQ56m+aRczaq2EvJEJg==
dependencies:
- jszip "^3.5.0"
- rimraf "^2.7.1"
+ jszip "^3.6.0"
+ rimraf "^3.0.2"
tmp "^0.2.1"
- ws "^7.3.1"
+ ws ">=7.4.6"
selfsigned@^1.10.8:
version "1.10.8"
@@ -11756,7 +11761,7 @@ string-width@^3.0.0, string-width@^3.1.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
+string-width@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
@@ -11765,6 +11770,15 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.0"
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
+ integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.0"
+
string.prototype.trimend@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
@@ -13050,6 +13064,11 @@ write-file-atomic@^3.0.0:
signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5"
+ws@>=7.4.6:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.1.tgz#bdd92b3c56fdb47d2379b5ae534281922cc5bd12"
+ integrity sha512-XkgWpJU3sHU7gX8f13NqTn6KQ85bd1WU7noBHTT8fSohx7OS1TPY8k+cyRPCzFkia7C4mM229yeHr1qK9sM4JQ==
+
ws@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
@@ -13063,9 +13082,9 @@ ws@^7.2.3:
integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==
ws@^7.3.1:
- version "7.4.5"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1"
- integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.4.tgz#56bfa20b167427e138a7795de68d134fe92e21f9"
+ integrity sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==
ws@^7.4.5, ws@^7.4.6:
version "7.5.3"
@@ -13123,9 +13142,9 @@ y18n@^4.0.0:
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
y18n@^5.0.5:
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
- integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
version "3.1.1"
@@ -13164,9 +13183,9 @@ yargs-parser@^18.1.2:
decamelize "^1.2.0"
yargs-parser@^20.2.2:
- version "20.2.4"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
- integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
yargs@16.2.0, yargs@^16.1.1:
version "16.2.0"
diff --git a/sample/package.json b/sample/package.json
index 56f9bb318..70e2ee539 100644
--- a/sample/package.json
+++ b/sample/package.json
@@ -49,6 +49,7 @@
"@types/express": "^4.17.0",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
+ "file-loader": "^6.2.0",
"firebase-tools": "^9.0.0",
"fuzzy": "^0.1.3",
"inquirer": "^6.2.2",
@@ -71,4 +72,4 @@
"resolutions": {
"webpack": "^5.35.0"
}
-}
\ No newline at end of file
+}
diff --git a/sample/server.ts b/sample/server.ts
index f1a01f926..b2e702815 100644
--- a/sample/server.ts
+++ b/sample/server.ts
@@ -8,16 +8,14 @@ import { AppServerModule } from './src/main.server';
import { APP_BASE_HREF } from '@angular/common';
import { existsSync } from 'fs';
-// Polyfills
-require('cross-fetch/polyfill');
-
-
// Polyfill XMLHttpRequest and WS for Firebase
/* tslint:disable:no-string-literal */
global['XMLHttpRequest'] = require('xhr2');
global['WebSocket'] = require('ws');
/* tslint:enable:no-string-literal */
+import '@angular/fire/firestore-protos';
+
// The Express app is exported so that it can be used by serverless Functions.
export function app(): express.Express {
const server = express();
diff --git a/sample/src/app/app-routing.module.ts b/sample/src/app/app-routing.module.ts
index 3c102f997..0f80e9e81 100644
--- a/sample/src/app/app-routing.module.ts
+++ b/sample/src/app/app-routing.module.ts
@@ -1,7 +1,10 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
+import { HomeComponent } from './home/home.component';
-const routes: Routes = [];
+const routes: Routes = [
+ { path: '', component: HomeComponent, outlet: 'primary', pathMatch: 'prefix' },
+];
@NgModule({
imports: [RouterModule.forRoot(routes, {
diff --git a/sample/src/app/app.browser.module.ts b/sample/src/app/app.browser.module.ts
index 85b54b1fe..6de7ba64e 100644
--- a/sample/src/app/app.browser.module.ts
+++ b/sample/src/app/app.browser.module.ts
@@ -8,10 +8,12 @@ import { AppModule } from './app.module';
import { AppComponent } from './app.component';
import { ServiceWorkerModule } from '@angular/service-worker';
import { environment } from '../environments/environment';
+import { BrowserTransferStateModule } from '@angular/platform-browser';
@NgModule({
imports: [
AppModule,
+ BrowserTransferStateModule,
provideRemoteConfig(() => getRemoteConfig()),
provideAnalytics(() => getAnalytics()),
provideMessaging(() => getMessaging()),
diff --git a/sample/src/app/app.component.ts b/sample/src/app/app.component.ts
index 40402c8ce..4d7cf30b3 100644
--- a/sample/src/app/app.component.ts
+++ b/sample/src/app/app.component.ts
@@ -1,41 +1,18 @@
-import { ApplicationRef, Component, Optional } from '@angular/core';
-import { Auth, authState } from '@angular/fire/auth';
-import { Firestore, getDoc, doc, DocumentSnapshot } from '@angular/fire/firestore';
-import { DocumentData } from 'rxfire/firestore/lite/interfaces';
+import { ApplicationRef, Component } from '@angular/core';
import { distinctUntilChanged } from 'rxjs/operators';
-import { Messaging, onMessage } from '@angular/fire/messaging';
-import { getToken } from '@angular/fire/messaging';
-
-import { environment } from '../environments/environment';
@Component({
selector: 'app-root',
template: `
-
{{ (myDocData | async)?.data() | json }}
`,
styles: []
})
export class AppComponent {
- myDocData: Promise>;
title = 'sample';
constructor(
appRef: ApplicationRef,
- auth: Auth,
- firestore: Firestore,
- @Optional() messaging: Messaging,
) {
- authState(auth).subscribe(it => console.log('authState', it));
appRef.isStable.pipe(distinctUntilChanged()).subscribe(it => console.log('isStable', it));
- this.myDocData = getDoc(doc(firestore, 'animals/NJdGQCv1P92SWsp4nSE7'));
- if (messaging) {
- navigator.serviceWorker.register('firebase-messaging-sw.js', { type: 'module' }).then(serviceWorkerRegistration => {
- getToken(messaging, {
- serviceWorkerRegistration,
- vapidKey: environment.vapidKey,
- }).then(it => console.log(it));
- });
- onMessage(messaging, it => console.log('onMessage', it));
- }
}
}
diff --git a/sample/src/app/app.module.ts b/sample/src/app/app.module.ts
index 138710653..9b12aec9d 100644
--- a/sample/src/app/app.module.ts
+++ b/sample/src/app/app.module.ts
@@ -1,6 +1,6 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
-import { provideFirebaseApp, initializeApp, getApp } from '@angular/fire/app';
+import { provideFirebaseApp, initializeApp } from '@angular/fire/app';
import { provideAuth, getAuth, connectAuthEmulator } from '@angular/fire/auth';
import { getStorage, provideStorage, connectStorageEmulator } from '@angular/fire/storage';
import { getDatabase, provideDatabase, connectDatabaseEmulator } from '@angular/fire/database';
@@ -11,11 +11,28 @@ import { FunctionsModule } from '@angular/fire/functions';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { environment } from '../environments/environment';
-
+import { HomeComponent } from './home/home.component';
+import { UpboatsComponent } from './upboats/upboats.component';
+import { AuthComponent } from './auth/auth.component';
+import { FirestoreComponent } from './firestore/firestore.component';
+import { DatabaseComponent } from './database/database.component';
+import { FunctionsComponent } from './functions/functions.component';
+import { MessagingComponent } from './messaging/messaging.component';
+import { RemoteConfigComponent } from './remote-config/remote-config.component';
+import { StorageComponent } from './storage/storage.component';
@NgModule({
declarations: [
AppComponent,
+ HomeComponent,
+ UpboatsComponent,
+ AuthComponent,
+ FirestoreComponent,
+ DatabaseComponent,
+ FunctionsComponent,
+ MessagingComponent,
+ RemoteConfigComponent,
+ StorageComponent,
],
imports: [
BrowserModule.withServerTransition({ appId: 'serverApp' }),
@@ -45,16 +62,7 @@ import { environment } from '../environments/environment';
return database;
}),
provideStorage(() => {
- // While I've provided two instances this should be the default, since it
- // uses the default app
- const storage = getStorage(getApp(), 'another-bucket');
- if (environment.useEmulators) {
- connectStorageEmulator(storage, 'localhost', 9199);
- }
- return storage;
- }),
- provideStorage(() => {
- const storage = getStorage(getApp('second'));
+ const storage = getStorage();
if (environment.useEmulators) {
connectStorageEmulator(storage, 'localhost', 9199);
}
diff --git a/sample/src/app/app.server.module.ts b/sample/src/app/app.server.module.ts
index 795380cd2..502232c39 100644
--- a/sample/src/app/app.server.module.ts
+++ b/sample/src/app/app.server.module.ts
@@ -1,5 +1,5 @@
import { NgModule } from '@angular/core';
-import { ServerModule } from '@angular/platform-server';
+import { ServerModule, ServerTransferStateModule } from '@angular/platform-server';
import { AppModule } from './app.module';
import { AppComponent } from './app.component';
@@ -8,6 +8,7 @@ import { AppComponent } from './app.component';
imports: [
AppModule,
ServerModule,
+ ServerTransferStateModule,
],
bootstrap: [AppComponent],
})
diff --git a/sample/src/app/auth/GoogleAuthProvider.ts b/sample/src/app/auth/GoogleAuthProvider.ts
new file mode 100644
index 000000000..eaf88edad
--- /dev/null
+++ b/sample/src/app/auth/GoogleAuthProvider.ts
@@ -0,0 +1 @@
+export { GoogleAuthProvider, signInWithPopup } from '@angular/fire/auth';
diff --git a/sample/src/app/auth/auth.component.spec.ts b/sample/src/app/auth/auth.component.spec.ts
new file mode 100644
index 000000000..9fafff4d5
--- /dev/null
+++ b/sample/src/app/auth/auth.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AuthComponent } from './auth.component';
+
+describe('AuthComponent', () => {
+ let component: AuthComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AuthComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AuthComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/auth/auth.component.ts b/sample/src/app/auth/auth.component.ts
new file mode 100644
index 000000000..c84affac7
--- /dev/null
+++ b/sample/src/app/auth/auth.component.ts
@@ -0,0 +1,61 @@
+import { Component, OnInit, OnDestroy, PLATFORM_ID } from '@angular/core';
+import { Auth, authState, signInAnonymously, signOut, User } from '@angular/fire/auth';
+import { Observable, Subscription } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { traceUntilFirst } from '@angular/fire/performance';
+import { Inject } from '@angular/core';
+
+@Component({
+ selector: 'app-auth',
+ template: `
+
+ Auth!
+ {{ (user | async)?.uid | json }}
+
+
+
+
+ `,
+ styles: []
+})
+export class AuthComponent implements OnInit, OnDestroy {
+
+ private readonly userDisposable: Subscription|undefined;
+ public readonly user: Observable;
+
+ showLoginButton = false;
+ showLogoutButton = false;
+
+ constructor(public readonly auth: Auth, @Inject(PLATFORM_ID) platformId: object) {
+ this.user = authState(this.auth);
+ this.userDisposable = authState(this.auth).pipe(
+ traceUntilFirst('auth'),
+ map(u => !!u)
+ ).subscribe(isLoggedIn => {
+ this.showLoginButton = !isLoggedIn;
+ this.showLogoutButton = isLoggedIn;
+ });
+ }
+
+ ngOnInit(): void { }
+
+ ngOnDestroy(): void {
+ if (this.userDisposable) {
+ this.userDisposable.unsubscribe();
+ }
+ }
+
+ async login() {
+ const { GoogleAuthProvider, signInWithPopup } = await import('./GoogleAuthProvider');
+ return await signInWithPopup(this.auth, new GoogleAuthProvider());
+ }
+
+ async loginAnonymously() {
+ return await signInAnonymously(this.auth);
+ }
+
+ async logout() {
+ return await signOut(this.auth);
+ }
+
+}
diff --git a/sample/src/app/database/database.component.spec.ts b/sample/src/app/database/database.component.spec.ts
new file mode 100644
index 000000000..ee3fd7f5c
--- /dev/null
+++ b/sample/src/app/database/database.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { DatabaseComponent } from './database.component';
+
+describe('DatabaseComponent', () => {
+ let component: DatabaseComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ DatabaseComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DatabaseComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/database/database.component.ts b/sample/src/app/database/database.component.ts
new file mode 100644
index 000000000..ae9a3ec95
--- /dev/null
+++ b/sample/src/app/database/database.component.ts
@@ -0,0 +1,40 @@
+import { Component, Inject, OnInit, PLATFORM_ID } from '@angular/core';
+import { Database, ref, objectVal } from '@angular/fire/database';
+import { EMPTY, Observable } from 'rxjs';
+import { makeStateKey, TransferState } from '@angular/platform-browser';
+import { startWith, tap } from 'rxjs/operators';
+import { traceUntilFirst } from '@angular/fire/performance';
+import { isPlatformServer } from '@angular/common';
+
+@Component({
+ selector: 'app-database',
+ template: `
+
+ Database!
+ {{ testObjectValue$ | async | json }}
+
+ `,
+ styles: []
+})
+export class DatabaseComponent implements OnInit {
+
+ public readonly testObjectValue$: Observable;
+
+ constructor(state: TransferState, database: Database, @Inject(PLATFORM_ID) platformId: object) {
+ if (isPlatformServer(platformId)) {
+ this.testObjectValue$ = EMPTY;
+ } else {
+ const doc = ref(database, 'test');
+ const key = makeStateKey(doc.ref.toString());
+ const existing = state.get(key, undefined);
+ this.testObjectValue$ = objectVal(doc).pipe(
+ traceUntilFirst('database'),
+ existing ? startWith(existing) : tap(it => state.set(key, it))
+ );
+ }
+ }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/sample/src/app/firestore/firestore.component.spec.ts b/sample/src/app/firestore/firestore.component.spec.ts
new file mode 100644
index 000000000..99accc6ae
--- /dev/null
+++ b/sample/src/app/firestore/firestore.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { FirestoreComponent } from './firestore.component';
+
+describe('FirestoreComponent', () => {
+ let component: FirestoreComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ FirestoreComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(FirestoreComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/firestore/firestore.component.ts b/sample/src/app/firestore/firestore.component.ts
new file mode 100644
index 000000000..e2ff083d5
--- /dev/null
+++ b/sample/src/app/firestore/firestore.component.ts
@@ -0,0 +1,33 @@
+import { Component, OnInit } from '@angular/core';
+import { Firestore, doc, docData } from '@angular/fire/firestore';
+import { Observable } from 'rxjs';
+import { startWith, tap } from 'rxjs/operators';
+import { makeStateKey, TransferState } from '@angular/platform-browser';
+import { traceUntilFirst } from '@angular/fire/performance';
+
+@Component({
+ selector: 'app-firestore',
+ template: `
+ Firestore!
+ {{ testDocValue$ | async | json }}
+
`,
+ styles: [``]
+})
+export class FirestoreComponent implements OnInit {
+
+ public readonly testDocValue$: Observable;
+
+ constructor(state: TransferState, firestore: Firestore) {
+ const ref = doc(firestore, 'test/1');
+ const key = makeStateKey(ref.path);
+ const existing = state.get(key, undefined);
+ this.testDocValue$ = docData(ref).pipe(
+ traceUntilFirst('firestore'),
+ existing ? startWith(existing) : tap(it => state.set(key, it))
+ );
+ }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/sample/src/app/firestore/getFirestore.ts b/sample/src/app/firestore/getFirestore.ts
deleted file mode 100644
index 4c1c8b362..000000000
--- a/sample/src/app/firestore/getFirestore.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { getFirestore } from '@angular/fire/firestore';
diff --git a/sample/src/app/firestore/index.ts b/sample/src/app/firestore/index.ts
deleted file mode 100644
index e4d4b0ab5..000000000
--- a/sample/src/app/firestore/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Observable } from 'rxjs';
-import { shareReplay } from 'rxjs/operators';
-
-export const initializeFirestore$ = new Observable(sub => {
- import('./getFirestore').then(({getFirestore}) => {
- sub.next(getFirestore());
- sub.complete();
- });
-}).pipe(
- shareReplay({ refCount: false })
-);
diff --git a/sample/src/app/functions/functions.component.spec.ts b/sample/src/app/functions/functions.component.spec.ts
new file mode 100644
index 000000000..6d457fc9a
--- /dev/null
+++ b/sample/src/app/functions/functions.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { FunctionsComponent } from './functions.component';
+
+describe('FunctionsComponent', () => {
+ let component: FunctionsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ FunctionsComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(FunctionsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/functions/functions.component.ts b/sample/src/app/functions/functions.component.ts
new file mode 100644
index 000000000..172e160fd
--- /dev/null
+++ b/sample/src/app/functions/functions.component.ts
@@ -0,0 +1,30 @@
+import { Component, OnInit } from '@angular/core';
+import { Functions, httpsCallableData } from '@angular/fire/functions';
+import { EMPTY, Observable } from 'rxjs';
+
+@Component({
+ selector: 'app-functions',
+ template: `
+
+ Functions!
+ {{ response$ | async | json }}
+
+
+ `,
+ styles: []
+})
+export class FunctionsComponent implements OnInit {
+
+ response$: Observable;
+
+ constructor(public readonly functions: Functions) {
+ this.response$ = EMPTY;
+ }
+
+ ngOnInit(): void {}
+
+ request() {
+ this.response$ = httpsCallableData(this.functions, 'yada', { timeout: 3_000 })({});
+ }
+
+}
diff --git a/sample/src/app/home/home.component.ts b/sample/src/app/home/home.component.ts
new file mode 100644
index 000000000..94ab646c1
--- /dev/null
+++ b/sample/src/app/home/home.component.ts
@@ -0,0 +1,23 @@
+import { Component } from '@angular/core';
+import { FirebaseApp } from '@angular/fire/app';
+
+@Component({
+ selector: 'app-home',
+ template: `
+ Hello world!
+ {{ firebaseApp.name }}
+
+
+
+
+
+
+
+ `,
+ styles: [``]
+})
+export class HomeComponent {
+ constructor(public readonly firebaseApp: FirebaseApp) {
+ console.log(firebaseApp);
+ }
+}
diff --git a/sample/src/app/messaging/messaging.component.spec.ts b/sample/src/app/messaging/messaging.component.spec.ts
new file mode 100644
index 000000000..3a8aa3ccd
--- /dev/null
+++ b/sample/src/app/messaging/messaging.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { MessagingComponent } from './messaging.component';
+
+describe('MessagingComponent', () => {
+ let component: MessagingComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ MessagingComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(MessagingComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/messaging/messaging.component.ts b/sample/src/app/messaging/messaging.component.ts
new file mode 100644
index 000000000..9e89780a9
--- /dev/null
+++ b/sample/src/app/messaging/messaging.component.ts
@@ -0,0 +1,45 @@
+import { Component, OnInit, Optional } from '@angular/core';
+import { Messaging, getToken, onMessage } from '@angular/fire/messaging';
+import { EMPTY, from, Observable } from 'rxjs';
+import { environment } from 'src/environments/environment';
+
+@Component({
+ selector: 'app-messaging',
+ template: `
+
+ Messaging!
+ {{ token$ | async | json }}
+ {{ message$ | async | json }}
+
+
+ `,
+ styles: []
+})
+export class MessagingComponent implements OnInit {
+
+ token$: Observable = EMPTY;
+ message$: Observable = EMPTY;
+ showRequest = false;
+
+ constructor(@Optional() private messaging: Messaging) {
+ if (messaging) {
+ this.token$ = from(
+ navigator.serviceWorker.register('firebase-messaging-sw.js', { type: 'module', scope: '__' }).
+ then(serviceWorkerRegistration =>
+ getToken(messaging, {
+ serviceWorkerRegistration,
+ vapidKey: environment.vapidKey,
+ })
+ ));
+ this.message$ = new Observable(sub => onMessage(messaging, it => sub.next(it)));
+ }
+ }
+
+ ngOnInit(): void {
+ }
+
+ request() {
+ Notification.requestPermission();
+ }
+
+}
diff --git a/sample/src/app/remote-config/remote-config.component.spec.ts b/sample/src/app/remote-config/remote-config.component.spec.ts
new file mode 100644
index 000000000..cdcba329b
--- /dev/null
+++ b/sample/src/app/remote-config/remote-config.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { RemoteConfigComponent } from './remote-config.component';
+
+describe('RemoteConfigComponent', () => {
+ let component: RemoteConfigComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ RemoteConfigComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(RemoteConfigComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/remote-config/remote-config.component.ts b/sample/src/app/remote-config/remote-config.component.ts
new file mode 100644
index 000000000..8c8bdbac9
--- /dev/null
+++ b/sample/src/app/remote-config/remote-config.component.ts
@@ -0,0 +1,27 @@
+import { Component, OnInit } from '@angular/core';
+import { RemoteConfig, getAllChanges } from '@angular/fire/remote-config';
+import { traceUntilFirst } from '@angular/fire/performance';
+import { Observable } from 'rxjs';
+
+@Component({
+ selector: 'app-remote-config',
+ template: `
+
+ Remote Config!
+ {{ change$ | async | json }}
+
+ `,
+ styles: []
+})
+export class RemoteConfigComponent implements OnInit {
+
+ readonly change$: Observable;
+
+ constructor(public readonly remoteConfig: RemoteConfig) {
+ this.change$ = getAllChanges(this.remoteConfig).pipe(traceUntilFirst('remote-config'));
+ }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/sample/src/app/storage/storage.component.spec.ts b/sample/src/app/storage/storage.component.spec.ts
new file mode 100644
index 000000000..d48eb7c7e
--- /dev/null
+++ b/sample/src/app/storage/storage.component.spec.ts
@@ -0,0 +1,25 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { StorageComponent } from './storage.component';
+
+describe('StorageComponent', () => {
+ let component: StorageComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [ StorageComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(StorageComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/storage/storage.component.ts b/sample/src/app/storage/storage.component.ts
new file mode 100644
index 000000000..8804a4b5b
--- /dev/null
+++ b/sample/src/app/storage/storage.component.ts
@@ -0,0 +1,39 @@
+import { Component, OnInit } from '@angular/core';
+import { Storage, ref, getDownloadURL } from '@angular/fire/storage';
+import { from, Observable, of } from 'rxjs';
+import { startWith, tap } from 'rxjs/operators';
+import { makeStateKey, TransferState } from '@angular/platform-browser';
+import { traceUntilFirst } from '@angular/fire/performance';
+
+const TRANSPARENT_PNG
+ = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
+
+@Component({
+ selector: 'app-storage',
+ template: `
+
+ Storage!
+
+
+ `,
+ styles: []
+})
+export class StorageComponent implements OnInit {
+
+ public readonly downloadUrl$: Observable;
+
+ constructor(storage: Storage, state: TransferState) {
+ const icon = ref(storage, 'google-g.png');
+ const key = makeStateKey('google-icon-url');
+ const existing = state.get(key, undefined);
+ this.downloadUrl$ = existing ? of(existing) : from(getDownloadURL(icon)).pipe(
+ traceUntilFirst('storage'),
+ tap(it => state.set(key, it)),
+ startWith(TRANSPARENT_PNG)
+ );
+ }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/sample/src/app/upboats/upboats.component.spec.ts b/sample/src/app/upboats/upboats.component.spec.ts
new file mode 100644
index 000000000..d18bb2c99
--- /dev/null
+++ b/sample/src/app/upboats/upboats.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { UpboatsComponent } from './upboats.component';
+
+describe('UpboatsComponent', () => {
+ let component: UpboatsComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ UpboatsComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(UpboatsComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/sample/src/app/upboats/upboats.component.ts b/sample/src/app/upboats/upboats.component.ts
new file mode 100644
index 000000000..554533490
--- /dev/null
+++ b/sample/src/app/upboats/upboats.component.ts
@@ -0,0 +1,77 @@
+import { Component, OnInit } from '@angular/core';
+import { Observable } from 'rxjs';
+import { map, startWith, tap } from 'rxjs/operators';
+import {
+ Firestore, collection, query, orderBy, fromRef,
+ doc, updateDoc, addDoc, increment, serverTimestamp
+} from '@angular/fire/firestore';
+import { makeStateKey, TransferState } from '@angular/platform-browser';
+import { traceUntilFirst } from '@angular/fire/performance';
+
+type Animal = { name: string, upboats: number, id: string, hasPendingWrites: boolean };
+
+@Component({
+ selector: 'app-upboats',
+ template: `
+
+ -
+ {{ animal.name }}
+
+ {{ animal.upboats }}
+
+ 🕒
+
+
+
+ `,
+ styles: []
+})
+export class UpboatsComponent implements OnInit {
+
+ public readonly animals: Observable;
+
+ constructor(private firestore: Firestore, state: TransferState) {
+ const animalsCollection = collection(firestore, 'animals');
+ const animalsQuery = query(animalsCollection, orderBy('upboats', 'desc'), orderBy('updatedAt', 'desc'));
+ const key = makeStateKey(animalsCollection.path);
+ const existing = state.get(key, undefined);
+ this.animals = fromRef(animalsQuery).pipe(
+ traceUntilFirst('animals'),
+ map(it => it.docs.map(change => ({
+ ...change.data(),
+ id: change.id,
+ hasPendingWrites: change.metadata.hasPendingWrites
+ } as Animal))),
+ existing ? startWith(existing) : tap(it => state.set(key, it))
+ );
+ }
+
+ ngOnInit(): void {
+ }
+
+ async upboat(id: string) {
+ // TODO add rule
+ return await updateDoc(doc(this.firestore, `animals/${id}`), {
+ upboats: increment(1),
+ updatedAt: serverTimestamp(),
+ });
+ }
+
+ async downboat(id: string) {
+ // TODO add rule
+ return await updateDoc(doc(this.firestore, `animals/${id}`), {
+ upboats: increment(-1),
+ updatedAt: serverTimestamp(),
+ });
+ }
+
+ async newAnimal() {
+ // TODO add rule
+ return await addDoc(collection(this.firestore, 'animals'), {
+ name: prompt('Can haz name?'),
+ upboats: 1,
+ updatedAt: serverTimestamp(),
+ });
+ }
+
+}
diff --git a/sample/src/firebase-messaging-sw.js b/sample/src/firebase-messaging-sw.js
index 3da79361f..5d3c59175 100644
--- a/sample/src/firebase-messaging-sw.js
+++ b/sample/src/firebase-messaging-sw.js
@@ -1,5 +1,5 @@
-import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.0.0-2021724205917/firebase-app.js';
-import { getMessaging, onBackgroundMessage, isSupported } from 'https://www.gstatic.com/firebasejs/9.0.0-2021724205917/firebase-messaging-sw.js';
+import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.0.1/firebase-app.js';
+import { getMessaging, onBackgroundMessage, isSupported } from 'https://www.gstatic.com/firebasejs/9.0.1/firebase-messaging-sw.js';
const app = initializeApp({
apiKey: 'AIzaSyA7CNE9aHbcSEbt9y03QReJ-Xr0nwKg7Yg',
diff --git a/sample/yarn.lock b/sample/yarn.lock
index db17923f6..8fc7dbe89 100644
--- a/sample/yarn.lock
+++ b/sample/yarn.lock
@@ -249,7 +249,7 @@
tslib "^2.2.0"
"@angular/fire@../dist/packages-dist":
- version "7.0.0"
+ version "7.0.1"
dependencies:
tslib "^2.0.0"
@@ -1396,10 +1396,10 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d"
integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==
-"@firebase/analytics-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.0.tgz#48f0c3b5557541dd0f1a463ffd1d807454ae1b8e"
- integrity sha512-oaf1FEF7cKci5tO7f52dH63/ZwkBqbdSLLpgo6kyoYoYDuY+on4yAc1CIHh3sNj/L8T4Ni81IQvVs9lE/9oOpg==
+"@firebase/analytics-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.1.tgz#77a3e5d28f15df303c3836db4740a43955fcfcac"
+ integrity sha512-pMTrA8cxMXFRv7bwZEXXz0NCepnyH2Jay/32RZ7xAufij2VJhF5S1BtfCO0wuri3FB94rlM8SmSEbwxxHcAtVg==
dependencies:
"@firebase/analytics" "0.7.0"
"@firebase/analytics-types" "0.7.0"
@@ -1423,10 +1423,10 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/app-check-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.0.tgz#5bf12e5cd82f76cac2eabe51345d1fed9664ed48"
- integrity sha512-T1M2d1oroaHUa448fgx3BdfWg4WXP64yybIWxvmVBuh7YnyMuegJK1sS9zipKBKLkstcQK8vivXYh3+/AnbGFw==
+"@firebase/app-check-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.1.tgz#84c7ef29bb683fd3dea66a66f82b799474c904ee"
+ integrity sha512-XTV5Ns0Lpwn5GgXV5T0soOkoOGACaw9xiNvAXcISQYFBIse0k7fKo8V5J9VUS1ppzGpyTRCg0m9efz4CNrwPyQ==
dependencies:
"@firebase/app-check" "0.4.0"
"@firebase/component" "0.5.6"
@@ -1449,10 +1449,10 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/app-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.0.tgz#101070141198304a50ec546b7626870c7759166b"
- integrity sha512-jnAeFM1ihY5klqg2dvdA4EOk7co8ffSHUj/efqaSwTrMkKTcG/WZKF9WAuXdl+5jEu1BhsGGHveWzGliTFH5Hg==
+"@firebase/app-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.1.tgz#47d5f5ac350f59ea4b721f17e01b1e46a1a3154a"
+ integrity sha512-AoUO7PnQlDPyMAvAE972kBhrwXRZRLGdHM8obyIeTzPNqIiEoULD4Rdq5TBB4UmV2HYAlYdrS+dk4nuWx67w6A==
dependencies:
"@firebase/app" "0.7.0"
"@firebase/component" "0.5.6"
@@ -1475,12 +1475,12 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/auth-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.0.tgz#e5dc6bb6ac89ea21f85c4153eb1cf8a7d69deaa8"
- integrity sha512-OfAt3c5ham07xvmYyJp02v8mUa+HaSEwilvgD2M1JaWqLAtqH66bdBhLBE9N0pq8xtRdXZIF1vSd20a0ulQfQg==
+"@firebase/auth-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.1.tgz#9baf7b50395ea29a8c3bd20d1c1a3d3cf9004534"
+ integrity sha512-wEGEV+SluDt/SRyLJRG+s32EDHsyahlkp7kXTcRLUs5KGHmK0T0wNrWxdN5eeR4wR/tlrasPNveUeQDyoJVQzw==
dependencies:
- "@firebase/auth" "0.17.0"
+ "@firebase/auth" "0.17.1"
"@firebase/auth-types" "0.11.0"
"@firebase/component" "0.5.6"
"@firebase/util" "1.3.0"
@@ -1498,10 +1498,10 @@
resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.11.0.tgz#b9c73c60ca07945b3bbd7a097633e5f78fa9e886"
integrity sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==
-"@firebase/auth@0.17.0":
- version "0.17.0"
- resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.17.0.tgz#e1395779293e1869fabefd07e078242c773b5fcb"
- integrity sha512-4zOGTLGzMjBX96KEyBNYpjOD87c2efCZvUjaJ53QslleW9Xp8kSsSHLRhr8hOkcRXO17CmBKSRx/LnG2vTZWQQ==
+"@firebase/auth@0.17.1":
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.17.1.tgz#4c3dd24ca5a9c47c5e97a9fd1bd4129c46154764"
+ integrity sha512-+YQM0svb10Q1LwoTj+/unrdY/F/C89bgsjlanY14k2124fiOYVZv0M19t5i7nZx8VnsrgzkFaDfKahdcDxjdpA==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/logger" "0.2.6"
@@ -1550,13 +1550,13 @@
faye-websocket "0.11.3"
tslib "^2.1.0"
-"@firebase/firestore-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.0.tgz#9faa1c10a76d67f812dd48469693e8f6bafca3ab"
- integrity sha512-25r1jGpnnx7vXSPVLmHNkuz+EGpZDU5Luro5/MFCMmoV4a+Rmg2n9FRlxRyPn4XOCkc5nrBpT6ESAKAPSNHcpw==
+"@firebase/firestore-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.1.tgz#a990cd4b0aef5e0a18972de71d18c35065099f19"
+ integrity sha512-Ag95WVTSh5Q+GK3egd9HBvXerO/lrRulTO67ryYp4EPyoI/ZmnIoMhYgnOXvb1jCH0Ae01XoSxgU2M2SRvph/Q==
dependencies:
"@firebase/component" "0.5.6"
- "@firebase/firestore" "3.0.0"
+ "@firebase/firestore" "3.0.1"
"@firebase/firestore-types" "2.5.0"
"@firebase/util" "1.3.0"
tslib "^2.1.0"
@@ -1566,10 +1566,10 @@
resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.5.0.tgz#16fca40b6980fdb000de86042d7a96635f2bcdd7"
integrity sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==
-"@firebase/firestore@3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.0.0.tgz#f7b8cc3d8d28b85a901fd66df13f4d61dcc33190"
- integrity sha512-rbs5EbU/01f7NKHDtedBowpBlqnkVnQlpIuSX5wwGMiPgH8f9pMhh59JMk0cTaSqsJXsq3KvafWAD9SqWIqe2w==
+"@firebase/firestore@3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.0.1.tgz#0152c6a767e116382fb28a0e62b6ea7fa331cc20"
+ integrity sha512-HDnmweq9GOrk4AtCyQ50FBj/cRowb7IXeTGOx6/MSGYCodKv+9axviKqKPYlWH7cbyrw2Jf3GJTUdkVghMhn+w==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/logger" "0.2.6"
@@ -1580,10 +1580,10 @@
node-fetch "2.6.1"
tslib "^2.1.0"
-"@firebase/functions-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.0.tgz#53e2b3b9590b04628e9537806196d91deb3e6f3f"
- integrity sha512-uNwHdGYqgIXzF7aTZBeUe00K/sadRg5EeSDuJ6VNo3Gh3ZceX4eRnL5p7l2bEJBh8hBl0brb82+TRYjGHtjtFQ==
+"@firebase/functions-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.1.tgz#b1afb89750ec4d1b9a1a9a188f20c30b75aa4a93"
+ integrity sha512-HELDScvKEP/tM6eW52u+5ilqweCB/cB8ONiQ0aHw2Hjdm20DQ/VsII2JEtbhnFQfuODdugvWLkWV0RPWTFwYqA==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/functions" "0.7.0"
@@ -1716,13 +1716,13 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/storage-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.0.tgz#b8080e3250b19ad6d98a5ade65f1a03aab73f2b8"
- integrity sha512-DJstR2vidnyNSRp14LQhd9QO0PxhMm/xsXrPQ2IEmQ7EWDT4rxGd+pkqXTG6IO+k9ZKMc0BnWIYwlMqkGEJoDg==
+"@firebase/storage-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.1.tgz#9192cd26595a2a09ebef1bbd3da1b63f4716da37"
+ integrity sha512-W2ke6KcnrEY1zvlEZ8GOVt8wgUbIhW3ZCBUYMdpsLKB/uFmn/zgdiba+ojwerqlOH5zUe4CSULqBE1hXDm1pMw==
dependencies:
"@firebase/component" "0.5.6"
- "@firebase/storage" "0.8.0"
+ "@firebase/storage" "0.8.1"
"@firebase/storage-types" "0.6.0"
"@firebase/util" "1.3.0"
tslib "^2.1.0"
@@ -1732,10 +1732,10 @@
resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.6.0.tgz#0b1af64a2965af46fca138e5b70700e9b7e6312a"
integrity sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==
-"@firebase/storage@0.8.0":
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.0.tgz#2766a18a8a9684082d745ab1a93a3c88061169b1"
- integrity sha512-D0HH+y3DLH0+8eOt6h19RffFMpdzPNr7Yv7XpeeM3+VLE4TbQnDie/OAQWOuWLrYoW7MsPQnLkx+zDb3DxOXxw==
+"@firebase/storage@0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.1.tgz#38959b5011df90de4041dbe7277093e010169eba"
+ integrity sha512-kq6biRi86JUNU3ZQc7UrUYJ+QmPmayER68sXtHmn8Kxw7p/V5MchTPVpE8iFAN5a5PhGTPKSD4cuNyUPU9C0Fg==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/util" "1.3.0"
@@ -1798,14 +1798,7 @@
lodash.snakecase "^4.1.1"
p-defer "^3.0.0"
-"@grpc/grpc-js@^1.3.2":
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.6.tgz#6e2d17610c2c8df0f6ceab0e1968f563df74b173"
- integrity sha512-v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg==
- dependencies:
- "@types/node" ">=12.12.47"
-
-"@grpc/grpc-js@~1.3.0":
+"@grpc/grpc-js@^1.3.2", "@grpc/grpc-js@~1.3.0":
version "1.3.7"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.7.tgz#58b687aff93b743aafde237fd2ee9a3259d7f2d8"
integrity sha512-CKQVuwuSPh40tgOkR7c0ZisxYRiN05PcKPW72mQL5y++qd7CwBRoaJZvU5xfXnCJDFBmS3qZGQ71Frx6Ofo2XA==
@@ -2237,11 +2230,16 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
-"@types/node@*", "@types/node@>=10.0.0", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
+"@types/node@*", "@types/node@>=10.0.0":
version "16.4.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.3.tgz#c01c1a215721f6dec71b47d88b4687463601ba48"
integrity sha512-GKM4FLMkWDc0sfx7tXqPWkM6NBow1kge0fgQh0bOnlqo4iT1kvTvMEKE0c1RtUGnbLlGRXiAA8SumE//90uKAg==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "16.7.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.8.tgz#2448be5f24fe6b77114632b6350fcd219334651e"
+ integrity sha512-8upnoQU0OPzbIkm+ZMM0zCeFCkw2s3mS0IWdx0+AAaWqm4fkBb0UJp8Edl7FVKRamYbpJC/aVsHpKWBIbiC7Zg==
+
"@types/node@^12.11.1":
version "12.20.17"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.17.tgz#ffd44c2801fc527a6fe6e86bc9b900261df1c87e"
@@ -5381,6 +5379,14 @@ figures@^3.0.0, figures@^3.2.0:
dependencies:
escape-string-regexp "^1.0.5"
+file-loader@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
file-uri-to-path@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
@@ -5533,25 +5539,25 @@ firebase-tools@^9.0.0:
ws "^7.2.3"
firebase@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.0.0.tgz#00bfa03a3eb99bde43a472a8861aa808068153bb"
- integrity sha512-atgnuvELhU9D5w9moChnyCb6GRbOCqk54/kHN0J4kdLJBncpcb2culIJ7nlSHILMcW9MNMiNKDJ07RwXVyqFFA==
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.0.1.tgz#6bc5f9d7bdcd864ef98f2219fa0cd240f2e48b3c"
+ integrity sha512-RMpbXsVlxqMX+s/gYudnUZeSZXPiLCJMdaxbZ0WRiMjLuJc6ZkbpRy7yz7rZQpL0wRD6gN4K5C+JaKEQtN3jAQ==
dependencies:
"@firebase/analytics" "0.7.0"
- "@firebase/analytics-compat" "0.1.0"
+ "@firebase/analytics-compat" "0.1.1"
"@firebase/app" "0.7.0"
"@firebase/app-check" "0.4.0"
- "@firebase/app-check-compat" "0.1.0"
- "@firebase/app-compat" "0.1.0"
+ "@firebase/app-check-compat" "0.1.1"
+ "@firebase/app-compat" "0.1.1"
"@firebase/app-types" "0.7.0"
- "@firebase/auth" "0.17.0"
- "@firebase/auth-compat" "0.1.0"
+ "@firebase/auth" "0.17.1"
+ "@firebase/auth-compat" "0.1.1"
"@firebase/database" "0.12.0"
"@firebase/database-compat" "0.1.0"
- "@firebase/firestore" "3.0.0"
- "@firebase/firestore-compat" "0.1.0"
+ "@firebase/firestore" "3.0.1"
+ "@firebase/firestore-compat" "0.1.1"
"@firebase/functions" "0.7.0"
- "@firebase/functions-compat" "0.1.0"
+ "@firebase/functions-compat" "0.1.1"
"@firebase/installations" "0.5.0"
"@firebase/messaging" "0.9.0"
"@firebase/messaging-compat" "0.1.0"
@@ -5560,8 +5566,8 @@ firebase@^9.0.0:
"@firebase/polyfill" "0.3.36"
"@firebase/remote-config" "0.2.0"
"@firebase/remote-config-compat" "0.1.0"
- "@firebase/storage" "0.8.0"
- "@firebase/storage-compat" "0.1.0"
+ "@firebase/storage" "0.8.1"
+ "@firebase/storage-compat" "0.1.1"
"@firebase/util" "1.3.0"
flat-arguments@^1.0.0:
@@ -5877,7 +5883,7 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@7.1.7, glob@^7.1.7:
+glob@7.1.7, glob@^7.1.3, glob@^7.1.7:
version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
@@ -5889,7 +5895,7 @@ glob@7.1.7, glob@^7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -6258,9 +6264,9 @@ http-errors@~1.6.2:
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77"
- integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
+ integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1:
version "4.0.1"
@@ -7308,9 +7314,9 @@ jsprim@^1.2.2:
verror "1.10.0"
jszip@^3.5.0, jszip@^3.6.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.0.tgz#9b8b995a4e7c9024653ce743e902076a82fdf4e6"
- integrity sha512-Y2OlFIzrDOPWUnpU0LORIcDn2xN7rC9yKffFM/7pGhQuhO+SUhfm2trkJ/S5amjFvem0Y+1EALz/MEPkvHXVNw==
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9"
+ integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==
dependencies:
lie "~3.3.0"
pako "~1.0.2"
@@ -12416,10 +12422,10 @@ write-file-atomic@^3.0.0:
signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5"
-ws@>=7.4.6, ws@^7.3.1, ws@^7.4.5, ws@^7.4.6:
- version "7.5.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
- integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
+ws@>=7.4.6:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.1.tgz#bdd92b3c56fdb47d2379b5ae534281922cc5bd12"
+ integrity sha512-XkgWpJU3sHU7gX8f13NqTn6KQ85bd1WU7noBHTT8fSohx7OS1TPY8k+cyRPCzFkia7C4mM229yeHr1qK9sM4JQ==
ws@^6.2.1:
version "6.2.2"
@@ -12433,6 +12439,16 @@ ws@^7.2.3:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7"
integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==
+ws@^7.3.1:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.4.tgz#56bfa20b167427e138a7795de68d134fe92e21f9"
+ integrity sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==
+
+ws@^7.4.5, ws@^7.4.6:
+ version "7.5.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
+ integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
+
ws@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.0.tgz#0b738cd484bfc9303421914b11bb4011e07615bb"
diff --git a/src/compat/firestore/firestore.ts b/src/compat/firestore/firestore.ts
index 382334bd8..7364330b4 100644
--- a/src/compat/firestore/firestore.ts
+++ b/src/compat/firestore/firestore.ts
@@ -155,7 +155,7 @@ export class AngularFirestore {
) {
const app = ɵfirebaseAppFactory(options, zone, name);
const useEmulator: UseEmulatorArguments | null = _useEmulator;
-
+
if (auth) {
ɵauthFactory(app, zone, useAuthEmulator, tenantId, languageCode, useDeviceLanguage, authSettings, persistence);
}
diff --git a/tools/build.ts b/tools/build.ts
index 4f85864d2..b3c4633de 100644
--- a/tools/build.ts
+++ b/tools/build.ts
@@ -5,6 +5,7 @@ import { file as gzipSizeFile } from 'gzip-size';
import { dirname, join } from 'path';
import { keys as tsKeys } from 'ts-transformer-keys';
import firebase from 'firebase/compat/app';
+import * as glob from 'glob';
// TODO infer these from the package.json
const MODULES = [
@@ -41,12 +42,13 @@ function zoneWrapExports() {
});
const zoneWrapped = toBeExported.filter(([, , zoneWrap]) => zoneWrap);
const rawExport = toBeExported.filter(([, , zoneWrap]) => !zoneWrap);
- await writeFile(`./src/${module}/${name}.ts`, `// DO NOT MODIFY, this file is autogenerated by tools/build.ts${zoneWrapped.length > 0 ? `
-import { ɵzoneWrap } from '@angular/fire';
+ await writeFile(`./src/${module}/${name}.ts`, `// DO NOT MODIFY, this file is autogenerated by tools/build.ts
+${path.startsWith('firebase/') ? `export * from '${path}';\n` : ''}${
+zoneWrapped.length > 0 ? `import { ɵzoneWrap } from '@angular/fire';
import {
${zoneWrapped.map(([importName]) => `${importName} as _${importName}`).join(',\n ')}
} from '${path}';
-` : ''}${rawExport.length > 0 ? `
+` : ''}${!path.startsWith('firebase/') && rawExport.length > 0 ? `
export {
${rawExport.map(([importName, exportName]) => `${importName}${exportName === importName ? '' : `as ${exportName}`}`).join(',\n ')}
} from '${path}';
@@ -103,6 +105,19 @@ ${zoneWrapped.map(([importName, exportName]) => `export const ${exportName} = ɵ
]);
}
+function webpackFirestoreProtos() {
+ return new Promise((resolve, reject) => {
+ glob('./node_modules/@firebase/firestore/dist/src/protos/**/*.proto', {}, async (err, files) => {
+ if (err) { reject(err); }
+ const fileLoader = files.map(path =>
+ `require('file-loader?name=${path.replace('./node_modules/@firebase/firestore/dist/', '')}!${path.replace('./node_modules/', '../../')}');`
+ ).join('\n');
+ await writeFile('./dist/packages-dist/firestore-protos.js', fileLoader);
+ resolve();
+ });
+ });
+}
+
function proxyPolyfillCompat() {
const defaultObject = {
'compat/analytics': tsKeys(),
@@ -206,6 +221,7 @@ async function buildLibrary() {
compileSchematics(),
replacePackageCoreVersion(),
fixImportForLazyModules(),
+ webpackFirestoreProtos(),
]);
}
diff --git a/yarn.lock b/yarn.lock
index fa5085679..41a239974 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1415,10 +1415,10 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz#90420f9f9c6d3987f176a19a7d8e764271a2f55d"
integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==
-"@firebase/analytics-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.0.tgz#48f0c3b5557541dd0f1a463ffd1d807454ae1b8e"
- integrity sha512-oaf1FEF7cKci5tO7f52dH63/ZwkBqbdSLLpgo6kyoYoYDuY+on4yAc1CIHh3sNj/L8T4Ni81IQvVs9lE/9oOpg==
+"@firebase/analytics-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.1.1.tgz#77a3e5d28f15df303c3836db4740a43955fcfcac"
+ integrity sha512-pMTrA8cxMXFRv7bwZEXXz0NCepnyH2Jay/32RZ7xAufij2VJhF5S1BtfCO0wuri3FB94rlM8SmSEbwxxHcAtVg==
dependencies:
"@firebase/analytics" "0.7.0"
"@firebase/analytics-types" "0.7.0"
@@ -1442,10 +1442,10 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/app-check-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.0.tgz#5bf12e5cd82f76cac2eabe51345d1fed9664ed48"
- integrity sha512-T1M2d1oroaHUa448fgx3BdfWg4WXP64yybIWxvmVBuh7YnyMuegJK1sS9zipKBKLkstcQK8vivXYh3+/AnbGFw==
+"@firebase/app-check-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.1.1.tgz#84c7ef29bb683fd3dea66a66f82b799474c904ee"
+ integrity sha512-XTV5Ns0Lpwn5GgXV5T0soOkoOGACaw9xiNvAXcISQYFBIse0k7fKo8V5J9VUS1ppzGpyTRCg0m9efz4CNrwPyQ==
dependencies:
"@firebase/app-check" "0.4.0"
"@firebase/component" "0.5.6"
@@ -1468,10 +1468,10 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/app-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.0.tgz#101070141198304a50ec546b7626870c7759166b"
- integrity sha512-jnAeFM1ihY5klqg2dvdA4EOk7co8ffSHUj/efqaSwTrMkKTcG/WZKF9WAuXdl+5jEu1BhsGGHveWzGliTFH5Hg==
+"@firebase/app-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.1.1.tgz#47d5f5ac350f59ea4b721f17e01b1e46a1a3154a"
+ integrity sha512-AoUO7PnQlDPyMAvAE972kBhrwXRZRLGdHM8obyIeTzPNqIiEoULD4Rdq5TBB4UmV2HYAlYdrS+dk4nuWx67w6A==
dependencies:
"@firebase/app" "0.7.0"
"@firebase/component" "0.5.6"
@@ -1499,12 +1499,12 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/auth-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.0.tgz#e5dc6bb6ac89ea21f85c4153eb1cf8a7d69deaa8"
- integrity sha512-OfAt3c5ham07xvmYyJp02v8mUa+HaSEwilvgD2M1JaWqLAtqH66bdBhLBE9N0pq8xtRdXZIF1vSd20a0ulQfQg==
+"@firebase/auth-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.1.1.tgz#9baf7b50395ea29a8c3bd20d1c1a3d3cf9004534"
+ integrity sha512-wEGEV+SluDt/SRyLJRG+s32EDHsyahlkp7kXTcRLUs5KGHmK0T0wNrWxdN5eeR4wR/tlrasPNveUeQDyoJVQzw==
dependencies:
- "@firebase/auth" "0.17.0"
+ "@firebase/auth" "0.17.1"
"@firebase/auth-types" "0.11.0"
"@firebase/component" "0.5.6"
"@firebase/util" "1.3.0"
@@ -1527,10 +1527,10 @@
resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.11.0.tgz#b9c73c60ca07945b3bbd7a097633e5f78fa9e886"
integrity sha512-q7Bt6cx+ySj9elQHTsKulwk3+qDezhzRBFC9zlQ1BjgMueUOnGMcvqmU0zuKlQ4RhLSH7MNAdBV2znVaoN3Vxw==
-"@firebase/auth@0.17.0":
- version "0.17.0"
- resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.17.0.tgz#e1395779293e1869fabefd07e078242c773b5fcb"
- integrity sha512-4zOGTLGzMjBX96KEyBNYpjOD87c2efCZvUjaJ53QslleW9Xp8kSsSHLRhr8hOkcRXO17CmBKSRx/LnG2vTZWQQ==
+"@firebase/auth@0.17.1":
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.17.1.tgz#4c3dd24ca5a9c47c5e97a9fd1bd4129c46154764"
+ integrity sha512-+YQM0svb10Q1LwoTj+/unrdY/F/C89bgsjlanY14k2124fiOYVZv0M19t5i7nZx8VnsrgzkFaDfKahdcDxjdpA==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/logger" "0.2.6"
@@ -1607,13 +1607,13 @@
faye-websocket "0.11.3"
tslib "^1.11.1"
-"@firebase/firestore-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.0.tgz#9faa1c10a76d67f812dd48469693e8f6bafca3ab"
- integrity sha512-25r1jGpnnx7vXSPVLmHNkuz+EGpZDU5Luro5/MFCMmoV4a+Rmg2n9FRlxRyPn4XOCkc5nrBpT6ESAKAPSNHcpw==
+"@firebase/firestore-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.1.1.tgz#a990cd4b0aef5e0a18972de71d18c35065099f19"
+ integrity sha512-Ag95WVTSh5Q+GK3egd9HBvXerO/lrRulTO67ryYp4EPyoI/ZmnIoMhYgnOXvb1jCH0Ae01XoSxgU2M2SRvph/Q==
dependencies:
"@firebase/component" "0.5.6"
- "@firebase/firestore" "3.0.0"
+ "@firebase/firestore" "3.0.1"
"@firebase/firestore-types" "2.5.0"
"@firebase/util" "1.3.0"
tslib "^2.1.0"
@@ -1623,10 +1623,10 @@
resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.5.0.tgz#16fca40b6980fdb000de86042d7a96635f2bcdd7"
integrity sha512-I6c2m1zUhZ5SH0cWPmINabDyH5w0PPFHk2UHsjBpKdZllzJZ2TwTkXbDtpHUZNmnc/zAa0WNMNMvcvbb/xJLKA==
-"@firebase/firestore@3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.0.0.tgz#f7b8cc3d8d28b85a901fd66df13f4d61dcc33190"
- integrity sha512-rbs5EbU/01f7NKHDtedBowpBlqnkVnQlpIuSX5wwGMiPgH8f9pMhh59JMk0cTaSqsJXsq3KvafWAD9SqWIqe2w==
+"@firebase/firestore@3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.0.1.tgz#0152c6a767e116382fb28a0e62b6ea7fa331cc20"
+ integrity sha512-HDnmweq9GOrk4AtCyQ50FBj/cRowb7IXeTGOx6/MSGYCodKv+9axviKqKPYlWH7cbyrw2Jf3GJTUdkVghMhn+w==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/logger" "0.2.6"
@@ -1637,10 +1637,10 @@
node-fetch "2.6.1"
tslib "^2.1.0"
-"@firebase/functions-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.0.tgz#53e2b3b9590b04628e9537806196d91deb3e6f3f"
- integrity sha512-uNwHdGYqgIXzF7aTZBeUe00K/sadRg5EeSDuJ6VNo3Gh3ZceX4eRnL5p7l2bEJBh8hBl0brb82+TRYjGHtjtFQ==
+"@firebase/functions-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.1.1.tgz#b1afb89750ec4d1b9a1a9a188f20c30b75aa4a93"
+ integrity sha512-HELDScvKEP/tM6eW52u+5ilqweCB/cB8ONiQ0aHw2Hjdm20DQ/VsII2JEtbhnFQfuODdugvWLkWV0RPWTFwYqA==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/functions" "0.7.0"
@@ -1773,13 +1773,13 @@
"@firebase/util" "1.3.0"
tslib "^2.1.0"
-"@firebase/storage-compat@0.1.0":
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.0.tgz#b8080e3250b19ad6d98a5ade65f1a03aab73f2b8"
- integrity sha512-DJstR2vidnyNSRp14LQhd9QO0PxhMm/xsXrPQ2IEmQ7EWDT4rxGd+pkqXTG6IO+k9ZKMc0BnWIYwlMqkGEJoDg==
+"@firebase/storage-compat@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.1.1.tgz#9192cd26595a2a09ebef1bbd3da1b63f4716da37"
+ integrity sha512-W2ke6KcnrEY1zvlEZ8GOVt8wgUbIhW3ZCBUYMdpsLKB/uFmn/zgdiba+ojwerqlOH5zUe4CSULqBE1hXDm1pMw==
dependencies:
"@firebase/component" "0.5.6"
- "@firebase/storage" "0.8.0"
+ "@firebase/storage" "0.8.1"
"@firebase/storage-types" "0.6.0"
"@firebase/util" "1.3.0"
tslib "^2.1.0"
@@ -1789,10 +1789,10 @@
resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.6.0.tgz#0b1af64a2965af46fca138e5b70700e9b7e6312a"
integrity sha512-1LpWhcCb1ftpkP/akhzjzeFxgVefs6eMD2QeKiJJUGH1qOiows2w5o0sKCUSQrvrRQS1lz3SFGvNR1Ck/gqxeA==
-"@firebase/storage@0.8.0":
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.0.tgz#2766a18a8a9684082d745ab1a93a3c88061169b1"
- integrity sha512-D0HH+y3DLH0+8eOt6h19RffFMpdzPNr7Yv7XpeeM3+VLE4TbQnDie/OAQWOuWLrYoW7MsPQnLkx+zDb3DxOXxw==
+"@firebase/storage@0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.8.1.tgz#38959b5011df90de4041dbe7277093e010169eba"
+ integrity sha512-kq6biRi86JUNU3ZQc7UrUYJ+QmPmayER68sXtHmn8Kxw7p/V5MchTPVpE8iFAN5a5PhGTPKSD4cuNyUPU9C0Fg==
dependencies:
"@firebase/component" "0.5.6"
"@firebase/util" "1.3.0"
@@ -1935,9 +1935,9 @@
xdg-basedir "^4.0.0"
"@grpc/grpc-js@^1.3.2":
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.6.tgz#6e2d17610c2c8df0f6ceab0e1968f563df74b173"
- integrity sha512-v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg==
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.3.7.tgz#58b687aff93b743aafde237fd2ee9a3259d7f2d8"
+ integrity sha512-CKQVuwuSPh40tgOkR7c0ZisxYRiN05PcKPW72mQL5y++qd7CwBRoaJZvU5xfXnCJDFBmS3qZGQ71Frx6Ofo2XA==
dependencies:
"@types/node" ">=12.12.47"
@@ -2418,7 +2418,7 @@
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
-"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
+"@types/node@*":
version "15.3.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.0.tgz#d6fed7d6bc6854306da3dea1af9f874b00783e26"
integrity sha512-8/bnjSZD86ZfpBsDlCIkNXIvm+h6wi9g7IqL+kmFkQ+Wvu3JrasgLElfiPgoo8V8vVfnEi0QVS12gbl94h9YsQ==
@@ -2428,6 +2428,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.118.tgz#8014a9b1dee0b72b4d7cd142563f1af21241c3a2"
integrity sha512-N33cKXGSqhOYaPiT4xUGsYlPPDwFtQM/6QxJxuMXA/7BcySW+lkn2yigWP7vfs4daiL/7NJNU6DMCqg5N4B+xQ==
+"@types/node@>=12.12.47", "@types/node@>=13.7.0":
+ version "16.7.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.8.tgz#2448be5f24fe6b77114632b6350fcd219334651e"
+ integrity sha512-8upnoQU0OPzbIkm+ZMM0zCeFCkw2s3mS0IWdx0+AAaWqm4fkBb0UJp8Edl7FVKRamYbpJC/aVsHpKWBIbiC7Zg==
+
"@types/node@^12.6.2 < 12.12.42":
version "12.12.41"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.41.tgz#cf48562b53ab6cf85d28dde95f1d06815af275c8"
@@ -6255,6 +6260,14 @@ figures@^3.0.0, figures@^3.2.0:
dependencies:
escape-string-regexp "^1.0.5"
+file-loader@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
file-uri-to-path@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
@@ -6456,25 +6469,25 @@ firebase-tools@^9.0.0:
ws "^7.2.3"
firebase@^9.0.0:
- version "9.0.0"
- resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.0.0.tgz#00bfa03a3eb99bde43a472a8861aa808068153bb"
- integrity sha512-atgnuvELhU9D5w9moChnyCb6GRbOCqk54/kHN0J4kdLJBncpcb2culIJ7nlSHILMcW9MNMiNKDJ07RwXVyqFFA==
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.0.1.tgz#6bc5f9d7bdcd864ef98f2219fa0cd240f2e48b3c"
+ integrity sha512-RMpbXsVlxqMX+s/gYudnUZeSZXPiLCJMdaxbZ0WRiMjLuJc6ZkbpRy7yz7rZQpL0wRD6gN4K5C+JaKEQtN3jAQ==
dependencies:
"@firebase/analytics" "0.7.0"
- "@firebase/analytics-compat" "0.1.0"
+ "@firebase/analytics-compat" "0.1.1"
"@firebase/app" "0.7.0"
"@firebase/app-check" "0.4.0"
- "@firebase/app-check-compat" "0.1.0"
- "@firebase/app-compat" "0.1.0"
+ "@firebase/app-check-compat" "0.1.1"
+ "@firebase/app-compat" "0.1.1"
"@firebase/app-types" "0.7.0"
- "@firebase/auth" "0.17.0"
- "@firebase/auth-compat" "0.1.0"
+ "@firebase/auth" "0.17.1"
+ "@firebase/auth-compat" "0.1.1"
"@firebase/database" "0.12.0"
"@firebase/database-compat" "0.1.0"
- "@firebase/firestore" "3.0.0"
- "@firebase/firestore-compat" "0.1.0"
+ "@firebase/firestore" "3.0.1"
+ "@firebase/firestore-compat" "0.1.1"
"@firebase/functions" "0.7.0"
- "@firebase/functions-compat" "0.1.0"
+ "@firebase/functions-compat" "0.1.1"
"@firebase/installations" "0.5.0"
"@firebase/messaging" "0.9.0"
"@firebase/messaging-compat" "0.1.0"
@@ -6483,8 +6496,8 @@ firebase@^9.0.0:
"@firebase/polyfill" "0.3.36"
"@firebase/remote-config" "0.2.0"
"@firebase/remote-config-compat" "0.1.0"
- "@firebase/storage" "0.8.0"
- "@firebase/storage-compat" "0.1.0"
+ "@firebase/storage" "0.8.1"
+ "@firebase/storage-compat" "0.1.1"
"@firebase/util" "1.3.0"
flat-arguments@^1.0.0:
@@ -8591,9 +8604,9 @@ jszip@^3.1.3:
set-immediate-shim "~1.0.1"
jszip@^3.5.0, jszip@^3.6.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.0.tgz#9b8b995a4e7c9024653ce743e902076a82fdf4e6"
- integrity sha512-Y2OlFIzrDOPWUnpU0LORIcDn2xN7rC9yKffFM/7pGhQuhO+SUhfm2trkJ/S5amjFvem0Y+1EALz/MEPkvHXVNw==
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9"
+ integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==
dependencies:
lie "~3.3.0"
pako "~1.0.2"
@@ -14579,10 +14592,10 @@ write-file-atomic@^3.0.0:
signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5"
-ws@>=7.4.6, ws@^7.3.1:
- version "7.5.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
- integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
+ws@>=7.4.6:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.1.tgz#bdd92b3c56fdb47d2379b5ae534281922cc5bd12"
+ integrity sha512-XkgWpJU3sHU7gX8f13NqTn6KQ85bd1WU7noBHTT8fSohx7OS1TPY8k+cyRPCzFkia7C4mM229yeHr1qK9sM4JQ==
ws@^6.2.1:
version "6.2.2"
@@ -14596,6 +14609,11 @@ ws@^7.2.1, ws@^7.2.3, ws@~7.4.2:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1"
integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==
+ws@^7.3.1:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.4.tgz#56bfa20b167427e138a7795de68d134fe92e21f9"
+ integrity sha512-zP9z6GXm6zC27YtspwH99T3qTG7bBFv2VIkeHstMLrLlDJuzA7tQ5ls3OJ1hOGGCzTQPniNJoHXIAOS0Jljohg==
+
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
@@ -14688,9 +14706,9 @@ yargs-parser@^18.1.2:
decamelize "^1.2.0"
yargs-parser@^20.2.2:
- version "20.2.7"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a"
- integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
yargs@^13.3.2:
version "13.3.2"