# 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" ]
}
}
}