45 Commits

Author SHA1 Message Date
Veres Lajos
de90314304 style: typos fixed - https://github.com/vlajos/misspell-fixer ()
PR Close 
2018-03-27 14:51:53 -04:00
Alex Rickabaugh
db56836425 feat: tree-shakeable providers API updates ()
Rename @Injectable({scope -> providedIn}).

Instead of {providedIn: APP_ROOT_SCOPE}, accept {providedIn: 'root'}.
Also, {providedIn: null} implies the injectable should not be added
to any scope.

PR Close 
2018-03-13 09:28:05 -07:00
Miško Hevery
6d1367d297 feat(ivy): provide sanitization methods which can be tree shaken ()
By providing a top level sanitization methods (rather than service) the
compiler can generate calls into the methods only when needed. This makes
the methods tree shakable.

PR Close 
2018-03-07 18:24:07 -08:00
Miško Hevery
538f1d980f refactor(core): move sanitization into core ()
This is in preparation of having Ivy have sanitization inline.

PR Close 
2018-03-07 18:24:06 -08:00
Trotyl
991300b86c feat(platform-browser): do not throw error when Hammer.js not loaded ()
closes 

PR Close 
2018-02-18 13:29:14 -08:00
Alex Rickabaugh
7ac34e42a0 feat: allow direct scoping of @Injectables to the root injector ()
@Injectable() supports a scope parameter which specifies the target module.
However, it's still difficult to specify that a particular service belongs
in the root injector. A developer attempting to ensure that must either
also provide a module intended for placement in the root injector or target
a module known to already be in the root injector (e.g. BrowserModule).
Both of these strategies are cumbersome and brittle.

Instead, this commit adds a token APP_ROOT_SCOPE which provides a
straightforward way of targeting the root injector directly, without
requiring special knowledge of modules within it.

PR Close 
2018-02-15 14:20:27 -08:00
JiaLi.Passion
1d571b299d feat(platform-browser): fix , can config hammerOptions ()
PR Close 
2018-02-14 15:02:58 -05:00
adasilva
6435ecd3c6 fix(platform-browser): support 0/false/null values in transfer_state ()
Issue 

PR Close 
2018-02-13 11:28:22 -08:00
Peter Bacon Darwin
a751649c8d fix(core): use appropriate inert document strategy for Firefox & Safari ()
Both Firefox and Safari are vulnerable to XSS if we use an inert document
created via `document.implementation.createHTMLDocument()`.

Now we check for those vulnerabilities and then use a DOMParser or XHR
strategy if needed.

Further the platform-server has its own library for parsing HTML, so we
sniff for that (by checking whether DOMParser exists) and fall back to
the standard strategy.

Thanks to @cure53 for the heads up on this issue.

PR Close 
2018-02-08 08:55:15 -08:00
Miško Hevery
ba850b36de Revert "fix(core): should use native addEventListener in ngZone ()"
This reverts commit 65a2cb830716afaace03684e4023e7b0e24d669f.
2017-11-29 14:56:29 -06:00
JiaLi.Passion
65a2cb8307 fix(core): should use native addEventListener in ngZone ()
PR Close 
2017-11-28 22:27:25 -06:00
JiaLi.Passion
a740e4f00a fix(core): fix , should be able to cancel listener from mixed zone ()
PR Close 
2017-11-21 11:49:36 -06:00
JiaLi.Passion
997336b790 fix(core): should support event.stopImmediatePropagation ()
PR Close 
2017-11-16 22:43:53 -06:00
Jason Aden
2586846ee2 Revert "fix(core): should support event.stopImmediatePropagation"
This reverts commit 5e0eb5e3d94bd7077c4d6657b89bfc8d900f2bc6.
2017-11-15 11:35:21 -08:00
JiaLiPassion
200d92d030 fix(core): should support event.stopImmediatePropagation () 2017-11-03 15:22:05 -07:00
JiaLiPassion
a28d616e10 fix(core): __symbol__ should return __zone_symbol__ without zone.js loaded () 2017-11-02 16:06:06 -07:00
Tobias Bosch
db74f44a97 fix: don’t rely on goog.DEBUG but on COMPILED instead
`good.DEBUG` can also be true when using advanced compilation.

Attention: This change has be applied in G3 already as a local mod!
2017-09-29 09:26:38 -07:00
Victor Berchet
6a9ce67714 Revert "refactor(core): Removed readonly getters and changed to readonly ()"
This reverts commit 2b84b86fc08a4ecb3078bd8b3a1bfc7b07946b20.
2017-09-28 13:36:44 -07:00
tinayuangao
2b84b86fc0 refactor(core): Removed readonly getters and changed to readonly ()
variables
2017-09-28 09:36:29 -07:00
Tobias Bosch
a7798f2a93 fix: don’t use the global ng at all with closure enhanced optimizations
This is needed as:
- closure declares globals itself for minified names, which sometimes clobber our `ng` global
- we can't declare a closure extern as the namespace `ng` is already used within Google for typings for angularJS (via `goog.provide('ng....')`).
2017-09-27 10:09:56 -07:00
Tobias Bosch
b21a1d1961 fix: create proper externs so that closure does not clobber e.g. ng for internal variables () 2017-09-26 15:02:33 -07:00
Olivier Combe
0f5c70d563 build: update npm dependencies ()
PR Close 
2017-09-22 13:20:52 -07:00
Vikram Subramanian
cfd9ca0d6f feat(platform-server): add an API to transfer state from server ()
TransferState provides a shared store that is transferred from the
server to client. To use it import BrowserTransferStateModule from the
client app module and ServerTransferStateModule from the server app
module and TransferState will be available as an Injectable object.

PR Close 
2017-09-21 13:56:13 -07:00
Yuan Gao
549f2254b4 refactor(core): remove getters for packages/animations, language-service, platform-browser, router ()
PR Close 
2017-09-20 12:38:37 -07:00
JiaLi.Passion
d52f42688a fix(platform-browser): run BLACK_LISTED_EVENTS outside of ngZone ()
PR Close 
2017-09-05 15:33:22 -05:00
JiaLi.Passion
ed1175f27e fix(platform-browser): simple version of zone aware addEventListener ()
PR Close 
2017-09-05 15:33:22 -05:00
Vikram Subramanian
2f2d5f35bd feat(platform-server): provide a DOM implementation on the server
Fixes 

Uses Domino - https://github.com/fgnass/domino and removes dependency on
Parse5.

The DOCUMENT and nativeElement were never typed earlier and were
different on the browser(DOM nodes) and the server(Parse5 nodes). With
this change, platform-server also exposes a DOCUMENT and nativeElement
that is closer to the client. If you were relying on nativeElement on
the server, you would have to change your code to use the DOM API now
instead of Parse5 AST API.

Removes the need to add services for each and every Document
manipulation like Title/Meta etc.

This does *not* provide a global variable 'document' or 'window' on the
server. You still have to inject DOCUMENT to get the document backing
the current platform server instance.
2017-08-30 17:46:16 -07:00
Olivier Combe
d7f42bfbe6 refactor(platform-browser): remove deprecated NgProbeToken ()
BREAKING CHANGE: `NgProbeToken` has been removed from `@angular/platform-browser` as it was deprecated since v4. Import it from `@angular/core` instead.

PR Close 
2017-08-17 18:01:52 -05:00
Miško Hevery
fcadbf4bf6 perf: switch angular to use StaticInjector instead of ReflectiveInjector
This change allows ReflectiveInjector to be tree shaken resulting
in not needed Reflect polyfil and smaller bundles.

Code savings for HelloWorld using Closure:

Reflective: bundle.js:  105,864(34,190 gzip)
    Static: bundle.js:  154,889(33,555 gzip)
                            645( 2%)

BREAKING CHANGE:

`platformXXXX()` no longer accepts providers which depend on reflection.
Specifically the method signature when from `Provider[]` to
`StaticProvider[]`.

Example:
Before:
```
[
  MyClass,
  {provide: ClassA, useClass: SubClassA}
]

```

After:
```
[
  {provide: MyClass, deps: [Dep1,...]},
  {provide: ClassA, useClass: SubClassA, deps: [Dep1,...]}
]
```

NOTE: This only applies to platform creation and providers for the JIT
compiler. It does not apply to `@Compotent` or `@NgModule` provides
declarations.

Benchpress note: Previously Benchpress also supported reflective
provides, which now require static providers.

DEPRECATION:

- `ReflectiveInjector` is now deprecated as it will be remove. Use
  `Injector.create` as a replacement.

closes 
2017-08-07 15:42:34 -07:00
Miško Hevery
6279e50d78 perf(core): use native addEventListener for faster rendering. ()
Angular can make many assumptions about its event handlers. As a result
the bookkeeping for native addEventListener is significantly cheaper
than Zone's addEventLister which can't make such assumptions.

This change bypasses the Zone's addEventListener if present and always
uses the native addEventHandler. As a result registering event listeners
is about 3 times faster.

PR Close 
2017-07-25 15:35:44 -05:00
Miško Hevery
b7a6f52d59 perf: latest tsickle to tree shake: abstract class methods & interfaces ()
In previous version of tsickle abstract class methods were materialized.
The change resulted in 6Kb savings in angular.io bundle.

This change also required the removal of `@private` and `@return` type
annotation as it is explicitly dissalowed by tsickle.

NOTE: removed casts in front of `makeDecorator` due to:
https://github.com/angular/devkit/issues/45

```
 14938 Jul 19 13:16 0.b19e913fbdd6507d346b.chunk.js
  1535 Jul 19 13:16 inline.d8e019ea3cfdd86c2bd0.bundle.js
589178 Jul 19 13:16 main.54c97bcb6f254776b678.bundle.js
 34333 Jul 19 13:16 polyfills.4a3c9ca9481d53803157.bundle.js

 14938 Jul 18 16:55 0.b19e913fbdd6507d346b.chunk.js
  1535 Jul 18 16:55 inline.0c83abb44fad9a2768a7.bundle.js
582786 Jul 18 16:55 main.ea290db71b051813e156.bundle.js
 34333 Jul 18 16:55 polyfills.4a3c9ca9481d53803157.bundle.js

main savings: 589178 - 582786 = 6,392
```

PR Close 
2017-07-21 16:35:37 -05:00
Alex Rickabaugh
dd04f09483 feat(common): on-by-default XSRF support in HttpClient ()
Fixes 
2017-07-13 17:22:02 -07:00
Victor Berchet
c723d42d0a refactor: fix typos () 2017-07-07 16:55:17 -07:00
Alex Rickabaugh
37797e2b4e feat(common): new HttpClient API
HttpClient is an evolution of the existing Angular HTTP API, which exists
alongside of it in a separate package, @angular/common/http. This structure
ensures that existing codebases can slowly migrate to the new API.

The new API improves significantly on the ergonomics and features of the legacy
API. A partial list of new features includes:

* Typed, synchronous response body access, including support for JSON body types
* JSON is an assumed default and no longer needs to be explicitly parsed
* Interceptors allow middleware logic to be inserted into the pipeline
* Immutable request/response objects
* Progress events for both request upload and response download
* Post-request verification & flush based testing framework
2017-07-07 12:09:32 -07:00
Alex Rickabaugh
2a7ebbe982 refactor: move DOCUMENT from platform/browser to common 2017-07-07 12:09:32 -07:00
Miško Hevery
bb2fc6b8da refactor(platform-browser): Remove setGlobalVar from DOM adapter 2017-06-06 13:26:23 -07:00
vikerman
c805082648 fix(platform-server): wait for async app initializers to complete before removing server side styles ()
This fixes a flicker when transitioning from server rendered page to client rendered page in lazy loaded routes by waiting for the lazy loaded route to finish loading, assuming initialNavigation on the route is set to 'enabled'.

Fixes 
2017-05-16 15:14:55 -07:00
Matias Niemelä
7f9c589ba3 feat(core): add begin and end renderer methods to track change detection 2017-05-04 15:07:27 -04:00
Miško Hevery
5293794316 fix: turn on nullability in the code base. 2017-04-18 12:07:33 -07:00
Miško Hevery
728c9d0632 fix(platform-browser): Update types for TypeScript nullability support
Closes 
2017-04-18 12:07:33 -07:00
Dzmitry Shylovich
c17b912eb9 refactor: use object spread operator rather than merge () 2017-03-24 14:45:33 -07:00
Dzmitry Shylovich
92084f2b6a fix(platform-browser): setAttribute should work with xmlns namespace ()
Closes 
2017-03-23 12:52:06 -07:00
Victor Berchet
a4076c70cc fix(platform-browser): prevent clobbered elements from freezing the browser
see
4f69d38f09
2017-03-16 10:16:39 -07:00
Tobias Bosch
ff71eff157 refactor(core): use flags in Renderer2.setStyle instead of booleans ()
BREAKING CHANGE: (since v4 rc.1)
- `Renderer2.setStyle` no longer takes booleans but rather a
  bit mask of flags.
2017-03-13 09:45:04 -07:00
Jason Aden
3e51a19983 refactor: move angular source to /packages rather than modules/@angular 2017-03-08 16:29:27 -08:00