| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("../../../scripts/build/ninja/vars.gni") |
| import("../../../scripts/build/typescript/typescript.gni") |
| |
| template("devtools_base_module") { |
| ts_library(target_name) { |
| forward_variables_from(invoker, "*", [ "visibility" ]) |
| |
| visibility += [ ":*" ] |
| } |
| } |
| |
| # Legacy exceptions for devtools_module in core and models. |
| # New modules in these directories must use devtools_foundation_module instead. |
| _devtools_module_folder_exceptions = [ |
| "front_end/core/common", |
| "front_end/core/host", |
| "front_end/core/platform/browser", |
| "front_end/core/platform/node", |
| "front_end/core/sdk", |
| "front_end/models/ai_assistance", |
| "front_end/models/bindings", |
| "front_end/models/breakpoints", |
| "front_end/models/crux-manager", |
| "front_end/models/emulation", |
| "front_end/models/extensions", |
| "front_end/models/heap_snapshot", |
| "front_end/models/issues_manager", |
| "front_end/models/live-metrics", |
| "front_end/models/live-metrics/web-vitals-injected", |
| "front_end/models/persistence", |
| "front_end/models/source_map_scopes", |
| "front_end/models/trace", |
| "front_end/models/trace/extras", |
| "front_end/models/trace/handlers", |
| "front_end/models/trace/helpers", |
| "front_end/models/trace/insights", |
| "front_end/models/trace/lantern/core", |
| "front_end/models/trace/lantern/graph", |
| "front_end/models/trace/lantern/metrics", |
| "front_end/models/trace/lantern/simulation", |
| "front_end/models/trace/lantern/types", |
| "front_end/models/trace/types", |
| "front_end/models/trace_source_maps_resolver", |
| "front_end/models/web_mcp", |
| ] |
| |
| _devtools_module_folder_exceptions_full = [] |
| foreach(_dir, _devtools_module_folder_exceptions) { |
| _devtools_module_folder_exceptions_full += |
| [ devtools_location_prepend + _dir ] |
| } |
| |
| template("devtools_module") { |
| _target_dir = get_label_info(":$target_name", "dir") |
| _disallowed = |
| filter_include([ _target_dir ], |
| [ |
| devtools_location_prepend + "front_end/core", |
| devtools_location_prepend + "front_end/core/*", |
| devtools_location_prepend + "front_end/models", |
| devtools_location_prepend + "front_end/models/*", |
| ]) |
| assert( |
| filter_exclude(_disallowed, _devtools_module_folder_exceptions_full) == |
| [], |
| "devtools_module is not allowed in $_target_dir. Use devtools_foundation_module instead.") |
| |
| devtools_base_module(target_name) { |
| forward_variables_from(invoker, "*") |
| } |
| } |
| |
| template("devtools_api_test_module") { |
| devtools_base_module(target_name) { |
| testonly = true |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "additional_type_definitions", |
| "testonly", |
| "ts_deps", |
| ]) |
| if (defined(invoker.additional_type_definitions)) { |
| additional_type_definitions = invoker.additional_type_definitions |
| } else { |
| additional_type_definitions = [] |
| } |
| additional_type_definitions += |
| [ devtools_location_prepend + "test/api/types.d.ts" ] |
| |
| if (defined(invoker.ts_deps)) { |
| ts_deps = invoker.ts_deps |
| } else { |
| ts_deps = [] |
| } |
| ts_deps += [ devtools_location_prepend + "test/api:test_interface_types" ] |
| } |
| } |
| |
| # A module that can run in any runtime we support. As such, it must only use |
| # features and APIs shared across all supported runtimes. |
| # |
| # To check for this we type-check both against browser and node runtime APIs. |
| template("devtools_foundation_module") { |
| _node_type_check_target = target_name + "_node_typecheck" |
| |
| ts_type_check(_node_type_check_target) { |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "deps", |
| "ts_deps", |
| "visibility", |
| ]) |
| |
| if (defined(invoker.ts_deps)) { |
| ts_deps = invoker.ts_deps |
| } |
| if (defined(invoker.deps)) { |
| deps = invoker.deps |
| } |
| |
| es_target = "es2023" |
| es_libs = [] |
| runs_in = "node_esm" |
| } |
| |
| ts_library(target_name) { |
| forward_variables_from(invoker, "*", [ "visibility" ]) |
| |
| es_target = "es2023" |
| es_libs = [ |
| "dom", |
| "dom.iterable", |
| ] |
| |
| visibility += [ ":*" ] |
| |
| public_deps += [ ":$_node_type_check_target" ] |
| } |
| } |
| |
| template("devtools_ui_module") { |
| devtools_base_module(target_name) { |
| forward_variables_from(invoker, "*") |
| |
| es_target = "esnext" |
| es_libs = [ |
| "dom", |
| "dom.iterable", |
| ] |
| } |
| } |
| |
| foreach(module, |
| [ |
| "devtools_api_test_module", |
| "devtools_foundation_module", |
| "devtools_module", |
| "devtools_ui_module", |
| ]) { |
| set_defaults(module) { |
| visibility = [] |
| data = [] |
| public_deps = [] |
| } |
| } |