diff --git a/docs/zones.md b/docs/zones.md index 2b2e39b82..a7a73bfbd 100644 --- a/docs/zones.md +++ b/docs/zones.md @@ -14,8 +14,26 @@ Observables, Promise-based APIs, and those with callbacks will purposely destabi When using a Firebase or RxFire API without importing from AngularFire or if AngularFire APIs are used outside of an injection context you _may_ experience instability. -instability can be difficult to track down ([see Resolving zone pollution in the Angular docs](https://angular.dev/best-practices/zone-pollution)). To help with debugging, AngularFire emits warnings when it is unable to Zone wrap an API while in dev-mode. **Often these messages can be safely ignored** but we'd rather be verbose. - When an application is unstable change-detection, two-way binding, and rehydration may not work as expected—leading to both subtle and non-subtle bugs in your application. Further, server-side rendering (SSR) and static site generation (SSG/pre-rendering) may timeout or render a blank page. There are a number of situations where AngularFire's Zone wrapping is inconsequential such adding/deleting/updating a document in response to user-input, signing a user in, calling a Cloud Function, etc. So long as no long-lived side-effects are kicked off, your application should be ok. Most Promise based APIs are fairly safe without zone wrapping. + +## Logging + +You may see a log warning, `Calling Firebase APIs outside of an Injection context may destabilize your application leading to subtle change-detection and hydration bugs. Find more at https://github.com/angular/angularfire/blob/main/docs/zones.md` when developing your application. + +Instability can be difficult to track down. To help with debugging, AngularFire emits warnings when it is unable to Zone wrap an API while in dev-mode. **Often these messages can be safely ignored** but we'd rather be verbose. + +There are three logging levels in AngularFire: + +* **Silent**: when the logging level is set to silent only the above banner is displayed when AngularFire APIs are called outside of an injection context, this is the default when using Zoneless change-detection. +* **Warn**: when the logging level is set to warn, only blocking reads, long-lived tasks, and APIs with high risk of destabilizing your application are called, this is the default when using ZoneJS. +* **Verbose**: when the logging level is set to verbose, all AngularFire APIs called outside of an injection context are logged—helping you track down APIs that may be destabilizing your application + +You can change the log-level like so: + +```ts +import { setLogLevel, LogLevel } from "@angular/fire"; + +setLogLevel(LogLevel.VERBOSE); +``` \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bff0924b8..eb7345108 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@angular/router": "^19.0.0", "@schematics/angular": "^19.0.0", "esbuild": "^0.24.0", - "firebase": "^11.0.0", + "firebase": "^11.2.0", "firebase-functions": "^6.1.0", "fs-extra": "^8.0.1", "fuzzy": "^0.1.3", @@ -4264,15 +4264,15 @@ "peer": true }, "node_modules/@firebase/analytics": { - "version": "0.10.10", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.10.tgz", - "integrity": "sha512-Psdo7c9g2SLAYh6u1XRA+RZ7ab2JfBVuAt/kLzXkhKZL/gS2cQUCMsOW5p0RIlDPRKqpdNSmvujd2TeRWLKOkQ==", + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.11.tgz", + "integrity": "sha512-zwuPiRE0+hgcS95JZbJ6DFQN4xYFO8IyGxpeePTV51YJMwCf3lkBa6FnZ/iXIqDKcBPMgMuuEZozI0BJWaLEYg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4280,15 +4280,15 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.16.tgz", - "integrity": "sha512-Q/s+u/TEMSb2EDJFQMGsOzpSosybBl8HuoSEMyGZ99+0Pu7SIR9MPDGUjc8PKiCFQWDJ3QXxgqh1d/rujyAMbA==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.17.tgz", + "integrity": "sha512-SJNVOeTvzdqZQvXFzj7yAirXnYcLDxh57wBFROfeowq/kRN1AqOw1tG6U4OiFOEhqi7s3xLze/LMkZatk2IEww==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.10", + "@firebase/analytics": "0.10.11", "@firebase/analytics-types": "0.8.3", - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4302,14 +4302,14 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app": { - "version": "0.10.16", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.16.tgz", - "integrity": "sha512-SUati2qH48gvVGnSsqMkZr1Iq7No52a3tJQ4itboSTM89Erezmw3v1RsfVymrDze9+KiOLmBpvLNKSvheITFjg==", + "version": "0.10.18", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.18.tgz", + "integrity": "sha512-VuqEwD/QRisKd/zsFsqgvSAx34mZ3WEF47i97FD6Vw4GWAhdjepYf0Hmi6K0b4QMSgWcv/x0C30Slm5NjjERXg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4318,14 +4318,14 @@ } }, "node_modules/@firebase/app-check": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.10.tgz", - "integrity": "sha512-DWFfxxif/t+Ow4MmRUevDX+A3hVxm1rUf6y5ZP4sIomfnVCO1NNahqtsv9rb1/tKGkTeoVT40weiTS/WjQG1mA==", + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.11.tgz", + "integrity": "sha512-42zIfRI08/7bQqczAy7sY2JqZYEv3a1eNa4fLFdtJ54vNevbBIRSEA3fZgRqWFNHalh5ohsBXdrYgFqaRIuCcQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4336,16 +4336,16 @@ } }, "node_modules/@firebase/app-check-compat": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.17.tgz", - "integrity": "sha512-a/eadrGsY0MVCBPhrNbKUhoYpms4UKTYLKO7nswwSFVsm3Rw6NslQQCNLfvljcDqP4E7alQDRGJXjkxd/5gJ+Q==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.18.tgz", + "integrity": "sha512-qjozwnwYmAIdrsVGrJk+hnF1WBois54IhZR6gO0wtZQoTvWL/GtiA2F31TIgAhF0ayUiZhztOv1RfC7YyrZGDQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-check": "0.8.10", + "@firebase/app-check": "0.8.11", "@firebase/app-check-types": "0.5.3", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4368,15 +4368,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app-compat": { - "version": "0.2.46", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.46.tgz", - "integrity": "sha512-9hSHWE5LMqtKIm13CnH5OZeMPbkVV3y5vgNZ5EMFHcG2ceRrncyNjG9No5XfWQw8JponZdGs4HlE4aMD/jxcFA==", + "version": "0.2.48", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.48.tgz", + "integrity": "sha512-wVNU1foBIaJncUmiALyRxhHHHC3ZPMLIETTAk+2PG87eP9B/IDBsYUiTpHyboDPEI8CgBPat/zN2v+Snkz6lBw==", "license": "Apache-2.0", "dependencies": { - "@firebase/app": "0.10.16", - "@firebase/component": "0.6.11", + "@firebase/app": "0.10.18", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4390,14 +4390,14 @@ "license": "Apache-2.0" }, "node_modules/@firebase/auth": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.8.1.tgz", - "integrity": "sha512-LX9N/Cf5Z35r5yqm2+5M3+2bRRe/+RFaa/+u4HDni7TA27C/Xm4XHLKcWcLg1BzjrS4zngSaBEOSODvp6RFOqQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.8.2.tgz", + "integrity": "sha512-q+071y2LWe0bVnjqaX3BscqZwzdP0GKN2YBKapLq4bV88MPfCtWwGKmDhNDEDUmioOjudGXkUY5cvvKqk3mlUg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4414,15 +4414,15 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.16.tgz", - "integrity": "sha512-YlYwJMBqAyv0ESy3jDUyshMhZlbUiwAm6B6+uUmigNDHU+uq7j4SFiDJEZlFFIz397yBzKn06SUdqutdQzGnCA==", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.17.tgz", + "integrity": "sha512-Shi6rqLqzU9KLXnUCmlLvVByq1kiG3oe7Wpbf5m1CgS7NiRx2pSSn0HLaRRozdkaizNzMGGj+3oHmNYQ7kU6xA==", "license": "Apache-2.0", "dependencies": { - "@firebase/auth": "1.8.1", + "@firebase/auth": "1.8.2", "@firebase/auth-types": "0.12.3", - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4449,12 +4449,12 @@ } }, "node_modules/@firebase/component": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.11.tgz", - "integrity": "sha512-eQbeCgPukLgsKD0Kw5wQgsMDX5LeoI1MIrziNDjmc6XDq5ZQnuUymANQgAb2wp1tSF9zDSXyxJmIUXaKgN58Ug==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.12.tgz", + "integrity": "sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw==", "license": "Apache-2.0", "dependencies": { - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4462,15 +4462,15 @@ } }, "node_modules/@firebase/data-connect": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.1.2.tgz", - "integrity": "sha512-Bcf29mntFCt5V7aceMe36wnkHrG7cwbMlUVbDHOlh2foQKx9VtSXEONw9r6FtL1sFobHVYOM5L6umX35f59m5g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.2.0.tgz", + "integrity": "sha512-7OrZtQoLSk2fiGijhIdUnTSqEFti3h1EMhw9nNiSZ6jJGduw4Pz6jrVvxjpZJtGH/JiljbMkBnPBS2h8CTRKEw==", "license": "Apache-2.0", "dependencies": { "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4478,16 +4478,16 @@ } }, "node_modules/@firebase/database": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.10.tgz", - "integrity": "sha512-sWp2g92u7xT4BojGbTXZ80iaSIaL6GAL0pwvM0CO/hb0nHSnABAqsH7AhnWGsGvXuEvbPr7blZylPaR9J+GSuQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.11.tgz", + "integrity": "sha512-gLrw/XeioswWUXgpVKCPAzzoOuvYNqK5fRUeiJTzO7Mlp9P6ylFEyPJlRBl1djqYye641r3MX6AmIeMXwjgwuQ==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "faye-websocket": "0.11.4", "tslib": "^2.1.0" }, @@ -4496,16 +4496,16 @@ } }, "node_modules/@firebase/database-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.1.tgz", - "integrity": "sha512-IsFivOjdE1GrjTeKoBU/ZMenESKDXidFDzZzHBPQ/4P20ptGdrl3oLlWrV/QJqJ9lND4IidE3z4Xr5JyfUW1vg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.2.tgz", + "integrity": "sha512-5zvdnMsfDHvrQAVM6jBS7CkBpu+z3YbpFdhxRsrK1FP45IEfxlzpeuEUb17D/tpM10vfq4Ok0x5akIBaCv7gfA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/database": "1.0.10", - "@firebase/database-types": "1.0.7", + "@firebase/component": "0.6.12", + "@firebase/database": "1.0.11", + "@firebase/database-types": "1.0.8", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4513,24 +4513,24 @@ } }, "node_modules/@firebase/database-types": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.7.tgz", - "integrity": "sha512-I7zcLfJXrM0WM+ksFmFdAMdlq/DFmpeMNa+/GNsLyFo5u/lX5zzkPzGe3srVWqaBQBY5KprylDGxOsP6ETfL0A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.8.tgz", + "integrity": "sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g==", "license": "Apache-2.0", "dependencies": { "@firebase/app-types": "0.9.3", - "@firebase/util": "1.10.2" + "@firebase/util": "1.10.3" } }, "node_modules/@firebase/firestore": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.5.tgz", - "integrity": "sha512-OO3rHvjC07jL2ITN255xH/UzCVSvh6xG8oTzQdFScQvFbcm1fjCL1hgAdpDZcx3vVcKMV+6ktr8wbllkB8r+FQ==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.6.tgz", + "integrity": "sha512-aVDboR+upR/44qZDLR4tnZ9pepSOFBbDJnwk7eWzmTyQq2nZAVG+HIhrqpQawmUVcDRkuJv2K2UT2+oqR8F8TA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "@firebase/webchannel-wrapper": "1.0.3", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", @@ -4544,15 +4544,15 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.40", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.40.tgz", - "integrity": "sha512-18HopMN811KYBc9Ptpr1Rewwio0XF09FF3jc5wtV6rGyAs815SlFFw5vW7ZeLd43zv9tlEc2FzM0H+5Vr9ZRxw==", + "version": "0.3.41", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.41.tgz", + "integrity": "sha512-J/PgWKEt0yugETOE7lOabT16hsV21cLzSxERD7ZhaiwBQkBTSf0Mx9RhjZRT0Ttqe4weM90HGZFyUBqYA73fVA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/firestore": "4.7.5", + "@firebase/component": "0.6.12", + "@firebase/firestore": "4.7.6", "@firebase/firestore-types": "3.0.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4573,16 +4573,16 @@ } }, "node_modules/@firebase/functions": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.10.tgz", - "integrity": "sha512-TP+Dzebazhw6+GduBdWn1kOJRFH84G2z+BW3pNVfkpFRkc//+uT1Uw2+dLpMGSSBRG7FrcDG91vcPnOFCzr15w==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.12.1.tgz", + "integrity": "sha512-QucRiFrvMMmIGTRhL7ZK2IeBnAWP7lAmfFREMpEtX47GjVqDqGxdFs+Mg7XBzxSc9UjDO4Rxf+aE9xJHU6bGwg==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4593,15 +4593,15 @@ } }, "node_modules/@firebase/functions-compat": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.16.tgz", - "integrity": "sha512-FL7EXehiiBisNIR7mlb0i+moyWKLVfcEJgh/Wq6ZV6BdrCObpCTz7w5EvuRIEFX5e9cNL2oWInKg8S5X4HtINg==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.18.tgz", + "integrity": "sha512-N7+RN5GVus2ORB8cqfSNhfSn4iaYws6F8uCCfn4mtjC7zYS/KH6muzNAhZUdUqlv5YazbVmvxlAoYYF39i8Qzg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/functions": "0.11.10", + "@firebase/component": "0.6.12", + "@firebase/functions": "0.12.1", "@firebase/functions-types": "0.6.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4618,13 +4618,13 @@ "license": "Apache-2.0" }, "node_modules/@firebase/installations": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.11.tgz", - "integrity": "sha512-w8fY8mw6fxJzsZM2ufmTtomopXl1+bn/syYon+Gpn+0p0nO1cIUEVEFrFazTLaaL9q1CaVhc3HmseRTsI3igAA==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.12.tgz", + "integrity": "sha512-ES/WpuAV2k2YtBTvdaknEo7IY8vaGjIjS3zhnHSAIvY9KwTR8XZFXOJoZ3nSkjN1A5R4MtEh+07drnzPDg9vaw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4633,15 +4633,15 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.11.tgz", - "integrity": "sha512-SHRgw5LTa6v8LubmJZxcOCwEd1MfWQPUtKdiuCx2VMWnapX54skZd1PkQg0K4l3k+4ujbI2cn7FE6Li9hbChBw==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.12.tgz", + "integrity": "sha512-RhcGknkxmFu92F6Jb3rXxv6a4sytPjJGifRZj8MSURPuv2Xu+/AispCXEfY1ZraobhEHTG5HLGsP6R4l9qB5aA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/installations-types": "0.5.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4670,15 +4670,15 @@ } }, "node_modules/@firebase/messaging": { - "version": "0.12.14", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.14.tgz", - "integrity": "sha512-cSGP34jJswFvME8tdMDkvJvW6T1jEekyMSyq84AMBZ0KEpJbDWuC9n4wKT2lxUm1jaL651iZnn6g51yCl77ICg==", + "version": "0.12.16", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.16.tgz", + "integrity": "sha512-VJ8sCEIeP3+XkfbJA7410WhYGHdloYFZXoHe/vt+vNVDGw8JQPTQSVTRvjrUprEf5I4Tbcnpr2H34lS6zhCHSA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4687,14 +4687,14 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.14.tgz", - "integrity": "sha512-r9weK8jTEA2aGiwy0IbMQPnzuJ0DHkOQaMxGJOlU2QZ1a7fh6RHpNtaoM+LKnn6u1NQgmAOWYNr9vezVQEm9zw==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.16.tgz", + "integrity": "sha512-9HZZ88Ig3zQ0ok/Pwt4gQcNsOhoEy8hDHoGsV1am6ulgMuGuDVD2gl11Lere2ksL+msM12Lddi2x/7TCqmODZw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/messaging": "0.12.14", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/messaging": "0.12.16", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4708,15 +4708,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/performance": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.11.tgz", - "integrity": "sha512-FlkJFeqLlIeh5T4Am3uE38HVzggliDIEFy/fErEc1faINOUFCb6vQBEoNZGaXvRnTR8lh3X/hP7tv37C7BsK9g==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.12.tgz", + "integrity": "sha512-8mYL4z2jRlKXAi2hjk4G7o2sQLnJCCuTbyvti/xmHf5ZvOIGB01BZec0aDuBIXO+H1MLF62dbye/k91Fr+yc8g==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4724,16 +4724,16 @@ } }, "node_modules/@firebase/performance-compat": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.11.tgz", - "integrity": "sha512-DqeNBy51W2xzlklyC7Ht9JQ94HhTA08PCcM4MDeyG/ol3fqum/+YgtHWQ2IQuduqH9afETthZqLwCZiSgY7hiA==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.12.tgz", + "integrity": "sha512-DyCbDTIwtBTGsEiQxTz/TD23a0na2nrDozceQ5kVkszyFYvliB0YK/9el0wAGIG91SqgTG9pxHtYErzfZc0VWw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/performance": "0.6.11", + "@firebase/performance": "0.6.12", "@firebase/performance-types": "0.2.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4747,15 +4747,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/remote-config": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.11.tgz", - "integrity": "sha512-9z0rgKuws2nj+7cdiqF+NY1QR4na6KnuOvP+jQvgilDOhGtKOcCMq5XHiu66i73A9kFhyU6QQ2pHXxcmaq1pBw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.5.0.tgz", + "integrity": "sha512-weiEbpBp5PBJTHUWR4GwI7ZacaAg68BKha5QnZ8Go65W4oQjEWqCW/rfskABI/OkrGijlL3CUmCB/SA6mVo0qA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4763,16 +4763,16 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.11.tgz", - "integrity": "sha512-zfIjpwPrGuIOZDmduukN086qjhZ1LnbJi/iYzgua+2qeTlO0XdlE1v66gJPwygGB3TOhT0yb9EiUZ3nBNttMqg==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.12.tgz", + "integrity": "sha512-91jLWPtubIuPBngg9SzwvNCWzhMLcyBccmt7TNZP+y1cuYFNOWWHKUXQ3IrxCLB7WwLqQaEu7fTDAjHsTyBsSw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/remote-config": "0.4.11", - "@firebase/remote-config-types": "0.3.3", - "@firebase/util": "1.10.2", + "@firebase/remote-config": "0.5.0", + "@firebase/remote-config-types": "0.4.0", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4780,19 +4780,19 @@ } }, "node_modules/@firebase/remote-config-types": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.3.tgz", - "integrity": "sha512-YlRI9CHxrk3lpQuFup9N1eohpwdWayKZUNZ/YeQ0PZoncJ66P32UsKUKqVXOaieTjJIOh7yH8JEzRdht5s+d6g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz", + "integrity": "sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==", "license": "Apache-2.0" }, "node_modules/@firebase/storage": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.4.tgz", - "integrity": "sha512-b1KaTTRiMupFurIhpGIbReaWev0k5O3ouTHkAPcEssT+FvU3q/1JwzvkX4+ZdB60Fc43Mbp8qQ1gWfT0Z2FP9Q==", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.5.tgz", + "integrity": "sha512-sB/7HNuW0N9tITyD0RxVLNCROuCXkml5i/iPqjwOGKC0xiUfpCOjBE+bb0ABMoN1qYZfqk0y9IuI2TdomjmkNw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4803,15 +4803,15 @@ } }, "node_modules/@firebase/storage-compat": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.14.tgz", - "integrity": "sha512-Ok5FmXJiapaNAOQ8W8qppnfwgP8540jw2B8M0c4TFZqF4BD+CoKBxW0dRtOuLNGadLhzqqkDZZZtkexxrveQqA==", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.15.tgz", + "integrity": "sha512-Z9afjrK2O9o1ZHWCpprCGZ1BTc3BbvpZvi6tkSteC8H3W/fMM6x+RoSunlzD3hEVV5bkbwdJIqNClLMchvyoPA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/storage": "0.13.4", + "@firebase/component": "0.6.12", + "@firebase/storage": "0.13.5", "@firebase/storage-types": "0.8.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4832,9 +4832,9 @@ } }, "node_modules/@firebase/util": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.2.tgz", - "integrity": "sha512-qnSHIoE9FK+HYnNhTI8q14evyqbc/vHRivfB4TgCIUOl4tosmKSQlp7ltymOlMP4xVIJTg5wrkfcZ60X4nUf7Q==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.3.tgz", + "integrity": "sha512-wfoF5LTy0m2ufUapV0ZnpcGQvuavTbJ5Qr1Ze9OJGL70cSMvhDyjS4w2121XdA3lGZSTOsDOyGhpoDtYwck85A==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -4844,15 +4844,15 @@ } }, "node_modules/@firebase/vertexai": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@firebase/vertexai/-/vertexai-1.0.1.tgz", - "integrity": "sha512-f48MGSofhaS05ebpN7zMIv4tBqYf19pXr5/4njKtNZVLbjxUswDma0SuFDoO+IwgbdkhFxgtNctM+C1zfI/O1Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@firebase/vertexai/-/vertexai-1.0.3.tgz", + "integrity": "sha512-SQHg/RPb3LwQs/xiLcvAZYz9NXyDSZUIIwvgsKh6e4wdULAfyPCZIu6Y2ZYIhZLfk9Q44cKZ+++7RPTaqQJdYA==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -4966,18 +4966,18 @@ } }, "node_modules/@grpc/grpc-js/node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@grpc/grpc-js/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "license": "MIT" }, "node_modules/@grpc/proto-loader": { @@ -11888,39 +11888,39 @@ } }, "node_modules/firebase": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.0.2.tgz", - "integrity": "sha512-w4T8BSJpzdZA25QRch5ahLsgB6uRvg1LEic4BaC5rTD1YygroI1AXp+W+rbMnr8d8EjfAv6t4k8doULIjc1P8Q==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.2.0.tgz", + "integrity": "sha512-ztwPhBLAZMVNZjBeQzzTM4rk2rsRXmdFYcnvjAXh+StbiFVshHKaPO9VRGMUzF48du4Mkz6jN1wkmYCuUJPxLA==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.10", - "@firebase/analytics-compat": "0.2.16", - "@firebase/app": "0.10.16", - "@firebase/app-check": "0.8.10", - "@firebase/app-check-compat": "0.3.17", - "@firebase/app-compat": "0.2.46", + "@firebase/analytics": "0.10.11", + "@firebase/analytics-compat": "0.2.17", + "@firebase/app": "0.10.18", + "@firebase/app-check": "0.8.11", + "@firebase/app-check-compat": "0.3.18", + "@firebase/app-compat": "0.2.48", "@firebase/app-types": "0.9.3", - "@firebase/auth": "1.8.1", - "@firebase/auth-compat": "0.5.16", - "@firebase/data-connect": "0.1.2", - "@firebase/database": "1.0.10", - "@firebase/database-compat": "2.0.1", - "@firebase/firestore": "4.7.5", - "@firebase/firestore-compat": "0.3.40", - "@firebase/functions": "0.11.10", - "@firebase/functions-compat": "0.3.16", - "@firebase/installations": "0.6.11", - "@firebase/installations-compat": "0.2.11", - "@firebase/messaging": "0.12.14", - "@firebase/messaging-compat": "0.2.14", - "@firebase/performance": "0.6.11", - "@firebase/performance-compat": "0.2.11", - "@firebase/remote-config": "0.4.11", - "@firebase/remote-config-compat": "0.2.11", - "@firebase/storage": "0.13.4", - "@firebase/storage-compat": "0.3.14", - "@firebase/util": "1.10.2", - "@firebase/vertexai": "1.0.1" + "@firebase/auth": "1.8.2", + "@firebase/auth-compat": "0.5.17", + "@firebase/data-connect": "0.2.0", + "@firebase/database": "1.0.11", + "@firebase/database-compat": "2.0.2", + "@firebase/firestore": "4.7.6", + "@firebase/firestore-compat": "0.3.41", + "@firebase/functions": "0.12.1", + "@firebase/functions-compat": "0.3.18", + "@firebase/installations": "0.6.12", + "@firebase/installations-compat": "0.2.12", + "@firebase/messaging": "0.12.16", + "@firebase/messaging-compat": "0.2.16", + "@firebase/performance": "0.6.12", + "@firebase/performance-compat": "0.2.12", + "@firebase/remote-config": "0.5.0", + "@firebase/remote-config-compat": "0.2.12", + "@firebase/storage": "0.13.5", + "@firebase/storage-compat": "0.3.15", + "@firebase/util": "1.10.3", + "@firebase/vertexai": "1.0.3" } }, "node_modules/firebase-admin": { @@ -13398,7 +13398,8 @@ "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" }, "node_modules/ieee754": { "version": "1.2.1", diff --git a/package.json b/package.json index fb6cd7504..c1b65f784 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@angular/router": "^19.0.0", "@schematics/angular": "^19.0.0", "esbuild": "^0.24.0", - "firebase": "^11.0.0", + "firebase": "^11.2.0", "firebase-functions": "^6.1.0", "fs-extra": "^8.0.1", "fuzzy": "^0.1.3", @@ -118,9 +118,5 @@ "tslint": "~6.1.0", "typescript": ">=5.5 <5.7" }, - "overrides": { - "@angular/compiler-cli": "^19.0.0", - "firebase": "^11.0.0" - }, "typings": "index.d.ts" } diff --git a/sample/package-lock.json b/sample/package-lock.json index a9a8c8d9c..a50974026 100644 --- a/sample/package-lock.json +++ b/sample/package-lock.json @@ -12,7 +12,7 @@ "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", - "@angular/fire": "file:../angularfire/angular-fire-19.0.0.tgz", + "@angular/fire": "file:../angular-fire-19.0.0.tgz", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", @@ -476,13 +476,13 @@ }, "node_modules/@angular/fire": { "version": "19.0.0", - "resolved": "file:../angularfire/angular-fire-19.0.0.tgz", - "integrity": "sha512-AiMmqKNk5JO4V/xOpxAlGyMdT4ZRsk89qIEYB4FWaKrNGguJPDFoXo25r2f8CQ5teX1t2OrNQr7C6t9YeJP7Nw==", + "resolved": "file:../angular-fire-19.0.0.tgz", + "integrity": "sha512-3cb96YXdf3Obm/7XAl7mQp9+9XLhO6/Py/qzc3cNpEuiQh2GJBVzyjPOZS2Kzm22EL4Ple0IJdFWLIUN4G5sqg==", "license": "MIT", "dependencies": { "@angular-devkit/schematics": "^19.0.0", "@schematics/angular": "^19.0.0", - "firebase": "^11.0.2", + "firebase": "^11.2.0", "rxfire": "^6.1.0", "tslib": "^2.3.0" }, @@ -2678,15 +2678,15 @@ "license": "MIT" }, "node_modules/@firebase/analytics": { - "version": "0.10.10", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.10.tgz", - "integrity": "sha512-Psdo7c9g2SLAYh6u1XRA+RZ7ab2JfBVuAt/kLzXkhKZL/gS2cQUCMsOW5p0RIlDPRKqpdNSmvujd2TeRWLKOkQ==", + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.11.tgz", + "integrity": "sha512-zwuPiRE0+hgcS95JZbJ6DFQN4xYFO8IyGxpeePTV51YJMwCf3lkBa6FnZ/iXIqDKcBPMgMuuEZozI0BJWaLEYg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2694,15 +2694,15 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.16.tgz", - "integrity": "sha512-Q/s+u/TEMSb2EDJFQMGsOzpSosybBl8HuoSEMyGZ99+0Pu7SIR9MPDGUjc8PKiCFQWDJ3QXxgqh1d/rujyAMbA==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.17.tgz", + "integrity": "sha512-SJNVOeTvzdqZQvXFzj7yAirXnYcLDxh57wBFROfeowq/kRN1AqOw1tG6U4OiFOEhqi7s3xLze/LMkZatk2IEww==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.10", + "@firebase/analytics": "0.10.11", "@firebase/analytics-types": "0.8.3", - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2716,14 +2716,14 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app": { - "version": "0.10.16", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.16.tgz", - "integrity": "sha512-SUati2qH48gvVGnSsqMkZr1Iq7No52a3tJQ4itboSTM89Erezmw3v1RsfVymrDze9+KiOLmBpvLNKSvheITFjg==", + "version": "0.10.18", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.18.tgz", + "integrity": "sha512-VuqEwD/QRisKd/zsFsqgvSAx34mZ3WEF47i97FD6Vw4GWAhdjepYf0Hmi6K0b4QMSgWcv/x0C30Slm5NjjERXg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -2732,14 +2732,14 @@ } }, "node_modules/@firebase/app-check": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.10.tgz", - "integrity": "sha512-DWFfxxif/t+Ow4MmRUevDX+A3hVxm1rUf6y5ZP4sIomfnVCO1NNahqtsv9rb1/tKGkTeoVT40weiTS/WjQG1mA==", + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.11.tgz", + "integrity": "sha512-42zIfRI08/7bQqczAy7sY2JqZYEv3a1eNa4fLFdtJ54vNevbBIRSEA3fZgRqWFNHalh5ohsBXdrYgFqaRIuCcQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2750,16 +2750,16 @@ } }, "node_modules/@firebase/app-check-compat": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.17.tgz", - "integrity": "sha512-a/eadrGsY0MVCBPhrNbKUhoYpms4UKTYLKO7nswwSFVsm3Rw6NslQQCNLfvljcDqP4E7alQDRGJXjkxd/5gJ+Q==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.18.tgz", + "integrity": "sha512-qjozwnwYmAIdrsVGrJk+hnF1WBois54IhZR6gO0wtZQoTvWL/GtiA2F31TIgAhF0ayUiZhztOv1RfC7YyrZGDQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-check": "0.8.10", + "@firebase/app-check": "0.8.11", "@firebase/app-check-types": "0.5.3", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2782,15 +2782,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app-compat": { - "version": "0.2.46", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.46.tgz", - "integrity": "sha512-9hSHWE5LMqtKIm13CnH5OZeMPbkVV3y5vgNZ5EMFHcG2ceRrncyNjG9No5XfWQw8JponZdGs4HlE4aMD/jxcFA==", + "version": "0.2.48", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.48.tgz", + "integrity": "sha512-wVNU1foBIaJncUmiALyRxhHHHC3ZPMLIETTAk+2PG87eP9B/IDBsYUiTpHyboDPEI8CgBPat/zN2v+Snkz6lBw==", "license": "Apache-2.0", "dependencies": { - "@firebase/app": "0.10.16", - "@firebase/component": "0.6.11", + "@firebase/app": "0.10.18", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2804,14 +2804,14 @@ "license": "Apache-2.0" }, "node_modules/@firebase/auth": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.8.1.tgz", - "integrity": "sha512-LX9N/Cf5Z35r5yqm2+5M3+2bRRe/+RFaa/+u4HDni7TA27C/Xm4XHLKcWcLg1BzjrS4zngSaBEOSODvp6RFOqQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.8.2.tgz", + "integrity": "sha512-q+071y2LWe0bVnjqaX3BscqZwzdP0GKN2YBKapLq4bV88MPfCtWwGKmDhNDEDUmioOjudGXkUY5cvvKqk3mlUg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2828,15 +2828,15 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.16.tgz", - "integrity": "sha512-YlYwJMBqAyv0ESy3jDUyshMhZlbUiwAm6B6+uUmigNDHU+uq7j4SFiDJEZlFFIz397yBzKn06SUdqutdQzGnCA==", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.17.tgz", + "integrity": "sha512-Shi6rqLqzU9KLXnUCmlLvVByq1kiG3oe7Wpbf5m1CgS7NiRx2pSSn0HLaRRozdkaizNzMGGj+3oHmNYQ7kU6xA==", "license": "Apache-2.0", "dependencies": { - "@firebase/auth": "1.8.1", + "@firebase/auth": "1.8.2", "@firebase/auth-types": "0.12.3", - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2863,12 +2863,12 @@ } }, "node_modules/@firebase/component": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.11.tgz", - "integrity": "sha512-eQbeCgPukLgsKD0Kw5wQgsMDX5LeoI1MIrziNDjmc6XDq5ZQnuUymANQgAb2wp1tSF9zDSXyxJmIUXaKgN58Ug==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.12.tgz", + "integrity": "sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw==", "license": "Apache-2.0", "dependencies": { - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2876,15 +2876,15 @@ } }, "node_modules/@firebase/data-connect": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.1.2.tgz", - "integrity": "sha512-Bcf29mntFCt5V7aceMe36wnkHrG7cwbMlUVbDHOlh2foQKx9VtSXEONw9r6FtL1sFobHVYOM5L6umX35f59m5g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.2.0.tgz", + "integrity": "sha512-7OrZtQoLSk2fiGijhIdUnTSqEFti3h1EMhw9nNiSZ6jJGduw4Pz6jrVvxjpZJtGH/JiljbMkBnPBS2h8CTRKEw==", "license": "Apache-2.0", "dependencies": { "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2892,16 +2892,16 @@ } }, "node_modules/@firebase/database": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.10.tgz", - "integrity": "sha512-sWp2g92u7xT4BojGbTXZ80iaSIaL6GAL0pwvM0CO/hb0nHSnABAqsH7AhnWGsGvXuEvbPr7blZylPaR9J+GSuQ==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.11.tgz", + "integrity": "sha512-gLrw/XeioswWUXgpVKCPAzzoOuvYNqK5fRUeiJTzO7Mlp9P6ylFEyPJlRBl1djqYye641r3MX6AmIeMXwjgwuQ==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "faye-websocket": "0.11.4", "tslib": "^2.1.0" }, @@ -2910,16 +2910,16 @@ } }, "node_modules/@firebase/database-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.1.tgz", - "integrity": "sha512-IsFivOjdE1GrjTeKoBU/ZMenESKDXidFDzZzHBPQ/4P20ptGdrl3oLlWrV/QJqJ9lND4IidE3z4Xr5JyfUW1vg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.2.tgz", + "integrity": "sha512-5zvdnMsfDHvrQAVM6jBS7CkBpu+z3YbpFdhxRsrK1FP45IEfxlzpeuEUb17D/tpM10vfq4Ok0x5akIBaCv7gfA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/database": "1.0.10", - "@firebase/database-types": "1.0.7", + "@firebase/component": "0.6.12", + "@firebase/database": "1.0.11", + "@firebase/database-types": "1.0.8", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2927,24 +2927,24 @@ } }, "node_modules/@firebase/database-types": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.7.tgz", - "integrity": "sha512-I7zcLfJXrM0WM+ksFmFdAMdlq/DFmpeMNa+/GNsLyFo5u/lX5zzkPzGe3srVWqaBQBY5KprylDGxOsP6ETfL0A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.8.tgz", + "integrity": "sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g==", "license": "Apache-2.0", "dependencies": { "@firebase/app-types": "0.9.3", - "@firebase/util": "1.10.2" + "@firebase/util": "1.10.3" } }, "node_modules/@firebase/firestore": { - "version": "4.7.5", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.5.tgz", - "integrity": "sha512-OO3rHvjC07jL2ITN255xH/UzCVSvh6xG8oTzQdFScQvFbcm1fjCL1hgAdpDZcx3vVcKMV+6ktr8wbllkB8r+FQ==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.6.tgz", + "integrity": "sha512-aVDboR+upR/44qZDLR4tnZ9pepSOFBbDJnwk7eWzmTyQq2nZAVG+HIhrqpQawmUVcDRkuJv2K2UT2+oqR8F8TA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "@firebase/webchannel-wrapper": "1.0.3", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", @@ -2958,15 +2958,15 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.40", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.40.tgz", - "integrity": "sha512-18HopMN811KYBc9Ptpr1Rewwio0XF09FF3jc5wtV6rGyAs815SlFFw5vW7ZeLd43zv9tlEc2FzM0H+5Vr9ZRxw==", + "version": "0.3.41", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.41.tgz", + "integrity": "sha512-J/PgWKEt0yugETOE7lOabT16hsV21cLzSxERD7ZhaiwBQkBTSf0Mx9RhjZRT0Ttqe4weM90HGZFyUBqYA73fVA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/firestore": "4.7.5", + "@firebase/component": "0.6.12", + "@firebase/firestore": "4.7.6", "@firebase/firestore-types": "3.0.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -2987,16 +2987,16 @@ } }, "node_modules/@firebase/functions": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.10.tgz", - "integrity": "sha512-TP+Dzebazhw6+GduBdWn1kOJRFH84G2z+BW3pNVfkpFRkc//+uT1Uw2+dLpMGSSBRG7FrcDG91vcPnOFCzr15w==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.12.1.tgz", + "integrity": "sha512-QucRiFrvMMmIGTRhL7ZK2IeBnAWP7lAmfFREMpEtX47GjVqDqGxdFs+Mg7XBzxSc9UjDO4Rxf+aE9xJHU6bGwg==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -3007,15 +3007,15 @@ } }, "node_modules/@firebase/functions-compat": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.16.tgz", - "integrity": "sha512-FL7EXehiiBisNIR7mlb0i+moyWKLVfcEJgh/Wq6ZV6BdrCObpCTz7w5EvuRIEFX5e9cNL2oWInKg8S5X4HtINg==", + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.18.tgz", + "integrity": "sha512-N7+RN5GVus2ORB8cqfSNhfSn4iaYws6F8uCCfn4mtjC7zYS/KH6muzNAhZUdUqlv5YazbVmvxlAoYYF39i8Qzg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/functions": "0.11.10", + "@firebase/component": "0.6.12", + "@firebase/functions": "0.12.1", "@firebase/functions-types": "0.6.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -3032,13 +3032,13 @@ "license": "Apache-2.0" }, "node_modules/@firebase/installations": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.11.tgz", - "integrity": "sha512-w8fY8mw6fxJzsZM2ufmTtomopXl1+bn/syYon+Gpn+0p0nO1cIUEVEFrFazTLaaL9q1CaVhc3HmseRTsI3igAA==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.12.tgz", + "integrity": "sha512-ES/WpuAV2k2YtBTvdaknEo7IY8vaGjIjS3zhnHSAIvY9KwTR8XZFXOJoZ3nSkjN1A5R4MtEh+07drnzPDg9vaw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -3047,15 +3047,15 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.11.tgz", - "integrity": "sha512-SHRgw5LTa6v8LubmJZxcOCwEd1MfWQPUtKdiuCx2VMWnapX54skZd1PkQg0K4l3k+4ujbI2cn7FE6Li9hbChBw==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.12.tgz", + "integrity": "sha512-RhcGknkxmFu92F6Jb3rXxv6a4sytPjJGifRZj8MSURPuv2Xu+/AispCXEfY1ZraobhEHTG5HLGsP6R4l9qB5aA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/installations-types": "0.5.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3084,15 +3084,15 @@ } }, "node_modules/@firebase/messaging": { - "version": "0.12.14", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.14.tgz", - "integrity": "sha512-cSGP34jJswFvME8tdMDkvJvW6T1jEekyMSyq84AMBZ0KEpJbDWuC9n4wKT2lxUm1jaL651iZnn6g51yCl77ICg==", + "version": "0.12.16", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.16.tgz", + "integrity": "sha512-VJ8sCEIeP3+XkfbJA7410WhYGHdloYFZXoHe/vt+vNVDGw8JQPTQSVTRvjrUprEf5I4Tbcnpr2H34lS6zhCHSA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -3101,14 +3101,14 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.14.tgz", - "integrity": "sha512-r9weK8jTEA2aGiwy0IbMQPnzuJ0DHkOQaMxGJOlU2QZ1a7fh6RHpNtaoM+LKnn6u1NQgmAOWYNr9vezVQEm9zw==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.16.tgz", + "integrity": "sha512-9HZZ88Ig3zQ0ok/Pwt4gQcNsOhoEy8hDHoGsV1am6ulgMuGuDVD2gl11Lere2ksL+msM12Lddi2x/7TCqmODZw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/messaging": "0.12.14", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/messaging": "0.12.16", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3122,15 +3122,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/performance": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.11.tgz", - "integrity": "sha512-FlkJFeqLlIeh5T4Am3uE38HVzggliDIEFy/fErEc1faINOUFCb6vQBEoNZGaXvRnTR8lh3X/hP7tv37C7BsK9g==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.12.tgz", + "integrity": "sha512-8mYL4z2jRlKXAi2hjk4G7o2sQLnJCCuTbyvti/xmHf5ZvOIGB01BZec0aDuBIXO+H1MLF62dbye/k91Fr+yc8g==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3138,16 +3138,16 @@ } }, "node_modules/@firebase/performance-compat": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.11.tgz", - "integrity": "sha512-DqeNBy51W2xzlklyC7Ht9JQ94HhTA08PCcM4MDeyG/ol3fqum/+YgtHWQ2IQuduqH9afETthZqLwCZiSgY7hiA==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.12.tgz", + "integrity": "sha512-DyCbDTIwtBTGsEiQxTz/TD23a0na2nrDozceQ5kVkszyFYvliB0YK/9el0wAGIG91SqgTG9pxHtYErzfZc0VWw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/performance": "0.6.11", + "@firebase/performance": "0.6.12", "@firebase/performance-types": "0.2.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3161,15 +3161,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/remote-config": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.11.tgz", - "integrity": "sha512-9z0rgKuws2nj+7cdiqF+NY1QR4na6KnuOvP+jQvgilDOhGtKOcCMq5XHiu66i73A9kFhyU6QQ2pHXxcmaq1pBw==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.5.0.tgz", + "integrity": "sha512-weiEbpBp5PBJTHUWR4GwI7ZacaAg68BKha5QnZ8Go65W4oQjEWqCW/rfskABI/OkrGijlL3CUmCB/SA6mVo0qA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/installations": "0.6.11", + "@firebase/component": "0.6.12", + "@firebase/installations": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3177,16 +3177,16 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.11.tgz", - "integrity": "sha512-zfIjpwPrGuIOZDmduukN086qjhZ1LnbJi/iYzgua+2qeTlO0XdlE1v66gJPwygGB3TOhT0yb9EiUZ3nBNttMqg==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.12.tgz", + "integrity": "sha512-91jLWPtubIuPBngg9SzwvNCWzhMLcyBccmt7TNZP+y1cuYFNOWWHKUXQ3IrxCLB7WwLqQaEu7fTDAjHsTyBsSw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/remote-config": "0.4.11", - "@firebase/remote-config-types": "0.3.3", - "@firebase/util": "1.10.2", + "@firebase/remote-config": "0.5.0", + "@firebase/remote-config-types": "0.4.0", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3194,19 +3194,19 @@ } }, "node_modules/@firebase/remote-config-types": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.3.tgz", - "integrity": "sha512-YlRI9CHxrk3lpQuFup9N1eohpwdWayKZUNZ/YeQ0PZoncJ66P32UsKUKqVXOaieTjJIOh7yH8JEzRdht5s+d6g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz", + "integrity": "sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==", "license": "Apache-2.0" }, "node_modules/@firebase/storage": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.4.tgz", - "integrity": "sha512-b1KaTTRiMupFurIhpGIbReaWev0k5O3ouTHkAPcEssT+FvU3q/1JwzvkX4+ZdB60Fc43Mbp8qQ1gWfT0Z2FP9Q==", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.5.tgz", + "integrity": "sha512-sB/7HNuW0N9tITyD0RxVLNCROuCXkml5i/iPqjwOGKC0xiUfpCOjBE+bb0ABMoN1qYZfqk0y9IuI2TdomjmkNw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/util": "1.10.2", + "@firebase/component": "0.6.12", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -3217,15 +3217,15 @@ } }, "node_modules/@firebase/storage-compat": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.14.tgz", - "integrity": "sha512-Ok5FmXJiapaNAOQ8W8qppnfwgP8540jw2B8M0c4TFZqF4BD+CoKBxW0dRtOuLNGadLhzqqkDZZZtkexxrveQqA==", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.15.tgz", + "integrity": "sha512-Z9afjrK2O9o1ZHWCpprCGZ1BTc3BbvpZvi6tkSteC8H3W/fMM6x+RoSunlzD3hEVV5bkbwdJIqNClLMchvyoPA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.11", - "@firebase/storage": "0.13.4", + "@firebase/component": "0.6.12", + "@firebase/storage": "0.13.5", "@firebase/storage-types": "0.8.3", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -3246,9 +3246,9 @@ } }, "node_modules/@firebase/util": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.2.tgz", - "integrity": "sha512-qnSHIoE9FK+HYnNhTI8q14evyqbc/vHRivfB4TgCIUOl4tosmKSQlp7ltymOlMP4xVIJTg5wrkfcZ60X4nUf7Q==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.3.tgz", + "integrity": "sha512-wfoF5LTy0m2ufUapV0ZnpcGQvuavTbJ5Qr1Ze9OJGL70cSMvhDyjS4w2121XdA3lGZSTOsDOyGhpoDtYwck85A==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -3258,15 +3258,15 @@ } }, "node_modules/@firebase/vertexai": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@firebase/vertexai/-/vertexai-1.0.1.tgz", - "integrity": "sha512-f48MGSofhaS05ebpN7zMIv4tBqYf19pXr5/4njKtNZVLbjxUswDma0SuFDoO+IwgbdkhFxgtNctM+C1zfI/O1Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@firebase/vertexai/-/vertexai-1.0.3.tgz", + "integrity": "sha512-SQHg/RPb3LwQs/xiLcvAZYz9NXyDSZUIIwvgsKh6e4wdULAfyPCZIu6Y2ZYIhZLfk9Q44cKZ+++7RPTaqQJdYA==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", - "@firebase/component": "0.6.11", + "@firebase/component": "0.6.12", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.2", + "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { @@ -8828,39 +8828,39 @@ } }, "node_modules/firebase": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.0.2.tgz", - "integrity": "sha512-w4T8BSJpzdZA25QRch5ahLsgB6uRvg1LEic4BaC5rTD1YygroI1AXp+W+rbMnr8d8EjfAv6t4k8doULIjc1P8Q==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.2.0.tgz", + "integrity": "sha512-ztwPhBLAZMVNZjBeQzzTM4rk2rsRXmdFYcnvjAXh+StbiFVshHKaPO9VRGMUzF48du4Mkz6jN1wkmYCuUJPxLA==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.10", - "@firebase/analytics-compat": "0.2.16", - "@firebase/app": "0.10.16", - "@firebase/app-check": "0.8.10", - "@firebase/app-check-compat": "0.3.17", - "@firebase/app-compat": "0.2.46", + "@firebase/analytics": "0.10.11", + "@firebase/analytics-compat": "0.2.17", + "@firebase/app": "0.10.18", + "@firebase/app-check": "0.8.11", + "@firebase/app-check-compat": "0.3.18", + "@firebase/app-compat": "0.2.48", "@firebase/app-types": "0.9.3", - "@firebase/auth": "1.8.1", - "@firebase/auth-compat": "0.5.16", - "@firebase/data-connect": "0.1.2", - "@firebase/database": "1.0.10", - "@firebase/database-compat": "2.0.1", - "@firebase/firestore": "4.7.5", - "@firebase/firestore-compat": "0.3.40", - "@firebase/functions": "0.11.10", - "@firebase/functions-compat": "0.3.16", - "@firebase/installations": "0.6.11", - "@firebase/installations-compat": "0.2.11", - "@firebase/messaging": "0.12.14", - "@firebase/messaging-compat": "0.2.14", - "@firebase/performance": "0.6.11", - "@firebase/performance-compat": "0.2.11", - "@firebase/remote-config": "0.4.11", - "@firebase/remote-config-compat": "0.2.11", - "@firebase/storage": "0.13.4", - "@firebase/storage-compat": "0.3.14", - "@firebase/util": "1.10.2", - "@firebase/vertexai": "1.0.1" + "@firebase/auth": "1.8.2", + "@firebase/auth-compat": "0.5.17", + "@firebase/data-connect": "0.2.0", + "@firebase/database": "1.0.11", + "@firebase/database-compat": "2.0.2", + "@firebase/firestore": "4.7.6", + "@firebase/firestore-compat": "0.3.41", + "@firebase/functions": "0.12.1", + "@firebase/functions-compat": "0.3.18", + "@firebase/installations": "0.6.12", + "@firebase/installations-compat": "0.2.12", + "@firebase/messaging": "0.12.16", + "@firebase/messaging-compat": "0.2.16", + "@firebase/performance": "0.6.12", + "@firebase/performance-compat": "0.2.12", + "@firebase/remote-config": "0.5.0", + "@firebase/remote-config-compat": "0.2.12", + "@firebase/storage": "0.13.5", + "@firebase/storage-compat": "0.3.15", + "@firebase/util": "1.10.3", + "@firebase/vertexai": "1.0.3" } }, "node_modules/firebase-admin": { diff --git a/sample/package.json b/sample/package.json index 5477d6e41..5e082c20c 100644 --- a/sample/package.json +++ b/sample/package.json @@ -15,7 +15,7 @@ "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", - "@angular/fire": "file:../angularfire/angular-fire-19.0.0.tgz", + "@angular/fire": "file:../angular-fire-19.0.0.tgz", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", diff --git a/src/analytics/firebase.ts b/src/analytics/firebase.ts index cddd7d83a..2c40e5612 100644 --- a/src/analytics/firebase.ts +++ b/src/analytics/firebase.ts @@ -19,12 +19,12 @@ import { export const getAnalytics = ɵzoneWrap(_getAnalytics, true); export const getGoogleAnalyticsClientId = ɵzoneWrap(_getGoogleAnalyticsClientId, true); export const initializeAnalytics = ɵzoneWrap(_initializeAnalytics, true); -export const isSupported = ɵzoneWrap(_isSupported, true); -export const logEvent = ɵzoneWrap(_logEvent, true); -export const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionEnabled, true); -export const setConsent = ɵzoneWrap(_setConsent, true); -export const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true); -export const setDefaultEventParameters = ɵzoneWrap(_setDefaultEventParameters, true); -export const setUserId = ɵzoneWrap(_setUserId, true); -export const setUserProperties = ɵzoneWrap(_setUserProperties, true); +export const isSupported = ɵzoneWrap(_isSupported, false); +export const logEvent = ɵzoneWrap(_logEvent, false, 2); +export const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionEnabled, true, 2); +export const setConsent = ɵzoneWrap(_setConsent, true, 2); +export const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true, 2); +export const setDefaultEventParameters = ɵzoneWrap(_setDefaultEventParameters, true, 2); +export const setUserId = ɵzoneWrap(_setUserId, true, 2); +export const setUserProperties = ɵzoneWrap(_setUserProperties, true, 2); export const settings = ɵzoneWrap(_settings, true); diff --git a/src/app-check/app-check.module.ts b/src/app-check/app-check.module.ts index 324d7f821..b68f848bc 100644 --- a/src/app-check/app-check.module.ts +++ b/src/app-check/app-check.module.ts @@ -10,16 +10,16 @@ import { isDevMode, makeEnvironmentProviders, } from '@angular/core'; -import { VERSION, ɵAPP_CHECK_PROVIDER_NAME, ɵAngularFireSchedulers, ɵAppCheckInstances, ɵgetDefaultInstanceOf } from '@angular/fire'; +import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; import { registerVersion } from 'firebase/app'; import { AppCheck as FirebaseAppCheck } from 'firebase/app-check'; -import { AppCheck } from './app-check'; +import { APP_CHECK_PROVIDER_NAME, AppCheck, AppCheckInstances } from './app-check'; export const PROVIDED_APP_CHECK_INSTANCES = new InjectionToken('angularfire2.app-check-instances'); export function defaultAppCheckInstanceFactory(provided: FirebaseAppCheck[]|undefined, defaultApp: FirebaseApp) { - const defaultAppCheck = ɵgetDefaultInstanceOf(ɵAPP_CHECK_PROVIDER_NAME, provided, defaultApp); + const defaultAppCheck = ɵgetDefaultInstanceOf(APP_CHECK_PROVIDER_NAME, provided, defaultApp); return defaultAppCheck && new AppCheck(defaultAppCheck); } @@ -38,7 +38,7 @@ export function appCheckInstanceFactory(fn: (injector: Injector) => FirebaseAppC } const APP_CHECK_INSTANCES_PROVIDER = { - provide: ɵAppCheckInstances, + provide: AppCheckInstances, deps: [ [new Optional(), PROVIDED_APP_CHECK_INSTANCES ], ] diff --git a/src/app-check/app-check.ts b/src/app-check/app-check.ts index 77ea8dcfd..33d6d91fe 100644 --- a/src/app-check/app-check.ts +++ b/src/app-check/app-check.ts @@ -1,8 +1,10 @@ -import { ɵAPP_CHECK_PROVIDER_NAME, ɵgetAllInstancesOf } from '@angular/fire'; +import { ɵgetAllInstancesOf } from '@angular/fire'; import { AppCheck as FirebaseAppCheck } from 'firebase/app-check'; import { from, timer } from 'rxjs'; import { concatMap, distinct } from 'rxjs/operators'; +export const APP_CHECK_PROVIDER_NAME = 'app-check'; + // see notes in core/firebase.app.module.ts for why we're building the class like this // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface AppCheck extends FirebaseAppCheck {} @@ -13,7 +15,16 @@ export class AppCheck { } } +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface AppCheckInstances extends Array {} + +export class AppCheckInstances { + constructor() { + return ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME); + } +} + export const appCheckInstance$ = timer(0, 300).pipe( - concatMap(() => from(ɵgetAllInstancesOf(ɵAPP_CHECK_PROVIDER_NAME))), + concatMap(() => from(ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME))), distinct(), ); diff --git a/src/app-check/firebase.ts b/src/app-check/firebase.ts index 7519c092b..bfaefcc29 100644 --- a/src/app-check/firebase.ts +++ b/src/app-check/firebase.ts @@ -9,7 +9,7 @@ import { setTokenAutoRefreshEnabled as _setTokenAutoRefreshEnabled } from 'firebase/app-check'; -export const getLimitedUseToken = ɵzoneWrap(_getLimitedUseToken, true); +export const getLimitedUseToken = ɵzoneWrap(_getLimitedUseToken, true, 2); export const getToken = ɵzoneWrap(_getToken, true); export const initializeAppCheck = ɵzoneWrap(_initializeAppCheck, true); export const onTokenChanged = ɵzoneWrap(_onTokenChanged, true); diff --git a/src/app-check/public_api.ts b/src/app-check/public_api.ts index 1651d41e4..bab774cf3 100644 --- a/src/app-check/public_api.ts +++ b/src/app-check/public_api.ts @@ -1,4 +1,3 @@ -export { AppCheck, appCheckInstance$ } from './app-check'; -export { ɵAppCheckInstances as AppCheckInstances } from '@angular/fire'; +export { AppCheck, appCheckInstance$, AppCheckInstances } from './app-check'; export { provideAppCheck, AppCheckModule } from './app-check.module'; export * from './firebase'; diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts index 5951a823c..e20274658 100644 --- a/src/auth/auth.module.ts +++ b/src/auth/auth.module.ts @@ -8,8 +8,8 @@ import { makeEnvironmentProviders, } from '@angular/core'; import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; -import { ɵAppCheckInstances } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; import { registerVersion } from 'firebase/app'; import { Auth as FirebaseAuth } from 'firebase/auth'; import { AUTH_PROVIDER_NAME, Auth, AuthInstances } from './auth'; @@ -70,7 +70,7 @@ export function provideAuth(fn: (injector: Injector) => FirebaseAuth, ...deps: a Injector, ɵAngularFireSchedulers, FirebaseApps, - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/auth/firebase.ts b/src/auth/firebase.ts index 97c07f167..743ca90d8 100644 --- a/src/auth/firebase.ts +++ b/src/auth/firebase.ts @@ -23,7 +23,6 @@ import { linkWithPhoneNumber as _linkWithPhoneNumber, linkWithPopup as _linkWithPopup, linkWithRedirect as _linkWithRedirect, - multiFactor as _multiFactor, onAuthStateChanged as _onAuthStateChanged, onIdTokenChanged as _onIdTokenChanged, parseActionCodeURL as _parseActionCodeURL, @@ -59,14 +58,14 @@ import { } from 'firebase/auth'; export const applyActionCode = ɵzoneWrap(_applyActionCode, true); -export const beforeAuthStateChanged = ɵzoneWrap(_beforeAuthStateChanged, false); +export const beforeAuthStateChanged = ɵzoneWrap(_beforeAuthStateChanged, true); export const checkActionCode = ɵzoneWrap(_checkActionCode, true); -export const confirmPasswordReset = ɵzoneWrap(_confirmPasswordReset, true); +export const confirmPasswordReset = ɵzoneWrap(_confirmPasswordReset, true, 2); export const connectAuthEmulator = ɵzoneWrap(_connectAuthEmulator, true); -export const createUserWithEmailAndPassword = ɵzoneWrap(_createUserWithEmailAndPassword, true); -export const deleteUser = ɵzoneWrap(_deleteUser, true); -export const fetchSignInMethodsForEmail = ɵzoneWrap(_fetchSignInMethodsForEmail, true); -export const getAdditionalUserInfo = ɵzoneWrap(_getAdditionalUserInfo, true); +export const createUserWithEmailAndPassword = ɵzoneWrap(_createUserWithEmailAndPassword, true, 2); +export const deleteUser = ɵzoneWrap(_deleteUser, true, 2); +export const fetchSignInMethodsForEmail = ɵzoneWrap(_fetchSignInMethodsForEmail, true, 2); +export const getAdditionalUserInfo = ɵzoneWrap(_getAdditionalUserInfo, true, 2); export const getAuth = ɵzoneWrap(_getAuth, true); export const getIdToken = ɵzoneWrap(_getIdToken, true); export const getIdTokenResult = ɵzoneWrap(_getIdTokenResult, true); @@ -75,40 +74,39 @@ export const getRedirectResult = ɵzoneWrap(_getRedirectResult, true); export const initializeAuth = ɵzoneWrap(_initializeAuth, true); export const initializeRecaptchaConfig = ɵzoneWrap(_initializeRecaptchaConfig, true); export const isSignInWithEmailLink = ɵzoneWrap(_isSignInWithEmailLink, true); -export const linkWithCredential = ɵzoneWrap(_linkWithCredential, true); -export const linkWithPhoneNumber = ɵzoneWrap(_linkWithPhoneNumber, true); -export const linkWithPopup = ɵzoneWrap(_linkWithPopup, true); -export const linkWithRedirect = ɵzoneWrap(_linkWithRedirect, true); -export const multiFactor = ɵzoneWrap(_multiFactor, true); +export const linkWithCredential = ɵzoneWrap(_linkWithCredential, true, 2); +export const linkWithPhoneNumber = ɵzoneWrap(_linkWithPhoneNumber, true, 2); +export const linkWithPopup = ɵzoneWrap(_linkWithPopup, true, 2); +export const linkWithRedirect = ɵzoneWrap(_linkWithRedirect, true, 2); export const onAuthStateChanged = ɵzoneWrap(_onAuthStateChanged, true); export const onIdTokenChanged = ɵzoneWrap(_onIdTokenChanged, true); export const parseActionCodeURL = ɵzoneWrap(_parseActionCodeURL, true); -export const reauthenticateWithCredential = ɵzoneWrap(_reauthenticateWithCredential, true); -export const reauthenticateWithPhoneNumber = ɵzoneWrap(_reauthenticateWithPhoneNumber, true); -export const reauthenticateWithPopup = ɵzoneWrap(_reauthenticateWithPopup, true); -export const reauthenticateWithRedirect = ɵzoneWrap(_reauthenticateWithRedirect, true); -export const reload = ɵzoneWrap(_reload, true); -export const revokeAccessToken = ɵzoneWrap(_revokeAccessToken, true); -export const sendEmailVerification = ɵzoneWrap(_sendEmailVerification, true); -export const sendPasswordResetEmail = ɵzoneWrap(_sendPasswordResetEmail, true); -export const sendSignInLinkToEmail = ɵzoneWrap(_sendSignInLinkToEmail, true); +export const reauthenticateWithCredential = ɵzoneWrap(_reauthenticateWithCredential, true, 2); +export const reauthenticateWithPhoneNumber = ɵzoneWrap(_reauthenticateWithPhoneNumber, true, 2); +export const reauthenticateWithPopup = ɵzoneWrap(_reauthenticateWithPopup, true, 2); +export const reauthenticateWithRedirect = ɵzoneWrap(_reauthenticateWithRedirect, true, 2); +export const reload = ɵzoneWrap(_reload, true, 2); +export const revokeAccessToken = ɵzoneWrap(_revokeAccessToken, true, 2); +export const sendEmailVerification = ɵzoneWrap(_sendEmailVerification, true, 2); +export const sendPasswordResetEmail = ɵzoneWrap(_sendPasswordResetEmail, true, 2); +export const sendSignInLinkToEmail = ɵzoneWrap(_sendSignInLinkToEmail, true, 2); export const setPersistence = ɵzoneWrap(_setPersistence, true); -export const signInAnonymously = ɵzoneWrap(_signInAnonymously, true); -export const signInWithCredential = ɵzoneWrap(_signInWithCredential, true); -export const signInWithCustomToken = ɵzoneWrap(_signInWithCustomToken, true); -export const signInWithEmailAndPassword = ɵzoneWrap(_signInWithEmailAndPassword, true); -export const signInWithEmailLink = ɵzoneWrap(_signInWithEmailLink, true); -export const signInWithPhoneNumber = ɵzoneWrap(_signInWithPhoneNumber, true); -export const signInWithPopup = ɵzoneWrap(_signInWithPopup, true); -export const signInWithRedirect = ɵzoneWrap(_signInWithRedirect, true); -export const signOut = ɵzoneWrap(_signOut, true); -export const unlink = ɵzoneWrap(_unlink, true); -export const updateCurrentUser = ɵzoneWrap(_updateCurrentUser, true); -export const updateEmail = ɵzoneWrap(_updateEmail, true); -export const updatePassword = ɵzoneWrap(_updatePassword, true); -export const updatePhoneNumber = ɵzoneWrap(_updatePhoneNumber, true); -export const updateProfile = ɵzoneWrap(_updateProfile, true); -export const useDeviceLanguage = ɵzoneWrap(_useDeviceLanguage, true); -export const validatePassword = ɵzoneWrap(_validatePassword, true); -export const verifyBeforeUpdateEmail = ɵzoneWrap(_verifyBeforeUpdateEmail, true); -export const verifyPasswordResetCode = ɵzoneWrap(_verifyPasswordResetCode, true); +export const signInAnonymously = ɵzoneWrap(_signInAnonymously, true, 2); +export const signInWithCredential = ɵzoneWrap(_signInWithCredential, true, 2); +export const signInWithCustomToken = ɵzoneWrap(_signInWithCustomToken, true, 2); +export const signInWithEmailAndPassword = ɵzoneWrap(_signInWithEmailAndPassword, true, 2); +export const signInWithEmailLink = ɵzoneWrap(_signInWithEmailLink, true, 2); +export const signInWithPhoneNumber = ɵzoneWrap(_signInWithPhoneNumber, true, 2); +export const signInWithPopup = ɵzoneWrap(_signInWithPopup, true, 2); +export const signInWithRedirect = ɵzoneWrap(_signInWithRedirect, true, 2); +export const signOut = ɵzoneWrap(_signOut, true, 2); +export const unlink = ɵzoneWrap(_unlink, true, 2); +export const updateCurrentUser = ɵzoneWrap(_updateCurrentUser, true, 2); +export const updateEmail = ɵzoneWrap(_updateEmail, true, 2); +export const updatePassword = ɵzoneWrap(_updatePassword, true, 2); +export const updatePhoneNumber = ɵzoneWrap(_updatePhoneNumber, true, 2); +export const updateProfile = ɵzoneWrap(_updateProfile, true, 2); +export const useDeviceLanguage = ɵzoneWrap(_useDeviceLanguage, true, 2); +export const validatePassword = ɵzoneWrap(_validatePassword, true, 2); +export const verifyBeforeUpdateEmail = ɵzoneWrap(_verifyBeforeUpdateEmail, true, 2); +export const verifyPasswordResetCode = ɵzoneWrap(_verifyPasswordResetCode, true, 2); diff --git a/src/compat/storage/ref.ts b/src/compat/storage/ref.ts index 1d9cce47a..26bd14749 100644 --- a/src/compat/storage/ref.ts +++ b/src/compat/storage/ref.ts @@ -1,8 +1,8 @@ import { Injector } from '@angular/core'; import { pendingUntilEvent } from '@angular/core/rxjs-interop'; -import { observeOutsideAngular } from '@angular/fire'; +import { ɵAngularFireSchedulers } from '@angular/fire'; import { Observable, from, of } from 'rxjs'; -import { switchMap } from 'rxjs/operators'; +import { observeOn, switchMap } from 'rxjs/operators'; import { ListOptions, ListResult, Reference, SettableMetadata, StringFormat, UploadMetadata } from './interfaces'; import { AngularFireUploadTask, createUploadTask } from './task'; @@ -28,12 +28,12 @@ export function createStorageRef( ): AngularFireStorageReference { return { getDownloadURL: () => of(undefined).pipe( - observeOutsideAngular, + observeOn(injector.get(ɵAngularFireSchedulers).outsideAngular), switchMap(() => ref.getDownloadURL()), pendingUntilEvent(injector) ), getMetadata: () => of(undefined).pipe( - observeOutsideAngular, + observeOn(injector.get(ɵAngularFireSchedulers).outsideAngular), switchMap(() => ref.getMetadata()), pendingUntilEvent(injector) ), diff --git a/src/core.ts b/src/core.ts index 9d42bf90a..e0ad8f7f5 100644 --- a/src/core.ts +++ b/src/core.ts @@ -1,7 +1,6 @@ import { Version } from '@angular/core'; import { ComponentContainer } from '@firebase/component'; import { FirebaseApp, getApps } from 'firebase/app'; -import type { AppCheck } from 'firebase/app-check'; export const VERSION = new Version('ANGULARFIRE2_VERSION'); @@ -42,14 +41,3 @@ export const ɵgetAllInstancesOf = (identifier: string, app?: Fireba }); return instances; }; - -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface ɵAppCheckInstances extends Array {} - -export class ɵAppCheckInstances { - constructor() { - return ɵgetAllInstancesOf(ɵAPP_CHECK_PROVIDER_NAME); - } -} - -export const ɵAPP_CHECK_PROVIDER_NAME = 'app-check'; diff --git a/src/data-connect/firebase.ts b/src/data-connect/firebase.ts index fd2015ca1..2597117d8 100644 --- a/src/data-connect/firebase.ts +++ b/src/data-connect/firebase.ts @@ -18,9 +18,9 @@ export const connectDataConnectEmulator = ɵzoneWrap(_connectDataConnectEmulator export const executeMutation = ɵzoneWrap(_executeMutation, true); export const executeQuery = ɵzoneWrap(_executeQuery, true); export const getDataConnect = ɵzoneWrap(_getDataConnect, true); -export const mutationRef = ɵzoneWrap(_mutationRef, true); -export const queryRef = ɵzoneWrap(_queryRef, true); +export const mutationRef = ɵzoneWrap(_mutationRef, true, 2); +export const queryRef = ɵzoneWrap(_queryRef, true, 2); export const setLogLevel = ɵzoneWrap(_setLogLevel, true); export const subscribe = ɵzoneWrap(_subscribe, true); export const terminate = ɵzoneWrap(_terminate, true); -export const toQueryRef = ɵzoneWrap(_toQueryRef, true); +export const toQueryRef = ɵzoneWrap(_toQueryRef, true, 2); diff --git a/src/database/database.module.ts b/src/database/database.module.ts index 7de415c38..7ded9070f 100644 --- a/src/database/database.module.ts +++ b/src/database/database.module.ts @@ -8,8 +8,8 @@ import { makeEnvironmentProviders, } from '@angular/core'; import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; -import { ɵAppCheckInstances } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; import { AuthInstances } from '@angular/fire/auth'; import { registerVersion } from 'firebase/app'; import { Database as FirebaseDatabase } from 'firebase/database'; @@ -73,7 +73,7 @@ export function provideDatabase(fn: (injector: Injector) => FirebaseDatabase, .. FirebaseApps, // Database+Auth work better if Auth is loaded first [new Optional(), AuthInstances ], - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/database/firebase.ts b/src/database/firebase.ts index c7c73cd25..738794e8e 100644 --- a/src/database/firebase.ts +++ b/src/database/firebase.ts @@ -34,7 +34,6 @@ import { refFromURL as _refFromURL, remove as _remove, runTransaction as _runTransaction, - serverTimestamp as _serverTimestamp, set as _set, setPriority as _setPriority, setWithPriority as _setWithPriority, @@ -43,21 +42,21 @@ import { update as _update } from 'firebase/database'; -export const child = ɵzoneWrap(_child, true); +export const child = ɵzoneWrap(_child, true, 2); export const connectDatabaseEmulator = ɵzoneWrap(_connectDatabaseEmulator, true); export const enableLogging = ɵzoneWrap(_enableLogging, true); -export const endAt = ɵzoneWrap(_endAt, true); -export const endBefore = ɵzoneWrap(_endBefore, true); -export const equalTo = ɵzoneWrap(_equalTo, true); +export const endAt = ɵzoneWrap(_endAt, true, 2); +export const endBefore = ɵzoneWrap(_endBefore, true, 2); +export const equalTo = ɵzoneWrap(_equalTo, true, 2); export const forceLongPolling = ɵzoneWrap(_forceLongPolling, true); export const forceWebSockets = ɵzoneWrap(_forceWebSockets, true); export const get = ɵzoneWrap(_get, true); export const getDatabase = ɵzoneWrap(_getDatabase, true); export const goOffline = ɵzoneWrap(_goOffline, true); export const goOnline = ɵzoneWrap(_goOnline, true); -export const increment = ɵzoneWrap(_increment, true); -export const limitToFirst = ɵzoneWrap(_limitToFirst, true); -export const limitToLast = ɵzoneWrap(_limitToLast, true); +export const increment = ɵzoneWrap(_increment, true, 2); +export const limitToFirst = ɵzoneWrap(_limitToFirst, true, 2); +export const limitToLast = ɵzoneWrap(_limitToLast, true, 2); export const off = ɵzoneWrap(_off, true); export const onChildAdded = ɵzoneWrap(_onChildAdded, true); export const onChildChanged = ɵzoneWrap(_onChildChanged, true); @@ -65,20 +64,19 @@ export const onChildMoved = ɵzoneWrap(_onChildMoved, true); export const onChildRemoved = ɵzoneWrap(_onChildRemoved, true); export const onDisconnect = ɵzoneWrap(_onDisconnect, true); export const onValue = ɵzoneWrap(_onValue, true); -export const orderByChild = ɵzoneWrap(_orderByChild, true); -export const orderByKey = ɵzoneWrap(_orderByKey, true); -export const orderByPriority = ɵzoneWrap(_orderByPriority, true); -export const orderByValue = ɵzoneWrap(_orderByValue, true); -export const push = ɵzoneWrap(_push, true); -export const query = ɵzoneWrap(_query, true); -export const ref = ɵzoneWrap(_ref, true); -export const refFromURL = ɵzoneWrap(_refFromURL, true); -export const remove = ɵzoneWrap(_remove, true); +export const orderByChild = ɵzoneWrap(_orderByChild, true, 2); +export const orderByKey = ɵzoneWrap(_orderByKey, true, 2); +export const orderByPriority = ɵzoneWrap(_orderByPriority, true, 2); +export const orderByValue = ɵzoneWrap(_orderByValue, true, 2); +export const push = ɵzoneWrap(_push, true, 2); +export const query = ɵzoneWrap(_query, true, 2); +export const ref = ɵzoneWrap(_ref, true, 2); +export const refFromURL = ɵzoneWrap(_refFromURL, true, 2); +export const remove = ɵzoneWrap(_remove, true, 2); export const runTransaction = ɵzoneWrap(_runTransaction, true); -export const serverTimestamp = ɵzoneWrap(_serverTimestamp, true); -export const set = ɵzoneWrap(_set, true); -export const setPriority = ɵzoneWrap(_setPriority, true); -export const setWithPriority = ɵzoneWrap(_setWithPriority, true); -export const startAfter = ɵzoneWrap(_startAfter, true); -export const startAt = ɵzoneWrap(_startAt, true); -export const update = ɵzoneWrap(_update, true); +export const set = ɵzoneWrap(_set, true, 2); +export const setPriority = ɵzoneWrap(_setPriority, true, 2); +export const setWithPriority = ɵzoneWrap(_setWithPriority, true, 2); +export const startAfter = ɵzoneWrap(_startAfter, true, 2); +export const startAt = ɵzoneWrap(_startAt, true, 2); +export const update = ɵzoneWrap(_update, true, 2); diff --git a/src/firestore/firebase.ts b/src/firestore/firebase.ts index 0b45fd51f..74de8fc69 100644 --- a/src/firestore/firebase.ts +++ b/src/firestore/firebase.ts @@ -6,14 +6,10 @@ import { aggregateFieldEqual as _aggregateFieldEqual, aggregateQuerySnapshotEqual as _aggregateQuerySnapshotEqual, and as _and, - arrayRemove as _arrayRemove, - arrayUnion as _arrayUnion, - average as _average, clearIndexedDbPersistence as _clearIndexedDbPersistence, collection as _collection, collectionGroup as _collectionGroup, connectFirestoreEmulator as _connectFirestoreEmulator, - count as _count, deleteAllPersistentCacheIndexes as _deleteAllPersistentCacheIndexes, deleteDoc as _deleteDoc, deleteField as _deleteField, @@ -42,22 +38,15 @@ import { limit as _limit, limitToLast as _limitToLast, loadBundle as _loadBundle, - memoryEagerGarbageCollector as _memoryEagerGarbageCollector, - memoryLocalCache as _memoryLocalCache, - memoryLruGarbageCollector as _memoryLruGarbageCollector, namedQuery as _namedQuery, onSnapshot as _onSnapshot, onSnapshotsInSync as _onSnapshotsInSync, or as _or, orderBy as _orderBy, - persistentLocalCache as _persistentLocalCache, - persistentMultipleTabManager as _persistentMultipleTabManager, - persistentSingleTabManager as _persistentSingleTabManager, query as _query, queryEqual as _queryEqual, refEqual as _refEqual, runTransaction as _runTransaction, - serverTimestamp as _serverTimestamp, setDoc as _setDoc, setIndexConfiguration as _setIndexConfiguration, setLogLevel as _setLogLevel, @@ -73,31 +62,27 @@ import { writeBatch as _writeBatch } from 'firebase/firestore'; -export const addDoc = ɵzoneWrap(_addDoc, true); -export const aggregateFieldEqual = ɵzoneWrap(_aggregateFieldEqual, true); -export const aggregateQuerySnapshotEqual = ɵzoneWrap(_aggregateQuerySnapshotEqual, true); -export const and = ɵzoneWrap(_and, true); -export const arrayRemove = ɵzoneWrap(_arrayRemove, true); -export const arrayUnion = ɵzoneWrap(_arrayUnion, true); -export const average = ɵzoneWrap(_average, true); +export const addDoc = ɵzoneWrap(_addDoc, true, 2); +export const aggregateFieldEqual = ɵzoneWrap(_aggregateFieldEqual, true, 2); +export const aggregateQuerySnapshotEqual = ɵzoneWrap(_aggregateQuerySnapshotEqual, true, 2); +export const and = ɵzoneWrap(_and, true, 2); export const clearIndexedDbPersistence = ɵzoneWrap(_clearIndexedDbPersistence, true); -export const collection = ɵzoneWrap(_collection, true); -export const collectionGroup = ɵzoneWrap(_collectionGroup, true); +export const collection = ɵzoneWrap(_collection, true, 2); +export const collectionGroup = ɵzoneWrap(_collectionGroup, true, 2); export const connectFirestoreEmulator = ɵzoneWrap(_connectFirestoreEmulator, true); -export const count = ɵzoneWrap(_count, true); export const deleteAllPersistentCacheIndexes = ɵzoneWrap(_deleteAllPersistentCacheIndexes, true); -export const deleteDoc = ɵzoneWrap(_deleteDoc, true); -export const deleteField = ɵzoneWrap(_deleteField, true); +export const deleteDoc = ɵzoneWrap(_deleteDoc, true, 2); +export const deleteField = ɵzoneWrap(_deleteField, true, 2); export const disableNetwork = ɵzoneWrap(_disableNetwork, true); export const disablePersistentCacheIndexAutoCreation = ɵzoneWrap(_disablePersistentCacheIndexAutoCreation, true); -export const doc = ɵzoneWrap(_doc, true); -export const documentId = ɵzoneWrap(_documentId, true); +export const doc = ɵzoneWrap(_doc, true, 2); +export const documentId = ɵzoneWrap(_documentId, true, 2); export const enableIndexedDbPersistence = ɵzoneWrap(_enableIndexedDbPersistence, true); export const enableMultiTabIndexedDbPersistence = ɵzoneWrap(_enableMultiTabIndexedDbPersistence, true); export const enableNetwork = ɵzoneWrap(_enableNetwork, true); export const enablePersistentCacheIndexAutoCreation = ɵzoneWrap(_enablePersistentCacheIndexAutoCreation, true); -export const endAt = ɵzoneWrap(_endAt, true); -export const endBefore = ɵzoneWrap(_endBefore, true); +export const endAt = ɵzoneWrap(_endAt, true, 2); +export const endBefore = ɵzoneWrap(_endBefore, true, 2); export const getAggregateFromServer = ɵzoneWrap(_getAggregateFromServer, true); export const getCountFromServer = ɵzoneWrap(_getCountFromServer, true); export const getDoc = ɵzoneWrap(_getDoc, true); @@ -108,37 +93,30 @@ export const getDocsFromCache = ɵzoneWrap(_getDocsFromCache, true); export const getDocsFromServer = ɵzoneWrap(_getDocsFromServer, true); export const getFirestore = ɵzoneWrap(_getFirestore, true); export const getPersistentCacheIndexManager = ɵzoneWrap(_getPersistentCacheIndexManager, true); -export const increment = ɵzoneWrap(_increment, true); +export const increment = ɵzoneWrap(_increment, true, 2); export const initializeFirestore = ɵzoneWrap(_initializeFirestore, true); -export const limit = ɵzoneWrap(_limit, true); -export const limitToLast = ɵzoneWrap(_limitToLast, true); +export const limit = ɵzoneWrap(_limit, true, 2); +export const limitToLast = ɵzoneWrap(_limitToLast, true, 2); export const loadBundle = ɵzoneWrap(_loadBundle, true); -export const memoryEagerGarbageCollector = ɵzoneWrap(_memoryEagerGarbageCollector, true); -export const memoryLocalCache = ɵzoneWrap(_memoryLocalCache, true); -export const memoryLruGarbageCollector = ɵzoneWrap(_memoryLruGarbageCollector, true); -export const namedQuery = ɵzoneWrap(_namedQuery, true); +export const namedQuery = ɵzoneWrap(_namedQuery, true, 2); export const onSnapshot = ɵzoneWrap(_onSnapshot, true); export const onSnapshotsInSync = ɵzoneWrap(_onSnapshotsInSync, true); -export const or = ɵzoneWrap(_or, true); -export const orderBy = ɵzoneWrap(_orderBy, true); -export const persistentLocalCache = ɵzoneWrap(_persistentLocalCache, true); -export const persistentMultipleTabManager = ɵzoneWrap(_persistentMultipleTabManager, true); -export const persistentSingleTabManager = ɵzoneWrap(_persistentSingleTabManager, true); -export const query = ɵzoneWrap(_query, true); -export const queryEqual = ɵzoneWrap(_queryEqual, true); -export const refEqual = ɵzoneWrap(_refEqual, true); +export const or = ɵzoneWrap(_or, true, 2); +export const orderBy = ɵzoneWrap(_orderBy, true, 2); +export const query = ɵzoneWrap(_query, true, 2); +export const queryEqual = ɵzoneWrap(_queryEqual, true, 2); +export const refEqual = ɵzoneWrap(_refEqual, true, 2); export const runTransaction = ɵzoneWrap(_runTransaction, true); -export const serverTimestamp = ɵzoneWrap(_serverTimestamp, true); -export const setDoc = ɵzoneWrap(_setDoc, true); +export const setDoc = ɵzoneWrap(_setDoc, true, 2); export const setIndexConfiguration = ɵzoneWrap(_setIndexConfiguration, true); export const setLogLevel = ɵzoneWrap(_setLogLevel, true); -export const snapshotEqual = ɵzoneWrap(_snapshotEqual, true); -export const startAfter = ɵzoneWrap(_startAfter, true); -export const startAt = ɵzoneWrap(_startAt, true); -export const sum = ɵzoneWrap(_sum, true); +export const snapshotEqual = ɵzoneWrap(_snapshotEqual, true, 2); +export const startAfter = ɵzoneWrap(_startAfter, true, 2); +export const startAt = ɵzoneWrap(_startAt, true, 2); +export const sum = ɵzoneWrap(_sum, true, 2); export const terminate = ɵzoneWrap(_terminate, true); -export const updateDoc = ɵzoneWrap(_updateDoc, true); -export const vector = ɵzoneWrap(_vector, true); +export const updateDoc = ɵzoneWrap(_updateDoc, true, 2); +export const vector = ɵzoneWrap(_vector, true, 2); export const waitForPendingWrites = ɵzoneWrap(_waitForPendingWrites, true); -export const where = ɵzoneWrap(_where, true); -export const writeBatch = ɵzoneWrap(_writeBatch, true); +export const where = ɵzoneWrap(_where, true, 2); +export const writeBatch = ɵzoneWrap(_writeBatch, true, 2); diff --git a/src/firestore/firestore.module.ts b/src/firestore/firestore.module.ts index 567f329bb..4946af42e 100644 --- a/src/firestore/firestore.module.ts +++ b/src/firestore/firestore.module.ts @@ -8,8 +8,8 @@ import { makeEnvironmentProviders, } from '@angular/core'; import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; -import { ɵAppCheckInstances } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; import { AuthInstances } from '@angular/fire/auth'; import { registerVersion } from 'firebase/app'; import { Firestore as FirebaseFirestore } from 'firebase/firestore'; @@ -74,7 +74,7 @@ export function provideFirestore(fn: (injector: Injector) => FirebaseFirestore, FirebaseApps, // Firestore+Auth work better if Auth is loaded first [new Optional(), AuthInstances ], - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/firestore/lite/firebase.ts b/src/firestore/lite/firebase.ts index 6fdc5e446..47ef25367 100644 --- a/src/firestore/lite/firebase.ts +++ b/src/firestore/lite/firebase.ts @@ -6,13 +6,9 @@ import { aggregateFieldEqual as _aggregateFieldEqual, aggregateQuerySnapshotEqual as _aggregateQuerySnapshotEqual, and as _and, - arrayRemove as _arrayRemove, - arrayUnion as _arrayUnion, - average as _average, collection as _collection, collectionGroup as _collectionGroup, connectFirestoreEmulator as _connectFirestoreEmulator, - count as _count, deleteDoc as _deleteDoc, deleteField as _deleteField, doc as _doc, @@ -34,7 +30,6 @@ import { queryEqual as _queryEqual, refEqual as _refEqual, runTransaction as _runTransaction, - serverTimestamp as _serverTimestamp, setDoc as _setDoc, setLogLevel as _setLogLevel, snapshotEqual as _snapshotEqual, @@ -48,47 +43,42 @@ import { writeBatch as _writeBatch } from 'firebase/firestore/lite'; -export const addDoc = ɵzoneWrap(_addDoc, true); -export const aggregateFieldEqual = ɵzoneWrap(_aggregateFieldEqual, true); -export const aggregateQuerySnapshotEqual = ɵzoneWrap(_aggregateQuerySnapshotEqual, true); -export const and = ɵzoneWrap(_and, true); -export const arrayRemove = ɵzoneWrap(_arrayRemove, true); -export const arrayUnion = ɵzoneWrap(_arrayUnion, true); -export const average = ɵzoneWrap(_average, true); -export const collection = ɵzoneWrap(_collection, true); -export const collectionGroup = ɵzoneWrap(_collectionGroup, true); +export const addDoc = ɵzoneWrap(_addDoc, true, 2); +export const aggregateFieldEqual = ɵzoneWrap(_aggregateFieldEqual, true, 2); +export const aggregateQuerySnapshotEqual = ɵzoneWrap(_aggregateQuerySnapshotEqual, true, 2); +export const and = ɵzoneWrap(_and, true, 2); +export const collection = ɵzoneWrap(_collection, true, 2); +export const collectionGroup = ɵzoneWrap(_collectionGroup, true, 2); export const connectFirestoreEmulator = ɵzoneWrap(_connectFirestoreEmulator, true); -export const count = ɵzoneWrap(_count, true); -export const deleteDoc = ɵzoneWrap(_deleteDoc, true); -export const deleteField = ɵzoneWrap(_deleteField, true); -export const doc = ɵzoneWrap(_doc, true); -export const documentId = ɵzoneWrap(_documentId, true); -export const endAt = ɵzoneWrap(_endAt, true); -export const endBefore = ɵzoneWrap(_endBefore, true); +export const deleteDoc = ɵzoneWrap(_deleteDoc, true, 2); +export const deleteField = ɵzoneWrap(_deleteField, true, 2); +export const doc = ɵzoneWrap(_doc, true, 2); +export const documentId = ɵzoneWrap(_documentId, true, 2); +export const endAt = ɵzoneWrap(_endAt, true, 2); +export const endBefore = ɵzoneWrap(_endBefore, true, 2); export const getAggregate = ɵzoneWrap(_getAggregate, true); export const getCount = ɵzoneWrap(_getCount, true); export const getDoc = ɵzoneWrap(_getDoc, true); export const getDocs = ɵzoneWrap(_getDocs, true); export const getFirestore = ɵzoneWrap(_getFirestore, true); -export const increment = ɵzoneWrap(_increment, true); +export const increment = ɵzoneWrap(_increment, true, 2); export const initializeFirestore = ɵzoneWrap(_initializeFirestore, true); -export const limit = ɵzoneWrap(_limit, true); -export const limitToLast = ɵzoneWrap(_limitToLast, true); -export const or = ɵzoneWrap(_or, true); -export const orderBy = ɵzoneWrap(_orderBy, true); -export const query = ɵzoneWrap(_query, true); -export const queryEqual = ɵzoneWrap(_queryEqual, true); -export const refEqual = ɵzoneWrap(_refEqual, true); +export const limit = ɵzoneWrap(_limit, true, 2); +export const limitToLast = ɵzoneWrap(_limitToLast, true, 2); +export const or = ɵzoneWrap(_or, true, 2); +export const orderBy = ɵzoneWrap(_orderBy, true, 2); +export const query = ɵzoneWrap(_query, true, 2); +export const queryEqual = ɵzoneWrap(_queryEqual, true, 2); +export const refEqual = ɵzoneWrap(_refEqual, true, 2); export const runTransaction = ɵzoneWrap(_runTransaction, true); -export const serverTimestamp = ɵzoneWrap(_serverTimestamp, true); -export const setDoc = ɵzoneWrap(_setDoc, true); +export const setDoc = ɵzoneWrap(_setDoc, true, 2); export const setLogLevel = ɵzoneWrap(_setLogLevel, true); -export const snapshotEqual = ɵzoneWrap(_snapshotEqual, true); -export const startAfter = ɵzoneWrap(_startAfter, true); -export const startAt = ɵzoneWrap(_startAt, true); -export const sum = ɵzoneWrap(_sum, true); +export const snapshotEqual = ɵzoneWrap(_snapshotEqual, true, 2); +export const startAfter = ɵzoneWrap(_startAfter, true, 2); +export const startAt = ɵzoneWrap(_startAt, true, 2); +export const sum = ɵzoneWrap(_sum, true, 2); export const terminate = ɵzoneWrap(_terminate, true); -export const updateDoc = ɵzoneWrap(_updateDoc, true); -export const vector = ɵzoneWrap(_vector, true); -export const where = ɵzoneWrap(_where, true); -export const writeBatch = ɵzoneWrap(_writeBatch, true); +export const updateDoc = ɵzoneWrap(_updateDoc, true, 2); +export const vector = ɵzoneWrap(_vector, true, 2); +export const where = ɵzoneWrap(_where, true, 2); +export const writeBatch = ɵzoneWrap(_writeBatch, true, 2); diff --git a/src/firestore/lite/lite.module.ts b/src/firestore/lite/lite.module.ts index f191cbcef..f72409b93 100644 --- a/src/firestore/lite/lite.module.ts +++ b/src/firestore/lite/lite.module.ts @@ -7,8 +7,9 @@ import { Optional, makeEnvironmentProviders, } from '@angular/core'; -import { VERSION, ɵAngularFireSchedulers, ɵAppCheckInstances, ɵgetDefaultInstanceOf } from '@angular/fire'; +import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances} from "@angular/fire/app-check"; import { AuthInstances } from '@angular/fire/auth'; import { registerVersion } from 'firebase/app'; import { Firestore as FirebaseFirestore } from 'firebase/firestore/lite'; @@ -73,7 +74,7 @@ export function provideFirestore(fn: (injector: Injector) => FirebaseFirestore, FirebaseApps, // Firestore+Auth work better if Auth is loaded first [new Optional(), AuthInstances ], - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/functions/functions.module.ts b/src/functions/functions.module.ts index 044a65dc7..90e0c4331 100644 --- a/src/functions/functions.module.ts +++ b/src/functions/functions.module.ts @@ -8,8 +8,8 @@ import { makeEnvironmentProviders, } from '@angular/core'; import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; -import { ɵAppCheckInstances } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; import { AuthInstances } from '@angular/fire/auth'; import { registerVersion } from 'firebase/app'; import { Functions as FirebaseFunctions } from 'firebase/functions'; @@ -74,7 +74,7 @@ export function provideFunctions(fn: (injector: Injector) => FirebaseFunctions, FirebaseApps, // Defensively load Auth first, if provided [new Optional(), AuthInstances ], - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/messaging/firebase.ts b/src/messaging/firebase.ts index f133679ae..69e76baca 100644 --- a/src/messaging/firebase.ts +++ b/src/messaging/firebase.ts @@ -9,7 +9,7 @@ import { onMessage as _onMessage } from 'firebase/messaging'; -export const deleteToken = ɵzoneWrap(_deleteToken, true); +export const deleteToken = ɵzoneWrap(_deleteToken, true, 2); export const getMessaging = ɵzoneWrap(_getMessaging, true); export const getToken = ɵzoneWrap(_getToken, true); export const isSupported = ɵzoneWrap(_isSupported, false); diff --git a/src/package.json b/src/package.json index 6a0840d67..b4e78e8ad 100644 --- a/src/package.json +++ b/src/package.json @@ -36,7 +36,7 @@ "@angular/platform-server": { "optional": true } }, "dependencies": { - "firebase": "^11.0.2", + "firebase": "^11.2.0", "rxfire": "^6.1.0", "@angular-devkit/schematics": "^19.0.0", "@schematics/angular": "^19.0.0", diff --git a/src/performance/firebase.ts b/src/performance/firebase.ts index ab3472dfe..4f4b57011 100644 --- a/src/performance/firebase.ts +++ b/src/performance/firebase.ts @@ -9,4 +9,4 @@ import { export const getPerformance = ɵzoneWrap(_getPerformance, true); export const initializePerformance = ɵzoneWrap(_initializePerformance, true); -export const trace = ɵzoneWrap(_trace, true); +export const trace = ɵzoneWrap(_trace, true, 2); diff --git a/src/remote-config/firebase.ts b/src/remote-config/firebase.ts index dd0ba60d6..376afaedb 100644 --- a/src/remote-config/firebase.ts +++ b/src/remote-config/firebase.ts @@ -13,6 +13,7 @@ import { getString as _getString, getValue as _getValue, isSupported as _isSupported, + setCustomSignals as _setCustomSignals, setLogLevel as _setLogLevel } from 'firebase/remote-config'; @@ -27,4 +28,5 @@ export const getRemoteConfig = ɵzoneWrap(_getRemoteConfig, true); export const getString = ɵzoneWrap(_getString, true); export const getValue = ɵzoneWrap(_getValue, true); export const isSupported = ɵzoneWrap(_isSupported, true); +export const setCustomSignals = ɵzoneWrap(_setCustomSignals, true); export const setLogLevel = ɵzoneWrap(_setLogLevel, true); diff --git a/src/storage/firebase.ts b/src/storage/firebase.ts index d22c14ce9..3ad53a491 100644 --- a/src/storage/firebase.ts +++ b/src/storage/firebase.ts @@ -20,7 +20,7 @@ import { } from 'firebase/storage'; export const connectStorageEmulator = ɵzoneWrap(_connectStorageEmulator, true); -export const deleteObject = ɵzoneWrap(_deleteObject, true); +export const deleteObject = ɵzoneWrap(_deleteObject, true, 2); export const getBlob = ɵzoneWrap(_getBlob, true); export const getBytes = ɵzoneWrap(_getBytes, true); export const getDownloadURL = ɵzoneWrap(_getDownloadURL, true); @@ -29,8 +29,8 @@ export const getStorage = ɵzoneWrap(_getStorage, true); export const getStream = ɵzoneWrap(_getStream, true); export const list = ɵzoneWrap(_list, true); export const listAll = ɵzoneWrap(_listAll, true); -export const ref = ɵzoneWrap(_ref, true); -export const updateMetadata = ɵzoneWrap(_updateMetadata, true); +export const ref = ɵzoneWrap(_ref, true, 2); +export const updateMetadata = ɵzoneWrap(_updateMetadata, true, 2); export const uploadBytes = ɵzoneWrap(_uploadBytes, true); export const uploadBytesResumable = ɵzoneWrap(_uploadBytesResumable, true); export const uploadString = ɵzoneWrap(_uploadString, true); diff --git a/src/storage/storage.module.ts b/src/storage/storage.module.ts index 0cc062f41..0d15e2aca 100644 --- a/src/storage/storage.module.ts +++ b/src/storage/storage.module.ts @@ -8,8 +8,8 @@ import { makeEnvironmentProviders, } from '@angular/core'; import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; -import { ɵAppCheckInstances } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; import { AuthInstances } from '@angular/fire/auth'; import { registerVersion } from 'firebase/app'; import { FirebaseStorage } from 'firebase/storage'; @@ -74,7 +74,7 @@ export function provideStorage(fn: (injector: Injector) => FirebaseStorage, ...d FirebaseApps, // Defensively load Auth first, if provided [new Optional(), AuthInstances ], - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/vertexai/vertexai.module.ts b/src/vertexai/vertexai.module.ts index 7f0e290d2..c13b9c56b 100644 --- a/src/vertexai/vertexai.module.ts +++ b/src/vertexai/vertexai.module.ts @@ -8,8 +8,8 @@ import { makeEnvironmentProviders, } from '@angular/core'; import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; -import { ɵAppCheckInstances } from '@angular/fire'; import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; import { registerVersion } from 'firebase/app'; import { VertexAI as FirebaseVertexAI } from 'firebase/vertexai'; import { VERTEX_AI_PROVIDER_NAME, VertexAI, VertexAIInstances } from './vertexai'; @@ -71,7 +71,7 @@ export function provideVertexAI(fn: (injector: Injector) => FirebaseVertexAI, .. Injector, ɵAngularFireSchedulers, FirebaseApps, - [new Optional(), ɵAppCheckInstances ], + [new Optional(), AppCheckInstances ], ...deps, ] } diff --git a/src/zones.ts b/src/zones.ts index 1f845322a..7f50a6f69 100644 --- a/src/zones.ts +++ b/src/zones.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ import { + EnvironmentInjector, Injectable, - Injector, NgZone, PendingTasks, inject, @@ -19,7 +19,18 @@ import { } from 'rxjs'; import { observeOn, subscribeOn } from 'rxjs/operators'; -declare const Zone: {current: unknown} | undefined; +declare const Zone: {current: unknown} | undefined; + +export enum LogLevel { + "SILENT" = 0, + "WARN" = 1, + "VERBOSE" = 2, +} + + +var currentLogLevel = (isDevMode() && typeof Zone !== "undefined") ? LogLevel.WARN : LogLevel.SILENT; + +export const setLogLevel = (logLevel: LogLevel) => currentLogLevel = logLevel; /** * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor. @@ -74,69 +85,33 @@ export class ɵAngularFireSchedulers { } } -function getSchedulers() { - return inject(ɵAngularFireSchedulers); -} - var alreadyWarned = false; -function warnOutsideInjectionContext(original: any, operation: string) { - if (isDevMode()) { - if (!alreadyWarned) { - alreadyWarned = true; - console.warn("Calling Firebase APIs outside of an Injection context may destabilize your application leading to subtle change-detection and hydration bugs. Find more at https://github.com/angular/angularfire/blob/main/docs/zones.md"); - } - console.warn(`Firebase API called outside injection context: ${operation}(${original.name})`); +function warnOutsideInjectionContext(original: any, logLevel: LogLevel) { + if (!alreadyWarned && (currentLogLevel > LogLevel.SILENT || isDevMode())) { + alreadyWarned = true; + console.warn("Calling Firebase APIs outside of an Injection context may destabilize your application leading to subtle change-detection and hydration bugs. Find more at https://github.com/angular/angularfire/blob/main/docs/zones.md"); + } + if (currentLogLevel >= logLevel) { + console.warn(`Firebase API called outside injection context: ${original.name}`); } } function runOutsideAngular(fn: (...args: any[]) => T): T { - let ngZone: NgZone|undefined; - try { - ngZone = inject(NgZone); - } catch(e) { - warnOutsideInjectionContext(fn, "runOutsideAngular"); - } + const ngZone = inject(NgZone, { optional: true }); if (!ngZone) {return fn();} return ngZone.runOutsideAngular(() => fn()); } function run(fn: (...args: any[]) => T): T { - let ngZone: NgZone|undefined; - try { - ngZone = inject(NgZone); - } catch(e) { - warnOutsideInjectionContext(fn, "run"); - } + const ngZone = inject(NgZone, { optional: true }); if (!ngZone) {return fn();} return ngZone.run(() => fn()); } -export function observeOutsideAngular(obs$: Observable): Observable { - let schedulers: ɵAngularFireSchedulers|undefined; - try { - schedulers = getSchedulers(); - } catch(e) { - warnOutsideInjectionContext(obs$, "observeOutsideAngular"); - } - if (!schedulers) {return obs$;} - return obs$.pipe(observeOn(schedulers.outsideAngular)); -} - -export function observeInsideAngular(obs$: Observable): Observable { - let schedulers: ɵAngularFireSchedulers|undefined; - try { - schedulers = getSchedulers(); - } catch(e) { - warnOutsideInjectionContext(obs$, "observeInsideAngular"); - } - if (!schedulers) {return obs$;} - return obs$.pipe(observeOn(schedulers.insideAngular)); -} - const zoneWrapFn = ( it: (...args: any[]) => any, taskDone: VoidFunction | undefined, - injector: Injector, + injector: EnvironmentInjector, ) => { return (...args: any[]) => { if (taskDone) { @@ -146,20 +121,21 @@ const zoneWrapFn = ( }; }; -export const ɵzoneWrap = (it: T, blockUntilFirst: boolean): T => { +export const ɵzoneWrap = (it: T, blockUntilFirst: boolean, logLevel?: LogLevel): T => { + logLevel ||= blockUntilFirst ? LogLevel.WARN : LogLevel.VERBOSE; // function() is needed for the arguments object return function () { let taskDone: VoidFunction | undefined; const _arguments = arguments; let schedulers: ɵAngularFireSchedulers; let pendingTasks: PendingTasks; - let injector: Injector; + let injector: EnvironmentInjector; try { - schedulers = getSchedulers(); + schedulers = inject(ɵAngularFireSchedulers); pendingTasks = inject(PendingTasks); - injector = inject(Injector); + injector = inject(EnvironmentInjector); } catch(e) { - warnOutsideInjectionContext(it, "ɵzoneWrap"); + warnOutsideInjectionContext(it, logLevel); return (it as any).apply(this, _arguments); } // if this is a callback function, e.g, onSnapshot, we should create a pending task and complete it @@ -199,8 +175,7 @@ export const ɵzoneWrap = (it: T, blockUntilFirst: boolean): T => { (it) => runInInjectionContext(injector, () => run(() => resolve(it))), (reason) => runInInjectionContext(injector, () => run(() => reject(reason))) ); - }) - ); + })); } else if (typeof ret === 'function' && taskDone) { // Handle unsubscribe // function() is needed for the arguments object diff --git a/tools/build.ts b/tools/build.ts index 397d78906..a8ced7106 100644 --- a/tools/build.ts +++ b/tools/build.ts @@ -4,13 +4,63 @@ import { join } from 'path'; import { keys as tsKeys } from 'ts-transformer-keys'; import * as esbuild from "esbuild"; +enum LogLevel { + "WARN" = 1, + "VERBOSE" = 2, +}; + interface OverrideOptions { exportName?: string; zoneWrap?: boolean; blockUntilFirst?: boolean; override?: boolean; + logLevel?: LogLevel; } +const firestoreOverrides = { + addDoc: { logLevel: LogLevel.VERBOSE }, + aggregateFieldEqual: { logLevel: LogLevel.VERBOSE }, + aggregateQuerySnapshotEqual: { logLevel: LogLevel.VERBOSE }, + and: { logLevel: LogLevel.VERBOSE }, + arrayRemove: null, + arrayUnion: null, + average: null, + collection: { logLevel: LogLevel.VERBOSE }, + collectionGroup: { logLevel: LogLevel.VERBOSE }, + count: null, + deleteDoc: { logLevel: LogLevel.VERBOSE }, + deleteField: { logLevel: LogLevel.VERBOSE }, + doc: { logLevel: LogLevel.VERBOSE }, + documentId: { logLevel: LogLevel.VERBOSE }, + endAt: { logLevel: LogLevel.VERBOSE }, + endBefore: { logLevel: LogLevel.VERBOSE }, + increment: { logLevel: LogLevel.VERBOSE }, + limit: { logLevel: LogLevel.VERBOSE }, + limitToLast: { logLevel: LogLevel.VERBOSE }, + memoryEagerGarbageCollector: null, + memoryLocalCache: null, + memoryLruGarbageCollector: null, + namedQuery: { logLevel: LogLevel.VERBOSE }, + or: { logLevel: LogLevel.VERBOSE }, + orderBy: { logLevel: LogLevel.VERBOSE }, + persistentLocalCache: null, + persistentMultipleTabManager: null, + persistentSingleTabManager: null, + query: { logLevel: LogLevel.VERBOSE }, + queryEqual: { logLevel: LogLevel.VERBOSE }, + refEqual: { logLevel: LogLevel.VERBOSE }, + serverTimestamp: null, + setDoc: { logLevel: LogLevel.VERBOSE }, + snapshotEqual: { logLevel: LogLevel.VERBOSE }, + startAfter: { logLevel: LogLevel.VERBOSE }, + startAt: { logLevel: LogLevel.VERBOSE }, + sum: { logLevel: LogLevel.VERBOSE }, + updateDoc: { logLevel: LogLevel.VERBOSE }, + vector: { logLevel: LogLevel.VERBOSE }, + where: { logLevel: LogLevel.VERBOSE }, + writeBatch: { logLevel: LogLevel.VERBOSE }, +}; + function zoneWrapExports() { const reexport = async ( module: string, @@ -41,7 +91,7 @@ function zoneWrapExports() { `${importName}${exportName === importName ? '' : `as ${exportName}`}`).join(',\n '); const overriddenFns = overridden.join(',\n '); const exportedZoneWrappedFns = zoneWrapped.map(([importName, exportName]) => - `export const ${exportName} = ɵzoneWrap(_${importName}, ${overrides[importName]?.blockUntilFirst ?? true});`) + `export const ${exportName} = ɵzoneWrap(_${importName}, ${overrides[importName]?.blockUntilFirst ?? true}${overrides[importName]?.logLevel ? `, ${overrides[importName].logLevel}` : ""});`) .join('\n'); const filePath = join(process.cwd(), 'src', `${module}/${name}.ts`); // TODO(davideast): Create a builder pattern for this file for readability @@ -64,9 +114,20 @@ ${exportedZoneWrappedFns} await writeFile(filePath, fileOutput); }; return Promise.all([ - reexport('analytics', 'firebase', 'firebase/analytics', tsKeys()), + reexport('analytics', 'firebase', 'firebase/analytics', tsKeys(), { + isSupported: { blockUntilFirst: false }, + logEvent: { blockUntilFirst: false, logLevel: LogLevel.VERBOSE }, + setAnalyticsCollectionEnabled: { logLevel: LogLevel.VERBOSE }, + setConsent: { logLevel: LogLevel.VERBOSE }, + setCurrentScreen: { logLevel: LogLevel.VERBOSE }, + setDefaultEventParameters: { logLevel: LogLevel.VERBOSE }, + setUserId: { logLevel: LogLevel.VERBOSE }, + setUserProperties: { logLevel: LogLevel.VERBOSE }, + }), reexport('app', 'firebase', 'firebase/app', tsKeys()), - reexport('app-check', 'firebase', 'firebase/app-check', tsKeys()), + reexport('app-check', 'firebase', 'firebase/app-check', tsKeys(), { + getLimitedUseToken: { logLevel: LogLevel.VERBOSE }, + }), reexport('auth', 'rxfire', 'rxfire/auth', tsKeys()), reexport('auth', 'firebase', 'firebase/auth', tsKeys(), { debugErrorMap: null, @@ -75,25 +136,92 @@ ${exportedZoneWrappedFns} browserSessionPersistence: null, indexedDBLocalPersistence: null, prodErrorMap: null, - beforeAuthStateChanged: { blockUntilFirst: false }, + multiFactor: null, + linkWithCredential: { logLevel: LogLevel.VERBOSE }, + linkWithPhoneNumber: { logLevel: LogLevel.VERBOSE }, + linkWithPopup: { logLevel: LogLevel.VERBOSE }, + linkWithRedirect: { logLevel: LogLevel.VERBOSE }, + signInAnonymously: { logLevel: LogLevel.VERBOSE }, + signInWithCredential: { logLevel: LogLevel.VERBOSE }, + signInWithCustomToken: { logLevel: LogLevel.VERBOSE }, + signInWithEmailAndPassword: { logLevel: LogLevel.VERBOSE }, + signInWithEmailLink: { logLevel: LogLevel.VERBOSE }, + signInWithPhoneNumber: { logLevel: LogLevel.VERBOSE }, + signInWithPopup: { logLevel: LogLevel.VERBOSE }, + signInWithRedirect: { logLevel: LogLevel.VERBOSE }, + signOut: { logLevel: LogLevel.VERBOSE }, + confirmPasswordReset: { logLevel: LogLevel.VERBOSE }, + deleteUser: { logLevel: LogLevel.VERBOSE }, + createUserWithEmailAndPassword: { logLevel: LogLevel.VERBOSE }, + fetchSignInMethodsForEmail: { logLevel: LogLevel.VERBOSE }, + getAdditionalUserInfo: { logLevel: LogLevel.VERBOSE }, + reauthenticateWithCredential: { logLevel: LogLevel.VERBOSE }, + reauthenticateWithPhoneNumber: { logLevel: LogLevel.VERBOSE }, + reauthenticateWithPopup: { logLevel: LogLevel.VERBOSE }, + reauthenticateWithRedirect: { logLevel: LogLevel.VERBOSE }, + reload : { logLevel: LogLevel.VERBOSE }, + revokeAccessToken: { logLevel: LogLevel.VERBOSE }, + sendEmailVerification: { logLevel: LogLevel.VERBOSE }, + sendPasswordResetEmail: { logLevel: LogLevel.VERBOSE }, + sendSignInLinkToEmail: { logLevel: LogLevel.VERBOSE }, + unlink: { logLevel: LogLevel.VERBOSE }, + updateCurrentUser: { logLevel: LogLevel.VERBOSE }, + updateEmail: { logLevel: LogLevel.VERBOSE }, + updatePassword: { logLevel: LogLevel.VERBOSE }, + updatePhoneNumber: { logLevel: LogLevel.VERBOSE }, + updateProfile: { logLevel: LogLevel.VERBOSE }, + useDeviceLanguage: { logLevel: LogLevel.VERBOSE }, + validatePassword: { logLevel: LogLevel.VERBOSE }, + verifyBeforeUpdateEmail: { logLevel: LogLevel.VERBOSE }, + verifyPasswordResetCode: { logLevel: LogLevel.VERBOSE }, }), reexport('database', 'rxfire', 'rxfire/database', tsKeys()), - reexport('database', 'firebase', 'firebase/database', tsKeys()), - reexport('data-connect', 'firebase', 'firebase/data-connect', tsKeys()), + reexport('database', 'firebase', 'firebase/database', tsKeys(), { + child: { logLevel: LogLevel.VERBOSE }, + endAt: { logLevel: LogLevel.VERBOSE }, + endBefore: { logLevel: LogLevel.VERBOSE }, + equalTo: { logLevel: LogLevel.VERBOSE }, + increment: { logLevel: LogLevel.VERBOSE }, + limitToFirst: { logLevel: LogLevel.VERBOSE }, + limitToLast: { logLevel: LogLevel.VERBOSE }, + orderByChild: { logLevel: LogLevel.VERBOSE }, + orderByKey: { logLevel: LogLevel.VERBOSE }, + orderByPriority: { logLevel: LogLevel.VERBOSE }, + orderByValue: { logLevel: LogLevel.VERBOSE }, + push: { logLevel: LogLevel.VERBOSE }, + query: { logLevel: LogLevel.VERBOSE }, + ref: { logLevel: LogLevel.VERBOSE }, + refFromURL: { logLevel: LogLevel.VERBOSE }, + remove: { logLevel: LogLevel.VERBOSE }, + serverTimestamp: null, + set: { logLevel: LogLevel.VERBOSE }, + setPriority: { logLevel: LogLevel.VERBOSE }, + setWithPriority: { logLevel: LogLevel.VERBOSE }, + startAfter: { logLevel: LogLevel.VERBOSE }, + startAt: { logLevel: LogLevel.VERBOSE }, + update: { logLevel: LogLevel.VERBOSE }, + }), + reexport('data-connect', 'firebase', 'firebase/data-connect', tsKeys(), { + mutationRef: { logLevel: LogLevel.VERBOSE }, + queryRef: { logLevel: LogLevel.VERBOSE }, + toQueryRef: { logLevel: LogLevel.VERBOSE }, + }), reexport('firestore', 'rxfire', 'rxfire/firestore', tsKeys(), { doc: { exportName: 'docSnapshots' }, collection: { exportName: 'collectionSnapshots' }, }), - reexport('firestore', 'firebase', 'firebase/firestore', tsKeys()), + reexport('firestore', 'firebase', 'firebase/firestore', tsKeys(), firestoreOverrides), reexport('functions', 'rxfire', 'rxfire/functions', ["httpsCallable"], { httpsCallable: { exportName: 'httpsCallableData' }, }), reexport('functions', 'firebase', 'firebase/functions', tsKeys()), reexport('messaging', 'firebase', 'firebase/messaging', tsKeys(), { isSupported: { blockUntilFirst: false }, - onMessage: { blockUntilFirst: false } + onMessage: { blockUntilFirst: false }, + deleteToken: { logLevel: LogLevel.VERBOSE }, }), reexport('remote-config', 'rxfire', 'rxfire/remote-config', tsKeys(), { + isSupported: { blockUntilFirst: false }, getValue: { exportName: 'getValueChanges' }, getString: { exportName: 'getStringChanges' }, getNumber: { exportName: 'getNumberChanges' }, @@ -107,17 +235,23 @@ ${exportedZoneWrappedFns} uploadBytesResumable: null, uploadString: null, }), - reexport('storage', 'firebase', 'firebase/storage', tsKeys()), + reexport('storage', 'firebase', 'firebase/storage', tsKeys(), { + deleteObject: { logLevel: LogLevel.VERBOSE }, + ref: { logLevel: LogLevel.VERBOSE }, + updateMetadata: { logLevel: LogLevel.VERBOSE }, + }), reexport('performance', 'rxfire', 'rxfire/performance', tsKeys(), { getPerformance$: null, trace: null, }), - reexport('performance', 'firebase', 'firebase/performance', tsKeys()), + reexport('performance', 'firebase', 'firebase/performance', tsKeys(), { + trace: { logLevel: LogLevel.VERBOSE }, + }), reexport('firestore/lite', 'rxfire', 'rxfire/firestore/lite', tsKeys(), { doc: { exportName: 'docSnapshots' }, collection: { exportName: 'collectionSnapshots' }, }), - reexport('firestore/lite', 'firebase', 'firebase/firestore/lite', tsKeys()), + reexport('firestore/lite', 'firebase', 'firebase/firestore/lite', tsKeys(), firestoreOverrides), reexport('vertexai', 'firebase', 'firebase/vertexai', tsKeys()), ]); }