summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Ostrovsky <david.ostrovsky@gmail.com>2022-04-26 08:47:54 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-04-26 08:47:54 +0000
commit7e647fd4b5abbaa7e82e2f4a8352a02c044449b3 (patch)
tree62c72c2fdd885a448e61556e6baceac2cabaf557
parent6b1a46ba94f9c1715f41421b9eb3a6e4e8c3f593 (diff)
parentecd1a20daabc74db496f88f122d027abf59d0315 (diff)
Merge "Merge branch 'stable-3.3' into stable-3.4" into stable-3.4
-rw-r--r--Documentation/dev-release-deploy-config.txt6
-rw-r--r--WORKSPACE51
-rw-r--r--antlr3/BUILD1
-rw-r--r--java/com/google/gerrit/httpd/restapi/RestApiServlet.java2
-rw-r--r--java/com/google/gerrit/server/cache/PerThreadCache.java29
-rw-r--r--java/com/google/gerrit/server/git/RepoRefCache.java12
-rw-r--r--java/com/google/gerrit/server/notedb/ChangeNotes.java7
-rw-r--r--java/com/google/gerrit/server/restapi/BUILD2
-rw-r--r--java/com/google/gerrit/server/restapi/account/PostWatchedProjects.java14
-rw-r--r--javatests/com/google/gerrit/server/cache/BUILD3
-rw-r--r--javatests/com/google/gerrit/server/cache/PerThreadCacheTest.java48
-rw-r--r--package.json7
-rw-r--r--polygerrit-ui/app/BUILD1
-rw-r--r--polygerrit-ui/app/node_modules_licenses/BUILD4
-rw-r--r--tools/node_tools/BUILD10
-rw-r--r--tools/node_tools/node_modules_licenses/BUILD4
-rw-r--r--tools/node_tools/package.json5
-rw-r--r--tools/node_tools/polygerrit_app_preprocessor/BUILD4
-rw-r--r--tools/node_tools/polygerrit_app_preprocessor/links-updater.ts2
-rw-r--r--tools/node_tools/utils/BUILD4
-rw-r--r--tools/node_tools/yarn.lock46
-rw-r--r--yarn.lock61
22 files changed, 258 insertions, 65 deletions
diff --git a/Documentation/dev-release-deploy-config.txt b/Documentation/dev-release-deploy-config.txt
index a4ccccfa9a..db08da506b 100644
--- a/Documentation/dev-release-deploy-config.txt
+++ b/Documentation/dev-release-deploy-config.txt
@@ -44,15 +44,13 @@ the upload to Maven Central, and to sign the release announcement email.
+
Generate and publish a PGP key as described in
link:http://central.sonatype.org/pages/working-with-pgp-signatures.html[
-Working with PGP Signatures,role=external,window=_blank]. In addition to the keyserver mentioned
-there it is recommended to also publish the key to the
-link:https://keyserver.ubuntu.com/[Ubuntu key server].
+Working with PGP Signatures,role=external,window=_blank].
+
Please be aware that after publishing your public key it may take a
while until it is visible to the Sonatype server.
+
Add an entry for the public key in the
-link:https://gerrit.googlesource.com/homepage/+/md-pages/releases/public-keys.md[key list,role=external,window=_blank]
+link:https://gerrit.googlesource.com/homepage/+/master/pages/site/releases/public-keys.md[key list,role=external,window=_blank]
on the homepage.
+
The PGP passphrase can be put in `~/.m2/settings.xml`:
diff --git a/WORKSPACE b/WORKSPACE
index de708b4f1b..c92b93f865 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -57,8 +57,38 @@ protobuf_deps()
http_archive(
name = "build_bazel_rules_nodejs",
- sha256 = "dd7ea7efda7655c218ca707f55c3e1b9c68055a70c31a98f264b3445bc8f4cb1",
- urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.2.3/rules_nodejs-3.2.3.tar.gz"],
+ sha256 = "c077680a307eb88f3e62b0b662c2e9c6315319385bc8c637a861ffdbed8ca247",
+ urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.1.0/rules_nodejs-5.1.0.tar.gz"],
+)
+
+load("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_dependencies")
+
+build_bazel_rules_nodejs_dependencies()
+
+# This is required just because we have a dependency on @bazel/concatjs.
+# We don't actually use any of this web_testing stuff.
+# TODO: Remove this dependency.
+http_archive(
+ name = "io_bazel_rules_webtesting",
+ sha256 = "e9abb7658b6a129740c0b3ef6f5a2370864e102a5ba5ffca2cea565829ed825a",
+ urls = [
+ "https://github.com/bazelbuild/rules_webtesting/releases/download/0.3.5/rules_webtesting.tar.gz",
+ ],
+)
+
+# TODO: Remove this, see comments on `io_bazel_rules_webtesting`.
+load("@io_bazel_rules_webtesting//web:repositories.bzl", "web_test_repositories")
+
+# TODO: Remove this, see comments on `io_bazel_rules_webtesting`.
+web_test_repositories()
+
+# TODO: Remove this, see comments on `io_bazel_rules_webtesting`.
+load("@io_bazel_rules_webtesting//web/versioned:browsers-0.3.3.bzl", "browser_repositories")
+
+# TODO: Remove this, see comments on `io_bazel_rules_webtesting`.
+browser_repositories(
+ chromium = True,
+ firefox = True,
)
# Golang support for PolyGerrit local dev server.
@@ -883,42 +913,57 @@ maven_jar(
sha1 = "11cfac598df9dc48bb9ed9357ed04212694b7808",
)
-load("@build_bazel_rules_nodejs//:index.bzl", "yarn_install")
+load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install")
+
+node_repositories(
+ node_version = "16.13.2",
+ yarn_version = "1.22.17",
+)
yarn_install(
name = "npm",
+ exports_directories_only = False,
frozen_lockfile = False,
package_json = "//:package.json",
+ symlink_node_modules = True,
yarn_lock = "//:yarn.lock",
)
yarn_install(
name = "ui_npm",
args = ["--prod"],
+ exports_directories_only = False,
frozen_lockfile = False,
package_json = "//:polygerrit-ui/app/package.json",
+ symlink_node_modules = True,
yarn_lock = "//:polygerrit-ui/app/yarn.lock",
)
yarn_install(
name = "ui_dev_npm",
+ exports_directories_only = False,
frozen_lockfile = False,
package_json = "//:polygerrit-ui/package.json",
+ symlink_node_modules = True,
yarn_lock = "//:polygerrit-ui/yarn.lock",
)
yarn_install(
name = "tools_npm",
+ exports_directories_only = False,
frozen_lockfile = False,
package_json = "//:tools/node_tools/package.json",
+ symlink_node_modules = True,
yarn_lock = "//:tools/node_tools/yarn.lock",
)
yarn_install(
name = "plugins_npm",
args = ["--prod"],
+ exports_directories_only = False,
frozen_lockfile = False,
package_json = "//:plugins/package.json",
+ symlink_node_modules = True,
yarn_lock = "//:plugins/yarn.lock",
)
diff --git a/antlr3/BUILD b/antlr3/BUILD
index 549946a2a0..23641e3e2b 100644
--- a/antlr3/BUILD
+++ b/antlr3/BUILD
@@ -22,6 +22,7 @@ java_library(
srcs = [":query"],
visibility = [
"//java/com/google/gerrit/index:__subpackages__",
+ "//java/com/google/gerrit/server:__subpackages__",
"//javatests/com/google/gerrit:__subpackages__",
"//javatests/com/google/gerrit/index:__pkg__",
"//plugins:__pkg__",
diff --git a/java/com/google/gerrit/httpd/restapi/RestApiServlet.java b/java/com/google/gerrit/httpd/restapi/RestApiServlet.java
index 9b86a4fe1f..d224f9d4bf 100644
--- a/java/com/google/gerrit/httpd/restapi/RestApiServlet.java
+++ b/java/com/google/gerrit/httpd/restapi/RestApiServlet.java
@@ -334,7 +334,7 @@ public class RestApiServlet extends HttpServlet {
try (TraceContext traceContext = enableTracing(req, res)) {
List<IdString> path = splitPath(req);
- try (PerThreadCache ignored = PerThreadCache.create()) {
+ try (PerThreadCache ignored = PerThreadCache.create(req)) {
RequestInfo requestInfo = createRequestInfo(traceContext, requestUri(req), path);
globals.requestListeners.runEach(l -> l.onRequest(requestInfo));
diff --git a/java/com/google/gerrit/server/cache/PerThreadCache.java b/java/com/google/gerrit/server/cache/PerThreadCache.java
index b4f79d10ab..609fce7b25 100644
--- a/java/com/google/gerrit/server/cache/PerThreadCache.java
+++ b/java/com/google/gerrit/server/cache/PerThreadCache.java
@@ -21,7 +21,9 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Maps;
import com.google.gerrit.common.Nullable;
import java.util.Map;
+import java.util.Optional;
import java.util.function.Supplier;
+import javax.servlet.http.HttpServletRequest;
/**
* Caches object instances for a request as {@link ThreadLocal} in the serving thread.
@@ -58,6 +60,12 @@ public class PerThreadCache implements AutoCloseable {
private static final int PER_THREAD_CACHE_SIZE = 25;
/**
+ * Optional HTTP request associated with the per-thread cache, should the thread be associated
+ * with the incoming HTTP thread pool.
+ */
+ private final Optional<HttpServletRequest> httpRequest;
+
+ /**
* Unique key for key-value mappings stored in PerThreadCache. The key is based on the value's
* class and a list of identifiers that in combination uniquely set the object apart form others
* of the same class.
@@ -102,9 +110,9 @@ public class PerThreadCache implements AutoCloseable {
}
}
- public static PerThreadCache create() {
+ public static PerThreadCache create(@Nullable HttpServletRequest httpRequest) {
checkState(CACHE.get() == null, "called create() twice on the same request");
- PerThreadCache cache = new PerThreadCache();
+ PerThreadCache cache = new PerThreadCache(httpRequest);
CACHE.set(cache);
return cache;
}
@@ -121,7 +129,9 @@ public class PerThreadCache implements AutoCloseable {
private final Map<Key<?>, Object> cache = Maps.newHashMapWithExpectedSize(PER_THREAD_CACHE_SIZE);
- private PerThreadCache() {}
+ private PerThreadCache(@Nullable HttpServletRequest req) {
+ httpRequest = Optional.ofNullable(req);
+ }
/**
* Returns an instance of {@code T} that was either loaded from the cache or obtained from the
@@ -139,6 +149,19 @@ public class PerThreadCache implements AutoCloseable {
return value;
}
+ /** Returns the optional HTTP request associated with the local thread cache. */
+ public Optional<HttpServletRequest> getHttpRequest() {
+ return httpRequest;
+ }
+
+ /** Returns true if there is an HTTP request associated and is a GET or HEAD */
+ public boolean hasReadonlyRequest() {
+ return httpRequest
+ .map(HttpServletRequest::getMethod)
+ .filter(m -> m.equalsIgnoreCase("GET") || m.equalsIgnoreCase("HEAD"))
+ .isPresent();
+ }
+
@Override
public void close() {
CACHE.remove();
diff --git a/java/com/google/gerrit/server/git/RepoRefCache.java b/java/com/google/gerrit/server/git/RepoRefCache.java
index 6b2493a9f1..9086da7fb5 100644
--- a/java/com/google/gerrit/server/git/RepoRefCache.java
+++ b/java/com/google/gerrit/server/git/RepoRefCache.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.git;
+import com.google.gerrit.server.cache.PerThreadCache;
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
@@ -29,6 +30,17 @@ public class RepoRefCache implements RefCache {
private final RefDatabase refdb;
private final Map<String, Optional<ObjectId>> ids;
+ public static Optional<RefCache> getOptional(Repository repo) {
+ PerThreadCache cache = PerThreadCache.get();
+ if (cache != null && cache.hasReadonlyRequest()) {
+ return Optional.of(
+ cache.get(
+ PerThreadCache.Key.create(RepoRefCache.class, repo), () -> new RepoRefCache(repo)));
+ }
+
+ return Optional.empty();
+ }
+
public RepoRefCache(Repository repo) {
this.refdb = repo.getRefDatabase();
this.ids = new HashMap<>();
diff --git a/java/com/google/gerrit/server/notedb/ChangeNotes.java b/java/com/google/gerrit/server/notedb/ChangeNotes.java
index 6500d926d8..619d499507 100644
--- a/java/com/google/gerrit/server/notedb/ChangeNotes.java
+++ b/java/com/google/gerrit/server/notedb/ChangeNotes.java
@@ -56,6 +56,7 @@ import com.google.gerrit.server.ReviewerByEmailSet;
import com.google.gerrit.server.ReviewerSet;
import com.google.gerrit.server.ReviewerStatusUpdate;
import com.google.gerrit.server.git.RefCache;
+import com.google.gerrit.server.git.RepoRefCache;
import com.google.gerrit.server.project.NoSuchChangeException;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gerrit.server.query.change.ChangeData;
@@ -654,6 +655,10 @@ public class ChangeNotes extends AbstractChangeNotes<ChangeNotes> {
@Override
protected ObjectId readRef(Repository repo) throws IOException {
- return refs != null ? refs.get(getRefName()).orElse(null) : super.readRef(repo);
+ Optional<RefCache> refsCache =
+ Optional.ofNullable(refs).map(Optional::of).orElse(RepoRefCache.getOptional(repo));
+ return refsCache.isPresent()
+ ? refsCache.get().get(getRefName()).orElse(null)
+ : super.readRef(repo);
}
}
diff --git a/java/com/google/gerrit/server/restapi/BUILD b/java/com/google/gerrit/server/restapi/BUILD
index 6d3e222d6d..708e860189 100644
--- a/java/com/google/gerrit/server/restapi/BUILD
+++ b/java/com/google/gerrit/server/restapi/BUILD
@@ -8,6 +8,7 @@ java_library(
name = "restapi",
srcs = glob(["**/*.java"]),
deps = [
+ "//antlr3:query_parser",
"//java/com/google/gerrit/common:annotations",
"//java/com/google/gerrit/common:server",
"//java/com/google/gerrit/entities",
@@ -29,6 +30,7 @@ java_library(
"//lib:guava",
"//lib:jgit",
"//lib:servlet-api",
+ "//lib/antlr:java-runtime",
"//lib/auto:auto-value",
"//lib/auto:auto-value-annotations",
"//lib/commons:compress",
diff --git a/java/com/google/gerrit/server/restapi/account/PostWatchedProjects.java b/java/com/google/gerrit/server/restapi/account/PostWatchedProjects.java
index 5979b2a9ea..2131070b04 100644
--- a/java/com/google/gerrit/server/restapi/account/PostWatchedProjects.java
+++ b/java/com/google/gerrit/server/restapi/account/PostWatchedProjects.java
@@ -14,12 +14,15 @@
package com.google.gerrit.server.restapi.account;
+import com.google.common.base.Strings;
import com.google.gerrit.entities.NotifyConfig.NotifyType;
import com.google.gerrit.extensions.client.ProjectWatchInfo;
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.Response;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.extensions.restapi.RestModifyView;
+import com.google.gerrit.index.query.QueryParseException;
+import com.google.gerrit.index.query.QueryParser;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.UserInitiated;
import com.google.gerrit.server.account.AccountResource;
@@ -95,6 +98,17 @@ public class PostWatchedProjects
throw new BadRequestException("project name must be specified");
}
+ if (!Strings.isNullOrEmpty(info.filter)) {
+ try {
+ QueryParser.parse(info.filter);
+ } catch (QueryParseException e) {
+ throw new BadRequestException(
+ String.format(
+ "invalid filter expression for project %s: %s", info.project, e.getMessage()),
+ e);
+ }
+ }
+
ProjectWatchKey key =
ProjectWatchKey.create(projectsCollection.parse(info.project).getNameKey(), info.filter);
if (m.containsKey(key)) {
diff --git a/javatests/com/google/gerrit/server/cache/BUILD b/javatests/com/google/gerrit/server/cache/BUILD
index b3b2f5ac09..c708e09f5f 100644
--- a/javatests/com/google/gerrit/server/cache/BUILD
+++ b/javatests/com/google/gerrit/server/cache/BUILD
@@ -7,8 +7,11 @@ junit_tests(
deps = [
"//java/com/google/gerrit/server",
"//java/com/google/gerrit/testing:gerrit-test-util",
+ "//javatests/com/google/gerrit/util/http/testutil",
"//lib:junit",
"//lib/truth",
+ "//lib/truth:truth-java8-extension",
+ "@servlet-api//jar",
],
)
diff --git a/javatests/com/google/gerrit/server/cache/PerThreadCacheTest.java b/javatests/com/google/gerrit/server/cache/PerThreadCacheTest.java
index 5d420d33f6..c04deb4e8e 100644
--- a/javatests/com/google/gerrit/server/cache/PerThreadCacheTest.java
+++ b/javatests/com/google/gerrit/server/cache/PerThreadCacheTest.java
@@ -15,9 +15,13 @@
package com.google.gerrit.server.cache;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth8.assertThat;
import static com.google.gerrit.testing.GerritJUnit.assertThrows;
+import com.google.gerrit.util.http.testutil.FakeHttpServletRequest;
import java.util.function.Supplier;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
import org.junit.Test;
public class PerThreadCacheTest {
@@ -43,7 +47,7 @@ public class PerThreadCacheTest {
@Test
public void endToEndCache() {
- try (PerThreadCache ignored = PerThreadCache.create()) {
+ try (PerThreadCache ignored = PerThreadCache.create(null)) {
PerThreadCache cache = PerThreadCache.get();
PerThreadCache.Key<String> key1 = PerThreadCache.Key.create(String.class);
@@ -61,7 +65,7 @@ public class PerThreadCacheTest {
@Test
public void cleanUp() {
PerThreadCache.Key<String> key = PerThreadCache.Key.create(String.class);
- try (PerThreadCache ignored = PerThreadCache.create()) {
+ try (PerThreadCache ignored = PerThreadCache.create(null)) {
PerThreadCache cache = PerThreadCache.get();
String value1 = cache.get(key, () -> "value1");
assertThat(value1).isEqualTo("value1");
@@ -69,7 +73,7 @@ public class PerThreadCacheTest {
// Create a second cache and assert that it is not connected to the first one.
// This ensures that the cleanup is actually working.
- try (PerThreadCache ignored = PerThreadCache.create()) {
+ try (PerThreadCache ignored = PerThreadCache.create(null)) {
PerThreadCache cache = PerThreadCache.get();
String value1 = cache.get(key, () -> "value2");
assertThat(value1).isEqualTo("value2");
@@ -78,16 +82,48 @@ public class PerThreadCacheTest {
@Test
public void doubleInstantiationFails() {
- try (PerThreadCache ignored = PerThreadCache.create()) {
+ try (PerThreadCache ignored = PerThreadCache.create(null)) {
IllegalStateException thrown =
- assertThrows(IllegalStateException.class, () -> PerThreadCache.create());
+ assertThrows(IllegalStateException.class, () -> PerThreadCache.create(null));
assertThat(thrown).hasMessageThat().contains("called create() twice on the same request");
}
}
@Test
+ public void isAssociatedWithHttpReadonlyRequest() {
+ HttpServletRequest getRequest = new FakeHttpServletRequest();
+ try (PerThreadCache cache = PerThreadCache.create(getRequest)) {
+ assertThat(cache.getHttpRequest()).hasValue(getRequest);
+ assertThat(cache.hasReadonlyRequest()).isTrue();
+ }
+ }
+
+ @Test
+ public void isAssociatedWithHttpWriteRequest() {
+ HttpServletRequest putRequest =
+ new HttpServletRequestWrapper(new FakeHttpServletRequest()) {
+ @Override
+ public String getMethod() {
+ return "PUT";
+ }
+ };
+ try (PerThreadCache cache = PerThreadCache.create(putRequest)) {
+ assertThat(cache.getHttpRequest()).hasValue(putRequest);
+ assertThat(cache.hasReadonlyRequest()).isFalse();
+ }
+ }
+
+ @Test
+ public void isNotAssociatedWithHttpRequest() {
+ try (PerThreadCache cache = PerThreadCache.create(null)) {
+ assertThat(cache.getHttpRequest()).isEmpty();
+ assertThat(cache.hasReadonlyRequest()).isFalse();
+ }
+ }
+
+ @Test
public void enforceMaxSize() {
- try (PerThreadCache cache = PerThreadCache.create()) {
+ try (PerThreadCache cache = PerThreadCache.create(null)) {
// Fill the cache
for (int i = 0; i < 50; i++) {
PerThreadCache.Key<String> key = PerThreadCache.Key.create(String.class, i);
diff --git a/package.json b/package.json
index 320b196ab9..f52aa74621 100644
--- a/package.json
+++ b/package.json
@@ -3,9 +3,10 @@
"version": "3.1.0-SNAPSHOT",
"description": "Gerrit Code Review",
"dependencies": {
- "@bazel/rollup": "^3.2.3",
- "@bazel/terser": "^3.2.3",
- "@bazel/typescript": "^3.2.3"
+ "@bazel/concatjs": "^5.1.0",
+ "@bazel/rollup": "^5.1.0",
+ "@bazel/terser": "^5.1.0",
+ "@bazel/typescript": "^5.1.0"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^4.22.0",
diff --git a/polygerrit-ui/app/BUILD b/polygerrit-ui/app/BUILD
index 2f83182c51..47521f6f6e 100644
--- a/polygerrit-ui/app/BUILD
+++ b/polygerrit-ui/app/BUILD
@@ -130,6 +130,7 @@ eslint(
],
ignore = ".eslintignore",
plugins = [
+ "@npm//@typescript-eslint/eslint-plugin",
"@npm//eslint-config-google",
"@npm//eslint-plugin-html",
"@npm//eslint-plugin-import",
diff --git a/polygerrit-ui/app/node_modules_licenses/BUILD b/polygerrit-ui/app/node_modules_licenses/BUILD
index 44b98117ba..a2fddb10de 100644
--- a/polygerrit-ui/app/node_modules_licenses/BUILD
+++ b/polygerrit-ui/app/node_modules_licenses/BUILD
@@ -1,4 +1,4 @@
-load("@npm//@bazel/typescript:index.bzl", "ts_library")
+load("@npm//@bazel/concatjs:index.bzl", "ts_library")
load("//tools/node_tools/node_modules_licenses:node_modules_licenses.bzl", "node_modules_licenses")
filegroup(
@@ -6,6 +6,8 @@ filegroup(
srcs = glob(["licenses/*.txt"]),
)
+# TODO: Would be nice to use `ts_project` from @bazel/typescript instead.
+# We would prefer to not depend on @bazel/concatjs ...
ts_library(
name = "licenses-config",
srcs = [
diff --git a/tools/node_tools/BUILD b/tools/node_tools/BUILD
index 03e3a13c53..8aeed0177e 100644
--- a/tools/node_tools/BUILD
+++ b/tools/node_tools/BUILD
@@ -28,13 +28,19 @@ nodejs_binary(
# Create a tsc_wrapped compiler rule to use in the ts_library
# compiler attribute when using self-managed dependencies
+# TODO: Would be nice to just use `tsc-bin` below instead.
+# We would prefer to not depend on @bazel/concatjs ...
nodejs_binary(
name = "tsc_wrapped-bin",
# Point bazel to your node_modules to find the entry point
- data = ["@tools_npm//:node_modules"],
+ data = [
+ "@tools_npm//:node_modules",
+ "@tools_npm//@bazel/concatjs",
+ "@tools_npm//typescript",
+ ],
# It seems, bazel uses different approaches to compile ts files (it runs some
# ts service in background). It works without any workaround.
- entry_point = "@tools_npm//:node_modules/@bazel/typescript/internal/tsc_wrapped/tsc_wrapped.js",
+ entry_point = "@tools_npm//:node_modules/@bazel/concatjs/internal/tsc_wrapped/tsc_wrapped.js",
)
# Wrap a typescript into a tsc-bin binary.
diff --git a/tools/node_tools/node_modules_licenses/BUILD b/tools/node_tools/node_modules_licenses/BUILD
index b88ec24f5b..1437e755ee 100644
--- a/tools/node_tools/node_modules_licenses/BUILD
+++ b/tools/node_tools/node_modules_licenses/BUILD
@@ -1,9 +1,11 @@
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
-load("@npm//@bazel/typescript:index.bzl", "ts_library")
+load("@npm//@bazel/concatjs:index.bzl", "ts_library")
load("@npm//@bazel/rollup:index.bzl", "rollup_bundle")
package(default_visibility = ["//visibility:public"])
+# TODO: Would be nice to use `ts_project` from @bazel/typescript instead.
+# We would prefer to not depend on @bazel/concatjs ...
ts_library(
name = "licenses-map",
srcs = glob(["*.ts"]),
diff --git a/tools/node_tools/package.json b/tools/node_tools/package.json
index bfc5191908..fc7ac16cf5 100644
--- a/tools/node_tools/package.json
+++ b/tools/node_tools/package.json
@@ -3,8 +3,9 @@
"description": "Gerrit Build Tools",
"browser": false,
"dependencies": {
- "@bazel/rollup": "^3.2.3",
- "@bazel/typescript": "^3.2.3",
+ "@bazel/concatjs": "^5.1.0",
+ "@bazel/rollup": "^5.1.0",
+ "@bazel/typescript": "^5.1.0",
"@types/node": "^10.17.12",
"@types/parse5": "^4.0.0",
"@types/parse5-html-rewriting-stream": "^5.1.2",
diff --git a/tools/node_tools/polygerrit_app_preprocessor/BUILD b/tools/node_tools/polygerrit_app_preprocessor/BUILD
index fa3ce56a1c..47f2a41696 100644
--- a/tools/node_tools/polygerrit_app_preprocessor/BUILD
+++ b/tools/node_tools/polygerrit_app_preprocessor/BUILD
@@ -1,9 +1,11 @@
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
load("@npm//@bazel/rollup:index.bzl", "rollup_bundle")
-load("@npm//@bazel/typescript:index.bzl", "ts_library")
+load("@npm//@bazel/concatjs:index.bzl", "ts_library")
package(default_visibility = ["//visibility:public"])
+# TODO: Would be nice to use `ts_project` from @bazel/typescript instead.
+# We would prefer to not depend on @bazel/concatjs ...
ts_library(
name = "preprocessor",
srcs = glob(["*.ts"]),
diff --git a/tools/node_tools/polygerrit_app_preprocessor/links-updater.ts b/tools/node_tools/polygerrit_app_preprocessor/links-updater.ts
index 24e445d2d5..9f872cc96f 100644
--- a/tools/node_tools/polygerrit_app_preprocessor/links-updater.ts
+++ b/tools/node_tools/polygerrit_app_preprocessor/links-updater.ts
@@ -39,7 +39,7 @@ async function main() {
process.exit(1);
}
- const jsonRedirects: JSONRedirects = JSON.parse(fs.readFileSync(process.argv[3], {encoding: "utf-8"}));
+ const jsonRedirects: JSONRedirects = JSON.parse(fs.readFileSync(process.argv[3], {encoding: "utf-8"})) as JSONRedirects;
const redirectsResolver = new RedirectsResolver(jsonRedirects.redirects);
const input = readMultilineParamFile(process.argv[2]);
diff --git a/tools/node_tools/utils/BUILD b/tools/node_tools/utils/BUILD
index 2196012f71..0a6e768f93 100644
--- a/tools/node_tools/utils/BUILD
+++ b/tools/node_tools/utils/BUILD
@@ -1,7 +1,9 @@
-load("@npm//@bazel/typescript:index.bzl", "ts_library")
+load("@npm//@bazel/concatjs:index.bzl", "ts_library")
package(default_visibility = ["//visibility:public"])
+# TODO: Would be nice to use `ts_project` from @bazel/typescript instead.
+# We would prefer to not depend on @bazel/concatjs ...
ts_library(
name = "utils",
srcs = glob(["*.ts"]),
diff --git a/tools/node_tools/yarn.lock b/tools/node_tools/yarn.lock
index 767f285687..4aa7ebb950 100644
--- a/tools/node_tools/yarn.lock
+++ b/tools/node_tools/yarn.lock
@@ -492,20 +492,35 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
-"@bazel/rollup@^3.2.3":
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-3.2.3.tgz#eb6b17f89da5d38b035a6d59a99000f2d5ada667"
- integrity sha512-7PmJqekk92OaiwwEN3dYsp5qbZX8cqr0WkFUiaM3FBsNYVoN/rdh+VxQJWTuDGLjWiHxLwE95YwVHcvwerSrCg==
+"@bazel/concatjs@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-5.1.0.tgz#f4321dec4a225c3ceac41b2dc7ec7c3dd3dd5e21"
+ integrity sha512-sj+vxHVB/swh7awOfQ37h3p/gxSPgLSnUkDt6POrj26qkfi7HrLB1ZkWAPFIIxjEhsBp1LchoHiezjw2GylZQg==
-"@bazel/typescript@^3.2.3":
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-3.2.3.tgz#6e40bdb7c5294e588bac3b7d1269e58b98a1856c"
- integrity sha512-Q1Yin/AYdh9yrkSJo3H6nVn6mMaohr5syjLd0Df0w7WI4zerdJTxrY5nhoWZwO/S1rPj8/MedDwZudCqPDeDMA==
+"@bazel/rollup@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-5.1.0.tgz#dc858ddc93c9fdb9cc2e7982e632c939c646ebdc"
+ integrity sha512-wEiWdSyVbsycSirSYjR6FGfPGbRNI7sGNAYmrV0hIzYIi+KqXeTNcwKIRSE9PESP3mb0VWbZmHvXvmrWk6daPQ==
+ dependencies:
+ "@bazel/worker" "5.1.0"
+
+"@bazel/typescript@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-5.1.0.tgz#348552355cc92a43f22e637fabce76ed64505548"
+ integrity sha512-E7wYv1tBFtcsFp0YN7Cf9Lv184xOzvT5WJKwZxt+43oq8R5tGmTSuqQwm4c9JmEq6s0eZmwUaRv+WXp9hxsE4A==
dependencies:
+ "@bazel/worker" "5.1.0"
protobufjs "6.8.8"
semver "5.6.0"
source-map-support "0.5.9"
- tsutils "2.27.2"
+ tsutils "3.21.0"
+
+"@bazel/worker@5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-5.1.0.tgz#6f1e0f3ef628e3449d424cacd341c9abd09a3735"
+ integrity sha512-u3aU93UtHz3vL6ozezq0jnw83s1cNT4dAnW+vvB7M++YKFlB3CWzZFb0JRJbCp1b6DDe30ML0WOdd3nVYuylpw==
+ dependencies:
+ google-protobuf "^3.6.1"
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
@@ -3958,6 +3973,11 @@ globby@^8.0.1:
pify "^3.0.0"
slash "^1.0.0"
+google-protobuf@^3.6.1:
+ version "3.19.4"
+ resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.4.tgz#8d32c3e34be9250956f28c0fb90955d13f311888"
+ integrity sha512-OIPNCxsG2lkIvf+P5FNfJ/Km95CsXOBecS9ZcAU6m2Rq3svc0Apl9nB3GMDNKfQ9asNv4KjyAqGwPQFrVle3Yg==
+
got@^5.0.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35"
@@ -7856,10 +7876,10 @@ tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
-tsutils@2.27.2:
- version "2.27.2"
- resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.27.2.tgz#60ba88a23d6f785ec4b89c6e8179cac9b431f1c7"
- integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==
+tsutils@3.21.0:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
dependencies:
tslib "^1.8.1"
diff --git a/yarn.lock b/yarn.lock
index 28a4a08395..a30f36fc0a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -500,25 +500,44 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
-"@bazel/rollup@^3.2.3":
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-3.2.3.tgz#eb6b17f89da5d38b035a6d59a99000f2d5ada667"
- integrity sha512-7PmJqekk92OaiwwEN3dYsp5qbZX8cqr0WkFUiaM3FBsNYVoN/rdh+VxQJWTuDGLjWiHxLwE95YwVHcvwerSrCg==
+"@bazel/concatjs@^5.1.0":
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/@bazel/concatjs/-/concatjs-5.4.0.tgz#04e752a6ea3e684f00879e6683657c4ede72df6e"
+ integrity sha512-jlupaDKxqFS3B1lttOIgkKxirP7v5Qx7KCFtOXO7JxtvYJD/qKtKXEQggTrGKJqLPyiZlNiYimHHGICLSWIZcQ==
+ dependencies:
+ protobufjs "6.8.8"
+ source-map-support "0.5.9"
+ tsutils "3.21.0"
+
+"@bazel/rollup@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-5.1.0.tgz#dc858ddc93c9fdb9cc2e7982e632c939c646ebdc"
+ integrity sha512-wEiWdSyVbsycSirSYjR6FGfPGbRNI7sGNAYmrV0hIzYIi+KqXeTNcwKIRSE9PESP3mb0VWbZmHvXvmrWk6daPQ==
+ dependencies:
+ "@bazel/worker" "5.1.0"
-"@bazel/terser@^3.2.3":
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-3.2.3.tgz#18849cb01f6a9fd840955547b0a9dbf63f02c720"
- integrity sha512-SzX3ytgt8+i36sODPO9ju0LbjKXB8w9zi00S+XNManQTRilNrr/NODTYbBzKrjuebA/o52NMpvRGigRd1Z2RGg==
+"@bazel/terser@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-5.1.0.tgz#5c82b93f4d9def8103c16be2dd33900d156fa066"
+ integrity sha512-uE3hTqfkZr4nvlk3jwi0xx6URqqI7r6GGPtDAU02/PVei+O4PfThaov7cwHO+D1FnoLncDqChb9Iolr7Crw/8A==
-"@bazel/typescript@^3.2.3":
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-3.2.3.tgz#6e40bdb7c5294e588bac3b7d1269e58b98a1856c"
- integrity sha512-Q1Yin/AYdh9yrkSJo3H6nVn6mMaohr5syjLd0Df0w7WI4zerdJTxrY5nhoWZwO/S1rPj8/MedDwZudCqPDeDMA==
+"@bazel/typescript@^5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-5.1.0.tgz#348552355cc92a43f22e637fabce76ed64505548"
+ integrity sha512-E7wYv1tBFtcsFp0YN7Cf9Lv184xOzvT5WJKwZxt+43oq8R5tGmTSuqQwm4c9JmEq6s0eZmwUaRv+WXp9hxsE4A==
dependencies:
+ "@bazel/worker" "5.1.0"
protobufjs "6.8.8"
semver "5.6.0"
source-map-support "0.5.9"
- tsutils "2.27.2"
+ tsutils "3.21.0"
+
+"@bazel/worker@5.1.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@bazel/worker/-/worker-5.1.0.tgz#6f1e0f3ef628e3449d424cacd341c9abd09a3735"
+ integrity sha512-u3aU93UtHz3vL6ozezq0jnw83s1cNT4dAnW+vvB7M++YKFlB3CWzZFb0JRJbCp1b6DDe30ML0WOdd3nVYuylpw==
+ dependencies:
+ google-protobuf "^3.6.1"
"@dabh/diagnostics@^2.0.2":
version "2.0.2"
@@ -5014,6 +5033,11 @@ globby@^9.2.0:
pify "^4.0.1"
slash "^2.0.0"
+google-protobuf@^3.6.1:
+ version "3.19.4"
+ resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.4.tgz#8d32c3e34be9250956f28c0fb90955d13f311888"
+ integrity sha512-OIPNCxsG2lkIvf+P5FNfJ/Km95CsXOBecS9ZcAU6m2Rq3svc0Apl9nB3GMDNKfQ9asNv4KjyAqGwPQFrVle3Yg==
+
got@^11.8.0:
version "11.8.2"
resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599"
@@ -9856,16 +9880,9 @@ tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tsutils@2.27.2:
- version "2.27.2"
- resolved "https://registry.npmjs.org/tsutils/-/tsutils-2.27.2.tgz"
- integrity sha512-qf6rmT84TFMuxAKez2pIfR8UCai49iQsfB7YWVjV1bKpy/d0PWT5rEOSM6La9PiHZ0k1RRZQiwVdVJfQ3BPHgg==
- dependencies:
- tslib "^1.8.1"
-
-tsutils@^3.17.1:
+tsutils@3.21.0, tsutils@^3.17.1:
version "3.21.0"
- resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
dependencies:
tslib "^1.8.1"