From 3aaabcef599aab82a54b0c86b5c8877ca348b428 Mon Sep 17 00:00:00 2001 From: SandroMaglione Date: Fri, 5 May 2023 17:33:29 +0200 Subject: [PATCH] move fpdart in packages folder --- .gitignore | 4 +- README.md | 390 +---------- example/json_serializable/lib/user.g.dart | 26 - example/json_serializable/pubspec.lock | 540 --------------- example/managing_imports/pubspec.lock | 396 ----------- example/open_meteo_api/pubspec.lock | 556 --------------- example/pokeapi_functional/.metadata | 10 - example/pokeapi_functional/pubspec.lock | 652 ------------------ example/read_write_file/pubspec.lock | 20 - examples/README.md | 2 + examples/json_serializable/.gitattributes | 1 + examples/json_serializable/.gitignore | 7 + .../json_serializable/lib/main.dart | 0 .../json_serializable/lib/user.dart | 0 .../json_serializable/pubspec.yaml | 8 +- .../json_serializable/test/user_test.dart | 0 .../managing_imports/.gitignore | 1 + .../managing_imports/README.md | 0 .../managing_imports/analysis_options.yaml | 0 .../bin/managing_imports.dart | 0 .../managing_imports/lib/functional.dart | 0 .../managing_imports/pubspec.yaml | 2 +- examples/open_meteo_api/.gitignore | 7 + .../open_meteo_api/README.md | 0 .../open_meteo_api/analysis_options.yaml | 0 .../open_meteo_api/build.yaml | 0 .../open_meteo_api/lib/open_meteo_api.dart | 0 .../lib/src/fpdart/location_failure.dart | 0 .../fpdart/open_meteo_api_client_fpdart.dart | 0 .../lib/src/fpdart/weather_failure.dart | 0 .../lib/src/models/location.dart | 0 .../open_meteo_api/lib/src/models/models.dart | 0 .../lib/src/models/weather.dart | 0 .../lib/src/open_meteo_api_client.dart | 0 .../open_meteo_api/pubspec.yaml | 2 +- .../test/open_meteo_api_client_test.dart | 0 .../open_meteo_api_client_test_fpdart.dart | 0 .../pokeapi_functional/.gitattributes | 0 .../pokeapi_functional/.gitignore | 2 + .../pokeapi_functional/README.md | 0 .../pokeapi_functional/android/.gitignore | 0 .../android/app/build.gradle | 0 .../android/app/src/debug/AndroidManifest.xml | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../pokeapi_functional/MainActivity.kt | 0 .../res/drawable-v21/launch_background.xml | 0 .../main/res/drawable/launch_background.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../app/src/main/res/values-night/styles.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../app/src/profile/AndroidManifest.xml | 0 .../pokeapi_functional/android/build.gradle | 0 .../android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/settings.gradle | 0 .../pokeapi_functional/ios/.gitignore | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../ios/Flutter/Debug.xcconfig | 0 .../ios/Flutter/Release.xcconfig | 0 .../ios/Runner.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../ios/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../Icon-App-1024x1024@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../LaunchImage.imageset/README.md | 0 .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 .../pokeapi_functional/ios/Runner/Info.plist | 0 .../ios/Runner/Runner-Bridging-Header.h | 0 .../lib/api/fetch_pokemon.dart | 0 .../lib/constants/constants.dart | 0 .../lib/controllers/pokemon_provider.dart | 0 .../pokeapi_functional/lib/main.dart | 0 .../lib/models/pokemon.dart | 0 .../lib/models/pokemon.freezed.dart | 0 .../pokeapi_functional/lib/models/sprite.dart | 0 .../lib/models/sprite.freezed.dart | 0 .../pokeapi_functional/pubspec.yaml | 2 +- .../pokeapi_functional/web/favicon.png | Bin .../pokeapi_functional/web/icons/Icon-192.png | Bin .../pokeapi_functional/web/icons/Icon-512.png | Bin .../pokeapi_functional/web/index.html | 0 .../pokeapi_functional/web/manifest.json | 0 examples/read_write_file/.gitignore | 7 + .../read_write_file/assets/source_eng.txt | 0 .../read_write_file/assets/source_ita.txt | 0 .../read_write_file/main.dart | 0 .../read_write_file/pubspec.yaml | 8 +- packages/fpdart/.gitignore | 7 + CHANGELOG.md => packages/fpdart/CHANGELOG.md | 2 +- LICENSE => packages/fpdart/LICENSE | 0 packages/fpdart/README.md | 389 +++++++++++ .../fpdart/analysis_options.yaml | 0 .../fpdart/example}/analysis_options.yaml | 5 +- .../api_requests/try_catch_validation.dart | 0 .../fpdart/example}/do_notation/main.dart | 0 .../fpdart/example}/logger/logger.dart | 0 .../fpdart/example}/logger/main.dart | 0 .../fpdart/example}/main.dart | 0 .../fpdart/example}/src/compose/overview.dart | 0 .../fpdart/example}/src/either/cast.dart | 0 .../example}/src/either/chain_either.dart | 0 .../fpdart/example}/src/either/either1.dart | 0 .../fpdart/example}/src/either/overview.dart | 0 .../src/either/shopping/functional.dart | 0 .../fpdart/example}/src/function/const_f.dart | 0 .../fpdart/example}/src/function/curry.dart | 0 .../example}/src/function/identity.dart | 0 .../fpdart/example}/src/io/overview.dart | 0 .../fpdart/example}/src/list/fold.dart | 0 .../fpdart/example}/src/list/zip.dart | 0 .../fpdart/example}/src/map/overview.dart | 0 .../fpdart/example}/src/option/cheat_sheet.md | 0 .../src/option/get-price/functional.dart | 0 .../src/option/get-price/non_functional.dart | 0 .../src/option/nullable/chain_nullable.dart | 0 .../src/option/nullable/option_nullable.dart | 0 .../src/option/nullable/overview.dart | 0 .../fpdart/example}/src/option/option1.dart | 0 .../fpdart/example}/src/option/option2.dart | 0 .../fpdart/example}/src/option/option3.dart | 0 .../fpdart/example}/src/option/overview.dart | 0 .../src/option/shopping/functional.dart | 0 .../fpdart/example}/src/pure_function.dart | 0 .../fpdart/example}/src/reader/reader1.dart | 0 .../fpdart/example}/src/reader/reader2.dart | 0 .../fpdart/example}/src/state/state1.dart | 0 .../src/state_async/state_async1.dart | 0 .../fpdart/example}/src/task/overview.dart | 0 .../example}/src/task/task_and_future.dart | 0 .../src/task_either/async_flat_map/data.dart | 0 .../task_either/async_flat_map/failure.dart | 0 .../src/task_either/async_flat_map/main.dart | 0 .../async_flat_map/student_repo.dart | 0 .../example}/src/task_either/chain.dart | 0 .../example}/src/task_either/finally.dart | 0 .../example}/src/task_either/overview.dart | 0 .../src/task_either/sync_to_async.dart | 0 .../src/task_option/future_task_option.dart | 0 .../example}/src/task_option/overview.dart | 0 .../fpdart/example}/src/traverse/option.dart | 0 .../src/traverse/sequnce_traverse.dart | 0 .../example}/src/typeclass/order/order1.dart | 0 {lib => packages/fpdart/lib}/fpdart.dart | 0 {lib => packages/fpdart/lib}/src/boolean.dart | 0 {lib => packages/fpdart/lib}/src/compose.dart | 0 {lib => packages/fpdart/lib}/src/date.dart | 0 {lib => packages/fpdart/lib}/src/either.dart | 0 .../fpdart/lib}/src/function.dart | 0 {lib => packages/fpdart/lib}/src/io.dart | 13 +- .../fpdart/lib}/src/io_either.dart | 0 .../fpdart/lib}/src/io_option.dart | 0 {lib => packages/fpdart/lib}/src/io_ref.dart | 5 +- .../fpdart/lib}/src/list_extension.dart | 0 .../fpdart/lib}/src/map_extension.dart | 7 +- .../fpdart/lib}/src/nullable_extension.dart | 0 {lib => packages/fpdart/lib}/src/option.dart | 0 .../fpdart/lib}/src/predicate.dart | 0 {lib => packages/fpdart/lib}/src/random.dart | 0 {lib => packages/fpdart/lib}/src/reader.dart | 6 +- {lib => packages/fpdart/lib}/src/state.dart | 0 .../fpdart/lib}/src/state_async.dart | 0 {lib => packages/fpdart/lib}/src/task.dart | 0 .../fpdart/lib}/src/task_either.dart | 0 .../fpdart/lib}/src/task_option.dart | 11 +- {lib => packages/fpdart/lib}/src/tuple.dart | 7 +- .../fpdart/lib}/src/typeclass/alt.dart | 0 .../lib}/src/typeclass/applicative.dart | 0 .../fpdart/lib}/src/typeclass/band.dart | 2 +- .../src/typeclass/bounded_semilattice.dart | 7 +- .../lib}/src/typeclass/commutative_group.dart | 6 +- .../src/typeclass/commutative_monoid.dart | 0 .../src/typeclass/commutative_semigroup.dart | 2 +- .../fpdart/lib}/src/typeclass/eq.dart | 0 .../fpdart/lib}/src/typeclass/extend.dart | 0 .../fpdart/lib}/src/typeclass/filterable.dart | 0 .../fpdart/lib}/src/typeclass/foldable.dart | 0 .../fpdart/lib}/src/typeclass/functor.dart | 0 .../fpdart/lib}/src/typeclass/group.dart | 3 +- .../fpdart/lib}/src/typeclass/hash.dart | 0 .../fpdart/lib}/src/typeclass/hkt.dart | 0 .../fpdart/lib}/src/typeclass/monad.dart | 0 .../fpdart/lib}/src/typeclass/monoid.dart | 3 +- .../fpdart/lib}/src/typeclass/order.dart | 0 .../lib}/src/typeclass/partial_order.dart | 0 .../fpdart/lib}/src/typeclass/semigroup.dart | 0 .../lib}/src/typeclass/semilattice.dart | 0 .../lib}/src/typeclass/typeclass.export.dart | 0 {lib => packages/fpdart/lib}/src/typedef.dart | 0 {lib => packages/fpdart/lib}/src/unit.dart | 0 pubspec.yaml => packages/fpdart/pubspec.yaml | 9 +- .../fpdart/test}/analysis_options.yaml | 0 .../fpdart/test}/src/band_test.dart | 0 .../fpdart/test}/src/boolean_test.dart | 0 .../test}/src/bounded_semilattice_test.dart | 0 .../test}/src/commutative_group_test.dart | 0 .../test}/src/commutative_monoid_test.dart | 0 .../test}/src/commutative_semigroup_test.dart | 0 .../fpdart/test}/src/compose_test.dart | 0 .../fpdart/test}/src/date_test.dart | 0 .../fpdart/test}/src/either_test.dart | 0 .../fpdart/test}/src/eq_test.dart | 0 .../fpdart/test}/src/group_test.dart | 0 .../fpdart/test}/src/hash_test.dart | 0 .../fpdart/test}/src/io_either_test.dart | 0 .../fpdart/test}/src/io_option_test.dart | 0 .../fpdart/test}/src/io_ref_test.dart | 0 .../fpdart/test}/src/io_test.dart | 0 .../fpdart/test}/src/list_extension_test.dart | 0 .../fpdart/test}/src/map_extension_test.dart | 0 .../fpdart/test}/src/monoid_test.dart | 0 .../test}/src/nullable_extension_test.dart | 0 .../fpdart/test}/src/option_test.dart | 0 .../fpdart/test}/src/order_test.dart | 0 .../fpdart/test}/src/partial_order_test.dart | 0 .../fpdart/test}/src/predicate_test.dart | 0 .../fpdart/test}/src/reader_test.dart | 0 .../fpdart/test}/src/semigroup_test.dart | 0 .../fpdart/test}/src/semilattice_test.dart | 0 .../fpdart/test}/src/state_async_test.dart | 0 .../fpdart/test}/src/state_test.dart | 0 .../fpdart/test}/src/task_either_test.dart | 0 .../fpdart/test}/src/task_option_test.dart | 0 .../fpdart/test}/src/task_test.dart | 0 .../fpdart/test}/src/tuple_test.dart | 0 .../fpdart/test}/src/unit_test.dart | 0 .../fpdart/test}/src/utils/async_utils.dart | 0 .../fpdart/test}/src/utils/glados_utils.dart | 0 .../fpdart/test}/src/utils/match_utils.dart | 0 .../fpdart/test}/src/utils/utils.dart | 0 pubspec.lock | 413 ----------- .../screenshots/screenshot_fpdart.png | Bin 260 files changed, 505 insertions(+), 3035 deletions(-) delete mode 100644 example/json_serializable/lib/user.g.dart delete mode 100644 example/json_serializable/pubspec.lock delete mode 100644 example/managing_imports/pubspec.lock delete mode 100644 example/open_meteo_api/pubspec.lock delete mode 100644 example/pokeapi_functional/.metadata delete mode 100644 example/pokeapi_functional/pubspec.lock delete mode 100644 example/read_write_file/pubspec.lock create mode 100644 examples/README.md create mode 100644 examples/json_serializable/.gitattributes create mode 100644 examples/json_serializable/.gitignore rename {example => examples}/json_serializable/lib/main.dart (100%) rename {example => examples}/json_serializable/lib/user.dart (100%) rename {example => examples}/json_serializable/pubspec.yaml (83%) rename {example => examples}/json_serializable/test/user_test.dart (100%) rename {example => examples}/managing_imports/.gitignore (89%) rename {example => examples}/managing_imports/README.md (100%) rename {example => examples}/managing_imports/analysis_options.yaml (100%) rename {example => examples}/managing_imports/bin/managing_imports.dart (100%) rename {example => examples}/managing_imports/lib/functional.dart (100%) rename {example => examples}/managing_imports/pubspec.yaml (87%) create mode 100644 examples/open_meteo_api/.gitignore rename {example => examples}/open_meteo_api/README.md (100%) rename {example => examples}/open_meteo_api/analysis_options.yaml (100%) rename {example => examples}/open_meteo_api/build.yaml (100%) rename {example => examples}/open_meteo_api/lib/open_meteo_api.dart (100%) rename {example => examples}/open_meteo_api/lib/src/fpdart/location_failure.dart (100%) rename {example => examples}/open_meteo_api/lib/src/fpdart/open_meteo_api_client_fpdart.dart (100%) rename {example => examples}/open_meteo_api/lib/src/fpdart/weather_failure.dart (100%) rename {example => examples}/open_meteo_api/lib/src/models/location.dart (100%) rename {example => examples}/open_meteo_api/lib/src/models/models.dart (100%) rename {example => examples}/open_meteo_api/lib/src/models/weather.dart (100%) rename {example => examples}/open_meteo_api/lib/src/open_meteo_api_client.dart (100%) rename {example => examples}/open_meteo_api/pubspec.yaml (91%) rename {example => examples}/open_meteo_api/test/open_meteo_api_client_test.dart (100%) rename {example => examples}/open_meteo_api/test/open_meteo_api_client_test_fpdart.dart (100%) rename .gitattributes => examples/pokeapi_functional/.gitattributes (100%) rename {example => examples}/pokeapi_functional/.gitignore (96%) rename {example => examples}/pokeapi_functional/README.md (100%) rename {example => examples}/pokeapi_functional/android/.gitignore (100%) rename {example => examples}/pokeapi_functional/android/app/build.gradle (100%) rename {example => examples}/pokeapi_functional/android/app/src/debug/AndroidManifest.xml (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/AndroidManifest.xml (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/kotlin/com/sandromaglione/fpdart/pokeapi/pokeapi_functional/MainActivity.kt (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/drawable-v21/launch_background.xml (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/drawable/launch_background.xml (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/values-night/styles.xml (100%) rename {example => examples}/pokeapi_functional/android/app/src/main/res/values/styles.xml (100%) rename {example => examples}/pokeapi_functional/android/app/src/profile/AndroidManifest.xml (100%) rename {example => examples}/pokeapi_functional/android/build.gradle (100%) rename {example => examples}/pokeapi_functional/android/gradle.properties (100%) rename {example => examples}/pokeapi_functional/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {example => examples}/pokeapi_functional/android/settings.gradle (100%) rename {example => examples}/pokeapi_functional/ios/.gitignore (100%) rename {example => examples}/pokeapi_functional/ios/Flutter/AppFrameworkInfo.plist (100%) rename {example => examples}/pokeapi_functional/ios/Flutter/Debug.xcconfig (100%) rename {example => examples}/pokeapi_functional/ios/Flutter/Release.xcconfig (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcodeproj/project.pbxproj (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {example => examples}/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {example => examples}/pokeapi_functional/ios/Runner/AppDelegate.swift (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Base.lproj/Main.storyboard (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Info.plist (100%) rename {example => examples}/pokeapi_functional/ios/Runner/Runner-Bridging-Header.h (100%) rename {example => examples}/pokeapi_functional/lib/api/fetch_pokemon.dart (100%) rename {example => examples}/pokeapi_functional/lib/constants/constants.dart (100%) rename {example => examples}/pokeapi_functional/lib/controllers/pokemon_provider.dart (100%) rename {example => examples}/pokeapi_functional/lib/main.dart (100%) rename {example => examples}/pokeapi_functional/lib/models/pokemon.dart (100%) rename {example => examples}/pokeapi_functional/lib/models/pokemon.freezed.dart (100%) rename {example => examples}/pokeapi_functional/lib/models/sprite.dart (100%) rename {example => examples}/pokeapi_functional/lib/models/sprite.freezed.dart (100%) rename {example => examples}/pokeapi_functional/pubspec.yaml (94%) rename {example => examples}/pokeapi_functional/web/favicon.png (100%) rename {example => examples}/pokeapi_functional/web/icons/Icon-192.png (100%) rename {example => examples}/pokeapi_functional/web/icons/Icon-512.png (100%) rename {example => examples}/pokeapi_functional/web/index.html (100%) rename {example => examples}/pokeapi_functional/web/manifest.json (100%) create mode 100644 examples/read_write_file/.gitignore rename {example => examples}/read_write_file/assets/source_eng.txt (100%) rename {example => examples}/read_write_file/assets/source_ita.txt (100%) rename {example => examples}/read_write_file/main.dart (100%) rename {example => examples}/read_write_file/pubspec.yaml (83%) create mode 100644 packages/fpdart/.gitignore rename CHANGELOG.md => packages/fpdart/CHANGELOG.md (99%) rename LICENSE => packages/fpdart/LICENSE (100%) create mode 100644 packages/fpdart/README.md rename analysis_options.yaml => packages/fpdart/analysis_options.yaml (100%) rename {example => packages/fpdart/example}/analysis_options.yaml (67%) rename {example => packages/fpdart/example}/api_requests/try_catch_validation.dart (100%) rename {example => packages/fpdart/example}/do_notation/main.dart (100%) rename {example/from_imperative_to_functional => packages/fpdart/example}/logger/logger.dart (100%) rename {example/from_imperative_to_functional => packages/fpdart/example}/logger/main.dart (100%) rename {example => packages/fpdart/example}/main.dart (100%) rename {example => packages/fpdart/example}/src/compose/overview.dart (100%) rename {example => packages/fpdart/example}/src/either/cast.dart (100%) rename {example => packages/fpdart/example}/src/either/chain_either.dart (100%) rename {example => packages/fpdart/example}/src/either/either1.dart (100%) rename {example => packages/fpdart/example}/src/either/overview.dart (100%) rename {example => packages/fpdart/example}/src/either/shopping/functional.dart (100%) rename {example => packages/fpdart/example}/src/function/const_f.dart (100%) rename {example => packages/fpdart/example}/src/function/curry.dart (100%) rename {example => packages/fpdart/example}/src/function/identity.dart (100%) rename {example => packages/fpdart/example}/src/io/overview.dart (100%) rename {example => packages/fpdart/example}/src/list/fold.dart (100%) rename {example => packages/fpdart/example}/src/list/zip.dart (100%) rename {example => packages/fpdart/example}/src/map/overview.dart (100%) rename {example => packages/fpdart/example}/src/option/cheat_sheet.md (100%) rename {example => packages/fpdart/example}/src/option/get-price/functional.dart (100%) rename {example => packages/fpdart/example}/src/option/get-price/non_functional.dart (100%) rename {example => packages/fpdart/example}/src/option/nullable/chain_nullable.dart (100%) rename {example => packages/fpdart/example}/src/option/nullable/option_nullable.dart (100%) rename {example => packages/fpdart/example}/src/option/nullable/overview.dart (100%) rename {example => packages/fpdart/example}/src/option/option1.dart (100%) rename {example => packages/fpdart/example}/src/option/option2.dart (100%) rename {example => packages/fpdart/example}/src/option/option3.dart (100%) rename {example => packages/fpdart/example}/src/option/overview.dart (100%) rename {example => packages/fpdart/example}/src/option/shopping/functional.dart (100%) rename {example => packages/fpdart/example}/src/pure_function.dart (100%) rename {example => packages/fpdart/example}/src/reader/reader1.dart (100%) rename {example => packages/fpdart/example}/src/reader/reader2.dart (100%) rename {example => packages/fpdart/example}/src/state/state1.dart (100%) rename {example => packages/fpdart/example}/src/state_async/state_async1.dart (100%) rename {example => packages/fpdart/example}/src/task/overview.dart (100%) rename {example => packages/fpdart/example}/src/task/task_and_future.dart (100%) rename {example => packages/fpdart/example}/src/task_either/async_flat_map/data.dart (100%) rename {example => packages/fpdart/example}/src/task_either/async_flat_map/failure.dart (100%) rename {example => packages/fpdart/example}/src/task_either/async_flat_map/main.dart (100%) rename {example => packages/fpdart/example}/src/task_either/async_flat_map/student_repo.dart (100%) rename {example => packages/fpdart/example}/src/task_either/chain.dart (100%) rename {example => packages/fpdart/example}/src/task_either/finally.dart (100%) rename {example => packages/fpdart/example}/src/task_either/overview.dart (100%) rename {example => packages/fpdart/example}/src/task_either/sync_to_async.dart (100%) rename {example => packages/fpdart/example}/src/task_option/future_task_option.dart (100%) rename {example => packages/fpdart/example}/src/task_option/overview.dart (100%) rename {example => packages/fpdart/example}/src/traverse/option.dart (100%) rename {example => packages/fpdart/example}/src/traverse/sequnce_traverse.dart (100%) rename {example => packages/fpdart/example}/src/typeclass/order/order1.dart (100%) rename {lib => packages/fpdart/lib}/fpdart.dart (100%) rename {lib => packages/fpdart/lib}/src/boolean.dart (100%) rename {lib => packages/fpdart/lib}/src/compose.dart (100%) rename {lib => packages/fpdart/lib}/src/date.dart (100%) rename {lib => packages/fpdart/lib}/src/either.dart (100%) rename {lib => packages/fpdart/lib}/src/function.dart (100%) rename {lib => packages/fpdart/lib}/src/io.dart (93%) rename {lib => packages/fpdart/lib}/src/io_either.dart (100%) rename {lib => packages/fpdart/lib}/src/io_option.dart (100%) rename {lib => packages/fpdart/lib}/src/io_ref.dart (96%) rename {lib => packages/fpdart/lib}/src/list_extension.dart (100%) rename {lib => packages/fpdart/lib}/src/map_extension.dart (98%) rename {lib => packages/fpdart/lib}/src/nullable_extension.dart (100%) rename {lib => packages/fpdart/lib}/src/option.dart (100%) rename {lib => packages/fpdart/lib}/src/predicate.dart (100%) rename {lib => packages/fpdart/lib}/src/random.dart (100%) rename {lib => packages/fpdart/lib}/src/reader.dart (95%) rename {lib => packages/fpdart/lib}/src/state.dart (100%) rename {lib => packages/fpdart/lib}/src/state_async.dart (100%) rename {lib => packages/fpdart/lib}/src/task.dart (100%) rename {lib => packages/fpdart/lib}/src/task_either.dart (100%) rename {lib => packages/fpdart/lib}/src/task_option.dart (97%) rename {lib => packages/fpdart/lib}/src/tuple.dart (97%) rename {lib => packages/fpdart/lib}/src/typeclass/alt.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/applicative.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/band.dart (96%) rename {lib => packages/fpdart/lib}/src/typeclass/bounded_semilattice.dart (90%) rename {lib => packages/fpdart/lib}/src/typeclass/commutative_group.dart (88%) rename {lib => packages/fpdart/lib}/src/typeclass/commutative_monoid.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/commutative_semigroup.dart (95%) rename {lib => packages/fpdart/lib}/src/typeclass/eq.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/extend.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/filterable.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/foldable.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/functor.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/group.dart (97%) rename {lib => packages/fpdart/lib}/src/typeclass/hash.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/hkt.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/monad.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/monoid.dart (98%) rename {lib => packages/fpdart/lib}/src/typeclass/order.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/partial_order.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/semigroup.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/semilattice.dart (100%) rename {lib => packages/fpdart/lib}/src/typeclass/typeclass.export.dart (100%) rename {lib => packages/fpdart/lib}/src/typedef.dart (100%) rename {lib => packages/fpdart/lib}/src/unit.dart (100%) rename pubspec.yaml => packages/fpdart/pubspec.yaml (60%) rename {test => packages/fpdart/test}/analysis_options.yaml (100%) rename {test => packages/fpdart/test}/src/band_test.dart (100%) rename {test => packages/fpdart/test}/src/boolean_test.dart (100%) rename {test => packages/fpdart/test}/src/bounded_semilattice_test.dart (100%) rename {test => packages/fpdart/test}/src/commutative_group_test.dart (100%) rename {test => packages/fpdart/test}/src/commutative_monoid_test.dart (100%) rename {test => packages/fpdart/test}/src/commutative_semigroup_test.dart (100%) rename {test => packages/fpdart/test}/src/compose_test.dart (100%) rename {test => packages/fpdart/test}/src/date_test.dart (100%) rename {test => packages/fpdart/test}/src/either_test.dart (100%) rename {test => packages/fpdart/test}/src/eq_test.dart (100%) rename {test => packages/fpdart/test}/src/group_test.dart (100%) rename {test => packages/fpdart/test}/src/hash_test.dart (100%) rename {test => packages/fpdart/test}/src/io_either_test.dart (100%) rename {test => packages/fpdart/test}/src/io_option_test.dart (100%) rename {test => packages/fpdart/test}/src/io_ref_test.dart (100%) rename {test => packages/fpdart/test}/src/io_test.dart (100%) rename {test => packages/fpdart/test}/src/list_extension_test.dart (100%) rename {test => packages/fpdart/test}/src/map_extension_test.dart (100%) rename {test => packages/fpdart/test}/src/monoid_test.dart (100%) rename {test => packages/fpdart/test}/src/nullable_extension_test.dart (100%) rename {test => packages/fpdart/test}/src/option_test.dart (100%) rename {test => packages/fpdart/test}/src/order_test.dart (100%) rename {test => packages/fpdart/test}/src/partial_order_test.dart (100%) rename {test => packages/fpdart/test}/src/predicate_test.dart (100%) rename {test => packages/fpdart/test}/src/reader_test.dart (100%) rename {test => packages/fpdart/test}/src/semigroup_test.dart (100%) rename {test => packages/fpdart/test}/src/semilattice_test.dart (100%) rename {test => packages/fpdart/test}/src/state_async_test.dart (100%) rename {test => packages/fpdart/test}/src/state_test.dart (100%) rename {test => packages/fpdart/test}/src/task_either_test.dart (100%) rename {test => packages/fpdart/test}/src/task_option_test.dart (100%) rename {test => packages/fpdart/test}/src/task_test.dart (100%) rename {test => packages/fpdart/test}/src/tuple_test.dart (100%) rename {test => packages/fpdart/test}/src/unit_test.dart (100%) rename {test => packages/fpdart/test}/src/utils/async_utils.dart (100%) rename {test => packages/fpdart/test}/src/utils/glados_utils.dart (100%) rename {test => packages/fpdart/test}/src/utils/match_utils.dart (100%) rename {test => packages/fpdart/test}/src/utils/utils.dart (100%) delete mode 100644 pubspec.lock rename {example => resources}/screenshots/screenshot_fpdart.png (100%) diff --git a/.gitignore b/.gitignore index b1eebb57..5cc97453 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ .dart_tool/ .packages +pubspec.lock # Generated files **.g.dart -.idea/ \ No newline at end of file +.idea/ +build/ \ No newline at end of file diff --git a/README.md b/README.md index 2fdd7a9b..f6c6eeb8 100644 --- a/README.md +++ b/README.md @@ -1,389 +1 @@ -

- - - -

- - -

-Functional programming in Dart and Flutter -

- -

-All the main functional programming types and patterns fully documented, tested, and with examples -

- - -

- - - - - - - - GitHub: SandroMaglione - - - Twitter: SandroMaglione - -

- -## Introduction - -> **Fpdart is fully documented. You do not need to have any previous experience with functional programming to start using `fpdart`. Give it a try!** - -Fpdart is inspired by [fp-ts](https://gcanti.github.io/fp-ts/), [cats](https://typelevel.org/cats/typeclasses.html#type-classes-in-cats), and [dartz](https://github.com/spebbe/dartz). - -> **Note**: The API is still evolving and it may change. New documentation and testing is always ongoing. Follow my [**Twitter**](https://twitter.com/SandroMaglione) for updates, or [subscribe to the newsletter](https://www.sandromaglione.com/newsletter) - -*** - -- [Introduction](#introduction) -- [📖 Learn `functional programming` and `fpdart`](#-learn-functional-programming-and-fpdart) - - [👨‍💻 Blog posts and tutorials](#-blog-posts-and-tutorials) -- [💻 Installation](#-installation) -- [✨ Examples](#-examples) - - [Pokeapi](#pokeapi) - - [Open Meteo API](#open-meteo-api) - - [Read/Write local file](#readwrite-local-file) - - [Manage imports](#manage-imports) - - [Option](#option) - - [Either](#either) - - [IO](#io) - - [Task](#task) - - [Utility types](#utility-types) - - [Reader](#reader) - - [State](#state) - - [📦 Immutable Collections](#-immutable-collections) - - [More](#more) -- [🎯 Types](#-types) -- [💡 Motivation](#-motivation) - - [Goal](#goal) - - [Comparison with `dartz`](#comparison-with-dartz) -- [🤔 Roadmap](#-roadmap) -- [📃 Versioning](#-versioning) -- [😀 Support](#-support) -- [👀 License](#-license) - - - -## 📖 Learn `functional programming` and `fpdart` - -Would you like to know more about functional programming, fpdart, and how to use the package? - -📚 [**Collection of tutorials on fpdart**](https://www.sandromaglione.com/course/fpdart-functional-programming-dart-and-flutter) - -Check out also this series of articles about functional programming with `fpdart`: - -1. [**Fpdart, Functional Programming in Dart and Flutter**](https://www.sandromaglione.com/fpdart-functional-programming-in-dart-and-flutter/) -2. [**How to use fpdart Functional Programming in your Dart and Flutter app**](https://www.sandromaglione.com/how-to-use-fpdart-functional-programming-in-dart-and-flutter/) -3. [**Pure Functional app in Flutter – Pokemon app using fpdart and Functional Programming**](https://www.sandromaglione.com/pure-functional-app-in-flutter-using-fpdart-functional-programming/) -4. [**Functional Programming Option type – Introduction**](https://www.sandromaglione.com/functional-programming-option-type-tutorial/) -5. [**Chain functions using Option type – Functional Programming**](https://www.sandromaglione.com/chain-functions-using-option-type-functional-programming/) -6. [**Practical Functional Programming - Part 1**](https://www.sandromaglione.com/practical-functional-programming-step-by-step-haskell-typescript-dart-part-1/) -7. [**Practical Functional Programming - Part 2**](https://www.sandromaglione.com/practical-functional-programming-pure-functions-part-2/) -8. [**Practical Functional Programming - Part 3**](https://www.sandromaglione.com/immutability-practical-functional-programming-part-3/) - -### 👨‍💻 Blog posts and tutorials -- [How to make API requests with validation in fpdart](https://www.sandromaglione.com/techblog/fpdart-api-request-with-validation-functional-programming) -- [How to use TaskEither in fpdart](https://www.sandromaglione.com/techblog/how-to-use-task-either-fpdart-functional-programming) -- [How to map an Either to a Future in fpdart](https://blog.sandromaglione.com/techblog/from-sync-to-async-functional-programming) -- [Option type and Null Safety in dart](https://www.sandromaglione.com/techblog/option_type_and_null_safety_dart) -- [Either - Error Handling in Functional Programming](https://www.sandromaglione.com/techblog/either-error-handling-functional-programming) -- [Future & Task: asynchronous Functional Programming](https://www.sandromaglione.com/techblog/async-requests-future-and-task-dart) -- [Flutter Supabase Functional Programming with fpdart](https://www.sandromaglione.com/techblog/flutter-dart-functional-programming-fpdart-supabase-app) - - -## 💻 Installation - -```yaml -# pubspec.yaml -dependencies: - fpdart: ^0.6.0-dev.1 # Check out the latest version -``` - -## ✨ Examples - -### [Pokeapi](./example/pokeapi_functional/) -Flutter app that lets you search and view your favorite Pokemon: -- API request -- Response validation -- JSON conversion -- State management ([riverpod](https://pub.dev/packages/riverpod)) - -### [Open Meteo API](./example/open_meteo_api/) -Re-implementation using `fpdart` and functional programming of the [Open Meteo API](https://github.com/felangel/bloc/tree/master/examples/flutter_weather/packages/open_meteo_api) from the [flutter_weather](https://bloclibrary.dev/#/flutterweathertutorial) app example in the [bloc](https://pub.dev/packages/bloc) package. - -A 2 parts series explains step by step the Open Meteo API code: -- [Open Meteo API - Functional programming with fpdart (Part 1)](https://www.sandromaglione.com/techblog/real_example_fpdart_open_meteo_api_part_1) -- [Open Meteo API - Functional programming with fpdart (Part 2)](https://www.sandromaglione.com/techblog/real_example_fpdart_open_meteo_api_part_2) - -### [Read/Write local file](./example/read_write_file/) -Example of how to read and write a local file using functional programming. - -### [Manage imports](./example/managing_imports) -Using `fpdart` with other libraries and noticing naming conflicts? Learn how to rename the classes that conflict with other SDK or third-party packages. - -### [Option](./lib/src/option.dart) -Used when a return value can be missing. -> For example, when parsing a `String` to `int`, since not all `String` -> can be converted to `int` - -```dart -/// Create an instance of [Some] -final option = Option.of(10); - -/// Create an instance of [None] -final none = Option.none(); - -/// Map [int] to [String] -final map = option.map((a) => '$a'); - -/// Extract the value from [Option] -final value = option.getOrElse(() => -1); - -/// Pattern matching -final match = option.match( - () => print('None'), - (a) => print('Some($a)'), -); - -/// Convert to [Either] -final either = option.toEither(() => 'missing'); - -/// Chain computations -final flatMap = option.flatMap((a) => Option.of(a + 10)); - -/// Return [None] if the function throws an error -final tryCatch = Option.tryCatch(() => int.parse('invalid')); -``` - -### [Either](./lib/src/either.dart) -Used to handle errors (instead of `Exception`s). -> `Either`: `L` is the type of the error (for example a `String` explaining -> the problem), `R` is the return type when the computation is successful - -```dart -/// Create an instance of [Right] -final right = Either.of(10); - -/// Create an instance of [Left] -final left = Either.left('none'); - -/// Map the right value to a [String] -final mapRight = right.map((a) => '$a'); - -/// Map the left value to a [int] -final mapLeft = right.mapLeft((a) => a.length); - -/// Return [Left] if the function throws an error. -/// Otherwise return [Right]. -final tryCatch = Either.tryCatch( - () => int.parse('invalid'), - (e, s) => 'Error: $e', -); - -/// Extract the value from [Either] -final value = right.getOrElse((l) => -1); - -/// Chain computations -final flatMap = right.flatMap((a) => Either.of(a + 10)); - -/// Pattern matching -final match = right.match( - (l) => print('Left($l)'), - (r) => print('Right($r)'), -); - -/// Convert to [Option] -final option = right.toOption(); -``` - -### [IO](./lib/src/io.dart) -Wrapper around an **sync** function. Allows to compose synchronous functions **that never fail**. - -```dart -/// Create instance of [IO] from a value -final IO io = IO.of(10); - -/// Create instance of [IO] from a sync function -final ioRun = IO(() => 10); - -/// Map [int] to [String] -final IO map = io.map((a) => '$a'); - -/// Extract the value inside [IO] by running its function -final int value = io.run(); - -/// Chain another [IO] based on the value of the current [IO] -final flatMap = io.flatMap((a) => IO.of(a + 10)); -``` - -### [Task](./lib/src/task.dart) -Wrapper around an **async** function (`Future`). Allows to compose asynchronous functions **that never fail**. - -> If you look closely, it's the same as [`IO`](#io) but for **async functions** 💡 - -```dart -/// Create instance of [Task] from a value -final Task task = Task.of(10); - -/// Create instance of [Task] from an async function -final taskRun1 = Task(() async => 10); -final taskRun2 = Task(() => Future.value(10)); - -/// Map [int] to [String] -final Task map = task.map((a) => '$a'); - -/// Extract the value inside [Task] by running its async function -final int value = await task.run(); - -/// Chain another [Task] based on the value of the current [Task] -final flatMap = task.flatMap((a) => Task.of(a + 10)); -``` - -### Utility types -These types compose together the 4 above ([`Option`](#option), [`Either`](#either), [`IO`](#io), [`Task`](#task)) to join together their functionalities: -- [`IOOption`](./lib/src/io_option.dart): sync function (`IO`) that may may miss the return value (`Option`) -- [`IOEither`](./lib/src/io_either.dart): sync function (`IO`) that may fail (`Either`) -- [`TaskOption`](./lib/src/task_option.dart): async function (`Task`) that may miss the return value (`Option`) -- [`TaskEither`](./lib/src/task_either.dart): async function (`Task`) that may fail (`Either`) - - -### [Reader](./lib/src/reader.dart) -Read values from a **context** without explicitly passing the dependency between multiple nested function calls. View the [example folder for an explained usecase example](./example/src/reader). - -### [State](./lib/src/state.dart) -Used to **store**, **update**, and **extract** state in a functional way. View the [example folder for an explained usecase example](./example/src/state). - -### 📦 Immutable Collections - -Fpdart provides some extension methods on `Iterable` (`List`) and `Map` that extend the methods available by providing some functional programming signatures (safe methods that never mutate the original collection and that never throw exceptions). - -Integrations for immutable collections (`IList`, `ISet`, `IMap`, etc.) are still being discussed with the community. `fpdart` does not want to be another immutable collection solution in the ecosystem. That is why we are working to integrate `fpdart` with other more mature packages that already implements immutable collections. Stay tuned! - -### More - -Many more examples are coming soon. Check out [**my website**](https://www.sandromaglione.com/) and my [**Twitter**](https://twitter.com/SandroMaglione) for daily updates. - ---- - - -## 🎯 Types - -- [x] `Option` -- [x] `Either` -- [x] `Unit` -- [x] `Task` -- [x] `TaskEither` -- [x] `State` -- [x] `StateAsync` -- [x] `Reader` -- [x] `Tuple` -- [x] `IO` -- [x] `IORef` -- [x] `Iterable` (`List`) `extension` -- [x] `Map` `extension` -- [x] `IOEither` -- [x] `TaskOption` -- [x] `Predicate` -- [x] `IOOption` -- [ ] `ReaderEither` -- [ ] `ReaderTask` -- [ ] `ReaderTaskEither` -- [ ] `StateReaderTaskEither` -- [ ] `Lens` -- [ ] `Writer` - -## 💡 Motivation - -Functional programming is becoming more and more popular, and for good reasons. - -Many non-functional languages are slowly adopting patterns from functional languages, dart included. Dart already supports higher-order functions, generic types, type inference. Since Dart 3, the language supports also [pattern matching](https://github.com/dart-lang/language/issues/546), [destructuring](https://github.com/dart-lang/language/issues/207), [multiple return values](https://github.com/dart-lang/language/issues/68) ([**Read more about these new features here**](https://www.sandromaglione.com/techblog/records-and-patterns-dart-language)). - -Other functional programming features are coming to the language, like [higher-order types](https://github.com/dart-lang/language/issues/1655). - -Many packages are bringing functional patterns to dart, like the amazing [freezed](https://pub.dev/packages/freezed) for unions/pattern matching. - -Fpdart aims to provide all the main types found in functional languages to dart. Types like `Option` (handle missing values without `null`), `Either` (handle errors and error messages), `Task` (composable async computations), and more. - -### Goal - -Differently from many other functional programming packages, `fpdart` aims to introduce functional programming to every developer. For this reason, every type and method is commented and documented directly in the code. - -> **You do not need to have any previous experience with functional programming to start using `fpdart`.** - -Fpdart also provides [real-world examples](https://github.com/SandroMaglione/fpdart/tree/main/example/src) of why a type is useful and how it can be used in your application. Check out [**my website**](https://www.sandromaglione.com/) for blog posts and articles. - -### Comparison with `dartz` - -One of the major pain points of dartz has always been is [**lack of documentation**](https://github.com/spebbe/dartz/issues/36). This is a huge issue for people new to functional programming to attempt using the package. - -`dartz` was [released in 2016](https://github.com/spebbe/dartz/commits/master?after=2de2f2787430dcd4ef49485bbf8aac1f8d1ff157+279&branch=master), initially targeting Dart 1. - -`dartz` is also missing some features and types (`Reader`, `TaskEither`, and others). - -Fpdart is a rewrite based on fp-ts and cats. The main differences are: - -- Fpdart is fully documented. -- Fpdart implements higher-kinded types using [defunctionalization](https://www.cl.cam.ac.uk/~jdy22/papers/lightweight-higher-kinded-polymorphism.pdf). -- Fpdart is based on Dart 2. -- Fpdart is completely null-safe from the beginning. -- Fpdart has a richer API. -- Fpdart implements some missing types in dartz. -- Fpdart (currently) does not provide implementation for immutable collections (`ISet`, `IMap`, `IHashMap`, `AVLTree`). - -## 🤔 Roadmap - -Being documentation and stability important goals of the package, every type will go through an implementation-documentation-testing cycle before being considered as _'stable'_. - -The roadmap for types development is highlighted below (breaking changes to _'stable'_ types are to be expected in this early stages): - -1. `ReaderEither` -2. `ReaderTask` -3. `ReaderTaskEither` -4. `StateReaderTaskEither` -5. `Writer` -6. `Lens` - -*** - -The long-term goal is to provide **all the main types and typeclasses available in other functional programming languages and packages**. All the types should be **completely** documented and fully tested. - -A well explained documentation is the key for the long-term success of the project. **Any article, blog post, or contribution is welcome**. - -In general, **any contribution or feedback is welcome** (and encouraged!). - -## 📃 Versioning - -- **v0.5.0** - 4 March 2023 -- v0.4.1 - 25 February 2023 -- **v0.4.0** - 16 December 2022 -- **v0.3.0** - 11 October 2022 -- **v0.2.0** - 16 July 2022 -- **v0.1.0** - 17 June 2022 -- v0.0.14 - 31 January 2022 -- v0.0.13 - 26 January 2022 -- v0.0.12 - 24 October 2021 -- v0.0.11 - 22 September 2021 -- v0.0.10 - 13 August 2021 -- v0.0.9 - 3 August 2021 -- v0.0.8 - 13 July 2021 -- v0.0.7 - 6 July 2021 -- v0.0.6 - 29 June 2021 -- v0.0.5 - 20 June 2021 -- v0.0.4 - 15 June 2021 -- v0.0.3 - 13 June 2021 -- v0.0.2 - 13 June 2021 -- v0.0.1 - 28 May 2021 - -## 😀 Support - -Currently the best way to support me would be to follow me on my [**Twitter**](https://twitter.com/SandroMaglione). - -I also have a newsletter, in which I share tutorials, guides, and code snippets about fpdart and functional programming: [**Subscribe to the Newsletter here** 📧](https://www.sandromaglione.com/newsletter) - -## 👀 License - -MIT License, see the [LICENSE.md](https://github.com/SandroMaglione/fpdart/blob/main/LICENSE) file for details. +packages/fpdart/README.md \ No newline at end of file diff --git a/example/json_serializable/lib/user.g.dart b/example/json_serializable/lib/user.g.dart deleted file mode 100644 index 8dcff79f..00000000 --- a/example/json_serializable/lib/user.g.dart +++ /dev/null @@ -1,26 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'user.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -User _$UserFromJson(Map json) => User( - id: Option.fromJson(json['id'], (value) => value as int), - birthDate: Option.fromJson( - json['birthDate'], (value) => DateTime.parse(value as String)), - phone: Option.fromJson(json['phone'], (value) => value as String), - ); - -Map _$UserToJson(User instance) => { - 'id': instance.id.toJson( - (value) => value, - ), - 'birthDate': instance.birthDate.toJson( - (value) => value.toIso8601String(), - ), - 'phone': instance.phone.toJson( - (value) => value, - ), - }; diff --git a/example/json_serializable/pubspec.lock b/example/json_serializable/pubspec.lock deleted file mode 100644 index 307f4395..00000000 --- a/example/json_serializable/pubspec.lock +++ /dev/null @@ -1,540 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: e440ac42679dfc04bbbefb58ed225c994bc7e07fccc8a68ec7d3631a127e5da9 - url: "https://pub.dev" - source: hosted - version: "54.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: "2c2e3721ee9fb36de92faa060f3480c81b23e904352b087e5c64224b1a044427" - url: "https://pub.dev" - source: hosted - version: "5.6.0" - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" - source: hosted - version: "2.10.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - build: - dependency: transitive - description: - name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - build_config: - dependency: transitive - description: - name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" - source: hosted - version: "1.1.1" - build_daemon: - dependency: transitive - description: - name: build_daemon - sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - build_runner: - dependency: "direct dev" - description: - name: build_runner - sha256: a3335cae313ea41f193e5637f98185e5cb37b3fde2c5c4654ac546b8164e59ac - url: "https://pub.dev" - source: hosted - version: "2.4.0" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" - url: "https://pub.dev" - source: hosted - version: "7.2.7" - built_collection: - dependency: transitive - description: - name: built_collection - sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" - source: hosted - version: "5.1.1" - built_value: - dependency: transitive - description: - name: built_value - sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725" - url: "https://pub.dev" - source: hosted - version: "8.4.3" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - code_builder: - dependency: transitive - description: - name: code_builder - sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe" - url: "https://pub.dev" - source: hosted - version: "4.4.0" - collection: - dependency: transitive - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - coverage: - dependency: transitive - description: - name: coverage - sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" - url: "https://pub.dev" - source: hosted - version: "1.6.3" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - dart_style: - dependency: transitive - description: - name: dart_style - sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4" - url: "https://pub.dev" - source: hosted - version: "2.2.4" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - fpdart: - dependency: "direct main" - description: - path: "../.." - relative: true - source: path - version: "0.6.0-dev.1" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - glob: - dependency: transitive - description: - name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - graphs: - dependency: transitive - description: - name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - io: - dependency: transitive - description: - name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - json_annotation: - dependency: "direct dev" - description: - name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 - url: "https://pub.dev" - source: hosted - version: "4.8.0" - json_serializable: - dependency: "direct main" - description: - name: json_serializable - sha256: dadc08bd61f72559f938dd08ec20dbfec6c709bba83515085ea943d2078d187a - url: "https://pub.dev" - source: hosted - version: "6.6.1" - lint: - dependency: "direct dev" - description: - name: lint - sha256: "3e9343b1cededcfb1e8b40d0dbd3592b7a1c6c0121545663a991433390c2bc97" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - logging: - dependency: transitive - description: - name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8 - url: "https://pub.dev" - source: hosted - version: "0.12.14" - meta: - dependency: transitive - description: - name: meta - sha256: "12307e7f0605ce3da64cf0db90e5fcab0869f3ca03f76be6bb2991ce0a55e82b" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - mime: - dependency: transitive - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a" - url: "https://pub.dev" - source: hosted - version: "1.2.1" - shelf: - dependency: transitive - description: - name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c - url: "https://pub.dev" - source: hosted - version: "1.4.0" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 - url: "https://pub.dev" - source: hosted - version: "3.0.1" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c - url: "https://pub.dev" - source: hosted - version: "1.1.1" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 - url: "https://pub.dev" - source: hosted - version: "1.0.3" - source_gen: - dependency: transitive - description: - name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 - url: "https://pub.dev" - source: hosted - version: "1.2.7" - source_helper: - dependency: transitive - description: - name: source_helper - sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" - url: "https://pub.dev" - source: hosted - version: "0.10.12" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test: - dependency: "direct dev" - description: - name: test - sha256: "5301f54eb6fe945daa99bc8df6ece3f88b5ceaa6f996f250efdaaf63e22886be" - url: "https://pub.dev" - source: hosted - version: "1.23.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "6182294da5abf431177fccc1ee02401f6df30f766bc6130a0852c6b6d7ee6b2d" - url: "https://pub.dev" - source: hosted - version: "0.4.18" - test_core: - dependency: transitive - description: - name: test_core - sha256: d2e9240594b409565524802b84b7b39341da36dd6fd8e1660b53ad928ec3e9af - url: "https://pub.dev" - source: hosted - version: "0.4.24" - timing: - dependency: transitive - description: - name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: f24bfb5ea0b015205e583dda73d67de44785d583ad0889929deaff3a32359ff5 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b - url: "https://pub.dev" - source: hosted - version: "2.3.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" - source: hosted - version: "3.1.1" -sdks: - dart: ">=3.0.0-134.0.dev <4.0.0" diff --git a/example/managing_imports/pubspec.lock b/example/managing_imports/pubspec.lock deleted file mode 100644 index 1280eaeb..00000000 --- a/example/managing_imports/pubspec.lock +++ /dev/null @@ -1,396 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: e440ac42679dfc04bbbefb58ed225c994bc7e07fccc8a68ec7d3631a127e5da9 - url: "https://pub.dev" - source: hosted - version: "54.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: "2c2e3721ee9fb36de92faa060f3480c81b23e904352b087e5c64224b1a044427" - url: "https://pub.dev" - source: hosted - version: "5.6.0" - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" - source: hosted - version: "2.10.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - collection: - dependency: transitive - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - coverage: - dependency: transitive - description: - name: coverage - sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" - url: "https://pub.dev" - source: hosted - version: "1.6.3" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - fpdart: - dependency: "direct main" - description: - path: "../.." - relative: true - source: path - version: "0.6.0-dev.1" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - glob: - dependency: transitive - description: - name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - io: - dependency: transitive - description: - name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - lints: - dependency: "direct dev" - description: - name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - logging: - dependency: transitive - description: - name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8 - url: "https://pub.dev" - source: hosted - version: "0.12.14" - meta: - dependency: transitive - description: - name: meta - sha256: "12307e7f0605ce3da64cf0db90e5fcab0869f3ca03f76be6bb2991ce0a55e82b" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - mime: - dependency: transitive - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - shelf: - dependency: transitive - description: - name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c - url: "https://pub.dev" - source: hosted - version: "1.4.0" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 - url: "https://pub.dev" - source: hosted - version: "3.0.1" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c - url: "https://pub.dev" - source: hosted - version: "1.1.1" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 - url: "https://pub.dev" - source: hosted - version: "1.0.3" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" - url: "https://pub.dev" - source: hosted - version: "0.10.12" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test: - dependency: "direct main" - description: - name: test - sha256: "5301f54eb6fe945daa99bc8df6ece3f88b5ceaa6f996f250efdaaf63e22886be" - url: "https://pub.dev" - source: hosted - version: "1.23.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "6182294da5abf431177fccc1ee02401f6df30f766bc6130a0852c6b6d7ee6b2d" - url: "https://pub.dev" - source: hosted - version: "0.4.18" - test_core: - dependency: transitive - description: - name: test_core - sha256: d2e9240594b409565524802b84b7b39341da36dd6fd8e1660b53ad928ec3e9af - url: "https://pub.dev" - source: hosted - version: "0.4.24" - tuple: - dependency: "direct main" - description: - name: tuple - sha256: "0ea99cd2f9352b2586583ab2ce6489d1f95a5f6de6fb9492faaf97ae2060f0aa" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - very_good_analysis: - dependency: "direct main" - description: - name: very_good_analysis - sha256: ebc48c51db35beeeec8c414e32f7bd78e612bd7f5992ccb0d46e19edaeb40b08 - url: "https://pub.dev" - source: hosted - version: "4.0.0+1" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: f24bfb5ea0b015205e583dda73d67de44785d583ad0889929deaff3a32359ff5 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b - url: "https://pub.dev" - source: hosted - version: "2.3.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" - source: hosted - version: "3.1.1" -sdks: - dart: ">=2.19.0 <4.0.0" diff --git a/example/open_meteo_api/pubspec.lock b/example/open_meteo_api/pubspec.lock deleted file mode 100644 index a40016ea..00000000 --- a/example/open_meteo_api/pubspec.lock +++ /dev/null @@ -1,556 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: e440ac42679dfc04bbbefb58ed225c994bc7e07fccc8a68ec7d3631a127e5da9 - url: "https://pub.dev" - source: hosted - version: "54.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: "2c2e3721ee9fb36de92faa060f3480c81b23e904352b087e5c64224b1a044427" - url: "https://pub.dev" - source: hosted - version: "5.6.0" - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" - source: hosted - version: "2.10.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - build: - dependency: transitive - description: - name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - build_config: - dependency: transitive - description: - name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" - source: hosted - version: "1.1.1" - build_daemon: - dependency: transitive - description: - name: build_daemon - sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - build_runner: - dependency: "direct dev" - description: - name: build_runner - sha256: a3335cae313ea41f193e5637f98185e5cb37b3fde2c5c4654ac546b8164e59ac - url: "https://pub.dev" - source: hosted - version: "2.4.0" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" - url: "https://pub.dev" - source: hosted - version: "7.2.7" - built_collection: - dependency: transitive - description: - name: built_collection - sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" - source: hosted - version: "5.1.1" - built_value: - dependency: transitive - description: - name: built_value - sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725" - url: "https://pub.dev" - source: hosted - version: "8.4.3" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - code_builder: - dependency: transitive - description: - name: code_builder - sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe" - url: "https://pub.dev" - source: hosted - version: "4.4.0" - collection: - dependency: transitive - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - coverage: - dependency: transitive - description: - name: coverage - sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" - url: "https://pub.dev" - source: hosted - version: "1.6.3" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - dart_style: - dependency: transitive - description: - name: dart_style - sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4" - url: "https://pub.dev" - source: hosted - version: "2.2.4" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - fpdart: - dependency: "direct main" - description: - path: "../.." - relative: true - source: path - version: "0.6.0-dev.1" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - glob: - dependency: transitive - description: - name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - graphs: - dependency: transitive - description: - name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - http: - dependency: "direct main" - description: - name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" - url: "https://pub.dev" - source: hosted - version: "0.13.5" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - io: - dependency: transitive - description: - name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - json_annotation: - dependency: "direct main" - description: - name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 - url: "https://pub.dev" - source: hosted - version: "4.8.0" - json_serializable: - dependency: "direct dev" - description: - name: json_serializable - sha256: dadc08bd61f72559f938dd08ec20dbfec6c709bba83515085ea943d2078d187a - url: "https://pub.dev" - source: hosted - version: "6.6.1" - logging: - dependency: transitive - description: - name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8 - url: "https://pub.dev" - source: hosted - version: "0.12.14" - meta: - dependency: transitive - description: - name: meta - sha256: "12307e7f0605ce3da64cf0db90e5fcab0869f3ca03f76be6bb2991ce0a55e82b" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - mime: - dependency: transitive - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - mocktail: - dependency: "direct dev" - description: - name: mocktail - sha256: "80a996cd9a69284b3dc521ce185ffe9150cde69767c2d3a0720147d93c0cef53" - url: "https://pub.dev" - source: hosted - version: "0.3.0" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a" - url: "https://pub.dev" - source: hosted - version: "1.2.1" - shelf: - dependency: transitive - description: - name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c - url: "https://pub.dev" - source: hosted - version: "1.4.0" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 - url: "https://pub.dev" - source: hosted - version: "3.0.1" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c - url: "https://pub.dev" - source: hosted - version: "1.1.1" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 - url: "https://pub.dev" - source: hosted - version: "1.0.3" - source_gen: - dependency: transitive - description: - name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 - url: "https://pub.dev" - source: hosted - version: "1.2.7" - source_helper: - dependency: transitive - description: - name: source_helper - sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" - url: "https://pub.dev" - source: hosted - version: "0.10.12" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test: - dependency: "direct dev" - description: - name: test - sha256: "5301f54eb6fe945daa99bc8df6ece3f88b5ceaa6f996f250efdaaf63e22886be" - url: "https://pub.dev" - source: hosted - version: "1.23.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "6182294da5abf431177fccc1ee02401f6df30f766bc6130a0852c6b6d7ee6b2d" - url: "https://pub.dev" - source: hosted - version: "0.4.18" - test_core: - dependency: transitive - description: - name: test_core - sha256: d2e9240594b409565524802b84b7b39341da36dd6fd8e1660b53ad928ec3e9af - url: "https://pub.dev" - source: hosted - version: "0.4.24" - timing: - dependency: transitive - description: - name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - very_good_analysis: - dependency: "direct dev" - description: - name: very_good_analysis - sha256: ebc48c51db35beeeec8c414e32f7bd78e612bd7f5992ccb0d46e19edaeb40b08 - url: "https://pub.dev" - source: hosted - version: "4.0.0+1" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: f24bfb5ea0b015205e583dda73d67de44785d583ad0889929deaff3a32359ff5 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b - url: "https://pub.dev" - source: hosted - version: "2.3.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" - source: hosted - version: "3.1.1" -sdks: - dart: ">=3.0.0-134.0.dev <4.0.0" diff --git a/example/pokeapi_functional/.metadata b/example/pokeapi_functional/.metadata deleted file mode 100644 index 56bfc2c4..00000000 --- a/example/pokeapi_functional/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled and should not be manually edited. - -version: - revision: f4abaa0735eba4dfd8f33f73363911d63931fe03 - channel: stable - -project_type: app diff --git a/example/pokeapi_functional/pubspec.lock b/example/pokeapi_functional/pubspec.lock deleted file mode 100644 index bf14f02a..00000000 --- a/example/pokeapi_functional/pubspec.lock +++ /dev/null @@ -1,652 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: "98d1d33ed129b372846e862de23a0fc365745f4d7b5e786ce667fcbbb7ac5c07" - url: "https://pub.dev" - source: hosted - version: "55.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: "881348aed9b0b425882c97732629a6a31093c8ff20fc4b3b03fb9d3d50a3a126" - url: "https://pub.dev" - source: hosted - version: "5.7.1" - analyzer_plugin: - dependency: transitive - description: - name: analyzer_plugin - sha256: c1d5f167683de03d5ab6c3b53fc9aeefc5d59476e7810ba7bbddff50c6f4392d - url: "https://pub.dev" - source: hosted - version: "0.11.2" - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - build: - dependency: transitive - description: - name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - build_config: - dependency: transitive - description: - name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" - source: hosted - version: "1.1.1" - build_daemon: - dependency: transitive - description: - name: build_daemon - sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - build_runner: - dependency: "direct dev" - description: - name: build_runner - sha256: "7b25ba738bc74c94187cebeb9cc29d38a32e8279ce950eabd821d3b454a5f03d" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" - url: "https://pub.dev" - source: hosted - version: "7.2.7" - built_collection: - dependency: transitive - description: - name: built_collection - sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" - source: hosted - version: "5.1.1" - built_value: - dependency: transitive - description: - name: built_value - sha256: "169565c8ad06adb760c3645bf71f00bff161b00002cace266cad42c5d22a7725" - url: "https://pub.dev" - source: hosted - version: "8.4.3" - characters: - dependency: transitive - description: - name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - ci: - dependency: transitive - description: - name: ci - sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" - url: "https://pub.dev" - source: hosted - version: "0.1.0" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7 - url: "https://pub.dev" - source: hosted - version: "0.4.0" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - code_builder: - dependency: transitive - description: - name: code_builder - sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe" - url: "https://pub.dev" - source: hosted - version: "4.4.0" - collection: - dependency: transitive - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - custom_lint: - dependency: transitive - description: - name: custom_lint - sha256: e87176016465263daf10c209df1f50a52e9e46e7612fab7462da1e6d984638f6 - url: "https://pub.dev" - source: hosted - version: "0.3.4" - custom_lint_core: - dependency: transitive - description: - name: custom_lint_core - sha256: f42f688bc26bdf4c081e011ba27a00439f17c20d9aeca4312f8022e577f8363f - url: "https://pub.dev" - source: hosted - version: "0.3.4" - dart_style: - dependency: transitive - description: - name: dart_style - sha256: "5be16bf1707658e4c03078d4a9b90208ded217fb02c163e207d334082412f2fb" - url: "https://pub.dev" - source: hosted - version: "2.2.5" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_hooks: - dependency: "direct main" - description: - name: flutter_hooks - sha256: "6a126f703b89499818d73305e4ce1e3de33b4ae1c5512e3b8eab4b986f46774c" - url: "https://pub.dev" - source: hosted - version: "0.18.6" - flutter_riverpod: - dependency: transitive - description: - name: flutter_riverpod - sha256: b83ac5827baadefd331ea1d85110f34645827ea234ccabf53a655f41901a9bf4 - url: "https://pub.dev" - source: hosted - version: "2.3.6" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - fpdart: - dependency: "direct main" - description: - path: "../.." - relative: true - source: path - version: "0.6.0-dev.1" - freezed: - dependency: "direct main" - description: - name: freezed - sha256: e819441678f1679b719008ff2ff0ef045d66eed9f9ec81166ca0d9b02a187454 - url: "https://pub.dev" - source: hosted - version: "2.3.2" - freezed_annotation: - dependency: "direct dev" - description: - name: freezed_annotation - sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - glob: - dependency: transitive - description: - name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - graphs: - dependency: transitive - description: - name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - hooks_riverpod: - dependency: "direct main" - description: - name: hooks_riverpod - sha256: be68cf7653fcab798500f9047ac58c3f109287a1595012412f4a0d654a9bb9c5 - url: "https://pub.dev" - source: hosted - version: "2.3.6" - http: - dependency: "direct main" - description: - name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" - url: "https://pub.dev" - source: hosted - version: "0.13.5" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - io: - dependency: transitive - description: - name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - json_annotation: - dependency: "direct main" - description: - name: json_annotation - sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 - url: "https://pub.dev" - source: hosted - version: "4.8.0" - json_serializable: - dependency: "direct dev" - description: - name: json_serializable - sha256: dadc08bd61f72559f938dd08ec20dbfec6c709bba83515085ea943d2078d187a - url: "https://pub.dev" - source: hosted - version: "6.6.1" - logging: - dependency: transitive - description: - name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" - url: "https://pub.dev" - source: hosted - version: "0.12.15" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: "586678f20e112219ed0f73215f01bcdf1d769824ba2ebae45ad918a9bfde9bdb" - url: "https://pub.dev" - source: hosted - version: "0.3.0" - meta: - dependency: transitive - description: - name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - mime: - dependency: transitive - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: ec85d7d55339d85f44ec2b682a82fea340071e8978257e5a43e69f79e98ef50c - url: "https://pub.dev" - source: hosted - version: "1.2.2" - riverpod: - dependency: transitive - description: - name: riverpod - sha256: "80e48bebc83010d5e67a11c9514af6b44bbac1ec77b4333c8ea65dbc79e2d8ef" - url: "https://pub.dev" - source: hosted - version: "2.3.6" - riverpod_analyzer_utils: - dependency: transitive - description: - name: riverpod_analyzer_utils - sha256: "5992363c28b20b5fb0583e577e1c203eeae2f35536091d1146fdee97385c5dcf" - url: "https://pub.dev" - source: hosted - version: "0.3.0" - riverpod_annotation: - dependency: "direct main" - description: - name: riverpod_annotation - sha256: cedd6a54b6f5764ffd5c05df57b6676bfc8c01978e14ee60a2c16891038820fe - url: "https://pub.dev" - source: hosted - version: "2.1.1" - riverpod_generator: - dependency: "direct dev" - description: - name: riverpod_generator - sha256: bdb3e90d1135a13bddfb5ecc917713383a375a5e3daeff11f99995c802134344 - url: "https://pub.dev" - source: hosted - version: "2.2.1" - rxdart: - dependency: transitive - description: - name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" - source: hosted - version: "0.27.7" - shelf: - dependency: transitive - description: - name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c - url: "https://pub.dev" - source: hosted - version: "1.4.0" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 - url: "https://pub.dev" - source: hosted - version: "1.0.3" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_gen: - dependency: transitive - description: - name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 - url: "https://pub.dev" - source: hosted - version: "1.2.7" - source_helper: - dependency: transitive - description: - name: source_helper - sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - source_span: - dependency: transitive - description: - name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" - source: hosted - version: "1.10.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - state_notifier: - dependency: transitive - description: - name: state_notifier - sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289" - url: "https://pub.dev" - source: hosted - version: "0.7.2+1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: daadc9baabec998b062c9091525aa95786508b1c48e9c30f1f891b8bf6ff2e64 - url: "https://pub.dev" - source: hosted - version: "0.5.2" - timing: - dependency: transitive - description: - name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - uuid: - dependency: transitive - description: - name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" - source: hosted - version: "3.0.7" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - watcher: - dependency: transitive - description: - name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b - url: "https://pub.dev" - source: hosted - version: "2.3.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" - source: hosted - version: "3.1.1" -sdks: - dart: ">=3.0.0-134.0.dev <4.0.0" - flutter: ">=3.0.0" diff --git a/example/read_write_file/pubspec.lock b/example/read_write_file/pubspec.lock deleted file mode 100644 index bdc7e1e8..00000000 --- a/example/read_write_file/pubspec.lock +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - fpdart: - dependency: "direct main" - description: - path: "../.." - relative: true - source: path - version: "0.6.0-dev.1" - lint: - dependency: "direct dev" - description: - name: lint - sha256: "4a539aa34ec5721a2c7574ae2ca0336738ea4adc2a34887d54b7596310b33c85" - url: "https://pub.dev" - source: hosted - version: "1.10.0" -sdks: - dart: ">=2.17.0 <4.0.0" diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..0f6e52ac --- /dev/null +++ b/examples/README.md @@ -0,0 +1,2 @@ +# `fpdart` example projects +This folder contains some real world examples of apps using `fpdart`. \ No newline at end of file diff --git a/examples/json_serializable/.gitattributes b/examples/json_serializable/.gitattributes new file mode 100644 index 00000000..88694901 --- /dev/null +++ b/examples/json_serializable/.gitattributes @@ -0,0 +1 @@ +*.g.dart linguist-generated=true diff --git a/examples/json_serializable/.gitignore b/examples/json_serializable/.gitignore new file mode 100644 index 00000000..570e1df8 --- /dev/null +++ b/examples/json_serializable/.gitignore @@ -0,0 +1,7 @@ +.dart_tool/ +.packages +pubspec.lock + +# Generated files +**.g.dart +.idea/ \ No newline at end of file diff --git a/example/json_serializable/lib/main.dart b/examples/json_serializable/lib/main.dart similarity index 100% rename from example/json_serializable/lib/main.dart rename to examples/json_serializable/lib/main.dart diff --git a/example/json_serializable/lib/user.dart b/examples/json_serializable/lib/user.dart similarity index 100% rename from example/json_serializable/lib/user.dart rename to examples/json_serializable/lib/user.dart diff --git a/example/json_serializable/pubspec.yaml b/examples/json_serializable/pubspec.yaml similarity index 83% rename from example/json_serializable/pubspec.yaml rename to examples/json_serializable/pubspec.yaml index 96f79033..2a1bfdb7 100644 --- a/example/json_serializable/pubspec.yaml +++ b/examples/json_serializable/pubspec.yaml @@ -7,15 +7,15 @@ description: Example of using json_serializable with fpdart types. author: Maglione Sandro environment: - sdk: '>=2.13.0 <3.0.0' + sdk: ">=2.13.0 <3.0.0" dependencies: json_serializable: ^6.6.1 fpdart: - path: ../../. - + path: ../../packages/fpdart + dev_dependencies: test: ^1.17.5 lint: ^2.0.1 json_annotation: ^4.1.0 - build_runner: ^2.0.6 \ No newline at end of file + build_runner: ^2.0.6 diff --git a/example/json_serializable/test/user_test.dart b/examples/json_serializable/test/user_test.dart similarity index 100% rename from example/json_serializable/test/user_test.dart rename to examples/json_serializable/test/user_test.dart diff --git a/example/managing_imports/.gitignore b/examples/managing_imports/.gitignore similarity index 89% rename from example/managing_imports/.gitignore rename to examples/managing_imports/.gitignore index 3c8a1572..a2c86b7d 100644 --- a/example/managing_imports/.gitignore +++ b/examples/managing_imports/.gitignore @@ -1,6 +1,7 @@ # Files and directories created by pub. .dart_tool/ .packages +pubspec.lock # Conventional directory for build output. build/ diff --git a/example/managing_imports/README.md b/examples/managing_imports/README.md similarity index 100% rename from example/managing_imports/README.md rename to examples/managing_imports/README.md diff --git a/example/managing_imports/analysis_options.yaml b/examples/managing_imports/analysis_options.yaml similarity index 100% rename from example/managing_imports/analysis_options.yaml rename to examples/managing_imports/analysis_options.yaml diff --git a/example/managing_imports/bin/managing_imports.dart b/examples/managing_imports/bin/managing_imports.dart similarity index 100% rename from example/managing_imports/bin/managing_imports.dart rename to examples/managing_imports/bin/managing_imports.dart diff --git a/example/managing_imports/lib/functional.dart b/examples/managing_imports/lib/functional.dart similarity index 100% rename from example/managing_imports/lib/functional.dart rename to examples/managing_imports/lib/functional.dart diff --git a/example/managing_imports/pubspec.yaml b/examples/managing_imports/pubspec.yaml similarity index 87% rename from example/managing_imports/pubspec.yaml rename to examples/managing_imports/pubspec.yaml index 4ebb25d2..23652282 100644 --- a/example/managing_imports/pubspec.yaml +++ b/examples/managing_imports/pubspec.yaml @@ -8,7 +8,7 @@ environment: dependencies: fpdart: - path: ../.. + path: ../../packages/fpdart test: tuple: very_good_analysis: diff --git a/examples/open_meteo_api/.gitignore b/examples/open_meteo_api/.gitignore new file mode 100644 index 00000000..570e1df8 --- /dev/null +++ b/examples/open_meteo_api/.gitignore @@ -0,0 +1,7 @@ +.dart_tool/ +.packages +pubspec.lock + +# Generated files +**.g.dart +.idea/ \ No newline at end of file diff --git a/example/open_meteo_api/README.md b/examples/open_meteo_api/README.md similarity index 100% rename from example/open_meteo_api/README.md rename to examples/open_meteo_api/README.md diff --git a/example/open_meteo_api/analysis_options.yaml b/examples/open_meteo_api/analysis_options.yaml similarity index 100% rename from example/open_meteo_api/analysis_options.yaml rename to examples/open_meteo_api/analysis_options.yaml diff --git a/example/open_meteo_api/build.yaml b/examples/open_meteo_api/build.yaml similarity index 100% rename from example/open_meteo_api/build.yaml rename to examples/open_meteo_api/build.yaml diff --git a/example/open_meteo_api/lib/open_meteo_api.dart b/examples/open_meteo_api/lib/open_meteo_api.dart similarity index 100% rename from example/open_meteo_api/lib/open_meteo_api.dart rename to examples/open_meteo_api/lib/open_meteo_api.dart diff --git a/example/open_meteo_api/lib/src/fpdart/location_failure.dart b/examples/open_meteo_api/lib/src/fpdart/location_failure.dart similarity index 100% rename from example/open_meteo_api/lib/src/fpdart/location_failure.dart rename to examples/open_meteo_api/lib/src/fpdart/location_failure.dart diff --git a/example/open_meteo_api/lib/src/fpdart/open_meteo_api_client_fpdart.dart b/examples/open_meteo_api/lib/src/fpdart/open_meteo_api_client_fpdart.dart similarity index 100% rename from example/open_meteo_api/lib/src/fpdart/open_meteo_api_client_fpdart.dart rename to examples/open_meteo_api/lib/src/fpdart/open_meteo_api_client_fpdart.dart diff --git a/example/open_meteo_api/lib/src/fpdart/weather_failure.dart b/examples/open_meteo_api/lib/src/fpdart/weather_failure.dart similarity index 100% rename from example/open_meteo_api/lib/src/fpdart/weather_failure.dart rename to examples/open_meteo_api/lib/src/fpdart/weather_failure.dart diff --git a/example/open_meteo_api/lib/src/models/location.dart b/examples/open_meteo_api/lib/src/models/location.dart similarity index 100% rename from example/open_meteo_api/lib/src/models/location.dart rename to examples/open_meteo_api/lib/src/models/location.dart diff --git a/example/open_meteo_api/lib/src/models/models.dart b/examples/open_meteo_api/lib/src/models/models.dart similarity index 100% rename from example/open_meteo_api/lib/src/models/models.dart rename to examples/open_meteo_api/lib/src/models/models.dart diff --git a/example/open_meteo_api/lib/src/models/weather.dart b/examples/open_meteo_api/lib/src/models/weather.dart similarity index 100% rename from example/open_meteo_api/lib/src/models/weather.dart rename to examples/open_meteo_api/lib/src/models/weather.dart diff --git a/example/open_meteo_api/lib/src/open_meteo_api_client.dart b/examples/open_meteo_api/lib/src/open_meteo_api_client.dart similarity index 100% rename from example/open_meteo_api/lib/src/open_meteo_api_client.dart rename to examples/open_meteo_api/lib/src/open_meteo_api_client.dart diff --git a/example/open_meteo_api/pubspec.yaml b/examples/open_meteo_api/pubspec.yaml similarity index 91% rename from example/open_meteo_api/pubspec.yaml rename to examples/open_meteo_api/pubspec.yaml index 0d7a0f23..0e976e85 100644 --- a/example/open_meteo_api/pubspec.yaml +++ b/examples/open_meteo_api/pubspec.yaml @@ -8,7 +8,7 @@ environment: dependencies: fpdart: - path: ../../. + path: ../../packages/fpdart http: ^0.13.0 json_annotation: ^4.6.0 diff --git a/example/open_meteo_api/test/open_meteo_api_client_test.dart b/examples/open_meteo_api/test/open_meteo_api_client_test.dart similarity index 100% rename from example/open_meteo_api/test/open_meteo_api_client_test.dart rename to examples/open_meteo_api/test/open_meteo_api_client_test.dart diff --git a/example/open_meteo_api/test/open_meteo_api_client_test_fpdart.dart b/examples/open_meteo_api/test/open_meteo_api_client_test_fpdart.dart similarity index 100% rename from example/open_meteo_api/test/open_meteo_api_client_test_fpdart.dart rename to examples/open_meteo_api/test/open_meteo_api_client_test_fpdart.dart diff --git a/.gitattributes b/examples/pokeapi_functional/.gitattributes similarity index 100% rename from .gitattributes rename to examples/pokeapi_functional/.gitattributes diff --git a/example/pokeapi_functional/.gitignore b/examples/pokeapi_functional/.gitignore similarity index 96% rename from example/pokeapi_functional/.gitignore rename to examples/pokeapi_functional/.gitignore index 0fa6b675..d207f7e1 100644 --- a/example/pokeapi_functional/.gitignore +++ b/examples/pokeapi_functional/.gitignore @@ -27,9 +27,11 @@ .flutter-plugins .flutter-plugins-dependencies .packages +.metadata .pub-cache/ .pub/ /build/ +pubspec.lock # Web related lib/generated_plugin_registrant.dart diff --git a/example/pokeapi_functional/README.md b/examples/pokeapi_functional/README.md similarity index 100% rename from example/pokeapi_functional/README.md rename to examples/pokeapi_functional/README.md diff --git a/example/pokeapi_functional/android/.gitignore b/examples/pokeapi_functional/android/.gitignore similarity index 100% rename from example/pokeapi_functional/android/.gitignore rename to examples/pokeapi_functional/android/.gitignore diff --git a/example/pokeapi_functional/android/app/build.gradle b/examples/pokeapi_functional/android/app/build.gradle similarity index 100% rename from example/pokeapi_functional/android/app/build.gradle rename to examples/pokeapi_functional/android/app/build.gradle diff --git a/example/pokeapi_functional/android/app/src/debug/AndroidManifest.xml b/examples/pokeapi_functional/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/debug/AndroidManifest.xml rename to examples/pokeapi_functional/android/app/src/debug/AndroidManifest.xml diff --git a/example/pokeapi_functional/android/app/src/main/AndroidManifest.xml b/examples/pokeapi_functional/android/app/src/main/AndroidManifest.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/main/AndroidManifest.xml rename to examples/pokeapi_functional/android/app/src/main/AndroidManifest.xml diff --git a/example/pokeapi_functional/android/app/src/main/kotlin/com/sandromaglione/fpdart/pokeapi/pokeapi_functional/MainActivity.kt b/examples/pokeapi_functional/android/app/src/main/kotlin/com/sandromaglione/fpdart/pokeapi/pokeapi_functional/MainActivity.kt similarity index 100% rename from example/pokeapi_functional/android/app/src/main/kotlin/com/sandromaglione/fpdart/pokeapi/pokeapi_functional/MainActivity.kt rename to examples/pokeapi_functional/android/app/src/main/kotlin/com/sandromaglione/fpdart/pokeapi/pokeapi_functional/MainActivity.kt diff --git a/example/pokeapi_functional/android/app/src/main/res/drawable-v21/launch_background.xml b/examples/pokeapi_functional/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/drawable-v21/launch_background.xml rename to examples/pokeapi_functional/android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/example/pokeapi_functional/android/app/src/main/res/drawable/launch_background.xml b/examples/pokeapi_functional/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/drawable/launch_background.xml rename to examples/pokeapi_functional/android/app/src/main/res/drawable/launch_background.xml diff --git a/example/pokeapi_functional/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/examples/pokeapi_functional/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to examples/pokeapi_functional/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/example/pokeapi_functional/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/examples/pokeapi_functional/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to examples/pokeapi_functional/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/example/pokeapi_functional/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/examples/pokeapi_functional/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to examples/pokeapi_functional/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/example/pokeapi_functional/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/examples/pokeapi_functional/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to examples/pokeapi_functional/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/example/pokeapi_functional/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/examples/pokeapi_functional/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to examples/pokeapi_functional/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/example/pokeapi_functional/android/app/src/main/res/values-night/styles.xml b/examples/pokeapi_functional/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/values-night/styles.xml rename to examples/pokeapi_functional/android/app/src/main/res/values-night/styles.xml diff --git a/example/pokeapi_functional/android/app/src/main/res/values/styles.xml b/examples/pokeapi_functional/android/app/src/main/res/values/styles.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/main/res/values/styles.xml rename to examples/pokeapi_functional/android/app/src/main/res/values/styles.xml diff --git a/example/pokeapi_functional/android/app/src/profile/AndroidManifest.xml b/examples/pokeapi_functional/android/app/src/profile/AndroidManifest.xml similarity index 100% rename from example/pokeapi_functional/android/app/src/profile/AndroidManifest.xml rename to examples/pokeapi_functional/android/app/src/profile/AndroidManifest.xml diff --git a/example/pokeapi_functional/android/build.gradle b/examples/pokeapi_functional/android/build.gradle similarity index 100% rename from example/pokeapi_functional/android/build.gradle rename to examples/pokeapi_functional/android/build.gradle diff --git a/example/pokeapi_functional/android/gradle.properties b/examples/pokeapi_functional/android/gradle.properties similarity index 100% rename from example/pokeapi_functional/android/gradle.properties rename to examples/pokeapi_functional/android/gradle.properties diff --git a/example/pokeapi_functional/android/gradle/wrapper/gradle-wrapper.properties b/examples/pokeapi_functional/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from example/pokeapi_functional/android/gradle/wrapper/gradle-wrapper.properties rename to examples/pokeapi_functional/android/gradle/wrapper/gradle-wrapper.properties diff --git a/example/pokeapi_functional/android/settings.gradle b/examples/pokeapi_functional/android/settings.gradle similarity index 100% rename from example/pokeapi_functional/android/settings.gradle rename to examples/pokeapi_functional/android/settings.gradle diff --git a/example/pokeapi_functional/ios/.gitignore b/examples/pokeapi_functional/ios/.gitignore similarity index 100% rename from example/pokeapi_functional/ios/.gitignore rename to examples/pokeapi_functional/ios/.gitignore diff --git a/example/pokeapi_functional/ios/Flutter/AppFrameworkInfo.plist b/examples/pokeapi_functional/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from example/pokeapi_functional/ios/Flutter/AppFrameworkInfo.plist rename to examples/pokeapi_functional/ios/Flutter/AppFrameworkInfo.plist diff --git a/example/pokeapi_functional/ios/Flutter/Debug.xcconfig b/examples/pokeapi_functional/ios/Flutter/Debug.xcconfig similarity index 100% rename from example/pokeapi_functional/ios/Flutter/Debug.xcconfig rename to examples/pokeapi_functional/ios/Flutter/Debug.xcconfig diff --git a/example/pokeapi_functional/ios/Flutter/Release.xcconfig b/examples/pokeapi_functional/ios/Flutter/Release.xcconfig similarity index 100% rename from example/pokeapi_functional/ios/Flutter/Release.xcconfig rename to examples/pokeapi_functional/ios/Flutter/Release.xcconfig diff --git a/example/pokeapi_functional/ios/Runner.xcodeproj/project.pbxproj b/examples/pokeapi_functional/ios/Runner.xcodeproj/project.pbxproj similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcodeproj/project.pbxproj rename to examples/pokeapi_functional/ios/Runner.xcodeproj/project.pbxproj diff --git a/example/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to examples/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/example/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to examples/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to examples/pokeapi_functional/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/example/pokeapi_functional/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/examples/pokeapi_functional/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to examples/pokeapi_functional/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/example/pokeapi_functional/ios/Runner.xcworkspace/contents.xcworkspacedata b/examples/pokeapi_functional/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcworkspace/contents.xcworkspacedata rename to examples/pokeapi_functional/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/example/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/examples/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to examples/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/examples/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from example/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to examples/pokeapi_functional/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/example/pokeapi_functional/ios/Runner/AppDelegate.swift b/examples/pokeapi_functional/ios/Runner/AppDelegate.swift similarity index 100% rename from example/pokeapi_functional/ios/Runner/AppDelegate.swift rename to examples/pokeapi_functional/ios/Runner/AppDelegate.swift diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from example/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to examples/pokeapi_functional/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/example/pokeapi_functional/ios/Runner/Base.lproj/LaunchScreen.storyboard b/examples/pokeapi_functional/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from example/pokeapi_functional/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to examples/pokeapi_functional/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/example/pokeapi_functional/ios/Runner/Base.lproj/Main.storyboard b/examples/pokeapi_functional/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from example/pokeapi_functional/ios/Runner/Base.lproj/Main.storyboard rename to examples/pokeapi_functional/ios/Runner/Base.lproj/Main.storyboard diff --git a/example/pokeapi_functional/ios/Runner/Info.plist b/examples/pokeapi_functional/ios/Runner/Info.plist similarity index 100% rename from example/pokeapi_functional/ios/Runner/Info.plist rename to examples/pokeapi_functional/ios/Runner/Info.plist diff --git a/example/pokeapi_functional/ios/Runner/Runner-Bridging-Header.h b/examples/pokeapi_functional/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from example/pokeapi_functional/ios/Runner/Runner-Bridging-Header.h rename to examples/pokeapi_functional/ios/Runner/Runner-Bridging-Header.h diff --git a/example/pokeapi_functional/lib/api/fetch_pokemon.dart b/examples/pokeapi_functional/lib/api/fetch_pokemon.dart similarity index 100% rename from example/pokeapi_functional/lib/api/fetch_pokemon.dart rename to examples/pokeapi_functional/lib/api/fetch_pokemon.dart diff --git a/example/pokeapi_functional/lib/constants/constants.dart b/examples/pokeapi_functional/lib/constants/constants.dart similarity index 100% rename from example/pokeapi_functional/lib/constants/constants.dart rename to examples/pokeapi_functional/lib/constants/constants.dart diff --git a/example/pokeapi_functional/lib/controllers/pokemon_provider.dart b/examples/pokeapi_functional/lib/controllers/pokemon_provider.dart similarity index 100% rename from example/pokeapi_functional/lib/controllers/pokemon_provider.dart rename to examples/pokeapi_functional/lib/controllers/pokemon_provider.dart diff --git a/example/pokeapi_functional/lib/main.dart b/examples/pokeapi_functional/lib/main.dart similarity index 100% rename from example/pokeapi_functional/lib/main.dart rename to examples/pokeapi_functional/lib/main.dart diff --git a/example/pokeapi_functional/lib/models/pokemon.dart b/examples/pokeapi_functional/lib/models/pokemon.dart similarity index 100% rename from example/pokeapi_functional/lib/models/pokemon.dart rename to examples/pokeapi_functional/lib/models/pokemon.dart diff --git a/example/pokeapi_functional/lib/models/pokemon.freezed.dart b/examples/pokeapi_functional/lib/models/pokemon.freezed.dart similarity index 100% rename from example/pokeapi_functional/lib/models/pokemon.freezed.dart rename to examples/pokeapi_functional/lib/models/pokemon.freezed.dart diff --git a/example/pokeapi_functional/lib/models/sprite.dart b/examples/pokeapi_functional/lib/models/sprite.dart similarity index 100% rename from example/pokeapi_functional/lib/models/sprite.dart rename to examples/pokeapi_functional/lib/models/sprite.dart diff --git a/example/pokeapi_functional/lib/models/sprite.freezed.dart b/examples/pokeapi_functional/lib/models/sprite.freezed.dart similarity index 100% rename from example/pokeapi_functional/lib/models/sprite.freezed.dart rename to examples/pokeapi_functional/lib/models/sprite.freezed.dart diff --git a/example/pokeapi_functional/pubspec.yaml b/examples/pokeapi_functional/pubspec.yaml similarity index 94% rename from example/pokeapi_functional/pubspec.yaml rename to examples/pokeapi_functional/pubspec.yaml index 25bb7f6c..7423846f 100644 --- a/example/pokeapi_functional/pubspec.yaml +++ b/examples/pokeapi_functional/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: flutter_hooks: ^0.18.6 freezed: ^2.3.2 fpdart: - path: ../../. + path: ../../packages/fpdart json_annotation: ^4.8.0 riverpod_annotation: ^2.1.1 diff --git a/example/pokeapi_functional/web/favicon.png b/examples/pokeapi_functional/web/favicon.png similarity index 100% rename from example/pokeapi_functional/web/favicon.png rename to examples/pokeapi_functional/web/favicon.png diff --git a/example/pokeapi_functional/web/icons/Icon-192.png b/examples/pokeapi_functional/web/icons/Icon-192.png similarity index 100% rename from example/pokeapi_functional/web/icons/Icon-192.png rename to examples/pokeapi_functional/web/icons/Icon-192.png diff --git a/example/pokeapi_functional/web/icons/Icon-512.png b/examples/pokeapi_functional/web/icons/Icon-512.png similarity index 100% rename from example/pokeapi_functional/web/icons/Icon-512.png rename to examples/pokeapi_functional/web/icons/Icon-512.png diff --git a/example/pokeapi_functional/web/index.html b/examples/pokeapi_functional/web/index.html similarity index 100% rename from example/pokeapi_functional/web/index.html rename to examples/pokeapi_functional/web/index.html diff --git a/example/pokeapi_functional/web/manifest.json b/examples/pokeapi_functional/web/manifest.json similarity index 100% rename from example/pokeapi_functional/web/manifest.json rename to examples/pokeapi_functional/web/manifest.json diff --git a/examples/read_write_file/.gitignore b/examples/read_write_file/.gitignore new file mode 100644 index 00000000..570e1df8 --- /dev/null +++ b/examples/read_write_file/.gitignore @@ -0,0 +1,7 @@ +.dart_tool/ +.packages +pubspec.lock + +# Generated files +**.g.dart +.idea/ \ No newline at end of file diff --git a/example/read_write_file/assets/source_eng.txt b/examples/read_write_file/assets/source_eng.txt similarity index 100% rename from example/read_write_file/assets/source_eng.txt rename to examples/read_write_file/assets/source_eng.txt diff --git a/example/read_write_file/assets/source_ita.txt b/examples/read_write_file/assets/source_ita.txt similarity index 100% rename from example/read_write_file/assets/source_ita.txt rename to examples/read_write_file/assets/source_ita.txt diff --git a/example/read_write_file/main.dart b/examples/read_write_file/main.dart similarity index 100% rename from example/read_write_file/main.dart rename to examples/read_write_file/main.dart diff --git a/example/read_write_file/pubspec.yaml b/examples/read_write_file/pubspec.yaml similarity index 83% rename from example/read_write_file/pubspec.yaml rename to examples/read_write_file/pubspec.yaml index fd755eb4..fbb0aae4 100644 --- a/example/read_write_file/pubspec.yaml +++ b/examples/read_write_file/pubspec.yaml @@ -7,11 +7,11 @@ description: Example of Functional programming in Dart and Flutter using fpdart. author: Maglione Sandro environment: - sdk: '>=2.13.0 <3.0.0' + sdk: ">=2.13.0 <3.0.0" dependencies: fpdart: - path: ../../. - + path: ../../packages/fpdart + dev_dependencies: - lint: ^1.5.3 \ No newline at end of file + lint: ^1.5.3 diff --git a/packages/fpdart/.gitignore b/packages/fpdart/.gitignore new file mode 100644 index 00000000..570e1df8 --- /dev/null +++ b/packages/fpdart/.gitignore @@ -0,0 +1,7 @@ +.dart_tool/ +.packages +pubspec.lock + +# Generated files +**.g.dart +.idea/ \ No newline at end of file diff --git a/CHANGELOG.md b/packages/fpdart/CHANGELOG.md similarity index 99% rename from CHANGELOG.md rename to packages/fpdart/CHANGELOG.md index 96c73c6f..796c59d4 100644 --- a/CHANGELOG.md +++ b/packages/fpdart/CHANGELOG.md @@ -1,4 +1,4 @@ -# v0.6.0-dev.1 - 8 March 2023 +# v0.6.0 - 5 May 2023 - Do notation [#97](https://github.com/SandroMaglione/fpdart/pull/97) 🎉 # v0.5.0 - 4 March 2023 diff --git a/LICENSE b/packages/fpdart/LICENSE similarity index 100% rename from LICENSE rename to packages/fpdart/LICENSE diff --git a/packages/fpdart/README.md b/packages/fpdart/README.md new file mode 100644 index 00000000..2fdd7a9b --- /dev/null +++ b/packages/fpdart/README.md @@ -0,0 +1,389 @@ +

+ + + +

+ + +

+Functional programming in Dart and Flutter +

+ +

+All the main functional programming types and patterns fully documented, tested, and with examples +

+ + +

+ + + + + + + + GitHub: SandroMaglione + + + Twitter: SandroMaglione + +

+ +## Introduction + +> **Fpdart is fully documented. You do not need to have any previous experience with functional programming to start using `fpdart`. Give it a try!** + +Fpdart is inspired by [fp-ts](https://gcanti.github.io/fp-ts/), [cats](https://typelevel.org/cats/typeclasses.html#type-classes-in-cats), and [dartz](https://github.com/spebbe/dartz). + +> **Note**: The API is still evolving and it may change. New documentation and testing is always ongoing. Follow my [**Twitter**](https://twitter.com/SandroMaglione) for updates, or [subscribe to the newsletter](https://www.sandromaglione.com/newsletter) + +*** + +- [Introduction](#introduction) +- [📖 Learn `functional programming` and `fpdart`](#-learn-functional-programming-and-fpdart) + - [👨‍💻 Blog posts and tutorials](#-blog-posts-and-tutorials) +- [💻 Installation](#-installation) +- [✨ Examples](#-examples) + - [Pokeapi](#pokeapi) + - [Open Meteo API](#open-meteo-api) + - [Read/Write local file](#readwrite-local-file) + - [Manage imports](#manage-imports) + - [Option](#option) + - [Either](#either) + - [IO](#io) + - [Task](#task) + - [Utility types](#utility-types) + - [Reader](#reader) + - [State](#state) + - [📦 Immutable Collections](#-immutable-collections) + - [More](#more) +- [🎯 Types](#-types) +- [💡 Motivation](#-motivation) + - [Goal](#goal) + - [Comparison with `dartz`](#comparison-with-dartz) +- [🤔 Roadmap](#-roadmap) +- [📃 Versioning](#-versioning) +- [😀 Support](#-support) +- [👀 License](#-license) + + + +## 📖 Learn `functional programming` and `fpdart` + +Would you like to know more about functional programming, fpdart, and how to use the package? + +📚 [**Collection of tutorials on fpdart**](https://www.sandromaglione.com/course/fpdart-functional-programming-dart-and-flutter) + +Check out also this series of articles about functional programming with `fpdart`: + +1. [**Fpdart, Functional Programming in Dart and Flutter**](https://www.sandromaglione.com/fpdart-functional-programming-in-dart-and-flutter/) +2. [**How to use fpdart Functional Programming in your Dart and Flutter app**](https://www.sandromaglione.com/how-to-use-fpdart-functional-programming-in-dart-and-flutter/) +3. [**Pure Functional app in Flutter – Pokemon app using fpdart and Functional Programming**](https://www.sandromaglione.com/pure-functional-app-in-flutter-using-fpdart-functional-programming/) +4. [**Functional Programming Option type – Introduction**](https://www.sandromaglione.com/functional-programming-option-type-tutorial/) +5. [**Chain functions using Option type – Functional Programming**](https://www.sandromaglione.com/chain-functions-using-option-type-functional-programming/) +6. [**Practical Functional Programming - Part 1**](https://www.sandromaglione.com/practical-functional-programming-step-by-step-haskell-typescript-dart-part-1/) +7. [**Practical Functional Programming - Part 2**](https://www.sandromaglione.com/practical-functional-programming-pure-functions-part-2/) +8. [**Practical Functional Programming - Part 3**](https://www.sandromaglione.com/immutability-practical-functional-programming-part-3/) + +### 👨‍💻 Blog posts and tutorials +- [How to make API requests with validation in fpdart](https://www.sandromaglione.com/techblog/fpdart-api-request-with-validation-functional-programming) +- [How to use TaskEither in fpdart](https://www.sandromaglione.com/techblog/how-to-use-task-either-fpdart-functional-programming) +- [How to map an Either to a Future in fpdart](https://blog.sandromaglione.com/techblog/from-sync-to-async-functional-programming) +- [Option type and Null Safety in dart](https://www.sandromaglione.com/techblog/option_type_and_null_safety_dart) +- [Either - Error Handling in Functional Programming](https://www.sandromaglione.com/techblog/either-error-handling-functional-programming) +- [Future & Task: asynchronous Functional Programming](https://www.sandromaglione.com/techblog/async-requests-future-and-task-dart) +- [Flutter Supabase Functional Programming with fpdart](https://www.sandromaglione.com/techblog/flutter-dart-functional-programming-fpdart-supabase-app) + + +## 💻 Installation + +```yaml +# pubspec.yaml +dependencies: + fpdart: ^0.6.0-dev.1 # Check out the latest version +``` + +## ✨ Examples + +### [Pokeapi](./example/pokeapi_functional/) +Flutter app that lets you search and view your favorite Pokemon: +- API request +- Response validation +- JSON conversion +- State management ([riverpod](https://pub.dev/packages/riverpod)) + +### [Open Meteo API](./example/open_meteo_api/) +Re-implementation using `fpdart` and functional programming of the [Open Meteo API](https://github.com/felangel/bloc/tree/master/examples/flutter_weather/packages/open_meteo_api) from the [flutter_weather](https://bloclibrary.dev/#/flutterweathertutorial) app example in the [bloc](https://pub.dev/packages/bloc) package. + +A 2 parts series explains step by step the Open Meteo API code: +- [Open Meteo API - Functional programming with fpdart (Part 1)](https://www.sandromaglione.com/techblog/real_example_fpdart_open_meteo_api_part_1) +- [Open Meteo API - Functional programming with fpdart (Part 2)](https://www.sandromaglione.com/techblog/real_example_fpdart_open_meteo_api_part_2) + +### [Read/Write local file](./example/read_write_file/) +Example of how to read and write a local file using functional programming. + +### [Manage imports](./example/managing_imports) +Using `fpdart` with other libraries and noticing naming conflicts? Learn how to rename the classes that conflict with other SDK or third-party packages. + +### [Option](./lib/src/option.dart) +Used when a return value can be missing. +> For example, when parsing a `String` to `int`, since not all `String` +> can be converted to `int` + +```dart +/// Create an instance of [Some] +final option = Option.of(10); + +/// Create an instance of [None] +final none = Option.none(); + +/// Map [int] to [String] +final map = option.map((a) => '$a'); + +/// Extract the value from [Option] +final value = option.getOrElse(() => -1); + +/// Pattern matching +final match = option.match( + () => print('None'), + (a) => print('Some($a)'), +); + +/// Convert to [Either] +final either = option.toEither(() => 'missing'); + +/// Chain computations +final flatMap = option.flatMap((a) => Option.of(a + 10)); + +/// Return [None] if the function throws an error +final tryCatch = Option.tryCatch(() => int.parse('invalid')); +``` + +### [Either](./lib/src/either.dart) +Used to handle errors (instead of `Exception`s). +> `Either`: `L` is the type of the error (for example a `String` explaining +> the problem), `R` is the return type when the computation is successful + +```dart +/// Create an instance of [Right] +final right = Either.of(10); + +/// Create an instance of [Left] +final left = Either.left('none'); + +/// Map the right value to a [String] +final mapRight = right.map((a) => '$a'); + +/// Map the left value to a [int] +final mapLeft = right.mapLeft((a) => a.length); + +/// Return [Left] if the function throws an error. +/// Otherwise return [Right]. +final tryCatch = Either.tryCatch( + () => int.parse('invalid'), + (e, s) => 'Error: $e', +); + +/// Extract the value from [Either] +final value = right.getOrElse((l) => -1); + +/// Chain computations +final flatMap = right.flatMap((a) => Either.of(a + 10)); + +/// Pattern matching +final match = right.match( + (l) => print('Left($l)'), + (r) => print('Right($r)'), +); + +/// Convert to [Option] +final option = right.toOption(); +``` + +### [IO](./lib/src/io.dart) +Wrapper around an **sync** function. Allows to compose synchronous functions **that never fail**. + +```dart +/// Create instance of [IO] from a value +final IO io = IO.of(10); + +/// Create instance of [IO] from a sync function +final ioRun = IO(() => 10); + +/// Map [int] to [String] +final IO map = io.map((a) => '$a'); + +/// Extract the value inside [IO] by running its function +final int value = io.run(); + +/// Chain another [IO] based on the value of the current [IO] +final flatMap = io.flatMap((a) => IO.of(a + 10)); +``` + +### [Task](./lib/src/task.dart) +Wrapper around an **async** function (`Future`). Allows to compose asynchronous functions **that never fail**. + +> If you look closely, it's the same as [`IO`](#io) but for **async functions** 💡 + +```dart +/// Create instance of [Task] from a value +final Task task = Task.of(10); + +/// Create instance of [Task] from an async function +final taskRun1 = Task(() async => 10); +final taskRun2 = Task(() => Future.value(10)); + +/// Map [int] to [String] +final Task map = task.map((a) => '$a'); + +/// Extract the value inside [Task] by running its async function +final int value = await task.run(); + +/// Chain another [Task] based on the value of the current [Task] +final flatMap = task.flatMap((a) => Task.of(a + 10)); +``` + +### Utility types +These types compose together the 4 above ([`Option`](#option), [`Either`](#either), [`IO`](#io), [`Task`](#task)) to join together their functionalities: +- [`IOOption`](./lib/src/io_option.dart): sync function (`IO`) that may may miss the return value (`Option`) +- [`IOEither`](./lib/src/io_either.dart): sync function (`IO`) that may fail (`Either`) +- [`TaskOption`](./lib/src/task_option.dart): async function (`Task`) that may miss the return value (`Option`) +- [`TaskEither`](./lib/src/task_either.dart): async function (`Task`) that may fail (`Either`) + + +### [Reader](./lib/src/reader.dart) +Read values from a **context** without explicitly passing the dependency between multiple nested function calls. View the [example folder for an explained usecase example](./example/src/reader). + +### [State](./lib/src/state.dart) +Used to **store**, **update**, and **extract** state in a functional way. View the [example folder for an explained usecase example](./example/src/state). + +### 📦 Immutable Collections + +Fpdart provides some extension methods on `Iterable` (`List`) and `Map` that extend the methods available by providing some functional programming signatures (safe methods that never mutate the original collection and that never throw exceptions). + +Integrations for immutable collections (`IList`, `ISet`, `IMap`, etc.) are still being discussed with the community. `fpdart` does not want to be another immutable collection solution in the ecosystem. That is why we are working to integrate `fpdart` with other more mature packages that already implements immutable collections. Stay tuned! + +### More + +Many more examples are coming soon. Check out [**my website**](https://www.sandromaglione.com/) and my [**Twitter**](https://twitter.com/SandroMaglione) for daily updates. + +--- + + +## 🎯 Types + +- [x] `Option` +- [x] `Either` +- [x] `Unit` +- [x] `Task` +- [x] `TaskEither` +- [x] `State` +- [x] `StateAsync` +- [x] `Reader` +- [x] `Tuple` +- [x] `IO` +- [x] `IORef` +- [x] `Iterable` (`List`) `extension` +- [x] `Map` `extension` +- [x] `IOEither` +- [x] `TaskOption` +- [x] `Predicate` +- [x] `IOOption` +- [ ] `ReaderEither` +- [ ] `ReaderTask` +- [ ] `ReaderTaskEither` +- [ ] `StateReaderTaskEither` +- [ ] `Lens` +- [ ] `Writer` + +## 💡 Motivation + +Functional programming is becoming more and more popular, and for good reasons. + +Many non-functional languages are slowly adopting patterns from functional languages, dart included. Dart already supports higher-order functions, generic types, type inference. Since Dart 3, the language supports also [pattern matching](https://github.com/dart-lang/language/issues/546), [destructuring](https://github.com/dart-lang/language/issues/207), [multiple return values](https://github.com/dart-lang/language/issues/68) ([**Read more about these new features here**](https://www.sandromaglione.com/techblog/records-and-patterns-dart-language)). + +Other functional programming features are coming to the language, like [higher-order types](https://github.com/dart-lang/language/issues/1655). + +Many packages are bringing functional patterns to dart, like the amazing [freezed](https://pub.dev/packages/freezed) for unions/pattern matching. + +Fpdart aims to provide all the main types found in functional languages to dart. Types like `Option` (handle missing values without `null`), `Either` (handle errors and error messages), `Task` (composable async computations), and more. + +### Goal + +Differently from many other functional programming packages, `fpdart` aims to introduce functional programming to every developer. For this reason, every type and method is commented and documented directly in the code. + +> **You do not need to have any previous experience with functional programming to start using `fpdart`.** + +Fpdart also provides [real-world examples](https://github.com/SandroMaglione/fpdart/tree/main/example/src) of why a type is useful and how it can be used in your application. Check out [**my website**](https://www.sandromaglione.com/) for blog posts and articles. + +### Comparison with `dartz` + +One of the major pain points of dartz has always been is [**lack of documentation**](https://github.com/spebbe/dartz/issues/36). This is a huge issue for people new to functional programming to attempt using the package. + +`dartz` was [released in 2016](https://github.com/spebbe/dartz/commits/master?after=2de2f2787430dcd4ef49485bbf8aac1f8d1ff157+279&branch=master), initially targeting Dart 1. + +`dartz` is also missing some features and types (`Reader`, `TaskEither`, and others). + +Fpdart is a rewrite based on fp-ts and cats. The main differences are: + +- Fpdart is fully documented. +- Fpdart implements higher-kinded types using [defunctionalization](https://www.cl.cam.ac.uk/~jdy22/papers/lightweight-higher-kinded-polymorphism.pdf). +- Fpdart is based on Dart 2. +- Fpdart is completely null-safe from the beginning. +- Fpdart has a richer API. +- Fpdart implements some missing types in dartz. +- Fpdart (currently) does not provide implementation for immutable collections (`ISet`, `IMap`, `IHashMap`, `AVLTree`). + +## 🤔 Roadmap + +Being documentation and stability important goals of the package, every type will go through an implementation-documentation-testing cycle before being considered as _'stable'_. + +The roadmap for types development is highlighted below (breaking changes to _'stable'_ types are to be expected in this early stages): + +1. `ReaderEither` +2. `ReaderTask` +3. `ReaderTaskEither` +4. `StateReaderTaskEither` +5. `Writer` +6. `Lens` + +*** + +The long-term goal is to provide **all the main types and typeclasses available in other functional programming languages and packages**. All the types should be **completely** documented and fully tested. + +A well explained documentation is the key for the long-term success of the project. **Any article, blog post, or contribution is welcome**. + +In general, **any contribution or feedback is welcome** (and encouraged!). + +## 📃 Versioning + +- **v0.5.0** - 4 March 2023 +- v0.4.1 - 25 February 2023 +- **v0.4.0** - 16 December 2022 +- **v0.3.0** - 11 October 2022 +- **v0.2.0** - 16 July 2022 +- **v0.1.0** - 17 June 2022 +- v0.0.14 - 31 January 2022 +- v0.0.13 - 26 January 2022 +- v0.0.12 - 24 October 2021 +- v0.0.11 - 22 September 2021 +- v0.0.10 - 13 August 2021 +- v0.0.9 - 3 August 2021 +- v0.0.8 - 13 July 2021 +- v0.0.7 - 6 July 2021 +- v0.0.6 - 29 June 2021 +- v0.0.5 - 20 June 2021 +- v0.0.4 - 15 June 2021 +- v0.0.3 - 13 June 2021 +- v0.0.2 - 13 June 2021 +- v0.0.1 - 28 May 2021 + +## 😀 Support + +Currently the best way to support me would be to follow me on my [**Twitter**](https://twitter.com/SandroMaglione). + +I also have a newsletter, in which I share tutorials, guides, and code snippets about fpdart and functional programming: [**Subscribe to the Newsletter here** 📧](https://www.sandromaglione.com/newsletter) + +## 👀 License + +MIT License, see the [LICENSE.md](https://github.com/SandroMaglione/fpdart/blob/main/LICENSE) file for details. diff --git a/analysis_options.yaml b/packages/fpdart/analysis_options.yaml similarity index 100% rename from analysis_options.yaml rename to packages/fpdart/analysis_options.yaml diff --git a/example/analysis_options.yaml b/packages/fpdart/example/analysis_options.yaml similarity index 67% rename from example/analysis_options.yaml rename to packages/fpdart/example/analysis_options.yaml index 908c9c5e..7bd53df4 100644 --- a/example/analysis_options.yaml +++ b/packages/fpdart/example/analysis_options.yaml @@ -1,13 +1,10 @@ analyzer: exclude: - - '**/*.g.dart' + - "**/*.g.dart" language: strict-casts: true strict-inference: true strict-raw-types: true - strong-mode: - implicit-casts: false - implicit-dynamic: false errors: unused_local_variable: ignore deprecated_field: ignore diff --git a/example/api_requests/try_catch_validation.dart b/packages/fpdart/example/api_requests/try_catch_validation.dart similarity index 100% rename from example/api_requests/try_catch_validation.dart rename to packages/fpdart/example/api_requests/try_catch_validation.dart diff --git a/example/do_notation/main.dart b/packages/fpdart/example/do_notation/main.dart similarity index 100% rename from example/do_notation/main.dart rename to packages/fpdart/example/do_notation/main.dart diff --git a/example/from_imperative_to_functional/logger/logger.dart b/packages/fpdart/example/logger/logger.dart similarity index 100% rename from example/from_imperative_to_functional/logger/logger.dart rename to packages/fpdart/example/logger/logger.dart diff --git a/example/from_imperative_to_functional/logger/main.dart b/packages/fpdart/example/logger/main.dart similarity index 100% rename from example/from_imperative_to_functional/logger/main.dart rename to packages/fpdart/example/logger/main.dart diff --git a/example/main.dart b/packages/fpdart/example/main.dart similarity index 100% rename from example/main.dart rename to packages/fpdart/example/main.dart diff --git a/example/src/compose/overview.dart b/packages/fpdart/example/src/compose/overview.dart similarity index 100% rename from example/src/compose/overview.dart rename to packages/fpdart/example/src/compose/overview.dart diff --git a/example/src/either/cast.dart b/packages/fpdart/example/src/either/cast.dart similarity index 100% rename from example/src/either/cast.dart rename to packages/fpdart/example/src/either/cast.dart diff --git a/example/src/either/chain_either.dart b/packages/fpdart/example/src/either/chain_either.dart similarity index 100% rename from example/src/either/chain_either.dart rename to packages/fpdart/example/src/either/chain_either.dart diff --git a/example/src/either/either1.dart b/packages/fpdart/example/src/either/either1.dart similarity index 100% rename from example/src/either/either1.dart rename to packages/fpdart/example/src/either/either1.dart diff --git a/example/src/either/overview.dart b/packages/fpdart/example/src/either/overview.dart similarity index 100% rename from example/src/either/overview.dart rename to packages/fpdart/example/src/either/overview.dart diff --git a/example/src/either/shopping/functional.dart b/packages/fpdart/example/src/either/shopping/functional.dart similarity index 100% rename from example/src/either/shopping/functional.dart rename to packages/fpdart/example/src/either/shopping/functional.dart diff --git a/example/src/function/const_f.dart b/packages/fpdart/example/src/function/const_f.dart similarity index 100% rename from example/src/function/const_f.dart rename to packages/fpdart/example/src/function/const_f.dart diff --git a/example/src/function/curry.dart b/packages/fpdart/example/src/function/curry.dart similarity index 100% rename from example/src/function/curry.dart rename to packages/fpdart/example/src/function/curry.dart diff --git a/example/src/function/identity.dart b/packages/fpdart/example/src/function/identity.dart similarity index 100% rename from example/src/function/identity.dart rename to packages/fpdart/example/src/function/identity.dart diff --git a/example/src/io/overview.dart b/packages/fpdart/example/src/io/overview.dart similarity index 100% rename from example/src/io/overview.dart rename to packages/fpdart/example/src/io/overview.dart diff --git a/example/src/list/fold.dart b/packages/fpdart/example/src/list/fold.dart similarity index 100% rename from example/src/list/fold.dart rename to packages/fpdart/example/src/list/fold.dart diff --git a/example/src/list/zip.dart b/packages/fpdart/example/src/list/zip.dart similarity index 100% rename from example/src/list/zip.dart rename to packages/fpdart/example/src/list/zip.dart diff --git a/example/src/map/overview.dart b/packages/fpdart/example/src/map/overview.dart similarity index 100% rename from example/src/map/overview.dart rename to packages/fpdart/example/src/map/overview.dart diff --git a/example/src/option/cheat_sheet.md b/packages/fpdart/example/src/option/cheat_sheet.md similarity index 100% rename from example/src/option/cheat_sheet.md rename to packages/fpdart/example/src/option/cheat_sheet.md diff --git a/example/src/option/get-price/functional.dart b/packages/fpdart/example/src/option/get-price/functional.dart similarity index 100% rename from example/src/option/get-price/functional.dart rename to packages/fpdart/example/src/option/get-price/functional.dart diff --git a/example/src/option/get-price/non_functional.dart b/packages/fpdart/example/src/option/get-price/non_functional.dart similarity index 100% rename from example/src/option/get-price/non_functional.dart rename to packages/fpdart/example/src/option/get-price/non_functional.dart diff --git a/example/src/option/nullable/chain_nullable.dart b/packages/fpdart/example/src/option/nullable/chain_nullable.dart similarity index 100% rename from example/src/option/nullable/chain_nullable.dart rename to packages/fpdart/example/src/option/nullable/chain_nullable.dart diff --git a/example/src/option/nullable/option_nullable.dart b/packages/fpdart/example/src/option/nullable/option_nullable.dart similarity index 100% rename from example/src/option/nullable/option_nullable.dart rename to packages/fpdart/example/src/option/nullable/option_nullable.dart diff --git a/example/src/option/nullable/overview.dart b/packages/fpdart/example/src/option/nullable/overview.dart similarity index 100% rename from example/src/option/nullable/overview.dart rename to packages/fpdart/example/src/option/nullable/overview.dart diff --git a/example/src/option/option1.dart b/packages/fpdart/example/src/option/option1.dart similarity index 100% rename from example/src/option/option1.dart rename to packages/fpdart/example/src/option/option1.dart diff --git a/example/src/option/option2.dart b/packages/fpdart/example/src/option/option2.dart similarity index 100% rename from example/src/option/option2.dart rename to packages/fpdart/example/src/option/option2.dart diff --git a/example/src/option/option3.dart b/packages/fpdart/example/src/option/option3.dart similarity index 100% rename from example/src/option/option3.dart rename to packages/fpdart/example/src/option/option3.dart diff --git a/example/src/option/overview.dart b/packages/fpdart/example/src/option/overview.dart similarity index 100% rename from example/src/option/overview.dart rename to packages/fpdart/example/src/option/overview.dart diff --git a/example/src/option/shopping/functional.dart b/packages/fpdart/example/src/option/shopping/functional.dart similarity index 100% rename from example/src/option/shopping/functional.dart rename to packages/fpdart/example/src/option/shopping/functional.dart diff --git a/example/src/pure_function.dart b/packages/fpdart/example/src/pure_function.dart similarity index 100% rename from example/src/pure_function.dart rename to packages/fpdart/example/src/pure_function.dart diff --git a/example/src/reader/reader1.dart b/packages/fpdart/example/src/reader/reader1.dart similarity index 100% rename from example/src/reader/reader1.dart rename to packages/fpdart/example/src/reader/reader1.dart diff --git a/example/src/reader/reader2.dart b/packages/fpdart/example/src/reader/reader2.dart similarity index 100% rename from example/src/reader/reader2.dart rename to packages/fpdart/example/src/reader/reader2.dart diff --git a/example/src/state/state1.dart b/packages/fpdart/example/src/state/state1.dart similarity index 100% rename from example/src/state/state1.dart rename to packages/fpdart/example/src/state/state1.dart diff --git a/example/src/state_async/state_async1.dart b/packages/fpdart/example/src/state_async/state_async1.dart similarity index 100% rename from example/src/state_async/state_async1.dart rename to packages/fpdart/example/src/state_async/state_async1.dart diff --git a/example/src/task/overview.dart b/packages/fpdart/example/src/task/overview.dart similarity index 100% rename from example/src/task/overview.dart rename to packages/fpdart/example/src/task/overview.dart diff --git a/example/src/task/task_and_future.dart b/packages/fpdart/example/src/task/task_and_future.dart similarity index 100% rename from example/src/task/task_and_future.dart rename to packages/fpdart/example/src/task/task_and_future.dart diff --git a/example/src/task_either/async_flat_map/data.dart b/packages/fpdart/example/src/task_either/async_flat_map/data.dart similarity index 100% rename from example/src/task_either/async_flat_map/data.dart rename to packages/fpdart/example/src/task_either/async_flat_map/data.dart diff --git a/example/src/task_either/async_flat_map/failure.dart b/packages/fpdart/example/src/task_either/async_flat_map/failure.dart similarity index 100% rename from example/src/task_either/async_flat_map/failure.dart rename to packages/fpdart/example/src/task_either/async_flat_map/failure.dart diff --git a/example/src/task_either/async_flat_map/main.dart b/packages/fpdart/example/src/task_either/async_flat_map/main.dart similarity index 100% rename from example/src/task_either/async_flat_map/main.dart rename to packages/fpdart/example/src/task_either/async_flat_map/main.dart diff --git a/example/src/task_either/async_flat_map/student_repo.dart b/packages/fpdart/example/src/task_either/async_flat_map/student_repo.dart similarity index 100% rename from example/src/task_either/async_flat_map/student_repo.dart rename to packages/fpdart/example/src/task_either/async_flat_map/student_repo.dart diff --git a/example/src/task_either/chain.dart b/packages/fpdart/example/src/task_either/chain.dart similarity index 100% rename from example/src/task_either/chain.dart rename to packages/fpdart/example/src/task_either/chain.dart diff --git a/example/src/task_either/finally.dart b/packages/fpdart/example/src/task_either/finally.dart similarity index 100% rename from example/src/task_either/finally.dart rename to packages/fpdart/example/src/task_either/finally.dart diff --git a/example/src/task_either/overview.dart b/packages/fpdart/example/src/task_either/overview.dart similarity index 100% rename from example/src/task_either/overview.dart rename to packages/fpdart/example/src/task_either/overview.dart diff --git a/example/src/task_either/sync_to_async.dart b/packages/fpdart/example/src/task_either/sync_to_async.dart similarity index 100% rename from example/src/task_either/sync_to_async.dart rename to packages/fpdart/example/src/task_either/sync_to_async.dart diff --git a/example/src/task_option/future_task_option.dart b/packages/fpdart/example/src/task_option/future_task_option.dart similarity index 100% rename from example/src/task_option/future_task_option.dart rename to packages/fpdart/example/src/task_option/future_task_option.dart diff --git a/example/src/task_option/overview.dart b/packages/fpdart/example/src/task_option/overview.dart similarity index 100% rename from example/src/task_option/overview.dart rename to packages/fpdart/example/src/task_option/overview.dart diff --git a/example/src/traverse/option.dart b/packages/fpdart/example/src/traverse/option.dart similarity index 100% rename from example/src/traverse/option.dart rename to packages/fpdart/example/src/traverse/option.dart diff --git a/example/src/traverse/sequnce_traverse.dart b/packages/fpdart/example/src/traverse/sequnce_traverse.dart similarity index 100% rename from example/src/traverse/sequnce_traverse.dart rename to packages/fpdart/example/src/traverse/sequnce_traverse.dart diff --git a/example/src/typeclass/order/order1.dart b/packages/fpdart/example/src/typeclass/order/order1.dart similarity index 100% rename from example/src/typeclass/order/order1.dart rename to packages/fpdart/example/src/typeclass/order/order1.dart diff --git a/lib/fpdart.dart b/packages/fpdart/lib/fpdart.dart similarity index 100% rename from lib/fpdart.dart rename to packages/fpdart/lib/fpdart.dart diff --git a/lib/src/boolean.dart b/packages/fpdart/lib/src/boolean.dart similarity index 100% rename from lib/src/boolean.dart rename to packages/fpdart/lib/src/boolean.dart diff --git a/lib/src/compose.dart b/packages/fpdart/lib/src/compose.dart similarity index 100% rename from lib/src/compose.dart rename to packages/fpdart/lib/src/compose.dart diff --git a/lib/src/date.dart b/packages/fpdart/lib/src/date.dart similarity index 100% rename from lib/src/date.dart rename to packages/fpdart/lib/src/date.dart diff --git a/lib/src/either.dart b/packages/fpdart/lib/src/either.dart similarity index 100% rename from lib/src/either.dart rename to packages/fpdart/lib/src/either.dart diff --git a/lib/src/function.dart b/packages/fpdart/lib/src/function.dart similarity index 100% rename from lib/src/function.dart rename to packages/fpdart/lib/src/function.dart diff --git a/lib/src/io.dart b/packages/fpdart/lib/src/io.dart similarity index 93% rename from lib/src/io.dart rename to packages/fpdart/lib/src/io.dart index beaceb04..aea696e0 100644 --- a/lib/src/io.dart +++ b/packages/fpdart/lib/src/io.dart @@ -1,4 +1,15 @@ -import 'package:fpdart/fpdart.dart'; +import 'either.dart'; +import 'function.dart'; +import 'io_either.dart'; +import 'io_option.dart'; +import 'option.dart'; +import 'task.dart'; +import 'task_either.dart'; +import 'task_option.dart'; +import 'typeclass/applicative.dart'; +import 'typeclass/functor.dart'; +import 'typeclass/hkt.dart'; +import 'typeclass/monad.dart'; typedef DoAdapterIO = A Function(IO); A _doAdapter(IO io) => io.run(); diff --git a/lib/src/io_either.dart b/packages/fpdart/lib/src/io_either.dart similarity index 100% rename from lib/src/io_either.dart rename to packages/fpdart/lib/src/io_either.dart diff --git a/lib/src/io_option.dart b/packages/fpdart/lib/src/io_option.dart similarity index 100% rename from lib/src/io_option.dart rename to packages/fpdart/lib/src/io_option.dart diff --git a/lib/src/io_ref.dart b/packages/fpdart/lib/src/io_ref.dart similarity index 96% rename from lib/src/io_ref.dart rename to packages/fpdart/lib/src/io_ref.dart index c8a48248..5b6f91f4 100644 --- a/lib/src/io_ref.dart +++ b/packages/fpdart/lib/src/io_ref.dart @@ -1,4 +1,7 @@ -import 'package:fpdart/fpdart.dart'; +import 'function.dart'; +import 'io.dart'; +import 'typeclass/eq.dart'; +import 'unit.dart'; /// Mutable reference in the [IO] monad. /// diff --git a/lib/src/list_extension.dart b/packages/fpdart/lib/src/list_extension.dart similarity index 100% rename from lib/src/list_extension.dart rename to packages/fpdart/lib/src/list_extension.dart diff --git a/lib/src/map_extension.dart b/packages/fpdart/lib/src/map_extension.dart similarity index 98% rename from lib/src/map_extension.dart rename to packages/fpdart/lib/src/map_extension.dart index e0818059..672b3199 100644 --- a/lib/src/map_extension.dart +++ b/packages/fpdart/lib/src/map_extension.dart @@ -1,4 +1,9 @@ -import 'package:fpdart/fpdart.dart'; +import 'list_extension.dart'; +import 'option.dart'; +import 'tuple.dart'; +import 'typeclass/eq.dart'; +import 'typeclass/order.dart'; +import 'typedef.dart'; /// Functional programming functions on a mutable dart [Map] using `fpdart`. extension FpdartOnMutableMap on Map { diff --git a/lib/src/nullable_extension.dart b/packages/fpdart/lib/src/nullable_extension.dart similarity index 100% rename from lib/src/nullable_extension.dart rename to packages/fpdart/lib/src/nullable_extension.dart diff --git a/lib/src/option.dart b/packages/fpdart/lib/src/option.dart similarity index 100% rename from lib/src/option.dart rename to packages/fpdart/lib/src/option.dart diff --git a/lib/src/predicate.dart b/packages/fpdart/lib/src/predicate.dart similarity index 100% rename from lib/src/predicate.dart rename to packages/fpdart/lib/src/predicate.dart diff --git a/lib/src/random.dart b/packages/fpdart/lib/src/random.dart similarity index 100% rename from lib/src/random.dart rename to packages/fpdart/lib/src/random.dart diff --git a/lib/src/reader.dart b/packages/fpdart/lib/src/reader.dart similarity index 95% rename from lib/src/reader.dart rename to packages/fpdart/lib/src/reader.dart index cd4f6934..19342c6a 100644 --- a/lib/src/reader.dart +++ b/packages/fpdart/lib/src/reader.dart @@ -1,4 +1,8 @@ -import 'package:fpdart/fpdart.dart'; +import 'function.dart'; +import 'typeclass/applicative.dart'; +import 'typeclass/functor.dart'; +import 'typeclass/hkt.dart'; +import 'typeclass/monad.dart'; /// Tag the [HKT2] interface for the actual [Reader]. abstract class ReaderHKT {} diff --git a/lib/src/state.dart b/packages/fpdart/lib/src/state.dart similarity index 100% rename from lib/src/state.dart rename to packages/fpdart/lib/src/state.dart diff --git a/lib/src/state_async.dart b/packages/fpdart/lib/src/state_async.dart similarity index 100% rename from lib/src/state_async.dart rename to packages/fpdart/lib/src/state_async.dart diff --git a/lib/src/task.dart b/packages/fpdart/lib/src/task.dart similarity index 100% rename from lib/src/task.dart rename to packages/fpdart/lib/src/task.dart diff --git a/lib/src/task_either.dart b/packages/fpdart/lib/src/task_either.dart similarity index 100% rename from lib/src/task_either.dart rename to packages/fpdart/lib/src/task_either.dart diff --git a/lib/src/task_option.dart b/packages/fpdart/lib/src/task_option.dart similarity index 97% rename from lib/src/task_option.dart rename to packages/fpdart/lib/src/task_option.dart index 1066cf5f..c391235e 100644 --- a/lib/src/task_option.dart +++ b/packages/fpdart/lib/src/task_option.dart @@ -1,4 +1,13 @@ -import 'package:fpdart/fpdart.dart'; +import 'either.dart'; +import 'function.dart'; +import 'option.dart'; +import 'task.dart'; +import 'task_either.dart'; +import 'typeclass/alt.dart'; +import 'typeclass/applicative.dart'; +import 'typeclass/functor.dart'; +import 'typeclass/hkt.dart'; +import 'typeclass/monad.dart'; class _TaskOptionThrow { const _TaskOptionThrow(); diff --git a/lib/src/tuple.dart b/packages/fpdart/lib/src/tuple.dart similarity index 97% rename from lib/src/tuple.dart rename to packages/fpdart/lib/src/tuple.dart index 5f7bcb33..7d3ff4a2 100644 --- a/lib/src/tuple.dart +++ b/packages/fpdart/lib/src/tuple.dart @@ -1,4 +1,9 @@ -import 'package:fpdart/fpdart.dart'; +import 'function.dart'; +import 'typeclass/extend.dart'; +import 'typeclass/foldable.dart'; +import 'typeclass/functor.dart'; +import 'typeclass/hkt.dart'; +import 'typeclass/monoid.dart'; /// Return a `Tuple2(a, b)`. Tuple2 tuple2(A a, B b) => Tuple2(a, b); diff --git a/lib/src/typeclass/alt.dart b/packages/fpdart/lib/src/typeclass/alt.dart similarity index 100% rename from lib/src/typeclass/alt.dart rename to packages/fpdart/lib/src/typeclass/alt.dart diff --git a/lib/src/typeclass/applicative.dart b/packages/fpdart/lib/src/typeclass/applicative.dart similarity index 100% rename from lib/src/typeclass/applicative.dart rename to packages/fpdart/lib/src/typeclass/applicative.dart diff --git a/lib/src/typeclass/band.dart b/packages/fpdart/lib/src/typeclass/band.dart similarity index 96% rename from lib/src/typeclass/band.dart rename to packages/fpdart/lib/src/typeclass/band.dart index 73b31f0a..a38f6616 100644 --- a/lib/src/typeclass/band.dart +++ b/packages/fpdart/lib/src/typeclass/band.dart @@ -1,4 +1,4 @@ -import 'package:fpdart/fpdart.dart'; +import 'semigroup.dart'; /// Bands are semigroups whose operation /// (i.e. `combine`) is also [**idempotent**](https://en.wikipedia.org/wiki/Idempotence) diff --git a/lib/src/typeclass/bounded_semilattice.dart b/packages/fpdart/lib/src/typeclass/bounded_semilattice.dart similarity index 90% rename from lib/src/typeclass/bounded_semilattice.dart rename to packages/fpdart/lib/src/typeclass/bounded_semilattice.dart index 06e9f546..d2019d5d 100644 --- a/lib/src/typeclass/bounded_semilattice.dart +++ b/packages/fpdart/lib/src/typeclass/bounded_semilattice.dart @@ -1,4 +1,9 @@ -import 'package:fpdart/fpdart.dart'; +import 'band.dart'; +import 'commutative_monoid.dart'; +import 'commutative_semigroup.dart'; +import 'monoid.dart'; +import 'semigroup.dart'; +import 'semilattice.dart'; /// A semilattice in which: /// diff --git a/lib/src/typeclass/commutative_group.dart b/packages/fpdart/lib/src/typeclass/commutative_group.dart similarity index 88% rename from lib/src/typeclass/commutative_group.dart rename to packages/fpdart/lib/src/typeclass/commutative_group.dart index 9d24a7fc..237f5463 100644 --- a/lib/src/typeclass/commutative_group.dart +++ b/packages/fpdart/lib/src/typeclass/commutative_group.dart @@ -1,4 +1,8 @@ -import 'package:fpdart/fpdart.dart'; +import 'commutative_monoid.dart'; +import 'commutative_semigroup.dart'; +import 'group.dart'; +import 'monoid.dart'; +import 'semigroup.dart'; /// An commutative group (also known as an [**abelian group**](https://en.wikipedia.org/wiki/Abelian_group)) /// is a group whose combine operation is [**commutative**](https://en.wikipedia.org/wiki/Commutative_property). diff --git a/lib/src/typeclass/commutative_monoid.dart b/packages/fpdart/lib/src/typeclass/commutative_monoid.dart similarity index 100% rename from lib/src/typeclass/commutative_monoid.dart rename to packages/fpdart/lib/src/typeclass/commutative_monoid.dart diff --git a/lib/src/typeclass/commutative_semigroup.dart b/packages/fpdart/lib/src/typeclass/commutative_semigroup.dart similarity index 95% rename from lib/src/typeclass/commutative_semigroup.dart rename to packages/fpdart/lib/src/typeclass/commutative_semigroup.dart index 542dcea0..6a24ebd5 100644 --- a/lib/src/typeclass/commutative_semigroup.dart +++ b/packages/fpdart/lib/src/typeclass/commutative_semigroup.dart @@ -1,4 +1,4 @@ -import 'package:fpdart/fpdart.dart'; +import 'semigroup.dart'; /// `CommutativeSemigroup` represents a commutative semigroup. /// diff --git a/lib/src/typeclass/eq.dart b/packages/fpdart/lib/src/typeclass/eq.dart similarity index 100% rename from lib/src/typeclass/eq.dart rename to packages/fpdart/lib/src/typeclass/eq.dart diff --git a/lib/src/typeclass/extend.dart b/packages/fpdart/lib/src/typeclass/extend.dart similarity index 100% rename from lib/src/typeclass/extend.dart rename to packages/fpdart/lib/src/typeclass/extend.dart diff --git a/lib/src/typeclass/filterable.dart b/packages/fpdart/lib/src/typeclass/filterable.dart similarity index 100% rename from lib/src/typeclass/filterable.dart rename to packages/fpdart/lib/src/typeclass/filterable.dart diff --git a/lib/src/typeclass/foldable.dart b/packages/fpdart/lib/src/typeclass/foldable.dart similarity index 100% rename from lib/src/typeclass/foldable.dart rename to packages/fpdart/lib/src/typeclass/foldable.dart diff --git a/lib/src/typeclass/functor.dart b/packages/fpdart/lib/src/typeclass/functor.dart similarity index 100% rename from lib/src/typeclass/functor.dart rename to packages/fpdart/lib/src/typeclass/functor.dart diff --git a/lib/src/typeclass/group.dart b/packages/fpdart/lib/src/typeclass/group.dart similarity index 97% rename from lib/src/typeclass/group.dart rename to packages/fpdart/lib/src/typeclass/group.dart index 2c080b43..fd5cb736 100644 --- a/lib/src/typeclass/group.dart +++ b/packages/fpdart/lib/src/typeclass/group.dart @@ -1,4 +1,5 @@ -import 'package:fpdart/fpdart.dart'; +import 'monoid.dart'; +import 'semigroup.dart'; /// A group is a monoid where each element has an [**inverse**](https://en.wikipedia.org/wiki/Inverse_element). mixin Group on Monoid { diff --git a/lib/src/typeclass/hash.dart b/packages/fpdart/lib/src/typeclass/hash.dart similarity index 100% rename from lib/src/typeclass/hash.dart rename to packages/fpdart/lib/src/typeclass/hash.dart diff --git a/lib/src/typeclass/hkt.dart b/packages/fpdart/lib/src/typeclass/hkt.dart similarity index 100% rename from lib/src/typeclass/hkt.dart rename to packages/fpdart/lib/src/typeclass/hkt.dart diff --git a/lib/src/typeclass/monad.dart b/packages/fpdart/lib/src/typeclass/monad.dart similarity index 100% rename from lib/src/typeclass/monad.dart rename to packages/fpdart/lib/src/typeclass/monad.dart diff --git a/lib/src/typeclass/monoid.dart b/packages/fpdart/lib/src/typeclass/monoid.dart similarity index 98% rename from lib/src/typeclass/monoid.dart rename to packages/fpdart/lib/src/typeclass/monoid.dart index 5926bbfa..2cc72785 100644 --- a/lib/src/typeclass/monoid.dart +++ b/packages/fpdart/lib/src/typeclass/monoid.dart @@ -1,5 +1,4 @@ -import 'package:fpdart/src/function.dart'; - +import '../function.dart'; import 'eq.dart'; import 'semigroup.dart'; diff --git a/lib/src/typeclass/order.dart b/packages/fpdart/lib/src/typeclass/order.dart similarity index 100% rename from lib/src/typeclass/order.dart rename to packages/fpdart/lib/src/typeclass/order.dart diff --git a/lib/src/typeclass/partial_order.dart b/packages/fpdart/lib/src/typeclass/partial_order.dart similarity index 100% rename from lib/src/typeclass/partial_order.dart rename to packages/fpdart/lib/src/typeclass/partial_order.dart diff --git a/lib/src/typeclass/semigroup.dart b/packages/fpdart/lib/src/typeclass/semigroup.dart similarity index 100% rename from lib/src/typeclass/semigroup.dart rename to packages/fpdart/lib/src/typeclass/semigroup.dart diff --git a/lib/src/typeclass/semilattice.dart b/packages/fpdart/lib/src/typeclass/semilattice.dart similarity index 100% rename from lib/src/typeclass/semilattice.dart rename to packages/fpdart/lib/src/typeclass/semilattice.dart diff --git a/lib/src/typeclass/typeclass.export.dart b/packages/fpdart/lib/src/typeclass/typeclass.export.dart similarity index 100% rename from lib/src/typeclass/typeclass.export.dart rename to packages/fpdart/lib/src/typeclass/typeclass.export.dart diff --git a/lib/src/typedef.dart b/packages/fpdart/lib/src/typedef.dart similarity index 100% rename from lib/src/typedef.dart rename to packages/fpdart/lib/src/typedef.dart diff --git a/lib/src/unit.dart b/packages/fpdart/lib/src/unit.dart similarity index 100% rename from lib/src/unit.dart rename to packages/fpdart/lib/src/unit.dart diff --git a/pubspec.yaml b/packages/fpdart/pubspec.yaml similarity index 60% rename from pubspec.yaml rename to packages/fpdart/pubspec.yaml index 9483c802..a54fc1ea 100644 --- a/pubspec.yaml +++ b/packages/fpdart/pubspec.yaml @@ -1,10 +1,13 @@ name: fpdart -version: 0.6.0-dev.1 +description: > + Functional programming in Dart and Flutter. + All the main functional programming types and patterns fully documented, tested, and with examples. +version: 0.6.0 homepage: https://www.sandromaglione.com/ repository: https://github.com/SandroMaglione/fpdart -description: Functional programming in Dart and Flutter. All the main functional programming types and patterns fully documented, tested, and with examples. author: Maglione Sandro documentation: https://www.sandromaglione.com/course/fpdart-functional-programming-dart-and-flutter +issue_tracker: https://github.com/SandroMaglione/fpdart/issues environment: sdk: ">=2.17.0 <3.0.0" @@ -16,4 +19,4 @@ dev_dependencies: screenshots: - description: "Basic usage of fpdart Option, Either, TaskEither types." - path: example/screenshots/screenshot_fpdart.png + path: ../../resources/screenshots/screenshot_fpdart.png diff --git a/test/analysis_options.yaml b/packages/fpdart/test/analysis_options.yaml similarity index 100% rename from test/analysis_options.yaml rename to packages/fpdart/test/analysis_options.yaml diff --git a/test/src/band_test.dart b/packages/fpdart/test/src/band_test.dart similarity index 100% rename from test/src/band_test.dart rename to packages/fpdart/test/src/band_test.dart diff --git a/test/src/boolean_test.dart b/packages/fpdart/test/src/boolean_test.dart similarity index 100% rename from test/src/boolean_test.dart rename to packages/fpdart/test/src/boolean_test.dart diff --git a/test/src/bounded_semilattice_test.dart b/packages/fpdart/test/src/bounded_semilattice_test.dart similarity index 100% rename from test/src/bounded_semilattice_test.dart rename to packages/fpdart/test/src/bounded_semilattice_test.dart diff --git a/test/src/commutative_group_test.dart b/packages/fpdart/test/src/commutative_group_test.dart similarity index 100% rename from test/src/commutative_group_test.dart rename to packages/fpdart/test/src/commutative_group_test.dart diff --git a/test/src/commutative_monoid_test.dart b/packages/fpdart/test/src/commutative_monoid_test.dart similarity index 100% rename from test/src/commutative_monoid_test.dart rename to packages/fpdart/test/src/commutative_monoid_test.dart diff --git a/test/src/commutative_semigroup_test.dart b/packages/fpdart/test/src/commutative_semigroup_test.dart similarity index 100% rename from test/src/commutative_semigroup_test.dart rename to packages/fpdart/test/src/commutative_semigroup_test.dart diff --git a/test/src/compose_test.dart b/packages/fpdart/test/src/compose_test.dart similarity index 100% rename from test/src/compose_test.dart rename to packages/fpdart/test/src/compose_test.dart diff --git a/test/src/date_test.dart b/packages/fpdart/test/src/date_test.dart similarity index 100% rename from test/src/date_test.dart rename to packages/fpdart/test/src/date_test.dart diff --git a/test/src/either_test.dart b/packages/fpdart/test/src/either_test.dart similarity index 100% rename from test/src/either_test.dart rename to packages/fpdart/test/src/either_test.dart diff --git a/test/src/eq_test.dart b/packages/fpdart/test/src/eq_test.dart similarity index 100% rename from test/src/eq_test.dart rename to packages/fpdart/test/src/eq_test.dart diff --git a/test/src/group_test.dart b/packages/fpdart/test/src/group_test.dart similarity index 100% rename from test/src/group_test.dart rename to packages/fpdart/test/src/group_test.dart diff --git a/test/src/hash_test.dart b/packages/fpdart/test/src/hash_test.dart similarity index 100% rename from test/src/hash_test.dart rename to packages/fpdart/test/src/hash_test.dart diff --git a/test/src/io_either_test.dart b/packages/fpdart/test/src/io_either_test.dart similarity index 100% rename from test/src/io_either_test.dart rename to packages/fpdart/test/src/io_either_test.dart diff --git a/test/src/io_option_test.dart b/packages/fpdart/test/src/io_option_test.dart similarity index 100% rename from test/src/io_option_test.dart rename to packages/fpdart/test/src/io_option_test.dart diff --git a/test/src/io_ref_test.dart b/packages/fpdart/test/src/io_ref_test.dart similarity index 100% rename from test/src/io_ref_test.dart rename to packages/fpdart/test/src/io_ref_test.dart diff --git a/test/src/io_test.dart b/packages/fpdart/test/src/io_test.dart similarity index 100% rename from test/src/io_test.dart rename to packages/fpdart/test/src/io_test.dart diff --git a/test/src/list_extension_test.dart b/packages/fpdart/test/src/list_extension_test.dart similarity index 100% rename from test/src/list_extension_test.dart rename to packages/fpdart/test/src/list_extension_test.dart diff --git a/test/src/map_extension_test.dart b/packages/fpdart/test/src/map_extension_test.dart similarity index 100% rename from test/src/map_extension_test.dart rename to packages/fpdart/test/src/map_extension_test.dart diff --git a/test/src/monoid_test.dart b/packages/fpdart/test/src/monoid_test.dart similarity index 100% rename from test/src/monoid_test.dart rename to packages/fpdart/test/src/monoid_test.dart diff --git a/test/src/nullable_extension_test.dart b/packages/fpdart/test/src/nullable_extension_test.dart similarity index 100% rename from test/src/nullable_extension_test.dart rename to packages/fpdart/test/src/nullable_extension_test.dart diff --git a/test/src/option_test.dart b/packages/fpdart/test/src/option_test.dart similarity index 100% rename from test/src/option_test.dart rename to packages/fpdart/test/src/option_test.dart diff --git a/test/src/order_test.dart b/packages/fpdart/test/src/order_test.dart similarity index 100% rename from test/src/order_test.dart rename to packages/fpdart/test/src/order_test.dart diff --git a/test/src/partial_order_test.dart b/packages/fpdart/test/src/partial_order_test.dart similarity index 100% rename from test/src/partial_order_test.dart rename to packages/fpdart/test/src/partial_order_test.dart diff --git a/test/src/predicate_test.dart b/packages/fpdart/test/src/predicate_test.dart similarity index 100% rename from test/src/predicate_test.dart rename to packages/fpdart/test/src/predicate_test.dart diff --git a/test/src/reader_test.dart b/packages/fpdart/test/src/reader_test.dart similarity index 100% rename from test/src/reader_test.dart rename to packages/fpdart/test/src/reader_test.dart diff --git a/test/src/semigroup_test.dart b/packages/fpdart/test/src/semigroup_test.dart similarity index 100% rename from test/src/semigroup_test.dart rename to packages/fpdart/test/src/semigroup_test.dart diff --git a/test/src/semilattice_test.dart b/packages/fpdart/test/src/semilattice_test.dart similarity index 100% rename from test/src/semilattice_test.dart rename to packages/fpdart/test/src/semilattice_test.dart diff --git a/test/src/state_async_test.dart b/packages/fpdart/test/src/state_async_test.dart similarity index 100% rename from test/src/state_async_test.dart rename to packages/fpdart/test/src/state_async_test.dart diff --git a/test/src/state_test.dart b/packages/fpdart/test/src/state_test.dart similarity index 100% rename from test/src/state_test.dart rename to packages/fpdart/test/src/state_test.dart diff --git a/test/src/task_either_test.dart b/packages/fpdart/test/src/task_either_test.dart similarity index 100% rename from test/src/task_either_test.dart rename to packages/fpdart/test/src/task_either_test.dart diff --git a/test/src/task_option_test.dart b/packages/fpdart/test/src/task_option_test.dart similarity index 100% rename from test/src/task_option_test.dart rename to packages/fpdart/test/src/task_option_test.dart diff --git a/test/src/task_test.dart b/packages/fpdart/test/src/task_test.dart similarity index 100% rename from test/src/task_test.dart rename to packages/fpdart/test/src/task_test.dart diff --git a/test/src/tuple_test.dart b/packages/fpdart/test/src/tuple_test.dart similarity index 100% rename from test/src/tuple_test.dart rename to packages/fpdart/test/src/tuple_test.dart diff --git a/test/src/unit_test.dart b/packages/fpdart/test/src/unit_test.dart similarity index 100% rename from test/src/unit_test.dart rename to packages/fpdart/test/src/unit_test.dart diff --git a/test/src/utils/async_utils.dart b/packages/fpdart/test/src/utils/async_utils.dart similarity index 100% rename from test/src/utils/async_utils.dart rename to packages/fpdart/test/src/utils/async_utils.dart diff --git a/test/src/utils/glados_utils.dart b/packages/fpdart/test/src/utils/glados_utils.dart similarity index 100% rename from test/src/utils/glados_utils.dart rename to packages/fpdart/test/src/utils/glados_utils.dart diff --git a/test/src/utils/match_utils.dart b/packages/fpdart/test/src/utils/match_utils.dart similarity index 100% rename from test/src/utils/match_utils.dart rename to packages/fpdart/test/src/utils/match_utils.dart diff --git a/test/src/utils/utils.dart b/packages/fpdart/test/src/utils/utils.dart similarity index 100% rename from test/src/utils/utils.dart rename to packages/fpdart/test/src/utils/utils.dart diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 51dd42d5..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,413 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: e440ac42679dfc04bbbefb58ed225c994bc7e07fccc8a68ec7d3631a127e5da9 - url: "https://pub.dev" - source: hosted - version: "54.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: "2c2e3721ee9fb36de92faa060f3480c81b23e904352b087e5c64224b1a044427" - url: "https://pub.dev" - source: hosted - version: "5.6.0" - args: - dependency: transitive - description: - name: args - sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440" - url: "https://pub.dev" - source: hosted - version: "2.4.0" - async: - dependency: transitive - description: - name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" - source: hosted - version: "2.10.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - build: - dependency: transitive - description: - name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" - url: "https://pub.dev" - source: hosted - version: "2.3.1" - characters: - dependency: transitive - description: - name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - collection: - dependency: transitive - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - coverage: - dependency: transitive - description: - name: coverage - sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" - url: "https://pub.dev" - source: hosted - version: "1.6.3" - crypto: - dependency: transitive - description: - name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" - source: hosted - version: "3.0.2" - dart_style: - dependency: transitive - description: - name: dart_style - sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4" - url: "https://pub.dev" - source: hosted - version: "2.2.4" - file: - dependency: transitive - description: - name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - glados: - dependency: "direct dev" - description: - name: glados - sha256: "838eac1d9d75a8415ee99a1de82ae156d1cbdf2210be30c52f26a03feeff7ffc" - url: "https://pub.dev" - source: hosted - version: "1.1.6" - glob: - dependency: transitive - description: - name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" - source: hosted - version: "4.0.2" - io: - dependency: transitive - description: - name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - lints: - dependency: "direct dev" - description: - name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - logging: - dependency: transitive - description: - name: logging - sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8 - url: "https://pub.dev" - source: hosted - version: "0.12.14" - meta: - dependency: transitive - description: - name: meta - sha256: "12307e7f0605ce3da64cf0db90e5fcab0869f3ca03f76be6bb2991ce0a55e82b" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - mime: - dependency: transitive - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "8ebdbaa3b96d5285d068f80772390d27c21e1fa10fb2df6627b1b9415043608d" - url: "https://pub.dev" - source: hosted - version: "2.0.1" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" - source: hosted - version: "2.1.3" - shelf: - dependency: transitive - description: - name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c - url: "https://pub.dev" - source: hosted - version: "1.4.0" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: aef74dc9195746a384843102142ab65b6a4735bb3beea791e63527b88cc83306 - url: "https://pub.dev" - source: hosted - version: "3.0.1" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: e792b76b96a36d4a41b819da593aff4bdd413576b3ba6150df5d8d9996d2e74c - url: "https://pub.dev" - source: hosted - version: "1.1.1" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 - url: "https://pub.dev" - source: hosted - version: "1.0.3" - source_gen: - dependency: transitive - description: - name: source_gen - sha256: c2bea18c95cfa0276a366270afaa2850b09b4a76db95d546f3d003dcc7011298 - url: "https://pub.dev" - source: hosted - version: "1.2.7" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" - url: "https://pub.dev" - source: hosted - version: "0.10.12" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - test: - dependency: "direct dev" - description: - name: test - sha256: "5301f54eb6fe945daa99bc8df6ece3f88b5ceaa6f996f250efdaaf63e22886be" - url: "https://pub.dev" - source: hosted - version: "1.23.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: "6182294da5abf431177fccc1ee02401f6df30f766bc6130a0852c6b6d7ee6b2d" - url: "https://pub.dev" - source: hosted - version: "0.4.18" - test_core: - dependency: transitive - description: - name: test_core - sha256: d2e9240594b409565524802b84b7b39341da36dd6fd8e1660b53ad928ec3e9af - url: "https://pub.dev" - source: hosted - version: "0.4.24" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" - source: hosted - version: "1.3.1" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: f24bfb5ea0b015205e583dda73d67de44785d583ad0889929deaff3a32359ff5 - url: "https://pub.dev" - source: hosted - version: "11.1.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" - source: hosted - version: "1.0.2" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: ca49c0bc209c687b887f30527fb6a9d80040b072cc2990f34b9bec3e7663101b - url: "https://pub.dev" - source: hosted - version: "2.3.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" - source: hosted - version: "3.1.1" -sdks: - dart: ">=2.19.0 <4.0.0" diff --git a/example/screenshots/screenshot_fpdart.png b/resources/screenshots/screenshot_fpdart.png similarity index 100% rename from example/screenshots/screenshot_fpdart.png rename to resources/screenshots/screenshot_fpdart.png