dioc_generator 0.1.6

dioc_generator #

A generator of code for dioc containers.

Usage #

All registrations are made by annotating a partial bootstrapper class.

Various environments could be declared as methods that return a Container. You have to decorate these methods with Provide annotations to register dependencies.

library example;

import 'package:dioc/src/container.dart';
import 'package:dioc/src/built_container.dart';

part "example.g.dart";

@bootstrapper
@Provide.implemented(OtherService) // Default registration for all environments
abstract class AppBootstrapper extends Bootstrapper {

  @Provide(Service, MockService)
  Container development();

  @Provide(Service, WebService)
  Container production();
}

To indicate how to inject dependencies, you have two options : specifying a default mode, or declaring specific injections.

For a default inject mode, add it to the Provide constructor.

@bootstrapper
@Provide.implemented(OtherService)
abstract class AppBootstrapper extends Bootstrapper {
  @Provide(Service, MockService, defaultMode: InjectMode.singleton)
  Container development();
}

Getting an instances and default injections will then use the default mode :

final service = container<Service>(); // singleton

Decorate your class fields with Inject annotations (and @inject, @singleton shortcuts) to declare specific injections.

class OtherService {
  @inject
  final Service dependency;

  @singleton
  final Service dependency2;

  OtherService(this.dependency,{this.dependency2});
}

To trigger code generation, run the command :

pub run build_runner build

Then simply use the provided builder to create your Container.

final container = AppBootstrapperBuilder.instance.development();

A complete example is also available.

Features and bugs #

Please file feature requests and bugs at the issue tracker.

Changelog #

0.0.1 #

  • Initial version

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  dioc_generator: ^0.1.6

2. Install it

You can install packages from the command line:

with pub:


$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:dioc_generator/dioc_generator.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
43
Health:
Code health derived from static analysis. [more]
98
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
10
Overall:
Weighted score of the above. [more]
53
Learn more about scoring.

We analyzed this package on Jul 17, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.4.0
  • pana: 0.12.19

Platforms

Detected platforms: other

Primary library: package:dioc_generator/dioc_generator.dart with components: io, isolate, build, mirrors.

Health suggestions

Fix lib/dioc_generator.dart. (-1.99 points)

Analysis of lib/dioc_generator.dart reported 4 hints:

line 15 col 47: Use = to separate a named parameter from its default value.

line 15 col 70: Use = to separate a named parameter from its default value.

line 45 col 13: DO use curly braces for all flow control structures.

line 139 col 15: 'parameterKind' is deprecated and shouldn't be used.

Format lib/builder.dart.

Run dartfmt to format lib/builder.dart.

Maintenance issues and suggestions

Support latest dependencies. (-60 points)

The version constraint in pubspec.yaml does not support the latest published versions for 6 dependencies (analyzer, build, build_runner, build_test, dart_style, source_gen).

The package description is too short. (-20 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.

Maintain an example. (-10 points)

Create a short demo in the example/ directory to show how to use this package.

Common filename patterns include main.dart, example.dart, and dioc_generator.dart. Packages with multiple examples should provide example/README.md.

For more information see the pub package layout conventions.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >2.0.0-dev <3.0.0
analyzer ^0.32.4 0.32.6 0.37.0
build ^1.0.0 1.1.0 1.1.5
build_runner ^1.0.0 1.2.3 1.6.1
build_test ^0.10.3+1 0.10.6 0.10.8
code_builder ^3.1.3 3.2.0
dart_style ^1.1.3 1.1.3 1.2.9
dioc ^0.1.6 0.1.6
source_gen ^0.9.0+1 0.9.1+3 0.9.4+2
Transitive dependencies
args 1.5.2
async 2.3.0
boolean_selector 1.0.5
build_config 0.3.2 0.4.1
build_daemon 0.2.3 2.0.0
build_resolvers 0.2.3 1.0.6
build_runner_core 2.0.1 3.0.6
built_collection 4.2.2
built_value 6.7.0
charcode 1.1.2
collection 1.14.11
convert 2.1.1
crypto 2.0.6
csslib 0.14.6+1 0.16.1
fixnum 0.10.9
front_end 0.1.4+2 0.1.20
glob 1.1.7
graphs 0.2.0
html 0.14.0 0.14.0+2
http 0.12.0+2
http_multi_server 2.1.0
http_parser 3.1.3
io 0.3.3
js 0.6.1+1
json_annotation 2.4.0
json_rpc_2 2.1.0
kernel 0.3.4+2 0.3.20
logging 0.11.3+2
matcher 0.12.3+1 0.12.5
meta 1.1.7
mime 0.9.6+3
multi_server_socket 1.0.2
node_preamble 1.4.4
package_config 1.0.5
package_resolver 1.0.10
path 1.6.2
pedantic 1.8.0+1
plugin 0.2.0+3
pool 1.4.0
pub_semver 1.4.2
pubspec_parse 0.1.4
quiver 2.0.3
shelf 0.7.5
shelf_packages_handler 1.0.4
shelf_static 0.2.8
shelf_web_socket 0.2.3
source_map_stack_trace 1.1.5
source_maps 0.10.8
source_span 1.5.5
stack_trace 1.9.3
stream_channel 1.7.0 2.0.0
stream_transform 0.0.19
string_scanner 1.0.4
term_glyph 1.1.0
test_api 0.2.2 0.2.6
test_core 0.2.1+1 0.2.7
timing 0.1.1+1
typed_data 1.1.6
vm_service_client 0.2.6+2
watcher 0.9.7+12
web_socket_channel 1.0.14
yaml 2.1.16
Dev dependencies
test any 1.5.3 1.6.5

Admin