Commit Graph

338 Commits

Author SHA1 Message Date
Sergey Penkovsky
ed65e3c23d fix(benchmark): improve CherryPickAdapter teardown reliability
- Add error handling for scope disposal
- Add null check for _scope variable
- Prevent concurrent modification exceptions
2025-08-19 09:22:45 +03:00
Sergey Penkovsky
a897c1b31b feat(benchmark_di): add Kiwi DI adapter and CLI integration 2025-08-18 18:40:07 +03:00
Sergey Penkovsky
dd9c3faa62 fix(binding): fix unterminated string literal and syntax issues in binding.dart 2025-08-18 18:35:41 +03:00
Sergey Penkovsky
a4c5fd922e chore(release): publish packages
- cherrypick@3.0.0-dev.10
 - cherrypick_annotations@1.1.2-dev.1
 - cherrypick_flutter@1.1.3-dev.10
 - cherrypick_generator@2.0.0-dev.1
 - talker_cherrypick_logger@1.1.0-dev.5
cherrypick_annotations-v1.1.2-dev.1 cherrypick_flutter-v1.1.3-dev.10 cherrypick_generator-v2.0.0-dev.1 talker_cherrypick_logger-v1.1.0-dev.5 cherrypick-v3.0.0-dev.10
2025-08-15 09:06:46 +03:00
Sergey Penkovsky
8870b8ce54 docs(pub): update homepage and documentation URLs in pubspec.yaml to new official site 2025-08-15 09:04:39 +03:00
Sergey Penkovsky
298cb65ac8 chore(release): publish packages
- talker_cherrypick_logger@1.1.0-dev.4
talker_cherrypick_logger-v1.1.0-dev.4
2025-08-13 15:58:08 +03:00
Sergey Penkovsky
1b9db31c13 docs(readme): update install instructions to use pub.dev as default method and remove obsolete git example
The main installation guide now recommends pub.dev with ^latest tags. Removed the outdated GitHub install block for clarity and simplicity. No functional code changes.
2025-08-13 15:57:28 +03:00
Sergey Penkovsky
ca3cd2c8fd Merge pull request #20 from pese-git/code-format
style: reformat codebase using melos format
2025-08-13 15:46:05 +03:00
Sergey Penkovsky
c91e15319b style: reformat codebase using melos format
Applied consistent code formatting across all packages using \$ melos format
  └> dart format .
     └> RUNNING (in 8 packages)

--------------------------------------------------------------------------------
benchmark_di:
Formatted 18 files (0 changed) in 0.30 seconds.
benchmark_di: SUCCESS
--------------------------------------------------------------------------------
cherrypick:
Formatted 24 files (0 changed) in 0.34 seconds.
cherrypick: SUCCESS
--------------------------------------------------------------------------------
cherrypick_annotations:
Formatted 11 files (0 changed) in 0.14 seconds.
cherrypick_annotations: SUCCESS
--------------------------------------------------------------------------------
cherrypick_flutter:
Formatted 3 files (0 changed) in 0.15 seconds.
cherrypick_flutter: SUCCESS
--------------------------------------------------------------------------------
cherrypick_generator:
Formatted 17 files (0 changed) in 0.27 seconds.
cherrypick_generator: SUCCESS
--------------------------------------------------------------------------------
client_app:
Formatted 4 files (0 changed) in 0.14 seconds.
client_app: SUCCESS
--------------------------------------------------------------------------------
postly:
Formatted lib/router/app_router.gr.dart
Formatted 23 files (1 changed) in 0.33 seconds.
postly: SUCCESS
--------------------------------------------------------------------------------
talker_cherrypick_logger:
Formatted 4 files (0 changed) in 0.18 seconds.
talker_cherrypick_logger: SUCCESS
--------------------------------------------------------------------------------

$ melos format
  └> dart format .
     └> SUCCESS. No functional or logic changes included.
2025-08-13 15:38:44 +03:00
Sergey Penkovsky
99e662124f chore(release): publish packages
- talker_cherrypick_logger@1.1.0-dev.3
talker_cherrypick_logger-v1.1.0-dev.3
2025-08-13 15:27:51 +03:00
Sergey Penkovsky
03f54981f3 chore(talker_cherrypick_logger): update package description in pubspec.yaml 2025-08-13 15:26:53 +03:00
Sergey Penkovsky
349efe6ba6 chore(release): publish packages
- talker_cherrypick_logger@1.1.0-dev.2
talker_cherrypick_logger-v1.1.0-dev.2
2025-08-13 15:23:21 +03:00
Sergey Penkovsky
c2f0e027b6 fix(gitignore) - update gitignore 2025-08-13 15:18:39 +03:00
Sergey Penkovsky
f85036d20f chore(release): publish packages
- cherrypick@3.0.0-dev.9
 - cherrypick_annotations@1.1.2-dev.0
 - cherrypick_flutter@1.1.3-dev.9
 - cherrypick_generator@2.0.0-dev.0
 - talker_cherrypick_logger@1.1.0-dev.0
cherrypick-v3.0.0-dev.9 cherrypick_annotations-v1.1.2-dev.0 cherrypick_flutter-v1.1.3-dev.9 cherrypick_generator-v2.0.0-dev.0 talker_cherrypick_logger-v1.1.0-dev.0
2025-08-13 15:11:23 +03:00
Sergey Penkovsky
db4d128d04 docs(readme): add talker_cherrypick_logger to Additional Modules section
Added information about the talker_cherrypick_logger official module in the Additional Modules table in README. This module provides seamless DI event logging integration with the Talker logging framework.
2025-08-13 15:07:12 +03:00
Sergey Penkovsky
2c4e2ed251 chore(pubspec): update metadata with homepage, docs, repository and topics
Added homepage URL, documentation, repository, issue tracker, and topics to pubspec.yaml for better package metadata. Removed 'publish_to: none' and outdated repository comment.
2025-08-13 14:56:10 +03:00
Sergey Penkovsky
7b4642f407 doc(readme): update readme 2025-08-13 09:11:06 +03:00
Sergey Penkovsky
7d45d00d6a docs(generator): improve and unify English documentation and examples for all DI source files
- Added comprehensive English documentation for all DI generator and support files:
  * inject_generator.dart — full class/method doc-comments, usage samples
  * module_generator.dart — doc-comments, feature explanation, complete example
  * src/annotation_validator.dart — class and detailed static method descriptions
  * src/type_parser.dart — doc, example for ParsedType and TypeParser, specific codegen notes
  * src/bind_spec.dart — interface, static factory, and codegen docs with DI scenarios
  * src/bind_parameters_spec.dart — details and samples for code generation logic
  * src/metadata_utils.dart — full doc and examples for annotation utilities
  * src/exceptions.dart — user- and contributor-friendly errors, structured output, category explanations
  * src/generated_class.dart — usage-centric doc-comments, example of resulting generated DI class
- Removed Russian/duplicate comments for full clarity and maintainability
- Ensured that new and existing contributors can easily extend and maintain DI code generation logic

BREAKING CHANGE: All documentation now English-only; comments include usage examples for each principal structure or routine

See #docs, #generator, #cherrypick
2025-08-13 08:57:06 +03:00
Sergey Penkovsky
884df50a34 docs(annotations): unify and improve English DartDoc for all DI annotations
- Updated all annotation files with complete English DartDoc, field/class/method usage, practical code samples
- Unified documentation style for @inject, @injectable, @instance, @singleton, @named, @scope, @params, @provide, @module
- Removed Russian comments for clarity and consistency
- Improved discoverability and IDE/autocomplete experience for CherryPick DI users
- No functional or API changes; documentation/dev experience only
2025-08-12 16:18:53 +03:00
Sergey Penkovsky
5710af2f9b docs(provider): add detailed English API documentation for CherryPickProvider Flutter integration
- Replaced all comments with complete DartDoc in English for CherryPickProvider
- Documented all methods (constructor, of, openRootScope, openSubScope, updateShouldNotify)
- Added code samples for typical Flutter+CherryPick integration, root and subscope usage
- Makes Flutter DI integration intuitive for new users and improves IDE support
- No logic or API changes, documentation only
2025-08-12 15:46:14 +03:00
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