mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 13:47:24 +00:00
Compare commits
2 Commits
cccf460f01
...
0.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1aa0ae045e | ||
|
|
12d877333a |
23
.gitlab-ci.yml
Normal file
23
.gitlab-ci.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# This file is a template, and might need editing before it works on your project.
|
||||||
|
# https://hub.docker.com/r/google/dart
|
||||||
|
image: google/dart:latest
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# Use to learn more:
|
||||||
|
# pub run test --help
|
||||||
|
PUB_VARS: "--platform vm --timeout 30s --concurrency=6 --test-randomize-ordering-seed=random --reporter=expanded"
|
||||||
|
|
||||||
|
# Cache downloaded dependencies and plugins between builds.
|
||||||
|
# To keep cache across branches add 'key: "$CI_JOB_NAME"'
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .pub-cache/global_packages
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
- export PATH="$PATH":"~/.pub-cache/bin"
|
||||||
|
- pub get --no-precompile
|
||||||
|
|
||||||
|
test:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- pub run test $PUB_VARS
|
||||||
@@ -59,7 +59,7 @@ abstract class ApiClient {
|
|||||||
class ApiClientMock implements ApiClient {
|
class ApiClientMock implements ApiClient {
|
||||||
@override
|
@override
|
||||||
Future sendRequest(
|
Future sendRequest(
|
||||||
{@required String url, String token, Map requestBody}) async {
|
{@required String? url, String? token, Map? requestBody}) async {
|
||||||
return 'hello world';
|
return 'hello world';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
name: example
|
name: example
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
author: "Sergey Penkovsky <sergey.penkovsky@gmail.com>"
|
author: "Sergey Penkovsky <sergey.penkovsky@gmail.com>"
|
||||||
homepage:
|
homepage: localhost
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.2.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -12,3 +12,4 @@ dependencies:
|
|||||||
path: ../
|
path: ../
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
test: ^1.16.8
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:dart_di/resolvers/resolving_context.dart';
|
|||||||
* Контейнер - это объект, которой хранит все резолверы зависимостей.
|
* Контейнер - это объект, которой хранит все резолверы зависимостей.
|
||||||
*/
|
*/
|
||||||
class DiContainer {
|
class DiContainer {
|
||||||
final DiContainer _parent;
|
final DiContainer? _parent;
|
||||||
|
|
||||||
final _resolvers = <Type, ResolvingContext>{};
|
final _resolvers = <Type, ResolvingContext>{};
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ class DiContainer {
|
|||||||
/**
|
/**
|
||||||
* Возвращает разрешенную зависимость типа [T] или null, если она не может быть разрешена.
|
* Возвращает разрешенную зависимость типа [T] или null, если она не может быть разрешена.
|
||||||
*/
|
*/
|
||||||
T tryResolve<T>() {
|
T? tryResolve<T>() {
|
||||||
var resolver = _resolvers[T];
|
var resolver = _resolvers[T];
|
||||||
if (resolver != null) {
|
if (resolver != null) {
|
||||||
return resolver.resolve();
|
return resolver.resolve();
|
||||||
@@ -70,6 +70,6 @@ class DiContainer {
|
|||||||
* @return - возвращает булево значение
|
* @return - возвращает булево значение
|
||||||
*/
|
*/
|
||||||
bool hasInTree<T>() {
|
bool hasInTree<T>() {
|
||||||
return has<T>() || (_parent != null && _parent.hasInTree<T>());
|
return has<T>() || (_parent != null && _parent!.hasInTree<T>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,5 @@ abstract class Resolver<T> {
|
|||||||
* Разрешает зависимость типа [T]
|
* Разрешает зависимость типа [T]
|
||||||
* @return - возвращает объект типа [T]
|
* @return - возвращает объект типа [T]
|
||||||
*/
|
*/
|
||||||
T resolve();
|
T? resolve();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ import 'package:dart_di/resolvers/value_resolver.dart';
|
|||||||
|
|
||||||
class ResolvingContext<T> extends Resolver {
|
class ResolvingContext<T> extends Resolver {
|
||||||
/// Корневой резолвер
|
/// Корневой резолвер
|
||||||
Resolver<T> get resolver => _resolver;
|
Resolver<T> get resolver {
|
||||||
|
return _resolver as Resolver<T>;
|
||||||
|
}
|
||||||
|
|
||||||
DiContainer _container;
|
DiContainer _container;
|
||||||
|
|
||||||
Resolver _resolver;
|
late Resolver _resolver;
|
||||||
|
|
||||||
ResolvingContext(this._container);
|
ResolvingContext(this._container);
|
||||||
|
|
||||||
@@ -21,7 +23,7 @@ class ResolvingContext<T> extends Resolver {
|
|||||||
@override
|
@override
|
||||||
T resolve() {
|
T resolve() {
|
||||||
_verify();
|
_verify();
|
||||||
return _resolver?.resolve();
|
return _resolver.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,7 +40,7 @@ class ResolvingContext<T> extends Resolver {
|
|||||||
* Создать резолвер значения
|
* Создать резолвер значения
|
||||||
*/
|
*/
|
||||||
ResolvingContext<T> toValue<TImpl extends T>(T value) {
|
ResolvingContext<T> toValue<TImpl extends T>(T value) {
|
||||||
Resolver<TImpl> resolver = ValueResolver(value);
|
Resolver<TImpl> resolver = ValueResolver(value as TImpl);
|
||||||
return toResolver<TImpl>(resolver);
|
return toResolver<TImpl>(resolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import 'package:dart_di/resolvers/resolver.dart';
|
|||||||
|
|
||||||
class SingletonResolver<T> extends Resolver<T> {
|
class SingletonResolver<T> extends Resolver<T> {
|
||||||
Resolver<T> _decoratedResolver;
|
Resolver<T> _decoratedResolver;
|
||||||
T _value = null;
|
T? _value = null;
|
||||||
|
|
||||||
SingletonResolver(this._decoratedResolver);
|
SingletonResolver(this._decoratedResolver);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
T resolve() {
|
T? resolve() {
|
||||||
if (_value == null) {
|
if (_value == null) {
|
||||||
_value = _decoratedResolver.resolve();
|
_value = _decoratedResolver.resolve();
|
||||||
}
|
}
|
||||||
|
|||||||
12
pubspec.yaml
12
pubspec.yaml
@@ -1,16 +1,16 @@
|
|||||||
name: dart_di
|
name: dart_di
|
||||||
description: Experimental Dependency Injection library.
|
description: Experimental Dependency Injection library.
|
||||||
version: 0.0.1
|
version: 0.0.2
|
||||||
author: Sergey Penkovsky <sergey.penkovsky@gmail.com>
|
author: Sergey Penkovsky <sergey.penkovsky@gmail.com>
|
||||||
homepage:
|
homepage: locahost
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
meta: ^1.1.8
|
meta: ^1.3.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
test: ^1.14.3
|
test: ^1.16.8
|
||||||
|
|
||||||
mockito: ^4.1.1
|
mockito: ^5.0.3
|
||||||
|
|||||||
Reference in New Issue
Block a user