mist 0.0.1 copy "mist: ^0.0.1" to clipboard
mist: ^0.0.1 copied to clipboard

Dart 1 only

A restricted reflection system with mirrors on development-time, and pre generated mirrors on runtime. It only reflects classes and its methods and fields with Metadata This reflective system is tuned [...]

Mist #

Mist is a package that exposes a reduced reflective to reflect classes. It should give you better performance on deploy mode then mirror based reflection (not benchmarked yet). However, first and foremost it should make it easier to build a better reflection solution then mark everything that needs to be reflected with [MirrorsUsed][] annotation.

Each package that has classes that needs to be reflected need the default mist Transfromer in the pubspec (e.g - mist)

Mist uses darts default mirror reflection on developmenttime and its own generated implementation on deploy.

It can only Reflect classes and its fields and methods. Excluding operators, getters/setters, non default constructors and no arguments for it (only MyClass()) and not metadata on parameters on methods. It supports private members but does not include members that are not defined in the reflectedclass (unless its a subclass of a reflected class)

classes that need to be reflected needs to be marked with: @MistReflect() If subclasses needs to be reflected to you mark the class like this: @MistReflect(includeSubclasses: false)

Use @Ignore() to exclude certain field or method from reflection.

Mist API #

Use package:mist/mist.dart in your framework and use:

///
/// Returns a List of all Subclasses of Class with runtimeType [type]
///
List<ClassInfo> getAllSubclassesInfoOf(Type type);

///
/// Returns reflected classInfo of class with runtimetype [classType]
///
ClassInfo getClassInfo(Type classType);

Transformer usesage #

Libs that include reflectable Classes have to include the mist Transformer in their pubspec: transformers:

  • mist

For applications you need to include this in your pubspec:

transformers:

  • [mist,mist/src/build/generic_static_gen,$dart2js] Node: To create a custom static reflections Transformer you need to replace mist/src/build/generic_static_gen

Code Generation #

Use package:mist/generator/mistgen.dart in your frameworks Transformer to generated the static initialization when running with generated sourcecode instead of darts mirror based reflection.

0
likes
15
points
2
downloads

Publisher

unverified uploader

Weekly Downloads

A restricted reflection system with mirrors on development-time, and pre generated mirrors on runtime. It only reflects classes and its methods and fields with Metadata This reflective system is tuned for speed on the deployment.

Homepage

License

MIT (license)

Dependencies

analyzer, barback, code_transformers

More

Packages that depend on mist