Commit Graph

368 Commits

Author SHA1 Message Date
Sergey Penkovsky
9312ef46ea docs(api): improve all DI core code documentation with English dartdoc and examples
- Full English API/class/method documentation for core CherryPick classes:
  * Binding<T>
  * BindingResolver<T>
  * CycleDetector and CycleDetectionMixin
  * GlobalCycleDetector and GlobalCycleDetectionMixin
  * Factory<T>
  * Module
  * Scope
- Each public and private method is now documented in clear DartDoc style with usages
- Added code samples for modules, scope, subscopes, DI resolve/async, cycle detection
- Russian comments completely replaced with English for consistency
- NO logic or API changes, documentation and devex improvement only

Also updated: pubspec.lock for workspace/example folders (auto by dependency changes)
2025-08-12 15:38:15 +03:00
Sergey Penkovsky
900cd68663 chore(release): publish packages
- cherrypick@3.0.0-dev.8
 - cherrypick_flutter@1.1.3-dev.8
cherrypick-v3.0.0-dev.8 cherrypick_flutter-v1.1.3-dev.8
2025-08-12 11:33:42 +03:00
Sergey Penkovsky
57e4196b95 Merge pull request #19 from pese-git/talker
Talker
2025-08-12 11:31:20 +03:00
Sergey Penkovsky
358da8f96b docs(logging): update Logging section in README with modern Observer usage and Talker integration examples 2025-08-12 00:32:39 +03:00
Sergey Penkovsky
ea2b6687f4 docs: add full English documentation and usage guide to README.md 2025-08-12 00:29:57 +03:00
Sergey Penkovsky
df00a2a5d2 doc(license): add licnese 2025-08-12 00:29:57 +03:00
Sergey Penkovsky
d5983a4a0b docs: add detailed English documentation and usage examples for TalkerCherryPickObserver 2025-08-12 00:29:57 +03:00
Sergey Penkovsky
125bccfa5a docs(observer): improve documentation, translate all comments to English, add usage examples 2025-08-12 00:29:57 +03:00
Sergey Penkovsky
12b97c9368 chore: update configs and lockfiles 2025-08-12 00:29:57 +03:00
Sergey Penkovsky
424aaa3e22 refactor(tests): replace MockLogger with MockObserver in scope tests to align with updated observer API 2025-08-12 00:29:57 +03:00
Sergey Penkovsky
2ec3a86a2f feat(core): add full DI lifecycle observability via onInstanceDisposed
- Call observer.onInstanceDisposed for every removed/cleaned-up instance in Scope lifecycle
- Makes instance disposal fully observable outside of cache events
- Ensures analytics/logging frameworks get notified of each object removal from memory

Part of complete CherryPickObserver integration for transparent diagnostics and monitoring of DI container.
2025-08-12 00:29:57 +03:00
Sergey Penkovsky
efed72cc39 refactor(core,logger)migrate to CherryPickObserver API and drop CherryPickLogger
BREAKING CHANGE:
- Removed the deprecated CherryPickLogger interface from cherrypick
- Logger/adapters (e.g., talker_cherrypick_logger) must now implement CherryPickObserver
- talker_cherrypick_logger: replace TalkerCherryPickLogger with TalkerCherryPickObserver
- All usages, docs, tests migrated to observer API
- Improved test mocks and integration tests for observer pattern
- Removed obsolete files: cherrypick/src/logger.dart, talker_cherrypick_logger/src/talker_cherrypick_logger.dart
- Updated README and example usages for new CherryPickObserver model

This refactor introduces a unified observer pattern (CherryPickObserver) to handle all DI lifecycle events, replacing the limited info/warn/error logger pattern.
All external logging adapters and integrations must migrate to use CherryPickObserver.
2025-08-12 00:29:41 +03:00
Sergey Penkovsky
4dc9e269cd feat(logging): add talker_dio_logger and talker_bloc_logger integration, improve cherrypick logger structure, add UI log screen for DI and network/bloc debug 2025-08-12 00:25:28 +03:00
Sergey Penkovsky
d153ab4255 start implement talker logger for cherrypick 2025-08-12 00:25:28 +03:00
Sergey Penkovsky
6924ccd07b docs(README): add section with overview table for additional modules
- Introduce an 'Additional Modules' section before 'Contributing'
- Document cherrypick_annotations, cherrypick_generator, and cherrypick_flutter with pub.dev and README links
2025-08-11 23:14:23 +03:00
Sergey Penkovsky
26b843f791 docs(README): refactor structure and improve clarity of advanced features
- Move and consolidate 'Advanced Features' sections, including Logging, Circular Dependency Detection, Hierarchical Subscopes, and Performance Improvements
- Reword and reorganize 'Disposable' and 'Dependency Resolution API' sections
- Clean up list styling and table of contents for accuracy
- Add clarity to documentation links and info blocks
2025-08-11 22:55:31 +03:00
Sergey Penkovsky
8eafba4e4b docs(README): add 'Hierarchical Subscopes' section and update structure for advanced features clarity 2025-08-11 22:28:46 +03:00
Sergey Penkovsky
ad6e9bbc3d doc(readme): update title 2025-08-11 22:15:27 +03:00
Sergey Penkovsky
bea8affcab doc(readme): performance information moved to top of document 2025-08-11 22:06:38 +03:00
Sergey Penkovsky
1d7b9a9166 doc(readme): remove duplicate text 2025-08-11 22:01:09 +03:00
Sergey Penkovsky
016c212063 fix(doc): remove hide symbol 2025-08-11 21:54:24 +03:00
Sergey Penkovsky
d93d4173a2 chore(release): publish packages
- cherrypick@3.0.0-dev.7
 - cherrypick_annotations@1.1.1
 - cherrypick_flutter@1.1.3-dev.7
 - cherrypick_generator@1.1.1
cherrypick-v3.0.0-dev.7 cherrypick_annotations-v1.1.1 cherrypick_flutter-v1.1.3-dev.7 cherrypick_generator-v1.1.1
2025-08-11 12:38:17 +03:00
Sergey Penkovsky
85aa23d7ed Update README.md 2025-08-11 12:35:02 +03:00
Sergey Penkovsky
51cf4a0dc0 docs(readme): add comprehensive section on annotations and DI code generation
- Added 'Using Annotations & Code Generation' section explaining DI annotations flow.
- Included full table of supported annotations, practical usage examples, setup steps, troubleshooting, and references.
- Improves onboarding for CherryPick users using @injectable, @module, @provide, @named, @scope, @params and related features.

See doc/annotations_en.md and generator/module READMEs for extended docs.
2025-08-11 12:24:44 +03:00
Sergey Penkovsky
8f980ff111 docs(readme): add detailed section and examples for automatic Disposable resource cleanup\n\n- Added a dedicated section with English description and code samples on using Disposable for automatic resource management.\n- Updated Features to include automatic resource cleanup for Disposable dependencies.\n\nHelps developers understand and implement robust DI resource management practices. 2025-08-11 12:02:32 +03:00
Sergey Penkovsky
4d872d7c25 docs(disposable): add detailed English documentation and usage examples for Disposable interface; chore: update binding_resolver and add explanatory comment in scope_test for deprecated usage.\n\n- Expanded Disposable interface docs, added sync & async example classes, and CherryPick integration sample.\n- Clarified how to implement and use Disposable in DI context.\n- Updated binding_resolver for internal improvements.\n- Added ignore for deprecated member use in scope_test for clarity and future upgrades.\n\nBREAKING CHANGE: Documentation style enhancement and clearer API usage for Disposable implementations. 2025-08-11 11:53:25 +03:00
Sergey Penkovsky
450f4231cb Merge pull request #14 from pese-git/dispose
Dispose
2025-08-11 11:40:57 +03:00
Sergey Penkovsky
cd1b9cf49d fix(comment): fix warnings 2025-08-08 23:42:35 +03:00
Sergey Penkovsky
33775f5748 fix(license): correct urls 2025-08-08 23:24:05 +03:00
Sergey Penkovsky
e5848784ac refactor(core): make closeRootScope async and await dispose
BREAKING CHANGE: closeRootScope is now async (returns Future<void> and must be awaited). This change improves resource lifecycle management by allowing asynchronous cleanup when disposing the root Scope. All usages of closeRootScope should be updated to use await.

- Change closeRootScope from void to Future<void> and add async keyword
- Await _rootScopefor correct async disposal
- Ensures proper disposal and better future extensibility for async resources

Closes #xxx (replace if issue exists)
2025-08-08 16:56:37 +03:00
Sergey Penkovsky
40b3cbb422 chore(release): publish packages
- cherrypick@3.0.0-dev.6
 - cherrypick_flutter@1.1.3-dev.6
cherrypick_flutter-v1.1.3-dev.6 cherrypick-v3.0.0-dev.6
2025-08-08 16:23:13 +03:00
Sergey Penkovsky
a4b0ddfa54 docs(faq): add best practice FAQ about using await with scope disposal
- Added FAQ section in documentation (README and tutorials, EN + RU) recommending always using await when calling CherryPick.closeRootScope, scope.closeScope, or scope.dispose, even if no services implement Disposable.
- Clarifies future-proof resource management for all users.
2025-08-08 16:08:33 +03:00
Sergey Penkovsky
547a15fa4e docs(faq): add best practice FAQ about using await with scope disposal
- Added FAQ section in documentation (README and tutorials, EN + RU) recommending always using await when calling CherryPick.closeRootScope, scope.closeScope, or scope.dispose, even if no services implement Disposable.
- Clarifies future-proof resource management for all users.
2025-08-08 16:08:33 +03:00
Sergey Penkovsky
a9c95f6a89 docs+feat: add Disposable interface source and usage example
feat(core,doc): unified async dispose mechanism for resource cleanup

BREAKING CHANGE:

- Added full support for asynchronous resource cleanup via a unified FutureOr<void> dispose() method in the Disposable interface.
- The Scope now provides only Future<void> dispose() for disposing all tracked resources and child scopes (sync-only dispose() was removed).
- All calls to cleanup in code and tests (scope itself, subscopes, and custom modules) now require await ...dispose().
- Documentation and all examples updated: resource management is always async and must be awaited; Disposable implementers may use both sync and async cleanup.
- Old-style, synchronous cleanup methods have been completely removed (API is now consistently async for all DI lifecycle management).
- Example and tutorial code now demonstrate async resource disposal patterns.
2025-08-08 16:08:29 +03:00
Sergey Penkovsky
61f2268d63 fix(riverpod-adapter): update implementation in riverpod_adapter.dart 2025-08-08 15:08:27 +03:00
Sergey Penkovsky
f6fcb76730 docs(benchmark): update DI benchmark reports with new scenario tables and updated explanations 2025-08-08 15:02:45 +03:00
Sergey Penkovsky
f8bbaf6c2c Merge pull request #18 from pese-git/logger
Logger
2025-08-08 14:27:53 +03:00
Sergey Penkovsky
2ebc997fea docs(readme): add comprehensive DI state and action logging to features 2025-08-08 13:40:39 +03:00
Sergey Penkovsky
d15f3063fc hotfix 2025-08-08 12:49:12 +03:00
Sergey Penkovsky
1e8b8db64a docs(helper): add complete DartDoc with real usage examples for CherryPick class 2025-08-08 12:43:09 +03:00
Sergey Penkovsky
c3ec52823e fix: improve global cycle detector logic 2025-08-08 12:24:07 +03:00
Sergey Penkovsky
16e05d27c5 docs(log_format): add detailed English documentation for formatLogMessage function 2025-08-08 11:28:12 +03:00
Sergey Penkovsky
1131be44da feat(core): refactor root scope API, improve logger injection, helpers, and tests
- BREAKING CHANGE: introduce CherryPick.openRootScope
- add logger injection to Scope
- refactor helper and scope logic
- improve internal logging
- enhance and update tests
- add log_format.dart module
2025-08-08 11:24:03 +03:00
Sergey Penkovsky
c971b59483 feat(postly): add explicit PrintLogger setup in main.dart for debug builds 2025-08-08 08:24:19 +03:00
Sergey Penkovsky
aa97632add feat(logger): add extensible logging API, usage examples, and bilingual documentation
- Introduce CherryPickLogger interface, PrintLogger and SilentLogger implementations
- Add setGlobalLogger() to CherryPick API for custom DI logging
- Log key events (scope, module, error) via logger throughout DI lifecycle
- Comprehensive comments and code documentation in both English and Russian
- Document usage of logging system in quick_start and full_tutorial documentation (EN/RU)
- Provide usage examples in docs and code comments
- No logging inside GlobalCycleDetectionMixin (design choice: exceptions handled at Scope, not detector/mixin level) and detailed architectural reasoning
- Update helper.dart, logger.dart: comments, examples, API doc improvements
BREAKING CHANGE: Projects can now inject any logger via CherryPick.setGlobalLogger; default log behavior clarified and docstrings/usage examples enhanced
2025-08-08 08:24:13 +03:00
Sergey Penkovsky
41d49e98d0 docs(report): update comparative DI benchmark results and conclusions for cherrypick, get_it, riverpod (eng, ru) 2025-08-07 16:46:53 +03:00
Sergey Penkovsky
44a8a3fcb2 chore(pubspec): update pubspec and lock files for all packages, version bump and deps sync 2025-08-07 16:28:47 +03:00
Sergey Penkovsky
475deac1e0 chore(release): publish packages
- cherrypick@3.0.0-dev.5
 - cherrypick_flutter@1.1.3-dev.5
cherrypick-v3.0.0-dev.5 cherrypick_flutter-v1.1.3-dev.5
2025-08-07 16:23:12 +03:00
Sergey Penkovsky
f06f4564d9 Merge pull request #15 from pese-git/improve
perf(scope): speed up dependency lookup with Map-based binding resolv…
2025-08-07 16:19:11 +03:00
Sergey Penkovsky
70731c7e94 refactor(scope): simplify _findBindingResolver<T> with one-liner and optional chaining
The function is now shorter, more readable and uses modern Dart null-safety idioms. No functional change.
2025-08-07 15:48:04 +03:00