Tobias Bosch
923d90bce8
refactor(views): clean up creating views in place and extract view_hydrator
...
Major changes:
- `compiler.compileRoot(el, type)`
-> `compiler.compileInHost(type) + viewHydrator.hydrateHostViewInPlace(el, view)`
- move all `hydrate`/`dehydrate` methods out of `View` and `ViewContainer` into
a standalone class `view_hydrator` as private methods and provide new public
methods dedicated to the individual use cases.
Note: This PR does not change the current functionality, only moves it
into different places.
See design discussion in #1351 , in preparation for imperative views.
2015-04-16 11:58:01 -07:00
vsavkin
68faddbf5c
feat(change_detection): updated handling ON_PUSH detectors so they get notified when their bindings change
2015-04-15 16:21:21 -07:00
Yegor Jbanov
c05bad381c
perf(benchmark): measure Injector init from resolved bindings
2015-04-13 15:06:44 -07:00
Yegor Jbanov
4a961f4ecb
feat(di): provide two ways to create an injector, resolved and unresolved
...
Add two factory static functions to Injector: resolveAndCreate and
fromResolvedBindings.
We want to avoid resolution and flattening every time we create a new
injector. This commit allows the user to cache resolved bindings and
reuse them.
2015-04-13 15:06:43 -07:00
Yegor Jbanov
0012caa4d5
perf(benchmarks): measure cost of Injector init with a variety of bindings
2015-04-13 10:02:13 -07:00
vsavkin
6f8fef4f13
feat(bootstrap): changed bootstrap to return ComponentRef
2015-04-10 18:14:59 -07:00
Tobias Bosch
6ce085a21a
feat(benchmark): make view cache a parameter to the tree benchmark
2015-04-10 16:57:46 -07:00
Tim Blasi
82127571b5
feat(dart/transform): Use the Dart transformer for benchmarks
...
Remove explicit generation of reflection information in benchmark code
and generate it with the transformer.
2015-04-10 14:01:55 -07:00
Pawel Kozlowski
bf7933714a
chore(rename): rename View and Template concepts for #1244
2015-04-10 12:00:37 -07:00
vsavkin
f45281a10a
feat(view): generalized loading of dynamic components
2015-04-09 22:15:42 -07:00
vsavkin
61cb99ea42
refactor(change_detection): removed directive and binding mementos
2015-04-09 18:56:19 -07:00
Martin Probst
22c1a0d030
fix(benchmarks): Stop working around a Traceur bug.
2015-04-09 18:03:27 -07:00
vsavkin
69c3bff086
feat(change_detection): updated change detection to update directive directly, without the dispatcher
2015-04-08 22:14:50 -07:00
Tobias Bosch
50098767fc
refactor(render): use render layer fully
...
Introduces angular2/src/core/compiler/ViewFactory which
extracts ProtoView.instantiate and replaces ViewPool.
Note: This is a work in progress commit to unblock other commits.
There will be follow ups to add unit tests, remove TODOs, …
2015-04-08 20:51:31 -07:00
Tim Blasi
42c0171b40
chore(dart/transform): Create targets for serving transformed Dart code
...
- Allow pub (build|serve) to specify mode
- Update pubbuild.js & pubserve.js to allow the caller to provide a `mode` value.
- Update settings to allow the di benchmark to be transformed to run statically.
2015-04-07 10:57:01 -07:00
vsavkin
9c62b5867e
benchmark(change_detection): added a new set of benchmarks measuring updating properties
2015-04-06 18:13:20 -07:00
Tobias Bosch
1d4d18d9db
refactor(render): user render compiler
2015-04-03 23:41:00 -07:00
vsavkin
abea92af59
refactor(change_detection): call onChange from the change detector
2015-04-02 21:22:42 -07:00
Tobias Bosch
c1aa65239e
refactor(render): move services to render folder
...
property_setter_factory
selector
style_inliner
style_url_resolver
shadow_css
2015-04-02 14:40:49 -07:00
Tobias Bosch
4f56628566
refactor(render): move services to right location
...
core/compiler/events -> render/dom/events
core/compiler/url_resolver -> services/url_resolver
core/compiler/xhr/* -> services/*
2015-04-02 10:35:27 -07:00
Tobias Bosch
47542b0cb0
fix(build): don’t read out chrome perflogs during e2e tests
...
We do this as we are seeing flakes in Chrome with ECONNREFUSED.
Also reuses the same browser window.
Also reenables the infinite scroll benchmark
Closes #1137
2015-04-01 17:09:26 -07:00
Julie Ralph
e81e5fb2b9
feat(testability): add an initial scaffold for the testability api
...
Make each application component register itself onto the testability
API and exports the API onto the window object.
2015-04-01 13:54:06 -07:00
Jeff Cross
a55efbd8b8
feat(perf): add Angular2 implementation of largetable benchmark from AngularJS 1.x
2015-03-31 09:54:41 -07:00
Tobias Bosch
33bfc4c24a
feat(bench press): replace microIterations with microMetrics
2015-03-27 16:16:35 -07:00
Julie Ralph
3afb744e77
chore(ci): reorganize e2e/perf test running
...
Now, running protractor configs by default only runs e2e tests. If
the --benchmark flag is added, it runs only the perf tests, and always
restarts the browser in between tests. If the --dryrun test is added,
the perf tests are run only once.
This should make it easier to run perf tests versus example e2e tests,
and help stabilize the travis build because perf tests always
run with a clean browser.
2015-03-27 13:29:21 -07:00
vsavkin
723e8fde93
feat(change_detection): added a directive lifecycle hook that is called after children are checked
2015-03-27 13:26:36 -07:00
Victor Berchet
65d759316b
fix(PrivateComponentLoader): add the loader to the app injector
...
fixes #1063
2015-03-24 22:10:26 +01:00
Marc Laval
41b53e71e1
feat(selector): support , for multiple targets
...
Fixes #867
Closes #1019
2015-03-23 10:06:33 +01:00
Pawel Kozlowski
0fb9f3bd6c
fix(ElementBinderBuilder): properly bind to web component properties
...
Fixes #776
Closes #1024
2015-03-22 14:14:36 +01:00
gdi2290
b61b8d60b7
refactor(forEach): change to for-of with iterable
...
rename: foreach -> for
rename: array -> iterable
update: DartParseTreeWriter
update: naive_infinite_scroll
update: todo
fix: tests in foreach_spec
Closes #919
2015-03-21 14:19:21 -07:00
vsavkin
a16954d3a5
refactor(view): separate context and locals
2015-03-17 14:25:57 -07:00
vsavkin
3273adade5
refactor(view): change view to pass all bindings to proto change detector at once
2015-03-13 14:03:57 -07:00
Victor Berchet
951a808e0e
refactor(PropertySetter): use the global reflector
2015-03-12 19:49:34 +01:00
Rado Kirov
f1593ebca5
feat(shadowdom): turn on ShadowDom Emulated Mode by default.
...
Closes : #526
2015-03-11 12:46:15 -07:00
Victor Berchet
370643539f
refactor(EventHandler): have a single instance of event handlers per ProtoView
2015-03-10 15:26:06 +01:00
Victor Berchet
b349c35678
feat(ElementInjector): implement @PropertySetter
...
relates to #621
2015-03-09 18:28:39 +01:00
Tobias Bosch
043b8c6d2e
feat(bench press): add microIterations option
2015-03-03 14:41:03 -08:00
Victor Berchet
03793d0714
feat(CssProcessor): add support for CssTransformers
...
Closes #860
2015-03-03 11:24:08 -08:00
Victor Berchet
9982520a23
refactor(Compiler): make shadow DOM stragegy support more flexible
2015-03-03 11:24:08 -08:00
Tobias Bosch
8adac5332a
fix(benchmarks): prepare publish to pub
2015-03-02 16:34:32 -08:00
Tobias Bosch
81a5ae8f6e
fix(build): report and fail on errors
...
tree benchmark was broken and we didn’t know it…
also changes reporting to not include messages from `console.time()`, …
2015-03-02 16:34:32 -08:00
Tobias Bosch
7ddfbf8bea
refactor(tests): move files from `angular2/e2e_test` to `angular2/src/test_lib`
...
The `e2e_test` folder in `angular2` never contained e2e tests but was
used to store utilities for writing e2e/perf tests. A better place for
them is `angular2/src/test_lib`.
Closes #855
2015-03-02 14:38:02 -08:00
vsavkin
21f24d19dd
feat(change_detection): implement hydration/dehydration
2015-03-02 13:28:39 -08:00
Yegor Jbanov
757eae8ad3
feat(compiler): DOM adapters + html5lib implementation; misc fixes
2015-02-27 16:49:14 -08:00
Tobias Bosch
3b40052dc7
feat(build): enforce mobile layout during e2e tests
...
This is important as we run our benchmarks on
mobile devices as web driver tests fails if buttons
are not visible / overlaid by other content.
2015-02-27 11:11:32 -08:00
Victor Berchet
009e11a6be
fix: Static DI init
2015-02-26 19:31:44 +01:00
Victor Berchet
929fc65493
refactor(template loading): add support for base URLs, css rewriting
...
fixes #654
2015-02-26 09:36:04 +01:00
Alex Eagle
56906db4d5
fix es6 compilation for Element.remove.
...
Use DOM facade to delete an Element since the remove method is only in Dart.
2015-02-25 15:56:08 -08:00
Alex Eagle
642e9a36b7
fix es6 compilation for Map.remove.
...
In dart, Map has a remove method,but in ES6 it is delete.
2015-02-25 15:44:29 -08:00
Victor Berchet
1376e49ea0
fix(Injector): fix dependencies in static injectors
...
Closes #784
2015-02-25 09:52:56 -08:00
Bertrand Laporte
94e203b9df
feat(DirectiveParser): throw errors when expected directives are not present
...
closes #527
Closes #570
2015-02-24 20:57:21 -08:00
vsavkin
987a5fdf56
feat(change_detection): add support for pipes in the template
2015-02-20 17:16:57 -08:00
Victor Berchet
8a3d9050d9
feat(TreeBenchmark): use angular2 If directive
2015-02-20 20:53:44 +01:00
vsavkin
58ba700b14
feat(change_detection): change binding syntax to explicitly specify pipes
2015-02-20 10:59:46 -08:00
Julie Ralph
5af0ac258b
tests(e2e): upgrade Protractor to 1.7.0 and remove special cases for shadow dom
...
With Protractor 1.7.0, which installs chromedriver 2.14, shadow DOM is supported.
2015-02-18 10:54:48 -08:00
Pawel Kozlowski
56f4e84d45
fix: flip attr / property bind in directives annotations
...
Fixes #648
Closes #684
2015-02-18 17:07:53 +01:00
Pawel Kozlowski
709c3ca6b5
refactor: use the ExceptionHandler service
...
Fixes #533
Closes #672
2015-02-18 13:48:28 +01:00
vsavkin
695b4ebbc7
feat(change_detection): add support for pipes
2015-02-17 17:12:58 -08:00
Tobias Bosch
f6284f2a55
feat(benchpress): rewritten implementation
...
Limitations:
- cloud reporter is not yet supported any more
2015-02-16 11:43:27 -08:00
Yegor Jbanov
6d45153b67
fix(benchmarks): fix scrolling benchmark; add more tests
2015-02-13 17:35:19 -08:00
Victor Berchet
e6c8bde808
feat(Compiler): Multiple template per component
...
fixes #596
- TemplateConfig becomes Template
- introduce a TemplateResolver to pick the cmp template,
- @Component and @Template are disociated
2015-02-13 18:07:08 +01:00
Victor Berchet
6d23d00057
refactor(ViewPort): @Template -> @Viewport, ViewPort -> ViewContainer
...
fixes #595
2015-02-13 17:48:27 +01:00
Tobias Bosch
013e1faf27
fix(build): support transpile to commonjs
2015-02-11 13:09:52 -08:00
Rado Kirov
7bf5ab8f43
feat(view_pool): adds a view pool of dehydrated views per protoview.
2015-02-09 22:17:38 -08:00
Tobias Bosch
f39c6dc2c7
fix(setup): use upstream traceur with explicit patches
...
Also correct the transpile to ES6
Also support generics correctly
All patches are hooked in via `/tools/transpiler/index.js`
https://github.com/google/traceur-compiler/issues/1700
https://github.com/google/traceur-compiler/issues/1699
https://github.com/google/traceur-compiler/issues/1708
https://github.com/google/traceur-compiler/issues/1625
https://github.com/google/traceur-compiler/issues/1706
2015-02-06 17:04:08 -08:00
Marc Laval
6bfa48bc64
refactor(directives): Drop ng- prefix from all angular directives and rename NgRepeat to Foreach
...
fixes #532
Closes #539
2015-02-06 09:24:50 -08:00
Rado Kirov
7dba3a3e32
fix(benchmarks): fix infinite scroll benchmark.
2015-02-05 20:47:30 -08:00
Victor Berchet
746f85a621
feat(compiler, ShadowDom): adds TemplateLoader using XHR.
...
Also adds css shimming for emulated shadow dom and makes the shadowDom
strategy global to the application.
2015-02-05 19:47:29 -08:00
Yegor Jbanov
fcbdf02767
feat(perf): port table scrolling benchmark to Angular 2
2015-02-05 18:33:57 -08:00
Yegor Jbanov
8250a8c1ca
chore(packaging): update benchmark imports
2015-02-05 15:47:13 -08:00
Yegor Jbanov
3f228669d7
chore(packaging): update import for the new file structure
2015-02-05 15:47:12 -08:00
vsavkin
ab9438ffdf
fix e2e tests
2015-02-05 14:36:18 -08:00
vsavkin
3067601961
feat(change_detection): update change detection benchmark
2015-02-05 11:55:49 -08:00
Tobias Bosch
05ffdc9b44
refactor(build): explicitly mention `src` folder in imports
...
Export files are now directly under the module folder,
e.g. `core/core.js`. With this, an import like `core/core`
won’t need a path mapping (e.g. via `System.paths`) any more.
This adds the `src` folder to all other import statements as well.
2015-02-05 11:55:48 -08:00
vsavkin
850cf0fef4
feat(change_detection): implement a change detector generator
2015-01-27 16:18:15 -08:00
yjbanov
9682437aeb
fix(tests): make Angular 2 compiler perf test use correct param name
2015-01-26 16:30:33 -08:00
Rado Kirov
ec5cb3eb66
feat(package): introduce a catch-all package angular.
...
modules/angular has no implementation, but depends on all the pieces
that make angular - core, di, directives, etc. It is the package that
all client apps will depend on.
2015-01-23 10:31:24 -08:00
Rado Kirov
fd34a56347
feat(events): adds support for injectable angular event emitters.
...
Event emitters can be injected into Directives. Event emitters take over
browser events with the same name. Emitted events do not bubble. Event
emitters can be injected even if there is no corresponding callback in
the template.
Use as follows:
@Decorator(...)
class MyDec(@EventEmitter('click') clickEmitter) {
...
fireClick() {
var eventData = {...};
this._clickEmitter(eventData);
}
}
2015-01-22 10:14:03 -08:00
vsavkin
9957c1338e
feat(change_detection): reimplement change detection
2015-01-21 14:21:14 -08:00
Tobias Bosch
48125a8448
fix(perf): fix selector benchmark
2015-01-20 13:06:37 -08:00
Tobias Bosch
5c064c19e2
feat(perf): autoscale benchmarks depending on the browser.
2015-01-20 13:06:37 -08:00
Tobias Bosch
d02c0accbb
refactor(benchmarks): add cloud reporter, add params
...
- adds console and cloud reporter (via Google BigQuery).
- makes parameters of tests explicit and modifiable.
- removes `detect` and `ignoreGc` mode from benchpress
as these can result in unstable numbers.
2015-01-15 09:09:05 -08:00
Rado Kirov
bccc863567
fix(benchmark): remove duplicate line.
2015-01-13 21:09:28 -08:00
Misko Hevery
f6ebaf74d3
perf: force GC on profiles
2015-01-13 13:06:17 -08:00
vsavkin
abf03401df
make dart analyzer happy
2015-01-13 11:14:05 -08:00
Misko Hevery
bed4b52a63
perf: Change baseline benchmark to be more consistent with the Angular
2015-01-12 21:58:19 -08:00
Misko Hevery
e4a4ec840e
perf: run CPU profile on constant count so that time numbers can be compared between runs
2015-01-12 21:58:18 -08:00
Misko Hevery
6e9f48564f
perf: add button for profiling tree benchmark
2015-01-12 15:16:24 -08:00
Tobias Bosch
14e91e209e
feat(test): add e2e tests for benchmarks and examples
...
Disables running the actual benchmarks on every commit as well
to speed up the build.
2015-01-08 10:51:08 -08:00
Tobias Bosch
77aa3ed61b
feat(benchpress): show more metrics and make the run mode configurable
...
Shows the metrics:
script, render, gcAmount, gcAmountInScript, gcTime
Run modes:
- detect: auto detect whether to force gc
- forceGc: forces a gc before every run and ignores no runs
- noGcInScript: ignore runs that have gc while a script was executing
- plain: does not force gc nor ignore runs
Closes #368
2015-01-07 16:37:52 -08:00
Tobias Bosch
82b1601a31
refactor(benchmarks): rename `timeBenchmark` into `benchmark`
2015-01-07 16:37:52 -08:00
Tobias Bosch
fe2a09bc7f
refactor(perf): e2e tests and benchpress should be written in es6
2015-01-06 15:32:49 -08:00
Misko Hevery
373fd7d04a
chore: add dart2js flags to benchmark to enable trust-type-annotations
2015-01-06 15:17:12 -08:00
Tobias Bosch
6f303121c6
refactor(perf): introduce benchpress2
...
Major changes:
- make API more reusable
- format output nicely
- only force gc if needed
Regarding forcing gc:
Forcing gc can change script execution time.
We now don't force gc at first and ignore results where gc happens during script execution.
When we ignored too many results, we switch to forcing gc.
Closes #339
2015-01-05 17:49:50 -08:00
Tobias Bosch
3a80c4197d
refactor(perf): move navigation into test files and rename `runSimpleBenchmark`
2014-12-29 16:58:31 -08:00
vsavkin
739f624cc8
refactor(change_detection): add change_detection library file
2014-12-29 15:20:42 -08:00
vsavkin
da9d041f90
feat(view): add support for components that use shadow dom emulation
2014-12-29 11:42:34 -08:00
Tobias Bosch
df4ac0dd33
refactor(perf): use webdriver to execute benchmarks
...
- use performance log of chromedriver / appium to get timeline data
for calculating metrics for benchmarks
- change all benchmarks to be made of a standalone application
and a protractor test that collectes timeline data
- fix and simplify benchmarks
- add dart2js to build
- remove benchpress
Closes #330
2014-12-23 22:22:55 -08:00
vsavkin
d5fcac4d7a
feat(compiler): pass compilation unit to the parser
2014-12-12 18:52:53 -08:00
Misko Hevery
c25e9e7c5f
fix: properly close the <tree> tag in benchmark
2014-12-11 14:23:02 -08:00
Misko Hevery
56b7ba4bce
perf: improve baseline speed by 30%
...
Use node.firstChild and node.nextSibling instead
of node.children or node.childNodes in the baseline
benchmark.
2014-12-11 14:05:58 -08:00
Tobias Bosch
e7de5f8f37
feat(benchmarks): tree benchmark baseline
2014-12-08 15:54:04 -08:00
Victor Berchet
c362f33fe4
style(Change Detection): rename WatchGroupDispatcher to ChangeDispatcher
2014-12-08 21:59:59 +01:00
Tobias Bosch
01fa90c11d
feat(benchmarks): initial version of tree benchmark
...
Closes #269
2014-12-08 12:05:00 -08:00
Tobias Bosch
5793311421
fix(benchmarks): use explicit `main()` function and do not reexport
...
Otherwise `pub` would not pick it up e.g. for `dart2js`.
2014-12-08 12:00:48 -08:00
Tobias Bosch
9c2d411450
feat(compiler): allow recursive components
2014-12-08 12:00:43 -08:00
Tobias Bosch
8db77f2405
refactor(build): simplify and modularize
...
simplify:
- use same html file for dart and JS
- build benchmarks automatically when doing `gulp build`
- centralize configuration
modularize:
- move all build tasks into separate node.js modules under
`tools/build`.
changes:
- the `build` folder is now the `dist` folder
Closes #284
2014-12-05 16:30:36 -08:00
vsavkin
65242fbd6d
perf(change_detection): add baseline to change detection benchmark
2014-12-03 18:09:21 -08:00
vsavkin
6187b80ce6
benchmark(compiler): add a benchmark measuring view instantiation in AngularDart 1.0
2014-11-25 17:46:11 -08:00
vsavkin
3d05f521fe
fix(benchmarks): add the reflection module to benchmark config files
2014-11-24 18:17:22 -08:00
vsavkin
9466592ca6
refactor(benchmarks): rename paths.js into register_system.js to match other benchmarks
2014-11-24 18:16:50 -08:00
vsavkin
9a9a13a553
feat(change_detection): add benchmarks
2014-11-24 18:01:31 -08:00
vsavkin
6e8175a816
feat(Reflection): extract reflection capabilities into a separate module
2014-11-24 16:53:12 -08:00
Misko Hevery
044625a098
chore: Make field declarations explicit
...
This used to be valid code:
```
class Foo {
constructor() {
this.bar = ‘string’;
}
}
```
This will now fail since ‘bar’ is not explicitly
defined as a field. We now have to write:
```
class Foo {
bar:string; // << REQUIRED
constructor() {
this.bar = ‘string’;
}
}
```
2014-11-24 16:35:39 -08:00
Tobias Bosch
8dfbc242af
refactor(benchmark): simplify writing benchmarks
...
Adds `benchmarks/benchpress` module and adjusts the compiler
benchmarks to use it. Also adds the Angular 1.3 benchmark
to the compiler benchmarks.
Closes #202
2014-11-17 12:27:29 -08:00
Tobias Bosch
b07ea6b90e
feat(compiler): add benchmarks
...
- compileEmptyTemplate
- compile25ElementsNoBindings
- compile25ElementsWithBindings
For the results see the PR #197 .
Closes #197
2014-11-14 14:25:02 -08:00
vsavkin
d7208b8429
feat(ElementInjector): add NgElement
2014-11-14 13:22:39 -08:00
Tobias Bosch
7308a3acc7
refactor(ElementInjector): support components
...
- Allow to access containing component directive instance from the shadow DOM.
- Allow to access app services of the app level injector of the component
when the component is instantiated.
2014-11-13 17:32:52 -08:00
Tobias Bosch
7a70f8f92d
feat(compiler): initial version of the compiler.
...
Supports:
- binds text nodes, element properties and directive properties
- locates decorator, component and template directives.
- inline templates of components
The compiler is built using a pipeline design,
see core/src/compiler/pipeline package.
Integration tests to show how the compiler, change_detection and DI work
together:
core/test/compiler/integration_spec.js
2014-11-11 17:55:50 -08:00
vsavkin
9448d78aa8
refactor(ProtoElementInjector): change `instantiate` to take positional args
2014-11-06 10:13:07 -08:00
vsavkin
b5f6417635
refactor(ElementInjector): use `index` instead of the `elementInjector` field to instantiate element injectors
2014-11-06 10:03:20 -08:00
Rado Kirov
8c566dcfb5
feat(elementBinder): introduce element binder.
...
It is a plain-old-data class to seperate the protoInjector from the
textNodes and elementBinding data.
2014-10-30 14:59:32 -07:00
Rado Kirov
b0c9d05ea7
feat(view): add onChange implementation to view.
2014-10-29 13:32:20 -07:00
Tobias Bosch
08d4a37c06
feat(selector): initial version of the selector
2014-10-28 14:46:55 -07:00
Victor Berchet
63494a74bf
chore(pubspec): fix a typo
2014-10-28 11:17:00 +01:00
vsavkin
c11ca944d4
perf(ElementInjector): add a benchmark measuring the instantiation of element injectors without using reflection
2014-10-27 17:56:05 -04:00
vsavkin
79d270c3dd
feat(ElementInjector): add support for "special" objects
2014-10-27 14:14:56 -04:00
vsavkin
e3548b497f
feat(ElementInjector): implement ElementInjector
2014-10-27 10:16:50 -04:00
vsavkin
1f4caa8773
feat(benchmark): add a simple benchmark for the di module
2014-10-18 17:06:23 -04:00