diff --git a/.gitignore b/.gitignore
index 526da15..171d7ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,4 @@
-# See https://www.dartlang.org/guides/libraries/private-files
-
-# Files and directories created by pub
.dart_tool/
.packages
build/
-pubspec.lock
\ No newline at end of file
+coverage/
\ No newline at end of file
diff --git a/README.md b/README.md
index 158db44..b366f00 100644
--- a/README.md
+++ b/README.md
@@ -1,160 +1,42 @@
-# data_mongodb
+
+

+
Data MongoDB
+
A production-ready MongoDB implementation of the `DataClient` interface for the Flutter News App Toolkit.
+
-
-[](https://pub.dev/packages/very_good_analysis)
-[](https://polyformproject.org/licenses/free-trial/1.0.0)
+
+
+
+
+
-A production-ready MongoDB implementation of the `DataClient` interface, designed to connect Dart and Flutter applications to a MongoDB backend. This package is part of the [**Flutter News App - Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code).
+This `data_mongodb` package provides a robust, concrete implementation of the `DataClient` interface within the [**Flutter News App Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code). It acts as the bridge between your application's repositories and a MongoDB database, translating abstract data requests into native, efficient MongoDB queries. This package is designed for backend services (like a Dart Frog API) or applications that connect directly to MongoDB, ensuring consistent and scalable data persistence.
-## Description
+## ⭐ Feature Showcase: Powerful MongoDB Integration
-`DataMongodb` provides a robust, concrete implementation of the `DataClient` interface using the `mongo_dart` package. It acts as the bridge between your application's repositories and a MongoDB database.
+This package offers a comprehensive set of features for interacting with MongoDB.
-It translates the abstract, high-level data requests from the `DataClient` interface—including rich filters, multi-field sorting, and cursor-based pagination—into native, efficient MongoDB queries.
+
+🧱 Core Functionality
-A key feature of this implementation is its **ID management strategy**. It ensures that the application layer remains the source of truth for a document's ID by mapping the model's `id` string to the database's `_id` field. This is crucial for correctly handling both global documents (like headlines) and user-owned documents (like settings), where the document's `_id` must match the user's ID. For a deeper explanation, see the documentation within the `DataMongodb` class.
+### 🚀 `DataClient` Implementation
+- **`DataMongodb` Class:** A production-ready MongoDB implementation of the `DataClient` interface, enabling type-safe interactions with various data models.
+- **`MongoDbConnectionManager`:** Includes a robust connection manager for handling MongoDB connection lifecycle, ensuring reliable database access.
-## Getting Started
+### 🌐 Advanced Querying & Data Management
+- **Native MongoDB Queries:** Translates `readAll` parameters (rich `filter`, multi-field `sort`, and cursor-based `pagination`) into efficient native MongoDB queries.
+- **ID Management Strategy:** Faithfully maps the application-level `id` string to the database `_id` field, crucial for correctly handling both global documents (like headlines) and user-owned documents (like settings).
+- **Support for Multiple Data Models:** Correctly handles various document types, including global entities and user-owned documents where the `_id` serves as a foreign key to the user.
+- **Efficient Counting & Aggregation:** Implements `count` for efficient document counting and `aggregate` to execute powerful, server-side aggregation pipelines.
+- **Partial Text Search:** Translates a `q` filter parameter into a case-insensitive (`$regex`) search across designated searchable fields.
-This package is intended to be used as a dependency in backend services (like a Dart Frog API) or applications that connect directly to MongoDB.
+### 🛡️ Standardized Error Handling
+- **`HttpException` Propagation:** Throws standard exceptions from `package:core` for consistent error handling, ensuring predictable error management across the application layers.
-To use this package, add `data_mongodb` and its peer dependencies to your `pubspec.yaml`.
-
-```yaml
-dependencies:
- # data_client defines the interface this package implements.
- data_client:
- git:
- url: https://github.com/flutter-news-app-full-source-code/data-client.git
- # ref:
- # core is needed for models and exceptions.
- core:
- git:
- url: https://github.com/flutter-news-app-full-source-code/core.git
- # ref:
- data_mongodb:
- git:
- url: https://github.com/flutter-news-app-full-source-code/data-mongodb.git
- # ref:
-```
-
-Then run `dart pub get` or `flutter pub get`.
-
-## Features
-
-- Implements the `DataClient` interface from `package:data_client`.
-- Includes `MongoDbConnectionManager` for robust connection lifecycle management.
-- Translates `readAll` parameters (`filter`, `sort`, `pagination`) into native MongoDB queries.
-- **Handles ID Management**: Faithfully maps the application-level `id` string to the database `_id`, preserving data integrity for all document types.
-- **Supports Multiple Data Models**: Correctly handles both global documents (e.g., `Headline`) and user-owned documents (e.g., `UserAppSettings`) where the document `_id` serves as the foreign key to the user.
-- Throws standard exceptions from `package:core` for consistent error handling.
-- Implements `count` for efficient document counting.
-- Implements `aggregate` to execute powerful, server-side aggregation pipelines.
-- **Partial Text Search**: Translates a `q` filter parameter into a case-insensitive (`$regex`) across designated searchable fields.
-
-## Usage
-
-Here's a basic example of how to use `DataMongodb` with a simple `Product` model.
-
-```dart
-import 'package:data_client/data_client.dart';
-import 'package:data_mongodb/data_mongodb.dart';
-import 'package:core/core.dart';
-
-// 1. Define your model.
-class Product {
- Product({required this.id, required this.name, required this.price});
- final String id;
- final String name;
- final double price;
-
- // Your fromJson/toJson factories.
- factory Product.fromJson(Map json) {
- return Product(
- id: json['id'] as String,
- name: json['name'] as String,
- price: json['price'] as double,
- );
- }
- Map toJson() => {'id': id, 'name': name, 'price': price};
-}
-
-void main() async {
- // 2. Set up the connection manager.
- final connectionManager = MongoDbConnectionManager();
- const connectionString = 'mongodb://localhost:27017/my_database';
-
- try {
- // 3. Initialize the database connection.
- await connectionManager.init(connectionString);
-
- // 4. Instantiate the client for your model.
- final client = DataMongodb(
- connectionManager: connectionManager,
- modelName: 'products', // The name of the MongoDB collection.
- fromJson: Product.fromJson,
- toJson: (product) => product.toJson(),
- searchableFields: ['name'], // Designate 'name' for partial-text search.
- );
-
- // 5. Use the client to perform operations.
- // Example: Forgiving search for products with "pro" in their name.
- final searchResponse = await client.readAll(
- filter: {'q': 'pro'},
- pagination: const PaginationOptions(limit: 5),
- );
- print('\nFound ${searchResponse.data.items.length} products matching "pro":');
- for (final product in searchResponse.data.items) {
- print('- ${product.name}');
- }
- final filter = {
- 'price': {r'$gte': 10.0} // Find products with price >= 10.0
- };
- final sort = [const SortOption('price', SortOrder.desc)];
- final pagination = const PaginationOptions(limit: 10);
-
- final response = await client.readAll(
- filter: filter,
- sort: sort,
- pagination: pagination,
- );
-
- print('Found ${response.data.items.length} products.');
- for (final product in response.data.items) {
- print('- ${product.name} (\$${product.price})');
- }
-
- // Example: Counting items
- final countResponse = await client.count(
- filter: {'price': {r'$lt': 15.0}},
- );
- print('Found ${countResponse.data} products cheaper than $15.');
-
- // Example: Running an aggregation pipeline
- final aggregateResponse = await client.aggregate(
- pipeline: [
- {
- r'$group': {'_id': null, 'averagePrice': {r'$avg': r'$price'}},
- },
- ],
- );
- if (aggregateResponse.data.isNotEmpty) {
- print(
- 'Average product price: \$${aggregateResponse.data.first['averagePrice']}',
- );
- }
- } on HttpException catch (e) {
- print('An error occurred: ${e.message}');
- } finally {
- // 6. Always close the connection.
- await connectionManager.close();
- }
-}
-```
+> **💡 Your Advantage:** You get a meticulously designed, production-quality MongoDB client that simplifies database interactions, ensures data integrity, provides robust error handling, and supports advanced querying capabilities. This package accelerates development by providing a solid foundation for data persistence.
+
## 🔑 Licensing
-This package is source-available and licensed under the [PolyForm Free Trial 1.0.0](LICENSE). Please review the terms before use.
-
-For commercial licensing options that grant the right to build and distribute unlimited applications, please visit the main [**Flutter News App - Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code) organization.
+This `data_mongodb` package is an integral part of the [**Flutter News App Full Source Code Toolkit**](https://github.com/flutter-news-app-full-source-code). For comprehensive details regarding licensing, including trial and commercial options for the entire toolkit, please refer to the main toolkit organization page.
diff --git a/coverage/lcov.info b/coverage/lcov.info
deleted file mode 100644
index 3371505..0000000
--- a/coverage/lcov.info
+++ /dev/null
@@ -1,200 +0,0 @@
-SF:lib/src/mongo_db_connection_manager.dart
-DA:15,0
-DA:16,0
-DA:21,0
-DA:29,0
-DA:30,0
-DA:31,0
-DA:35,0
-DA:36,0
-DA:37,0
-LF:9
-LH:0
-end_of_record
-SF:lib/src/data_mongodb.dart
-DA:16,1
-DA:26,2
-DA:36,5
-DA:42,1
-DA:46,1
-DA:47,3
-DA:50,2
-DA:57,1
-DA:60,3
-DA:67,1
-DA:71,1
-DA:74,1
-DA:80,1
-DA:83,3
-DA:95,1
-DA:96,1
-DA:98,1
-DA:99,2
-DA:100,5
-DA:105,1
-DA:106,1
-DA:109,3
-DA:118,1
-DA:123,1
-DA:124,3
-DA:127,1
-DA:129,3
-DA:131,3
-DA:135,1
-DA:136,2
-DA:138,3
-DA:139,1
-DA:140,1
-DA:141,1
-DA:143,1
-DA:144,2
-DA:145,1
-DA:146,2
-DA:149,2
-DA:150,1
-DA:152,1
-DA:156,1
-DA:157,3
-DA:160,1
-DA:165,4
-DA:167,1
-DA:169,1
-DA:172,2
-DA:174,2
-DA:175,4
-DA:176,1
-DA:177,2
-DA:181,2
-DA:182,1
-DA:184,1
-DA:185,2
-DA:186,1
-DA:189,1
-DA:190,2
-DA:191,2
-DA:195,1
-DA:197,2
-DA:198,2
-DA:201,1
-DA:202,2
-DA:205,1
-DA:206,1
-DA:209,1
-DA:212,2
-DA:214,2
-DA:215,2
-DA:216,2
-DA:218,1
-DA:219,2
-DA:223,1
-DA:225,1
-DA:226,2
-DA:227,2
-DA:231,1
-DA:236,4
-DA:239,1
-DA:240,2
-DA:243,1
-DA:244,1
-DA:248,1
-DA:251,2
-DA:254,3
-DA:255,1
-DA:258,1
-DA:259,2
-DA:263,1
-DA:264,1
-DA:266,1
-DA:267,2
-DA:268,1
-DA:271,1
-DA:273,1
-DA:274,2
-DA:275,2
-DA:279,1
-DA:286,3
-DA:287,1
-DA:291,1
-DA:292,1
-DA:293,1
-DA:295,1
-DA:296,2
-DA:300,1
-DA:301,1
-DA:304,1
-DA:306,1
-DA:308,2
-DA:310,2
-DA:312,3
-DA:315,1
-DA:316,3
-DA:319,1
-DA:325,1
-DA:327,1
-DA:328,2
-DA:329,1
-DA:332,1
-DA:334,1
-DA:335,2
-DA:336,2
-DA:340,1
-DA:346,2
-DA:347,2
-DA:350,1
-DA:351,2
-DA:354,1
-DA:355,1
-DA:358,1
-DA:361,1
-DA:363,1
-DA:366,2
-DA:368,2
-DA:369,3
-DA:370,1
-DA:373,1
-DA:374,2
-DA:379,1
-DA:381,1
-DA:382,2
-DA:383,1
-DA:386,1
-DA:388,1
-DA:389,2
-DA:390,2
-DA:394,1
-DA:399,2
-DA:400,2
-DA:403,1
-DA:404,2
-DA:406,1
-DA:408,1
-DA:409,2
-DA:410,1
-DA:413,1
-DA:414,2
-DA:415,2
-DA:419,1
-DA:424,2
-DA:425,2
-DA:429,1
-DA:435,2
-DA:436,1
-DA:440,1
-DA:441,1
-DA:442,1
-DA:444,1
-DA:446,1
-DA:447,2
-DA:448,1
-DA:455,1
-DA:456,2
-DA:458,2
-DA:459,1
-DA:461,2
-DA:464,2
-DA:465,1
-DA:466,2
-DA:467,2
-LF:183
-LH:183
-end_of_record
diff --git a/lib/src/data_mongodb.dart b/lib/src/data_mongodb.dart
index 1019c30..03581f1 100644
--- a/lib/src/data_mongodb.dart
+++ b/lib/src/data_mongodb.dart
@@ -90,7 +90,7 @@ class DataMongodb implements DataClient {
/// conflicts with a reserved keyword in MongoDB's `text` search options.
/// To prevent this, it transparently renames any 'language' field to
/// 'modelLanguage' before the document is written.
- ///
+ ///
/// https://www.mongodb.com/community/forums/t/just-to-point-out-do-not-name-a-field-language-if-you-are-planning-to-create-an-index/263793
Map _transformMapForDb(Map map) {
if (map.containsKey('language')) {
diff --git a/pubspec.lock b/pubspec.lock
new file mode 100644
index 0000000..d1e039c
--- /dev/null
+++ b/pubspec.lock
@@ -0,0 +1,623 @@
+# Generated by pub
+# See https://dart.dev/tools/pub/glossary#lockfile
+packages:
+ _fe_analyzer_shared:
+ dependency: transitive
+ description:
+ name: _fe_analyzer_shared
+ sha256: dd3d2ad434b9510001d089e8de7556d50c834481b9abc2891a0184a8493a19dc
+ url: "https://pub.dev"
+ source: hosted
+ version: "89.0.0"
+ analyzer:
+ dependency: transitive
+ description:
+ name: analyzer
+ sha256: c22b6e7726d1f9e5db58c7251606076a71ca0dbcf76116675edfadbec0c9e875
+ url: "https://pub.dev"
+ source: hosted
+ version: "8.2.0"
+ archive:
+ dependency: transitive
+ description:
+ name: archive
+ sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.7"
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.7.0"
+ async:
+ dependency: transitive
+ description:
+ name: async
+ sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.13.0"
+ basic_utils:
+ dependency: transitive
+ description:
+ name: basic_utils
+ sha256: "548047bef0b3b697be19fa62f46de54d99c9019a69fb7db92c69e19d87f633c7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.8.2"
+ boolean_selector:
+ dependency: transitive
+ description:
+ name: boolean_selector
+ sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ bson:
+ dependency: transitive
+ description:
+ name: bson
+ sha256: f8c80be7a62a88f4add7c48cc83567c36a77532de107224df8328ef71f125045
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.0.7"
+ buffer:
+ dependency: transitive
+ description:
+ name: buffer
+ sha256: "389da2ec2c16283c8787e0adaede82b1842102f8c8aae2f49003a766c5c6b3d1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.3"
+ cli_config:
+ dependency: transitive
+ description:
+ name: cli_config
+ sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.0"
+ clock:
+ dependency: transitive
+ description:
+ name: clock
+ sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.2"
+ collection:
+ dependency: transitive
+ description:
+ name: collection
+ sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.19.1"
+ convert:
+ dependency: transitive
+ description:
+ name: convert
+ sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.2"
+ core:
+ dependency: "direct main"
+ description:
+ path: "."
+ ref: "828b984517edec069266579c624c7af9fbe0e2ac"
+ resolved-ref: "828b984517edec069266579c624c7af9fbe0e2ac"
+ url: "https://github.com/flutter-news-app-full-source-code/core.git"
+ source: git
+ version: "0.0.0"
+ coverage:
+ dependency: transitive
+ description:
+ name: coverage
+ sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.15.0"
+ crypto:
+ dependency: transitive
+ description:
+ name: crypto
+ sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.6"
+ data_client:
+ dependency: "direct main"
+ description:
+ path: "."
+ ref: "960a00882045ee252274d9d57bfca606c1fe5d64"
+ resolved-ref: "960a00882045ee252274d9d57bfca606c1fe5d64"
+ url: "https://github.com/flutter-news-app-full-source-code/data-client.git"
+ source: git
+ version: "0.0.0"
+ decimal:
+ dependency: transitive
+ description:
+ name: decimal
+ sha256: fc706a5618b81e5b367b01dd62621def37abc096f2b46a9bd9068b64c1fa36d0
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.4"
+ equatable:
+ dependency: "direct dev"
+ description:
+ name: equatable
+ sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.7"
+ ffi:
+ dependency: transitive
+ description:
+ name: ffi
+ sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ file:
+ dependency: transitive
+ description:
+ name: file
+ sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.1"
+ fixnum:
+ dependency: transitive
+ description:
+ name: fixnum
+ sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ frontend_server_client:
+ dependency: transitive
+ description:
+ name: frontend_server_client
+ sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ glob:
+ dependency: transitive
+ description:
+ name: glob
+ sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.3"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.0"
+ http_multi_server:
+ dependency: transitive
+ description:
+ name: http_multi_server
+ sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.2.2"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.2"
+ intl:
+ dependency: transitive
+ description:
+ name: intl
+ sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.20.2"
+ io:
+ dependency: transitive
+ description:
+ name: io
+ sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.5"
+ js:
+ dependency: transitive
+ description:
+ name: js
+ sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.2"
+ json_annotation:
+ dependency: transitive
+ description:
+ name: json_annotation
+ sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.9.0"
+ logging:
+ dependency: "direct main"
+ description:
+ name: logging
+ sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.3.0"
+ matcher:
+ dependency: transitive
+ description:
+ name: matcher
+ sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.12.17"
+ meta:
+ dependency: transitive
+ description:
+ name: meta
+ sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.17.0"
+ mime:
+ dependency: transitive
+ description:
+ name: mime
+ sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.0"
+ mocktail:
+ dependency: "direct dev"
+ description:
+ name: mocktail
+ sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.4"
+ mongo_dart:
+ dependency: "direct main"
+ description:
+ name: mongo_dart
+ sha256: "43b62b43c6449a0159bf138fba27653cb35acd92d3587ad26d1ec068cd645559"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.5"
+ mongo_dart_query:
+ dependency: transitive
+ description:
+ name: mongo_dart_query
+ sha256: "7a0f3981c3d1df467040e5654696cb0bfde6ec6db86ba313118fb3e873cee657"
+ url: "https://pub.dev"
+ source: hosted
+ version: "5.0.2"
+ node_preamble:
+ dependency: transitive
+ description:
+ name: node_preamble
+ sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.0.2"
+ package_config:
+ dependency: transitive
+ description:
+ name: package_config
+ sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.0"
+ packages_extensions:
+ dependency: transitive
+ description:
+ name: packages_extensions
+ sha256: "1fb328695a9828c80d275ce1650a2bb5947690070de082dfa1dfac7429378daf"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.1"
+ path:
+ dependency: transitive
+ description:
+ name: path
+ sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.9.1"
+ pointycastle:
+ dependency: transitive
+ description:
+ name: pointycastle
+ sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.0.0"
+ pool:
+ dependency: transitive
+ description:
+ name: pool
+ sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.5.2"
+ posix:
+ dependency: transitive
+ description:
+ name: posix
+ sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.0.3"
+ power_extensions:
+ dependency: transitive
+ description:
+ name: power_extensions
+ sha256: ad0e8b2420090d996fe8b7fd32cdf02b9b924b6d4fc0fb0b559ff6aa5e24d5b0
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.2.3"
+ pub_semver:
+ dependency: transitive
+ description:
+ name: pub_semver
+ sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.0"
+ rational:
+ dependency: transitive
+ description:
+ name: rational
+ sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.3"
+ sasl_scram:
+ dependency: transitive
+ description:
+ name: sasl_scram
+ sha256: a47207a436eb650f8fdcf54a2e2587b850dc3caef9973ce01f332b07a6fc9cb9
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.1.1"
+ saslprep:
+ dependency: transitive
+ description:
+ name: saslprep
+ sha256: "3d421d10be9513bf4459c17c5e70e7b8bc718c9fc5ad4ba5eb4f5fd27396f740"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.3"
+ shelf:
+ dependency: transitive
+ description:
+ name: shelf
+ sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.2"
+ shelf_packages_handler:
+ dependency: transitive
+ description:
+ name: shelf_packages_handler
+ sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.2"
+ shelf_static:
+ dependency: transitive
+ description:
+ name: shelf_static
+ sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ shelf_web_socket:
+ dependency: transitive
+ description:
+ name: shelf_web_socket
+ sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.0"
+ source_map_stack_trace:
+ dependency: transitive
+ description:
+ name: source_map_stack_trace
+ sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.2"
+ source_maps:
+ dependency: transitive
+ description:
+ name: source_maps
+ sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.10.13"
+ source_span:
+ dependency: transitive
+ description:
+ name: source_span
+ sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.10.1"
+ sprintf:
+ dependency: transitive
+ description:
+ name: sprintf
+ sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.0"
+ stack_trace:
+ dependency: transitive
+ description:
+ name: stack_trace
+ sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.12.1"
+ stream_channel:
+ dependency: transitive
+ description:
+ name: stream_channel
+ sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.4"
+ string_scanner:
+ dependency: transitive
+ description:
+ name: string_scanner
+ sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.1"
+ term_glyph:
+ dependency: transitive
+ description:
+ name: term_glyph
+ sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.2"
+ test:
+ dependency: "direct dev"
+ description:
+ name: test
+ sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.26.3"
+ test_api:
+ dependency: transitive
+ description:
+ name: test_api
+ sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.7.7"
+ test_core:
+ dependency: transitive
+ description:
+ name: test_core
+ sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.6.12"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ unorm_dart:
+ dependency: transitive
+ description:
+ name: unorm_dart
+ sha256: "8e3870a1caa60bde8352f9597dd3535d8068613269444f8e35ea8925ec84c1f5"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.3.1+1"
+ uuid:
+ dependency: "direct main"
+ description:
+ name: uuid
+ sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.5.1"
+ very_good_analysis:
+ dependency: "direct dev"
+ description:
+ name: very_good_analysis
+ sha256: e479fbc0941009262343db308133e121bf8660c2c81d48dd8e952df7b7e1e382
+ url: "https://pub.dev"
+ source: hosted
+ version: "9.0.0"
+ vm_service:
+ dependency: transitive
+ description:
+ name: vm_service
+ sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
+ url: "https://pub.dev"
+ source: hosted
+ version: "15.0.2"
+ vy_string_utils:
+ dependency: transitive
+ description:
+ name: vy_string_utils
+ sha256: "03f4f2ebba283b32623459fa9c47d5c70e085253c7891f5ef7d4fd539c41c078"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.6"
+ watcher:
+ dependency: transitive
+ description:
+ name: watcher
+ sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.3"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ web_socket:
+ dependency: transitive
+ description:
+ name: web_socket
+ sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.1"
+ web_socket_channel:
+ dependency: transitive
+ description:
+ name: web_socket_channel
+ sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.0.3"
+ webkit_inspection_protocol:
+ dependency: transitive
+ description:
+ name: webkit_inspection_protocol
+ sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.2.1"
+ yaml:
+ dependency: transitive
+ description:
+ name: yaml
+ sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
+ url: "https://pub.dev"
+ source: hosted
+ version: "3.1.3"
+sdks:
+ dart: ">=3.9.0 <4.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 5a10d27..6082417 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -10,9 +10,11 @@ dependencies:
core:
git:
url: https://github.com/flutter-news-app-full-source-code/core.git
+ ref: 828b984517edec069266579c624c7af9fbe0e2ac
data_client:
git:
url: https://github.com/flutter-news-app-full-source-code/data-client.git
+ ref: 960a00882045ee252274d9d57bfca606c1fe5d64
logging: ^1.3.0
mongo_dart: ^0.10.5
uuid: ^4.5.1