load("@npm//@bazel/typescript:index.bzl", "ts_library")
load("//tools/build_rules:js.bzl", "rollup_bundle")
load("@npm//@bazel/concatjs:index.bzl", "concatjs_devserver")
load("@npm//@babel/cli:index.bzl", "babel")

ts_library(
    name = "app",
    srcs = glob([
        "*.ts",
    ]),
    angular_assets = glob([
        "*.ng.html",
    ]),
    compiler = "//tools:tsc_wrapped_with_angular",
    target_compatible_with = ["@platforms//cpu:x86_64"],
    use_angular_plugin = True,
    visibility = ["//visibility:public"],
    deps = [
        "@npm//@angular/animations",
        "@npm//@angular/common",
        "@npm//@angular/core",
        "@npm//@angular/platform-browser",
    ],
)

rollup_bundle(
    name = "main_bundle",
    entry_point = "main.ts",
    deps = [
        "app",
    ],
)

babel(
    name = "main_bundle_compiled",
    args = [
        "$(execpath :main_bundle)",
        "--no-babelrc",
        "--source-maps",
        "--plugins=@angular/compiler-cli/linker/babel",
        "--out-dir",
        "$(@D)",
    ],
    data = [
        ":main_bundle",
        "@npm//@angular/compiler-cli",
    ],
    output_dir = True,
)

concatjs_devserver(
    name = "devserver",
    serving_path = "/main_bundle.js",
    static_files = [
        ":index.html",
        "@npm//:node_modules/zone.js/dist/zone.min.js",
    ],
    deps = [":main_bundle_compiled"],
)
