diff --git a/benchmark_di/lib/cli/benchmark_cli.dart b/benchmark_di/lib/cli/benchmark_cli.dart index ba0be2a..793e8e7 100644 --- a/benchmark_di/lib/cli/benchmark_cli.dart +++ b/benchmark_di/lib/cli/benchmark_cli.dart @@ -98,7 +98,7 @@ class BenchmarkCliRunner { final di = RiverpodAdapter(); if (scenario == UniversalScenario.asyncChain) { final benchAsync = UniversalChainAsyncBenchmark< - Map>> ( + Map>>( di, chainCount: c, nestingDepth: d, @@ -111,7 +111,7 @@ class BenchmarkCliRunner { ); } else { final benchSync = UniversalChainBenchmark< - Map>> ( + Map>>( di, chainCount: c, nestingDepth: d, @@ -127,7 +127,8 @@ class BenchmarkCliRunner { } else if (config.di == 'yx_scope') { final di = YxScopeAdapter(); if (scenario == UniversalScenario.asyncChain) { - final benchAsync = UniversalChainAsyncBenchmark( + final benchAsync = + UniversalChainAsyncBenchmark( di, chainCount: c, nestingDepth: d, @@ -139,7 +140,8 @@ class BenchmarkCliRunner { repeats: config.repeats, ); } else { - final benchSync = UniversalChainBenchmark( + final benchSync = + UniversalChainBenchmark( di, chainCount: c, nestingDepth: d, diff --git a/benchmark_di/lib/di_adapters/kiwi_adapter.dart b/benchmark_di/lib/di_adapters/kiwi_adapter.dart index be98987..1769859 100644 --- a/benchmark_di/lib/di_adapters/kiwi_adapter.dart +++ b/benchmark_di/lib/di_adapters/kiwi_adapter.dart @@ -20,77 +20,80 @@ class KiwiAdapter extends DIAdapter { registration(_container); } -@override -Registration universalRegistration({ - required S scenario, - required int chainCount, - required int nestingDepth, - required UniversalBindingMode bindingMode, -}) { - if (scenario is UniversalScenario) { - if (scenario == UniversalScenario.asyncChain || - bindingMode == UniversalBindingMode.asyncStrategy) { - throw UnsupportedError('Kiwi does not support async dependencies or async binding scenarios.'); - } - return (container) { - switch (scenario) { - case UniversalScenario.asyncChain: - break; - case UniversalScenario.register: - container.registerSingleton( - (c) => UniversalServiceImpl(value: 'reg', dependency: null), - ); - break; - case UniversalScenario.named: - container.registerFactory( - (c) => UniversalServiceImpl(value: 'impl1'), name: 'impl1'); - container.registerFactory( - (c) => UniversalServiceImpl(value: 'impl2'), name: 'impl2'); - break; - case UniversalScenario.chain: - for (int chain = 1; chain <= chainCount; chain++) { - for (int level = 1; level <= nestingDepth; level++) { - final prevDepName = '${chain}_${level - 1}'; - final depName = '${chain}_$level'; - switch (bindingMode) { - case UniversalBindingMode.singletonStrategy: - container.registerSingleton( - (c) => UniversalServiceImpl( - value: depName, - dependency: level > 1 - ? c.resolve(prevDepName) - : null), - name: depName); - break; - case UniversalBindingMode.factoryStrategy: - container.registerFactory( - (c) => UniversalServiceImpl( - value: depName, - dependency: level > 1 - ? c.resolve(prevDepName) - : null), - name: depName); - break; - case UniversalBindingMode.asyncStrategy: - // Не поддерживается - break; + @override + Registration universalRegistration({ + required S scenario, + required int chainCount, + required int nestingDepth, + required UniversalBindingMode bindingMode, + }) { + if (scenario is UniversalScenario) { + if (scenario == UniversalScenario.asyncChain || + bindingMode == UniversalBindingMode.asyncStrategy) { + throw UnsupportedError( + 'Kiwi does not support async dependencies or async binding scenarios.'); + } + return (container) { + switch (scenario) { + case UniversalScenario.asyncChain: + break; + case UniversalScenario.register: + container.registerSingleton( + (c) => UniversalServiceImpl(value: 'reg', dependency: null), + ); + break; + case UniversalScenario.named: + container.registerFactory( + (c) => UniversalServiceImpl(value: 'impl1'), + name: 'impl1'); + container.registerFactory( + (c) => UniversalServiceImpl(value: 'impl2'), + name: 'impl2'); + break; + case UniversalScenario.chain: + for (int chain = 1; chain <= chainCount; chain++) { + for (int level = 1; level <= nestingDepth; level++) { + final prevDepName = '${chain}_${level - 1}'; + final depName = '${chain}_$level'; + switch (bindingMode) { + case UniversalBindingMode.singletonStrategy: + container.registerSingleton( + (c) => UniversalServiceImpl( + value: depName, + dependency: level > 1 + ? c.resolve(prevDepName) + : null), + name: depName); + break; + case UniversalBindingMode.factoryStrategy: + container.registerFactory( + (c) => UniversalServiceImpl( + value: depName, + dependency: level > 1 + ? c.resolve(prevDepName) + : null), + name: depName); + break; + case UniversalBindingMode.asyncStrategy: + // Не поддерживается + break; + } } } - } - final depName = '${chainCount}_$nestingDepth'; - container.registerSingleton( - (c) => c.resolve(depName)); - break; - case UniversalScenario.override: - final depName = '${chainCount}_$nestingDepth'; - container.registerSingleton( - (c) => c.resolve(depName)); - break; - } - }; + final depName = '${chainCount}_$nestingDepth'; + container.registerSingleton( + (c) => c.resolve(depName)); + break; + case UniversalScenario.override: + final depName = '${chainCount}_$nestingDepth'; + container.registerSingleton( + (c) => c.resolve(depName)); + break; + } + }; + } + throw UnsupportedError('Scenario $scenario not supported by KiwiAdapter'); } - throw UnsupportedError('Scenario $scenario not supported by KiwiAdapter'); -} @override T resolve({String? named}) { diff --git a/benchmark_di/lib/di_adapters/yx_scope_adapter.dart b/benchmark_di/lib/di_adapters/yx_scope_adapter.dart index ad0e936..a88bbc0 100644 --- a/benchmark_di/lib/di_adapters/yx_scope_adapter.dart +++ b/benchmark_di/lib/di_adapters/yx_scope_adapter.dart @@ -11,7 +11,8 @@ class YxScopeAdapter extends DIAdapter { late UniversalYxScopeContainer _scope; @override - void setupDependencies(void Function(UniversalYxScopeContainer container) registration) { + void setupDependencies( + void Function(UniversalYxScopeContainer container) registration) { _scope = UniversalYxScopeContainer(); registration(_scope); } @@ -45,7 +46,8 @@ class YxScopeAdapter extends DIAdapter { } @override - Registration universalRegistration({ + Registration + universalRegistration({ required S scenario, required int chainCount, required int nestingDepth, @@ -112,7 +114,8 @@ class YxScopeAdapter extends DIAdapter { // handled at benchmark level break; } - if (scenario == UniversalScenario.chain || scenario == UniversalScenario.override) { + if (scenario == UniversalScenario.chain || + scenario == UniversalScenario.override) { final depName = '${chainCount}_$nestingDepth'; final lastDep = scope.dep( () => scope.depFor(name: depName).get, @@ -121,6 +124,7 @@ class YxScopeAdapter extends DIAdapter { } }; } - throw UnsupportedError('Scenario $scenario not supported by YxScopeAdapter'); + throw UnsupportedError( + 'Scenario $scenario not supported by YxScopeAdapter'); } } diff --git a/benchmark_di/pubspec.lock b/benchmark_di/pubspec.lock index f29068a..f83de7f 100644 --- a/benchmark_di/pubspec.lock +++ b/benchmark_di/pubspec.lock @@ -47,7 +47,7 @@ packages: path: "../cherrypick" relative: true source: path - version: "3.0.0-dev.12" + version: "3.0.0" collection: dependency: transitive description: diff --git a/cherrypick/example/disposable_example.dart b/cherrypick/example/disposable_example.dart index 94ffa86..c2dc840 100644 --- a/cherrypick/example/disposable_example.dart +++ b/cherrypick/example/disposable_example.dart @@ -37,4 +37,4 @@ void main() { // Освобождаем все ресурсы scope.dispose(); print('Service wasDisposed = ${service.wasDisposed}'); // true -} \ No newline at end of file +} diff --git a/examples/client_app/pubspec.lock b/examples/client_app/pubspec.lock index 7f29808..6648a87 100644 --- a/examples/client_app/pubspec.lock +++ b/examples/client_app/pubspec.lock @@ -127,28 +127,28 @@ packages: path: "../../cherrypick" relative: true source: path - version: "3.0.0-dev.12" + version: "3.0.0" cherrypick_annotations: dependency: "direct main" description: path: "../../cherrypick_annotations" relative: true source: path - version: "3.0.0-dev.0" + version: "3.0.0" cherrypick_flutter: dependency: "direct main" description: path: "../../cherrypick_flutter" relative: true source: path - version: "3.0.0-dev.0" + version: "3.0.0" cherrypick_generator: dependency: "direct dev" description: path: "../../cherrypick_generator" relative: true source: path - version: "3.0.0-dev.0" + version: "3.0.0" clock: dependency: transitive description: diff --git a/examples/postly/pubspec.lock b/examples/postly/pubspec.lock index c99ded7..e488ff3 100644 --- a/examples/postly/pubspec.lock +++ b/examples/postly/pubspec.lock @@ -175,21 +175,21 @@ packages: path: "../../cherrypick" relative: true source: path - version: "3.0.0-dev.12" + version: "3.0.0" cherrypick_annotations: dependency: "direct main" description: path: "../../cherrypick_annotations" relative: true source: path - version: "3.0.0-dev.0" + version: "3.0.0" cherrypick_generator: dependency: "direct main" description: path: "../../cherrypick_generator" relative: true source: path - version: "3.0.0-dev.0" + version: "3.0.0" cli_launcher: dependency: transitive description: @@ -864,7 +864,7 @@ packages: path: "../../talker_cherrypick_logger" relative: true source: path - version: "3.0.0-dev.0" + version: "3.0.0" talker_dio_logger: dependency: "direct main" description: