2153 Commits

Author SHA1 Message Date
Renovate Bot
93957e5e59 build: update all non-major dependencies 2021-09-01 07:45:33 +02:00
Renovate Bot
588285c386 build: update all non-major dependencies 2021-08-31 08:33:31 +02:00
Renovate Bot
f082868239 build: update dependency esbuild to v0.12.24 2021-08-28 08:30:23 +02:00
Alan Agius
76d6d8826f fix(@angular-devkit/build-angular): set browserslist defaults
By default, browserslist defaults are too inclusive: 83764ea81f/index.js (L516-L522)

We change the default query to browsers that Angular support: https://angular.io/guide/browser-support
2021-08-27 15:57:57 +02:00
Alan Agius
32dbf659ac feat(@angular-devkit/build-angular): update webpack-dev-server to version 4
BREAKING CHANGE:

The dev-server now uses WebSockets to communicate changes to the browser during HMR and live-reloaded. If during your development you are using a proxy you will need to enable proxying of WebSockets.
2021-08-27 15:40:10 +02:00
Renovate Bot
4b323b139e build: update dependency cacache to v15.3.0 2021-08-27 07:15:52 +02:00
Renovate Bot
c0dfbfecdc build: update all non-major dependencies 2021-08-26 07:31:06 +02:00
Charles Lyding
a7de97e485 build: add Bazel ts_library rule package_name properties to all packages
rules_nodejs 4 requires that a package_name property be specified within a ts_library rule for the output to be linked into the package repository. Failing to add the property can cause test failures due to unresolved packages.
2021-08-26 07:30:44 +02:00
Alan Agius
9a46ba562a build: update dependency webpack-subresource-integrity to v5 2021-08-26 07:30:34 +02:00
Renovate Bot
ab3db39472 build: update all non-major dependencies 2021-08-24 10:51:32 +01:00
Charles Lyding
51f89d633f test: enable no-useless-escape lint rule
The `no-useless-escape` eslint rule has now been enabled which removes unneeded characters and complexity from string literals and regular expressions. All files that were in violation of this rule have also been corrected.
2021-08-24 10:51:14 +01:00
Renovate Bot
9e71069610 build: update all non-major dependencies 2021-08-23 11:07:13 +01:00
Alan Agius
961218aae7 refactor(@angular-devkit/build-angular): remove differential loading stats generation
This is no longer needed size differential loading was removed.
2021-08-23 11:05:53 +01:00
Renovate Bot
a6f8d33637 build: update all non-major dependencies 2021-08-20 10:05:13 +01:00
Renovate Bot
6be902ac83 build: update dependency core-js to v3.16.2 2021-08-18 12:00:15 -04:00
Alan Agius
aba54ae783 fix(@angular-devkit/build-angular): provide supported browsers to esbuild
With this change we provide the list of supported browsers to Esbuild during CSS optimizations, so it can perform optimizations based on the browser support needed.

Closes #21594
2021-08-18 10:14:39 -04:00
Renovate Bot
5326b49488 build: update all non-major dependencies 2021-08-17 10:09:45 -04:00
Simon Primetzhofer
9eb599da2b fix(@angular-devkit/build-angular): handle undefined entrypoints when marking async chunks
When using custom builders, it is possible to remove entries from the webpack-configuration
manually. This may eventually lead to undefined entryPoints in async-chunks.ts and aborts
the compilation.
2021-08-13 16:15:12 -04:00
Renovate Bot
f4874d5545 build: update all non-major dependencies 2021-08-13 16:13:31 -04:00
Renovate Bot
dd4e774655 build: update dependency tslib to v2.3.1 2021-08-12 06:41:34 -04:00
Charles Lyding
d67e7ad2fc fix(@angular-devkit/build-angular): ensure native async is downlevelled in third-party libraries
Application code (TS files) will only contain native async if the TypeScript configuration target is ES2017+. However, third-party libraries can contain native async regardless of the target option. To address these third-party libraries, all non-application files need to be analyzed to determine if they must have native async downlevelled. The analysis is first resource path based and then a string match search for the async keyword. This approach has the potential for rare false positives (for example, the word async in a comment) but the outcome would only be a small amount of additional processing for that one file due to the no-op transformation. This is in contrast to a more exact method covering those rare false positives but that would require a more expensive analysis operation on every file and result in longer overall build times.
2021-08-11 16:41:54 +02:00
Renovate Bot
498d1409f2 build: update dependency @babel/runtime to v7.15.3 2021-08-11 11:31:25 +02:00
Renovate Bot
b0dfd90d2c build: update all non-major dependencies 2021-08-11 09:16:13 +02:00
Charles Lyding
8e82263c5e perf(@angular-devkit/build-angular): use esbuild/terser combination to optimize global scripts
`esbuild` and `terser` are now used to optimize global scripts in addition to the previous performance enhancement of optimizing application bundles. This change removes the need for the `terser-webpack-plugin` as a direct dependency and provides further production build time improvements for applications which use global scripts (`scripts` option in the `angular.json` file).
Since `esbuild` does not support optimizing a script with ES2015+ syntax when targetting ES5, the JavaScript optimizer will fallback to only using terser in the event that such a situation occurs. This will only happen if ES5 is the output target for an application and a global script contains ES2015+ syntax. In that case, the global script is technically already invalid for the target environment and may fail at runtime but this is and has been considered a configuration issue. Global scripts must be compatible with the target environment/browsers.
2021-08-11 09:15:49 +02:00
Charles Lyding
1341ad6406 refactor(@angular-devkit/build-angular): remove unused getEsVersionForFileName helper
The `getEsVersionForFileName` helper function was previously used for recently removed differential loading support but is now unused and can also be removed.
2021-08-10 21:40:57 +02:00
Charles Lyding
7b189789d8 refactor(@angular-devkit/build-angular): remove core path usage from normalizeExtraEntryPoints helper
The Node.js `path` builtin module is already imported and provides the necessary functionality to extract the base file name needed within this helper function. By using `path`, all imports from `@angular-devkit/core` can be eliminated from the file.
2021-08-10 21:40:57 +02:00
Charles Lyding
2a1f4ee0d8 refactor(@angular-devkit/build-angular): remove unneeded core JsonObject type usage
The architect runtime no longer requires builder options to include the JsonObject in its type definition when calling `createBuilder`. The remaining cases in this package have been removed.
2021-08-10 21:40:57 +02:00
Alan Agius
e95ecb8ab0 feat(@angular-devkit/build-angular): deprecate deployUrl
With this change we deprecate deployUrl which in many case causes unexpected and undesired behaviour. Such as #12322, #21432 and #6666. This is because one of the drawbacks of deploy Url is that this url needs to be injected all over the bundles.

This option was previously introduced to handle application that only assets are hosted on a CDN. This setup is now mostly considered as legacy as it is recommended that the entire application is hosted on a CDN. That said, this legacy behaviour can still be achieved by setting the `baseHref` to the CDN address, while setting the `APP_BASE_HREF` to the application address.

Closes #12322 and closes #6666
2021-08-10 19:17:19 +02:00
Alan Agius
cb7d156c23 perf(@angular-devkit/build-angular): use esbuild as a CSS optimizer for global styles
Esbuild now support CSS sourcemaps which now makes it possible to be used to optimize global CSS.

With this change we also reduce the amount of dependencies by removing `css-minimizer-webpack-plugin` which brings in a number of transitive depedencies which we no longer use.
2021-08-10 19:16:14 +02:00
Alan Agius
019614b9e8 Revert "fix(@angular-devkit/build-angular): ensure Sass worker implementation supports Node.js 12.14"
This reverts commit 4dc7cf952961183abcd201db6a5747a7b22e5953.
2021-08-09 22:10:50 +02:00
Charles Lyding
1e142cd29a refactor(@angular-devkit/build-angular): remove legacy ES5 build optimizer usage
The legacy standalone build optimizer was still used when targetting ES5 due to the new babel-based build optimizer only supporting the analysis of ES2015+ code. Mainly due to the presence of native classes, the new build optimizer is faster and significantly less complex. To fully remove the legacy build optimizer, ES5 downleveling of application code is now also performed by babel when the TypeScript configuration specifies an ES5 target. TypeScript will now internally emit ES2015 in this configuration and ES2015 code will be used as the input to the remainder of the build pipeline. This has been the behavior for third-party packages and now all code will be consistently downleveled to ES5 using the same tooling.
2021-08-09 16:50:49 +02:00
Alan Agius
a7b2e6f512 feat(@schematics/angular): update ngsw-config resources extensions
With this change we update service worker ngsw-config resources extensions.

- Remove `eot`. Old IE font format. Not supported by browsers which support service worker.
- Remove `ani`. Not supported by browsers.
- Add `jpeg` as common alias for `jpg`.
- Add `apng` as modern alternative to `gif`.
- Add `avif` a modern image format.

Closes #21526
2021-08-09 16:50:16 +02:00
Charles Lyding
c4baba4459 refactor(@angular-devkit/build-angular): reduce repeat TypeScript configuration loading
An application's TypeScript configuration was previously being loaded multiple times in several different aspects of the build setup process. These aspects need to access specific compiler options relevant to that particular area of the setup. However, loading the configuration can be expensive due to the process also calculating the root files for the TypeScript compilation which can result in a large amount of file access. To improve the setup performance, the number of times the TypeScript configuration will be loaded has now been reduced with further reductions possible with additional refactorings.
2021-08-09 14:15:13 +02:00
Charles Lyding
3bcb729a33 refactor(@angular-devkit/build-angular): remove unneeded ivy enabled checks
Applications can now only be built with Ivy. However, several checks were still present in the code to determine if Ivy was enabled. Since Ivy is always enabled these checks have since become unused code and can be removed.
2021-08-09 14:15:13 +02:00
Renovate Bot
7098d652f9 build: update all non-major dependencies 2021-08-09 11:29:36 +02:00
Charles Lyding
cdfaeee089 fix(@angular-devkit/build-angular): support both pure annotation forms for static properties
The static property optimization pass analyzes the initializers of static properties for possible side effects to determine if optimization is safe to perform. Previously the pure annotation of the form `@__PURE__` was not considered during the analysis. This has now been corrected and all of the following forms are supported: `@__PURE__`, `#__PURE__`, and `@pureOrBreakMyCode`.
2021-08-06 19:38:11 +02:00
Alan Agius
2aa6f579d7 fix(@angular-devkit/build-angular): do not consume inline sourcemaps when vendor sourcemaps is disabled.
Not removing inline sourcemaps when vendor sourcemaps is disabled causes an issue during the JS optimization sourcemap merging phase.

```
Optimization error [936.cf7797927c7f989bd40d.js]: Error: Transformation map 1 must have exactly one source file.
```

When vendor sourcemaps is disabled we are not interested into the said sourcemaps so now we remove the inline sourcemap.

Closes #21508
2021-08-06 15:46:50 +02:00
Charles Lyding
167eed4654 fix(@angular-devkit/build-angular): update Angular peer dependencies to v13.0 prerelease 2021-08-06 08:12:06 +02:00
Alan Agius
7dcfffafff feat(@angular-devkit/build-angular): drop support for karma-coverage-instanbul-reporter
BREAKING CHANGE:

Support for `karma-coverage-instanbul-reporter` has been dropped in favor of the official karma coverage plugin `karma-coverage`.
2021-08-05 22:02:10 +02:00
Charles Lyding
f5d019f9d6 fix(@angular-devkit/build-angular): avoid attempting to optimize copied JavaScript assets
When in watch mode (`ng serve`/`ng build --watch`), Webpack's `copy-webpack-plugin` is currently used to implement the project `assets` option within `angular.json`. Files specified by the `assets` option are intended to be copied to the output unmodified and in their original form.  However, if any JavaScript assets were present they previously would have been unintentionally subject to their respective optimization plugins which would result in modified asset outputs and the potential for breakage of the assets. `ng build` outside of watch mode uses a direct file copy with copy-on-write (where supported) to process assets and is therefore not affected by this situation.
When the `copy-webpack-plugin` is used, it adds a `copied` flag to an asset's info metadata. This flag is now used to exclude all such copied JavaScript assets from optimization.
2021-08-05 18:42:39 +02:00
Charles Lyding
8499cfe1d4 test(@angular-devkit/build-angular): properly discover Bazel units tests
The unit tests for builders are now within the `src/builders/...` path.
2021-08-05 18:41:58 +02:00
Alan Agius
8758e4415d fix(@angular-devkit/build-angular): handle null maps in JavaScript optimizer worker
`asset.map` can be `null` which causes an unhandled exception.

```
Error: Optimization error [generated/js/custom-elements-es5-polyfills.js]: TypeError: Cannot destructure property 'mappings' of 'map' as it is null.
    at decodeSourceMap (/angular/aio/node_modules/@ampproject/remapping/dist/remapping.umd.js:178:15)
    at Array.map (<anonymous>)
    at buildSourceMapTree (/angular/aio/node_modules/@ampproject/remapping/dist/remapping.umd.js:725:37)
    at Object.remapping [as default] (/angular/aio/node_modules/@ampproject/remapping/dist/remapping.umd.js:831:23)
    at default_1 (/angular/aio/node_modules/@angular-devkit/build-angular/src/webpack/plugins/javascript-optimizer-worker.js:44:44)
```

AIO CI failure: https://app.circleci.com/pipelines/github/angular/angular/35940/workflows/c9c91ad3-1645-4a88-bb5b-6a06a9b887b9/jobs/1032993
2021-08-05 16:26:06 +02:00
Renovate Bot
aedbc2d49b build: update dependency esbuild to v0.12.18 2021-08-05 08:34:27 +02:00
Alan Agius
f53bf9dc21 feat(@angular-devkit/build-angular): add type=module to all scripts tags
With this change we add `type=module` to all script tags. This is now possible since IE is no longer supported.

More information about modules can be found here: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
2021-08-05 08:34:13 +02:00
Renovate Bot
86dd832828 build: update all non-major dependencies 2021-08-05 08:03:51 +02:00
Charles Lyding
0afdff028c refactor(@angular-devkit/build-angular): move all builders into a builders subdirectory
All Angular builders are now located within one subdirectory of the `src` directory. This organization provides better discovery of the builders and will allow builder specific code to be stored in a single area.
2021-08-05 06:49:55 +02:00
Charles Lyding
f0987ee088 refactor(@angular-devkit/build-angular): remove unused rxjs version discovery
In the Angular version check, the rxjs version was acquired by resolving and reading the rxjs package's package.json file. However, the rxjs version checks were removed in a previous major.
2021-08-05 06:48:55 +02:00
Charles Lyding
a2bc175dbf refactor(@angular-devkit/build-angular): remove Webpack loader resolve custom setting
The Webpack configuration setup previously walked up the directory structure to find all `node_modules` directories and then pass this list to Webpack's `resolverLoader.modules` option. This was previously done to ensure that hoisted packages were properly resolved. However, all loader paths are now fully resolved prior to being added to the Webpack configuration. Since loader paths will now be absolute, Webpack no longer needs to resolve them which makes the resolve settings no longer necessary.
2021-08-05 06:48:55 +02:00
Charles Lyding
734d61df3f refactor(@angular-devkit/build-angular): remove empty.js Webpack alias file
Webpack 5 supports setting a module's alias to `false` to signify that a module should be ignored. This option removes the need for the `empty.js` file as an alias option value.
2021-08-05 06:48:55 +02:00
Charles Lyding
28f302855f refactor(@angular-devkit/build-angular): remove Node.js 10 copyfile workaround
The workaround code was gated on the presence of Node.js 10 but the CLI no longer supports Node.js 10 and will execute with an error if attempted. As a result, the workaround code would never be executed.
2021-08-05 06:48:55 +02:00