https://github.com/angular/angular

sort by:
Revision Author Date Message Commit Date
aef18bc release: cut the v13.0.0-next.15 release (#43769) 07 October 2021, 19:08:50 UTC
325fafa release: cut the v13.0.0-next.14 release (#43751) (#43768) PR Close #43751 PR Close #43768 07 October 2021, 19:03:42 UTC
d977701 feat(bazel): allow for custom conditions to be set in `ng_package` targets (#43764) The APF v13 `ng_package` rule will generate the `exports` field if not set. Currently it allows for additional subpath entries to be configured manually. The packager does not allow for custom conditions in subpath exports which are auto-generated. This is sometimes useful and necessary though. e.g. in Angular Material, we also need to expose the index Sass file through a `sass` conditional that the Webpack Sass loader will pick up. For this, the packager needs to support manual additional conditions (as long as they do not conflict). PR Close #43764 07 October 2021, 16:50:50 UTC
48aa003 refactor(compiler-cli): update peerDependencies to require rxjs ^7.4.0 (#43748) RxJS 7 versions prior to 7.4.0 export ES5 code, whereas Angular applications using RxJS 6 today use ES2015. This was fixed in RxJS 7.4.0 which exposes ES2015 entrypoints as well. This commit updates Angular's peer dependencies to require the newer RxJS. PR Close #43748 06 October 2021, 22:57:59 UTC
f1de27c docs: release notes for the v12.2.9 release (#43750) PR Close #43750 06 October 2021, 22:56:36 UTC
04fec60 ci: ignore "remark*" packages from automatic updates (#43735) The most recent versions of remark have significant breaking changes that we are not ready to incorporate. So this commit adds them to the ignore list. PR Close #43735 06 October 2021, 22:26:27 UTC
6637241 ci: remove "remark" renovate group (#43735) This group was causing an immortal PR to keep being created, even though we do not want, currently, to update the versions of the "remark*" packages. PR Close #43735 06 October 2021, 22:26:27 UTC
adf4481 feat(common): add injection token for default date pipe timezone (#43611) Adds a new injection token called `DATE_PIPE_DEFAULT_TIMEZONE` that allows for the default timezone for all `DatePipe` instances to be specified. Fixes #43031. PR Close #43611 06 October 2021, 20:53:09 UTC
5d7229e release: cut the v13.0.0-next.13 release (#43741) PR Close #43741 06 October 2021, 18:50:36 UTC
e0a0d05 feat(core): update node version support range to support v16 (#43740) This commit updates the `node` engines range for all Angular framework packages to: * No longer support NodeJS v12 `< 12.20`. This is done because APF v13 uses package export patterns which are only supported as of v12.20. https://nodejs.org/api/packages.html#packages_subpath_patterns. * Allows for the latest v16 NodeJS versions. This matches with the CLI which added NodeJS v16 support with https://github.com/angular/angular-cli/pull/21854. We already limit this to `>= v16.10.0` in preparation to only supporting the LTS minors of Node v16. BREAKING CHANGE: NodeJS versions older than `v12.20.0` are no longer supported due to the Angular packages using the NodeJS package exports feature with subpath patterns. PR Close #43740 06 October 2021, 17:55:44 UTC
cd1b524 feat(bazel): expose `esm2020` and `es2020` conditions in APF package exports (#43740) In addition to the existing `exports` conditional exports we ship as part of APF v13, we want to expose the non-bundled ESM2020 output through the `esm2020` conditional name. Additionally we will expose the flat ES2020 files through the `es2020` conditional field, allowing consumers (like the CLI) to prioritize certain formats. e.g. consider the case with RXJS where it currently defaults to the ESM5 output. The CLI could now set `es2015` as the conditional to leverage the ES2015 output of RXJS. This unveils a problem though since this would also mean that `ES2015` output of the framework Angular packages would be used instead of the available ES2020 output. Here is the additional `es2020` conditional helpful as it allows the CLI to prioritize `es2020`, fallback to `es2015` and lastly fallback to `default`. if none do match for a certain package. PR Close #43740 06 October 2021, 17:55:44 UTC
841c5ae build(docs-infra): ensure `ngsw.json` generation is correct and deterministic (#43686) As explained in #43679, currently the generation of the `ngsw.json` SW manifest is non-deterministic and often incorrect. Until we can update to an `@angular/service-worker` version that includes the fix from PR #43679, we temporarily work-around the issue by re-generating the `ngsw.json` manifest after `ng build` using the `ngsw-config` binary exposed by `@angular/service-worker`. NOTE: This works around the issue, because the [FileSystem][1] class used by the `ngsw-config` binary happens to be synchronous (unlike the implementation provided by the Angular CLI), thus avoiding the race conditions described in #43679. [1]: https://github.com/angular/angular/blob/c721135e370b34c840756bcfb22c8119b4c8c452/packages/service-worker/cli/filesystem.ts#L15 PR Close #43686 06 October 2021, 17:05:55 UTC
3d26a07 build(docs-infra): update Angular Material to version 13.0.0-next.7 (#43686) This commit updates angular.io to the latest prerelease version of Angular CDK/Material (v13.0.0-next.7). PR Close #43686 06 October 2021, 17:05:54 UTC
b8ab5ff build(docs-infra): update AIO to align with new v13.0.0-next.9 CLI apps (#43686) This commit updates angular.io to more closely align with new apps created with the latest Angular CLI and remove redundant files/config now that CLI has dropped support for differential loading. PR Close #43686 06 October 2021, 17:05:54 UTC
81d3919 refactor(docs-infra): prefix error messages with Angular version info (#43686) Prefix error messages with the Angular version currently used in the angular.io app. This applies to both errors logged to the console and reported to Google Analytics and makes debugging certain errors easier. PR Close #43686 06 October 2021, 17:05:54 UTC
72d1dfd build(docs-infra): use `$schema` in `ngsw-config.template.json` to provide intellisense (#43686) Add an appropriate `$schema` property in `ngsw-config.template.json` to allow IDEs to provide intellisense about the various fields of the config. PR Close #43686 06 October 2021, 17:05:54 UTC
23ac3f7 ci: test AIO/docs examples against the latest RxJS 7.x version (v7.3.1) (#43683) Use the latest RxJS 7.x version (v7.3.1) with AIO and docs examples tests to guard against regressions with RxJS v7. PR Close #43683 06 October 2021, 17:04:47 UTC
99e18a0 ci: use the local Angular packages when testing AIO/docs examples with RxJS v7 (#43683) The `test_aio_local` and `test_docs_examples` CI jobs, test the AIO app and the docs examples using the locally built Angular packages. They also include steps that install RxJS v7 and test the examples against that as well, to avoid regressions with RxJS v7. However, it turns out that the `yarn add` command used to install RxJS v7 caused yarn to overwrite the local Agular packages in `node_modules/` with the ones from NPM. This commit ensures that the local Angular packages are restored in `node_modules/` after adding RxJS v7. It also adds a check to ensure that the restoration of local Angular packages did not affect the version of RxJS. PR Close #43683 06 October 2021, 17:04:47 UTC
ef090d1 test(docs-infra): improve debugging when docs example tests fail without exiting (#43683) When the docs examples tests run with `--cliSpecsConcurrency` greater than 1 (as happens on CI), the output of each process is [buffered][1] (to avoid interleaved output from multiple, parallel processes) and is only printed out once the process exits (either successfully or with an error). However, in cases where a process did not exit, the buffered output would be never printed out, thus making debugging the failure harder. This is the case, for example, if a build error happens during `ng e2e`. This can be seen in action in [this CI job][2], where the job fails due to no output, but the error (which is an incompatible TS version) is never printed out. To make debugging such situations easier in the future, this commit updates the `spawnExt()` helper to reject (causing the buffered output to be printed out) if there is no output from the spawned process for more than 5 minutes. [1]: https://github.com/angular/angular/blob/c721135e370b34c840756bcfb22c8119b4c8c452/aio/tools/examples/run-example-e2e.mjs#L293 [2]: https://circleci.com/gh/angular/angular/1061751 PR Close #43683 06 October 2021, 17:04:47 UTC
3be5716 refactor(docs-infra): remove redundant code from `run-example-e2e.mjs` (#43683) This commit removes some code that was unused or had no effect from the `run-example-e2e.mjs` script. PR Close #43683 06 October 2021, 17:04:47 UTC
52587e5 test: remove `progress` option from `dev-server` builder (#43730) This change addresses the following failures ``` Schema validation failed with the following errors: Data path "" must NOT have additional properties(progress) ``` See failures in https://app.circleci.com/pipelines/github/angular/angular/38086/workflows/7fd378bb-2c9c-4b7e-9b1e-82c9fb3ba58d/jobs/1064226 PR Close #43730 06 October 2021, 16:23:59 UTC
6ac35d0 fix(docs-infra): convert button-like elements to actual buttons (#43601) some elements in the aio application are anchors or divs but behave like buttons, it is semantically (and a11y) more correct to convert them to actual button elements instead PR Close #43601 06 October 2021, 16:22:04 UTC
7a971ca refactor(language-service): fix typo in method name (#43698) The `fineRenameLocations` method should be called `findRenameLocations`. PR Close #43698 06 October 2021, 16:21:32 UTC
fa6aa1b build(docs-infra): ensure all overloads are shown in interfaces (#43734) In the API docs, concrete classes do not list the "implementation" overload on a method, since this is not strictly part of its API. We recently fixed the rendering of interfaces to display all the overloads, since there is no "implementation" overload. This commit also fixes the rendering of "pseudo-classes", which are a combination of an interface and a constant. Fixes #43001 PR Close #43734 06 October 2021, 16:21:08 UTC
e3d6e97 docs: deprecate ViewEngine-based JIT Compiler symbols (#43710) DEPRECATION: In ViewEngine, [JIT compilation](https://angular.io/guide/glossary#jit) required special providers (like `Compiler`, `CompilerFactory`, etc) to be injected in the app and corresponding methods to be invoked. With Ivy, JIT compilation takes place implicitly if the Component, NgModule, etc have not already been [AOT compiled](https://angular.io/guide/glossary#aot). Those special providers were made available in Ivy for backwards-compatibility with ViewEngine to make the transition to Ivy smoother. Since ViewEngine is deprecated and will soon be removed, those symbols are now deprecated as well: - `ModuleWithComponentFactories` - `Compiler` - `CompilerFactory` - `JitCompilerFactory` - `NgModuleFactory` Important note: this deprecation doesn't affect JIT mode in Ivy (JIT remains available with Ivy). PR Close #43710 06 October 2021, 01:51:55 UTC
7acf3be release: cut the v13.0.0-next.12 release (#43726) PR Close #43726 06 October 2021, 01:09:34 UTC
69957f7 feat(language-service): provide snippets for attribute (#43590) Support snippet completions for dom attribute whose value is empty. For Example `<div (my¦) />`, the `insertText` will return `(myOutput)="$0"`. Fixes https://github.com/angular/vscode-ng-language-service/issues/521 PR Close #43590 06 October 2021, 00:29:26 UTC
c14085e feat(core): drop support for TypeScript 4.2 and 4.3 (#43642) Bumps the minimum required TypeScript version to 4.4.2 and removes the integration tests for 4.1, 4.2 and 4.3. BREAKING CHANGE: TypeScript versions older than 4.4.2 are no longer supported. PR Close #43642 06 October 2021, 00:26:37 UTC
dbe656d fix(bazel): ngc-wrapped should not rely on linker for external workspaces (#43690) Currently when `ngc-wrapped` runs in external/consumer workspaces, like in the Angular Components project, the `ngc-wrapped` binary relies on the linker due to the patched module resolution in `rules_nodejs` no longer being default. The reliance on the linker of `rules_nodejs` is problematic for workers as the required `node_modules` are not re-linked for every build. This was previously not an issue before the APF v13 changes because the `compiler-cli` module was loaded only once through an import statement. As of APF v13, the compiler-cli module is loaded dynamically for every build. This dynamic import can then break as the worker does not initially load the compiler-cli module when becoming online. Instead, the module is loaded on the first build where the node modules might not be linked properly anymore (due to e.g. other targets running at the same time). We fix thi issue by doing the following things: 1. Enabling the patched module resolution for consumer/external workspaces. This would match how we use ngc-wrapped inside FW as well. 2. Caching the compiler CLI module. Instead of re-fetching the module through dynamic imports for every build (in a worker), we should use the cached version. This is semantically the same as with APF v12 where a single import statement at file top-level was used. Technically, NodeJS should cache the module, but it doesn't hurt directly caching it as the module resolution will be patched by `rules_nodejs` and could perform unnecessary tasks. PR Close #43690 06 October 2021, 00:25:14 UTC
d66a2bc refactor(language-service): Remove option and bundle generation for View Engine (#43723) This commit removes the option to enable the VE language service and removes the VE bundle entirely. It also updates the name of the ivy bundle to "language-service.js" now that there is only one. PR Close #43723 06 October 2021, 00:24:08 UTC
d585fbc ci: change ownership of `goldens/public-api/manage.js` (#43664) With this change we change ownership of `goldens/public-api/manage.js` from `public-api` to `dev-infra`. This file is a script to manage public-api golden files and therefore it should fall under the dev-infra umbrella. PR Close #43664 05 October 2021, 20:36:36 UTC
fddb50b fix(service-worker): make `ngsw.json` generation deterministic and correct (#43679) Previously, all asset-groups from `ngsw-config.json` were processed in parallel. For each asset-group, we retrieved all files for the current build, filtered out files that were already matched by other asset-groups, determined which of the remaining files belonged to the current asset-group and generated entries for the `ngsw.json` manifest. This process was susceptible to race conditions when there were files that would be matched by multiple asset-groups. This made the generation of the `ngsw.json` manifest non-deterministic and violated the rule that each file would belong to the first asset-group that matched it (based on the asset-groups' order of appearance in `ngsw-config.json`), thus leading to broken ServiceWorker behavior. This commit fixes it by ensuring that the generation process is deterministic and that asset-groups are processed in the proper order. NOTE 1: The generation process has been broken since the beginning, but we have only noticed this recently. This is possibly related to the CLI's switching from a virtual file system host (which has more consistent timing characteristics) to the Node.js built-in `fs.promises` in angular/angular-cli@d3bc530c103849ca83742ab63eea7709d9af613d. NOTE 2: This commit also ensures that files in the `ngsw.json` hash-table are in alphabetic order. Previously, the files were added to the hash-table in blocks corresponding to each asset-group. This change is not necessary (i.e. the order of keys in the hash-table makes no difference in behavior), but it makes it easier to scan for a file (for example, for debugging purposes). PR Close #43679 05 October 2021, 20:34:29 UTC
0dc4544 feat(service-worker): expose more version update events (#43668) This commit introduces a new `SwUpdate#versionUpdates` observalbe, which provides more granular information about Service Worker version updates than the already existing `SwUpdate#available` observable. The new events emitted by `SwUpdate#versionUpdates` basically add the possibility for application to get notified if a new version is available on the server (not yet downloaded) and if an installation of a new version failed. Closes #39840 DEPRECATED: The `SwUpdate#availalbe` observable is deprecated. The new `SwUpdate#versionUpdates` observable provides the same information and more. Therefore, it is possible to rebuild the same behavior as `SwUpdate#availalbe` using the events emitted by `SwUpdate#versionUpdates` and filtering for `VersionReadyEvent` events. As a result, the `SwUpdate#availalbe` observable is now redundant. PR Close #43668 05 October 2021, 18:00:07 UTC
59225f5 feat(service-worker): `SwUpdate#activeUpdate` and `SwUpdate#checkForUpdate` should have a meaningful outcome (#43668) Previously `activateUpdate` and `checkForUpdate` returned `Promise<void>`, which did not provide any information of the actual outcome of the operation. Developers needed to subscribe to a corresponding observable to obtain the outcome. With this commit `SwUpdate#activateUpdate` will return `Promise<boolean>` which resolves to `true` if an update was activated, to `false` if no new version is available and rejects in case of any error. `SwUpdate#checkForUpdate` also returns a `Promise<boolean>` which resolves to `true` if an update is available, to `false` if no update was found and rejects in case of any error. Closes #39840 BREAKING CHANGE: The return type of `SwUpdate#activateUpdate` and `SwUpdate#checkForUpdate` changed to `Promise<boolean>`. Although unlikely, it is possible that this change will cause TypeScript type-checking to fail in some cases. If necessary, update your types to account for the new return type. DEPRECATED: The `SwUpdate#activated` observable is deprecated. The `SwUpdate#activated` observable only emits values as a direct response to calling `SwUpdate#activateUpdate()` and was only useful for determining whether the call resulted in an update or not. Now, the return value of `SwUpdate#activateUpdate()` can be used to determine the outcome of the operation and therefore using `SwUpdate#activated` does not offer any benefit. PR Close #43668 05 October 2021, 18:00:07 UTC
2ab2a08 fix(router): unset attachRef when router-outlet is destroyed to avoid mounting a destroyed component (#43697) Previously, when a router-outlet is conditionally shown with an ngIf, and a sub-route was re-attached via a custom RouteReuseStrategy, router-outlet would try to mount a destroyed component into the view if the router-outlet is destroyed and re-initialized. This commit fixes it by unsetting context.attachRef when router-outlet is destroyed, so when the router-outlet is being initialized again, it no longer sees an attachRef that it needs to mount to the view. Fixes #43696 PR Close #43697 05 October 2021, 16:48:39 UTC
318cf91 test(core): fix failing unit test (#43714) Fixes a unit test that now fails, because rethrowing errors is enabled by default. The problem is that we're checking the behavior of a component that throws during `ngOnDestroy`, but since the `resetTestingModule` call itself throws, the test is considered as failing. PR Close #43714 05 October 2021, 16:47:34 UTC
263feba fix(compiler-cli): handle nullable expressions correctly in the nullish coalescing extended template diagnostic (#43572) Refs #42966. Previously, checking a template with the syntax: ```html <div>{{ foo() ?? 'test' }}</div> ``` Where `foo()` returns a nullable value: ```typescript @Component(/* ... */) class TestCmp { foo: (): string | null => null; } ``` Would always log a nullish coalescing not nullable warning. This is because [`getSymbolOfNode(node.left)`](https://github.com/angular/angular/blob/fe691935091aaf7090864c8111a15f7cc7e53b6c/packages/compiler-cli/src/ngtsc/typecheck/extended/checks/nullish_coalescing_not_nullable/index.ts#L30) would return the [symbol of the function (`foo`)](https://github.com/angular/angular/blob/fe691935091aaf7090864c8111a15f7cc7e53b6c/packages/compiler-cli/src/ngtsc/typecheck/src/template_symbol_builder.ts#L536-L538) rather than the symbol of its returned value (`foo()`). Fixed this by getting the symbol for the whole expression's span, rather than just the function receiver. Also made some minor refactorings to `template_symbol_builder` to make a similar change to safe method calls. This behavior was originally for the language service in order to handle quick info, as the user highlighting a function name would actually apply to the entire expression. This is no longer true as the language service will correctly request the type from the function rather than the `Call` expression, so these hacks are not necessary anymore. This broke two existing test cases of exactly this behavior which were easily updated. Also added a test to the language service to confirm that it is not broken by this change. PR Close #43572 05 October 2021, 00:32:57 UTC
7fd0428 fix(core): don't rethrow errors if test teardown has been disabled (#43635) Fixes that the current logic was set up so that error rethrowing was enabled even when teardown is disabled. PR Close #43635 05 October 2021, 00:31:26 UTC
bdc6ff4 refactor(compiler-cli): remove `source-map` from dependencies (#43644) `source-map` is only used during testing and therefore there is no need to list it as a dependency. (cherry picked from commit ae7dc75bdce713acaa1658734791317a274982da) PR Close #43644 05 October 2021, 00:31:03 UTC
e7b647f refactor(dev-infra): remove dependency on minimist (#43644) Refactor scripts to use `yargs`. The main motivation for this is to align and use a single parser. PR Close #43644 05 October 2021, 00:31:03 UTC
9442a2f refactor(compiler-cli): remove dependency on minimist (#43644) The compiler already has a dependency on another parser (`yargs`). PR Close #43644 05 October 2021, 00:31:03 UTC
dd0722f release: cut the v13.0.0-next.11 release (#43707) PR Close #43707 05 October 2021, 00:23:50 UTC
81c7eb8 feat(core): add migration to opt out existing apps from new test module teardown behavior (#43353) Since the `destroyAfterEach` teardown behavior is enabled by default now, existing tests that depended on the old behavior can start to fail. These changes add an automated migration that explicitly adds `destroyAfterEach: false` to existing tests. The migration works by looking for `initTestEnvironment` calls across the entire app and adding the flag to them. If no calls were found, the migration will add the flag to all `configureTestingModule` and `withModule` calls instead. PR Close #43353 04 October 2021, 23:57:16 UTC
94ba59b feat(core): enable test module teardown by default (#43353) Sets the `destroyAfterEach` teardown behavior to be enabled by default. PR Close #43353 04 October 2021, 23:57:16 UTC
a396084 feat(core): add `createNgModuleRef` function to create `NgModuleRef` based on NgModule class (#43580) NgModule factories are obsolete with Ivy and most of the operations can already be performed with NgModule classes without retreieving corresponding factories. NgModule factories were useful to generate an `NgModuleRef` (via `NgModuleFactory.create` method). This commit adds a new function to create an instance of the `NgModuleRef` class without having the need to create a factory first. PR Close #43580 04 October 2021, 23:35:27 UTC
fe1f642 feat(core): add `getNgModuleById` function to retrieve loaded NgModules by id (#43580) This commit adds a new function called `getNgModuleById` to the public API surface of the framework. The `getNgModuleById` function allows to retrieve loaded NgModule class by id (specified via `@NgModule.id`). The function is a replacement for the `getModuleFactory` function. DEPRECATION: The `getModuleFactory` function is deprecated in favor of the `getNgModuleById` one. With Ivy it's possible to work with NgModule classes directly, without retrieving corresponding factories, so the `getNgModuleById` should be used instead. PR Close #43580 04 October 2021, 23:35:26 UTC
3d44328 build: update dependency google-closure-compiler to v20210907 (#43398) PR Close #43398 04 October 2021, 23:33:13 UTC
cc96f32 refactor(compiler-cli): deprecate the `fullTemplateTypeCheck` compiler option (#43224) When compiling your application using the AOT compiler, your templates are type-checked according to a certain strictness level. Before Angular 9 there existed only two strictness levels of template type checking as determined by [the `fullTemplateTypeCheck` compiler option](guide/angular-compiler-options). In version 9 the `strictTemplates` family of compiler options has been introduced as a more fine-grained approach to configuring how strict your templates are being type-checked. The `fullTemplateTypeCheck` flag is being deprecated in favor of the new `strictTemplates` option and its related compiler options. Projects that currently have `fullTemplateTypeCheck: true` configured can migrate to the following set of compiler options to achieve the same level of type-checking. ```json { "angularCompilerOptions": { "strictTemplates": true, "strictInputTypes": false, "strictNullInputTypes": false, "strictAttributeTypes": false, "strictOutputEventTypes": false, "strictDomEventTypes": false, "strictDomLocalRefTypes": false, "strictSafeNavigationTypes": false, "strictContextGenerics": false, } } ``` PR Close #43224 04 October 2021, 23:32:11 UTC
0673260 docs: remove legacy compiler options in library schematics example (#43224) The `skipTemplateCodegen`, `strictMetadataEmit` and `enableResourceInlining` options are specific to ViewEngine and have no effect when using the Ivy compiler. Since libraries can no longer be compiled using ViewEngine from Angular 13, this commit removes these options entirely. The `annotateForClosureCompiler` is also no longer recommended to use, as Closure Compiler is not supported outside of Bazel. Finally, the `fullTemplateTypeCheck` flag is changed into `strictTemplates` as the former flag is being deprecated. Enabling `strictTemplates` does result in more strict type-checking than with only `fullTemplateTypeCheck` enabled, but simply removing `fullTemplateTypeCheck` right away would result in less strict type-checking which is not desired. PR Close #43224 04 October 2021, 23:32:11 UTC
2a58ff3 fix(docs-infra): amend color of code links inside single anchors (#43586) when some auto code links fail to happen they can be added manually with the md ``[`code text`](link)``, these generate anchor elements which contain a code element, such code element does not get the correct text color, this commit fixes such issue PR Close #43586 04 October 2021, 23:31:16 UTC
d2f3f2c refactor(docs-infra): remove tslint from cli examples (#43592) remove the deprecated tslint from the examples of type cli note: eslint hasn't be applied and linting has been removed entirely to follow angular's unopinionated view on linting PR Close #43592 04 October 2021, 23:30:48 UTC
c997fef build(docs-infra): update scripts using Lighthouse to ES modules (#43607) Update the AIO scripts that use Lighthouse (i.e. `audit-web-app.js` and `test-aio-a11y.js`) to ES modules. This allows consuming `lighthouse/lighthouse-cli` [v8.5.0+][1], which also switched to ES modules. NOTE: Switching the `test-aio-a11y.js` script to ES modules is not strictly necessary, since it invokes `audit-web-app.mjs` via a shell command, but it was done for consistency. [1]: https://github.com/GoogleChrome/lighthouse/releases/tag/v8.5.0 PR Close #43607 04 October 2021, 23:29:49 UTC
353d699 build: lock file maintenance (#43607) PR Close #43607 04 October 2021, 23:29:49 UTC
6d1c2f7 refactor(migrations): ensure CommonJS migrations can be accessed (#43657) The `@angular/core` migrations are currently published as CommonJS and also not bundled. Schematics, of which migrations are a type, are currently required to be CommonJS modules due to the Schematics Runtime not yet supporting ESM-based schematics. To ensure that the migration files are loaded as CommonJS modules, a nested `package.json` file has been introduced within the `schematics` directory of the package to set the `type` field for all containing JavaScript files as CommonJS. Since the migrations are also not currently bundled and the `devmode` output used to build the migrations will replace all relative imports with fully-qualified module specifiers, an additional `exports` entry must be added to allow the fully-qualified module specifiers to correctly resolve. If `devmode` did not change the relative imports the additional entry would not be needed. Bundling would also remedy the situation and is the long-term path, especially once the migrations are converted to ESM. Additional followup changes should investigate bundling each migration. The additional `exports` entry should be removed if either `devmode` behavior is changed or the migrations are bundled. PR Close #43657 04 October 2021, 23:24:48 UTC
e0015d3 refactor(migrations): support use of an ESM `@angular/compiler-cli` package (#43657) Currently, migrations and schematics must be in CommonJS format. However, framework packages will only be ESM from v13 and onward. To support this configuration, dynamic import expressions are now used to load `@angular/compiler-cli` and its new secondary entry point `@angular/compiler-cli/private/migrations`. Dynamic imports within Node.js allow the `@angular/core` migrations’ CommonJS code to load ESM code. Unfortunately, TypeScript will currently, unconditionally down-level dynamic import into a require call. `require` calls cannot load ESM code and will result in a runtime error. To workaround this, a Function constructor is used to prevent TypeScript from changing the dynamic import. Once TypeScript provides support for keeping the dynamic import this workaround can be dropped and replaced with a standard dynamic import. Due to the use of the dynamic import, a reference to the dynamically loaded modules must now be passed to all locations that use values from the modules. PR Close #43657 04 October 2021, 23:24:48 UTC
a268c44 refactor(router): restore history in a consistent way on canceled navigations (#43651) The Router code currently has special-case handling around when and how the internal state is reset. Specifically, it only resets the internal tracking of the state when an error is thrown, which does not happen when guards reject or resolvers return `EMPTY`. Other than the navigation URL not matching a config, guards rejecting would be the main cause of a navigation being turned down. This change updates the router code to always reset the internal state in the same way, regardless of the reason for navigation cancellation. In the end, this will only affect _very_ specific use-cases with `UrlHandlingStrategy`. Because the internal state is not updated until the end of the transition pipe, the state reset generally doesn't do anything at all. However, because the `rawUrlTree` is reset by calling `urlHandlingStrategy.merge` with the _attempted_ `rawUrl` that failed, the resulting browser URL reset could be different than before (but will now be consistent with how the URL is reset in other scenarios, like a URL not matching a `Route` config). PR Close #43651 04 October 2021, 17:55:49 UTC
e5c3017 docs: move angular-compiler-options tsconfig snippets to external file (#43545) Moving angular-compiler-options docs inline code to external file of tsconfig.json and tsconfig.app.json. closes #43336 PR Close #43545 04 October 2021, 17:55:04 UTC
dbfb2d2 docs: remove web-animations from required polyfills (since IE11 is deprecated) (#43605) Based on the https://caniuse.com/web-animation the only unsupported feature (in supported browsers) of Web Animations is [the "composite" option](https://css-tricks.com/additive-animation-web-animations-api/#a-new-option) (unsupported in Safari). However it looks like this option is [unused in WebAnimations inside `@angular/animations`](https://github.com/angular/angular/blob/master/packages/animations/browser/src/render/web_animations/web_animations_driver.ts#L56-L61). So the Web Animations polyfill should not be required anymore, so this commit removes it from the browser support page. Closes #43035. PR Close #43605 04 October 2021, 17:54:32 UTC
16f504b docs: add balram chavan to GDE resources (#43658) PR Close #43658 04 October 2021, 17:53:58 UTC
2cc5cc9 build(docs-infra): upgrade cli command docs sources to afd86f0cd (#43678) Updating [angular#master](https://github.com/angular/angular/tree/master) from [cli-builds#master](https://github.com/angular/cli-builds/tree/master). ## Relevant changes in [commit range](https://github.com/angular/cli-builds/compare/5af45a096...afd86f0cd): **Modified** - help/serve.json PR Close #43678 04 October 2021, 17:53:19 UTC
0d43148 build: update to the latest version of @angular/dev-infra-private (#43541) Updates to the latest dev-infra version and updates the config as required. PR Close #43541 04 October 2021, 17:51:01 UTC
f513b17 refactor(router): add stub files for g3 patch of NgModuleFactoryLoader (#43660) Internally, g3 code still uses the `loadChildren: string` syntax. We need to continue to provide this functionality with an internal patch. This change makes that patch easier by only touching stub files that support the `loadChildren: string` (other than `router_config_loader`). PR Close #43660 04 October 2021, 17:28:02 UTC
d04b550 docs: Deprecate longhand binding prefixes (#43671) DEPRECATION: The template prefixes `bind-`, `on-`, `bindon-`, and `ref-` have been deprecated in v13. Templates should use the more widely documented syntaxes for binding and references: * `[input]="value"` instead of `bind-input="value"` * `[@trigger]="value"` instead of `bind-animate-trigger="value"` * `(click)="onClick()"` instead of `on-click="onClick()"` * `[(ngModel)]="value"` instead of `bindon-ngModel="value"` * `#templateRef` instead of `ref-templateRef` PR Close #43671 04 October 2021, 17:27:06 UTC
b64f796 docs: add developer survey 2021 (#43670) PR Close #43670 04 October 2021, 17:24:58 UTC
c721135 release: cut the v13.0.0-next.10 release (#43672) PR Close #43672 01 October 2021, 20:19:49 UTC
c15b8c7 test: update size goldens for integration CLI tests (#43431) Updates the size goldens for the integration CLI tests to reflect the new payload with APF v13 and the CLI v13-next.7 Overall, there seems to be some increase in the polyfills and a ~400b increase for the `main` bundles. This seems to because with APF v13, the core package no longer uses the downleveled `Object.assign`, but the spread operator directly. ESbuild will then downlevel the spread to `__spreadProps` which seems to come with more transitively-required helpers that end up contributing to the ~400b increase. The spread is downleveled even for the modern browsers this integration test targets, because it is a trick to wrokaround a performance bug in V8. So the size increase is reasonable given the runtime improvement. More details here: https://github.com/evanw/esbuild/issues/951#issuecomment-796972298. PR Close #43431 01 October 2021, 18:28:47 UTC
c96ff84 ci: update size goldens for `test_aio` and `test_aio_local` jobs (#43431) Updates the size goldens for the two AIO production build jobs. Due to the removal of differential loading, the bundle names no longer include the ES version being used, so we remove that suffix. The styles overall decreased. Additionally, the main bundle became noticable smaller, with a little increase in the polyfills. The AIO job not using APF v13 seems larger but this is likely due to the current Angular v13 packages (in the `test_aio`) job still using View Engine APF v12 with the CLI v13 (where some optimizations might not match up anymore). PR Close #43431 01 October 2021, 18:28:47 UTC
a3cd401 test: temporarily disable ng_update_migrations integration test (#43431) Temporarily disables the ng_update_migrations integration test until https://github.com/angular/angular/pull/43657 lands. PR Close #43431 01 October 2021, 18:28:47 UTC
e07a3d3 build: set target for all command line tools to nodejs v12 (#43431) This commits sets the JS target for all command line tools to NodeJS v12. ESbuild will automatically downlevel the ES2020 features we currently use to make them compatible with NodeJS v12 <-> ES2019. ES2020 is the prodmode output, but we still support Node v12 so there needs to be some downleveling for now. Note: This is a separate commit because initially the target was set to Node v14 to match up with the prodmode Bazel output. PR Close #43431 01 October 2021, 18:28:47 UTC
ce7fabe build: simplify logic for integration test starlark macro (#43431) Simplifies the `last_segment_name` computation in the integration test Starlark macro we use. The last segment name could be computed in a shorter way and this has come up while being at it (through review; so this commit addresses that). PR Close #43431 01 October 2021, 18:28:46 UTC
fe2a8de refactor(compiler-cli): expose tooling code through `private` entry-point (#43431) Similar to the other private entry-points we have added for localize, bazel or the migrations, we should expose the tooling code through a dedicated private export. This will make the compiler-cli exports more consistent and it will become easier for the CLI to export necessary code. PR Close #43431 01 October 2021, 18:28:46 UTC
8cc74b6 test(compiler-cli): fix integration test failing on windows due to missing runfile symlinking (#43431) Currently, some tests in the `compiler-cli/integrationtest` package fail on Windows because there are spec files which are not Bazel-generated. When Bazel runs these tests on Windows, the spec file is resolved to the actual source file (since there is no runfile symlinking/sandboxing). This breaks the execution of the CJS spec file since it resides in th `packages/compiler-cli` source folder which has a `package.json` set to `type: module`. We fix this by adding a `package.json` file for the integration test folder and setting `module` to `commonjs`. PR Close #43431 01 October 2021, 18:28:46 UTC
b5b3c73 build: allow for custom bazel binary to be used in package-builder (#43431) The package builder script should respect the `BAZEL` environment variable for running Bazel. If not set, it can fallback to bazelisk from the `node_modules`. Respecting this variable allows for users with a global `bazel` binary. This is desirable in some situations, like on Windows, where running Bazel inside of the Yarn environment seems slower than running a global variant. This could appear like that because projects might use different Bazel versions. In some cases, developers would want to use a single (already-warmed-up) instance of Bazel instead of launching different versions using bazelisk. (e.g. when switching a lot between repos like COMP, FW or CLI..) In any case, it doesn't hurt providing this flexibility for advanced use-cases. It's low-effort to maintain and is respected in COMP as well. PR Close #43431 01 October 2021, 18:28:46 UTC
463663b test: disable bazel integration test temporarily due to APF v13 (#43431) Temporarily disables the Bazel integration test as it will not work with the APF v13 output which is strict ESM. We need to land some logic in `rules_nodejs` first that would allow an ESM variant of `@angular/compiler-cli` to work. Once this happened and there is a new release, we can re-enable the test and make adjustments for v13 APF (i.e. running the linker plugin when creating the rollup bundles). PR Close #43431 01 October 2021, 18:28:46 UTC
5b5adb1 test(docs-infra): temporarily disable upgrade systemjs example e2e tests (#43431) This commit temporarily disables the SystemJS upgrade e2e tests. All of the upgrade e2e tests (except for `phonecat-1-typescript`) rely on UMD bundles. These are no longer available for the v13 Angular package output, so we disable the tests for now. These e2e tests can be re-enabled once we migrated the exampels from UMD bundles to e.g. the CLI, or some custom rollup build. Alternatively it might be even possible to use FESM bundles directly (depending on browser support for the AIO examples; this is something the docs-infra team will have to determine though). PR Close #43431 01 October 2021, 18:28:46 UTC
e0ca0b1 refactor(compiler-cli): no longer use deep imports into `@angular/compiler` (#43431) With the APF v13 package output, deep files can no longer be imported. Since we do not intend to bundle the compiler into the compiler-cli, we need to switch all deep imports to the primary entry-point. PR Close #43431 01 October 2021, 18:28:46 UTC
77cb171 test(docs-infra): update `http` test to use correct charset name due to chromium update (#43431) We updated the dev-infra version as part of the v13 package format in order to be able to use the latest `rollup` version (and its plugins). The update of the shared dev-infra package resulted in an update of Chromium to a more recent version. This version of Chromium seems to normalize the `content-type` header differently, so that the AIO `http` example test assertion needs to be updated to work with the new version of chromium. This commits updates the test. PR Close #43431 01 October 2021, 18:28:46 UTC
72c1265 build(docs-infra): do not error if suites are ignored (#43431) Adding suites to the `IGNORED_EXAMPLES` array currently results in an runtime exception because later when ignored examples are printed to stdout, a non-existent variable is referenced back from when there were examples disabled due to the Ivy migration. This commit fixes the logic. PR Close #43431 01 October 2021, 18:28:46 UTC
46933d8 test: update hello_world_closure integration test to use APF v13 (#43431) Updates the `hello_world_closure` integration test to use APF v13 in combination with the linker plugin which is needed as running the `ngc` command standalone does not modify the `node_modules` and the FW packages remain partially compiled. A step in between using rollup can create a linker-processed bundle of all FW packages. PR Close #43431 01 October 2021, 18:28:46 UTC
6e4821f test: update ng_elements integration test to run with APF v13 (#43431) Updates the `ng_elements` integration test to work with the APF v13 format by also enabling the linker for the FW packages. PR Close #43431 01 October 2021, 18:28:46 UTC
e6710b0 test: update dynamic-compiler test to be compatible with APF v13 (#43431) Updates the dynamic-compiler test to be compatible with the APF v13. As of v13, the packages no longer come with metadata.json files and now need to be processed with the babel linker plugin. This commit sets up the linker plugin, and switches away from the deprecated systemjs approach to a simpler rollup code-splitting variant. PR Close #43431 01 October 2021, 18:28:46 UTC
efcc723 ci: invalidate cache for node modules to ensure latest CLI is used (#43431) Invalidate the cache for node modules so that the CLI builds from the snapshot repositories are used. Due to a bug in Yarn, and the need of using the `github:<..>` syntax, the old artifacts from previous runs are incorrectly cached. This could have been prevented by using an actual full Git ref URL, but unfortunately that does not work because the CLI devkit snapshot dependencies set snapshot builds as deps as well. The URLs here need to match as otherwise Yarn will conflict. e.g. ``` Pattern ["@angular-devkit/core@github:angular/angular-devkit-core-builds#64b7e2b1d"] is trying to unpack in the same destination "/Users/paul/Library/Caches/Yarn/v6/npm-@angular-devkit-core-13.0.0-next.6/node_modules/@angular-devkit/core" as pattern ["@angular-devkit/core@github:angular/angular-devkit-core-builds#0e7277c63"]. This could result in non-deterministic behavior, skipping. ``` PR Close #43431 01 October 2021, 18:28:46 UTC
46045ad refactor(bazel): add module interop for CJS/ESM compiler-cli package (#43431) In the current Bazel setup, we run CommonJS as devmode output, and ESM for prodmode output. This means that consumers of the `@angular/bazel` package will end up using the prodmode-built ESM package of the compiler-cli. This commit adds interop logic to be able to load the compiler-cli as strict ESM package. We cannot switch devmode to ESM, as this would require some changes in `rules_nodejs` and potentially the reduction of both output flavors into a single one (which is a future project anyway). This is out of scope for now and inside g3, there is still devmode output as well. PR Close #43431 01 October 2021, 18:28:46 UTC
23118ef refactor(compiler-cli): fix ngcc cluster workers incorrectly being marked as busy with ESM (#43431) Ngcc relies on cluster for distributing work. The master controller sends messages to the workers as soon as the worker becomes `online`. The online event is sent as part of the NodeJS cluster logic itself. This does not work well because technically `online` could emit before the worker started listening (this seems to be case now with ESM as the imports are loaded in a way where `online` emits too early; before the worker actually listens for messages). We fix this by explicitly notifying the master when the worker is ready for retrieving IPC messages/or tasks. This is more safe anyway as it's not clearly specified when `online` emits. PR Close #43431 01 October 2021, 18:28:46 UTC
cebcfbe refactor: update yargs to new API for ESM compatibility (#43431) Given that we ship all of compiler-cli and localize in ESM mode now, we need to use a ESM compatible version of Yargs. The latest version seems ESM compatible but with some small API changes. This commit updates Yargs and updates the command line option code to use the new API. PR Close #43431 01 October 2021, 18:28:45 UTC
d442764 refactor(compiler-cli): adjust lock file resolution in ngcc to work with ESM (#43431) Updates the lock file resolution logic in ngcc to work with ESM output. The compiler-cli is now shipped in bundles, so the actual module resolution needs to stay to keep the lock file path consistent regardless of where the lock file code is bundled into. The ngcc integration test needs to be updated though since the `ngcc` entry-point will always reside in the `bundles/` directory now. It has been considered using the top-level `package.json` of the compiler-cli package, but that caused problems in tests down the line because the ngcc tests only have the `@angular/compiler-cli/ngcc/...` targets linked into the node modules. It's not worth changing this and reworking tests if ngcc is going away in the future anyway (+ it has been like that before!). PR Close #43431 01 October 2021, 18:28:45 UTC
b1d6fad refactor(compiler-cli): do not use `__filename` or `__dirname` global for ESM compatibility (#43431) Switches the compiler-cli usage of `__filename` to `import.meta.url` when ESM bundles are generated. Unfortunately we cannot start using only `import.meta` yet as we still build and run all code in Angular in CommonJS module output for devmode tests. This commit also fixes various instances where a jasmine spy was applied on a namespace export that will break with ES module (and the interop for CommonJS output). We fix these spies by using a default import. PR Close #43431 01 October 2021, 18:28:45 UTC
b46b3cf refactor: remove remaining dynamic require usages in package output (#43431) Removes the remaining usages of dynamic require statements in the package output. Since we declare all shipped packages as strict ESM, we cannot use dynamic require statements anymore. This commit switches these usages to actual `import` statements. Note: Tsickle continues to remain an optional dependency since bundling does not work with its UMD package output. Also tsickle is rarely used by consumers, if at all, so bundling does not really provide any significant value. To continue keeping tsickle optional (since it's still needed by the `annotateForClosureCompiler` option which is also respected in ngtsc), we pass-through a tsickle instance as a parameter to `main`. This allows us to keep the compile functions synchronous without having to refactor the majority of the watch compilation code, and majority of tests for ngc, ngtsc. Consumers (like the `ngc` bin entry-point) can then load tsickle based on their module format. e.g. tsickle can be imported through `require` to keep everything sync, but in ESM, the dynamic import can be used beforehand to pass `tsickle` to the `main` function. We can revisit this in the future but for now this does the trick without exceeding the scope of this commit.. PR Close #43431 01 October 2021, 18:28:45 UTC
634e666 test: update bazel integration test to use linker for v13 APF (#43431) As of v13, the package output will be using partial compilation output. This breaks the Bazel setup similar to how it breaks Angular Components. The problem is that `@bazel/concatjs` relies heavily on the UMD files that previously existed in APF, plus it assumed that ngcc pre-processed the files in the `node_modules`. This is no longer the case as there are no UMD files, and the code is not fully-compiled by the Angular compiler. PR Close #43431 01 October 2021, 18:28:45 UTC
8d7f109 refactor: make all imports compatible with ESM/CJS output. (#43431) As outlined in the previous commit which enabled the `esModuleInterop` TypeScript compiler option, we need to update all namespace imports for `typescript` to default imports. This is needed to allow for TypeScript to be imported at runtime from an ES module. Similar changes are needed for modules like `semver` where the types incorrectly suggest named exports that will not exist at runtime when imported from ESM. This commit refactors all imports to match with the lint rule we have configured in the previous commit. See the previous commit for more details on why certain imports have been changed. A special case are the imports to `@babel/core` and `@babel/types`. For these a special interop is needed as both default imports, or named imports break the other module format. e.g default imports would work well for ESM, but it breaks for CJS. For CJS, the named imports would only work, but in ESM, only the default export exist. We work around this for now until the devmode is using ESM as well (which would be consistent with prodmode and gives us more valuable test results). More details on the interop can be found in the `babel_core.ts` files (two interops are needed for both localize/or the compiler-cli). PR Close #43431 01 October 2021, 18:28:45 UTC
d15a692 build: enable `esModuleInterop` in TypeScript compilations (#43431) Enables the `esModuleInterop` for all TypeScript compilations in the project. This allows us to emit proper ESM-compatible code. e.g. consider the following import: ```ts import * as ts from 'typescript'; ``` This import currently will break at runtime in NodeJS because the `typescript` package is not shipping ESM. It's still a CommonJS module. ES modules are able to import from `typescript` though, using an import statement as above, but everything in `module.exports` is being exposed as the `default` named export. TypeScript at runtime does not have any other named exports, so for actual ESM compatibility, all of our imports need to be switched to: ``` import ts from 'typescript'; ``` The `esModuleInterop` option allows this to work even though the `d.ts` file of TS currently suggests that there are _only_ named exports. The TypeScript language service will now suggest the correct import form as shown above. It doesn't enforce that unfortunately, but this commit also adds a lint rule that enforces certain patterns so that we emit imports that are compatible with both ESM and CJS output (CJS still needed here since tests run with CJS devmode output still; this is a future project to switch that over to ESM!) PR Close #43431 01 October 2021, 18:28:45 UTC
27535bf refactor: expose new `@angular/localize/tools` entry-point for CLI usage (#43431) This wires up the `@angular/localize/tools` entry-point. For context: This entry-point is being created to avoid deep imports into `@angular/localize/src/tools/<..>` like the CLI relies on. Deep imports do not play well with strict ESM, and now that all APF packages are strict ESM, the tool code needs to be either strict ESM as well. We use ESBuild to create individual bundles for the CLI entry-points, and the actual tool entry-point. We use a bundler because this enables the localize code be ESM compatible. Without a bundler, all relative imports within the `tools` entry-point would need to explicitly have the `.js` extension. This would be cumbersome and hard to maintain/enforce or validate. One might wonder why this is not a standard APF entry-point then. The answer is that the APF entry-points do not support exposing the CLI binaries (like `yarn localize-translate`). This could be done through tertiary entry-points, but using ESBuild directly gives us more control for now. We might want to revisit this in the future again. PR Close #43431 01 October 2021, 18:28:44 UTC
a18981a refactor: move `localize/src/tools` into `localize/tools` folder (#43431) Moves the `src/tools` folder of the `@angular/localize` package into the top-level of the package. This is in preparation of actually exposing an entry-point for the tools that can be accessed using `@angular/localize/tools`. We want to expose such an entry-point because the CLI currently deep-imports into various places of the tools, but this will not work well with strict ESM because the localize tool depends on the v13 strict ESM packages like the `@angular/compiler` or `@angular/compiler-cli`. PR Close #43431 01 October 2021, 18:28:44 UTC
090861b build: update to latest version Angular CLI supporting ESM package output (#43431) The CLI has been updated with various changes to support for ESM package output of the framework. This commit updates to a next version of the CLI v13 that contains these necessary changes, allowing us to test/validate our package changes through integration tests or AIO examples. This update also contains a fix for the adjust enum babel optimization that broke with the latest rollup version. PR Close #43431 01 October 2021, 18:28:44 UTC
b2ff0ac ci: disable components-repo-unit-tests job due to APF v13 (#43431) Temporarily disables the `components-repo-unit-tests` job due to APF v13 which is currently not handled properly in the components repo. The components repo would need to be updated first to properly handle v13 APF output (with linker processing and an alternative to UMD bundles which the majority of tests currently rely on). PR Close #43431 01 October 2021, 18:28:44 UTC
c7d37f7 build: expose locales as package export for ES module resolution (#43431) As part of v13, all APF packages use the `exports` field which defines the public entry-points/mappings for a package. so-called package exports. The `ng_package` rule creates all the necessary mappings/sub-path exports for the entry-points of `@angular/common`. Though, since the locale files are generated separately and are not an actual entry-point, we need to expose these files publicly so that they can be imported/resolved by consumers. PR Close #43431 01 October 2021, 18:28:44 UTC
4b142c4 test: remove hello world SystemJS UMD integration test (#43431) Given that Angular no longer ships UMD bundles as of v13, the hello world SystemJS integration test cannot work. PR Close #43431 01 October 2021, 18:28:44 UTC
7e0bab3 build: only ship type definitions along with bundles for compiler-cli (#43431) We switched the build output for the compiler-cli to use esbuild-generated bundles. This means that actual devmode ES5 sources, or prodmode ES2020 non-bundled sources are not actually needed. Only the types are needed, and this commit makes sure only the type definitions are shipped. This reduces the code size of the compiler-cli and also helps with avoiding incorrect module resolution. PR Close #43431 01 October 2021, 18:28:44 UTC
e60058c build: update service-worker package to export worker script and schema (#43431) Updates the service-worker package to export the worker script and schema, so that these files can be resolved and included by consumers. Additionally, the CLI bundle is updated to be using ESM as it transitively relies on the `core` entry-point of the package which already uses ESM. Also this is required because the script is part of the the service-worker package which has `type: module` applied. PR Close #43431 01 October 2021, 18:28:44 UTC
c5a5682 build: ship locales in `@angular/common` in ESM format (#43431) Similar to other code that is shipped as part of `@angular/common` (with APF v13), we should ship the generated locale files as ESM files as well. This is necessary/reasonable because we explicitly set `type: "module"` for the common package, so it makes sense to have the same apply for the locale sub-directory. Note: The global locale scripts remain having the `.js` extension and will continue to be unmodified. They are CJS/ESM compatible either way, but refer to browser globals. PR Close #43431 01 October 2021, 18:28:44 UTC
back to top