# This BUILD file is only for publishing the
# "Gerrit Frontend Plugin TypeScript API" as an npm package.
#
# Publishing procedure:
# - Execute the `publish.sh` script from the Gerrit root dir.
# - Verify that the contents look good.
# - Increment the version in package.json.
# - Execute `publish.sh --upload`.
#
# NB: Renaming to 'BUILD' breaks the app/BUILD, because then the api/ sources
# are not visible anymore to the parent BUILD. And if ts_projects depend on each
# other, then the api/ files would have to be imported with their full package
# names.
load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm")
load("@npm//@bazel/typescript:index.bzl", "ts_config", "ts_project")

filegroup(
    name = "js_plugin_api_srcs",
    srcs = glob(["**/*.ts"]),
)

ts_config(
    name = "ts_config",
    src = "tsconfig.json",
    deps = [
        "//plugins:tsconfig-plugins-base.json",
    ],
)

ts_project(
    name = "js_plugin_api_compiled",
    srcs = glob(["**/*.ts"]),
    incremental = True,
    tsc = "//tools/node_tools:tsc-bin",
    tsconfig = ":ts_config",
)

# Use this rule for publishing the js plugin api as a package to the npm repo.
pkg_npm(
    name = "js_plugin_api_npm_package",
    package_name = "@gerritcodereview/typescript-api",
    srcs = glob(
        ["**/*"],
        exclude = [
            "BUILD",
            "BUILD_for_publishing_api_only",
            "tsconfig.json",
            "publish.sh",
        ],
    ),
    deps = [
        ":js_plugin_api_compiled",
        "//plugins:tsconfig-plugins-base.json",
    ],
)
