# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("../../../third_party/typescript/typescript.gni")
import("./copy.gni")
import("./vars.gni")

template("devtools_module") {
  _typescript_target_name = target_name + "-typescript"
  _typescript_target_dep = ":$_typescript_target_name"

  ts_library(_typescript_target_name) {
    forward_variables_from(invoker,
                           [
                             "sources",
                             "deps",
                           ])

    # To make sure that this target can be depended upon by other TypeScript targets,
    # we have to name it the `target_name`. However, we can't name this `ts_library` the
    # `target_name`, as the buildgraph requires the `copy_gen__to_resources` to happen *after*
    # `ts_library` is finished.
    typescript_config_name = invoker.target_name

    reset_timestamps = true

    visibility += [ ":*" ]
  }
  _target_outputs = get_target_outputs(_typescript_target_dep)
  _javascript_implementation_files =
      filter_include(_target_outputs + invoker.data, [ "*.js" ])

  group(target_name) {
    public_deps = [ _typescript_target_dep ] + invoker.public_deps

    visibility = invoker.visibility + [ ":*" ]

    data = _javascript_implementation_files +
           filter_include(invoker.data + _target_outputs, [ "*.map" ])
    if (is_debug) {
      metadata = {
        grd_files = _javascript_implementation_files
      }
    }
  }
}

set_defaults("devtools_module") {
  visibility = []
  data = []
  public_deps = []
}
