Commit Graph

8046 Commits

Author SHA1 Message Date
Paul Gschwendtner 5a24f96792 refactor(elements): remove non-existent schematic collection breaking with ng add (#44187)
Removes a non-existent schematic collection wired up for
`@angular/elements` that has been removed
with: https://github.com/angular/angular/commit/619b7cc3857b34598a0036f8ebf9bc2eb27f5507.

Fixes #44160.

PR Close #44187
2021-11-16 12:03:41 -08:00
dario-piotrowicz 00ae55c3fb docs(animations): improve wording for animation example (#44168)
improve the wording of the text explaining an animation
code snippet as that can be misinterpreted

resolves #43952

PR Close #44168
2021-11-16 09:45:14 -08:00
Martin von Gagern aac579d976 refactor(router): add type annotation for UrlSegment.parameterMap (#44175)
Having the type specified explicitly makes the API reference more readable.
PR Close #44175
2021-11-16 09:36:17 -08:00
Andrew Kushnir 16326058bf refactor(core): format recently updated file to comply the lint rules (#44136)
This commit updates a file that was changed recently, but that change triggered the `lint` CI job to fail, since the lint rules were slightly changed.

PR Close #44136
2021-11-10 23:36:56 +00:00
dario-piotrowicz 0bd01ca64a refactor(core): move outdated comment to view.ts (#44099)
remove the comment suggesting to use a const enum for ViewEncapsulation in
the renderer3/definitions.ts file and add a similar comment in the
view.ts file in which the enum is defined

Note: the new comment does not contain the suggestion of changing `None`
to `0` as it is unclear what benefits that would bring (for more info
see: https://github.com/angular/angular/pull/44099#discussion_r744157686)

PR Close #44099
2021-11-10 20:42:19 +00:00
Pete Bacon Darwin 393efa54e6 fix(compiler): ensure that partially compiled queries can handle forward references (#44113)
When a partially compiled component or directive is "linked" in JIT mode, the body
of its declaration is evaluated by the JavaScript runtime. If a class is referenced
in a query (e.g. `ViewQuery` or `ContentQuery`) but its definition is later in the
file, then the reference must be wrapped in a `forwardRef()` call.

Previously, query predicates were not wrapped correctly in partial declarations
causing the code to crash at runtime. In AOT mode, this code is never evaluated
but instead transformed as part of the build, so this bug did not become apparent
until Angular Material started running JIT mode tests on its distributable output.

This change fixes this problem by noting when queries are wrapped in `forwardRef()`
calls and ensuring that this gets passed through to partial compilation declarations
and then suitably stripped during linking.

See https://github.com/angular/components/pull/23882 and https://github.com/angular/components/issues/23907

PR Close #44113
2021-11-10 18:25:16 +00:00
Pete Bacon Darwin 67fbec39cb refactor(compiler): rename R3ProviderExpression and associated helpers (#44113)
This interface will be used in other situations so this change renames it to be more general as `MaybeForwardRefExpression`.

PR Close #44113
2021-11-10 18:25:16 +00:00
Renovate Bot 89aa94b7a2 build: lock file maintenance (#44111)
PR Close #44111
2021-11-10 18:22:57 +00:00
Pete Bacon Darwin 18cc7c8b04 test(compiler): remove IE11 match in JIT compiler tests (#44122)
Since we no longer support (nor test on) IE11 we can remove these matches
for `anonymous` functions.

PR Close #44122
2021-11-10 17:37:24 +00:00
raman 236bdff831 fix(platform-browser): use correct parent in animation removeChild callback (#44033)
Animation's `onRemovalComplete` callback is using incorrect `parentNode`.
Should be parentNode provided by `delegate.parentNode(element)` instead of direct `element.parentNode`.
This is not a problem with default renderer but can cause problems with custom renderer if it uses another
logic to add/remove nodes.

Fixes #44023

PR Close #44033
2021-11-10 01:21:56 +00:00
Andrew Scott 670cd10e30 refactor(language-service): Move language service code out of ivy/ folder (#44064)
This commit moves code in the language service package out of the ivy
subfolder. Ivy is the _only_ engine supported in v13+ so there's no need
to have a name for it.

PR Close #44064
2021-11-10 01:20:04 +00:00
Andrew Scott 4738569220 refactor(language-service): Remove View Engine code from language service package (#44064)
This commit removes ViewEngine-specific code from the langauge service
package. This code is no longer used since VE is not supported in v13+.

PR Close #44064
2021-11-10 01:20:04 +00:00
Renovate Bot 891318e805 build: update all non-major dependencies (#43974)
PR Close #43974
2021-11-09 21:00:17 +00:00
Kristiyan Kostadinov 247c18dee0 fix(compiler-cli): handle pre-release versions when checking version (#44109)
Currently the TS version checking function interprets a version like `1.2.3-rc.5` as `1.2.NaN` which would allow it to bypass the version checking altogether.

These changes add a little bit more logic to ensure that such versions are handled correctly. There's also an error if we don't manage to parse the version string.

Also it seemed like we never actually ran the version check unit tests, because they didn't have a test target.

PR Close #44109
2021-11-09 20:54:45 +00:00
Pete Bacon Darwin 28ef5af03f refactor(ngcc): improve logging of progress (#43996)
This commit adds additional information to encourage developers to contact
the author of View Engine libraries and ask them to update to partial Ivy.

Fixes #42308

PR Close #43996
2021-11-09 18:10:18 +00:00
JoostK 4f8eaac7ff fix(core): do not use Function constructors in development mode to avoid CSP violations (#43587)
This commit removes the dynamic creation of named arrays for internal
runtime storage arrays as they may cause CSP violations in development
mode,  when an application's CSP configuration does not include
`unsafe-eval`.

Named arrays for view data can still be enabled in development mode
using the `ngDevMode=namedConstructors` query parameter when loading the
application.

The usage of native class syntax for named arrays does not have the
desired effect when the code is downleveled to ES5. Since ES5 targets
are becoming increasingly more rare this is considered less of a problem
than the CSP violation.

Fixes #43494

PR Close #43587
2021-11-09 18:02:13 +00:00
JoostK 2a2744721b fix(compiler-cli): ensure literal types are retained when strictNullInputTypes is disabled (#38305)
Consider the `NgModel` directive which has the `ngModelOptions` input:

```ts
class NgModel {
  @Input() ngModelOptions: { updateOn: 'blur'|'change'|'submit' };
}
```

In a template this may be set using an object literal as follows:

```html
<input ngModel [ngModelOptions]="{updateOn: 'blur'}">
```

This assignment should be accepted, as the object's type aligns with the
`ngModelOptions` input in `NgModel`. However, if the `strictNullInputTypes`
option is disabled this assignment would inadvertently produce an error:

```
Type '{ updateOn: string; }' is not assignable to type '{ updateOn: "blur"|"change"|"submit"; }'.
  Types of property 'updateOn' are incompatible.
    Type 'string' is not assignable to type '"blur"|"change"|"submit"'
```

This is due to the `'blur'` value being inferred to be of type `string`
instead of retaining its literal type. The non-null assertion operator
that is automatically inserted for input binding assignments when
`strictNullInputTypes` is disabled inhibits TypeScript from inferring
the string value as its literal type.

This commit fixes the issue by omitting the insertion of the non-null
operator for object literals and array literals.

PR Close #38305
2021-11-09 18:01:24 +00:00
Joey Perrott 491dd3dcee refactor(compiler-cli): use relative imports within the @angular/compiler-cli package (#44118)
Intrapackage imports should always be done via relative imports rather than using the external
import location.

PR Close #44118
2021-11-08 22:08:27 +00:00
Joey Perrott 161cf92814 refactor(compiler): reverse testing of ternary operator to ensure typescript properly narrows types (#44089)
By checking if the providedIn is a function instead of everything but a function, typescript properly
narrows the typings for creating the expressions.

PR Close #44089
2021-11-08 21:30:34 +00:00
JoostK b249e24979 fix(compiler): generate correct code for safe method calls (#44088)
When a safe method call such as `person?.getName()` is used, the
compiler would generate invalid code if the argument list also contained
a safe method call. For example, the following code:

```
person?.getName(config?.get('title').enabled)
```

would generate

```
let tmp;
ctx.person == null ? null : ctx.person.getName((tmp = tmp) == null ?
null : tmp.enabled)
```

Notice how the call to `config.get('title')` has completely disappeared,
with `(tmp = tmp)` having taken its place.

The issue occurred due to how the argument list would be converted
from expression AST to output AST twice. First, the outer safe method
call would first convert its arguments list. This resulted in a
temporary being allocated for `config.get('title')`, which was stored in
the internal `_resultMap`. Only after the argument list has been
converted would the outer safe method call realize that it should be
guarded by a safe access of `person`, entering the `convertSafeAccess`
procedure to convert itself. This would convert the argument list once
again, but this time the `_resultMap` would already contain the
temporary `tmp` for `config?.get('title')`. Consequently, the safe
method in the argument list would be emitted as `tmp`.

This commit fixes the issue by ensuring that nodes are only converted
once.

Closes #44069

PR Close #44088
2021-11-08 17:31:36 +00:00
Michael Urban baab456e56 docs(animations): update developers on state of package (#44014)
Notify developers that @angular/animations package has been "significantly de-prioritized"

`animateChild` documentation now references #30477

References #30477# Please enter the commit message for your changes. Lines starting

PR Close #44014
2021-11-08 17:03:28 +00:00
Roman Frołow 9f3791432c docs(forms): fix typo in toInteger() function (#44075)
PR Close #44075
2021-11-08 16:59:08 +00:00
Joey Perrott 2c269c390a refactor(core): correct typing when getting the Nearest LContainer (#44087)
Updating the casted typings of `getNearestLContainer` to ensure that typescript properly
returns the LContainer | null type.

PR Close #44087
2021-11-05 21:31:49 +00:00
Joey Perrott 401b5bf2af refactor(core): correct typing checks when registering destroy hooks (#44087)
Making the typing filtering more explicit allows typescript to properly recognize the presence of the
`prototype` property on the provider within the `registerDestroyHooksIfSupported` method.

PR Close #44087
2021-11-05 21:31:49 +00:00
Joey Perrott e0ae557aee refactor(core): remove truthy check for classes getter (#44087)
Remove the truthy check for the classes getter as both paths from the check assume className was not
undefined.  This allows for typescript to properly determine the type of `className` in the falsy path
from the truthy check.

PR Close #44087
2021-11-05 21:31:49 +00:00
iRealNirmal 1543aaedd6 refactor(forms): update minlength/maxlength to inherit abstractValidator (#43998)
Modified minlength and maxlength validator to inherit abstractValidator

For every validator type different PR will be raised as discussed in #42378.

Closes #42267

PR Close #43998
2021-11-05 20:09:53 +00:00
Renovate Bot 725a1a49ec build: lock file maintenance (#44003)
PR Close #44003
2021-11-05 20:05:41 +00:00
Paul Gschwendtner d965331cf6 refactor(bazel): fix typo in packager action file comments (#44061)
Fixes two typoes in the packager logic.

PR Close #44061
2021-11-05 16:22:17 +00:00
Paul Gschwendtner 70f93a640b refactor(localize): ensure schematic code runs as commonjs (#44016)
The schematic code in `@angular/localize` is currently still emitted
as CommonJS, while the rest of `@angular/localize` is strict ESM (which
is also denoted through `type: module` in the package.json file).

The schematic code is currently imported as CJS from the CLI so it
is not a problem right now. Still, it is safer to ensure the code
for schematics is properly picked up as CJS through a local
`package.json` file resetting `type: module` to `type: commonjs`.

PR Close #44016
2021-11-04 18:54:54 +00:00
Andrew Kushnir 34f990986c feat(upgrade): support NgModule class as an argument of the downgradeModule function (#43973)
This commit extends the logic of the `downgradeModule` function to support NgModule class as an argument. This is needed to simplify the API surface to avoid the need to resolve NgModule factory before invoking the `downgradeModule` method.

PR Close #43973
2021-11-04 18:54:00 +00:00
HyperLife1119 d452b388bd feat(http): add has() method to HttpContext class (#43887)
At present, the get() method provided by HttpContext will never return null. Sometimes we need to check whether an http token is included, so add the has() method to HttpContext.

PR Close #43887
2021-11-04 18:52:18 +00:00
Joey Perrott 821270dba5 refactor(core): set up structure for google3 usage of migration schematics (#43980)
Set up exporting the migration rules from the google3 directly from the internal
@angular/migrations package.  This package is an internal only package to be
exposed for loading TSLint rules.

PR Close #43980
2021-11-04 11:23:12 -07:00
Renovate Bot 595a7e3dcd build: update angular (#44024)
PR Close #44024
2021-11-03 15:06:36 -07:00
Paul Gschwendtner 8d308dc4ec fix(migrations): prevent migrations from updating external templates multiple times (#44013)
The `NgComponentTemplateVisitor` helper was always referring back to the original source file on disk
rather than the virtual file in the migration. This meant that some template migrations could attempt
to modify the template multiple times resulting in invalid output.

As an example the `migration-v13-router-link-empty-expression` migrates the following template:

```
<div [routerLink]></div>
```

to

```
<div [routerLink]="[]"></div>
```

But if the template was referenced multiple times in the program, such as when the component was
referenced in the source and test entry-points, the migration would result in things like:

```
<div [routerLink]="[]"="[]"></div>
```

Fixes #44005.

PR Close #44013
2021-11-03 09:38:43 -07:00
Pete Bacon Darwin 3fada9ee7e fix(migrations): account for CRLF characters in template migrations (#44013)
Previously, when parsing code for templates to migrate, CRLF characters were converted to just LF.
This meant that the source-spans being used to overwrite the template strings in the original source code were out of sync with the positions identified in the parsed templates.

This commit fixes this by parsing the raw text of the template taken from the source code instead of processed string contents.

Fixes #44005

PR Close #44013
2021-11-03 09:38:43 -07:00
Pete Bacon Darwin 0cab229e91 ci: re-enable the schematics tests (#44013)
These tests had been disabled when we initially disabled ViewEngine.
The tests appear to run fine despite this, so we can re-enable them.

PR Close #44013
2021-11-03 09:38:43 -07:00
Andrew Scott d015ac214f Revert "refactor(router): restore history in a consistent way on canceled navigations (#43651)" (#44006)
This reverts commit a268c4471f.

Causes failures in internal team's code. The failures likely relate to
attempting to manually update private Router state tracking properties,
which this change would have affected.

PR Close #44006
2021-11-01 09:25:36 -07:00
Andrew Kushnir a72333c714 refactor(core): add ViewRef to private exports (#43978)
This commit adds `ViewRef` to private exports, so it can be reused in internal packages.

The `ViewRef` symbol remains *private* and should not be referenced directly.

PR Close #43978
2021-10-29 15:45:49 -07:00
Alan Agius 64335eb9d7 fix(elements): remove incorrect @angular/platform-browser peer dependency (#43975)
The elements package doesn't use `@angular/platform-browser` therefore this is not needed.

PR Close #43975
2021-10-29 15:43:55 -07:00
Alan Agius 619b7cc385 fix(elements): remove ng-add schematic (#43975)
This schematic is no longer needed since all the [browsers](https://angular.io/guide/browser-support) that Angular supports `CustomElementRegistry` APIs.

Side note: `document-register-element` has been deprecated in favor of `@ungap/custom-element`

PR Close #43975
2021-10-29 15:43:55 -07:00
Andrew Kushnir 967283e8a1 docs: update dynamic component guide to use factory-less ViewContainerRef.createComponent (#43895)
PR Close #43895
2021-10-29 15:39:04 -07:00
Jochen Kraushaar e3511e2632 docs(common): describe behavior when reference changes (#42863)
PR Close #42863
2021-10-28 11:34:23 -07:00
vthinkxie 65cb2c5565 fix(core): support InjectFlags argument in NodeInjector.get() (#41592)
The `InjectFlags` argument was defined for both `getOrCreateInjectable()` and `Injector`, but was ignored in `NodeInjector`.
This PR adds support for getting parent token via `NodeInjector.get()`.

close #31776

PR Close #41592
2021-10-28 11:19:58 -07:00
Pete Bacon Darwin c315878910 refactor: simplify the LOCALE_ID provider (#43913)
Other parts of the intialization process are responsible for passing the locale id to ivy, so it does not need to happen in the provider factory. E.g. `PlatformRef.bootstrapModule()` and `R3TestBedCompiler.finalize()`.

PR Close #43913
2021-10-28 11:19:12 -07:00
Pete Bacon Darwin 70d3805fd6 refactor: remove ɵloc and related code (#43913)
This code is not used in ivy - and probably was not being used
in View Engine either.

PR Close #43913
2021-10-28 11:19:12 -07:00
Jessica Janiuk 17be47e781 Revert "refactor(forms): update minlength/maxlength to inherit abstractValidator" (#43971)
This reverts commit 7b31b887f9.

PR Close #43971
2021-10-27 21:42:26 +00:00
Alan Agius 57cbb4f2e8 refactor(migrations): remove no longer accessible migrations (#43947)
With this change we remove no longer needed migrations. These migrations are no longer accessible following a change angular/angular-cli#21986 in the Angular CLI.  The CLI now shows an error message when users try to update `@angular/` and `@nguniversal/` packages across multiple major versions.

Example to update from version 11 to version 13 the recommand approach is to run the following commands

```
ng update @angular/core@12
ng update @angular/core@13 (which is the same as ng update @angular/core)
```

NB: It is recommand that when update from one major to another, users verify that their applications is working as expected.

PR Close #43947
2021-10-26 23:59:42 +00:00
Paul Gschwendtner a3908bd0fc build: enable code splitting for esbuild bundling of localize tools (#43932)
Enables code spitting for ESBuild bundling of the localize/tools entry
point. When we initially configured ESBuild as part of APF v13, we left
this option disabled as code splitting is marked experimental. The ESM
splitting mechanism in ESBuild seems very solid so far (judging subjectively
and by experience/reports in the ESBuild repo), so we should give it a shot,
in order to significantly reduce the size of the NPM package, and simplify
debugging (by not having duplicated code portions for all the different entry points).

To clarify: Code splitting is helpful as we have multiple entry-points
that currently duplicate code. With code splitting these entry-points
would share common code instead.

PR Close #43932
2021-10-26 23:58:27 +00:00
Paul Gschwendtner 4b641a914b build: enable code splitting for esbuild bundling of compiler-cli (#43932)
Enables code spitting for ESBuild bundling of the compiler-cli. When
we initially configured ESBuild as part of APF v13, we left this option
disabled as code splitting is marked experimental. The ESM splitting
mechanism in ESBuild seems very solid so far (judging subjectively
and by experience/reports in the ESBuild repo), so we should give
it a shot, in order to significantly reduce the size of the NPM package,
and simplify debugging (by not having duplicated code portions for all
the different entry points).

To clarify: Code splitting is helpful as we have multiple entry-points
that currently duplicate code. With code splitting these entry-points
would share common code instead.

PR Close #43932
2021-10-26 23:58:27 +00:00
iRealNirmal 5c22dfe861 refactor(forms): update minlength/maxlength to inherit abstractValidator (#43835)
Modified minlength and maxlength validator to inherit abstractValidator

For every validator type different PR will be raised as discussed in #42378.

Closes #42267

PR Close #43835
2021-10-26 20:24:40 +00:00