# Copyright 2017 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# gazelle:exclude worker_protocol.proto

package(default_visibility = ["//visibility:public"])

exports_files(["worker_protocol.proto"])

load("//internal:build_defs.bzl", "ts_library")
load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary", "jasmine_node_test")

# Vanilla typescript compiler: run the tsc.js binary distributed by TypeScript
nodejs_binary(
    name = "tsc",
    node_modules = "@build_bazel_rules_typescript_tsc_wrapped_deps//:node_modules",
    entry_point = "typescript/lib/tsc.js",
    visibility = ["//internal:__subpackages__"],
)

# Build our custom compiler using the vanilla one
ts_library(
    name = "tsc_wrapped",
    srcs = glob([
      "tsc_wrapped/*.ts",
      "tsetse/*.ts",
      "tsetse/rules/*.ts"
    ], exclude=["**/test_support.ts", "**/*_test.ts"]),
    supports_workers = False,
    compiler = ":tsc",
    node_modules = "@build_bazel_rules_typescript_tsc_wrapped_deps//:node_modules",
    module_name = "@bazel/typescript",
    module_root = "tsc_wrapped/index.d.ts",
    tsconfig = "//internal:tsc_wrapped/tsconfig.json",
    visibility = ["//visibility:public"],
    data = [
        # Should be @bazel_tools//src/main/protobuf:worker_protocol.proto
        # see https://github.com/bazelbuild/bazel/issues/3155#issuecomment-308156976
        ":worker_protocol.proto",
    ],
    # Cannot have any deps because it doesn't work with vanilla tsc
    # Workaround for https://github.com/Microsoft/TypeScript/issues/22208
    deps = [
    ],
)

# Other ts_library rules will use this custom compiler, which calls the
# TypeScript APIs to act like tsc, but adds capabilities like Bazel workers.
nodejs_binary(
    name = "tsc_wrapped_bin",
    data = [
        ":tsc_wrapped",
    ],
    node_modules = "@build_bazel_rules_typescript_tsc_wrapped_deps//:node_modules",
    entry_point = "build_bazel_rules_typescript/internal/tsc_wrapped/tsc_wrapped.js",
    templated_args = ["--node_options=--expose-gc"],
    visibility = ["//visibility:public"],
)

ts_library(
    name = "test_lib",
    srcs = glob(["tsc_wrapped/*_test.ts"]) + ["tsc_wrapped/test_support.ts"],
    deps = [":tsc_wrapped"],
    tsconfig = "//internal:tsc_wrapped/tsconfig.json",
)

jasmine_node_test(
    name = "test",
    srcs = [],
    deps = [":test_lib"],
)
