# Copyright 2022 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//ios/web/public/js_messaging/compile_ts.gni") import("//ios/web/public/js_messaging/optimize_js.gni") # Defines a target that compiles a single TypeScript or JavaScript file, # and copies it to the application resources directory. # This template is shorthand for passing a compiled script from # //ios/web/public/js_messaging/compile_ts.gni to # //ios/web/public/js_messaging/optimize_js.gni # # Variables # sources: # A single TypeScript (or JavaScript) file to compile and bundle into the # application. # # output_name: # The name of the exported value or namespace. For more details, see # https://rollupjs.org/guide/en/#outputname # template("optimize_ts") { assert(defined(invoker.sources), "sources must be set") _sources_count = 0 foreach(_, invoker.sources) { _sources_count += 1 } assert(_sources_count == 1, "only a single source may be provided to optimize_ts") _compile_ts_target_name = target_name + "_compile_ts" compile_ts(_compile_ts_target_name) { forward_variables_from(invoker, [ "deps", "sources", "testonly", ]) } optimize_js(target_name) { forward_variables_from(invoker, [ "testonly", "visibility", ]) deps = [ ":$_compile_ts_target_name" ] if (defined(invoker.deps)) { deps += invoker.deps } _invoker_sources = invoker.sources _script_name = get_path_info(_invoker_sources[0], "name") + ".js" _script = filter_include(get_target_outputs(":$_compile_ts_target_name"), [ "*/$_script_name" ]) primary_script = _script[0] if (defined(invoker.output_name)) { output_name = invoker.output_name } sources = _script } }