From 216549a03d9db8a0f64be0a52ac249c6320ec66d Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 25 Mar 2025 14:21:20 +0000 Subject: [PATCH 1/4] build: update `rules_angular` The new version contains some changes to support `--traceResolution`, which is useful for debugging. --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index c595dd687202..ec5275bfaa45 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -240,7 +240,7 @@ setup_dependencies_2() git_repository( name = "rules_angular", - commit = "e10bf488aca18c159399f4c1163324a40f45a5dc", + commit = "bbf9493c73f4a2d715259e8febaa99c363ceaec3", remote = "https://github.com/devversion/rules_angular.git", ) From ece2c55a6dd435452a24c90dfc9d74f49a7260fb Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 25 Mar 2025 14:22:06 +0000 Subject: [PATCH 2/4] build: fix incorrect packaging of `theme-color` schematic The `rules_js` `npm_package` rule does not support nested NPM packages, so we should stop doing that and instead use an idiomatic filegroup. --- src/material/schematics/BUILD.bazel | 2 +- .../schematics/ng-generate/theme-color/BUILD.bazel | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/material/schematics/BUILD.bazel b/src/material/schematics/BUILD.bazel index 67c0ae0dce13..b3105d3e8df0 100644 --- a/src/material/schematics/BUILD.bazel +++ b/src/material/schematics/BUILD.bazel @@ -100,7 +100,7 @@ npm_package( ":ng_generate_assets", ":schema_assets", ":schematics_rjs", - "//src/material/schematics/ng-generate/theme-color:npm_package", + "//src/material/schematics/ng-generate/theme-color:npm_package_assets", "//src/material/schematics/ng-update:ng_update_index", ], ) diff --git a/src/material/schematics/ng-generate/theme-color/BUILD.bazel b/src/material/schematics/ng-generate/theme-color/BUILD.bazel index 44cbe279b21b..f1f39d59e761 100644 --- a/src/material/schematics/ng-generate/theme-color/BUILD.bazel +++ b/src/material/schematics/ng-generate/theme-color/BUILD.bazel @@ -1,5 +1,5 @@ load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin") -load("//tools:defaults.bzl", "esbuild", "pkg_npm") +load("//tools:defaults.bzl", "esbuild") load("//tools:defaults2.bzl", "jasmine_test", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -48,10 +48,9 @@ esbuild( ], ) -pkg_npm( - name = "npm_package", - srcs = STATIC_ASSETS, - deps = [":index_bundled"], +filegroup( + name = "npm_package_assets", + srcs = STATIC_ASSETS + [":index_bundled"], ) ######################################## From 195747fb6443821203b6961d3b9ab86df34a2f91 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 25 Mar 2025 14:58:48 +0000 Subject: [PATCH 3/4] build: migrate all `ng_e2e_test_library` targets to `ts_project` Migrates all `ng_e2e_test_library` targets to use `ts_project` directly. This is simpler and more obvious. --- src/cdk-experimental/scrolling/BUILD.bazel | 9 +++++++-- src/cdk/overlay/BUILD.bazel | 5 +++-- src/cdk/testing/tests/BUILD.bazel | 14 +++++++++----- src/material/slider/BUILD.bazel | 8 +++----- src/material/slider/slider.e2e.spec.ts | 3 +-- src/universal-app/BUILD.bazel | 6 ++++-- tools/defaults.bzl | 13 ------------- 7 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/cdk-experimental/scrolling/BUILD.bazel b/src/cdk-experimental/scrolling/BUILD.bazel index cbdd980c8f40..2be3930c1e93 100644 --- a/src/cdk-experimental/scrolling/BUILD.bazel +++ b/src/cdk-experimental/scrolling/BUILD.bazel @@ -1,5 +1,5 @@ load("//src/e2e-app:test_suite.bzl", "e2e_test_suite") -load("//tools:defaults.bzl", "ng_e2e_test_library", "ng_module", "ng_web_test_suite") +load("//tools:defaults.bzl", "ng_module", "ng_web_test_suite") load("//tools:defaults2.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -41,9 +41,14 @@ ng_web_test_suite( deps = [":unit_test_sources"], ) -ng_e2e_test_library( +ts_project( name = "e2e_test_sources", + testonly = True, srcs = glob(["**/*.e2e.spec.ts"]), + deps = [ + "//:node_modules/@types/selenium-webdriver", + "//:node_modules/protractor", + ], ) e2e_test_suite( diff --git a/src/cdk/overlay/BUILD.bazel b/src/cdk/overlay/BUILD.bazel index cd10b3a14b79..bc03d2ea99dd 100644 --- a/src/cdk/overlay/BUILD.bazel +++ b/src/cdk/overlay/BUILD.bazel @@ -2,7 +2,6 @@ load("//src/e2e-app:test_suite.bzl", "e2e_test_suite") load( "//tools:defaults.bzl", "markdown_to_html", - "ng_e2e_test_library", "ng_module", "ng_web_test_suite", "sass_binary", @@ -88,9 +87,11 @@ ng_web_test_suite( deps = [":unit_test_sources"], ) -ng_e2e_test_library( +ts_project( name = "e2e_test_sources", + testonly = True, srcs = glob(["**/*.e2e.spec.ts"]), + deps = ["//:node_modules/protractor"], ) e2e_test_suite( diff --git a/src/cdk/testing/tests/BUILD.bazel b/src/cdk/testing/tests/BUILD.bazel index 3e47ce4b6711..e1c41b2a7270 100644 --- a/src/cdk/testing/tests/BUILD.bazel +++ b/src/cdk/testing/tests/BUILD.bazel @@ -1,4 +1,4 @@ -load("//tools:defaults.bzl", "ng_e2e_test_library", "ng_module") +load("//tools:defaults.bzl", "ng_module") load("//tools:defaults2.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -70,21 +70,25 @@ ts_project( ], ) -ng_e2e_test_library( +ts_project( name = "e2e_test_sources", + testonly = True, srcs = glob( [ "**/*.e2e.spec.ts", ], exclude = ["webdriver.e2e.spec.ts"], ), - deps = [ - ":cross_environment_specs", - ":test_harnesses", + interop_deps = [ "//src/cdk/testing", "//src/cdk/testing/private", "//src/cdk/testing/protractor", ], + deps = [ + ":cross_environment_specs_rjs", + ":test_harnesses_rjs", + "//:node_modules/protractor", + ], ) ts_project( diff --git a/src/material/slider/BUILD.bazel b/src/material/slider/BUILD.bazel index ccbbe0ab4dd7..1b6794274234 100644 --- a/src/material/slider/BUILD.bazel +++ b/src/material/slider/BUILD.bazel @@ -3,7 +3,6 @@ load( "//tools:defaults.bzl", "extract_tokens", "markdown_to_html", - "ng_e2e_test_library", "ng_module", "ng_web_test_suite", "sass_binary", @@ -102,12 +101,11 @@ ng_web_test_suite( ], ) -ng_e2e_test_library( +ts_project( name = "e2e_test_sources", + testonly = True, srcs = glob(["**/*.e2e.spec.ts"]), - deps = [ - ":slider", - ], + deps = ["//:node_modules/protractor"], ) e2e_test_suite( diff --git a/src/material/slider/slider.e2e.spec.ts b/src/material/slider/slider.e2e.spec.ts index a1935579f4c1..f402c4645211 100644 --- a/src/material/slider/slider.e2e.spec.ts +++ b/src/material/slider/slider.e2e.spec.ts @@ -6,8 +6,7 @@ * found in the LICENSE file at https://angular.dev/license */ -import {$, browser, by, element, ElementFinder} from 'protractor'; -import {logging} from 'selenium-webdriver'; +import {$, browser, by, element, ElementFinder, logging} from 'protractor'; describe('MatSlider', () => { const getStandardSlider = () => element(by.id('standard-slider')); diff --git a/src/universal-app/BUILD.bazel b/src/universal-app/BUILD.bazel index d0f060e3eb4e..bbfa726ecc9f 100644 --- a/src/universal-app/BUILD.bazel +++ b/src/universal-app/BUILD.bazel @@ -5,7 +5,7 @@ load("//src/cdk-experimental:config.bzl", "CDK_EXPERIMENTAL_TARGETS") load("//src/components-examples:config.bzl", "ALL_EXAMPLES") load("//src/material:config.bzl", "MATERIAL_TARGETS") load("//src/material-experimental:config.bzl", "MATERIAL_EXPERIMENTAL_TARGETS") -load("//tools:defaults.bzl", "devmode_esbuild", "http_server", "ng_e2e_test_library", "ng_module", "protractor_web_test_suite", "sass_binary") +load("//tools:defaults.bzl", "devmode_esbuild", "http_server", "ng_module", "protractor_web_test_suite", "sass_binary") load("//tools/angular:index.bzl", "LINKER_PROCESSED_FW_PACKAGES") load("//tools:defaults2.bzl", "ts_project") load("@aspect_rules_ts//ts:defs.bzl", rules_js_tsconfig = "ts_config") @@ -159,9 +159,11 @@ http_server( ], ) -ng_e2e_test_library( +ts_project( name = "hydration_e2e_tests_sources", + testonly = True, srcs = ["hydration.e2e.spec.ts"], + deps = ["//:node_modules/protractor"], ) protractor_web_test_suite( diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 8ffd8018a657..1793c79dcc91 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -236,19 +236,6 @@ def jasmine_node_test(**kwargs): kwargs["templated_args"] = ["--bazel_patch_module_resolver"] + kwargs.get("templated_args", []) _jasmine_node_test(**kwargs) -def ng_e2e_test_library(deps = [], **kwargs): - local_deps = [ - "@npm//@types/jasmine", - "@npm//@types/selenium-webdriver", - "@npm//protractor", - ] + deps - - ts_library( - testonly = True, - deps = local_deps, - **kwargs - ) - def karma_web_test_suite(name, **kwargs): test_deps = kwargs.get("deps", []) From 31a8d378267060b565b01a83ed6ed67aa170f683 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 25 Mar 2025 15:00:58 +0000 Subject: [PATCH 4/4] build: remove `ts_library` from `defaults.bzl` This rule is no longer needed, so we can remove it from our macros. Also removes patches for it. --- WORKSPACE | 1 - tools/defaults.bzl | 44 ------------------- tools/defaults2.bzl | 4 ++ .../patches/@bazel+concatjs+5.8.1.patch | 13 ------ 4 files changed, 4 insertions(+), 58 deletions(-) delete mode 100644 tools/postinstall/patches/@bazel+concatjs+5.8.1.patch diff --git a/WORKSPACE b/WORKSPACE index ec5275bfaa45..672880e383ad 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -114,7 +114,6 @@ yarn_install( "//:tools/postinstall/apply-patches.js", "//:tools/postinstall/patches/@angular+bazel+20.0.0-next.1.patch", "//:tools/postinstall/patches/@angular+build-tooling+0.0.0-1ebf18a3a60b182a3dbad12e9a149fd93af5c29b.patch", - "//:tools/postinstall/patches/@bazel+concatjs+5.8.1.patch", "//:tools/postinstall/patches/tsec+0.2.2.patch", "//src/cdk:package.json", ], diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 1793c79dcc91..85723742eda6 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -12,7 +12,6 @@ load("@npm//@angular/build-tooling/bazel/http-server:index.bzl", _http_server = load("@npm//@angular/build-tooling/bazel:extract_js_module_output.bzl", "extract_js_module_output") load("@npm//@bazel/jasmine:index.bzl", _jasmine_node_test = "jasmine_node_test") load("@npm//@bazel/protractor:index.bzl", _protractor_web_test_suite = "protractor_web_test_suite") -load("@npm//@bazel/concatjs:index.bzl", _ts_library = "ts_library") load("@npm//tsec:index.bzl", _tsec_test = "tsec_test") load("//:packages.bzl", "NO_STAMP_NPM_PACKAGE_SUBSTITUTIONS", "NPM_PACKAGE_SUBSTITUTIONS") load("//:pkg-externals.bzl", "PKG_EXTERNALS") @@ -68,49 +67,6 @@ def sass_library(**kwargs): def npm_sass_library(**kwargs): _npm_sass_library(**kwargs) -def ts_library( - tsconfig = None, - deps = [], - testonly = False, - # TODO(devversion): disallow configuration of the target when schematics use ESM. - devmode_target = None, - prodmode_target = None, - devmode_module = None, - **kwargs): - # Add tslib because we use import helpers for all public packages. - local_deps = ["@npm//tslib"] + deps - - if not tsconfig: - tsconfig = _getDefaultTsConfig(testonly) - - # Compute an AMD module name for the target. - module_name = compute_module_name(testonly) - - _ts_library( - # `module_name` is used for AMD module names within emitted JavaScript files. - module_name = module_name, - # We use the module name as package name, so that the target can be resolved within - # NodeJS executions, by activating the Bazel NodeJS linker. - # See: https://github.com/bazelbuild/rules_nodejs/pull/2799. - package_name = module_name, - # For prodmode, the target is set to `ES2022`. `@bazel/typecript` sets `ES2015` by default. Note - # that this should be in sync with the `ng_module` tsconfig generation to emit proper APF v13. - # https://github.com/bazelbuild/rules_nodejs/blob/901df3868e3ceda177d3ed181205e8456a5592ea/third_party/github.com/bazelbuild/rules_typescript/internal/common/tsconfig.bzl#L195 - prodmode_target = prodmode_target if prodmode_target != None else "es2022", - # We also set devmode output to the same settings as prodmode as a first step in combining - # devmode and prodmode output. We will not rely on AMD output anyway due to the linker processing. - devmode_target = devmode_target if devmode_target != None else "es2022", - devmode_module = devmode_module if devmode_module != None else "esnext", - tsconfig = tsconfig, - testonly = testonly, - deps = local_deps, - **kwargs - ) - - # TODO(devversion): Partner with ISE team to support `rules_js` here. - if False and module_name and not testonly: - _make_tsec_test(kwargs["name"]) - def ng_module( deps = [], srcs = [], diff --git a/tools/defaults2.bzl b/tools/defaults2.bzl index c500b4240d3e..e1ab12c8292b 100644 --- a/tools/defaults2.bzl +++ b/tools/defaults2.bzl @@ -19,6 +19,10 @@ def ts_project( **kwargs ) + # TODO(devversion): Partner with ISE team to support `rules_js` here. + # if False and not testonly: + # _make_tsec_test(kwargs["name"]) + def jasmine_test(data = [], args = [], **kwargs): # Create relative path to root, from current package dir. Necessary as # we change the `chdir` below to the package directory. diff --git a/tools/postinstall/patches/@bazel+concatjs+5.8.1.patch b/tools/postinstall/patches/@bazel+concatjs+5.8.1.patch deleted file mode 100644 index e05b9ed38bf5..000000000000 --- a/tools/postinstall/patches/@bazel+concatjs+5.8.1.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/@bazel/concatjs/internal/build_defs.bzl b/node_modules/@bazel/concatjs/internal/build_defs.bzl -index 9e5cda6..851c8b7 100755 ---- a/node_modules/@bazel/concatjs/internal/build_defs.bzl -+++ b/node_modules/@bazel/concatjs/internal/build_defs.bzl -@@ -76,7 +76,7 @@ _TYPESCRIPT_TYPINGS = Label( - "//typescript:typescript__typings", - ) - --_TYPESCRIPT_SCRIPT_TARGETS = ["es3", "es5", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "esnext"] -+_TYPESCRIPT_SCRIPT_TARGETS = ["es3", "es5", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020", "es2022", "esnext"] - _TYPESCRIPT_MODULE_KINDS = ["none", "commonjs", "amd", "umd", "system", "es2015", "esnext"] - - _DEVMODE_TARGET_DEFAULT = "es2015"