910e62b5创建于 1月15日历史提交
# Copyright 2025 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//third_party/node/node.gni")

# GN rule to run ESlint type-aware checks on TypeScript files. Unlike the ESLint
# checks in tools/web_dev_style/eslint.config.mjs which are run on presubmit,
# these checks require TS type information (provided in the form of a tsconfig
# file) to run.

template("eslint_ts") {
  node(target_name) {
    script = "//ui/webui/resources/tools/eslint_ts.py"

    forward_variables_from(invoker,
                           [
                             "deps",
                             "in_folder",
                             "in_files",
                             "tsconfig",
                             "enable_web_component_missing_deps",
                           ])

    # The file holding the ESLint configuration.
    config_base = "//ui/webui/resources/tools/eslint_ts.config_base.mjs"

    inputs = [
      config_base,
      tsconfig,
      "//ui/webui/resources/tools/webui_eslint_plugin.js",
    ]
    outputs = [ "$target_gen_dir/eslint.config.mjs" ]

    foreach(f, in_files) {
      extension = get_path_info(f, "extension")
      assert(extension == "ts")
      inputs += [ "${in_folder}/${f}" ]
    }

    args = [
             "--in_folder",
             rebase_path(in_folder, root_build_dir),
             "--out_folder",
             rebase_path(target_gen_dir, root_build_dir),
             "--config_base",
             rebase_path(config_base, target_gen_dir),
             "--tsconfig",
             rebase_path(tsconfig, target_gen_dir),
             "--in_files",
           ] + in_files

    if (defined(enable_web_component_missing_deps) &&
        enable_web_component_missing_deps) {
      args += [ "--enable_web_component_missing_deps" ]
    }
  }
}