sort by:
Revision Author Date Message Commit Date
81db6a3 release: cut the v10.0.12 release 24 August 2020, 22:15:10 UTC
8224e65 docs(localize): fix angular.json syntax (#38553) In chapter internationalization (i18n) at section "Deploy multiple locales" the syntax for angular.json is wrong. This commit fixes the angular.json, when specifying the translation file and the baseHref for a locale. PR Close #38553 24 August 2020, 16:25:38 UTC
9e50cef test(language-service): [Ivy] return cursor position in overwritten template (#38552) In many testing scenarios, there is a common pattern: 1. Overwrite template (inline or external) 2. Find cursor position 3. Call one of language service APIs 4. Inspect spans in result In order to faciliate this pattern, this commit refactors `MockHost.overwrite()` and `MockHost.overwriteInlineTemplate()` to allow a faux cursor symbol `¦` to be injected into the template, and the methods will automatically remove it before updating the script snapshot. Both methods will return the cursor position and the new text without the cursor symbol. This makes testing very convenient. Here's a typical example: ```ts const {position, text} = mockHost.overwrite('template.html', `{{ ti¦tle }}`); const quickInfo = ngLS.getQuickInfoAtPosition('template.html', position); const {start, length} = quickInfo!.textSpan; expect(text.substring(start, start + length)).toBe('title'); ``` PR Close #38552 24 August 2020, 16:25:07 UTC
66d8c22 feat(language-service): introduce hybrid visitor to locate AST node (#38540) This commit introduces two visitors, one for Template AST and the other for Expression AST to allow us to easily find the node that most closely corresponds to a given cursor position. This is crucial because many language service APIs take in a `position` parameter, and the information returned depends on how well we can find a good candidate node. In View Engine implementation of language service, the search for the node and the processing of information to return the result are strongly coupled. This makes the code hard to understand and hard to debug because the stack trace is often littered with layers of visitor calls. With this new feature, we could test the "searching" part separately and colocate all the logic (aka hacks) that's required to retrieve an accurate span for a given node. Right now, only the most "narrow" node is returned by the main exported function `findNodeAtPosition`. If needed, we could expose the entire AST path, or expose other methods to provide more context for a node. Note that due to limitations in the template AST interface, there are a few known cases where microsyntax spans are not recorded properly. This will be dealt with in a follow-up PR. PR Close #38540 24 August 2020, 16:24:21 UTC
814b436 fix(compiler-cli): adding references to const enums in runtime code (#38542) We had a couple of places where we were assuming that if a particular symbol has a value, then it will exist at runtime. This is true in most cases, but it breaks down for `const` enums. Fixes #38513. PR Close #38542 21 August 2020, 19:23:24 UTC
6b98567 fix(dev-infra): ignore comments when validating commit messages (#38438) When creating a commit with the git cli, git pre-populates the editor used to enter the commit message with some comments (i.e. lines starting with `#`). These comments contain helpful instructions or information regarding the changes that are part of the commit. As happens with all commit message comments, they are removed by git and do not end up in the final commit message. However, the file that is passed to the `commit-msg` to be validated still contains these comments. This may affect the outcome of the commit message validation. In such cases, the author will not realize that the commit message is not in the desired format until the linting checks fail on CI (which validates the final commit messages and is not affected by this issue), usually several minutes later. Possible ways in which the commit message validation outcome can be affected: - The minimum body length check may pass incorrectly, even if there is no actual body, because the comments are counted as part of the body. - The maximum line length check may fail incorrectly due to a very long line in the comments. This commit fixes the problem by removing comment lines before validating a commit message. Fixes #37865 PR Close #38438 21 August 2020, 19:17:17 UTC
7f2a3e4 docs: apply code styling in template reference variables guide (#38522) PR Close #38522 20 August 2020, 20:01:37 UTC
1775f35 fix(docs-infra): fix vertical alignment of external link icons (#38410) At some places external link icons appear as a subscript. For example https://github.com/angular/angular/blame/8366effeec8e74c1a11d2a6e1a48d42e849e4653/aio/content/guide/roadmap.md\#L37 this commit places external link icons in the middle to improve there positioning in a line. PR Close #38410 20 August 2020, 16:40:05 UTC
1df52d9 docs: udpate the details (#37967) updating my twitter handle and bio as it is changed from Angular and Web Tech to Angular also the twitter handle is changed to SantoshYadavDev PR Close #37967 20 August 2020, 16:39:05 UTC
77e8db4 docs(core): Fix typo in JSDoc for AbstractType<T> (#38541) PR Close #38541 20 August 2020, 16:30:24 UTC
c90262e Revert "Revert "fix(core): remove closing body tag from inert DOM builder (#38454)"" This reverts commit 87bbf69ce8f673c022b6db55be232ecdf2cb343a. 20 August 2020, 15:56:01 UTC
87bbf69 Revert "fix(core): remove closing body tag from inert DOM builder (#38454)" This reverts commit 552853648ca75fe420ba594ba48555da39f263c7. 20 August 2020, 04:02:55 UTC
5528536 fix(core): remove closing body tag from inert DOM builder (#38454) Fix a bug in the HTML sanitizer where an unclosed iframe tag would result in an escaped closing body tag as the output: _sanitizeHtml(document, '<iframe>') => '&lt;/body&gt;' This closing body tag comes from the DOMParserHelper where the HTML to be sanitized is wrapped with surrounding body tags. When an opening iframe tag is parsed by DOMParser, which DOMParserHelper uses, everything up until its matching closing tag is consumed as a text node. In the above example this includes the appended closing body tag. By removing the explicit closing body tag from the DOMParserHelper and relying on the body tag being closed implicitly at the end, the above example is sanitized as expected: _sanitizeHtml(document, '<iframe>') => '' PR Close #38454 19 August 2020, 21:18:47 UTC
07b99f5 fix(localize): parse all parts of a translation with nested HTML (#38452) Previously nested container placeholders (i.e. HTML elements) were not being fully parsed from translation files. This resulted in bad translation of messages that contain these placeholders. Note that this causes the canonical message ID to change for such messages. Currently all messages generated from templates use "legacy" message ids that are not affected by this change, so this fix should not be seen as a breaking change. Fixes #38422 PR Close #38452 19 August 2020, 21:16:48 UTC
57d1a48 fix(localize): include the last placeholder in parsed translation text (#38452) When creating a `ParsedTranslation` from a set of message parts and placeholder names a textual representation of the message is computed. Previously the last placeholder and text segment were missing from this computed message string. PR Close #38452 19 August 2020, 21:16:45 UTC
d662a64 refactor(compiler-cli): add getTemplateOfComponent to TemplateTypeChecker (#38355) This commit adds a `getTemplateOfComponent` method to the `TemplateTypeChecker` API, which retrieves the actual nodes parsed and used by the compiler for template type-checking. This is advantageous for the language service, which may need to query other APIs in `TemplateTypeChecker` that require the same nodes used to bind the template while generating the TCB. Fixes #38352 PR Close #38355 19 August 2020, 21:07:07 UTC
e57a2b3 docs: Typos fixes in the binding syntax guide (#38519) PR Close #38519 19 August 2020, 21:05:53 UTC
a3f3082 release: cut the v10.0.11 release 19 August 2020, 16:05:11 UTC
0570c24 docs: Fix typo in the inputs and outputs guide (#38524) PR Close #38524 19 August 2020, 15:27:48 UTC
398118f feat(dev-infra): create a wizard for building commit messages (#38457) Creates a wizard to walk through creating a commit message in the correct template for commit messages in Angular repositories. PR Close #38457 19 August 2020, 00:01:18 UTC
dcc3f6d feat(dev-infra): tooling to check out pending PR (#38474) Creates a tool within ng-dev to checkout a pending PR from the upstream repository. This automates an action that many developers on the Angular team need to do periodically in the process of testing and reviewing incoming PRs. Example usage: ng-dev pr checkout <pr-number> PR Close #38474 18 August 2020, 23:22:52 UTC
0af9533 fix(router): ensure routerLinkActive updates when associated routerLinks change (#38511) This commit introduces a new subscription in the `routerLinkActive` directive which triggers an update when any of its associated routerLinks have changes. `RouterLinkActive` not only needs to know when links are added or removed, but it also needs to know about if a link it already knows about changes in some way. Quick note that `from...mergeAll` is used instead of just a simple `merge` (or `scheduled...mergeAll`) to avoid introducing new rxjs operators in order to keep bundle size down. Fixes #18469 PR Close #38511 18 August 2020, 17:21:55 UTC
f9a76a7 Revert "fix(router): ensure routerLinkActive updates when associated routerLinks change (#38349)" (#38511) This reverts commit e0e5c9f195460c7626c30248e7a79de9a2ebe377. Failures in Google tests were detected. PR Close #38511 18 August 2020, 17:21:52 UTC
832a54e docs(common): Wrong parameter description on TrackBy (#38495) Track By Function receive the T[index] data, not the node id. TrackByFunction reference description has the same issue. PR Close #38495 18 August 2020, 17:08:47 UTC
e8f4294 refactor(localize): update yargs and typings for yargs (#38502) Updating yargs and typings for the updated yargs module. PR Close #38502 18 August 2020, 17:06:32 UTC
ce448f4 refactor(ngcc): update yargs and typings for yargs (#38502) Updating yargs and typings for the updated yargs module. PR Close #38502 18 August 2020, 17:06:29 UTC
847eaa0 refactor(dev-infra): update yargs and typings for yargs (#38502) Updating yargs and typings for the updated yargs module. PR Close #38502 18 August 2020, 17:06:26 UTC
3e80f0e release: cut the v10.0.10 release 17 August 2020, 20:10:36 UTC
f3dd6c2 fix(ngcc): detect synthesized delegate constructors for downleveled ES2015 classes (#38500) Similarly to the change we landed in the `@angular/core` reflection capabilities, we need to make sure that ngcc can detect pass-through delegate constructors for classes using downleveled ES2015 output. More details can be found in the preceding commit, and in the issue outlining the problem: #38453. Fixes #38453. PR Close #38500 17 August 2020, 19:50:19 UTC
863acb6 fix(core): detect DI parameters in JIT mode for downleveled ES2015 classes (#38500) In the Angular Package Format, we always shipped UMD bundles and previously even ES5 module output. With V10, we removed the ES5 module output but kept the UMD ES5 output. For this, we were able to remove our second TypeScript transpilation. Instead we started only building ES2015 output and then downleveled it to ES5 UMD for the NPM packages. This worked as expected but unveiled an issue in the `@angular/core` reflection capabilities. In JIT mode, Angular determines constructor parameters (for DI) using the `ReflectionCapabilities`. The reflection capabilities basically read runtime metadata of classes to determine the DI parameters. Such metadata can be either stored in static class properties like `ctorParameters` or within TypeScript's `design:params`. If Angular comes across a class that does not have any parameter metadata, it tries to detect if the given class is actually delegating to an inherited class. It does this naively in JIT by checking if the stringified class (function in ES5) matches a certain pattern. e.g. ```js function MatTable() { var _this = _super.apply(this, arguments) || this; ``` These patterns are reluctant to changes of the class output. If a class is not recognized properly, the DI parameters will be assumed empty and the class is **incorrectly** constructed without arguments. This actually happened as part of v10 now. Since we downlevel ES2015 to ES5 (instead of previously compiling sources directly to ES5), the class output changed slightly so that Angular no longer detects it. e.g. ```js var _this = _super.apply(this, __spread(arguments)) || this; ``` This happens because the ES2015 output will receive an auto-generated constructor if the class defines class properties. This constructor is then already containing an explicit `super` call. ```js export class MatTable extends CdkTable { constructor() { super(...arguments); this.disabled = true; } } ``` If we then downlevel this file to ES5 with `--downlevelIteration`, TypeScript adjusts the `super` call so that the spread operator is no longer used (not supported in ES5). The resulting super call is different to the super call that would have been emitted if we would directly transpile to ES5. Ultimately, Angular no longer detects such classes as having an delegate constructor -> and DI breaks. We fix this by expanding the rather naive RegExp patterns used for the reflection capabilities so that downleveled pass-through/delegate constructors are properly detected. There is a risk of a false-positive as we cannot detect whether `__spread` is actually the TypeScript spread helper, but given the reflection patterns already make lots of assumptions (e.g. that `super` is actually the superclass, we should be fine making this assumption too. The false-positive would not result in a broken app, but rather in unnecessary providers being injected (as a noop). Fixes #38453 PR Close #38500 17 August 2020, 19:50:16 UTC
989e8a1 fix(router): ensure routerLinkActive updates when associated routerLinks change (#38349) This commit introduces a new subscription in the `routerLinkActive` directive which triggers an update when any of its associated routerLinks have changes. `RouterLinkActive` not only needs to know when links are added or removed, but it also needs to know about if a link it already knows about changes in some way. Quick note that `from...mergeAll` is used instead of just a simple `merge` (or `scheduled...mergeAll`) to avoid introducing new rxjs operators in order to keep bundle size down. Fixes #18469 PR Close #38349 17 August 2020, 19:34:02 UTC
84d1ba7 refactor(language-service): [Ivy] remove temporary compiler (#38310) Now that Ivy compiler has a proper `TemplateTypeChecker` interface (see https://github.com/angular/angular/pull/38105) we no longer need to keep the temporary compiler implementation. The temporary compiler was created to enable testing infrastructure to be developed for the Ivy language service. This commit removes the whole `ivy/compiler` directory and moves two functions `createTypeCheckingProgramStrategy` and `getOrCreateTypeCheckScriptInfo` to the `LanguageService` class. Also re-enable the Ivy LS test since it's no longer blocking development. PR Close #38310 17 August 2020, 18:30:36 UTC
b32126c fix(common): Allow scrolling when browser supports scrollTo (#38468) This commit fixes a regression from "fix(common): ensure scrollRestoration is writable (#30630)" that caused scrolling to not happen at all in browsers that do not support scroll restoration. The issue was that `supportScrollRestoration` was updated to return `false` if a browser did not have a writable `scrollRestoration`. However, the previous behavior was that the function would return `true` if `window.scrollTo` was defined. Every scrolling function in the `ViewportScroller` used `supportScrollRestoration` and, with the update in bb88c9fa3daac80086efbda951d81c159e3840f4, no scrolling would be performed if a browser did not have writable `scrollRestoration` but _did_ have `window.scrollTo`. Note, that this failure was detected in the saucelabs tests. IE does not support scroll restoration so IE tests were failing. PR Close #38468 14 August 2020, 18:41:26 UTC
d5e09f4 fix(core): fix multiple nested views removal from ViewContainerRef (#38317) When removal of one view causes removal of another one from the same ViewContainerRef it triggers an error with views length calculation. This commit fixes this bug by removing a view from the list of available views before invoking actual view removal (which might be recursive and relies on the length of the list of available views). Fixes #38201. PR Close #38317 13 August 2020, 20:35:56 UTC
c25c57c style(compiler-cli): remove unused constant (#38441) Remove unused constant allDiagnostics PR Close #38441 13 August 2020, 20:32:44 UTC
692e34d test(docs-infra): remove deprecated `ReflectiveInjector` (#38408) This commit replaces the old and slow `ReflectiveInjector` that was deprecated in v5 with the new `Injector`. Note: This change was only done in the spec files inside the `aio` folder. While changing this, it was not possible to directly use `Injector.get` to get the correct typing for the mocked classes. For example: ```typescript locationService = injector.get<TestLocationService>(LocationService); ``` Fails with: > Argument of type 'typeof LocationService' is not assignable to parameter of type 'Type<TestLocationService> | InjectionToken<TestLocationService> | AbstractType<TestLocationService>'. Type 'typeof LocationService' is not assignable to type 'Type<TestLocationService>'. Property 'searchResult' is missing in type 'LocationService' but required in type 'TestLocationService'. Therefore, it was necessary to first convert to `unknown` and then to `TestLocationService`. ```typescript locationService = injector.get(LocationService) as unknown as TestLocationService; ``` PR Close #38408 13 August 2020, 19:56:17 UTC
071348e build: run browsers tests on chromium locally (#38435) (#38450) Previously we added a browser target for `firefox` into the dev-infra package. It looks like as part of this change, we accidentally switched the local web testing target to `firefox`. Web tests are not commonly run locally as we use Domino and NodeJS tests for primary development. Sometimes though we intend to run tests in a browser. This would currently work with Firefox but not on Windows (as Firefox is a noop there in Bazel). This commit switches the primary browser back to `chromium`. Also Firefox has been added as a second browser to web testing targets. This allows us to reduce browsers in the legacy Saucelabs job. i.e. not running Chrome and Firefox there. This should increase stability and speed up the legacy job (+ reduced rate limit for Saucelabs). PR Close #38435 PR Close #38450 13 August 2020, 19:55:16 UTC
8803f9f ci: disable saucelabs tests on Firefox ESR while investigating failures (#37647) (#38450) Firefox ESR tests fail running the acceptance tests on saucelabs. These tests are being disabled while investigating the failure as it is not entirely clear whether this is saucelabs failure or a something like a memory pressure error in the test itself. PR Close #37647 PR Close #38450 13 August 2020, 19:55:13 UTC
aa816d3 ci: disable closure size tracking test (#38449) We should define ngDevMode to false in Closure, but --define only works in the global scope. With ngDevMode not being set to false, this size tracking test provides little value but a lot of headache to continue updating the size. PR Close #38449 13 August 2020, 18:41:16 UTC
a5ba40a refactor(router): Add annotations to correct Router documentation (#38448) The `@HostListener` functions and lifecycle hooks aren't intended to be public API but do need to appear in the `.d.ts` files or type checking will break. Adding the nodoc annotation will correctly hide this function on the docs site. Again, note that `@internal` cannot be used because the result would be that the functions then do not appear in the `.d.ts` files. This would break lifecycle hooks because the class would be seen as not implementing the interface correctly. This would also break `HostListener` because the compiled templates would attempt to call the `onClick` functions, but those would also not appear in the `d.ts` and would produce errors like "Property 'onClick' does not exist on type 'RouterLinkWithHref'". PR Close #38448 13 August 2020, 18:36:13 UTC
cb83b8a fix(core): error if CSS custom property in host binding has number in name (#38432) Fixes an error if a CSS custom property, used inside a host binding, has a number in its name. The error is thrown because the styling parser only expects characters from A to Z,dashes, underscores and a handful of other characters. Fixes #37292. PR Close #38432 13 August 2020, 17:35:11 UTC
8bb726e build: update ng-dev config file for new commit message configuration (#38430) Removes the commit message types from the config as they are now staticly defined in the dev-infra code. PR Close #38430 13 August 2020, 16:11:25 UTC
88662a5 feat(dev-infra): migrate to unified commit message types in commit message linting (#38430) Previously commit message types were provided as part of the ng-dev config in the repository using the ng-dev toolset. This change removes this configuration expectation and instead predefines the valid types for commit messages. Additionally, with this new unified set of types requirements around providing a scope have been put in place. Scopes are either required, optional or forbidden for a given commit type. PR Close #38430 13 August 2020, 16:11:23 UTC
9b32a59 feat(dev-infra): update to latest benchpress version (#38440) We recently updated the benchpress package to have a more loose Angular core peer dependency, and less other unused dependencies. We should make sure to use that in the dev-infra package so that peer dependencies can be satisified in consumer projects, and so that less unused dependencies are brought into projects. PR Close #38440 13 August 2020, 16:09:34 UTC
ffd1691 feat(dev-infra): save invalid commit message attempts to be restored on next commit attempt (#38304) When a commit message fails validation, rather than throwing out the commit message entirely the commit message is saved into a draft file and restored on the next commit attempt. PR Close #38304 13 August 2020, 15:45:28 UTC
afd4417 refactor(dev-infra): extract the commit message parsing function into its own file (#38429) Extracts the commit message parsing function into its own file. PR Close #38429 12 August 2020, 23:10:08 UTC
2f53bbb docs: remove unused Input decorator (#38306) In the part "5. Add In-app Navigation" of the tutorial it was already removed PR Close #38306 12 August 2020, 18:26:11 UTC
a4f99f4 refactor(dev-infra): use promptConfirm util in ng-dev's formatter (#38419) Use the promptConfirm util instead of manually creating a confirm prompt with inquirer. PR Close #38419 12 August 2020, 18:25:12 UTC
0711128 docs: update web-worker CLI commands to bash style (#38421) With this change we update the CLI generate commands to be in bash style. PR Close #38421 12 August 2020, 18:24:36 UTC
25f79ba release: cut the v10.0.9 release 12 August 2020, 16:35:37 UTC
2590a9b docs: delete one superfluous sentence (#38339) PR Close #38339 12 August 2020, 15:23:19 UTC
f68a1d3 build: run formatting automatically on pre-commit hook (#38402) Runs the `ng-dev format changed` command whenever the `git commit` command is run. As all changes which are checked by CI will require this check passing, this change can prevent needless roundtrips to correct lint/formatting errors. This automatic formatting can be bypassed with the `--no-verify` flag on the `git commit` command. PR Close #38402 11 August 2020, 23:32:55 UTC
89f7f63 feat(dev-infra): Add support for formatting all staged files (#38402) Adds an ng-dev formatter option to format all of the staged files. This will can be used to format only the staged files during the pre-commit hook. PR Close #38402 11 August 2020, 23:32:55 UTC
ca2b4bc fix(compiler-cli): avoid creating value expressions for symbols from type-only imports (#38415) In TypeScript 3.8 support was added for type-only imports, which only brings in the symbol as a type, not their value. The Angular compiler did not yet take the type-only keyword into account when representing symbols in type positions as value expressions. The class metadata that the compiler emits would include the value expression for its parameter types, generating actual imports as necessary. For type-only imports this should not be done, as it introduces an actual import of the module that was originally just a type-only import. This commit lets the compiler deal with type-only imports specially, preventing a value expression from being created. Backports #37912 to patch PR Close #38415 11 August 2020, 19:31:58 UTC
f6cfc92 ci: update payload size limits for Closure tests (#38411) Currently the Closure-related tests are not tree-shaking the dev-mode-only content, thus payload size checks are failing even if dev-mode-only content is added. The https://github.com/angular/angular/commit/2e9fdbde9eb26fea17e3e68e272dc1c2cc9f4fa3 commit added some logic to JIT compiler, which is likely triggered the payload size increase. This commit updates the payload size limits for Closure-related test to get master and patch branches back to the "green" state. PR Close #38411 11 August 2020, 17:59:40 UTC
5b87c67 fix(compiler-cli): infer quote expressions as any type in type checker (#37917) "Quote expressions" are expressions that start with an identifier followed by a comma, allowing arbitrary syntax to follow. These kinds of expressions would throw a an error in the template type checker, which would make them hard to track down. As quote expressions are not generally used at all, the error would typically occur for URLs that would inadvertently occur in a binding: ```html <a [href]="https://example.com"></a> ``` This commit lets such bindings be inferred as the `any` type. Fixes #36568 Resolves FW-2051 PR Close #37917 11 August 2020, 16:54:54 UTC
f5b9d87 fix(compiler): evaluate safe navigation expressions in correct binding order (#37911) When using the safe navigation operator in a binding expression, a temporary variable may be used for storing the result of a side-effectful call. For example, the following template uses a pipe and a safe property access: ```html <app-person-view [enabled]="enabled" [firstName]="(person$ | async)?.name"></app-person-view> ``` The result of the pipe evaluation is stored in a temporary to be able to check whether it is present. The temporary variable needs to be declared in a separate statement and this would also cause the full expression itself to be pulled out into a separate statement. This would compile into the following pseudo-code instructions: ```js var temp = null; var firstName = (temp = pipe('async', ctx.person$)) == null ? null : temp.name; property('enabled', ctx.enabled)('firstName', firstName); ``` Notice that the pipe evaluation happens before evaluating the `enabled` binding, such that the runtime's internal binding index would correspond with `enabled`, not `firstName`. This introduces a problem when the pipe uses `WrappedValue` to force a change to be detected, as the runtime would then mark the binding slot corresponding with `enabled` as dirty, instead of `firstName`. This results in the `enabled` binding to be updated, triggering setters and affecting how `OnChanges` is called. In the pseudo-code above, the intermediate `firstName` variable is not strictly necessary---it only improved readability a bit---and emitting it inline with the binding itself avoids the out-of-order execution of the pipe: ```js var temp = null; property('enabled', ctx.enabled) ('firstName', (temp = pipe('async', ctx.person$)) == null ? null : temp.name); ``` This commit introduces a new `BindingForm` that results in the above code to be generated and adds compiler and acceptance tests to verify the proper behavior. Fixes #37194 PR Close #37911 11 August 2020, 16:51:11 UTC
3acebdc fix(core): prevent NgModule scope being overwritten in JIT compiler (#37795) In JIT compiled apps, component definitions are compiled upon first access. For a component class `A` that extends component class `B`, the `B` component is also compiled when the `InheritDefinitionFeature` runs during the compilation of `A` before it has finalized. A problem arises when the compilation of `B` would flush the NgModule scoping queue, where the NgModule declaring `A` is still pending. The scope information would be applied to the definition of `A`, but its compilation is still in progress so requesting the component definition would compile `A` again from scratch. This "inner compilation" is correctly assigned the NgModule scope, but once the "outer compilation" of `A` finishes it would overwrite the inner compilation's definition, losing the NgModule scope information. In summary, flushing the NgModule scope queue could trigger a reentrant compilation, where JIT compilation is non-reentrant. To avoid the reentrant compilation, a compilation depth counter is introduced to avoid flushing the NgModule scope during nested compilations. Fixes #37105 PR Close #37795 11 August 2020, 16:50:28 UTC
02aca13 fix(dev-infra): update i18n-related file locations in PullApprove config (#38403) The changes in https://github.com/angular/angular/pull/38368 split `render3/i18n.ts` files into smaller scripts, but the PullApprove config was not updated to reflect that. This commit updates the PullApprove config to reflect the recent changes in i18n-related files. PR Close #38403 11 August 2020, 00:29:52 UTC
32109dc fix(core): queries not matching string injection tokens (#38321) Queries weren't matching directives that provide themselves via string injection tokens, because the assumption was that any string passed to a query decorator refers to a template reference. These changes make it so we match both template references and providers while giving precedence to the template references. Fixes #38313. Fixes #38315. PR Close #38321 10 August 2020, 22:27:25 UTC
c9acb7b fix(compiler-cli): preserve quotes in class member names (#38387) When we were outputting class members for `setClassMetadata` calls, we were using the string representation of the member name. This can lead to us generating invalid code when the name contains dashes and is quoted (e.g. `@Output() 'has-dashes' = new EventEmitter()`), because the quotes will be stripped for the string representation. These changes fix the issue by using the original name AST node that was used for the declaration and which knows whether it's supposed to be quoted or not. Fixes #38311. PR Close #38387 10 August 2020, 22:26:46 UTC
545444d refactor(core): break `i18n.ts` into smaller files (#38368) This commit contains no changes to code. It only breaks `i18n.ts` file into `i18n.ts` + `i18n_apply.ts` + `i18n_parse.ts` + `i18n_postprocess.ts` for easier maintenance. PR Close #38368 10 August 2020, 22:07:44 UTC
7f11149 fix(platform-server): remove styles added by ServerStylesHost on destruction (#38367) When a ServerStylesHost instance is destroyed, all of the shared styles added to the DOM head element by that instance should be removed. Without this removal, over time a large number of style rules will build up and cause extra memory pressure. This brings the ServerStylesHost in line with the DomStylesHost used by the platform browser, which performs this same cleanup. PR Close #38367 10 August 2020, 20:12:24 UTC
ee5123f fix(core): Store the currently selected ICU in `LView` (#38345) The currently selected ICU was incorrectly being stored it `TNode` rather than in `LView`. Remove: `TIcuContainerNode.activeCaseIndex` Add: `LView[TIcu.currentCaseIndex]` PR Close #38345 10 August 2020, 19:41:18 UTC
3dfaf56 docs: Remove redundant sentence from Router (#38398) PR Close #38398 10 August 2020, 16:52:31 UTC
432a688 docs: update team contributors page (#38384) Removing Kara, Denny, Judy, Tony, Matias as they are no longer actively working on the project PR Close #38384 10 August 2020, 16:51:51 UTC
42a649d docs: fix purpose description of "builders.json" (#36830) PR Close #36830 07 August 2020, 22:04:57 UTC
47fbfb3 refactor(forms): get rid of duplicate functions (#38371) (#38380) This commit performs minor refactoring in Forms package to get rid of duplicate functions. It looks like the functions were duplicated due to a slightly different type signatures, but their logic is completely identical. The logic in retained functions remains the same and now these function also accept a generic type to achieve the same level of type safety. PR Close #38380 07 August 2020, 19:11:37 UTC
4107abb refactor(common): use getElementById in ViewportScroller.scrollToAnchor (#38372) This commit uses getElementById and getElementsByName when an anchor scroll happens, to avoid escaping the anchor and wrapping the code in a try/catch block. Related to #28960 PR Close #38372 07 August 2020, 18:17:53 UTC
1d26bc5 test: update components repo to test against recent revision (#38273) (#38378) The changes in angular/components#20136 are required to allow the framework tests to succeed. PR Close #38273 PR Close #38378 07 August 2020, 18:12:49 UTC
ef7b70a refactor(core): add debug ranges to `LViewDebug` with matchers (#38359) This change provides better typing for the `LView.debug` property which is intended to be used by humans while debugging the application with `ngDevMode` turned on. In addition this chang also adds jasmine matchers for better asserting that `LView` is in the correct state. PR Close #38359 06 August 2020, 23:58:12 UTC
deb290b refactor(core): extract `icuSwitchCase`, `icuUpdateCase`, `removeNestedIcu` (#38154) (#38370) Extract `icuSwitchCase`, `icuUpdateCase`, `removeNestedIcu` into separate functions to align them with the `.debug` property text. PR Close #38154 PR Close #38370 06 August 2020, 23:27:28 UTC
5c8b7d2 refactor(core): add human readable `debug` for i18n (#38154) (#38370) I18n code breaks up internationalization into opCodes which are then stored in arrays. To make it easier to debug the codebase this PR adds `debug` property to the arrays which presents the data in human readable format. PR Close #38154 PR Close #38370 06 August 2020, 23:27:27 UTC
f5d5bac fix(service-worker): fix the chrome debugger syntax highlighter (#38332) The Chrome debugger is not able to render the syntax properly when the code contains backticks. This is a known issue in Chrome and they have an open [issue](https://bugs.chromium.org/p/chromium/issues/detail?id=659515) for that. This commit adds the work-around to use double backslash with one backtick ``\\` `` at the end of the line. This can be reproduced by running the following command: `yarn bazel test //packages/forms/test --config=debug` When opening the chrome debugger tools, you should see the correct code highlighting syntax. PR Close #38332 06 August 2020, 22:22:57 UTC
ad16e2f docs(service-worker): describe how asset-/data-group order affects request handling (#38364) The order of asset- and data-groups in `ngsw-config.json` affects how a request is handled by the ServiceWorker. Previously, this was not clearly documented. This commit describes how the order of asset-/data-groups affects request handling. Closes #21189 PR Close #38364 06 August 2020, 18:41:59 UTC
d0191a7 fix(docs-infra): correctly generate CLI commands docs when the overview page moves (#38365) Previously, the [processCliCommands][1] dgeni processor, which is used to generate the docs pages for the CLI commands, expected the CLI commands overview page (with a URL of `cli`) to exist as a child of a top-level navigation section (`CLI Commands`). If one tried to move the `CLI Commands` section inside another section, `processCliCommnads` would fail to find it and thus fail to generate the CLI commands docs. This problem came up in #38353. This commit updates the `processCliCommands` processor to be able to find it regardless of the position of the `CLI Commands` section inside the navigation doc. [1]: https://github.com/angular/angular/blob/dca4443a8ed65d341356fe62f6df9934e6314dfe/aio/tools/transforms/cli-docs-package/processors/processCliCommands.js#L7-L9 PR Close #38365 06 August 2020, 18:41:07 UTC
016a41b fix(compiler-cli): mark eager `NgModuleFactory` construction as not side effectful (#38320) Roll forward of #38147. This allows Closure compiler to tree shake unused constructor calls to `NgModuleFactory`, which is otherwise considered side-effectful. The Angular compiler generates factory objects which are exported but typically not used, as they are only needed for compatibility with View Engine. This results in top-level constructor calls, such as: ```typescript export const FooNgFactory = new NgModuleFactory(Foo); ``` `NgModuleFactory` has a side-effecting constructor, so this statement cannot be tree shaken, even if `FooNgFactory` is never imported. The `NgModuleFactory` continues to reference its associated `NgModule` and prevents the module and all its unused dependencies from being tree shaken, making Closure builds significantly larger than necessary. The fix here is to wrap `NgModuleFactory` constructor with `noSideEffects(() => /* ... */)`, which tricks the Closure compiler into assuming that the invoked function has no side effects. This allows it to tree-shake unused `NgModuleFactory()` constructors when they aren't imported. Since the factory can be removed, the module can also be removed (if nothing else references it), thus tree shaking unused dependencies as expected. The one notable edge case is for lazy loaded modules. Internally, lazy loading is done as a side effect when the lazy script is evaluated. For Angular, this side effect is registering the `NgModule`. In Ivy this is done by the `NgModuleFactory` constructor, so lazy loaded modules **cannot** have their top-level `NgModuleFactory` constructor call tree shaken. We handle this case by looking for the `id` field on `@NgModule` annotations. All lazy loaded modules include an `id`. When this `id` is found, the `NgModuleFactory` is generated **without** with `noSideEffects()` call, so Closure will not tree shake it and the module will lazy-load correctly. PR Close #38320 06 August 2020, 16:02:17 UTC
7a527b4 refactor(compiler): add `ModuleInfo` interface (#38320) This introduces a new `ModuleInfo` interface to represent some of the statically analyzed data from an `NgModule`. This gets passed into transforms to give them more context around a given `NgModule` in the compilation. PR Close #38320 06 August 2020, 16:02:17 UTC
fd28f0c refactor(core): add `noSideEffects()` as private export (#38320) This is to enable the compiler to generate `noSideEffects()` calls. This is a private export, gated by `ɵ`. PR Close #38320 06 August 2020, 16:02:17 UTC
7342b1e docs: remove https://angular.io from internal links (#38360) PR #36601 introduces icons on all links if the link contains https:// or http:// but there were some internal links left which contained https://angular.io. Removed https://angular.io from all these links. PR Close #38360 06 August 2020, 16:01:35 UTC
58f4b3a fix(common): ensure scrollRestoration is writable (#30630) (#38357) Some specialised browsers that do not support scroll restoration (e.g. some web crawlers) do not allow `scrollRestoration` to be writable. We already sniff the browser to see if it has the `window.scrollTo` method, so now we also check whether `window.history.scrollRestoration` is writable too. Fixes #30629 PR Close #30630 PR Close #38357 06 August 2020, 00:49:56 UTC
3974312 style(docs-infra): reformat ScrollService file (#30630) (#38357) Pre-empting code formatting changes when the code is updated in a subsequent commit. PR Close #30630 PR Close #38357 06 August 2020, 00:49:55 UTC
db897f4 docs: add a page with the Angular roadmap (#38356) PR Close #38356 06 August 2020, 00:16:38 UTC
77093c2 refactor(platform-browser): specify return type of parseEventName (#38089) This commit refactors the argument of the `parseEventName` function to use an object with named properties instead of using an object indexer. PR Close #38089 06 August 2020, 00:06:29 UTC
4151314 fix(router): prevent calling unsubscribe on undefined subscription in RouterPreloader (#38344) Previously, the `ngOnDestroy` method called `unsubscribe` regardless of if `subscription` had been initialized. This can lead to an error attempting to call `unsubscribe` of undefined. This change prevents this error, and instead only attempts `unsubscribe` when the subscription has been defined. PR Close #38344 05 August 2020, 17:54:42 UTC
df01a82 fix(compiler-cli): match wrapHost parameter types within plugin interface (#38004) The `TscPlugin` interface using a type of `ts.CompilerHost&Partial<UnifiedModulesHost>` for the `host` parameter of the `wrapHost` method. However, prior to this change, the interface implementing `NgTscPlugin` class used a type of `ts.CompilerHost&UnifiedModulesHost` for the parameter. This change corrects the inconsistency and allows `UnifiedModulesHost` members to be optional when using the `NgtscPlugin`. PR Close #38004 05 August 2020, 17:54:08 UTC
1912fa3 feat(dev-infra): provide organization-wide merge-tool label configuration (#38223) Previously, each Angular repository had its own strategy/configuration for merging pull requests and cherry-picking. We worked out a new strategy for labeling/branching/versioning that should be the canonical strategy for all actively maintained projects in the Angular organization. This PR provides a `ng-dev` merge configuration that implements the labeling/branching/merging as per the approved proposal. See the following document for the proposal this commit is based on for the merge script labeling/branching: https://docs.google.com/document/d/197kVillDwx-RZtSVOBtPb4BBIAw0E9RT3q3v6DZkykU The merge tool label configuration can be conveniently accesed within each `.ng-dev` configuration, and can also be extended if there are special labels on individual projects. This is one of the reasons why the labels are not directly built into the merge script. The script should remain unopinionated and flexible. The configuration is conceptually powerful enough to achieve the procedures as outlined in the versioning/branching/labeling proposal. PR Close #38223 05 August 2020, 17:53:18 UTC
db5e1de feat(dev-infra): support user-failures when computing branches for target label (#38223) The merge tool provides a way for configurations to determine the branches for a label lazily. This is supported because it allows labels to respect the currently selected base branch through the Github UI. e.g. if `target: label` is applied on a PR and the PR is based on the patch branch, then the change could only go into the selected target branch, while if it would be based on `master`, the change would be cherry-picked to `master` too. This allows for convenient back-porting of changes if they did not apply cleanly to the primary development branch (`master`). We want to expand this function so that it is possible to report failures if an invalid target label is appplied (e.g. `target: major` not allowed in some situations), or if the Github base branch is not valid for the given target label (e.g. if `target: lts` is used, but it's not based on a LTS branch). PR Close #38223 05 August 2020, 17:53:18 UTC
84661ea feat(dev-infra): provide github API instance to lazy merge configuration (#38223) The merge script currently accepts a configuration function that will be invoked _only_ when the `ng-dev merge` command is executed. This has been done that way because the merge tooling usually relies on external requests to Git or NPM for constructing the branch configurations. We do not want to perform these slow external queries on any `ng-dev` command though, so this became a lazily invoked function. This commit adds support for these configuration functions to run asynchronously (by returning a Promise that will be awaited), so that requests could also be made to the Github API. This is benefical as it could avoid dependence on the local Git state and the HTTP requests are more powerful/faster. Additionally, in order to be able to perform Github API requests with an authenticated instance, the merge tool will pass through a `GithubClient` instance that uses the specified `--github-token` (or from the environment). This ensures that all API requests use the same `GithubClient` instance and can be authenticated (mitigating potential rate limits). PR Close #38223 05 August 2020, 17:53:18 UTC
629203f docs: fix typo in glossary (#38318) Add missing comma in structural directive section that made dash display incorrectly. PR Close #38318 05 August 2020, 17:52:28 UTC
2ab8e88 release: cut the v10.0.8 release 04 August 2020, 22:51:57 UTC
a91dd2e build: cleanup .bazelrc file to no longer set unused flags (#38124) This option is no longer needed in Bazel and will be an error in the future PR Close #38124 03 August 2020, 19:53:11 UTC
6eca80b revert: docs(core): correct SomeService to SomeComponent (#38325) This reverts commit b4449e35bfd04c5858ded17c0ce56248d680e8d4. The example given from the previous change was for a component selector and not a provider selector. This change fixes it. Fixes #38323. PR Close #38325 03 August 2020, 19:52:20 UTC
cea4678 fix(compiler): update unparsable character reference entity error messages (#38319) Within an angular template, when a character entity is unable to be parsed, previously a generic unexpected character error was thrown. This does not properly express the issue that was discovered as the issue is actually caused by the discovered character making the whole of the entity unparsable. The compiler will now instead inform via the error message what string was attempted to be parsed and what it was attempted to be parsed as. Example, for this template: ``` <p> &#x123p </p> ``` Before this change: `Unexpected character "p"` After this change: `Unable to parse entity "&#x123p" - hexadecimal character reference entities must end with ";"` Fixes #26067 PR Close #38319 31 July 2020, 22:32:54 UTC
9c5fc16 refactor(docs-infra): update docs examples `tslint.json` to match CLI and fix failures (#38143) This commit updates the `tslint.json` configuration file, that is used to lint the docs examples, to match the one generated for new Angular CLI apps. There are some minimal differences (marked with `TODO` comments) for things, such as component selector prefix, that would require extensive and/or difficult to validate changes in guides. This commit also includes the final adjustments to make the docs examples code compatible with the new tslint rules. (The bulk of the work has been done in previous commits.) PR Close #38143 31 July 2020, 18:00:08 UTC
42f5770 refactor(docs-infra): fix docs examples for Angular-specific tslint rules (#38143) This commit updates the docs examples to be compatible with the following Angular-specific tslint rules: - `component-selector` - `directive-selector` - `no-conflicting-lifecycle` - `no-host-metadata-property` - `no-input-rename` - `no-output-native` - `no-output-rename` This is in preparation of updating the docs examples `tslint.json` to match the one generated for new Angular CLI apps in a future commit. PR Close #38143 31 July 2020, 18:00:08 UTC
01db374 refactor(docs-infra): fix docs examples for tslint rule `prefer-const` (#38143) This commit updates the docs examples to be compatible with the `prefer-const` tslint rule. This is in preparation of updating the docs examples `tslint.json` to match the one generated for new Angular CLI apps in a future commit. PR Close #38143 31 July 2020, 18:00:08 UTC
07a0033 refactor(docs-infra): fix docs examples for tslint rules related to underscores in variable names (#38143) This commit updates the docs examples to be compatible with the `variable-name` tslint rule without requiring the `allow-leading-underscore` and `allow-trailing-underscore` options. This is in preparation of updating the docs examples `tslint.json` to match the one generated for new Angular CLI apps in a future commit. PR Close #38143 31 July 2020, 18:00:08 UTC
ac009d2 refactor(docs-infra): fix docs examples for tslint rules related to variable names (#38143) This commit updates the docs examples to be compatible with the `no-shadowed-variable` and `variable-name` tslint rules. This is in preparation of updating the docs examples `tslint.json` to match the one generated for new Angular CLI apps in a future commit. PR Close #38143 31 July 2020, 18:00:08 UTC
eb8f8c9 refactor(docs-infra): fix docs examples for tslint rule `member-ordering` (#38143) This commit updates the docs examples to be compatible with the `member-ordering` tslint rule. This is in preparation of updating the docs examples `tslint.json` to match the one generated for new Angular CLI apps in a future commit. PR Close #38143 31 July 2020, 18:00:08 UTC
back to top