gdi2290
164cf5b2a3
style(async): add missing type annotation js/dart
2015-01-06 18:10:10 -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
Misko Hevery
0866485f95
perf: Traverse dom using firstChild instead of childNodes
...
5% improvement in speed by not using childNodes DOM API.
2015-01-06 13:16:57 -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
vsavkin
53906e484a
fix(compiler): fix a dart analyzer warning
2014-12-30 13:25:18 -08:00
Tobias Bosch
3a80c4197d
refactor(perf): move navigation into test files and rename `runSimpleBenchmark`
2014-12-29 16:58:31 -08:00
vsavkin
e5dbc69f42
cleanup(di): change di.js to declare all exported symbols
2014-12-29 15:20:50 -08:00
vsavkin
739f624cc8
refactor(change_detection): add change_detection library file
2014-12-29 15:20:42 -08:00
vsavkin
f06433fb58
feat(test_lib): implement SpyObject
2014-12-29 13:27:17 -08:00
vsavkin
a37950293a
cleanup(core): fix dart analyzer warnings
2014-12-29 12:12:11 -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
d642c6afb5
feat(change_detector): wrap exceptions into ChangeDetectionError
...
ChangeDetectionError references the original error and the location where the error happened
2014-12-18 13:38:33 -08:00
vsavkin
3d534928b5
refactor(parser): align expression language with host language
...
Remove "enhancements" to the language from the parser, so the expression language mimics the host language.
2014-12-18 10:57:34 -08:00
Victor Berchet
90daca02cf
fix(examples.dart): initialize the reflector
...
fixes #309
2014-12-18 11:11:18 +01:00
Victor Berchet
75549a660c
fix(examples.dart): add LifeCycle to the reflector
2014-12-18 11:11:18 +01:00
Victor Berchet
86fb564818
fix(ChangeDispatcher): update the onRecordChange signature
2014-12-18 10:28:17 +01:00
vsavkin
dbd85615b0
style(core): add missing type annotation
2014-12-17 15:58:20 -08:00
vsavkin
1d03c2af5d
feat(change_detector): add a way to inspect records and record ranges
2014-12-17 15:43:36 -08:00
vsavkin
df21c3c77d
feat(zone): add support for long stack traces
2014-12-17 14:56:54 -08:00
vsavkin
d5fcac4d7a
feat(compiler): pass compilation unit to the parser
2014-12-12 18:52:53 -08:00
vsavkin
cf8a5d2a0d
cleanup(zones): cleanup
2014-12-12 15:24:30 -08:00
vsavkin
2184150905
feat(bootstrap): use VmTurnZone and LifeCycle to bootstrap an application
2014-12-12 15:24:30 -08:00
vsavkin
0b550f9695
feat(LifeCycle): change LifeCycle to be able register it with a zone
2014-12-12 15:24:30 -08:00
vsavkin
df36ffb11d
feat(zone): add initial implementation of VmTurnZone
2014-12-12 15:24:30 -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
Rado Kirov
60456c8b89
feat(ng-repeat): initial implementaion of ng-repeat.
...
- adds support for content bindings via '[]'.
- directives module
2014-12-11 11:23:02 -08:00
Victor Berchet
59d6d604b4
fix(analyzer): fix a warning about an unused variable
2014-12-11 00:31:31 +01:00
Tobias Bosch
3ec3d5e084
perf(view): inline and refactor view instantiation and hydration
...
- Don’t convert DOM array into JS array via `Array.slice`
- Inline static methods for instantiation and hydration
- Misc cleanup
Closes #291
2014-12-09 16:16:45 -08:00
vsavkin
8acf9fb609
feat(change_detection): ensure that expression do not change after they have been checked
2014-12-08 18:51:19 -08:00
Tobias Bosch
e7de5f8f37
feat(benchmarks): tree benchmark baseline
2014-12-08 15:54:04 -08:00
Victor Berchet
68da0012cc
perf(Change Detection): remove the usage of getters/setters
...
- Firefox is 2.4x faster (90 vs 221ms)
- Chrome is 24% slower (15.5 vs 12.5ms)
Chrome is still 5.8x faster than Firefox
2014-12-08 21:59:59 +01:00
Victor Berchet
2c4a2f5158
perf(Change Detection): Track the range & group on changes only
...
1.4x speed improvement with Firefox
There is no need to track the range & group for all the records but only
for the records that have changed.
2014-12-08 21:59:59 +01:00
Victor Berchet
ee36063fae
style: misc minor changes
2014-12-08 21:59:59 +01: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
9b7e2e3029
fix(benchmarks_external): use angular dart transformer
2014-12-08 12:00:48 -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
72b970e4e2
fix(core): export ViewPort in the public exports
2014-12-08 12:00:47 -08:00
Tobias Bosch
9329c0e8bc
fix(application): also bind the root component to the injector
2014-12-08 12:00:47 -08:00
Tobias Bosch
9c2d411450
feat(compiler): allow recursive components
2014-12-08 12:00:43 -08:00
vsavkin
c3dc373ec4
refactor(change_detector): moves enableRecord/disableRecord into the Record class
2014-12-08 11:06:56 -08:00
vsavkin
7f941eb936
fix(change_detector): adding new ranges when disabling the current enabled record
2014-12-08 11:06:56 -08:00
vsavkin
984ff9bf1b
cleanup(view): remove unused code
2014-12-05 19:06:11 -08:00
vsavkin
33b47bd5d4
fix(view): fix DirectivePropertyGroupMemento to return a new group instead of null
2014-12-05 19:01:16 -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
Victor Berchet
ceb9ee92bb
fix(Change Detection): fix merge error
2014-12-05 12:20:00 +01:00
Rado Kirov
174613067c
feat(views): adds (de)hydration of views and template vars.
...
Dehydrated views are views that are structurally fixed, but their
directive instances and viewports are purged.
Support for local bindings is added to the view.
2014-12-04 22:40:51 -08:00
Victor Berchet
5c531f718e
perf(RecordRange): optimize disable()
...
There could be no lastEnabledChildRecord when there is no
firstEnabledChildRecord
- saves time by skipping findLastEnabledRecord() when the result is know
to be null,
- saves a test as isPresent(lastEnabledChildRecord) ==
isPresent(firstEnabledChildRecord)
2014-12-04 19:52:43 +01:00
Peter Bacon Darwin
983c00c495
docs(di/src/annotations): use triple backticks to code-fence code blocks
2014-12-04 14:16:52 +00:00
Victor Berchet
11c52ce06d
style: fix typos
2014-12-04 11:01:19 +01:00
vsavkin
65242fbd6d
perf(change_detection): add baseline to change detection benchmark
2014-12-03 18:09:21 -08:00
vsavkin
847cefcb7b
feat(change_detector): notify directives on property changes
2014-12-03 14:33:52 -08:00
Rado Kirov
5bdefee6c9
fix(record-range): fixes bug when disabling empty ranges.
2014-12-03 12:04:06 -08:00
Rado Kirov
c59cc8631a
feat(examples): adds static dart hello world example.
...
Use gulp examples/pub.serve to start up the server and go to
http://localhost:8080/index_static.html to see the static app.
2014-12-03 10:58:30 -08:00
Victor Berchet
0f3134acd4
perf(ProtoRecordRange): re-use a ProtoRecordCreator
2014-12-03 12:10:07 +01:00
Victor Berchet
f8c070c5e4
perf(ProtoRecord): remove the unused prev field
2014-12-03 12:10:07 +01:00
Tommy Odom
f088e9ef15
feat(transpiler): Transform for..of to Dart as for..in
...
fixes #53
2014-12-03 10:48:48 +01:00
Victor Berchet
bf71b94bde
feat(Change Detector): Add support for collection content watch
2014-12-03 10:37:13 +01:00
Victor Berchet
2d2f44949d
perf(Change Detection): Remove a useless test
...
Only "implicit receiver" records get their context updated (since #239 )
2014-12-03 10:14:07 +01:00
Victor Berchet
7cb93fd59e
feat(Change Detection): Add support for keyed access
2014-12-02 16:15:13 +01:00
Tobias Bosch
7bc282d15e
feat(viewport): add initial integration test for template directives
2014-12-01 16:39:37 -08:00
Tobias Bosch
0758165fb5
fix(compiler): allow identifiers with `-` in the template bindings as keys.
2014-12-01 16:39:36 -08:00
Tobias Bosch
63053438ea
fix(compiler): always wrap views into an own `<template>` element
...
This is needed to allow view instantiation also in browsers that
don’t support the `<template>` element and because of this would
return elements from the content of `<template>` elements when
using `element.querySelectorAll`.
Also stores the `elementBinder.nestedProtoView` correctly
when a template directive was used on a `<template>` element.
2014-12-01 16:39:36 -08:00
Pawel Kozlowski
95d86d151a
fix(example): correct markup in the hello world example
2014-12-01 15:13:02 -08:00
Victor Berchet
fc2181ec4e
fix(Dart1.8): Promise handling
2014-12-01 21:17:16 +01:00
Victor Berchet
0703ee526c
fix(Dart1.8): fix analyzer warnings
2014-12-01 21:17:16 +01:00
Uri Shaked
3e57189e45
fix(examples): fix hello_world example (js)
...
Added missing path mapping for the new reflection module.
2014-11-26 14:14:18 -08:00
vsavkin
1863d50978
feat(parser): adds support for variable bindings
2014-11-26 14:03:05 -08:00
vsavkin
a3d9f0fead
fix(parser): handle empty strings
2014-11-26 12:59:11 -08:00
vsavkin
6f889e3094
feat(di): add OpaqueToken to DI
...
Using `new Object()` as a token causes cryptic errors. OpaqueToken class should be used instead.
2014-11-26 12:52:16 -08:00
vsavkin
6187b80ce6
benchmark(compiler): add a benchmark measuring view instantiation in AngularDart 1.0
2014-11-25 17:46:11 -08:00
Rado Kirov
c6f14dd833
feat(viewPort): adds initial implementation of ViewPort.
...
ViewPort is the mechanism backing @Template directives. Those
directives can use the viewport to dynamically create, attach and
detach views.
2014-11-25 16:19:50 -08:00
vsavkin
9a28fa8590
refactor(change_detection): make RecordRange responsible for removing iself
2014-11-25 14:33:19 -08:00
vsavkin
2b53a2f353
fix(ChangeDetector): fix issues with handling empty ranges
2014-11-25 14:28:02 -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
bfd3c2d5a9
fix(reflection): update pubspec.yaml to add a missing dependency on reflection
2014-11-24 18:03:26 -08:00
vsavkin
f55011cde2
fix(reflection): fix a typo
2014-11-24 18:02:21 -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
Victor Berchet
ab961b327e
feat(RecordRange): Set context for implicit receivers only
2014-11-24 15:32:25 +01:00
Victor Berchet
69af7ea2c0
feat(ChangeDetection): convert Record.mode to a bit field
2014-11-24 15:18:52 +01:00
Rado Kirov
70c38e6260
doc(example): adds comments to the hello world app.
...
Explains the basic concepts as seen in the demo app, but it is not a
substitute for proper documentation which will come later.
2014-11-20 12:32:30 -08:00
vsavkin
2980eb5b0b
refactor(ChangeDetector): rename WatchGroup into RecordRange
2014-11-20 10:24:18 -08:00
vsavkin
862c6412c4
feat(ChangeDetector): implement enabling/disabling watch group
2014-11-20 10:24:18 -08:00
Tobias Bosch
fc5b7edca4
feat(compiler): support `on-` and `[]`
2014-11-19 16:24:12 -08:00
Tobias Bosch
c6846f1163
feat(compiler): new semantics for `template` attributes and view variables.
...
- Supports `<div template=“…”>`, including parsing the expressions within
the attribute.
- Supports `<template let-ng-repeat=“rows”>`
- Adds attribute interpolation (was missing previously)
2014-11-19 14:32:15 -08:00
Rado Kirov
d6193e9073
feat(examples): adds hello-world app.
...
The app is writen in ES6 and transpiles to ES5 and dart as part of the
usual build.
The app contains a component, a directive and a services wired together
through dependency injection.
Before Each:
- gulp build
For es5:
- gulp serve
- open 'localhost:8000/js/examples/lib/hello_world/'
For dart:
- gulp examples/pub.serve
- open 'localhost:8080'
2014-11-19 12:24:14 -08:00
Rado Kirov
1221857d17
feat(bootstraping): application bootstrapping implementation.
...
Entry-point to bootstrapping is a rootComponent. The bootstrapping
method, uses the component's selector to find the insertion element in
the DOM, and attaches the component in its ShadowRoot.
2014-11-18 15:02:38 -08:00
vsavkin
f0d6464856
feat(ChangeDetector): change View to construct a WatchGroup hierarchy
2014-11-17 17:49:17 -08:00
Victor Berchet
384f0ae858
feat(Change Detection): Child watch groups
2014-11-17 17:49:17 -08:00
Tobias Bosch
7482b682d6
fix(test_lib): allow equality tests for `Map`
2014-11-17 17:47:50 -08:00
Tobias Bosch
b2ecdb5da7
fix(compiler): use parentheses around expressions and escape quotes
2014-11-17 17:47:50 -08:00
Tobias Bosch
03882dcccc
refactor(ElementInjector): remove stale file and make StaticKeys private
2014-11-17 17:44:39 -08:00
vsavkin
daf8f72b74
feat(ChangeDetector): implement enabling/disabling records
2014-11-17 16:54:25 -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
Rado Kirov
be4cb2db3a
feat(view): add support for instantiation of nested component views.
...
Include shadowDom creation and integration tests for nested components.
Fix accidentally clobbered modules/core/test/compiler/view_spec.js by
previous commit.
2014-11-14 16:09:36 -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
Tobias Bosch
aa9eeb80e7
fix(change_detection/lexer): support production mode
...
The Lexer uses the global `assert` function of Dart, which is not
yet available in JavaScript. Later on, all `assert` statements should
be automatically removed by Traceur.
2014-11-14 14:22:38 -08:00
vsavkin
d7208b8429
feat(ElementInjector): add NgElement
2014-11-14 13:22:39 -08:00
vsavkin
ac8351b7bc
feat(ElementInjector): change ElementInjector so @parent and @ancestor do not include self.
2014-11-14 13:18:39 -08:00
vsavkin
e15bcf0ffd
refactor(ChangeDetector): pass formatters when instantiating a watch group
2014-11-14 13:16:55 -08:00
vsavkin
03410850b4
feat(change_detector): cleanup
2014-11-14 13:16:55 -08:00
vsavkin
34d76f1c73
feat(change_detector): add support for map literals
2014-11-14 13:16:55 -08:00
vsavkin
75fd98428a
feat(change_detector): add support for array literals
2014-11-14 13:16:55 -08:00
vsavkin
0e6d52306b
feat(change_detector): add support for ternary
2014-11-14 13:16:55 -08:00
vsavkin
f38b94067a
feat(change_detector): add support for negate
2014-11-14 13:16:55 -08:00
vsavkin
4e38e3a96c
feat(change_detector): add support for method calls
2014-11-14 13:16:55 -08:00
vsavkin
dcd905ae85
feat(change_detector): add support for formatters
2014-11-14 13:16:55 -08:00
vsavkin
79a9430f2c
feat(change_detection): add support for binary operations and literals
2014-11-14 13:16:55 -08:00
Rado Kirov
b8e3617a1d
refactor(annotations): replace Module functions with plain lists.
...
Renames:
elementServices -> shadowDomServices.
2014-11-14 13:03:24 -08:00
Tobias Bosch
1b79c91320
fix(compiler, view): centralize TemplateElement checks and fix inconsistencies
...
Fixes #189
Closes #194
2014-11-14 11:04:18 -08:00
Tobias Bosch
5e0ff2cbb7
refactor(ElementBinder): Store componentDirective and templateDirective as well.
2014-11-13 17:36:45 -08:00
Tobias Bosch
352b6406ad
fix(BaseException): Support stack traces in BaseException
2014-11-13 17:32:56 -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
Sekib Omazic
62efb56b0a
fix(lang): fix small typo.
2014-11-11 16:59:29 -08:00
Sekib Omazic
398571e3e4
docs(di): simple typo
2014-11-10 17:07:57 -08:00
vsavkin
90fd1a9227
refactor(Parser): cleanup
2014-11-07 16:21:12 -08:00
Alxandr
cb276fe412
Fixed small typo in example
...
Closes #165
2014-11-07 16:20:38 -08:00
Vojta Jina
d16d6a02ab
feat(transpiler): class fields for Dart
2014-11-07 10:29:48 -08:00
Vojta Jina
b4ff802e28
feat(deps): update Traceur 0.0.74
2014-11-07 10:29:48 -08:00
vsavkin
a1c6f1bbe9
refactor(Key): extract KeyRegistry to remove the need in `Key.clear`
2014-11-06 10:56:45 -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
vsavkin
7908533336
refactor(Parser): cleanup
2014-11-06 09:59:22 -08:00
vsavkin
693489ce38
refactor(Parser): cleanup
2014-11-06 09:11:13 -08:00
vsavkin
7b777b1f71
feat(Parser): add support for method invocations
2014-11-06 09:11:13 -08:00
vsavkin
977bc77c96
feat(Parser): improve error handling
2014-11-06 09:11:13 -08:00
vsavkin
ac060ed405
feat(Parser): add support for arrays and maps
2014-11-06 09:11:13 -08:00
vsavkin
8cc008bda1
feat(Parser): add support for assignments
2014-11-06 09:11:13 -08:00
Victor Berchet
0a766f4654
feat(Change Detection): Implement map changes
2014-11-05 14:02:03 -08:00
Victor Berchet
1bd304e7ab
feat(Change Detection): Implement collection changes
2014-11-05 13:30:44 -08:00
Vojta Jina
2b7738c12c
fix(example): make it work
2014-11-05 11:19:02 -08:00
vsavkin
18cdab7450
refactor(parser): clean up tests
2014-11-04 16:08:01 -08:00
vsavkin
03c779321f
cleanup(parser): add type annotations to all AST classes
2014-11-04 15:56:43 -08:00
vsavkin
52b3838a21
feat(parser): split parse into parseBinding and parseAction
2014-11-04 15:51:56 -08:00
vsavkin
00bc9e5d56
feat(parser): add support for formatters
2014-11-04 10:47:33 -08:00
vsavkin
8a829d346b
feat(parser): throw when expected an identifier
2014-11-04 09:21:28 -08:00
vsavkin
c41f59c794
feat(parser): change Parser to return null when one of the operands is null
2014-11-04 09:06:46 -08:00
vsavkin
a7fe25d93f
feat(parser): add support for ternary operator
2014-11-03 17:25:16 -08:00
Rado Kirov
965fa1a985
feat(parser): adds basic expressions to the parser.
...
Mostly copy pasta from angular.dart.
Remove GetterFactory in favor for ClosureMap (which has basically the same
implementation).
2014-10-31 14:32:12 -07: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
91f50b67b7
feat(view): hook watch group instantiation in the view.
2014-10-29 17:04:56 -07:00
vsavkin
01e6c7b70c
feat(Parser): implement Parser
...
Add a simple parser implementation that supports only field reads.
2014-10-29 18:29:34 -04:00
vsavkin
acd7035347
feat(test_lib): change test_lib.dart to structurally compare objects
2014-10-29 18:25:32 -04:00