angular_compiler 0.4.5

  • Readme
  • Changelog
  • Installing
  • 85

Pub Package

Tooling for compiling AngularDart.

0.4.5 #

  • The InjectorReader now fails with an explicit error if types are used inside a ValueProvider object. Previously, using types in ValueProviders would crash the AngularDart compiler.

    Instead of a ValueProvider, use a FactoryProvider for complicated objects, such as those that contain types.

  • Removed the i18n compiler flag that was previously used to opt-in to internationalization in templates before the feature had stabilized.

  • Added support for a command-line flag, allowed_typedefs_as_di_token. This is intended to be used as a transitional flag to ban using a typedef as a DI token (which has non-predictable properties in Dart 2).

  • Added $ChangeDetectionLink, a type checker for matching the experimental @changeDetectionLink annotation.

0.4.4 #

  • Maintenance release to support the newest version of analyzer.

0.4.3 #

  • FormatExceptions thrown while parsing modules in InjectorReader are now rethrown as BuildErrors with source information.

  • The InjectorReader will fail earlier in the compile process on parse errors.

  • Unhandled errors from InjectorReader are now caught and reported with source information.

  • BuildError now has factory constructors to create errors for annotations and elements.

0.4.2 #

  • Updates the messages.unresolvedSource API to support different error messages for each SourceSpan affected.

  • Update failure message to include an asset id when collecting type parameters.

  • TypedReader now throws a build error when reading a private type argument.

0.4.1 #

  • Catches an (invalid) null token of a provider and throws a better error.

  • Catches an (invalid) null value of the function for FactoryProvider.

  • Emits all strings for @GeneratedInjector as raw (r'$5.00').

  • Supports named arguments for ValueProvider and @GeneratedInjector.

  • Prevents InjectorReader.accept() from crashing when given a dependency with no type or token.

0.4.0 #

New Features #

  • Added TypedElement to represent a statically parsed Typed.

  • TypedReader.parse() now returns a TypedElement.

  • Added $Typed, a TypeChecker for Typed.

  • Added TypedReader for parsing generic directive types.

  • Added support for void and Null types to appear in tokens.

  • Added DirectiveVisitor, and removed $HostBinding and $HostListener.

  • Added ModuleReader.extractProviderObjects to use in the view compiler.

  • Added logFine as a new top-level API.

  • Added an internal cli.dart library. See lib/cli.dart for details.

  • Added SplitDartEmitter for internal use.

  • Added $QueryList as a TypeChecker.

  • Expose the $Provider TypeChecker.

  • Added typeArgumentOf helper method.

  • Added support for recognizing the MultiToken type.

  • CompilerFlags now supports as a fast_boot argument; default is true.

  • ReflectorEmitter now takes an optional deferredModules{Source}.

  • Started adding experimental support for a new Module syntax.

Breaking Changes #

  • CompilerFlags no longer parses and supports the 'debug' option and genDebugInfo is always false, and is deprecated pending removal in a future version.

  • Removes unused APIs of ComponentReader.

  • TokenReader no longer supports arbitrary const objects or literals.

  • Removed use_new_template_parser flag. The old parser was removed.

  • Removed $QueryList.

  • Added canRead to NgAssetReader.

  • Moved CompilerFlags and Profile to cli.dart.

  • linkToReference now requires a second parameter, a LibraryReader, and treats private types (i.e. prefixed with _) as dynamic as the compiler cannot point to them.

  • ReflectableEmitter has been completely replaced with a new implementation.

  • Removed all references and use of determining a "prefix" of a type. This was no longer used once ReflectableEmitter was re-written.

  • Removed a number of internal flags that were no longer strictly required.

  • ModuleReader.deduplicateProviders now returns a List not a Set, and providers that are multi are not removed, as it is a feature of the DI system to have multiple of them with the same token.

  • Add the TypeLink class, and replace uses of Uri.

  • @Component and @Directive annotated classes are no longer @Injectable. In practice this means they can no loger be provided as an implicit const Provider(FooComponent) without either manually adding @Injectable or refactoring your code. We found this didn't really affect users, and most uses of components and directives in these lists were accidental.

Bug Fixes #

  • Fixed a bug where the compiler crashed after resolving a bound type failed.

  • Misspelled or otherwise erroneous annotations on classes now produce a more understandable error message, including the element that was annotated and the annotation that was not resolved.

  • Fix a bug where throwFailure hit an NPE without a stack trace.

  • linkTypeOf correctly resolves bound types (i.e. <T>) in most cases, and can fallback to dynamic otherwise.

  • Removed all remaining (invalid) references to package:barback.

  • Prevented a RangeError that occurred when an invalid import lacked an extension.

  • ReflectorEmitter now supports MultiToken and generic-typed tokens, with some known limitations. See

  • Fix a bug in the outliner that did not the correct output extension.

0.3.0 #

  • Always link to export "...template.dart" files in initReflector().
  • Catch missing field-formal (this.) fields and warn in the compiler.
  • Does not emit a registerDependencies function call for empty constructors.
  • initReflector() no longer treats @Pipe as an @Injectable service.

0.2.2 #

  • Fixed the outliner to instruct the analyzer to ignore unused imports.
  • Add NgAssetReader.

0.2.1 #

  • Various changes internal to the compiler.

0.2.0 #

  • Added various classes and helpers to form the new compile infrastructure:
    • ComponentReader
    • DependencyReader, DependencyInvocation, DependencyElement
    • ProviderReader, ProviderElement
    • TokenReader, TypeTokenElement, OpaqueTokenElement
    • getInheritanceHierarchy, urlOf
    • ReflectableReader, ReflectableOutput, ReflectableClass

0.1.1 #

  • Fixed a bug where flag entry_points was only allowed to be a list.

0.1.0 #

  • Initial commit of angular_compiler.

Use this package as a library

1. Depend on it

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

  angular_compiler: ^0.4.5

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:angular_compiler/angular_compiler.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Jun 5, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.8.2
  • pana: 0.13.8-dev

Health suggestions

Fix lib/src/analyzer/di/providers.dart. (-0.50 points)

Analysis of lib/src/analyzer/di/providers.dart reported 1 hint:

line 182 col 9: The member 'TypeTokenElement' can only be used within 'package:angular_compiler/src/analyzer/di/tokens.dart' or a test.

Fix lib/src/outliner/collect_type_parameters.dart. (-0.50 points)

Analysis of lib/src/outliner/collect_type_parameters.dart reported 1 hint:

line 66 col 16: 'parseCompilationUnit' is deprecated and shouldn't be used. Please use parseString instead.

Maintenance issues and suggestions

Support latest dependencies. (-10 points)

The version constraint in pubspec.yaml does not support the latest published versions for 1 dependency (analyzer).

Homepage URL isn't helpful. (-10 points)

Update the homepage field from pubspec.yaml: link to a website about the package or use the source repository URL.

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 angular_compiler.dart. Packages with multiple examples should provide example/

For more information see the pub package layout conventions.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.5.0-dev.1.0 <3.0.0
analyzer ^0.37.0 0.37.1+1 0.39.10
args ^1.3.0 1.6.0
build >=1.1.0 <2.0.0 1.3.0
code_builder ^3.0.1 3.3.0
collection ^1.14.5 1.14.12
dart_style ^1.0.9 1.2.10 1.3.6
logging >=0.9.0 <0.12.0 0.11.4
meta ^1.1.4 1.1.8
path ^1.6.1 1.7.0
source_gen >=0.9.1 <0.10.0 0.9.4+6 0.9.5
source_span ^1.4.0 1.7.0
stack_trace ^1.9.1 1.9.3
Transitive dependencies
async 2.4.1
built_collection 4.3.2
built_value 7.1.0
charcode 1.1.3
convert 2.1.1
crypto 2.1.5
csslib 0.16.1
fixnum 0.10.11
front_end 0.1.21+1 0.1.29
glob 1.2.0
html 0.14.0+3
js 0.6.1+1
kernel 0.3.21+1 0.3.29
matcher 0.12.6
node_interop 1.1.1
node_io 1.1.1
package_config 1.9.3
pedantic 1.9.0
pub_semver 1.4.4
quiver 2.1.3
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
watcher 0.9.7+15
yaml 2.2.1
Dev dependencies
build_runner ^1.0.0
build_test ^0.10.2+5
test ^1.3.0