# 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.

# To update BUILD.bazel files after changing Go code, run
# bazel run //:gazelle
#
# Exclude node_modules, see
# https://github.com/bazelbuild/rules_go/blob/master/go/tools/gazelle/README.rst#directives
# gazelle:exclude node_modules
load("@bazel_gazelle//:def.bzl", "gazelle")
load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm")

exports_files([
    "LICENSE",
    "tsconfig.json",
])

gazelle(
    name = "gazelle",
    prefix = "github.com/bazelbuild/rules_typescript",
)

# This package is included in the npm_bazel_typescript package in rules_nodejs/packages/typescript
pkg_npm(
    name = "npm_bazel_typescript_package",
    srcs = [
        "//internal:npm_package_assets",
        "//third_party/github.com/bazelbuild/bazel/src/main/protobuf:npm_package_assets",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "//devserver:devserver-darwin",
        "//devserver:devserver-linux",
        "//devserver:devserver-windows",
        "//internal:generated_BUILD",
        "//internal:tsc_wrapped",
    ],
)
