1/* 2 * Copyright (c) 2022-2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import * as ts from 'typescript'; 17import type { CommandLineOptions } from '../../lib/CommandLineOptions'; 18 19export function formTscOptions( 20 cmdOptions: CommandLineOptions, 21 overrideCompilerOptions: ts.CompilerOptions 22): ts.CreateProgramOptions { 23 if (cmdOptions.parsedConfigFile) { 24 const options: ts.CreateProgramOptions = { 25 rootNames: cmdOptions.parsedConfigFile.fileNames, 26 options: cmdOptions.parsedConfigFile.options, 27 projectReferences: cmdOptions.parsedConfigFile.projectReferences, 28 configFileParsingDiagnostics: ts.getConfigFileParsingDiagnostics(cmdOptions.parsedConfigFile) 29 }; 30 options.options = Object.assign(options.options, overrideCompilerOptions); 31 return options; 32 } 33 const options: ts.CreateProgramOptions = { 34 rootNames: cmdOptions.inputFiles, 35 options: { 36 target: ts.ScriptTarget.Latest, 37 module: ts.ModuleKind.CommonJS, 38 allowJs: true, 39 checkJs: true 40 } 41 }; 42 options.options = Object.assign(options.options, overrideCompilerOptions); 43 return options; 44} 45