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. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. 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 ## 2025-05-22
### Changes ### Changes

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
name: cherrypick name: cherrypick
description: Cherrypick is a small dependency injection (DI) library for dart/flutter projects. 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/ homepage: https://pese-git.github.io/cherrypick-site/
documentation: https://github.com/pese-git/cherrypick/wiki documentation: https://github.com/pese-git/cherrypick/wiki
repository: https://github.com/pese-git/cherrypick repository: https://github.com/pese-git/cherrypick

View File

@@ -1,5 +1,5 @@
name: cherrypick_annotations name: cherrypick_annotations
description: A starting point for Dart libraries or applications. description: Collection annotations.
version: 1.1.0-dev.0 version: 1.1.0-dev.0
documentation: https://github.com/pese-git/cherrypick/wiki documentation: https://github.com/pese-git/cherrypick/wiki
repository: https://github.com/pese-git/cherrypick 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 ## 1.1.2-dev.0
- **FIX**: fix warning. - **FIX**: fix warning.

View File

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

View File

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

View File

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

View File

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

View File

@@ -11,8 +11,8 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
cherrypick: ^2.2.0-dev.0 cherrypick: ^2.2.0-dev.1
cherrypick_flutter: ^1.1.2-dev.0 cherrypick_flutter: ^1.1.2-dev.1
cherrypick_annotations: ^1.1.0-dev.0 cherrypick_annotations: ^1.1.0-dev.0
@@ -22,10 +22,10 @@ dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flutter_lints: ^4.0.0 flutter_lints: ^5.0.0
cherrypick_generator: ^1.1.0-dev.0 cherrypick_generator: ^1.1.0-dev.1
build_runner: any build_runner: ^2.4.13
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec # 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'; import 'app_router.gr.dart';
@AutoRouterConfig() @AutoRouterConfig()
class AppRouter extends $AppRouter { class AppRouter extends RootStackRouter {
@override @override
List<AutoRoute> get routes => [ List<AutoRoute> get routes => [
AutoRoute(page: PostsRoute.page, initial: true), AutoRoute(page: PostsRoute.page, initial: true),

View File

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

View File

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

View File

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