diff --git a/package-lock.json b/package-lock.json index 0fe303560..a607548ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@angular/fire", - "version": "19.0.0", + "version": "19.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@angular/fire", - "version": "19.0.0", + "version": "19.2.0", "license": "MIT", "dependencies": { "@angular-devkit/architect": "~0.1900.0", @@ -20,7 +20,7 @@ "@angular/router": "^19.0.0", "@schematics/angular": "^19.0.0", "esbuild": "^0.24.0", - "firebase": "^11.2.0", + "firebase": "^11.8.0", "firebase-functions": "^6.1.0", "fs-extra": "^8.0.1", "fuzzy": "^0.1.3", @@ -4264,16 +4264,36 @@ "license": "MIT", "peer": true }, + "node_modules/@firebase/ai": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@firebase/ai/-/ai-1.3.0.tgz", + "integrity": "sha512-qBxJTtl9hpgZr050kVFTRADX6I0Ss6mEQyp/JEkBgKwwxixKnaRNqEDGFba4OKNL7K8E4Y7LlA/ZW6L8aCKH4A==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.3", + "@firebase/component": "0.6.17", + "@firebase/logger": "0.4.4", + "@firebase/util": "1.12.0", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, "node_modules/@firebase/analytics": { - "version": "0.10.11", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.11.tgz", - "integrity": "sha512-zwuPiRE0+hgcS95JZbJ6DFQN4xYFO8IyGxpeePTV51YJMwCf3lkBa6FnZ/iXIqDKcBPMgMuuEZozI0BJWaLEYg==", + "version": "0.10.16", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.16.tgz", + "integrity": "sha512-cMtp19He7Fd6uaj/nDEul+8JwvJsN8aRSJyuA1QN3QrKvfDDp+efjVurJO61sJpkVftw9O9nNMdhFbRcTmTfRQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/installations": "0.6.12", + "@firebase/component": "0.6.17", + "@firebase/installations": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4281,15 +4301,15 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.17.tgz", - "integrity": "sha512-SJNVOeTvzdqZQvXFzj7yAirXnYcLDxh57wBFROfeowq/kRN1AqOw1tG6U4OiFOEhqi7s3xLze/LMkZatk2IEww==", + "version": "0.2.22", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.22.tgz", + "integrity": "sha512-VogWHgwkdYhjWKh8O1XU04uPrRaiDihkWvE/EMMmtWtaUtVALnpLnUurc3QtSKdPnvTz5uaIGKlW84DGtSPFbw==", "license": "Apache-2.0", "dependencies": { - "@firebase/analytics": "0.10.11", + "@firebase/analytics": "0.10.16", "@firebase/analytics-types": "0.8.3", - "@firebase/component": "0.6.12", - "@firebase/util": "1.10.3", + "@firebase/component": "0.6.17", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4303,14 +4323,14 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app": { - "version": "0.10.18", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.18.tgz", - "integrity": "sha512-VuqEwD/QRisKd/zsFsqgvSAx34mZ3WEF47i97FD6Vw4GWAhdjepYf0Hmi6K0b4QMSgWcv/x0C30Slm5NjjERXg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.13.0.tgz", + "integrity": "sha512-Vj3MST245nq+V5UmmfEkB3isIgPouyUr8yGJlFeL9Trg/umG5ogAvrjAYvQ8gV7daKDoQSRnJKWI2JFpQqRsuQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4319,14 +4339,14 @@ } }, "node_modules/@firebase/app-check": { - "version": "0.8.11", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.11.tgz", - "integrity": "sha512-42zIfRI08/7bQqczAy7sY2JqZYEv3a1eNa4fLFdtJ54vNevbBIRSEA3fZgRqWFNHalh5ohsBXdrYgFqaRIuCcQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.10.0.tgz", + "integrity": "sha512-AZlRlVWKcu8BH4Yf8B5EI8sOi2UNGTS8oMuthV45tbt6OVUTSQwFPIEboZzhNJNKY+fPsg7hH8vixUWFZ3lrhw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4337,16 +4357,16 @@ } }, "node_modules/@firebase/app-check-compat": { - "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==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.25.tgz", + "integrity": "sha512-3zrsPZWAKfV7DVC20T2dgfjzjtQnSJS65OfMOiddMUtJL1S5i0nAZKsdX0bOEvvrd0SBIL8jYnfpfDeQRnhV3w==", "license": "Apache-2.0", "dependencies": { - "@firebase/app-check": "0.8.11", + "@firebase/app-check": "0.10.0", "@firebase/app-check-types": "0.5.3", - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4369,15 +4389,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/app-compat": { - "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==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.4.0.tgz", + "integrity": "sha512-LjLUrzbUgTa/sCtPoLKT2C7KShvLVHS3crnU1Du02YxnGVLE0CUBGY/NxgfR/Zg84mEbj1q08/dgesojxjn0dA==", "license": "Apache-2.0", "dependencies": { - "@firebase/app": "0.10.18", - "@firebase/component": "0.6.12", + "@firebase/app": "0.13.0", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4391,14 +4411,14 @@ "license": "Apache-2.0" }, "node_modules/@firebase/auth": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.8.2.tgz", - "integrity": "sha512-q+071y2LWe0bVnjqaX3BscqZwzdP0GKN2YBKapLq4bV88MPfCtWwGKmDhNDEDUmioOjudGXkUY5cvvKqk3mlUg==", + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.10.5.tgz", + "integrity": "sha512-6wF/NdMTwObL4RNQePunuzMr9O3gyftisvFZFFKf57D2HONXo87YymogRV8d+Z7SLA0rcNBN1gLJVk2D0y97gA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4415,15 +4435,15 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.17.tgz", - "integrity": "sha512-Shi6rqLqzU9KLXnUCmlLvVByq1kiG3oe7Wpbf5m1CgS7NiRx2pSSn0HLaRRozdkaizNzMGGj+3oHmNYQ7kU6xA==", + "version": "0.5.25", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.25.tgz", + "integrity": "sha512-YKUYnvrxXBRhH/iYEwSOv85VPvc6P36GW1OCDRebTw/cvgoj7pwac2nZKYFs5FHlNYe7Bc9I4BoY2X0vlkJo+g==", "license": "Apache-2.0", "dependencies": { - "@firebase/auth": "1.8.2", - "@firebase/auth-types": "0.12.3", - "@firebase/component": "0.6.12", - "@firebase/util": "1.10.3", + "@firebase/auth": "1.10.5", + "@firebase/auth-types": "0.13.0", + "@firebase/component": "0.6.17", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4440,9 +4460,9 @@ "license": "Apache-2.0" }, "node_modules/@firebase/auth-types": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.3.tgz", - "integrity": "sha512-Zq9zI0o5hqXDtKg6yDkSnvMCMuLU6qAVS51PANQx+ZZX5xnzyNLEBO3GZgBUPsV5qIMFhjhqmLDxUqCbnAYy2A==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.13.0.tgz", + "integrity": "sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==", "license": "Apache-2.0", "peerDependencies": { "@firebase/app-types": "0.x", @@ -4450,12 +4470,12 @@ } }, "node_modules/@firebase/component": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.12.tgz", - "integrity": "sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw==", + "version": "0.6.17", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.17.tgz", + "integrity": "sha512-M6DOg7OySrKEFS8kxA3MU5/xc37fiOpKPMz6cTsMUcsuKB6CiZxxNAvgFta8HGRgEpZbi8WjGIj6Uf+TpOhyzg==", "license": "Apache-2.0", "dependencies": { - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4463,15 +4483,15 @@ } }, "node_modules/@firebase/data-connect": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.2.0.tgz", - "integrity": "sha512-7OrZtQoLSk2fiGijhIdUnTSqEFti3h1EMhw9nNiSZ6jJGduw4Pz6jrVvxjpZJtGH/JiljbMkBnPBS2h8CTRKEw==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.3.8.tgz", + "integrity": "sha512-xC50SxurrP0j9ksltZ8O2SuPuWTu9KymNxtSE4bmcc/HMOnOHaURgLyrQpcC5Pc7HmtCBxh9Q/lNKyc37rj5/g==", "license": "Apache-2.0", "dependencies": { "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4479,16 +4499,16 @@ } }, "node_modules/@firebase/database": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.11.tgz", - "integrity": "sha512-gLrw/XeioswWUXgpVKCPAzzoOuvYNqK5fRUeiJTzO7Mlp9P6ylFEyPJlRBl1djqYye641r3MX6AmIeMXwjgwuQ==", + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.18.tgz", + "integrity": "sha512-uXtYQmK6JCmqSx7dTOQD/qZtSnbMqnwvklF9n7wOJbdti4wKHmeUzgGXhPwDhN/R/BDTq78zKAbXya7hrCQjHw==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "faye-websocket": "0.11.4", "tslib": "^2.1.0" }, @@ -4497,16 +4517,16 @@ } }, "node_modules/@firebase/database-compat": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.2.tgz", - "integrity": "sha512-5zvdnMsfDHvrQAVM6jBS7CkBpu+z3YbpFdhxRsrK1FP45IEfxlzpeuEUb17D/tpM10vfq4Ok0x5akIBaCv7gfA==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.9.tgz", + "integrity": "sha512-9S6zK5+Tzslkt+lrYHDqbCbKBSQn3YYrNLIw8hTa/ALoqRLNTXF6acQIlxAxSeZj1hTttE6RRbuxxpMQJYt83w==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/database": "1.0.11", - "@firebase/database-types": "1.0.8", + "@firebase/component": "0.6.17", + "@firebase/database": "1.0.18", + "@firebase/database-types": "1.0.14", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4514,24 +4534,24 @@ } }, "node_modules/@firebase/database-types": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.8.tgz", - "integrity": "sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.14.tgz", + "integrity": "sha512-8a0Q1GrxM0akgF0RiQHliinhmZd+UQPrxEmUv7MnQBYfVFiLtKOgs3g6ghRt/WEGJHyQNslZ+0PocIwNfoDwKw==", "license": "Apache-2.0", "dependencies": { "@firebase/app-types": "0.9.3", - "@firebase/util": "1.10.3" + "@firebase/util": "1.12.0" } }, "node_modules/@firebase/firestore": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.6.tgz", - "integrity": "sha512-aVDboR+upR/44qZDLR4tnZ9pepSOFBbDJnwk7eWzmTyQq2nZAVG+HIhrqpQawmUVcDRkuJv2K2UT2+oqR8F8TA==", + "version": "4.7.15", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.15.tgz", + "integrity": "sha512-FgWTmkNBEXdKCoN2ngBNjrMaXuBx6QwjiZZVnOGg+VjUmiBq5gAqlDIW5bZY6i/NYvLUrWugdqIs7y9GHEqwww==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "@firebase/webchannel-wrapper": "1.0.3", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", @@ -4545,15 +4565,15 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.41", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.41.tgz", - "integrity": "sha512-J/PgWKEt0yugETOE7lOabT16hsV21cLzSxERD7ZhaiwBQkBTSf0Mx9RhjZRT0Ttqe4weM90HGZFyUBqYA73fVA==", + "version": "0.3.50", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.50.tgz", + "integrity": "sha512-1hAM+iaIqy2HHvSHQ56ccOOIigTeWAwjIpeQ+/O92uBoiajEITHdJofnGHglhhB5VV5qFl59Yz/AVDc+DssdYg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/firestore": "4.7.6", + "@firebase/component": "0.6.17", + "@firebase/firestore": "4.7.15", "@firebase/firestore-types": "3.0.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4574,16 +4594,16 @@ } }, "node_modules/@firebase/functions": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.12.1.tgz", - "integrity": "sha512-QucRiFrvMMmIGTRhL7ZK2IeBnAWP7lAmfFREMpEtX47GjVqDqGxdFs+Mg7XBzxSc9UjDO4Rxf+aE9xJHU6bGwg==", + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.12.7.tgz", + "integrity": "sha512-gi8cw7yvaz19Erut+S0rHzNOWp4zPxAU/Kplb+XQoaE5gMV7MjHQoOGnYhSY8uOVj5f80S553s+2OBszG+14Ag==", "license": "Apache-2.0", "dependencies": { "@firebase/app-check-interop-types": "0.3.3", "@firebase/auth-interop-types": "0.2.4", - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4594,15 +4614,15 @@ } }, "node_modules/@firebase/functions-compat": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.18.tgz", - "integrity": "sha512-N7+RN5GVus2ORB8cqfSNhfSn4iaYws6F8uCCfn4mtjC7zYS/KH6muzNAhZUdUqlv5YazbVmvxlAoYYF39i8Qzg==", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.24.tgz", + "integrity": "sha512-UjJabci+Bqci+A9WqfJ6sjZp+wGvi47llnQMjQRrF4coKfUyu9zBNTXhbx5W3rdVFQYwnWJm8VuluuNh2PCuyQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/functions": "0.12.1", + "@firebase/component": "0.6.17", + "@firebase/functions": "0.12.7", "@firebase/functions-types": "0.6.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4619,13 +4639,13 @@ "license": "Apache-2.0" }, "node_modules/@firebase/installations": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.12.tgz", - "integrity": "sha512-ES/WpuAV2k2YtBTvdaknEo7IY8vaGjIjS3zhnHSAIvY9KwTR8XZFXOJoZ3nSkjN1A5R4MtEh+07drnzPDg9vaw==", + "version": "0.6.17", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.17.tgz", + "integrity": "sha512-zfhqCNJZRe12KyADtRrtOj+SeSbD1H/K8J24oQAJVv/u02eQajEGlhZtcx9Qk7vhGWF5z9dvIygVDYqLL4o1XQ==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/util": "1.10.3", + "@firebase/component": "0.6.17", + "@firebase/util": "1.12.0", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4634,15 +4654,15 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.12.tgz", - "integrity": "sha512-RhcGknkxmFu92F6Jb3rXxv6a4sytPjJGifRZj8MSURPuv2Xu+/AispCXEfY1ZraobhEHTG5HLGsP6R4l9qB5aA==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.17.tgz", + "integrity": "sha512-J7afeCXB7yq25FrrJAgbx8mn1nG1lZEubOLvYgG7ZHvyoOCK00sis5rj7TgDrLYJgdj/SJiGaO1BD3BAp55TeA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/installations": "0.6.12", + "@firebase/component": "0.6.17", + "@firebase/installations": "0.6.17", "@firebase/installations-types": "0.5.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4671,15 +4691,15 @@ } }, "node_modules/@firebase/messaging": { - "version": "0.12.16", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.16.tgz", - "integrity": "sha512-VJ8sCEIeP3+XkfbJA7410WhYGHdloYFZXoHe/vt+vNVDGw8JQPTQSVTRvjrUprEf5I4Tbcnpr2H34lS6zhCHSA==", + "version": "0.12.21", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.21.tgz", + "integrity": "sha512-bYJ2Evj167Z+lJ1ach6UglXz5dUKY1zrJZd15GagBUJSR7d9KfiM1W8dsyL0lDxcmhmA/sLaBYAAhF1uilwN0g==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/installations": "0.6.12", + "@firebase/component": "0.6.17", + "@firebase/installations": "0.6.17", "@firebase/messaging-interop-types": "0.2.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -4688,14 +4708,14 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.16.tgz", - "integrity": "sha512-9HZZ88Ig3zQ0ok/Pwt4gQcNsOhoEy8hDHoGsV1am6ulgMuGuDVD2gl11Lere2ksL+msM12Lddi2x/7TCqmODZw==", + "version": "0.2.21", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.21.tgz", + "integrity": "sha512-1yMne+4BGLbHbtyu/VyXWcLiefUE1+K3ZGfVTyKM4BH4ZwDFRGoWUGhhx+tKRX4Tu9z7+8JN67SjnwacyNWK5g==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/messaging": "0.12.16", - "@firebase/util": "1.10.3", + "@firebase/component": "0.6.17", + "@firebase/messaging": "0.12.21", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4709,32 +4729,33 @@ "license": "Apache-2.0" }, "node_modules/@firebase/performance": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.12.tgz", - "integrity": "sha512-8mYL4z2jRlKXAi2hjk4G7o2sQLnJCCuTbyvti/xmHf5ZvOIGB01BZec0aDuBIXO+H1MLF62dbye/k91Fr+yc8g==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.7.6.tgz", + "integrity": "sha512-AsOz74dSTlyQGlnnbLWXiHFAsrxhpssPOsFFi4HgOJ5DjzkK7ZdZ/E9uMPrwFoXJyMVoybGRuqsL/wkIbFITsA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/installations": "0.6.12", + "@firebase/component": "0.6.17", + "@firebase/installations": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", - "tslib": "^2.1.0" + "@firebase/util": "1.12.0", + "tslib": "^2.1.0", + "web-vitals": "^4.2.4" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/performance-compat": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.12.tgz", - "integrity": "sha512-DyCbDTIwtBTGsEiQxTz/TD23a0na2nrDozceQ5kVkszyFYvliB0YK/9el0wAGIG91SqgTG9pxHtYErzfZc0VWw==", + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.19.tgz", + "integrity": "sha512-4cU0T0BJ+LZK/E/UwFcvpBCVdkStgBMQwBztM9fJPT6udrEUk3ugF5/HT+E2Z22FCXtIaXDukJbYkE/c3c6IHw==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/performance": "0.6.12", + "@firebase/performance": "0.7.6", "@firebase/performance-types": "0.2.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4748,15 +4769,15 @@ "license": "Apache-2.0" }, "node_modules/@firebase/remote-config": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.5.0.tgz", - "integrity": "sha512-weiEbpBp5PBJTHUWR4GwI7ZacaAg68BKha5QnZ8Go65W4oQjEWqCW/rfskABI/OkrGijlL3CUmCB/SA6mVo0qA==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.6.4.tgz", + "integrity": "sha512-ZyLJRT46wtycyz2+opEkGaoFUOqRQjt/0NX1WfUISOMCI/PuVoyDjqGpq24uK+e8D5NknyTpiXCVq5dowhScmg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/installations": "0.6.12", + "@firebase/component": "0.6.17", + "@firebase/installations": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4764,16 +4785,16 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.12.tgz", - "integrity": "sha512-91jLWPtubIuPBngg9SzwvNCWzhMLcyBccmt7TNZP+y1cuYFNOWWHKUXQ3IrxCLB7WwLqQaEu7fTDAjHsTyBsSw==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.17.tgz", + "integrity": "sha512-KelsBD0sXSC0u3esr/r6sJYGRN6pzn3bYuI/6pTvvmZbjBlxQkRabHAVH6d+YhLcjUXKIAYIjZszczd1QJtOyA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", + "@firebase/component": "0.6.17", "@firebase/logger": "0.4.4", - "@firebase/remote-config": "0.5.0", + "@firebase/remote-config": "0.6.4", "@firebase/remote-config-types": "0.4.0", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "peerDependencies": { @@ -4787,13 +4808,13 @@ "license": "Apache-2.0" }, "node_modules/@firebase/storage": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.5.tgz", - "integrity": "sha512-sB/7HNuW0N9tITyD0RxVLNCROuCXkml5i/iPqjwOGKC0xiUfpCOjBE+bb0ABMoN1qYZfqk0y9IuI2TdomjmkNw==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.11.tgz", + "integrity": "sha512-nBtCGGpr39vuAeTQhG73nvMq3BjQBTgIg6fWufB6qglWYQCgky/XE4duSrOhTp2/QC+H3/SnaE/nKOQmjnPqjg==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/util": "1.10.3", + "@firebase/component": "0.6.17", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4804,15 +4825,15 @@ } }, "node_modules/@firebase/storage-compat": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.15.tgz", - "integrity": "sha512-Z9afjrK2O9o1ZHWCpprCGZ1BTc3BbvpZvi6tkSteC8H3W/fMM6x+RoSunlzD3hEVV5bkbwdJIqNClLMchvyoPA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.21.tgz", + "integrity": "sha512-LG3978H2Vy1XGa0Jz9VNFwgMrhjy/G8CTV8GkWpArzu+AhI/SE9c0e06SiXcFsVaQW2rObcqFa0zp51LDaVzRA==", "license": "Apache-2.0", "dependencies": { - "@firebase/component": "0.6.12", - "@firebase/storage": "0.13.5", + "@firebase/component": "0.6.17", + "@firebase/storage": "0.13.11", "@firebase/storage-types": "0.8.3", - "@firebase/util": "1.10.3", + "@firebase/util": "1.12.0", "tslib": "^2.1.0" }, "engines": { @@ -4833,35 +4854,16 @@ } }, "node_modules/@firebase/util": { - "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" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@firebase/vertexai": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@firebase/vertexai/-/vertexai-1.0.3.tgz", - "integrity": "sha512-SQHg/RPb3LwQs/xiLcvAZYz9NXyDSZUIIwvgsKh6e4wdULAfyPCZIu6Y2ZYIhZLfk9Q44cKZ+++7RPTaqQJdYA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.12.0.tgz", + "integrity": "sha512-Z4rK23xBCwgKDqmzGVMef+Vb4xso2j5Q8OG0vVL4m4fA5ZjPMYQazu8OJJC3vtQRC3SQ/Pgx/6TPNVsCd70QRw==", + "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@firebase/app-check-interop-types": "0.3.3", - "@firebase/component": "0.6.12", - "@firebase/logger": "0.4.4", - "@firebase/util": "1.10.3", "tslib": "^2.1.0" }, "engines": { "node": ">=18.0.0" - }, - "peerDependencies": { - "@firebase/app": "0.x", - "@firebase/app-types": "0.x" } }, "node_modules/@firebase/webchannel-wrapper": { @@ -4967,18 +4969,18 @@ } }, "node_modules/@grpc/grpc-js/node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.15.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.19.tgz", + "integrity": "sha512-3vMNr4TzNQyjHcRZadojpRaD9Ofr6LsonZAoQ+HMUa/9ORTPoxVIw0e0mpqWpdjj8xybyCM+oKOUH2vwFu/oEw==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@grpc/grpc-js/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/@grpc/proto-loader": { @@ -11897,39 +11899,39 @@ } }, "node_modules/firebase": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.2.0.tgz", - "integrity": "sha512-ztwPhBLAZMVNZjBeQzzTM4rk2rsRXmdFYcnvjAXh+StbiFVshHKaPO9VRGMUzF48du4Mkz6jN1wkmYCuUJPxLA==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.8.0.tgz", + "integrity": "sha512-zIv11czOqFayPllaJySKIKB2pS+xoWOnfI7j85SOiBKY1IW3NuZIaL+UgsZA+4PQZkPhFP8vmU2/oOun04ALbg==", "license": "Apache-2.0", "dependencies": { - "@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/ai": "1.3.0", + "@firebase/analytics": "0.10.16", + "@firebase/analytics-compat": "0.2.22", + "@firebase/app": "0.13.0", + "@firebase/app-check": "0.10.0", + "@firebase/app-check-compat": "0.3.25", + "@firebase/app-compat": "0.4.0", "@firebase/app-types": "0.9.3", - "@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" + "@firebase/auth": "1.10.5", + "@firebase/auth-compat": "0.5.25", + "@firebase/data-connect": "0.3.8", + "@firebase/database": "1.0.18", + "@firebase/database-compat": "2.0.9", + "@firebase/firestore": "4.7.15", + "@firebase/firestore-compat": "0.3.50", + "@firebase/functions": "0.12.7", + "@firebase/functions-compat": "0.3.24", + "@firebase/installations": "0.6.17", + "@firebase/installations-compat": "0.2.17", + "@firebase/messaging": "0.12.21", + "@firebase/messaging-compat": "0.2.21", + "@firebase/performance": "0.7.6", + "@firebase/performance-compat": "0.2.19", + "@firebase/remote-config": "0.6.4", + "@firebase/remote-config-compat": "0.2.17", + "@firebase/storage": "0.13.11", + "@firebase/storage-compat": "0.3.21", + "@firebase/util": "1.12.0" } }, "node_modules/firebase-admin": { @@ -21828,6 +21830,12 @@ "license": "MIT", "optional": true }, + "node_modules/web-vitals": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-4.2.4.tgz", + "integrity": "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==", + "license": "Apache-2.0" + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", diff --git a/package.json b/package.json index 20357e87b..8d1cf2f2d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@angular/fire", - "version": "19.1.0", + "version": "19.2.0", "description": "Angular + Firebase = ❤️", "private": true, "scripts": { @@ -57,7 +57,7 @@ "@angular/router": "^19.0.0", "@schematics/angular": "^19.0.0", "esbuild": "^0.24.0", - "firebase": "^11.2.0", + "firebase": "^11.8.0", "firebase-functions": "^6.1.0", "fs-extra": "^8.0.1", "fuzzy": "^0.1.3", diff --git a/src/ai/ai.module.ts b/src/ai/ai.module.ts new file mode 100644 index 000000000..444fd67b3 --- /dev/null +++ b/src/ai/ai.module.ts @@ -0,0 +1,79 @@ +import { + EnvironmentProviders, + InjectionToken, + Injector, + NgModule, + NgZone, + Optional, + makeEnvironmentProviders, +} from '@angular/core'; +import { VERSION, ɵAngularFireSchedulers, ɵgetDefaultInstanceOf } from '@angular/fire'; +import { FirebaseApp, FirebaseApps } from '@angular/fire/app'; +import { AppCheckInstances } from '@angular/fire/app-check'; +import { AI as FirebaseAI } from 'firebase/ai'; +import { registerVersion } from 'firebase/app'; +import { AI, AIInstances, AI_PROVIDER_NAME } from './ai'; + +export const PROVIDED_AI_INSTANCES = new InjectionToken('angularfire2.ai-instances'); + +export function defaultAIInstanceFactory(provided: FirebaseAI[]|undefined, defaultApp: FirebaseApp) { + const defaultAI = ɵgetDefaultInstanceOf(AI_PROVIDER_NAME, provided, defaultApp); + return defaultAI && new AI(defaultAI); +} + +export function AIInstanceFactory(fn: (injector: Injector) => FirebaseAI) { + return (zone: NgZone, injector: Injector) => { + const ai = zone.runOutsideAngular(() => fn(injector)); + return new AI(ai); + }; +} + +const AI_INSTANCES_PROVIDER = { + provide: AIInstances, + deps: [ + [new Optional(), PROVIDED_AI_INSTANCES ], + ] +}; + +const DEFAULT_AI_INSTANCE_PROVIDER = { + provide: AI, + useFactory: defaultAIInstanceFactory, + deps: [ + [new Optional(), PROVIDED_AI_INSTANCES ], + FirebaseApp, + ] +}; + +@NgModule({ + providers: [ + DEFAULT_AI_INSTANCE_PROVIDER, + AI_INSTANCES_PROVIDER, + ] +}) +export class AIModule { + constructor() { + registerVersion('angularfire', VERSION.full, 'ai'); + } +} + +export function provideAI(fn: (injector: Injector) => FirebaseAI, ...deps: any[]): EnvironmentProviders { + registerVersion('angularfire', VERSION.full, 'ai'); + + return makeEnvironmentProviders([ + DEFAULT_AI_INSTANCE_PROVIDER, + AI_INSTANCES_PROVIDER, + { + provide: PROVIDED_AI_INSTANCES, + useFactory: AIInstanceFactory(fn), + multi: true, + deps: [ + NgZone, + Injector, + ɵAngularFireSchedulers, + FirebaseApps, + [new Optional(), AppCheckInstances ], + ...deps, + ] + } + ]); +} diff --git a/src/ai/ai.spec.ts b/src/ai/ai.spec.ts new file mode 100644 index 000000000..9b6fc1008 --- /dev/null +++ b/src/ai/ai.spec.ts @@ -0,0 +1,38 @@ +import { TestBed } from '@angular/core/testing'; +import { AI, getAI, provideAI } from '@angular/fire/ai'; +import { FirebaseApp, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app'; +import { COMMON_CONFIG } from '../test-config'; +import { rando } from '../utils'; + +describe('AI', () => { + let app: FirebaseApp; + let ai: AI; + let providedAI: AI; + let appName: string; + + describe('single injection', () => { + + beforeEach(() => { + appName = rando(); + TestBed.configureTestingModule({ + providers: [ + provideFirebaseApp(() => initializeApp(COMMON_CONFIG, appName)), + provideAI(() => { + providedAI = getAI(getApp(appName)); + return providedAI; + }), + ], + }); + app = TestBed.inject(FirebaseApp); + ai = TestBed.inject(AI); + }); + + it('should be injectable', () => { + expect(providedAI).toBeTruthy(); + expect(ai).toEqual(providedAI); + expect(ai.app).toEqual(app); + }); + + }); + +}); diff --git a/src/ai/ai.ts b/src/ai/ai.ts new file mode 100644 index 000000000..f0e4ffc86 --- /dev/null +++ b/src/ai/ai.ts @@ -0,0 +1,30 @@ +import { ɵgetAllInstancesOf } from '@angular/fire'; +import { AI as FirebaseAI } from 'firebase/ai'; +import { from, timer } from 'rxjs'; +import { concatMap, distinct } from 'rxjs/operators'; + +// 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 AI extends FirebaseAI {} + +export class AI { + constructor(ai: FirebaseAI) { + return ai; + } +} + +export const AI_PROVIDER_NAME = 'AI'; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface AIInstances extends Array {} + +export class AIInstances { + constructor() { + return ɵgetAllInstancesOf(AI_PROVIDER_NAME); + } +} + +export const AIInstance$ = timer(0, 300).pipe( + concatMap(() => from(ɵgetAllInstancesOf(AI_PROVIDER_NAME))), + distinct(), +); diff --git a/src/ai/firebase.ts b/src/ai/firebase.ts new file mode 100644 index 000000000..4e33d0635 --- /dev/null +++ b/src/ai/firebase.ts @@ -0,0 +1,14 @@ +// DO NOT MODIFY, this file is autogenerated by tools/build.ts +export * from 'firebase/ai'; +import { ɵzoneWrap } from '@angular/fire'; +import { + getAI as _getAI, + getGenerativeModel as _getGenerativeModel, + getImagenModel as _getImagenModel, + getVertexAI as _getVertexAI +} from 'firebase/ai'; + +export const getAI = ɵzoneWrap(_getAI, true); +export const getGenerativeModel = ɵzoneWrap(_getGenerativeModel, true); +export const getImagenModel = ɵzoneWrap(_getImagenModel, true); +export const getVertexAI = ɵzoneWrap(_getVertexAI, true); diff --git a/src/ai/ng-package.json b/src/ai/ng-package.json new file mode 100644 index 000000000..d3032da35 --- /dev/null +++ b/src/ai/ng-package.json @@ -0,0 +1,6 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "lib": { + "entryFile": "public_api.ts" + } +} diff --git a/src/ai/package.json b/src/ai/package.json new file mode 100644 index 000000000..8dce418a5 --- /dev/null +++ b/src/ai/package.json @@ -0,0 +1,3 @@ +{ + "$schema": "../../node_modules/ng-packagr/package.schema.json" +} diff --git a/src/ai/public_api.ts b/src/ai/public_api.ts new file mode 100644 index 000000000..aee859b99 --- /dev/null +++ b/src/ai/public_api.ts @@ -0,0 +1,3 @@ +export { AI, AIInstances, AIInstance$ } from './ai'; +export { provideAI, AIModule } from './ai.module'; +export * from './firebase'; diff --git a/src/package.json b/src/package.json index b4e78e8ad..a3c12b4bc 100644 --- a/src/package.json +++ b/src/package.json @@ -36,7 +36,7 @@ "@angular/platform-server": { "optional": true } }, "dependencies": { - "firebase": "^11.2.0", + "firebase": "^11.8.0", "rxfire": "^6.1.0", "@angular-devkit/schematics": "^19.0.0", "@schematics/angular": "^19.0.0", diff --git a/src/vertexai/firebase.ts b/src/vertexai/firebase.ts index c988e7e2a..9c24d52b9 100644 --- a/src/vertexai/firebase.ts +++ b/src/vertexai/firebase.ts @@ -2,9 +2,13 @@ export * from 'firebase/vertexai'; import { ɵzoneWrap } from '@angular/fire'; import { + getAI as _getAI, getGenerativeModel as _getGenerativeModel, + getImagenModel as _getImagenModel, getVertexAI as _getVertexAI } from 'firebase/vertexai'; +export const getAI = ɵzoneWrap(_getAI, true); export const getGenerativeModel = ɵzoneWrap(_getGenerativeModel, true); +export const getImagenModel = ɵzoneWrap(_getImagenModel, true); export const getVertexAI = ɵzoneWrap(_getVertexAI, true); diff --git a/tools/build.ts b/tools/build.ts index a8ced7106..c947ad765 100644 --- a/tools/build.ts +++ b/tools/build.ts @@ -114,6 +114,7 @@ ${exportedZoneWrappedFns} await writeFile(filePath, fileOutput); }; return Promise.all([ + reexport('ai', 'firebase', 'firebase/ai', tsKeys()), reexport('analytics', 'firebase', 'firebase/analytics', tsKeys(), { isSupported: { blockUntilFirst: false }, logEvent: { blockUntilFirst: false, logLevel: LogLevel.VERBOSE },