2788 Commits

Author SHA1 Message Date
Alan Agius
4eaf107305 build: update minimum supported Node version from 16.13.0 -> 16.14.0
This commit updates the minimum supported Node version across packages from 16.13.0 -> 16.14.0 to ensure compatibility with dependencies.
2023-04-11 16:46:10 +00:00
Charles Lyding
c06b1bd3d7 perf(@angular-devkit/build-angular): skip Angular linker in JIT mode with esbuild
When using the esbuild-based browser application builder in JIT mode, the Angular
linker will now be skipped. The runtime Angular compiler present in JIT applications
will automatically link any needed code.
2023-04-06 17:58:55 +00:00
Charles Lyding
0eac98f617 feat(@angular-devkit/build-angular): implement progress option for esbuild builder
When using the esbuild-based browser application builder, the `progress` option which
is enabled by default will now show an activity spinner when building/rebuilding.
2023-04-05 16:07:44 +00:00
Charles Lyding
e4883b0ee1 feat(@angular-devkit/build-angular): support SSL options with esbuild development server
When using the esbuild-based browser application builder and its newly supported development
server, the SSL related `dev-server` builder options can now be used. These include the existing
`ssl`, `sslCert`, and `sslKey` options. Additionally, if no certificate and key are provided
the `@vitejs/plugin-basic-ssl` plugin will be used to provide an auto-generated one.
2023-04-05 16:07:33 +00:00
Alan Agius
295b8488a4 build: update all non-major dependencies
(cherry picked from commit 497da48086f84a8e7f260dcd817ffbe84ef7765e)
2023-04-05 10:26:32 +00:00
Charles Lyding
4822b3ba55 fix(@angular-devkit/build-angular): keep esbuild server active until builder fully stops
Use the now working builder teardown functionality to ensure that the development server
is properly closed when the builder is stopped.
2023-04-05 09:25:37 +00:00
Charles Lyding
67670b612e fix(@angular-devkit/build-angular): pass listening port in result for esbuild dev server
The deprecated protractor builder requires that the result object from a development server
provide the port used to access the application if the port is not the default (4200). The
newly introduced esbuild development server will now provide the port when available.
2023-04-05 09:25:37 +00:00
Charles Lyding
ce46ecae01 feat(@angular-devkit/build-angular): support module resolution with less stylesheets in esbuild builder
When using the esbuild-based browser application builder with Less stylesheets, import rules
will now attempt to perform node package resolution if the import cannot be found as a relative
path. Built-in Less resolution is performed first to both avoid unnecessary node module resolution
overhead when not needed and also ensure Less relative import semantics continue to be supported.
2023-04-04 14:41:23 +00:00
Charles Lyding
584b51907c feat(@angular-devkit/build-angular): support scripts option with esbuild builder
When using the esbuild-based browser application builder, the `scripts` option will
now provide equivalent functionality to the current default Webpack-based builder.
The option provides full node resolution capabilities which allows both workspace
relative paths and package paths with support for the `script` exports condition.
2023-04-04 09:59:59 +00:00
Charles Lyding
8c550302cc feat(@angular-devkit/build-angular): initial development server for esbuild-based builder
When using the experimental esbuild-based browser application builder, the preexisting `dev-server` builder
can now be used to execute the `ng serve` command with an esbuild bundled application. The `dev-server` builder
provides an alternate development server that will execute the `browser-esbuild` builder to build the application
and then serve the output files within a development server with live reload capabilities.
This is an initial integration of the development server. It is not yet fully optimized and all features
may not yet be supported. SSL, in particular, does not yet work.

If already using the esbuild-based builder, no additional changes to the Angular configuration are required.
The `dev-server` builder will automatically detect the application builder and use the relevent development
server implementation. As the esbuild-based browser application builders is currently experimental, using
the development server in this mode is also considered experimental.
2023-04-04 08:22:36 +00:00
Charles Lyding
aae34fc02d perf(@angular-devkit/build-angular): fully lazy load sass in esbuild builder
When using the esbuild-based browser application builder, the Sass worker pool
import is now lazy to prevent unnecessary module loading when Sass is not used
within an application.
2023-04-04 08:22:20 +00:00
Charles Lyding
b8c9667f92 fix(@angular-devkit/build-angular): remove unintended files in esbuild output stats table
When using the esbuild-based browser application builder, the stat output table was incorrectly
displaying source map files and internal component resource files such as inline stylesheets
as initial entries.
2023-04-03 10:15:36 +00:00
Charles Lyding
005ba42766 fix(@angular-devkit/build-angular): ensure empty component styles compile with esbuild
Previously when using the esbuild-based browser application builder, an empty inline
component style (`styles: ['']`) would cause the build to fail. This was due to a
bad assertion condition that has now been corrected.
2023-03-31 15:36:42 +00:00
Charles Lyding
ee8013f66f feat(@angular-devkit/build-angular): display build output table with esbuild
When using the experimental esbuild-based browser application builder, a build
output table will now be displayed upon completion. The table is formatted to
display output file information in a similar way to the default Webpack-based
browser application builder. Estimated transfer size is currently not displayed
but will be added in a future change.
2023-03-31 15:36:26 +00:00
Alan Agius
458400b7b1 perf(@angular-devkit/build-angular): avoid unnessary iterations
This commit reduces the number of child node visited when adding the nonce attribute. This changes have been ported form angular/universal.
2023-03-30 17:17:37 +00:00
Angular Robot
32e80cf246 build: update angular
(cherry picked from commit b68b225a354e725451e2cd9f310160c4621be4d3)
2023-03-30 17:17:37 +00:00
Charles Lyding
429f56b22c test: ensure esbuild and yarn E2E tests are executed
The additional arguments were previously not fully propagated within the bazel rules.
2023-03-30 17:16:17 +00:00
Charles Lyding
cdfa7ca88c fix(@angular-devkit/build-angular): allow multiple polyfills with esbuild-based builder
Previously when using the esbuild-based browser application, the `polyfills` option was
limited to only one entry. The option now can be used with multiple entries and has full
support for package resolution. This provides equivalent behavior to the current default
Webpack-based builder.
2023-03-30 15:51:28 +00:00
Kristiyan Kostadinov
955b493b13 fix(@angular-devkit/build-angular): support CSP on critical CSS link tags.
Based on https://github.com/angular/angular-cli/pull/24880#pullrequestreview-1347993316. Critters can generate `link` tags with inline `onload` handlers which breaks CSP. These changes update the style nonce processor to remove the `onload` handlers and replicate the behavior with an inline `script` tag that gets the proper nonce.

Note that earlier we talked about doing this through Critters which while possible, would still require a custom HTML processor, because we need to both add and remove attributes from an element.
2023-03-28 14:45:40 +00:00
Charles Lyding
66a33c62e8 refactor(@angular-devkit/build-angular): extract option processing for dev server builder
To provide support for additional development server integration, the `dev-server` builder's
option processing has been reorganized into separate files. The main builder bootstrapping
logic has also been separated into another file. This additionally helps reduce the overall
size of the main Webpack-based development server file.
2023-03-28 14:44:41 +00:00
Charles Lyding
0ac5f27146 refactor(@angular-devkit/build-angular): support in-memory results for esbuild builder
To provide support for development server integration, the esbuild-based builder can now
be setup to provide in-memory file results at the completion of a build.  This applies to
both watch and non-watch modes. The result output object structure is not currently considered
part of the public API and is currently only intended to be used by other builders within the
package.
2023-03-27 13:43:22 +00:00
Alan Agius
c9e84d0243 feat(@schematics/angular): remove generation of BrowserModule.withServerTransition
This commit removes generation of `.withServerTransition` in the universal schematic as is deprecated.

 DEPRECATED: the `app-id` option in the app-shell and universal schematics has been deprecated without replacement. See: https://github.com/angular/angular/pull/49422 for more information about the rational of this change.
2023-03-24 20:37:32 +00:00
Alan Agius
428fc0f4b2 build: update ng-packagr to 16.0.0-next.2 2023-03-24 18:31:29 +00:00
cexbrayat
202e9a50f6 fix(@schematics/angular): remove compileComponents from component test schematic
`compileComponents` is not necessary when using the CLI (as the templates are inlined) and just adds boilerplate code. So we can remove it from the test schematic and make it independent from `async/await` (only place we would have it in the CLI generated code, and in most Angular apps).
2023-03-24 18:30:26 +00:00
Charles Lyding
52969db6bd feat(@angular-devkit/build-angular): initial tailwindcss support for CSS in esbuild builder
When using the experimental esbuild-based browser application builder, CSS stylesheets will
now be processed by tailwindcss if a tailwind configuration file is present and the `tailwindcss`
package has been installed in the project. This provides equivalent behavior to the use of tailwind
with the current default Webpack-based build system. Currently, only CSS stylesheets are processed.
Preprocessor support including Sass and Less will be added in a future change.
2023-03-22 18:23:54 +00:00
Angular Robot
3b815e168a build: update all non-major dependencies 2023-03-21 17:24:06 +00:00
Charles Lyding
78239901bc refactor(@angular-devkit/build-angular): consolidate result file writes in esbuild builder
As a preparation step to allow for in-memory build outputs to support the development server,
The output result files of the build are now written to the file system in one location. This
includes the generated files from the bundling steps as well as any assets and service worker
files.
2023-03-21 17:21:52 +00:00
Kristiyan Kostadinov
ff5ebf9b12 feat(@angular-devkit/build-angular): add CSP support for inline styles
Companion change to https://github.com/angular/angular/pull/49444. Adds an HTML processor that finds the `ngCspNonce` attribute and copies its value to any inline `style` tags in the HTML. The processor runs late in the processing pipeline in order to pick up any `style` tag that might've been added by other processors (e.g. critical CSS).
2023-03-20 18:24:31 +00:00
Kristiyan Kostadinov
5a171ddff6 build: update to TypeScript 5 and drop support for TypeScript 4.8
Bumps up the dev dependency to TS 5 and narrows the required version to exclude 4.8.

BREAKING CHANGE:
* TypeScript 4.8 is no longer supported.
2023-03-17 13:15:52 +00:00
Angular Robot
c90e7c7c33 build: update all non-major dependencies 2023-03-16 08:53:12 +00:00
Angular Robot
0082446375 build: update all non-major dependencies 2023-03-15 09:27:35 +00:00
Charles Lyding
f04859d161 feat(@angular-devkit/build-angular): initial autoprefixer support for CSS in esbuild builder
When using the experimental esbuild-based browser application builder, CSS stylesheets
will now be processed by the postcss autoprefixer plugin. The autoprefixer plugin will only
be used if the browsers provided by browserslist require prefixes to be added. This avoids
unnecessary stylesheet parsing and processing if no additional prefixes are needed.
Currently, only CSS stylesheets are processed. Preprocessor support including Sass and Less
will be added in a future change.
2023-03-15 09:27:18 +00:00
Alan Agius
2908020601 feat(@angular-devkit/build-angular): support standalone app-shell generation
This commit adds support for generating an app-shell for a standalone application.

The `main.server.ts`, will need to export a bootstrapping function that returns a `Promise<ApplicationRef>`.

Example
```ts
export default () => bootstrapApplication(AppComponent, {
  providers: [
    importProvidersFrom(ServerModule),
    provideRouter([{ path: 'shell', component: AppShellComponent }]),
  ],
});
```
2023-03-14 12:59:28 +00:00
Alan Agius
04274afc15
fix(@angular-devkit/build-angular): set public class fields as properties (#24849)
* fix(@angular-devkit/build-angular): set public class fields as properties

Configure Babel to use `setPublicClassFields: true`. As when shipping Angular packages without `"useDefineForClassFields": false` will increase the bundle size of an ng-new app
by ~2Kb when `useDefineForClassFields`  is not false. due to the additional `_defineProperty`, which will be added on every class property.

See: https://babeljs.io/docs/babel-plugin-proposal-class-properties

* fixup! fix(@angular-devkit/build-angular): set public class fields as properties

Co-authored-by: Charles <19598772+clydin@users.noreply.github.com>

---------

Co-authored-by: Charles <19598772+clydin@users.noreply.github.com>
2023-03-14 07:37:57 +00:00
Angular Robot
5b62fd1045 build: update all non-major dependencies 2023-03-14 07:37:27 +00:00
Charles Lyding
afc8704623 test(@angular-devkit/build-angular): add esbuild test for TS resolveJsonModule option
The experimental esbuild-based browser application builder now contains a test to ensure
that the TypeScript `resolveJsonModule` option works as expected.
2023-03-10 21:02:57 +00:00
Alan Agius
4d82e0d104 fix(@angular-devkit/build-angular): correct wrap ES2022 classes with static properties
Prior to this commit, we only wrapped classes with static properties that were marked with `/*@__PURE__*/` comment due to a bug in the `adjust-static-class-members` Babel plugin were we did not call the `Identifier` name text to the `canWrapProperty` function.
2023-03-10 14:41:23 +00:00
Angular Robot
56ab513273 build: update all non-major dependencies 2023-03-09 22:54:49 +00:00
Charles Lyding
f2cba37327 refactor(@angular-devkit/build-angular): move dev-server builder logic out of index file
The `index.ts` file for the `dev-server` builder was becoming quite large and it was not
obvious what was exported for external usage and what was exported to support testing.
This change also allows for future extension of the development server without bringing in
all of the Webpack-specific functionality.
2023-03-07 19:54:47 +00:00
Alan Agius
3978891a46 fix(@angular-devkit/build-angular): build optimizer support for non spec-compliant ES2022 class static properties
The build optimizer's static field pass will now additionally wrap classes that contain side effect free TypeScript ES2022 static class properties.

This is needed to update APF to ship ES2022, which have `useDefineForClassFields` set to `false`.
2023-03-07 15:35:05 +00:00
Angular Robot
31d35b4daf build: update all non-major dependencies 2023-03-07 14:16:21 +00:00
Kristiyan Kostadinov
f3070f2e93 build: update to TypeScript 5.0
Updates the repo to TypeScript 5.0.0-beta. The remaining usages in tests and schematics will be updated once the 5.0 final version is released.
2023-03-02 18:59:49 +00:00
Alan Agius
a99018cd7b refactor(@angular-devkit/build-angular): remove deprecated outputPaths and outputPath Builder output
Remove the deprecated `outputPath` and `outputPaths` from the server and browser builder.

BREAKING CHANGE:

Deprecated `outputPath` and `outputPaths` from the server and browser builder have been removed from the builder output. Use `outputs` instead.

Note: this change does not effect application developers.
2023-02-24 19:22:59 +00:00
Alan Agius
d4c450829d fix(@angular-devkit/build-angular): improve parsing of error messages
Webpack errors can sometimes be several hundred of thousands of characters long as it may contain the entire bundle. This can cause a ReDoS. This change improves the way we parse and remove stack traces from error messages.

Closes #24771
2023-02-24 19:13:16 +00:00
Angular Robot
34b3982ddf build: update all non-major dependencies 2023-02-23 11:49:53 +00:00
Alan Agius
759ae92aaa fix(@angular-devkit/build-angular): update peer dependencies to support version 16
This commit fixes the peer deps to support version 16.
2023-02-23 10:26:07 +00:00
Angular Robot
b564b9afb8 build: update all non-major dependencies 2023-02-22 13:06:18 +00:00
Charles Lyding
4c53c8f274 test(@angular-devkit/build-angular): additional unit tests for esbuild builder
The following unit tests have been ported over to test the experimental esbuild-based
browser application builder:
* `baseHref` option
* `crossOrigin` option
* TypeScript path mapping behavior
2023-02-21 10:02:52 +00:00
Angular Robot
54cc8d4e7d build: update all non-major dependencies 2023-02-21 10:01:33 +00:00
Angular Robot
15fdb2a20c build: update all non-major dependencies 2023-02-17 15:11:36 +00:00