blob: 057d9e8c0bbb96209aee362158523c82b01975f9 [file] [log] [blame] [edit]
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
load("@aspect_rules_esbuild//esbuild:defs.bzl", "esbuild")
load("@aspect_rules_js//js:defs.bzl", "js_library")
load("@aspect_rules_ts//ts:defs.bzl", "ts_project")
load("@npm//:defs.bzl", "npm_link_all_packages")
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
load("//java:defs.bzl", "merge_jars")
npm_link_all_packages(name = "node_modules")
js_library(
name = "esbuild-base-config",
srcs = [
"esbuild.base.config.mjs",
],
)
js_library(
name = "esbuild-bazel-config",
srcs = [
"esbuild.bazel.config.mjs",
],
deps = [
":esbuild-base-config",
],
)
SRCS = glob(
[
"src/**/*",
],
exclude = [
"src/simple.ts",
"src/**/*.test.tsx",
],
)
DEPS = [
":node_modules/@apollo/client",
":node_modules/@mui/icons-material",
":node_modules/@mui/material",
":node_modules/@novnc/novnc",
":node_modules/@types/node",
":node_modules/graphql.macro",
":node_modules/pretty-ms",
":node_modules/react",
":node_modules/react-dom",
":node_modules/react-modal",
":node_modules/react-router-dom",
]
ts_project(
name = "transpile_ts",
srcs = SRCS,
allow_js = True,
assets = glob(["src/assets/**/*"]),
resolve_json_module = True,
tsconfig = "tsconfig.json",
deps = DEPS,
)
esbuild(
name = "bundle",
srcs = [
"esbuild.base.config.mjs",
"esbuild.bazel.config.mjs",
":package.json",
] + DEPS + SRCS,
# We disable the sandbox because it makes the build incredibly long.
# This is okay because our CI builds use an RBE
bazel_sandbox_plugin = False,
bundle = True,
config = ":esbuild-bazel-config",
entry_point = "src/index.tsx",
external = [
"fs",
"module",
"os",
"path",
"util",
],
format = "iife",
minify = True,
output_dir = True,
platform = "browser",
sourcemap = "inline",
target = "es6",
)
copy_to_bin(
name = "package_json",
srcs = ["package.json"],
visibility = ["//visibility:public"],
)
copy_to_bin(
name = "tsconfig",
srcs = ["tsconfig.json"],
visibility = ["//javascript/grid-ui:__subpackages__"],
)
pkg_zip(
name = "react-zip",
srcs = [
":bundle",
],
out = "react-zip.jar",
package_dir = "grid-ui",
strip_prefix = "bundle",
)
merge_jars(
name = "add-missing-dirs",
inputs = [
":react-zip",
"//javascript/grid-ui/public",
],
)
java_import(
name = "react_jar",
jars = [":add-missing-dirs"],
visibility = [
"//java/src/org/openqa/selenium/grid:__pkg__",
],
)