New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings #24602
Conversation
You can preview 4a50cd9 at https://pr24602-4a50cd9.ngbuilds.io/. |
4a50cd9
to
07214ca
Compare
export function elementInitStyling<T>(index: number, styles?: {[key: string]: any}): void { | ||
const hasData = styles && Object.keys(styles).length > 0; | ||
viewData[index] = {initial: styles || null, multi: null, single: null, updated: hasData}; | ||
// TODO (misko|matias): figure out how to further offset the HEADER_OFFSET value when styling is |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@mhevery please look at this line and give feedback.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I understand your question. But what you are doing in code seems right.
You can preview 07214ca at https://pr24602-07214ca.ngbuilds.io/. |
return value; | ||
} | ||
|
||
function deCamelCase(value: string): string { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this be unified in @angular/core
and being shared?
Core:
angular/packages/core/src/view/services.ts
Lines 475 to 477 in cb31381
function camelCaseToDashCase(input: string): string { | |
return input.replace(CAMEL_CASE_REGEXP, (...m: any[]) => '-' + m[1].toLowerCase()); | |
} |
AnimationBrowser (Opposite only):
angular/packages/animations/browser/src/util.ts
Lines 230 to 232 in cb31381
export function dashCaseToCamelCase(input: string): string { | |
return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase()); | |
} |
Compiler (Opposite only):
angular/packages/compiler/src/util.ts
Lines 16 to 18 in cb31381
export function dashCaseToCamelCase(input: string): string { | |
return input.replace(DASH_CASE_REGEXP, (...m: any[]) => m[1].toUpperCase()); | |
} |
PlatformBrowser (both direction):
angular/packages/platform-browser/src/dom/util.ts
Lines 15 to 21 in cb31381
export function camelCaseToDashCase(input: string): string { | |
return input.replace(CAMEL_CASE_REGEXP, (...m: string[]) => '-' + m[1].toLowerCase()); | |
} | |
export function dashCaseToCamelCase(input: string): string { | |
return input.replace(DASH_CASE_REGEXP, (...m: string[]) => m[1].toUpperCase()); | |
} |
Element:
angular/packages/elements/src/utils.ts
Lines 53 to 55 in cb31381
export function camelToDashCase(input: string): string { | |
return input.replace(/[A-Z]/g, char => `-${char.toLowerCase()}`); | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It could even be exported to the outside world. We have our own version of this as well, and I'm sure a lot of people do too. (:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, don't export it to the outside world. It seems like a good idea on a surface, but it becomes part of public API which has to be maintained, deprecated, documented, etc...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unification is hard, since compiler needs to compile core hence it can't depend on core.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But it should at least be placed into angular/packages/compiler/src/util.ts
along with its counterpart, shouldn't it?
* @param index Index of the element's styling storage where the styling will be placed | ||
* @param styles A key/value map of CSS styles that will be registered on the element. | ||
* Each inidividual style will be used on the element as long as it is not overridden | ||
* by an styles placed on the element by multi (`[style]`) or singular (`[style.prop]`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
by an styles
?
Did anything change on Ivy status document? |
07214ca
to
e544ee6
Compare
You can preview e544ee6 at https://pr24602-e544ee6.ngbuilds.io/. |
|
||
static elementStyleSingle: o.ExternalReference = {name: 'ɵsi', moduleName: CORE}; | ||
|
||
static elementApplyStyling: o.ExternalReference = {name: 'ɵas', moduleName: CORE}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the names should be consistent in the prefix. So first word should be element
second style
and last the sub-action. How about:
elementStyle <= elementInitStyiling
elementStyleMap <= elementStyleMulti
elementStyleProp <= elementStyleSingle
elementStyleApply: => more consistent with i18nApply instruction
Also rename the short name appropriately. so ɵsi
not ɵis
, etc...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here is my initial pass.
const COLON = 58; | ||
const SEMICOLON = 59; | ||
|
||
export function parseStyleStringIntoObj(value: string): {[key: string]: any} { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The word string
is unnecessary, also the return type is not needed. Should just be parseStyle
currentQuote = currentQuote == DOUBLE_QUOTE ? 0 : DOUBLE_QUOTE; | ||
break; | ||
case COLON: | ||
if (!currentProp && !parenCount && !currentQuote) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
since parenCount
is a number we should say pranCount === 0
since that would be more readable. same for currentQuote
const styles: {[key: string]: any} = {}; | ||
|
||
let i = 0; | ||
let parenCount = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rename to parenDepth
* found in the LICENSE file at https://angular.io/license | ||
*/ | ||
|
||
const OPEN_PAREN = 40; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you should convert this to const enum
const enum CharCode {
ParenOpen = 40,
ParenClose = 41,
...
}
NOTE: Put Close
as last so that they sort alphabetically next to each other.
|
||
let i = 0; | ||
let parenCount = 0; | ||
let currentQuote = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
rename currentQuote
to const quoteMode:0|39|34 = 0;
So that it is clear what mode we are in.
You could go all out like this:
const enum QuoteMode {
None = 0,
Singe = 39
Double = 34
}
const quoteMode: QuoteMode
export function elementInitStyling<T>(index: number, styles?: {[key: string]: any}): void { | ||
const hasData = styles && Object.keys(styles).length > 0; | ||
viewData[index] = {initial: styles || null, multi: null, single: null, updated: hasData}; | ||
// TODO (misko|matias): figure out how to further offset the HEADER_OFFSET value when styling is |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure I understand your question. But what you are doing in code seems right.
* Assign static (creation-level) styling to the element. | ||
* | ||
* This instruction is meant to be called during creation mode to apply all styling | ||
* (`style="..."`) values to the element. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is public API, so it needs a much mored detailed doc section.
* on a given element's storage index. | ||
* | ||
* | ||
* @param index Index of the element's styling storage where the styles will read and applied from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Public API, needs detailed docs section.
const lElement: LElementNode = load(index - 1); | ||
const isProcedural = isProceduralRenderer(renderer); | ||
const styleObj = lElement.native['style']; | ||
Object.keys(stylesToApply).forEach(prop => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use for
over forEach
for perf code.
|
||
const lElement: LElementNode = load(index - 1); | ||
const isProcedural = isProceduralRenderer(renderer); | ||
const styleObj = lElement.native['style']; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to move to where it is needed. We don't always need to read it.
I see that lElement.native
is used in many places. Should be pulled out to local var.
e544ee6
to
578c392
Compare
You can preview 578c392 at https://pr24602-578c392.ngbuilds.io/. |
578c392
to
0dbac5d
Compare
You can preview 0dbac5d at https://pr24602-0dbac5d.ngbuilds.io/. |
You can preview adb6ff2 at https://pr24602-adb6ff2.ngbuilds.io/. |
You can preview 7bb9f4b at https://pr24602-7bb9f4b.ngbuilds.io/. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey, I think we need to do one more perf optimization. I wrote it up in detail, and I can pair with you tomorrow if you need more explanations or help implementing it.
@@ -39,7 +39,11 @@ export class Identifiers { | |||
|
|||
static elementStyle: o.ExternalReference = {name: 'ɵs', moduleName: CORE}; | |||
|
|||
static elementStyleNamed: o.ExternalReference = {name: 'ɵsn', moduleName: CORE}; | |||
static elementStyleMap: o.ExternalReference = {name: 'ɵsm', moduleName: CORE}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought we agreed that elementStyle
=> elementStyling
?
we can than rename elementStyleMap
=> elementStyle
for (let i = 0; i < styles !.length; i += 2) { | ||
const prop = styles ![i]; | ||
const value = styles ![i + 1]; | ||
initialStyles[prop] = value; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- you are converting the array into object literal which is not efficient.
- You are creating the same object literal for each instance of the template.
see comment below.
packages/core/src/render3/styling.ts
Outdated
/** | ||
* All individual styles that were assigned using `updateElementStyleProp` | ||
* (These are populated from `[style.prop]` bindings.) | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am looking at the initial
, multi
and single
and I am not liking the fact that we have object literals which we have to enumerate every time the code executes, which is slow. It would be much better if all of them would be stored as arrays. This way the iteration over them would be much quicker. Something like this:
interface ElementStyleRecord {
update: boolean;
initial: string[];
multi: string[];
single: string[];
}
However initial
is already an array so we should just use it.
The next issues is that we will have too many arrays, and they are somewhat expensive (70 bytes per array). Could we just have single array. (https://github.com/angular/angular/blob/master/packages/core/src/render3/PERF_NOTES.md)
const enum StyleFlags {
None = b0000;
Multy = b0001; // Marker that this is part of the Multi section
Dirty = b0010; // Marker when a new style arrives and will need to be flushed/applied
Remove = b0100; // Marker when the style has been remove and will need to be flushed/applied
}
interface ElementStyleRecord extends Array<string>{
[0]: string[]; // Pointer to the initial array data.
[1]: StyleFlags; // A single place to check if any other flags are dirty
}
So imagine that you have:
initial: ['color': 'red'];
multi: ['color': 'blue', width: '10px'];
single: ['height': '10px'];
this would be:
const initialConst = ['color', 'red'];
styleRecord = [
initialConst,
StyleFlags.Dirty,
StyleFlags.Multi | StyleFlags.Dirty, 'color', 'blue',
StyleFlags.Multi | StyleFlags.Dirty, 'width', '10px',
StyleFlags.Dirty, 'height': '10px'];
Applying this to element would be easy since you would just have to apply properties from left to right, letting style be overwrite as needed. The order of array would be the order of overwriting. Since overwrites are relatively rare, you would not even need to track them, you could just write the style twice.
Once the apply method would run the data structure would be processed from left to right and the flags would be updated like so:
const initialConst = ['color', 'red'];
styleRecord = [
initialConst,
StyleFlags.None,
StyleFlags.Multi, 'color', 'blue',
StyleFlags.Multi, 'width', '10px',
StyleFlags.Single, 'height': '10px'];
By updating the flags we know that we don't have to write to element more than is necessary.
A removal would be marked as so.
const initialConst = ['color', 'red'];
styleRecord = [
initialConst,
StyleFlags.Dirty,
StyleFlags.Multi | StyleFlags.Remove, 'color', 'red',
StyleFlags.Multi, 'width', '10px',
StyleFlags.Single, 'height': '10px'];
And after update the data structure would look like so:
const initialConst = ['color', 'red'];
styleRecord = [
initialConst,
StyleFlags.None,
StyleFlags.Note, null, null,
StyleFlags.Multi, 'width', '10px',
StyleFlags.Single, 'height': '10px'];
NOTE: we don't have to shrink the array since it is likely that the style will come back. So we just leave a hole there. (But we would have to grow it if new styles show up.
7bb9f4b
to
daef3f8
Compare
You can preview daef3f8 at https://pr24602-daef3f8.ngbuilds.io/. |
You can preview 4f4ad9e at https://pr24602-4f4ad9e.ngbuilds.io/. |
} else if (quote === Char.QuoteDouble && value.charCodeAt(i - 1) !== Char.BackSlash) { | ||
quote = Char.QuoteNone; | ||
} | ||
break; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can merge these 2 cases for smaller code generation:
case Char.QuoteSingle:
case Char.QuoteDouble:
// valueStart needs to be there since prop values don't
// have quotes in CSS
valueHasQuotes = valueHasQuotes || valueStart > 0;
if (quote === Char.QuoteNone) {
quote = token;
} else if (quote === token && value.charCodeAt(i - 1) !== Char.BackSlash) {
quote = Char.QuoteNone;
}
break;
You can preview fdc0343 at https://pr24602-fdc0343.ngbuilds.io/. |
* Example: `color: red; height: auto`. | ||
* @returns an object literal. `{ color: 'red', height: 'auto'}`. | ||
*/ | ||
export function parseStyle(value: string): {[key: string]: any} { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This util could possibly benefit #19645 as well, should it be ivy-only?
if (styleInputs.length && elementStyleIndex > 0) { | ||
const indexLiteral = o.literal(elementStyleIndex); | ||
styleInputs.forEach((input, i) => { | ||
const isMapBasedStyleBinding = i == 0 && input.name == 'style'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason for not using ===
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
[style.height]="myHeight"></div>\` | ||
}) | ||
export class MyComponent { | ||
myStyleExp = [{color:'red'}, {color:'blue', duration:1000}] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should there be a semicolon for consistency?
packages/core/src/render3/styling.ts
Outdated
} | ||
|
||
/** | ||
* Sets and resolves all `multi` styles on an `StylingContext` so that they can be |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
an StylingContext -> a StylingContext? (Also in following instructions)
A Googler has manually verified that the CLAs look good. (Googler, please make sure the reason for overriding the CLA status is clearly documented in these comments.) |
You can preview cb2253a at https://pr24602-cb2253a.ngbuilds.io/. |
…attr.style] bindings
So there's good news and bad news. 👍 The good news is that everyone that needs to sign a CLA (the pull request submitter and all commit authors) have done so. Everything is all good there. 😕 The bad news is that it appears that one or more commits were authored or co-authored by someone other than the pull request submitter. We need to confirm that all authors are ok with their commits being contributed to this project. Please have them confirm that here in the pull request. Note to project maintainer: This is a terminal state, meaning the |
You can preview 852e3a0 at https://pr24602-852e3a0.ngbuilds.io/. |
A Googler has manually verified that the CLAs look good. (Googler, please make sure the reason for overriding the CLA status is clearly documented in these comments.) |
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (angular#19127) PR Close angular#19127 docs(router): add `paramsInheritanceStrategy` documentation (angular#22590) PR Close angular#22590 docs: add app.module to changed documents (angular#23876) PR Close angular#23876 docs: clarify faqs about services (angular#24079) PR Close angular#24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (angular#24228) PR Close angular#24228 docs: describe rounding behaviour of 'DecimalPipe' (angular#24303) PR Close angular#24303 docs(common): fix in the documentation of PUT (angular#24528) PR Close angular#24528 docs: add workspace and related cli terms (angular#24633) PR Close angular#24633 docs(changelog): correct inaccuracies (angular#24713) PR Close angular#24713 test: integration test for TS 2.9.x (angular#24749) PR Close angular#24749 fix(ivy): pipes are pure by default (angular#24750) PR Close angular#24750 build(bazel): update to rule_nodejs 0.10.0 (angular#24759) PR Close angular#24759 build: upgrade jasmine (and related typings) to latest version (angular#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes angular#23952 Closes angular#24733 PR Close angular#19904 test: make `NgMatchers` type-aware (angular#19904) PR Close angular#19904 refactor: infer type for `it()` assertion functions (angular#19904) PR Close angular#19904 build: upgrade jasmine to 2.99.x and fix tests (angular#19904) PR Close angular#19904 refactor: re-organize and "modernize" cjs-jasmine scripts (angular#19904) PR Close angular#19904 test: run unit tests in random order (angular#19904) PR Close angular#19904 build: upgrade jasmine to 3.1.0 (angular#19904) PR Close angular#19904 build: upgrade karma and related dependencies (angular#19904) PR Close angular#19904 docs: refactored ng-container code (angular#22742) PR Close angular#22742 docs: update Angular Boot Camp description (angular#23653) PR Close angular#23653 feat(service-worker): add support for `?` in SW config globbing (angular#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close angular#24105 refactor(service-worker): avoid unnecessary operations and remove unused code (angular#24127) PR Close angular#24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (angular#24127) PR Close angular#24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (angular#24602) PR Close angular#24602 fix(language-service): do not overwrite native `Reflect` (angular#24299) Fixes angular#21420 PR Close angular#24299 fix(common): use correct currency format for locale de-AT (angular#24658) Fixes angular#24609 PR Close angular#24658 fix(ivy): correctly resolve Array property access (angular#24664) PR Close angular#24664 build: make `internal-angular` karma reporter compatible with latest karma (angular#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close angular#24803 build: remove unnecessary `internal-angular` karma reporter (angular#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close angular#24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (angular#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close angular#24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (angular#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close angular#24815 docs(aio): unified console.log single string style (angular#22737) PR Close angular#22737 docs: unified console.log single string style (angular#22737) PR Close angular#22737 fix(compiler-cli): Use typescript to resolve modules for metadata (angular#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close angular#22856 docs: clarify wording in architecture overview (angular#24481) Closes angular#23463 Closes angular#22158 PR Close angular#24481 docs: add tree-shakable providers (angular#24481) PR Close angular#24481 fix(ivy): support projecting into dynamic views (angular#24752) PR Close angular#24752 refactor(ivy): replace pNextOrParent with TNode props (angular#24752) PR Close angular#24752 docs: fix typo in Universal guide (angular#24812) PR Close angular#24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (angular#24830) docs: correct project definition (angular#24807) PR Close angular#24807 build: update to latest nodejs bazel rules (angular#24817) PR Close angular#24817 fix(common): do not round factional seconds (angular#24831) fixes angular#24384 PR Close angular#24831 docs: fix typos referencing inline component styles (angular#22557) PR Close angular#22557 fix(router): add ability to recover from malformed url (angular#23283) Fixes angular#21468 PR Close angular#23283 docs: fix incorrect forms selector references (angular#22631) PR Close angular#22631 docs(aio): unified string chaining (angular#22735) PR Close angular#22735 docs: unified string chaining (angular#22735) PR Close angular#22735 docs(forms): added missing backtick (angular#24451) Fixed trivial markdown problem with a missing backtick. PR Close angular#24451 docs(forms): update API reference for form validators (angular#24734) PR Close angular#24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient
docs: fix typos in 'Httpclient' docs (#19127) PR Close #19127 docs(router): add `paramsInheritanceStrategy` documentation (#22590) PR Close #22590 docs: add app.module to changed documents (#23876) PR Close #23876 docs: clarify faqs about services (#24079) PR Close #24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (#24228) PR Close #24228 docs: describe rounding behaviour of 'DecimalPipe' (#24303) PR Close #24303 docs(common): fix in the documentation of PUT (#24528) PR Close #24528 docs: add workspace and related cli terms (#24633) PR Close #24633 docs(changelog): correct inaccuracies (#24713) PR Close #24713 test: integration test for TS 2.9.x (#24749) PR Close #24749 fix(ivy): pipes are pure by default (#24750) PR Close #24750 build(bazel): update to rule_nodejs 0.10.0 (#24759) PR Close #24759 build: upgrade jasmine (and related typings) to latest version (#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes #23952 Closes #24733 PR Close #19904 test: make `NgMatchers` type-aware (#19904) PR Close #19904 refactor: infer type for `it()` assertion functions (#19904) PR Close #19904 build: upgrade jasmine to 2.99.x and fix tests (#19904) PR Close #19904 refactor: re-organize and "modernize" cjs-jasmine scripts (#19904) PR Close #19904 test: run unit tests in random order (#19904) PR Close #19904 build: upgrade jasmine to 3.1.0 (#19904) PR Close #19904 build: upgrade karma and related dependencies (#19904) PR Close #19904 docs: refactored ng-container code (#22742) PR Close #22742 docs: update Angular Boot Camp description (#23653) PR Close #23653 feat(service-worker): add support for `?` in SW config globbing (#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close #24105 refactor(service-worker): avoid unnecessary operations and remove unused code (#24127) PR Close #24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (#24127) PR Close #24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (#24602) PR Close #24602 fix(language-service): do not overwrite native `Reflect` (#24299) Fixes #21420 PR Close #24299 fix(common): use correct currency format for locale de-AT (#24658) Fixes #24609 PR Close #24658 fix(ivy): correctly resolve Array property access (#24664) PR Close #24664 build: make `internal-angular` karma reporter compatible with latest karma (#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close #24803 build: remove unnecessary `internal-angular` karma reporter (#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close #24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close #24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close #24815 docs(aio): unified console.log single string style (#22737) PR Close #22737 docs: unified console.log single string style (#22737) PR Close #22737 fix(compiler-cli): Use typescript to resolve modules for metadata (#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close #22856 docs: clarify wording in architecture overview (#24481) Closes #23463 Closes #22158 PR Close #24481 docs: add tree-shakable providers (#24481) PR Close #24481 fix(ivy): support projecting into dynamic views (#24752) PR Close #24752 refactor(ivy): replace pNextOrParent with TNode props (#24752) PR Close #24752 docs: fix typo in Universal guide (#24812) PR Close #24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (#24830) docs: correct project definition (#24807) PR Close #24807 build: update to latest nodejs bazel rules (#24817) PR Close #24817 fix(common): do not round factional seconds (#24831) fixes #24384 PR Close #24831 docs: fix typos referencing inline component styles (#22557) PR Close #22557 fix(router): add ability to recover from malformed url (#23283) Fixes #21468 PR Close #23283 docs: fix incorrect forms selector references (#22631) PR Close #22631 docs(aio): unified string chaining (#22735) PR Close #22735 docs: unified string chaining (#22735) PR Close #22735 docs(forms): added missing backtick (#24451) Fixed trivial markdown problem with a missing backtick. PR Close #24451 docs(forms): update API reference for form validators (#24734) PR Close #24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient PR Close #22741
docs: fix typos in 'Httpclient' docs (#19127) PR Close #19127 docs(router): add `paramsInheritanceStrategy` documentation (#22590) PR Close #22590 docs: add app.module to changed documents (#23876) PR Close #23876 docs: clarify faqs about services (#24079) PR Close #24079 docs(aio): added a link to Angular Zero online course (Traditional Chinese) (#24228) PR Close #24228 docs: describe rounding behaviour of 'DecimalPipe' (#24303) PR Close #24303 docs(common): fix in the documentation of PUT (#24528) PR Close #24528 docs: add workspace and related cli terms (#24633) PR Close #24633 docs(changelog): correct inaccuracies (#24713) PR Close #24713 test: integration test for TS 2.9.x (#24749) PR Close #24749 fix(ivy): pipes are pure by default (#24750) PR Close #24750 build(bazel): update to rule_nodejs 0.10.0 (#24759) PR Close #24759 build: upgrade jasmine (and related typings) to latest version (#19904) With these changes, the types are a little stricter now and also not compatible with Protractor's jasmine-like syntax. So, we have to also use `@types/jasminewd2` for e2e tests (but not for non-e2e tests). I also had to "augment" `@types/jasminewd2`, because the latest typings from [DefinitelyTyped][1] do not reflect the fact that the `jasminewd2` version (v2.1.0) currently used by Protractor supports passing a `done` callback to a spec. [1]: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/566e0394859fdc1dc893658ccec6b06372d56a91/types/jasminewd2/index.d.ts#L9-L15 Fixes #23952 Closes #24733 PR Close #19904 test: make `NgMatchers` type-aware (#19904) PR Close #19904 refactor: infer type for `it()` assertion functions (#19904) PR Close #19904 build: upgrade jasmine to 2.99.x and fix tests (#19904) PR Close #19904 refactor: re-organize and "modernize" cjs-jasmine scripts (#19904) PR Close #19904 test: run unit tests in random order (#19904) PR Close #19904 build: upgrade jasmine to 3.1.0 (#19904) PR Close #19904 build: upgrade karma and related dependencies (#19904) PR Close #19904 docs: refactored ng-container code (#22742) PR Close #22742 docs: update Angular Boot Camp description (#23653) PR Close #23653 feat(service-worker): add support for `?` in SW config globbing (#24105) The globbing is used in the following sections: - `assetGroups` > `resources` > `files`/`versionedFiles` - `assetGroups` > `resources` > `urls` - `dataGroups` > `urls` - `navigationUrls` Query params are ignored for `files`/`versionedFiles` and `navigationUrls`, but they are still taken into account for `assetGroups`/`dataGroups` `urls`. To avoid a breaking change, `?` is matched literally for these patterns. PR Close #24105 refactor(service-worker): avoid unnecessary operations and remove unused code (#24127) PR Close #24127 fix(service-worker): avoid network requests when looking up hashed resources in cache (#24127) PR Close #24127 feat(ivy): properly apply style="", [style], [style.foo] and [attr.style] bindings (#24602) PR Close #24602 fix(language-service): do not overwrite native `Reflect` (#24299) Fixes #21420 PR Close #24299 fix(common): use correct currency format for locale de-AT (#24658) Fixes #24609 PR Close #24658 fix(ivy): correctly resolve Array property access (#24664) PR Close #24664 build: make `internal-angular` karma reporter compatible with latest karma (#24803) Due to changes in karma@1.0.0, `internal-angular` karma reporter stopped showing browser logs (such as `console.log()` etc.). Related to d571a51. PR Close #24803 build: remove unnecessary `internal-angular` karma reporter (#24803) The reporter was added in 87d56ac, with the purpose of fixing source-map paths (which was apparently needed back then). Things have moved around a lot since then and the custom reporter doesn't seem to be necessary any more. By removing the reporter, we have one less thing to worry about while upgrading karma; plus we get improvements in built-in reporters for free. Output with the custom reporter: ``` at someMethod (packages/core/.../some-file.ts:13:37) ``` Output with the built-in reporter: ``` at someMethod (packages/core/.../some-file.ts:13.37 <- dist/all/@angular/core/.../some-file.js:1:337) ``` PR Close #24803 fix(core): mark NgModule as not the root if APP_ROOT is set to false (#24814) Tree shakable providers use the APP_ROOT token to determine where to attach themselves. APP_ROOT gets set on NgModule with BrowserModule irrespective of whether it is actually the root(Ex. in case of SSR app where the shell app is first bootstrapped without BrowserModule being the root module). This change allows a NgModule with BrowserModule to explicitly mark itself as not the root by setting APP_ROOT token to false. This allows tree shakable providers to be attached to the right rott module. PR Close #24814 fix(platform-browser): mark Meta and Title services as tree shakable providers (#24815) This lets services that use Meta and Title services to be tree shakable and provided in root. PR Close #24815 docs(aio): unified console.log single string style (#22737) PR Close #22737 docs: unified console.log single string style (#22737) PR Close #22737 fix(compiler-cli): Use typescript to resolve modules for metadata (#22856) The current module resolution simply attaches .ts to the import/export path, which does not work if the path is using Node / CommonJS behavior to resolve to an index.ts file. This patch uses typescript's module resolution logic, and will attempt to load the original typescript file if this resolution returns a .js or .d.ts file PR Close #22856 docs: clarify wording in architecture overview (#24481) Closes #23463 Closes #22158 PR Close #24481 docs: add tree-shakable providers (#24481) PR Close #24481 fix(ivy): support projecting into dynamic views (#24752) PR Close #24752 refactor(ivy): replace pNextOrParent with TNode props (#24752) PR Close #24752 docs: fix typo in Universal guide (#24812) PR Close #24812 fix(platform-browser): workaround wrong import path generated by ngc for DOCUMENT (#24830) docs: correct project definition (#24807) PR Close #24807 build: update to latest nodejs bazel rules (#24817) PR Close #24817 fix(common): do not round factional seconds (#24831) fixes #24384 PR Close #24831 docs: fix typos referencing inline component styles (#22557) PR Close #22557 fix(router): add ability to recover from malformed url (#23283) Fixes #21468 PR Close #23283 docs: fix incorrect forms selector references (#22631) PR Close #22631 docs(aio): unified string chaining (#22735) PR Close #22735 docs: unified string chaining (#22735) PR Close #22735 docs(forms): added missing backtick (#24451) Fixed trivial markdown problem with a missing backtick. PR Close #24451 docs(forms): update API reference for form validators (#24734) PR Close #24734 Merge remote-tracking branch 'upstream/master' into refactor-example-pipe docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient docs: refactor pipe example to use the HttpClient PR Close #22741
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
No description provided.