Compare commits

..

6 Commits

Author SHA1 Message Date
Sergey Penkovsky
f8340c6a84 chore(release): publish packages
- cherrypick@2.2.0-dev.1
 - cherrypick_generator@1.1.0-dev.1
 - cherrypick_flutter@1.1.2-dev.1
2025-05-22 23:52:55 +03:00
Sergey Penkovsky
62a1655728 fix: fix warnings 2025-05-22 23:52:02 +03:00
Sergey Penkovsky
fc941c0041 update deps 2025-05-22 23:50:55 +03:00
Sergey Penkovsky
5161fa19b6 refactor code 2025-05-22 23:32:26 +03:00
Sergey Penkovsky
8093f077b1 fix: optimize code 2025-05-22 23:27:41 +03:00
Sergey Penkovsky
45b93db6f5 fix pubspecs 2025-05-22 16:58:59 +03:00
16 changed files with 119 additions and 78 deletions

View File

@@ -3,6 +3,39 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## 2025-05-22
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`cherrypick` - `v2.2.0-dev.1`](#cherrypick---v220-dev1)
- [`cherrypick_generator` - `v1.1.0-dev.1`](#cherrypick_generator---v110-dev1)
- [`cherrypick_flutter` - `v1.1.2-dev.1`](#cherrypick_flutter---v112-dev1)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `cherrypick_flutter` - `v1.1.2-dev.1`
---
#### `cherrypick` - `v2.2.0-dev.1`
- **FIX**: fix warnings.
#### `cherrypick_generator` - `v1.1.0-dev.1`
- **FIX**: optimize code.
## 2025-05-22
### Changes

View File

@@ -1,3 +1,7 @@
## 2.2.0-dev.1
- **FIX**: fix warnings.
## 2.2.0-dev.0
- **FEAT**: Add async dependency resolution and enhance example.

View File

@@ -1,5 +1,4 @@
import 'dart:async';
import 'package:meta/meta.dart';
import 'package:cherrypick/cherrypick.dart';
class AppModule extends Module {
@@ -95,21 +94,19 @@ class NetworkDataRepository implements DataRepository {
}
abstract class ApiClient {
Future sendRequest({@required String url, String token, Map requestBody});
Future sendRequest({String url, String token, Map requestBody});
}
class ApiClientMock implements ApiClient {
@override
Future sendRequest(
{@required String? url, String? token, Map? requestBody}) async {
Future sendRequest({String? url, String? token, Map? requestBody}) async {
return 'Local Data';
}
}
class ApiClientImpl implements ApiClient {
@override
Future sendRequest(
{@required String? url, String? token, Map? requestBody}) async {
Future sendRequest({String? url, String? token, Map? requestBody}) async {
return 'Network data';
}
}

View File

@@ -1,6 +1,6 @@
name: cherrypick
description: Cherrypick is a small dependency injection (DI) library for dart/flutter projects.
version: 2.2.0-dev.0
version: 2.2.0-dev.1
homepage: https://pese-git.github.io/cherrypick-site/
documentation: https://github.com/pese-git/cherrypick/wiki
repository: https://github.com/pese-git/cherrypick

View File

@@ -1,5 +1,5 @@
name: cherrypick_annotations
description: A starting point for Dart libraries or applications.
description: Collection annotations.
version: 1.1.0-dev.0
documentation: https://github.com/pese-git/cherrypick/wiki
repository: https://github.com/pese-git/cherrypick

View File

@@ -1,3 +1,7 @@
## 1.1.2-dev.1
- Update a dependency to the latest release.
## 1.1.2-dev.0
- **FIX**: fix warning.

View File

@@ -1,6 +1,6 @@
name: cherrypick_flutter
description: "Flutter library that allows access to the root scope through the context using `CherryPickProvider`."
version: 1.1.2-dev.0
version: 1.1.2-dev.1
homepage: https://pese-git.github.io/cherrypick-site/
documentation: https://github.com/pese-git/cherrypick/wiki
repository: https://github.com/pese-git/cherrypick
@@ -13,7 +13,7 @@ environment:
dependencies:
flutter:
sdk: flutter
cherrypick: ^2.2.0-dev.0
cherrypick: ^2.2.0-dev.1
dev_dependencies:
flutter_test:

View File

@@ -1,3 +1,7 @@
## 1.1.0-dev.1
- **FIX**: optimize code.
## 1.1.0-dev.0
- **FIX**: fix warning conflict with names.

View File

@@ -17,6 +17,11 @@ import 'package:source_gen/source_gen.dart';
import 'bind_parameters_spec.dart';
import 'metadata_utils.dart';
enum BindingType {
instance,
provide;
}
/// ---------------------------------------------------------------------------
/// BindSpec -- describes a binding specification generated for a dependency.
///
@@ -59,7 +64,7 @@ class BindSpec {
final List<BindParameterSpec> parameters;
/// Binding type: 'instance' or 'provide' (@instance or @provide)
final String bindingType; // 'instance' | 'provide'
final BindingType bindingType; // 'instance' | 'provide'
/// True if the method is asynchronous and uses instance binding (Future)
final bool isAsyncInstance;
@@ -116,16 +121,14 @@ class BindSpec {
String _generateWithParamsProvideClause(int indent) {
// Safe variable name for parameters.
const paramVar = 'args';
final fnArgs = parameters
.map((p) => p.isParams ? paramVar : p.generateArg(paramVar))
.join(', ');
final fnArgs = parameters.map((p) => p.generateArg(paramVar)).join(', ');
final multiLine = fnArgs.length > 60 || fnArgs.contains('\n');
switch (bindingType) {
case 'instance':
case BindingType.instance:
return isAsyncInstance
? '.toInstanceAsync(($fnArgs) => $methodName($fnArgs))'
: '.toInstance(($fnArgs) => $methodName($fnArgs))';
case 'provide':
case BindingType.provide:
default:
if (isAsyncProvide) {
return multiLine
@@ -144,11 +147,11 @@ class BindSpec {
final argsStr = parameters.map((p) => p.generateArg()).join(', ');
final multiLine = argsStr.length > 60 || argsStr.contains('\n');
switch (bindingType) {
case 'instance':
case BindingType.instance:
return isAsyncInstance
? '.toInstanceAsync($methodName($argsStr))'
: '.toInstance($methodName($argsStr))';
case 'provide':
case BindingType.provide:
default:
if (isAsyncProvide) {
return multiLine
@@ -212,7 +215,8 @@ class BindSpec {
element: method,
);
}
final bindingType = hasInstance ? 'instance' : 'provide';
final bindingType =
hasInstance ? BindingType.instance : BindingType.provide;
// -- Extract inner type for Future<T> and set async flags.
bool isAsyncInstance = false;
@@ -220,8 +224,8 @@ class BindSpec {
final futureInnerType = _extractFutureInnerType(returnType);
if (futureInnerType != null) {
returnType = futureInnerType;
if (bindingType == 'instance') isAsyncInstance = true;
if (bindingType == 'provide') isAsyncProvide = true;
if (bindingType == BindingType.instance) isAsyncInstance = true;
if (bindingType == BindingType.provide) isAsyncProvide = true;
}
return BindSpec(

View File

@@ -1,6 +1,6 @@
name: cherrypick_generator
description: Code generator for cherrypick annotations
version: 1.1.0-dev.0
version: 1.1.0-dev.1
documentation: https://github.com/pese-git/cherrypick/wiki
repository: https://github.com/pese-git/cherrypick
issue_tracker: https://github.com/pese-git/cherrypick/issues
@@ -11,13 +11,13 @@ environment:
# Add regular dependencies here.
dependencies:
cherrypick_annotations: ^1.1.0-dev.0
analyzer: any
dart_style: any
build: any
build_runner: any
source_gen: any
analyzer: ^6.7.0
dart_style: ^2.3.7
build: ^2.4.1
build_runner: ^2.4.13
source_gen: ^1.5.0
dev_dependencies:
lints: ^5.0.0
mockito: any
mockito: ^5.4.4
test: ^1.25.8

View File

@@ -132,28 +132,28 @@ packages:
path: "../../cherrypick"
relative: true
source: path
version: "2.1.0"
version: "2.2.0-dev.0"
cherrypick_annotations:
dependency: "direct main"
description:
path: "../../cherrypick_annotations"
relative: true
source: path
version: "1.0.0"
version: "1.1.0-dev.0"
cherrypick_flutter:
dependency: "direct main"
description:
path: "../../cherrypick_flutter"
relative: true
source: path
version: "1.1.1"
version: "1.1.2-dev.0"
cherrypick_generator:
dependency: "direct dev"
description:
path: "../../cherrypick_generator"
relative: true
source: path
version: "1.0.0"
version: "1.1.0-dev.0"
clock:
dependency: transitive
description:
@@ -243,10 +243,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "5.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -344,10 +344,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "5.0.0"
logging:
dependency: transitive
description:

View File

@@ -11,8 +11,8 @@ environment:
dependencies:
flutter:
sdk: flutter
cherrypick: ^2.2.0-dev.0
cherrypick_flutter: ^1.1.2-dev.0
cherrypick: ^2.2.0-dev.1
cherrypick_flutter: ^1.1.2-dev.1
cherrypick_annotations: ^1.1.0-dev.0
@@ -22,10 +22,10 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^4.0.0
flutter_lints: ^5.0.0
cherrypick_generator: ^1.1.0-dev.0
build_runner: any
cherrypick_generator: ^1.1.0-dev.1
build_runner: ^2.4.13
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

View File

@@ -3,7 +3,7 @@ import 'package:auto_route/auto_route.dart';
import 'app_router.gr.dart';
@AutoRouterConfig()
class AppRouter extends $AppRouter {
class AppRouter extends RootStackRouter {
@override
List<AutoRoute> get routes => [
AutoRoute(page: PostsRoute.page, initial: true),

View File

@@ -42,26 +42,26 @@ packages:
dependency: "direct main"
description:
name: auto_route
sha256: eb33554581a0a4aa7e6da0f13a44291a55bf71359012f1d9feb41634ff908ff8
sha256: "1d1bd908a1fec327719326d5d0791edd37f16caff6493c01003689fb03315ad7"
url: "https://pub.dev"
source: hosted
version: "7.9.2"
version: "9.3.0+1"
auto_route_generator:
dependency: "direct dev"
description:
name: auto_route_generator
sha256: "11067a3bcd643812518fe26c0c9ec073990286cabfd9d74b6da9ef9b913c4d22"
sha256: c9086eb07271e51b44071ad5cff34e889f3156710b964a308c2ab590769e79e6
url: "https://pub.dev"
source: hosted
version: "7.3.2"
version: "9.0.0"
bloc:
dependency: transitive
description:
name: bloc
sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e"
sha256: "52c10575f4445c61dd9e0cafcc6356fdd827c4c64dd7945ef3c4105f6b6ac189"
url: "https://pub.dev"
source: hosted
version: "8.1.4"
version: "9.0.0"
boolean_selector:
dependency: transitive
description:
@@ -156,21 +156,21 @@ packages:
path: "../../cherrypick"
relative: true
source: path
version: "2.1.0"
version: "2.2.0-dev.0"
cherrypick_annotations:
dependency: "direct main"
description:
path: "../../cherrypick_annotations"
relative: true
source: path
version: "1.0.0"
version: "1.1.0-dev.0"
cherrypick_generator:
dependency: "direct dev"
description:
path: "../../cherrypick_generator"
relative: true
source: path
version: "1.0.0"
version: "1.1.0-dev.0"
clock:
dependency: transitive
description:
@@ -284,18 +284,18 @@ packages:
dependency: "direct main"
description:
name: flutter_bloc
sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
sha256: cf51747952201a455a1c840f8171d273be009b932c75093020f9af64f2123e38
url: "https://pub.dev"
source: hosted
version: "8.1.6"
version: "9.1.1"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "5.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -417,10 +417,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413"
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "5.0.0"
logging:
dependency: transitive
description:
@@ -553,10 +553,10 @@ packages:
dependency: "direct dev"
description:
name: retrofit_generator
sha256: "8dfc406cdfa171f33cbd21bf5bd8b6763548cc217de19cdeaa07a76727fac4ca"
sha256: f76fdb2b66854690d5a332e7364d7561fc9dc2b3c924d7956ab8070495e21f6a
url: "https://pub.dev"
source: hosted
version: "8.2.1"
version: "9.1.5"
shelf:
dependency: transitive
description:
@@ -658,14 +658,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.2"
tuple:
dependency: transitive
description:
name: tuple
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
url: "https://pub.dev"
source: hosted
version: "2.0.2"
typed_data:
dependency: transitive
description:

View File

@@ -12,15 +12,15 @@ dependencies:
flutter:
sdk: flutter
cherrypick: ^2.2.0-dev.0
cherrypick: ^2.2.0-dev.1
cherrypick_annotations: ^1.1.0-dev.0
dio: ^5.4.0
retrofit: ^4.0.3
freezed_annotation: ^2.0.0
freezed_annotation: ^2.3.2
dartz: ^0.10.1
flutter_bloc: ^8.1.2
auto_route: ^7.8.4
flutter_bloc: ^9.1.1
auto_route: ^9.3.0+1
cupertino_icons: ^1.0.8
@@ -28,15 +28,15 @@ dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^4.0.0
flutter_lints: ^5.0.0
cherrypick_generator: ^1.1.0-dev.0
build_runner: any
cherrypick_generator: ^1.1.0-dev.1
build_runner: 2.4.13
retrofit_generator: ^8.0.4
retrofit_generator: ^9.1.5
freezed: ^2.3.2
json_serializable: any
auto_route_generator: ^7.3.2
json_serializable: ^6.9.0
auto_route_generator: ^9.0.0
flutter:

View File

@@ -24,8 +24,11 @@ scripts:
run: |
melos exec --scope="postly" -- dart run build_runner build --delete-conflicting-outputs
outdated:
exec: dart pub outdated
upgrade:
exec: darp pub upgrade
exec: dart pub upgrade --major-versions
drop:
exec: flutter clean