load("@build_bazel_rules_nodejs//:providers.bzl", "JSModuleInfo")
load("@npm//@bazel/rollup:index.bzl", upstream_rollup_bundle = "rollup_bundle")
load("@npm//@bazel/terser:index.bzl", "terser_minified")
load("@bazel_skylib//lib:paths.bzl", "paths")
load("@npm//@bazel/protractor:index.bzl", "protractor_web_test_suite")
load("@npm//@bazel/typescript:index.bzl", upstream_ts_library = "ts_library", upstream_ts_project = "ts_project")

def ts_project(**kwargs):
    """A trivial wrapper to prepare for the rules_js migration.

    The intent is to change his macro to wrap the new rules_js ts_project
    implementation.
    """
    upstream_ts_library(**kwargs)

def rollup_bundle(name, 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
    wrapper provides the same interface by explicitly exposing a .min.js file.
    """
    upstream_rollup_bundle(
        name = name,
        visibility = visibility,
        deps = deps + [
            "@npm//@rollup/plugin-node-resolve",
        ],
        config_file = "//:rollup.config.js",
        link_workspace_root = True,
        **kwargs
    )

    terser_minified(
        name = name + "__min",
        src = name + ".js",
    )

    # Copy the __min.js file (a declared output inside the rule) so that it's a
    # pre-declared output and publicly visible. I.e. via attr.output() below.
    _expose_minified_js(
        name = name + "__min_exposed",
        src = ":%s__min" % name,
        out = name + ".min.js",
        visibility = visibility,
    )

def _expose_minified_js_impl(ctx):
    """Copies the .min.js file in order to make it publicly accessible."""
    sources = ctx.attr.src[JSModuleInfo].sources.to_list()
    min_js = None
    for src in sources:
        if src.basename.endswith("__min.js"):
            min_js = src
            break

    if min_js == None:
        fail("Couldn't find .min.js in " + str(ctx.attr.src))

    ctx.actions.run(
        inputs = [min_js],
        outputs = [ctx.outputs.out],
        executable = "cp",
        arguments = [min_js.path, ctx.outputs.out.path],
    )

_expose_minified_js = rule(
    implementation = _expose_minified_js_impl,
    attrs = {
        "src": attr.label(providers = [JSModuleInfo]),
        "out": attr.output(mandatory = True),
    },
)

def protractor_ts_test(name, srcs, deps = None, data = None, **kwargs):
    """Wraps upstream protractor_web_test_suite() to reduce boilerplate.

    This is largely based on the upstream protractor example:
    https://github.com/bazelbuild/rules_nodejs/blob/stable/examples/angular/e2e/BUILD.bazel

    See the documentation for more information:
    https://bazelbuild.github.io/rules_nodejs/Protractor.html#protractor_web_test_suite
    """
    upstream_ts_project(
        name = name + "__lib",
        srcs = srcs,
        testonly = 1,
        deps = (deps or []) + [
            # Implicit deps that are necessary to get tests of this kind to
            # work.
            "@npm//@types/jasmine",
            "@npm//jasmine",
            "@npm//protractor",
            "@npm//@types/node",
        ],
        tsconfig = {},
        declaration = True,
        declaration_map = True,
    )

    data = (data or []) + [
        "//tools/build_rules/js/waitpid_module",
    ]

    protractor_web_test_suite(
        name = name,
        srcs = [paths.replace_extension(src, ".js") for src in srcs],
        deps = [":%s__lib" % name],
        data = data,
        **kwargs
    )
