chromium/tools/typescript/webui_ts_library.gni

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

import("//build/config/features.gni")
import("//tools/typescript/ts_library.gni")
import("//tools/typescript/webui_path_mappings.gni")

template("webui_ts_library") {
  forward_variables_from(invoker,
                         [
                           "root_dir",
                           "out_dir",
                           "composite",
                           "in_files",
                           "definitions",
                           "tsconfig_base",
                           "path_mappings",
                           "manifest_excludes",
                           "enable_source_maps",
                           "webui_context_type",
                           "testonly",
                         ])

  ts_library_target = target_name
  if (defined(invoker.deps)) {
    path_mappings_target = "${target_name}_mappings"
    path_mappings_filename = "path_mappings_${path_mappings_target}.json"
    webui_path_mappings(path_mappings_target) {
      ts_deps = invoker.deps
      visibility = [ ":$ts_library_target" ]
    }
  }

  ts_library(ts_library_target) {
    if (defined(invoker.visibility)) {
      visibility = invoker.visibility
    }
    extra_deps = []
    if (defined(invoker.deps)) {
      deps = invoker.deps
      extra_deps += [ ":$path_mappings_target" ]
      path_mappings_file = "$target_gen_dir/$path_mappings_filename"
    }
    if (defined(invoker.extra_deps)) {
      extra_deps += invoker.extra_deps
    }
  }
}