Index: third_party/pkg/angular/lib/application_factory_static.dart |
diff --git a/third_party/pkg/angular/lib/application_factory_static.dart b/third_party/pkg/angular/lib/application_factory_static.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4b80da876d7c3dd106a9b0f4ddc0be068ebafef3 |
--- /dev/null |
+++ b/third_party/pkg/angular/lib/application_factory_static.dart |
@@ -0,0 +1,103 @@ |
+/** |
+ * Bootstrapping for Angular applications via code generation, for production. |
+ * |
+ * Most angular.dart apps rely on static transformation at compile time to generate the artifacts |
+ * needed for tree shaking during compilation with `dart2js`. However, |
+ * if your deployment environment makes it impossible for you to use transformers, |
+ * you can call [staticApplicationFactory](#angular-app-factory-static@id_staticApplicationFactory) |
+ * directly in your `main()` function, and explicitly define the getters, setters, annotations, and |
+ * factories yourself. |
+ * |
+ * import 'package:angular/angular.dart'; |
+ * import 'package:angular/application_factory_static.dart'; |
+ * |
+ * class MyModule extends Module { |
+ * MyModule() { |
+ * type(HelloWorldController); |
+ * } |
+ * } |
+ * |
+ * main() { |
+ * staticApplicationFactory() |
+ * .addModule(new MyModule()) |
+ * .run(); |
+ * } |
+ * |
+ * Note that you must explicitly import both |
+ * `angular.dart` and `application_factory_static.dart` at the start of your file. See [staticApplicationFactory] |
+ * (#angular-app-factory-static@id_staticApplicationFactory) for more on explicit definitions required with this |
+ * library. |
+ * |
+ */ |
+library angular.app.factory.static; |
+ |
+import 'package:di/static_injector.dart'; |
+import 'package:di/di.dart' show TypeFactory, Injector; |
+import 'package:angular/application.dart'; |
+import 'package:angular/core/registry.dart'; |
+import 'package:angular/core/parser/parser.dart'; |
+import 'package:angular/core/parser/parser_static.dart'; |
+import 'package:angular/core/parser/dynamic_parser.dart'; |
+import 'package:angular/core/registry_static.dart'; |
+import 'package:angular/change_detection/change_detection.dart'; |
+import 'package:angular/change_detection/dirty_checking_change_detector_static.dart'; |
+ |
+export 'package:angular/change_detection/change_detection.dart' show |
+ FieldGetter, |
+ FieldSetter; |
+ |
+class _StaticApplication extends Application { |
+ final Map<Type, TypeFactory> typeFactories; |
+ |
+ _StaticApplication(Map<Type, TypeFactory> this.typeFactories, |
+ Map<Type, Object> metadata, |
+ Map<String, FieldGetter> fieldGetters, |
+ Map<String, FieldSetter> fieldSetters, |
+ Map<String, Symbol> symbols) { |
+ ngModule |
+ ..value(MetadataExtractor, new StaticMetadataExtractor(metadata)) |
+ ..value(FieldGetterFactory, new StaticFieldGetterFactory(fieldGetters)) |
+ ..value(ClosureMap, new StaticClosureMap(fieldGetters, fieldSetters, |
+ symbols)); |
+ } |
+ |
+ Injector createInjector() => |
+ new StaticInjector(modules: modules, typeFactories: typeFactories); |
+} |
+/** |
+* |
+* Bootstraps Angular as part of the `main()` function. |
+* |
+* `staticApplication()` replaces `dynamicApplication()` in the main function during pub build, |
+* and is populated with the getters, setters, annotations, and factories generated by |
+* Angular's transformers for dart2js compilation. It is not typically called directly. |
+* |
+* For example, |
+* |
+* main() { |
+* applicationFactory() |
+* .addModule(new Module()..type(HelloWorld)) |
+* .run(); |
+* } |
+* |
+* becomes: |
+* |
+* main() { |
+* staticApplication(generated_static_injector.factories, |
+* generated_static_metadata.typeAnnotations, |
+* generated_static_expressions.getters, |
+* generated_static_expressions.setters, |
+* generated_static_expressions.symbols) |
+* .addModule(new Module()..type(HelloWorldController)) |
+* .run(); |
+* |
+*/ |
+Application staticApplicationFactory( |
+ Map<Type, TypeFactory> typeFactories, |
+ Map<Type, Object> metadata, |
+ Map<String, FieldGetter> fieldGetters, |
+ Map<String, FieldSetter> fieldSetters, |
+ Map<String, Symbol> symbols) { |
+ return new _StaticApplication(typeFactories, metadata, fieldGetters, fieldSetters, |
+ symbols); |
+} |