Upgrade rules_js and friends to latest

Another step in the bazel 7 migration.

Change-Id: Ia045838d69ee90ce05e6dcb18051b577bbf1daba
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
Signed-off-by: Philipp Schrader <philipp.schrader@gmail.com>
diff --git a/.bazelrc b/.bazelrc
index 9ff6c55..6359ba3 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -101,6 +101,19 @@
 build --strategy=CopyFile=standalone
 build --strategy=CopyDirectory=standalone
 
+# Honor the setting of `skipLibCheck` in the tsconfig.json file.
+# https://www.typescriptlang.org/tsconfig#skipLibCheck
+build --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
+fetch --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
+query --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig
+
+# Use "tsc" as the transpiler when ts_project has no `transpiler` set.
+# For now this is an acceptable default, but it would be nice to switch to swc in the future.
+# https://docs.aspect.build/rulesets/aspect_rules_ts/docs/transpiler/
+build --@aspect_rules_ts//ts:default_to_tsc_transpiler
+fetch --@aspect_rules_ts//ts:default_to_tsc_transpiler
+query --@aspect_rules_ts//ts:default_to_tsc_transpiler
+
 # Use our hermetic JDK.
 # Note that this doesn't quite work fully, but it should. See
 # https://github.com/bazelbuild/bazel/issues/6341 for ongoing discussion with
diff --git a/WORKSPACE b/WORKSPACE
index 40f7cc3..94ea767 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -31,15 +31,17 @@
 
 http_archive(
     name = "aspect_bazel_lib",
-    sha256 = "80897b673c2b506d21f861ae316689aa8abcc3e56947580a41bf9e68ff13af58",
-    strip_prefix = "bazel-lib-1.27.1",
-    url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.27.1/bazel-lib-v1.27.1.tar.gz",
+    sha256 = "979667bb7276ee8fcf2c114c9be9932b9a3052a64a647e0dcaacfb9c0016f0a3",
+    strip_prefix = "bazel-lib-2.4.1",
+    url = "https://github.com/aspect-build/bazel-lib/releases/download/v2.4.1/bazel-lib-v2.4.1.tar.gz",
 )
 
-load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies", "register_jq_toolchains")
+load("@aspect_bazel_lib//lib:repositories.bzl", "aspect_bazel_lib_dependencies", "aspect_bazel_lib_register_toolchains", "register_jq_toolchains")
 
 aspect_bazel_lib_dependencies()
 
+aspect_bazel_lib_register_toolchains()
+
 register_jq_toolchains()
 
 http_archive(
@@ -870,25 +872,28 @@
 
 http_archive(
     name = "aspect_rules_js",
-    sha256 = "9fadde0ae6e0101755b8aedabf7d80b166491a8de297c60f6a5179cd0d0fea58",
-    strip_prefix = "rules_js-1.20.0",
-    url = "https://github.com/aspect-build/rules_js/releases/download/v1.20.0/rules_js-v1.20.0.tar.gz",
+    sha256 = "630a71aba66c4023a5b16ab3efafaeed8b1a2865ccd168a34611eb73876b3fc4",
+    strip_prefix = "rules_js-1.37.1",
+    url = "https://github.com/aspect-build/rules_js/releases/download/v1.37.1/rules_js-v1.37.1.tar.gz",
 )
 
-load("@aspect_rules_js//npm:npm_import.bzl", "npm_translate_lock", "pnpm_repository")
-
-pnpm_repository(name = "pnpm")
-
 load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies")
 
 rules_js_dependencies()
 
+load("@bazel_features//:deps.bzl", "bazel_features_deps")
+
+bazel_features_deps()
+
+load("@aspect_rules_js//npm:npm_import.bzl", "npm_translate_lock", "pnpm_repository")
+
+pnpm_repository(name = "pnpm")
+
 http_archive(
     name = "aspect_rules_esbuild",
-    sha256 = "b98cde83e9e6a006d8300e88e2f09da56b5a6c18166465a224cfe36bdcbc03e0",
-    strip_prefix = "aspect-build-rules_esbuild-110b94c",
-    type = "tar.gz",
-    url = "https://github.com/aspect-build/rules_esbuild/tarball/110b94c7f16f328a0eab8aa0b862030055b86564",
+    sha256 = "999349afef62875301f45ec8515189ceaf2e85b1e67a17e2d28b95b30e1d6c0b",
+    strip_prefix = "rules_esbuild-0.18.0",
+    url = "https://github.com/aspect-build/rules_esbuild/releases/download/v0.18.0/rules_esbuild-v0.18.0.tar.gz",
 )
 
 load("@aspect_rules_esbuild//esbuild:dependencies.bzl", "rules_esbuild_dependencies")
@@ -933,7 +938,7 @@
     verify_node_modules_ignored = "//:.bazelignore",
 )
 
-load("@aspect_rules_esbuild//esbuild:repositories.bzl", "esbuild_register_toolchains", LATEST_ESBUILD_VERSION = "LATEST_VERSION")
+load("@aspect_rules_esbuild//esbuild:repositories.bzl", "LATEST_ESBUILD_VERSION", "esbuild_register_toolchains")
 
 esbuild_register_toolchains(
     name = "esbuild",
@@ -948,65 +953,34 @@
     patches = [
         "//third_party:rules_rollup/0001-Fix-resolving-files.patch",
     ],
-    sha256 = "4c43d20ce377b93cd43a3553e6159a17b85ce80c36a564b55051c2320d32b777",
-    strip_prefix = "rules_rollup-0.13.1",
-    url = "https://github.com/aspect-build/rules_rollup/releases/download/v0.13.1/rules_rollup-v0.13.1.tar.gz",
+    sha256 = "a0433a0b0206a45d362749d71bc1e4e0dacf5ca2a572b059328f9753392bca80",
+    strip_prefix = "rules_rollup-1.0.0",
+    url = "https://github.com/aspect-build/rules_rollup/releases/download/v1.0.0/rules_rollup-v1.0.0.tar.gz",
 )
 
-load("@aspect_rules_rollup//rollup:dependencies.bzl", "rules_rollup_dependencies")
-
-# Fetches the rules_rollup dependencies.
-# If you want to have a different version of some dependency,
-# you should fetch it *before* calling this.
-# Alternatively, you can skip calling this function, so long as you've
-# already fetched all the dependencies.
-rules_rollup_dependencies()
-
-load("@aspect_rules_rollup//rollup:repositories.bzl", "rollup_repositories")
-
-rollup_repositories(name = "rollup")
-
-load("@rollup//:npm_repositories.bzl", rollup_npm_repositories = "npm_repositories")
-
-rollup_npm_repositories()
-
 http_archive(
     name = "aspect_rules_terser",
-    sha256 = "918e7ac036eca1402cae4d4ddba75ecdcdd886ac35bc0624d9f1ebc7527e369b",
-    strip_prefix = "rules_terser-0.13.0",
-    url = "https://github.com/aspect-build/rules_terser/archive/refs/tags/v0.13.0.tar.gz",
+    sha256 = "8424b4c064d0e490e5b6f215b993712ef641b77e03b68fdc64221edf48d14add",
+    strip_prefix = "rules_terser-1.0.0",
+    url = "https://github.com/aspect-build/rules_terser/releases/download/v1.0.0/rules_terser-v1.0.0.tar.gz",
 )
 
 load("@aspect_rules_terser//terser:dependencies.bzl", "rules_terser_dependencies")
 
 rules_terser_dependencies()
 
-# Fetch and register a nodejs interpreter, if you haven't already
-
-nodejs_register_toolchains(
-    name = "node",
-    node_version = DEFAULT_NODE_VERSION,
-)
-
-# Fetch and register the terser tool
-load("@aspect_rules_terser//terser:repositories.bzl", "terser_repositories")
-
-terser_repositories(name = "terser")
-
-load("@terser//:npm_repositories.bzl", terser_npm_repositories = "npm_repositories")
-
-terser_npm_repositories()
-
 http_archive(
     name = "aspect_rules_ts",
-    sha256 = "db77d904284d21121ae63dbaaadfd8c75ff6d21ad229f92038b415c1ad5019cc",
-    strip_prefix = "rules_ts-1.3.0",
-    url = "https://github.com/aspect-build/rules_ts/releases/download/v1.3.0/rules_ts-v1.3.0.tar.gz",
+    sha256 = "6ad28b5bac2bb5a74e737925fbc3f62ce1edabe5a48d61a9980c491ef4cedfb7",
+    strip_prefix = "rules_ts-2.1.1",
+    url = "https://github.com/aspect-build/rules_ts/releases/download/v2.1.1/rules_ts-v2.1.1.tar.gz",
 )
 
 load("@aspect_rules_ts//ts:repositories.bzl", "rules_ts_dependencies")
 
-rules_ts_dependencies(ts_version_from = "//:package.json")
+rules_ts_dependencies(
+    ts_version_from = "//:package.json",
+)
 
 load("@npm//:repositories.bzl", "npm_repositories")
 
@@ -1014,11 +988,10 @@
 
 http_archive(
     name = "aspect_rules_cypress",
-    sha256 = "06d70a2960108607d2e70f9bc6863af6b82317fdfcf7a5a30fd226a5abc46782",
-    strip_prefix = "aspect-build-rules_cypress-3db1b74",
-    type = "tar.gz",
+    sha256 = "76947778d8e855eee3c15931e1fcdc1c2a25d56d6c0edd110b2227c05b794d08",
+    strip_prefix = "rules_cypress-0.3.2",
     urls = [
-        "https://github.com/aspect-build/rules_cypress/tarball/3db1b74818ac4ce1b9d489a6e0065b36c1076761",
+        "https://github.com/aspect-build/rules_cypress/archive/refs/tags/v0.3.2.tar.gz",
     ],
 )
 
diff --git a/scouting/www/entry/entry.component.ts b/scouting/www/entry/entry.component.ts
index b3e1e92..4286dca 100644
--- a/scouting/www/entry/entry.component.ts
+++ b/scouting/www/entry/entry.component.ts
@@ -25,7 +25,7 @@
   Action,
 } from '../../webserver/requests/messages/submit_2024_actions_generated';
 import {Match} from '../../webserver/requests/messages/request_all_matches_response_generated';
-import {MatchListRequestor} from '@org_frc971/scouting/www/rpc';
+import {MatchListRequestor} from '../rpc';
 
 type Section =
   | 'Team Selection'
diff --git a/scouting/www/match_list/match_list.component.ts b/scouting/www/match_list/match_list.component.ts
index 0deeb11..8fafdce 100644
--- a/scouting/www/match_list/match_list.component.ts
+++ b/scouting/www/match_list/match_list.component.ts
@@ -7,7 +7,7 @@
   RequestAllMatchesResponse,
 } from '../../webserver/requests/messages/request_all_matches_response_generated';
 
-import {MatchListRequestor} from '@org_frc971/scouting/www/rpc';
+import {MatchListRequestor} from '../rpc';
 
 type TeamInMatch = {
   teamNumber: string;
diff --git a/third_party/flatbuffers/typescript.bzl b/third_party/flatbuffers/typescript.bzl
index f00c550..ccfd2d6 100644
--- a/third_party/flatbuffers/typescript.bzl
+++ b/third_party/flatbuffers/typescript.bzl
@@ -93,7 +93,7 @@
         compatible_with = compatible_with,
         restricted_to = restricted_to,
         target_compatible_with = target_compatible_with,
-        supports_workers = False,
+        supports_workers = 0,
         tsconfig = {
             "compilerOptions": {
                 "declaration": True,
diff --git a/third_party/rules_rollup/0001-Fix-resolving-files.patch b/third_party/rules_rollup/0001-Fix-resolving-files.patch
index a81a656..a57c4bc 100644
--- a/third_party/rules_rollup/0001-Fix-resolving-files.patch
+++ b/third_party/rules_rollup/0001-Fix-resolving-files.patch
@@ -1,19 +1,19 @@
-From fd6dd080ea58fd71c70ce2303873feab1abda760 Mon Sep 17 00:00:00 2001
+From 5c0b6653d0fa500b5ad3a65f8e58c97517f2d6bd Mon Sep 17 00:00:00 2001
 From: Philipp Schrader <philipp.schrader@gmail.com>
-Date: Sun, 19 Feb 2023 14:18:11 -0800
+Date: Wed, 21 Feb 2024 17:26:27 -0800
 Subject: [PATCH] Fix resolving files
 
 I don't really know what the underlying problem is, but returning a
 File instead of a path is causing us grief.
 ---
- rollup/private/rollup_bundle.bzl | 2 +-
+ rollup/private/rollup.bzl | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/rollup/private/rollup_bundle.bzl b/rollup/private/rollup_bundle.bzl
-index 32aaad4..a2061dd 100644
---- a/rollup/private/rollup_bundle.bzl
-+++ b/rollup/private/rollup_bundle.bzl
-@@ -186,7 +186,7 @@ def _resolve_js_input(f, inputs):
+diff --git a/rollup/private/rollup.bzl b/rollup/private/rollup.bzl
+index c1634cf..8cd5407 100644
+--- a/rollup/private/rollup.bzl
++++ b/rollup/private/rollup.bzl
+@@ -96,7 +96,7 @@ def _resolve_js_input(f, inputs):
      for i in inputs:
          if i.extension == "js" or i.extension == "mjs":
              if _no_ext(i) == no_ext:
diff --git a/tools/build_rules/js.bzl b/tools/build_rules/js.bzl
index 4b11ea7..51fe987 100644
--- a/tools/build_rules/js.bzl
+++ b/tools/build_rules/js.bzl
@@ -8,8 +8,8 @@
 load("@npm//:html-insert-assets/package_json.bzl", html_insert_assets_bin = "bin")
 load("//tools/build_rules/js:ng.bzl", "ng_esbuild", "ng_project")
 load("//tools/build_rules/js:ts.bzl", _ts_project = "ts_project")
-load("@aspect_rules_rollup//rollup:defs.bzl", upstream_rollup_bundle = "rollup_bundle")
-load("@aspect_rules_terser//terser:defs.bzl", "terser_minified")
+load("@aspect_rules_rollup//rollup:defs.bzl", upstream_rollup_bundle = "rollup")
+load("@aspect_rules_terser//terser:defs.bzl", terser_minified = "terser")
 load("@aspect_rules_cypress//cypress:defs.bzl", "cypress_module_test")
 
 ts_project = _ts_project
@@ -283,7 +283,7 @@
         **kwargs
     )
 
-def rollup_bundle(name, entry_point, deps = [], visibility = None, **kwargs):
+def rollup_bundle(name, entry_point, node_modules = "//:node_modules", deps = [], visibility = None, **kwargs):
     """Calls the upstream rollup_bundle() and exposes a .min.js file.
 
     Legacy version of rollup_bundle() used to provide the .min.js file. This
@@ -301,6 +301,7 @@
         deps = deps + [
             "//:node_modules/@rollup/plugin-node-resolve",
         ],
+        node_modules = node_modules,
         sourcemap = "false",
         config_file = ":%s__rollup_config.js" % name,
         entry_point = entry_point,
@@ -310,6 +311,7 @@
     terser_minified(
         name = name + "__min",
         srcs = [name + ".js"],
+        node_modules = node_modules,
         tags = [
             "no-remote-cache",
         ],
@@ -354,7 +356,7 @@
     },
 )
 
-def cypress_test(runner, data = None, **kwargs):
+def cypress_test(name, runner, data = None, **kwargs):
     """Runs a cypress test with the specified runner.
 
     Args:
@@ -373,16 +375,24 @@
     # Chrome is located at the runfiles root. So we need to go up one more
     # directory than the workspace root.
     chrome_location = "../" * (package_depth + 1) + "chrome_linux/chrome"
-    config_location = "../" * package_depth + "tools/build_rules/js/cypress.config.js"
+
+    copy_file(
+        name = name + "_config",
+        out = "cypress.config.js",
+        src = "//tools/build_rules/js:cypress.config.js",
+        visibility = ["//visibility:private"],
+    )
 
     data = data or []
-    data.append("//tools/build_rules/js:cypress.config.js")
+    data.append(":%s_config" % name)
     data.append("@xvfb_amd64//:wrapped_bin/Xvfb")
+    data.append("//:node_modules")
 
     cypress_module_test(
+        name = name,
         args = [
             "run",
-            "--config-file=" + config_location,
+            "--config-file=cypress.config.js",
             "--browser=" + chrome_location,
         ],
         browsers = ["@chrome_linux//:all"],
diff --git a/tools/build_rules/js/cypress.config.js b/tools/build_rules/js/cypress.config.js
index c8d6988..e991016 100644
--- a/tools/build_rules/js/cypress.config.js
+++ b/tools/build_rules/js/cypress.config.js
@@ -1,6 +1,6 @@
-const {defineConfig} = require('cypress');
+import {defineConfig} from 'cypress';
 
-module.exports = defineConfig({
+export default defineConfig({
   e2e: {
     specPattern: ['*.cy.js'],
     supportFile: false,
diff --git a/tools/build_rules/js/ts.bzl b/tools/build_rules/js/ts.bzl
index a5b0770..01b8bfe 100644
--- a/tools/build_rules/js/ts.bzl
+++ b/tools/build_rules/js/ts.bzl
@@ -15,6 +15,6 @@
 
         # TODO(phil): Is this a good idea? I don't _actually_ know what this
         # does.
-        supports_workers = False,
+        supports_workers = 0,
         **kwargs
     )