From 1358d6f99857c1c8c60af26be6016f71ddb10890 Mon Sep 17 00:00:00 2001 From: rosariopf Date: Wed, 29 May 2024 21:05:54 +0000 Subject: [PATCH 1/7] flutter pub upgrade --- packages/firebase_snippets_app/pubspec.lock | 548 ++++++++++---------- packages/firebase_snippets_app/pubspec.yaml | 8 +- 2 files changed, 266 insertions(+), 290 deletions(-) diff --git a/packages/firebase_snippets_app/pubspec.lock b/packages/firebase_snippets_app/pubspec.lock index 5b6b0af..12b93ee 100644 --- a/packages/firebase_snippets_app/pubspec.lock +++ b/packages/firebase_snippets_app/pubspec.lock @@ -5,34 +5,34 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "405666cd3cf0ee0a48d21ec67e65406aad2c726d9fa58840d3375e7bdcd32a07" + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" url: "https://pub.dev" source: hosted - version: "60.0.0" + version: "67.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: "1a5e13736d59235ce0139621b4bbe29bc89839e202409081bc667eb3cd20674c" + sha256: "37a42d06068e2fe3deddb2da079a8c4d105f241225ba27b7122b37e9865fd8f7" url: "https://pub.dev" source: hosted - version: "1.3.5" + version: "1.3.35" analyzer: dependency: transitive description: name: analyzer - sha256: "1952250bd005bacb895a01bf1b4dc00e3ba1c526cf47dca54dfe24979c65f5b3" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" url: "https://pub.dev" source: hosted - version: "5.12.0" + version: "6.4.1" args: dependency: transitive description: name: args - sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.5.0" async: dependency: transitive description: @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: build - sha256: "43865b79fbb78532e4bff7c33087aa43b1d488c4fdef014eaef568af6d8016dc" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" build_config: dependency: transitive description: @@ -69,34 +69,34 @@ packages: dependency: transitive description: name: build_daemon - sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" + sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9" url: "https://pub.dev" source: hosted - version: "4.0.0" + version: "4.0.2" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced" + sha256: "1414d6d733a85d8ad2f1dfcb3ea7945759e35a123cb99ccfac75d0758f75edfa" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "2.4.10" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "30859c90e9ddaccc484f56303931f477b1f1ba2bab74aa32ed5d6ce15870f8cf" + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" url: "https://pub.dev" source: hosted - version: "7.2.8" + version: "7.3.0" built_collection: dependency: transitive description: @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: built_value - sha256: "2f17434bd5d52a26762043d6b43bb53b3acd029b4d9071a329f46d67ef297e6d" + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb url: "https://pub.dev" source: hosted - version: "8.5.0" + version: "8.9.2" characters: dependency: transitive description: @@ -141,82 +141,82 @@ packages: dependency: "direct main" description: name: cloud_firestore - sha256: "6ffb0e84efbaab16245994bcf61ba10a98ee1e73bac075cae8036ba6427a7ac0" + sha256: a0f161b92610e078b4962d7e6ebeb66dc9cce0ada3514aeee442f68165d78185 url: "https://pub.dev" source: hosted - version: "4.8.5" + version: "4.17.5" cloud_firestore_odm: dependency: "direct main" description: name: cloud_firestore_odm - sha256: eaa7d9fe017768b04d36a4a5f6dc68cd22b6a85dabdb6a9c084849699eb6da35 + sha256: e0d07eb2a89988cfa379ce58027a72b36483d6ec3c57281035ad3e3f149e9682 url: "https://pub.dev" source: hosted - version: "1.0.0-dev.59" + version: "1.0.0-dev.84" cloud_firestore_odm_generator: dependency: "direct dev" description: name: cloud_firestore_odm_generator - sha256: b57fd7f1201ab4b60caa13ec750f490e81b02f95cf4d99cf0ea68d26fb1e1e09 + sha256: "1be5131e1d1b41c6d63bd5fec8b1a49f5fc5ee455815a07f490029a609089abc" url: "https://pub.dev" source: hosted - version: "1.0.0-dev.58" + version: "1.0.0-dev.85" cloud_firestore_platform_interface: dependency: transitive description: name: cloud_firestore_platform_interface - sha256: "1487af8fd74a9ca754995cae1cf6bb2440ac4a93a5f7c7bbe7cc434231cc03c9" + sha256: "6a55b319f8d33c307396b9104512e8130a61904528ab7bd8b5402678fca54b81" url: "https://pub.dev" source: hosted - version: "5.15.4" + version: "6.2.5" cloud_firestore_web: dependency: transitive description: name: cloud_firestore_web - sha256: c3d37dad0b5637ab337acc4ab204e6d739e3be0e7972cdc85bdc4aac5145c92d + sha256: "89dfa1304d3da48b3039abbb2865e3d30896ef858e569a16804a99f4362283a9" url: "https://pub.dev" source: hosted - version: "3.6.4" + version: "3.12.5" cloud_functions: dependency: "direct main" description: name: cloud_functions - sha256: f539964f0db7153bbb39cf1dd32fadbfd59e46672aaec595221c9bd6a4571ec4 + sha256: ddec68a2fbee603527c009bb20c6bd071559dfa87fda55d9d92052d1ebff5377 url: "https://pub.dev" source: hosted - version: "4.3.1" + version: "4.7.6" cloud_functions_platform_interface: dependency: transitive description: name: cloud_functions_platform_interface - sha256: e8b1d86d4d847c627de42198f8b6a16e02386e1ca31e58fb6f6d2e077a4f9299 + sha256: "0c6fca0e64fc2d3a3834d39f99b0ee6f76d96f94bb5acf4593af891df914d175" url: "https://pub.dev" source: hosted - version: "5.4.1" + version: "5.5.28" cloud_functions_web: dependency: transitive description: name: cloud_functions_web - sha256: "5c371fc9ad7bc1262ed9303d01dc443c5b790f396cd6404c9cf5c157bda41a7f" + sha256: af536e7c7223c64250c6cc384dc553d76bbacc9b9127389df0c654887f203911 url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.9.6" code_builder: dependency: transitive description: name: code_builder - sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe" + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.10.0" collection: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.18.0" convert: dependency: transitive description: @@ -237,18 +237,10 @@ packages: dependency: transitive description: name: dart_style - sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.1" - facebook_auth_desktop: - dependency: transitive - description: - name: facebook_auth_desktop - sha256: "35ff7b8c62ad37c4bc08eed7d58cf301ab8770a2f4eed46573843ae1e1a1aac3" - url: "https://pub.dev" - source: hosted - version: "0.0.9" + version: "2.3.6" fake_async: dependency: transitive description: @@ -261,258 +253,258 @@ packages: dependency: transitive description: name: ffi - sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.2" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.0" firebase_analytics: dependency: "direct main" description: name: firebase_analytics - sha256: d283d7475afd8f9397889bf00961ddde55c3c2daf25334dd3e3a69db0f21c939 + sha256: dbf1e7ab22cfb1f4a4adb103b46a26276b4edc593d4a78ef6fb942bafc92e035 url: "https://pub.dev" source: hosted - version: "10.4.1" + version: "10.10.7" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: e4f8f612a1847fc4e906bd581cbd84bea5385478ffa301dfe49796bf2c89308e + sha256: "3729b74f8cf1d974a27ba70332ecb55ff5ff560edc8164a6469f4a055b429c37" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "3.10.8" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: afeae10f89ef87b288e830d15ad1c712feedda881d27d422b2f064fa749952c8 + sha256: "019cd7eee74254d33fbd2e29229367ce33063516bf6b3258a341d89e3b0f1655" url: "https://pub.dev" source: hosted - version: "0.5.4+1" + version: "0.5.7+7" firebase_auth: dependency: "direct main" description: name: firebase_auth - sha256: "64ac4dc04b51aab9d17c23b496c90f948b9ce2065d7b83e0829c7a497d88f9ce" + sha256: cfc2d970829202eca09e2896f0a5aa7c87302817ecc0bdfa954f026046bf10ba url: "https://pub.dev" source: hosted - version: "4.6.1" + version: "4.20.0" firebase_auth_platform_interface: dependency: "direct main" description: name: firebase_auth_platform_interface - sha256: "63fd67d125ae483722ff3742953e2e06bbc1e6cb3da68e5f7f4430d5f82f9373" + sha256: a0270e1db3b2098a14cb2a2342b3cd2e7e458e0c391b1f64f6f78b14296ec093 url: "https://pub.dev" source: hosted - version: "6.15.1" + version: "7.3.0" firebase_auth_web: dependency: transitive description: name: firebase_auth_web - sha256: "241a4ecce80da2014e3cd93d7b7e1a66e9b683e4241d466d73676ac90599b805" + sha256: "64e067e763c6378b7e774e872f0f59f6812885e43020e25cde08f42e9459837b" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.12.0" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: c78132175edda4bc532a71e01a32964e4b4fcf53de7853a422d96dac3725f389 + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" url: "https://pub.dev" source: hosted - version: "2.15.1" + version: "2.32.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2 + sha256: c437ae5d17e6b5cc7981cf6fd458a5db4d12979905f9aafd1fea930428a9fe63 url: "https://pub.dev" source: hosted - version: "4.8.0" + version: "5.0.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "4cf4d2161530332ddc3c562f19823fb897ff37a9a774090d28df99f47370e973" + sha256: "43d9e951ac52b87ae9cc38ecdcca1e8fa7b52a1dd26a96085ba41ce5108db8e9" url: "https://pub.dev" source: hosted - version: "2.7.0" + version: "2.17.0" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: "0d74cca3085f144f99aa4bd82cc4d33280d4cb72bac0b733cbf97c2d7d126df8" + sha256: "9897c01efaa950d2f6da8317d12452749a74dc45f33b46390a14cfe28067f271" url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.5.7" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: "13880033d5f2055f53bcda28024e16607b8400445a425f86732c1935da9260db" + sha256: "16a71e08fbf6e00382816e1b13397898c29a54fa0ad969c2c2a3b82a704877f0" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "3.6.35" firebase_database: dependency: "direct main" description: name: firebase_database - sha256: d10fe0a2187e4c84381338f38a38af2fb11d2d8ea37324522c124d27819e7dbd + sha256: "3b9ca306d26ad243ccbc4c717ff6e8563a080ebe11ee77fa7349b419c894b42d" url: "https://pub.dev" source: hosted - version: "10.2.1" + version: "10.5.7" firebase_database_platform_interface: dependency: transitive description: name: firebase_database_platform_interface - sha256: c1474743f110b100703f1d5ad3593c805084668506eeeff5f0c6fd710b06c4fd + sha256: "5864cc362275465e9bd682b243f19419c9d78b861c2db820241eea596ae3b320" url: "https://pub.dev" source: hosted - version: "0.2.5+1" + version: "0.2.5+35" firebase_database_web: dependency: transitive description: name: firebase_database_web - sha256: "05de906a507ca6a10c7db00ff97395c9284e328cad01d794bc5e123eae7b55fa" + sha256: a6008395dd20e8b8dde0691b441c181a1216c3866f89f48dcb6889d34fd35905 url: "https://pub.dev" source: hosted - version: "0.2.3+1" + version: "0.2.5+7" firebase_dynamic_links: dependency: "direct main" description: name: firebase_dynamic_links - sha256: "057b48fc8126583c54e32641ca5b7c25f041fd119e98c4888cd1665baeff7fe4" + sha256: "47b8c8a8546d8a7f9000edb90848549f20b137d814ee7e0407b3d43b8445e282" url: "https://pub.dev" source: hosted - version: "5.3.1" + version: "5.5.7" firebase_dynamic_links_platform_interface: dependency: transitive description: name: firebase_dynamic_links_platform_interface - sha256: "861a4468f435dc3ab5d1b14d07cabe6db12e3c3bc2e69be2fa51cb0886d27fa2" + sha256: "72e7810635f908ce060c5803c7acb29116c5b6befc73e90446c52722bc9506a2" url: "https://pub.dev" source: hosted - version: "0.2.6+1" + version: "0.2.6+35" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "9cfe5c4560fb83393511ca7620f8fb3f22c9a80303052f10290e732fcfb801bd" + sha256: a1662cc95d9750a324ad9df349b873360af6f11414902021f130c68ec02267c4 url: "https://pub.dev" source: hosted - version: "14.6.1" + version: "14.9.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "7e25cb71019ccef8b1fd7b37969af79f04c467974cce4dfc291fa36974edd7ba" + sha256: "87c4a922cb6f811cfb7a889bdbb3622702443c52a0271636cbc90d813ceac147" url: "https://pub.dev" source: hosted - version: "4.5.1" + version: "4.5.37" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "5d9840cc8126ea723b1bda901389cb542902f664f2653c16d4f8114e95f13cec" + sha256: "0d34dca01a7b103ed7f20138bffbb28eb0e61a677bf9e78a028a932e2c7322d5" url: "https://pub.dev" source: hosted - version: "3.5.1" + version: "3.8.7" firebase_ml_model_downloader: dependency: "direct main" description: name: firebase_ml_model_downloader - sha256: "686593460f2b7169f68421a91e138529375e2113ff6e39c1972102cd8480fb09" + sha256: "3963095f4e9bb84524662bd587ca9107aaaf68a71f9492216568f83cc375dd61" url: "https://pub.dev" source: hosted - version: "0.2.3+1" + version: "0.2.5+6" firebase_ml_model_downloader_platform_interface: dependency: transitive description: name: firebase_ml_model_downloader_platform_interface - sha256: "9e3e212ddfe3bf7ae291bcfe258c29cd3fff89ecb5c310236f6360540de0dfd9" + sha256: be40df1bc9ba1b1d06b8a214f3e653587aec44d7ffa2d2172c6212e290ea757a url: "https://pub.dev" source: hosted - version: "0.1.4+1" + version: "0.1.4+33" firebase_performance: dependency: "direct main" description: name: firebase_performance - sha256: "60c6ef0108429a6a73f9d66f10532b715901677ed662b87a511edba9cb98c4ec" + sha256: dbcfc300755c4bb866988de20a491f0b53e1a0d14c375a2c31aa53ca82174c5b url: "https://pub.dev" source: hosted - version: "0.9.2+1" + version: "0.9.4+7" firebase_performance_platform_interface: dependency: transitive description: name: firebase_performance_platform_interface - sha256: f282cdf9f939aabfaab6b8a40e0e56ef27a7effef6540c13eaa927b935cb1944 + sha256: "191c9945c2ea4359cb57dc086463b2a25b0f9d8d42f66a0be4c1a7133e26ebc8" url: "https://pub.dev" source: hosted - version: "0.1.4+1" + version: "0.1.4+35" firebase_performance_web: dependency: transitive description: name: firebase_performance_web - sha256: "71e4a9a0f8f39b830161986fdcd5f5d45837e56bc1d8da0e41bdc44551981d31" + sha256: "9f03a53f55697b206393366bf138e382cbd845d5021b5be6f7fc97b338da2cb5" url: "https://pub.dev" source: hosted - version: "0.1.4+1" + version: "0.1.6+7" firebase_remote_config: dependency: "direct main" description: name: firebase_remote_config - sha256: "9a1c1f26cbfa26bbc28911e66c4626456997d5e0faa646aab77736150fa2d618" + sha256: "653bd94b68e2c4e89eca10db90576101f1024151f39f2d4e7c64ae6a90a5f9c5" url: "https://pub.dev" source: hosted - version: "4.2.1" + version: "4.4.7" firebase_remote_config_platform_interface: dependency: transitive description: name: firebase_remote_config_platform_interface - sha256: cffee0e79cfd6acadcc53be5dbae31d1c67a603827223a234b5d9d5983ac6c9b + sha256: "24a2c445b15de3af7e4582ebceb2aa9a1e3731d0202cb3e7a1e03012440fa07d" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.35" firebase_remote_config_web: dependency: transitive description: name: firebase_remote_config_web - sha256: "43d014f2c54fa283b5825352208215f0fc228ad8bfc0613a054885039d8cf721" + sha256: "525aa3000fd27cd023841c802010a06515e564aab2f147aa964b35f54abbf449" url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.6.7" firebase_storage: dependency: "direct main" description: name: firebase_storage - sha256: "89ff2dfd353f953fb2bbbe04359ea1a46d643944f310cfed22dadf352fc16976" + sha256: "2ae478ceec9f458c1bcbf0ee3e0100e4e909708979e83f16d5d9fba35a5b42c1" url: "https://pub.dev" source: hosted - version: "11.2.1" + version: "11.7.7" firebase_storage_platform_interface: dependency: transitive description: name: firebase_storage_platform_interface - sha256: c06ccd21c3ed20da6128629ab7d525f7b613caddfcd5466ba4a1ff58655261ac + sha256: "4e18662e6a66e2e0e181c06f94707de06d5097d70cfe2b5141bf64660c5b5da9" url: "https://pub.dev" source: hosted - version: "4.4.1" + version: "5.1.22" firebase_storage_web: dependency: transitive description: name: firebase_storage_web - sha256: "26a039f211b226fc216f9f06f13402bdf08661edb7c42cb1de3bd236afbbbf75" + sha256: "3a44aacd38a372efb159f6fe36bb4a7d79823949383816457fd43d3d47602a53" url: "https://pub.dev" source: hosted - version: "3.6.1" + version: "3.9.7" fixnum: dependency: transitive description: @@ -535,82 +527,34 @@ packages: dependency: "direct main" description: name: flutter_facebook_auth - sha256: "2ed18ea374919fbca4c85383957662674d23f6f3901dfbf603f8d54cab10d050" + sha256: fd1a6749dafbd5923585038671b63abdcedd4fe5923eb42fc154247dc5622519 url: "https://pub.dev" source: hosted - version: "5.0.11" + version: "6.0.4" flutter_facebook_auth_platform_interface: dependency: transitive description: name: flutter_facebook_auth_platform_interface - sha256: "0bc5fefc89b012635c4424a34334215e81e0ff38c5b413f869fd9c14a10c6135" + sha256: "86630c4dbba1c20fba26ea9e59ad0d48f5ff59e7373cacd36f916160186f9ce9" url: "https://pub.dev" source: hosted - version: "4.1.1" + version: "5.0.0" flutter_facebook_auth_web: dependency: transitive description: name: flutter_facebook_auth_web - sha256: "6dfd4a3844137fbf7eb4c8d753add1ca15233b280a73a3360d9af46b87680678" + sha256: "0e2960e9e23f2538e29b406495e18b047fbf233abfaed8d2b99acda17a2f7479" url: "https://pub.dev" source: hosted - version: "4.1.1" + version: "5.0.1" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c - url: "https://pub.dev" - source: hosted - version: "2.0.1" - flutter_secure_storage: - dependency: transitive - description: - name: flutter_secure_storage - sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5" + sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c" url: "https://pub.dev" source: hosted - version: "8.0.0" - flutter_secure_storage_linux: - dependency: transitive - description: - name: flutter_secure_storage_linux - sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3" - url: "https://pub.dev" - source: hosted - version: "1.1.3" - flutter_secure_storage_macos: - dependency: transitive - description: - name: flutter_secure_storage_macos - sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - flutter_secure_storage_platform_interface: - dependency: transitive - description: - name: flutter_secure_storage_platform_interface - sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b - url: "https://pub.dev" - source: hosted - version: "1.0.1" - flutter_secure_storage_web: - dependency: transitive - description: - name: flutter_secure_storage_web - sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - flutter_secure_storage_windows: - dependency: transitive - description: - name: flutter_secure_storage_windows - sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee - url: "https://pub.dev" - source: hosted - version: "2.0.0" + version: "4.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -625,18 +569,18 @@ packages: dependency: transitive description: name: freezed_annotation - sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 + sha256: c3fd9336eb55a38cc1bbd79ab17573113a8deccd0ecbbf926cca3c62803b5c2d url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.1" frontend_server_client: dependency: transitive description: name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "4.0.0" fuchsia_remote_debug_protocol: dependency: transitive description: flutter @@ -654,66 +598,66 @@ packages: dependency: transitive description: name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" google_identity_services_web: dependency: transitive description: name: google_identity_services_web - sha256: "7940fdc3b1035db4d65d387c1bdd6f9574deaa6777411569c05ecc25672efacd" + sha256: "9482364c9f8b7bd36902572ebc3a7c2b5c8ee57a9c93e6eb5099c1a9ec5265d8" url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "0.3.1+1" google_sign_in: dependency: "direct main" description: name: google_sign_in - sha256: "776a4c988dc179c3b8e9201de0ad61bf350a4e75d378ff9d94c76880378c7bca" + sha256: "0b8787cb9c1a68ad398e8010e8c8766bfa33556d2ab97c439fb4137756d7308f" url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.1" google_sign_in_android: dependency: transitive description: name: google_sign_in_android - sha256: "2a8b90b766ce00b03e7543f4ffeec97b6eb51fb6c3f31ce2a364bd1f1b9dd7fc" + sha256: "8f2606fffd912ff8c23e8d94da106764c116112ce65fb18c78123331ae628eb3" url: "https://pub.dev" source: hosted - version: "6.1.14" + version: "6.1.24" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "6ec0e13a4c5c646471b9f6a25ceb3ae76d339889d4c0f79b729bf0714215a63e" + sha256: a058c9880be456f21e2e8571c1126eaacd570bdc5b6c6d9d15aea4bdf22ca9fe url: "https://pub.dev" source: hosted - version: "5.6.2" + version: "5.7.6" google_sign_in_platform_interface: dependency: transitive description: name: google_sign_in_platform_interface - sha256: "95a9e0a8701b5485f2ca330fd1fc6f918f5ce088042ce1019c5e389d8574ae4c" + sha256: "1f6e5787d7a120cc0359ddf315c92309069171306242e181c09472d1b00a2971" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.5" google_sign_in_web: dependency: transitive description: name: google_sign_in_web - sha256: "7e0ec507f4752383a6daa67d0cc775253cfc3b1d87907e7004e2c1b99c0a723f" + sha256: fc0f14ed45ea616a6cfb4d1c7534c2221b7092cc4f29a709f0c3053cc3e821bd url: "https://pub.dev" source: hosted - version: "0.12.0" + version: "0.12.4" graphs: dependency: transitive description: name: graphs - sha256: "772db3d53d23361d4ffcf5a9bb091cf3ee9b22f2be52cd107cd7a2683a89ba0e" + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" http: dependency: transitive description: @@ -755,74 +699,98 @@ packages: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "0.7.1" json_annotation: dependency: "direct main" description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.9.0" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: "61a60716544392a82726dd0fa1dd6f5f1fd32aec66422b6e229e7b90d52325c4" + sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b + url: "https://pub.dev" + source: hosted + version: "6.8.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" + url: "https://pub.dev" + source: hosted + version: "10.0.4" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "6.7.0" + version: "3.0.3" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" lints: dependency: transitive description: name: lints - sha256: "6b0206b0bf4f04961fc5438198ccb3a885685cd67d4d4a32cc20ad7f8adbe015" + sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "4.0.0" logging: dependency: transitive description: name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.12.0" mime: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" package_config: dependency: transitive description: @@ -835,74 +803,74 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: "direct main" description: name: path_provider - sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" + sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.1.3" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514" url: "https://pub.dev" source: hosted - version: "2.0.27" + version: "2.2.5" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3" + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.4.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 url: "https://pub.dev" source: hosted - version: "2.1.10" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.2.1" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.4" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.1.8" pool: dependency: transitive description: @@ -915,10 +883,10 @@ packages: dependency: transitive description: name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" url: "https://pub.dev" source: hosted - version: "4.2.4" + version: "5.0.2" pub_semver: dependency: transitive description: @@ -931,18 +899,10 @@ packages: dependency: transitive description: name: pubspec_parse - sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 - url: "https://pub.dev" - source: hosted - version: "1.2.3" - quiver: - dependency: transitive - description: - name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "1.3.0" recase: dependency: transitive description: @@ -963,34 +923,34 @@ packages: dependency: transitive description: name: shelf_web_socket - sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.0.0" sign_in_with_apple: dependency: "direct main" description: name: sign_in_with_apple - sha256: ac3b113767dfdd765078c507dad9d4d9fe96b669cc7bd88fc36fc15376fb3400 + sha256: b0abd9c0d0407140829b12cd99a250f10b20352573ff08c7e0c5174c64b4973e url: "https://pub.dev" source: hosted - version: "4.3.0" + version: "6.1.0" sign_in_with_apple_platform_interface: dependency: transitive description: name: sign_in_with_apple_platform_interface - sha256: a5883edee09ed6be19de19e7d9f618a617fe41a6fa03f76d082dfb787e9ea18d + sha256: c2ef2ce6273fce0c61acd7e9ff5be7181e33d7aa2b66508b39418b786cca2119 url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.1.0" sign_in_with_apple_web: dependency: transitive description: name: sign_in_with_apple_web - sha256: "44b66528f576e77847c14999d5e881e17e7223b7b0625a185417829e5306f47a" + sha256: c009e9beeb6c376e86aaa154fcc8b4e075d4bad90c56286b9668a51cdb6129ea url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "2.1.0" sky_engine: dependency: transitive description: flutter @@ -1000,42 +960,42 @@ packages: dependency: transitive description: name: source_gen - sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33" + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.5.0" source_helper: dependency: transitive description: name: source_helper - sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" + sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.3.4" source_span: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -1072,10 +1032,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.7.0" timing: dependency: transitive description: @@ -1104,66 +1064,66 @@ packages: dependency: transitive description: name: url_launcher - sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3 + sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" url: "https://pub.dev" source: hosted - version: "6.1.11" + version: "6.2.6" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "7aac14be5f4731b923cc697ae2d42043945076cd0dbb8806baecc92c1dc88891" + sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf url: "https://pub.dev" source: hosted - version: "6.0.33" + version: "6.3.3" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" + sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "6.3.0" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.1.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e" + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.2.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370" + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.3.2" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa" + sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" url: "https://pub.dev" source: hosted - version: "2.0.16" + version: "2.3.1" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771" + sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 url: "https://pub.dev" source: hosted - version: "3.0.6" + version: "3.1.1" vector_math: dependency: transitive description: @@ -1176,10 +1136,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "11.3.0" + version: "14.2.1" watcher: dependency: transitive description: @@ -1188,22 +1148,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "24301d8c293ce6fe327ffe6f59d8fd8834735f0ec36e4fd383ec7ff8a64aa078" + url: "https://pub.dev" + source: hosted + version: "0.1.5" web_socket_channel: dependency: transitive description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + sha256: a2d56211ee4d35d9b344d9d4ce60f362e4f5d1aafb988302906bd732bc731276 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "3.0.0" webdriver: dependency: transitive description: name: webdriver - sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49" + sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" webview_flutter: dependency: transitive description: @@ -1240,18 +1216,18 @@ packages: dependency: transitive description: name: win32 - sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c" + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 url: "https://pub.dev" source: hosted - version: "4.1.4" + version: "5.5.1" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.4" yaml: dependency: transitive description: @@ -1261,5 +1237,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.0.0 <4.0.0" - flutter: ">=3.3.0" + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" diff --git a/packages/firebase_snippets_app/pubspec.yaml b/packages/firebase_snippets_app/pubspec.yaml index 6ad16f7..a5296d4 100644 --- a/packages/firebase_snippets_app/pubspec.yaml +++ b/packages/firebase_snippets_app/pubspec.yaml @@ -39,20 +39,20 @@ dependencies: firebase_performance: ^0.9.2 json_annotation: ^4.4.0 google_sign_in: ^6.1.0 - flutter_facebook_auth: ^5.0.11 + flutter_facebook_auth: ^6.0.4 github_sign_in: ^0.0.4 twitter_login: ^4.1.0 - sign_in_with_apple: ^4.3.0 + sign_in_with_apple: ^6.1.0 crypto: ^3.0.1 firebase_crashlytics: ^3.3.0 - firebase_auth_platform_interface: ^6.15.1 + firebase_auth_platform_interface: ^7.3.0 dev_dependencies: flutter_test: sdk: flutter integration_test: sdk: flutter - flutter_lints: ^2.0.1 + flutter_lints: ^4.0.0 build_runner: ^2.1.8 cloud_firestore_odm_generator: ^1.0.0-dev.11 json_serializable: ^6.1.5 From 9609c4add742dfc12c9853c4a618a0d8a52aa7b1 Mon Sep 17 00:00:00 2001 From: rosariopf Date: Wed, 29 May 2024 22:11:17 +0000 Subject: [PATCH 2/7] add vertex ai snippets --- .../lib/snippets/vertex_ai.dart | 329 ++++++++++++++++++ packages/firebase_snippets_app/pubspec.lock | 152 +++----- packages/firebase_snippets_app/pubspec.yaml | 2 +- 3 files changed, 374 insertions(+), 109 deletions(-) create mode 100644 packages/firebase_snippets_app/lib/snippets/vertex_ai.dart diff --git a/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart b/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart new file mode 100644 index 0000000..2454976 --- /dev/null +++ b/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart @@ -0,0 +1,329 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ignore_for_file: avoid_print, unused_local_variable + +import 'dart:io'; + +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_vertexai/firebase_vertexai.dart'; +import 'package:firebase_snippets_app/snippets/snippet_base.dart'; + +class VertexAISnippets extends DocSnippet { + late final GenerativeModel model; + + @override + void runAll() { + initializeModel(); + configureModel(); + safetySetting(); + multiSafetySetting(); + textGenTextOnlyPromptStream(); + textGenTextOnlyPrompt(); + textGenMultimodalOneImagePromptStream(); + textGenMultimodalOneImagePrompt(); + textGenMultiModalMultiImagePromptStreaming(); + textGenMultiModalMultiImagePrompt(); + textGenMultiModalVideoPromptStreaming(); + textGenMultiModalVideoPrompt(); + countTokensText(); + countTokensTextImage(); + chatStream(); + chat(); + setSystemInstructions(); + } + + void initializeModel() async { + // [START initialize_model] + // Initialize FirebaseApp + await Firebase.initializeApp(); + // Initialize the {{vertexai}} service and the generative model + // Specify a model that supports your use case + // Gemini 1.5 models are versatile and can be used with all API capabilities + final model = + FirebaseVertexAI.instance.generativeModel(model: '{{generic_model_name_initialization}}'); + // [END initialize_model] + } + + void configureModel() { + // [START configure_model] + // ... + + final generationConfig = GenerationConfig( + maxOutputTokens: 200, + stopSequences: ["red"], + temperature: 0.9, + topP: 0.1, + topK: 16, + ); + final model = FirebaseVertexAI.instance.generativeModel( + model: '{{generic_model_name_initialization}}', + generationConfig: generationConfig, + ); + + // ... + // [END configure_model] + } + + void safetySetting() { + // [START safety_setting] + // ... + + final safetySettings = [ + SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high) + ]; + final model = FirebaseVertexAI.instance.generativeModel( + model: '{{generic_model_name_initialization}}', + safetySettings: safetySettings, + ); + + // ... + // [END safety_setting] + } + + void multiSafetySetting() { + // [START multi_safety_setting] + // ... + + final safetySettings = [ + SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high), + SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.high), + ]; + final model = FirebaseVertexAI.instance.generativeModel( + model: '{{generic_model_name_initialization}}', + safetySettings: safetySettings, + ); + + // ... + // [END multi_safety_setting] + } + + void textGenTextOnlyPromptStream() async { + // [START text_gen_text_only_prompt_streaming] + // Provide a prompt that contains text + final prompt = [Content.text('Write a story about a magic backpack.')]; + + // To stream generated text output, call generateContentStream with the text input + final response = model.generateContentStream(prompt); + await for (final chunk in response) { + print(chunk.text); + } + // [END text_gen_text_only_prompt_streaming] + } + + void textGenTextOnlyPrompt() async { + // [START text_gen_text_only_prompt] + // Provide a prompt that contains text + final prompt = [Content.text('Write a story about a magic backpack.')]; + + // To generate text output, call generateContent with the text input + final response = await model.generateContent(prompt); + print(response.text); + // [END text_gen_text_only_prompt] + } + + void textGenMultimodalOneImagePromptStream() async { + // [START text_gen_multimodal_one_image_prompt_streaming] + // Provide a text prompt to include with the image + final prompt = TextPart("What's in the picture?"); + // Prepare images for input + final image = await File('image0.jpg').readAsBytes(); + final imagePart = DataPart('image/jpeg', image); + + // To stream generated text output, call generateContentStream with the text and image + final response = await model.generateContentStream([ + Content.multi([prompt,imagePart]) + ]); + await for (final chunk in response) { + print(chunk.text); + } + // [END text_gen_multimodal_one_image_prompt_streaming] + } + + void textGenMultimodalOneImagePrompt() async { + // [START text_gen_multimodal_one_image_prompt] + // Provide a text prompt to include with the image + final prompt = TextPart("What's in the picture?"); + // Prepare images for input + final image = await File('image0.jpg').readAsBytes(); + final imagePart = DataPart('image/jpeg', image); + + // To generate text output, call generateContent with the text and image + final response = await model.generateContent([ + Content.multi([prompt,imagePart]) + ]); + print(response.text); + // [END text_gen_multimodal_one_image_prompt] + } + + void textGenMultiModalMultiImagePromptStreaming() async { + // [START text_gen_multimodal_multi_image_prompt_streaming] + final (firstImage, secondImage) = await ( + File('image0.jpg').readAsBytes(), + File('image1.jpg').readAsBytes() + ).wait; + // Provide a text prompt to include with the images + final prompt = TextPart("What's different between these pictures?"); + // Prepare images for input + final imageParts = [ + DataPart('image/jpeg', firstImage), + DataPart('image/jpeg', secondImage), + ]; + + // To stream generated text output, call generateContentStream with the text and images + final response = model.generateContentStream([ + Content.multi([prompt, ...imageParts]) + ]); + await for (final chunk in response) { + print(chunk.text); + } + // [END text_gen_multimodal_multi_image_prompt_streaming] + } + + void textGenMultiModalMultiImagePrompt() async { + // [START text_gen_multimodal_multi_image_prompt] + final (firstImage, secondImage) = await ( + File('image0.jpg').readAsBytes(), + File('image1.jpg').readAsBytes() + ).wait; + // Provide a text prompt to include with the images + final prompt = TextPart("What's different between these pictures?"); + // Prepare images for input + final imageParts = [ + DataPart('image/jpeg', firstImage), + DataPart('image/jpeg', secondImage), + ]; + + // To generate text output, call generateContent with the text and images + final response = await model.generateContent([ + Content.multi([prompt, ...imageParts]) + ]); + print(response.text); + // [END text_gen_multimodal_multi_image_prompt] + } + + void textGenMultiModalVideoPromptStreaming() async { + // [START text_gen_multimodal_video_prompt_streaming] + // Provide a text prompt to include with the video + final prompt = TextPart("What's in the video?"); + + // Prepare video for input + final video = await File('video0.mp4').readAsBytes(); + + // Provide the video as `Data` with the appropriate mimetype + final videoPart = DataPart('video/mp4', video); + + // To stream generated text output, call generateContentStream with the text and image + final response = model.generateContentStream([ + Content.multi([prompt, videoPart]) + ]); + await for (final chunk in response) { + print(chunk.text); + } + // [END text_gen_multimodal_video_prompt_streaming] + } + + void textGenMultiModalVideoPrompt() async { + // [START text_gen_multimodal_video_prompt] + // Provide a text prompt to include with the video + final prompt = TextPart("What's in the video?"); + + // Prepare video for input + final video = await File('video0.mp4').readAsBytes(); + + // Provide the video as `Data` with the appropriate mimetype + final videoPart = DataPart('video/mp4', video); + + // To generate text output, call generateContent with the text and images + final response = await model.generateContent([ + Content.multi([prompt, videoPart]) + ]); + print(response.text); + // [END text_gen_multimodal_video_prompt] + } + + void countTokensText() async { + // [START count_tokens_text] + // Provide a prompt that contains text + final prompt = [Content.text('Write a story about a magic backpack.')]; + + // Count tokens and billable characters before calling generateContent + final tokenCount = await model.countTokens(prompt); + print('Token count: ${tokenCount.totalTokens}, billable characters: ${tokenCount.totalBillableCharacters}'); + + // To generate text output, call generateContent with the text input + final response = await model.generateContent(prompt); + print(response.text); + // [END count_tokens_text] + } + + void countTokensTextImage() async { + // [START count_tokens_text_image] + // Provide a text prompt to include with the image + final prompt = TextPart("What's in the picture?"); + // Prepare image for input + final image = await File('image0.jpg').readAsBytes(); + final imagePart = DataPart('image/jpeg', image); + + // Count tokens and billable characters before calling generateContent + final tokenCount = await model.countTokens([ + Content.multi([prompt, imagePart]) + ]); + print('Token count: ${tokenCount.totalTokens}, billable characters: ${tokenCount.totalBillableCharacters}'); + + // To generate text output, call generateContent with the text and image + final response = await model.generateContent([ + Content.multi([prompt,imagePart]) + ]); + print(response.text); + // [END count_tokens_text_image] + } + + void chatStream() async { + // [START chat_streaming] + final chat = model.startChat(); + // Provide a prompt that contains text + final prompt = Content.text('Write a story about a magic backpack.'); + + final response = chat.sendMessageStream(prompt); + await for (final chunk in response) { + print(chunk.text); + } + // [END chat_streaming] + } + + void chat() async { + // [START chat] + final chat = model.startChat(); + // Provide a prompt that contains text + final prompt = Content.text('Write a story about a magic backpack.'); + + final response = await chat.sendMessage(prompt); + print(response.text); + // [END chat] + } + + void setSystemInstructions() async { + // [START system_instructions_text] + await Firebase.initializeApp(); + // Initialize the Vertex AI service and the generative model + // Specify a model that supports system instructions, like a Gemini 1.5 model + final model = + FirebaseVertexAI.instance.generativeModel( + model: 'gemini-1.5-flash-preview-0514', + systemInstruction: Content.system('You are a cat. Your name is Neko.'), + ); + // [END system_instructions_text] + } +} \ No newline at end of file diff --git a/packages/firebase_snippets_app/pubspec.lock b/packages/firebase_snippets_app/pubspec.lock index 12b93ee..9c6bd5f 100644 --- a/packages/firebase_snippets_app/pubspec.lock +++ b/packages/firebase_snippets_app/pubspec.lock @@ -289,6 +289,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.7+7" + firebase_app_check: + dependency: transitive + description: + name: firebase_app_check + sha256: aac3b42cdf804b10cb1085c9902e5d1ef2f30e7cfc0c504e6f47519713d86829 + url: "https://pub.dev" + source: hosted + version: "0.2.2+7" + firebase_app_check_platform_interface: + dependency: transitive + description: + name: firebase_app_check_platform_interface + sha256: d0b9e4676ee7a272160b989a9a899d6469e336fe3624b3935cdae77a476f00d1 + url: "https://pub.dev" + source: hosted + version: "0.1.0+29" + firebase_app_check_web: + dependency: transitive + description: + name: firebase_app_check_web + sha256: f5359ba62111e4b28e5f1477b7c5c560dcfabe1ccc9e02e65ebdb428eda204ad + url: "https://pub.dev" + source: hosted + version: "0.1.2+7" firebase_auth: dependency: "direct main" description: @@ -505,6 +529,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.9.7" + firebase_vertexai: + dependency: "direct main" + description: + name: firebase_vertexai + sha256: "6eb4a201238198de74d54d465fd7b8f54e43c6bf714ff46440947a80d19adfec" + url: "https://pub.dev" + source: hosted + version: "0.1.1" fixnum: dependency: transitive description: @@ -586,14 +618,6 @@ packages: description: flutter source: sdk version: "0.0.0" - github_sign_in: - dependency: "direct main" - description: - name: github_sign_in - sha256: f180fddcf82faad3cea7daf8b63d36693a22d20dd85dc6d2fa0cfc96e4f58e5f - url: "https://pub.dev" - source: hosted - version: "0.0.5-dev.4" glob: dependency: transitive description: @@ -602,6 +626,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + google_generative_ai: + dependency: transitive + description: + name: google_generative_ai + sha256: "35072cb63e4c0b0bab11735b60d9d2335c2b463b60358fd6c456a7286e649a5e" + url: "https://pub.dev" + source: hosted + version: "0.4.1" google_identity_services_web: dependency: transitive description: @@ -662,10 +694,10 @@ packages: dependency: transitive description: name: http - sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" + sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" url: "https://pub.dev" source: hosted - version: "0.13.6" + version: "1.2.1" http_multi_server: dependency: transitive description: @@ -1048,10 +1080,10 @@ packages: dependency: "direct main" description: name: twitter_login - sha256: "6995d9a7822d9d0dcd2450357527f0154129938b757b2f504471c15b378b9007" + sha256: "31ff9db2e37eda878b876a4ce6d1525f51d34b6cd9de9aa185b07027a23ab95b" url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "4.4.2" typed_data: dependency: transitive description: @@ -1060,70 +1092,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.3.2" - url_launcher: - dependency: transitive - description: - name: url_launcher - sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" - url: "https://pub.dev" - source: hosted - version: "6.2.6" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf - url: "https://pub.dev" - source: hosted - version: "6.3.3" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89" - url: "https://pub.dev" - source: hosted - version: "6.3.0" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 - url: "https://pub.dev" - source: hosted - version: "3.1.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7 - url: "https://pub.dev" - source: hosted - version: "3.1.1" vector_math: dependency: transitive description: @@ -1180,38 +1148,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: "392c1d83b70fe2495de3ea2c84531268d5b8de2de3f01086a53334d8b6030a88" - url: "https://pub.dev" - source: hosted - version: "3.0.4" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: "8b3b2450e98876c70bfcead876d9390573b34b9418c19e28168b74f6cb252dbd" - url: "https://pub.dev" - source: hosted - version: "2.10.4" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: "812165e4e34ca677bdfbfa58c01e33b27fd03ab5fa75b70832d4b7d4ca1fa8cf" - url: "https://pub.dev" - source: hosted - version: "1.9.5" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: a5364369c758892aa487cbf59ea41d9edd10f9d9baf06a94e80f1bd1b4c7bbc0 - url: "https://pub.dev" - source: hosted - version: "2.9.5" win32: dependency: transitive description: diff --git a/packages/firebase_snippets_app/pubspec.yaml b/packages/firebase_snippets_app/pubspec.yaml index a5296d4..9ad77d8 100644 --- a/packages/firebase_snippets_app/pubspec.yaml +++ b/packages/firebase_snippets_app/pubspec.yaml @@ -40,12 +40,12 @@ dependencies: json_annotation: ^4.4.0 google_sign_in: ^6.1.0 flutter_facebook_auth: ^6.0.4 - github_sign_in: ^0.0.4 twitter_login: ^4.1.0 sign_in_with_apple: ^6.1.0 crypto: ^3.0.1 firebase_crashlytics: ^3.3.0 firebase_auth_platform_interface: ^7.3.0 + firebase_vertexai: ^0.1.1 dev_dependencies: flutter_test: From 0005a40f3265572f9c0ec47e153e8fe6e1be38a5 Mon Sep 17 00:00:00 2001 From: rosariopf Date: Wed, 29 May 2024 22:21:19 +0000 Subject: [PATCH 3/7] ci: upgrade to node 20 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bafcefa..0e517d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: - name: "Install Node" uses: actions/setup-node@v2 with: - node-version: '16' + node-version: '20' - uses: actions/setup-java@v2 name: "Install Java" From 35dc40789c8d825344751c7e1bbdd2576450716e Mon Sep 17 00:00:00 2001 From: rosariopf Date: Wed, 29 May 2024 22:38:26 +0000 Subject: [PATCH 4/7] undo ci changes --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e517d1..bafcefa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: - name: "Install Node" uses: actions/setup-node@v2 with: - node-version: '20' + node-version: '16' - uses: actions/setup-java@v2 name: "Install Java" From d12134fa4964d20160ba21eae02ff21c9afc6c52 Mon Sep 17 00:00:00 2001 From: rosariopf Date: Thu, 30 May 2024 00:14:31 +0000 Subject: [PATCH 5/7] fix pubspec.lock file --- packages/firebase_snippets_app/pubspec.lock | 76 +++++++++++++++++---- 1 file changed, 62 insertions(+), 14 deletions(-) diff --git a/packages/firebase_snippets_app/pubspec.lock b/packages/firebase_snippets_app/pubspec.lock index 265783e..2e0c166 100644 --- a/packages/firebase_snippets_app/pubspec.lock +++ b/packages/firebase_snippets_app/pubspec.lock @@ -240,7 +240,7 @@ packages: sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.6" facebook_auth_desktop: dependency: transitive description: @@ -297,6 +297,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.7+7" + firebase_app_check: + dependency: transitive + description: + name: firebase_app_check + sha256: aac3b42cdf804b10cb1085c9902e5d1ef2f30e7cfc0c504e6f47519713d86829 + url: "https://pub.dev" + source: hosted + version: "0.2.2+7" + firebase_app_check_platform_interface: + dependency: transitive + description: + name: firebase_app_check_platform_interface + sha256: d0b9e4676ee7a272160b989a9a899d6469e336fe3624b3935cdae77a476f00d1 + url: "https://pub.dev" + source: hosted + version: "0.1.0+29" + firebase_app_check_web: + dependency: transitive + description: + name: firebase_app_check_web + sha256: f5359ba62111e4b28e5f1477b7c5c560dcfabe1ccc9e02e65ebdb428eda204ad + url: "https://pub.dev" + source: hosted + version: "0.1.2+7" firebase_auth: dependency: "direct main" description: @@ -513,6 +537,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.9.7" + firebase_vertexai: + dependency: "direct main" + description: + name: firebase_vertexai + sha256: "6eb4a201238198de74d54d465fd7b8f54e43c6bf714ff46440947a80d19adfec" + url: "https://pub.dev" + source: hosted + version: "0.1.1" fixnum: dependency: transitive description: @@ -650,6 +682,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + google_generative_ai: + dependency: transitive + description: + name: google_generative_ai + sha256: "35072cb63e4c0b0bab11735b60d9d2335c2b463b60358fd6c456a7286e649a5e" + url: "https://pub.dev" + source: hosted + version: "0.4.1" google_identity_services_web: dependency: transitive description: @@ -747,10 +787,10 @@ packages: dependency: transitive description: name: js - sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 url: "https://pub.dev" source: hosted - version: "0.7.1" + version: "0.6.7" json_annotation: dependency: "direct main" description: @@ -766,7 +806,7 @@ packages: sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b url: "https://pub.dev" source: hosted - version: "6.7.0" + version: "6.8.0" leak_tracker: dependency: transitive description: @@ -899,10 +939,10 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.1" platform: dependency: transitive description: @@ -1140,15 +1180,23 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "24301d8c293ce6fe327ffe6f59d8fd8834735f0ec36e4fd383ec7ff8a64aa078" + url: "https://pub.dev" + source: hosted + version: "0.1.5" web_socket_channel: dependency: transitive description: - name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + name: web_socket_channel + sha256: a2d56211ee4d35d9b344d9d4ce60f362e4f5d1aafb988302906bd732bc731276 url: "https://pub.dev" source: hosted - version: "0.5.1" - web_socket: + version: "3.0.0" + webdriver: dependency: transitive description: name: webdriver @@ -1160,10 +1208,10 @@ packages: dependency: transitive description: name: win32 - sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 + sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 url: "https://pub.dev" source: hosted - version: "5.0.6" + version: "5.5.1" xdg_directories: dependency: transitive description: @@ -1181,5 +1229,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.0" + dart: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" From 4f2319e20c29ba40f92467c2d057f7ef968f31e0 Mon Sep 17 00:00:00 2001 From: rosariopf Date: Thu, 30 May 2024 00:30:08 +0000 Subject: [PATCH 6/7] run dart format --- .../lib/snippets/vertex_ai.dart | 603 +++++++++--------- 1 file changed, 302 insertions(+), 301 deletions(-) diff --git a/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart b/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart index 2454976..3ea4ae8 100644 --- a/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart +++ b/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart @@ -21,309 +21,310 @@ import 'package:firebase_vertexai/firebase_vertexai.dart'; import 'package:firebase_snippets_app/snippets/snippet_base.dart'; class VertexAISnippets extends DocSnippet { - late final GenerativeModel model; - - @override - void runAll() { - initializeModel(); - configureModel(); - safetySetting(); - multiSafetySetting(); - textGenTextOnlyPromptStream(); - textGenTextOnlyPrompt(); - textGenMultimodalOneImagePromptStream(); - textGenMultimodalOneImagePrompt(); - textGenMultiModalMultiImagePromptStreaming(); - textGenMultiModalMultiImagePrompt(); - textGenMultiModalVideoPromptStreaming(); - textGenMultiModalVideoPrompt(); - countTokensText(); - countTokensTextImage(); - chatStream(); - chat(); - setSystemInstructions(); + late final GenerativeModel model; + + @override + void runAll() { + initializeModel(); + configureModel(); + safetySetting(); + multiSafetySetting(); + textGenTextOnlyPromptStream(); + textGenTextOnlyPrompt(); + textGenMultimodalOneImagePromptStream(); + textGenMultimodalOneImagePrompt(); + textGenMultiModalMultiImagePromptStreaming(); + textGenMultiModalMultiImagePrompt(); + textGenMultiModalVideoPromptStreaming(); + textGenMultiModalVideoPrompt(); + countTokensText(); + countTokensTextImage(); + chatStream(); + chat(); + setSystemInstructions(); + } + + void initializeModel() async { + // [START initialize_model] + // Initialize FirebaseApp + await Firebase.initializeApp(); + // Initialize the {{vertexai}} service and the generative model + // Specify a model that supports your use case + // Gemini 1.5 models are versatile and can be used with all API capabilities + final model = FirebaseVertexAI.instance + .generativeModel(model: '{{generic_model_name_initialization}}'); + // [END initialize_model] + } + + void configureModel() { + // [START configure_model] + // ... + + final generationConfig = GenerationConfig( + maxOutputTokens: 200, + stopSequences: ["red"], + temperature: 0.9, + topP: 0.1, + topK: 16, + ); + final model = FirebaseVertexAI.instance.generativeModel( + model: '{{generic_model_name_initialization}}', + generationConfig: generationConfig, + ); + + // ... + // [END configure_model] + } + + void safetySetting() { + // [START safety_setting] + // ... + + final safetySettings = [ + SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high) + ]; + final model = FirebaseVertexAI.instance.generativeModel( + model: '{{generic_model_name_initialization}}', + safetySettings: safetySettings, + ); + + // ... + // [END safety_setting] + } + + void multiSafetySetting() { + // [START multi_safety_setting] + // ... + + final safetySettings = [ + SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high), + SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.high), + ]; + final model = FirebaseVertexAI.instance.generativeModel( + model: '{{generic_model_name_initialization}}', + safetySettings: safetySettings, + ); + + // ... + // [END multi_safety_setting] + } + + void textGenTextOnlyPromptStream() async { + // [START text_gen_text_only_prompt_streaming] + // Provide a prompt that contains text + final prompt = [Content.text('Write a story about a magic backpack.')]; + + // To stream generated text output, call generateContentStream with the text input + final response = model.generateContentStream(prompt); + await for (final chunk in response) { + print(chunk.text); } - - void initializeModel() async { - // [START initialize_model] - // Initialize FirebaseApp - await Firebase.initializeApp(); - // Initialize the {{vertexai}} service and the generative model - // Specify a model that supports your use case - // Gemini 1.5 models are versatile and can be used with all API capabilities - final model = - FirebaseVertexAI.instance.generativeModel(model: '{{generic_model_name_initialization}}'); - // [END initialize_model] - } - - void configureModel() { - // [START configure_model] - // ... - - final generationConfig = GenerationConfig( - maxOutputTokens: 200, - stopSequences: ["red"], - temperature: 0.9, - topP: 0.1, - topK: 16, - ); - final model = FirebaseVertexAI.instance.generativeModel( - model: '{{generic_model_name_initialization}}', - generationConfig: generationConfig, - ); - - // ... - // [END configure_model] - } - - void safetySetting() { - // [START safety_setting] - // ... - - final safetySettings = [ - SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high) - ]; - final model = FirebaseVertexAI.instance.generativeModel( - model: '{{generic_model_name_initialization}}', - safetySettings: safetySettings, - ); - - // ... - // [END safety_setting] - } - - void multiSafetySetting() { - // [START multi_safety_setting] - // ... - - final safetySettings = [ - SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high), - SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.high), - ]; - final model = FirebaseVertexAI.instance.generativeModel( - model: '{{generic_model_name_initialization}}', - safetySettings: safetySettings, - ); - - // ... - // [END multi_safety_setting] + // [END text_gen_text_only_prompt_streaming] + } + + void textGenTextOnlyPrompt() async { + // [START text_gen_text_only_prompt] + // Provide a prompt that contains text + final prompt = [Content.text('Write a story about a magic backpack.')]; + + // To generate text output, call generateContent with the text input + final response = await model.generateContent(prompt); + print(response.text); + // [END text_gen_text_only_prompt] + } + + void textGenMultimodalOneImagePromptStream() async { + // [START text_gen_multimodal_one_image_prompt_streaming] + // Provide a text prompt to include with the image + final prompt = TextPart("What's in the picture?"); + // Prepare images for input + final image = await File('image0.jpg').readAsBytes(); + final imagePart = DataPart('image/jpeg', image); + + // To stream generated text output, call generateContentStream with the text and image + final response = await model.generateContentStream([ + Content.multi([prompt, imagePart]) + ]); + await for (final chunk in response) { + print(chunk.text); } - - void textGenTextOnlyPromptStream() async { - // [START text_gen_text_only_prompt_streaming] - // Provide a prompt that contains text - final prompt = [Content.text('Write a story about a magic backpack.')]; - - // To stream generated text output, call generateContentStream with the text input - final response = model.generateContentStream(prompt); - await for (final chunk in response) { - print(chunk.text); - } - // [END text_gen_text_only_prompt_streaming] + // [END text_gen_multimodal_one_image_prompt_streaming] + } + + void textGenMultimodalOneImagePrompt() async { + // [START text_gen_multimodal_one_image_prompt] + // Provide a text prompt to include with the image + final prompt = TextPart("What's in the picture?"); + // Prepare images for input + final image = await File('image0.jpg').readAsBytes(); + final imagePart = DataPart('image/jpeg', image); + + // To generate text output, call generateContent with the text and image + final response = await model.generateContent([ + Content.multi([prompt, imagePart]) + ]); + print(response.text); + // [END text_gen_multimodal_one_image_prompt] + } + + void textGenMultiModalMultiImagePromptStreaming() async { + // [START text_gen_multimodal_multi_image_prompt_streaming] + final (firstImage, secondImage) = await ( + File('image0.jpg').readAsBytes(), + File('image1.jpg').readAsBytes() + ).wait; + // Provide a text prompt to include with the images + final prompt = TextPart("What's different between these pictures?"); + // Prepare images for input + final imageParts = [ + DataPart('image/jpeg', firstImage), + DataPart('image/jpeg', secondImage), + ]; + + // To stream generated text output, call generateContentStream with the text and images + final response = model.generateContentStream([ + Content.multi([prompt, ...imageParts]) + ]); + await for (final chunk in response) { + print(chunk.text); } - - void textGenTextOnlyPrompt() async { - // [START text_gen_text_only_prompt] - // Provide a prompt that contains text - final prompt = [Content.text('Write a story about a magic backpack.')]; - - // To generate text output, call generateContent with the text input - final response = await model.generateContent(prompt); - print(response.text); - // [END text_gen_text_only_prompt] - } - - void textGenMultimodalOneImagePromptStream() async { - // [START text_gen_multimodal_one_image_prompt_streaming] - // Provide a text prompt to include with the image - final prompt = TextPart("What's in the picture?"); - // Prepare images for input - final image = await File('image0.jpg').readAsBytes(); - final imagePart = DataPart('image/jpeg', image); - - // To stream generated text output, call generateContentStream with the text and image - final response = await model.generateContentStream([ - Content.multi([prompt,imagePart]) - ]); - await for (final chunk in response) { - print(chunk.text); - } - // [END text_gen_multimodal_one_image_prompt_streaming] - } - - void textGenMultimodalOneImagePrompt() async { - // [START text_gen_multimodal_one_image_prompt] - // Provide a text prompt to include with the image - final prompt = TextPart("What's in the picture?"); - // Prepare images for input - final image = await File('image0.jpg').readAsBytes(); - final imagePart = DataPart('image/jpeg', image); - - // To generate text output, call generateContent with the text and image - final response = await model.generateContent([ - Content.multi([prompt,imagePart]) - ]); - print(response.text); - // [END text_gen_multimodal_one_image_prompt] - } - - void textGenMultiModalMultiImagePromptStreaming() async { - // [START text_gen_multimodal_multi_image_prompt_streaming] - final (firstImage, secondImage) = await ( - File('image0.jpg').readAsBytes(), - File('image1.jpg').readAsBytes() - ).wait; - // Provide a text prompt to include with the images - final prompt = TextPart("What's different between these pictures?"); - // Prepare images for input - final imageParts = [ - DataPart('image/jpeg', firstImage), - DataPart('image/jpeg', secondImage), - ]; - - // To stream generated text output, call generateContentStream with the text and images - final response = model.generateContentStream([ - Content.multi([prompt, ...imageParts]) - ]); - await for (final chunk in response) { - print(chunk.text); - } - // [END text_gen_multimodal_multi_image_prompt_streaming] + // [END text_gen_multimodal_multi_image_prompt_streaming] + } + + void textGenMultiModalMultiImagePrompt() async { + // [START text_gen_multimodal_multi_image_prompt] + final (firstImage, secondImage) = await ( + File('image0.jpg').readAsBytes(), + File('image1.jpg').readAsBytes() + ).wait; + // Provide a text prompt to include with the images + final prompt = TextPart("What's different between these pictures?"); + // Prepare images for input + final imageParts = [ + DataPart('image/jpeg', firstImage), + DataPart('image/jpeg', secondImage), + ]; + + // To generate text output, call generateContent with the text and images + final response = await model.generateContent([ + Content.multi([prompt, ...imageParts]) + ]); + print(response.text); + // [END text_gen_multimodal_multi_image_prompt] + } + + void textGenMultiModalVideoPromptStreaming() async { + // [START text_gen_multimodal_video_prompt_streaming] + // Provide a text prompt to include with the video + final prompt = TextPart("What's in the video?"); + + // Prepare video for input + final video = await File('video0.mp4').readAsBytes(); + + // Provide the video as `Data` with the appropriate mimetype + final videoPart = DataPart('video/mp4', video); + + // To stream generated text output, call generateContentStream with the text and image + final response = model.generateContentStream([ + Content.multi([prompt, videoPart]) + ]); + await for (final chunk in response) { + print(chunk.text); } - - void textGenMultiModalMultiImagePrompt() async { - // [START text_gen_multimodal_multi_image_prompt] - final (firstImage, secondImage) = await ( - File('image0.jpg').readAsBytes(), - File('image1.jpg').readAsBytes() - ).wait; - // Provide a text prompt to include with the images - final prompt = TextPart("What's different between these pictures?"); - // Prepare images for input - final imageParts = [ - DataPart('image/jpeg', firstImage), - DataPart('image/jpeg', secondImage), - ]; - - // To generate text output, call generateContent with the text and images - final response = await model.generateContent([ - Content.multi([prompt, ...imageParts]) - ]); - print(response.text); - // [END text_gen_multimodal_multi_image_prompt] - } - - void textGenMultiModalVideoPromptStreaming() async { - // [START text_gen_multimodal_video_prompt_streaming] - // Provide a text prompt to include with the video - final prompt = TextPart("What's in the video?"); - - // Prepare video for input - final video = await File('video0.mp4').readAsBytes(); - - // Provide the video as `Data` with the appropriate mimetype - final videoPart = DataPart('video/mp4', video); - - // To stream generated text output, call generateContentStream with the text and image - final response = model.generateContentStream([ - Content.multi([prompt, videoPart]) - ]); - await for (final chunk in response) { - print(chunk.text); - } - // [END text_gen_multimodal_video_prompt_streaming] - } - - void textGenMultiModalVideoPrompt() async { - // [START text_gen_multimodal_video_prompt] - // Provide a text prompt to include with the video - final prompt = TextPart("What's in the video?"); - - // Prepare video for input - final video = await File('video0.mp4').readAsBytes(); - - // Provide the video as `Data` with the appropriate mimetype - final videoPart = DataPart('video/mp4', video); - - // To generate text output, call generateContent with the text and images - final response = await model.generateContent([ - Content.multi([prompt, videoPart]) - ]); - print(response.text); - // [END text_gen_multimodal_video_prompt] - } - - void countTokensText() async { - // [START count_tokens_text] - // Provide a prompt that contains text - final prompt = [Content.text('Write a story about a magic backpack.')]; - - // Count tokens and billable characters before calling generateContent - final tokenCount = await model.countTokens(prompt); - print('Token count: ${tokenCount.totalTokens}, billable characters: ${tokenCount.totalBillableCharacters}'); - - // To generate text output, call generateContent with the text input - final response = await model.generateContent(prompt); - print(response.text); - // [END count_tokens_text] - } - - void countTokensTextImage() async { - // [START count_tokens_text_image] - // Provide a text prompt to include with the image - final prompt = TextPart("What's in the picture?"); - // Prepare image for input - final image = await File('image0.jpg').readAsBytes(); - final imagePart = DataPart('image/jpeg', image); - - // Count tokens and billable characters before calling generateContent - final tokenCount = await model.countTokens([ - Content.multi([prompt, imagePart]) - ]); - print('Token count: ${tokenCount.totalTokens}, billable characters: ${tokenCount.totalBillableCharacters}'); - - // To generate text output, call generateContent with the text and image - final response = await model.generateContent([ - Content.multi([prompt,imagePart]) - ]); - print(response.text); - // [END count_tokens_text_image] - } - - void chatStream() async { - // [START chat_streaming] - final chat = model.startChat(); - // Provide a prompt that contains text - final prompt = Content.text('Write a story about a magic backpack.'); - - final response = chat.sendMessageStream(prompt); - await for (final chunk in response) { - print(chunk.text); - } - // [END chat_streaming] - } - - void chat() async { - // [START chat] - final chat = model.startChat(); - // Provide a prompt that contains text - final prompt = Content.text('Write a story about a magic backpack.'); - - final response = await chat.sendMessage(prompt); - print(response.text); - // [END chat] - } - - void setSystemInstructions() async { - // [START system_instructions_text] - await Firebase.initializeApp(); - // Initialize the Vertex AI service and the generative model - // Specify a model that supports system instructions, like a Gemini 1.5 model - final model = - FirebaseVertexAI.instance.generativeModel( - model: 'gemini-1.5-flash-preview-0514', - systemInstruction: Content.system('You are a cat. Your name is Neko.'), - ); - // [END system_instructions_text] + // [END text_gen_multimodal_video_prompt_streaming] + } + + void textGenMultiModalVideoPrompt() async { + // [START text_gen_multimodal_video_prompt] + // Provide a text prompt to include with the video + final prompt = TextPart("What's in the video?"); + + // Prepare video for input + final video = await File('video0.mp4').readAsBytes(); + + // Provide the video as `Data` with the appropriate mimetype + final videoPart = DataPart('video/mp4', video); + + // To generate text output, call generateContent with the text and images + final response = await model.generateContent([ + Content.multi([prompt, videoPart]) + ]); + print(response.text); + // [END text_gen_multimodal_video_prompt] + } + + void countTokensText() async { + // [START count_tokens_text] + // Provide a prompt that contains text + final prompt = [Content.text('Write a story about a magic backpack.')]; + + // Count tokens and billable characters before calling generateContent + final tokenCount = await model.countTokens(prompt); + print('Token count: ${tokenCount.totalTokens}'); + print('Billable characters: ${tokenCount.totalBillableCharacters}'); + + // To generate text output, call generateContent with the text input + final response = await model.generateContent(prompt); + print(response.text); + // [END count_tokens_text] + } + + void countTokensTextImage() async { + // [START count_tokens_text_image] + // Provide a text prompt to include with the image + final prompt = TextPart("What's in the picture?"); + // Prepare image for input + final image = await File('image0.jpg').readAsBytes(); + final imagePart = DataPart('image/jpeg', image); + + // Count tokens and billable characters before calling generateContent + final tokenCount = await model.countTokens([ + Content.multi([prompt, imagePart]) + ]); + print('Token count: ${tokenCount.totalTokens}'); + print('Billable characters: ${tokenCount.totalBillableCharacters}'); + + // To generate text output, call generateContent with the text and image + final response = await model.generateContent([ + Content.multi([prompt, imagePart]) + ]); + print(response.text); + // [END count_tokens_text_image] + } + + void chatStream() async { + // [START chat_streaming] + final chat = model.startChat(); + // Provide a prompt that contains text + final prompt = Content.text('Write a story about a magic backpack.'); + + final response = chat.sendMessageStream(prompt); + await for (final chunk in response) { + print(chunk.text); } -} \ No newline at end of file + // [END chat_streaming] + } + + void chat() async { + // [START chat] + final chat = model.startChat(); + // Provide a prompt that contains text + final prompt = Content.text('Write a story about a magic backpack.'); + + final response = await chat.sendMessage(prompt); + print(response.text); + // [END chat] + } + + void setSystemInstructions() async { + // [START system_instructions_text] + await Firebase.initializeApp(); + // Initialize the Vertex AI service and the generative model + // Specify a model that supports system instructions, like a Gemini 1.5 model + final model = FirebaseVertexAI.instance.generativeModel( + model: 'gemini-1.5-flash-preview-0514', + systemInstruction: Content.system('You are a cat. Your name is Neko.'), + ); + // [END system_instructions_text] + } +} From c1336ec9d462410e471b1ac765a8d0d6c7a6b512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ros=C3=A1rio=20P=2E=20Fernandes?= Date: Wed, 5 Jun 2024 16:23:26 +0100 Subject: [PATCH 7/7] use Gemini 1.5 Flash --- .../firebase_snippets_app/lib/snippets/vertex_ai.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart b/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart index 3ea4ae8..fe98287 100644 --- a/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart +++ b/packages/firebase_snippets_app/lib/snippets/vertex_ai.dart @@ -52,7 +52,7 @@ class VertexAISnippets extends DocSnippet { // Specify a model that supports your use case // Gemini 1.5 models are versatile and can be used with all API capabilities final model = FirebaseVertexAI.instance - .generativeModel(model: '{{generic_model_name_initialization}}'); + .generativeModel(model: 'gemini-1.5-flash'); // [END initialize_model] } @@ -68,7 +68,7 @@ class VertexAISnippets extends DocSnippet { topK: 16, ); final model = FirebaseVertexAI.instance.generativeModel( - model: '{{generic_model_name_initialization}}', + model: 'gemini-1.5-flash', generationConfig: generationConfig, ); @@ -84,7 +84,7 @@ class VertexAISnippets extends DocSnippet { SafetySetting(HarmCategory.harassment, HarmBlockThreshold.high) ]; final model = FirebaseVertexAI.instance.generativeModel( - model: '{{generic_model_name_initialization}}', + model: 'gemini-1.5-flash', safetySettings: safetySettings, ); @@ -101,7 +101,7 @@ class VertexAISnippets extends DocSnippet { SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.high), ]; final model = FirebaseVertexAI.instance.generativeModel( - model: '{{generic_model_name_initialization}}', + model: 'gemini-1.5-flash', safetySettings: safetySettings, );