From 22381bfd2dd88dfdea99bfab2d4d0d4577db9bec Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Fri, 23 May 2025 17:27:09 +0000 Subject: [PATCH] build: update tools directory to use rules_js for building (#61656) Use ts_project for building the tools directory targets PR Close #61656 --- tools/defaults2.bzl | 3 ++ tools/saucelabs-daemon/BUILD.bazel | 4 +- .../background-service/BUILD.bazel | 19 ++++---- .../background-service/saucelabs-daemon.ts | 1 - tools/saucelabs-daemon/launcher/BUILD.bazel | 7 +-- tools/testing/BUILD.bazel | 43 ++++++++++--------- ...r_tests.init.ts => browser_tests.init.mts} | 2 +- ...nit.ts => browser_zoneless_tests.init.mts} | 0 tools/testing/{fail.spec.js => fail.spec.mjs} | 0 ...init.ts => node_no_angular_tests.init.mts} | 0 ...node_tests.init.ts => node_tests.init.mts} | 9 ++-- ...s.init.ts => node_zoneless_tests.init.mts} | 7 +-- ...zone_base_setup.ts => zone_base_setup.mts} | 2 + tools/tsconfig.json | 11 +++-- 14 files changed, 58 insertions(+), 50 deletions(-) rename tools/testing/{browser_tests.init.ts => browser_tests.init.mts} (95%) rename tools/testing/{browser_zoneless_tests.init.ts => browser_zoneless_tests.init.mts} (100%) rename tools/testing/{fail.spec.js => fail.spec.mjs} (100%) rename tools/testing/{node_no_angular_tests.init.ts => node_no_angular_tests.init.mts} (100%) rename tools/testing/{node_tests.init.ts => node_tests.init.mts} (78%) rename tools/testing/{node_zoneless_tests.init.ts => node_zoneless_tests.init.mts} (83%) rename tools/testing/{zone_base_setup.ts => zone_base_setup.mts} (96%) diff --git a/tools/defaults2.bzl b/tools/defaults2.bzl index 40b690eab66..4fb2d03c0a6 100644 --- a/tools/defaults2.bzl +++ b/tools/defaults2.bzl @@ -34,6 +34,9 @@ def _determine_tsconfig(testonly): if native.package_name().startswith("packages"): return "//packages:tsconfig_test" if testonly else "//packages:tsconfig_build" + if native.package_name().startswith("tools"): + return "//tools:tsconfig_test" if testonly else "//tools:tsconfig_build" + fail("Failing... a tsconfig value must be provided.") def ts_project( diff --git a/tools/saucelabs-daemon/BUILD.bazel b/tools/saucelabs-daemon/BUILD.bazel index 1e8817ca543..340b77d2b14 100644 --- a/tools/saucelabs-daemon/BUILD.bazel +++ b/tools/saucelabs-daemon/BUILD.bazel @@ -1,8 +1,8 @@ -load("//tools:defaults.bzl", "ts_library") +load("//tools:defaults2.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "saucelabs-daemon", srcs = [ "browser.ts", diff --git a/tools/saucelabs-daemon/background-service/BUILD.bazel b/tools/saucelabs-daemon/background-service/BUILD.bazel index c877cbc36c1..ef518937abd 100644 --- a/tools/saucelabs-daemon/background-service/BUILD.bazel +++ b/tools/saucelabs-daemon/background-service/BUILD.bazel @@ -1,17 +1,20 @@ -load("//tools:defaults.bzl", "nodejs_binary", "ts_library") +load("//tools:defaults.bzl", "nodejs_binary") +load("//tools:defaults2.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "background-service_lib", srcs = glob(["*.ts"]), - deps = [ + interop_deps = [ "//:browser-providers", "//tools/saucelabs-daemon", - "@npm//@types/node", - "@npm//@types/selenium-webdriver4", - "@npm//chalk", - "@npm//selenium-webdriver4", + ], + deps = [ + "//:node_modules/@types/node", + "//:node_modules/@types/selenium-webdriver4", + "//:node_modules/chalk", + "//:node_modules/selenium-webdriver4", ], ) @@ -21,7 +24,7 @@ nodejs_binary( ":background-service_lib", "//:sauce_connect", ], - entry_point = ":cli.ts", + entry_point = ":cli.js", templated_args = [ "$(rootpath //:sauce_connect)", ], diff --git a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts index 06172fa83fe..199d8e4dbce 100644 --- a/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts +++ b/tools/saucelabs-daemon/background-service/saucelabs-daemon.ts @@ -11,7 +11,6 @@ import {Builder, WebDriver} from 'selenium-webdriver4'; import {Browser, getUniqueId} from '../browser'; -import {IpcServer} from './ipc'; import {openSauceConnectTunnel} from './sauce-connect-tunnel'; const defaultCapabilities = { diff --git a/tools/saucelabs-daemon/launcher/BUILD.bazel b/tools/saucelabs-daemon/launcher/BUILD.bazel index f18389f049b..c7abfc45c97 100644 --- a/tools/saucelabs-daemon/launcher/BUILD.bazel +++ b/tools/saucelabs-daemon/launcher/BUILD.bazel @@ -1,14 +1,15 @@ -load("//tools:defaults.bzl", "esbuild", "ts_library") +load("//tools:defaults.bzl", "esbuild") +load("//tools:defaults2.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "launcher", srcs = [ "index.ts", "launcher.ts", ], - deps = [ + interop_deps = [ "//tools/saucelabs-daemon", "@npm//@types/node", ], diff --git a/tools/testing/BUILD.bazel b/tools/testing/BUILD.bazel index 8f529beaf46..7316d7bb74e 100644 --- a/tools/testing/BUILD.bazel +++ b/tools/testing/BUILD.bazel @@ -1,22 +1,23 @@ -load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") +load("//tools:defaults.bzl", "jasmine_node_test") +load("//tools:defaults2.bzl", "ts_project") package(default_visibility = ["//visibility:public"]) -ts_library( +ts_project( name = "zone_base_setup_lib", testonly = 1, - srcs = ["zone_base_setup.ts"], - deps = [ + srcs = ["zone_base_setup.mts"], + interop_deps = [ "//packages/zone.js/lib", "@npm//reflect-metadata", ], ) -ts_library( +ts_project( name = "browser", testonly = 1, - srcs = ["browser_tests.init.ts"], - deps = [ + srcs = ["browser_tests.init.mts"], + interop_deps = [ ":zone_base_setup_lib", "//packages/compiler", "//packages/core/testing", @@ -26,11 +27,11 @@ ts_library( ], ) -ts_library( +ts_project( name = "browser_zoneless", testonly = 1, - srcs = ["browser_zoneless_tests.init.ts"], - deps = [ + srcs = ["browser_zoneless_tests.init.mts"], + interop_deps = [ "//packages/compiler", "//packages/core", "//packages/core/testing", @@ -40,11 +41,11 @@ ts_library( ], ) -ts_library( +ts_project( name = "node_zoneless", testonly = 1, - srcs = ["node_zoneless_tests.init.ts"], - deps = [ + srcs = ["node_zoneless_tests.init.mts"], + interop_deps = [ "//packages/compiler", "//packages/core", "//packages/core/testing", @@ -55,11 +56,11 @@ ts_library( ], ) -ts_library( +ts_project( name = "node", testonly = 1, - srcs = ["node_tests.init.ts"], - deps = [ + srcs = ["node_tests.init.mts"], + interop_deps = [ ":zone_base_setup_lib", "//packages/compiler", "//packages/core/testing", @@ -71,11 +72,11 @@ ts_library( ], ) -ts_library( +ts_project( name = "node_no_angular", testonly = 1, - srcs = ["node_no_angular_tests.init.ts"], - deps = [ + srcs = ["node_no_angular_tests.init.mts"], + interop_deps = [ "//packages:types", ], ) @@ -87,7 +88,7 @@ ts_library( # of a potential regression. jasmine_node_test( name = "fail_test", - srcs = ["fail.spec.js"], + srcs = ["fail.spec.mjs"], # While we force the termination of the process with an exitCode of 55 in fail.spec.js. Jasmine force it to 4. # see: https://github.com/jasmine/jasmine-npm/blob/eea8b26efe29176ecbb26ce3f1c4990f8bede685/lib/jasmine.js#L213 expected_exit_code = 4, @@ -101,7 +102,7 @@ jasmine_node_test( # of a potential regression. jasmine_node_test( name = "fail_bootstrap_test", - srcs = ["fail.spec.js"], + srcs = ["fail.spec.mjs"], bootstrap = ["//tools/testing:node"], data = ["//packages:package_json"], # While we force the termination of the process with an exitCode of 55 in fail.spec.js. Jasmine force it to 4. diff --git a/tools/testing/browser_tests.init.ts b/tools/testing/browser_tests.init.mts similarity index 95% rename from tools/testing/browser_tests.init.ts rename to tools/testing/browser_tests.init.mts index 74c877737f3..fa8b78577c8 100644 --- a/tools/testing/browser_tests.init.ts +++ b/tools/testing/browser_tests.init.mts @@ -7,7 +7,7 @@ */ import 'zone.js/lib/browser/rollup-main'; -import './zone_base_setup'; +import './zone_base_setup.mjs'; import '@angular/compiler'; // For JIT mode. Must be in front of any other @angular/* imports. import {TestBed} from '@angular/core/testing'; diff --git a/tools/testing/browser_zoneless_tests.init.ts b/tools/testing/browser_zoneless_tests.init.mts similarity index 100% rename from tools/testing/browser_zoneless_tests.init.ts rename to tools/testing/browser_zoneless_tests.init.mts diff --git a/tools/testing/fail.spec.js b/tools/testing/fail.spec.mjs similarity index 100% rename from tools/testing/fail.spec.js rename to tools/testing/fail.spec.mjs diff --git a/tools/testing/node_no_angular_tests.init.ts b/tools/testing/node_no_angular_tests.init.mts similarity index 100% rename from tools/testing/node_no_angular_tests.init.ts rename to tools/testing/node_no_angular_tests.init.mts diff --git a/tools/testing/node_tests.init.ts b/tools/testing/node_tests.init.mts similarity index 78% rename from tools/testing/node_tests.init.ts rename to tools/testing/node_tests.init.mts index 20059677c8e..dc0913ca09c 100644 --- a/tools/testing/node_tests.init.ts +++ b/tools/testing/node_tests.init.mts @@ -9,7 +9,7 @@ import 'reflect-metadata'; import 'zone.js/lib/node/rollup-main'; -import './zone_base_setup'; +import './zone_base_setup.mjs'; (global as any).isNode = true; (global as any).isBrowser = false; @@ -17,11 +17,8 @@ import './zone_base_setup'; import '@angular/compiler'; // For JIT mode. Must be in front of any other @angular/* imports. // Init TestBed import {TestBed} from '@angular/core/testing'; -import { - ServerTestingModule, - platformServerTesting, -} from '@angular/platform-server/testing/src/server'; -import {DominoAdapter} from '@angular/platform-server/src/domino_adapter'; +import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing'; +import {ɵDominoAdapter as DominoAdapter} from '@angular/platform-server'; import domino from '../../packages/platform-server/src/bundled-domino'; TestBed.initTestEnvironment(ServerTestingModule, platformServerTesting()); diff --git a/tools/testing/node_zoneless_tests.init.ts b/tools/testing/node_zoneless_tests.init.mts similarity index 83% rename from tools/testing/node_zoneless_tests.init.ts rename to tools/testing/node_zoneless_tests.init.mts index b0fd08c04b6..074f23910f2 100644 --- a/tools/testing/node_zoneless_tests.init.ts +++ b/tools/testing/node_zoneless_tests.init.mts @@ -14,11 +14,8 @@ import '@angular/compiler'; // For JIT mode. Must be in front of any other @angu // Init TestBed import {TestBed} from '@angular/core/testing'; import {NgModule, provideZonelessChangeDetection} from '@angular/core'; -import { - ServerTestingModule, - platformServerTesting, -} from '@angular/platform-server/testing/src/server'; -import {DominoAdapter} from '@angular/platform-server/src/domino_adapter'; +import {ServerTestingModule, platformServerTesting} from '@angular/platform-server/testing'; +import {ɵDominoAdapter as DominoAdapter} from '@angular/platform-server'; import domino from '../../packages/platform-server/src/bundled-domino'; @NgModule({ diff --git a/tools/testing/zone_base_setup.ts b/tools/testing/zone_base_setup.mts similarity index 96% rename from tools/testing/zone_base_setup.ts rename to tools/testing/zone_base_setup.mts index 7899b559d2d..b1ee6ed4936 100644 --- a/tools/testing/zone_base_setup.ts +++ b/tools/testing/zone_base_setup.mts @@ -8,6 +8,8 @@ import 'reflect-metadata'; +import {} from 'zone.js'; + import {patchLongStackTrace} from 'zone.js/lib/zone-spec/long-stack-trace'; import {patchTaskTracking} from 'zone.js/lib/zone-spec/task-tracking'; import {patchProxyZoneSpec} from 'zone.js/lib/zone-spec/proxy'; diff --git a/tools/tsconfig.json b/tools/tsconfig.json index 875ddffe9a7..819870461a4 100644 --- a/tools/tsconfig.json +++ b/tools/tsconfig.json @@ -5,8 +5,13 @@ "declaration": true, "esModuleInterop": true, "sourceMap": true, - "module": "NodeNext", - "moduleResolution": "nodenext", - "types": ["node"] + "module": "esnext", + "moduleResolution": "node", + "types": ["node"], + "paths": { + "zone.js": ["../packages/zone.js/lib/zone"], + "zone.js/*": ["../packages/zone.js/*"], + "@angular/*": ["../packages/*/index"], + } } }