Project

General

Profile

1
{"version":3,"file":"ngc.js","sourceRoot":"","sources":["../../../../packages/compiler-cli/src/ngc.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Must be imported first, because Angular decorators throw on load.\nimport 'reflect-metadata';\n\nimport {isSyntaxError, syntaxError} from '@angular/compiler';\nimport {MetadataBundler, createBundleIndexHost} from '@angular/tsc-wrapped';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nimport * as api from './transformers/api';\nimport * as ng from './transformers/entry_points';\n\nconst TS_EXT = /\\.ts$/;\n\ntype Diagnostics = ts.Diagnostic[] | api.Diagnostic[];\n\nfunction isTsDiagnostics(diagnostics: any): diagnostics is ts.Diagnostic[] {\n  return diagnostics && diagnostics[0] && (diagnostics[0].file || diagnostics[0].messageText);\n}\n\nfunction formatDiagnostics(cwd: string, diags: Diagnostics): string {\n  if (diags && diags.length) {\n    if (isTsDiagnostics(diags)) {\n      return ts.formatDiagnostics(diags, {\n        getCurrentDirectory: () => cwd,\n        getCanonicalFileName: fileName => fileName,\n        getNewLine: () => ts.sys.newLine\n      });\n    } else {\n      return diags\n          .map(d => {\n            let res = api.DiagnosticCategory[d.category];\n            if (d.span) {\n              res +=\n                  ` at ${d.span.start.file.url}(${d.span.start.line + 1},${d.span.start.col + 1})`;\n            }\n            if (d.span && d.span.details) {\n              res += `: ${d.span.details}, ${d.message}\\n`;\n            } else {\n              res += `: ${d.message}\\n`;\n            }\n            return res;\n          })\n          .join();\n    }\n  } else\n    return '';\n}\n\nfunction check(cwd: string, ...args: Diagnostics[]) {\n  if (args.some(diags => !!(diags && diags[0]))) {\n    throw syntaxError(args.map(diags => {\n                            if (diags && diags[0]) {\n                              return formatDiagnostics(cwd, diags);\n                            }\n                          })\n                          .filter(message => !!message)\n                          .join(''));\n  }\n}\n\nfunction syntheticError(message: string): ts.Diagnostic {\n  return {\n    file: null as any as ts.SourceFile,\n    start: 0,\n    length: 0,\n    messageText: message,\n    category: ts.DiagnosticCategory.Error,\n    code: 0\n  };\n}\n\nexport function readConfiguration(\n    project: string, basePath: string, existingOptions?: ts.CompilerOptions) {\n  // Allow a directory containing tsconfig.json as the project value\n  // Note, TS@next returns an empty array, while earlier versions throw\n  const projectFile =\n      fs.lstatSync(project).isDirectory() ? path.join(project, 'tsconfig.json') : project;\n  let {config, error} = ts.readConfigFile(projectFile, ts.sys.readFile);\n\n  if (error) check(basePath, [error]);\n  const parseConfigHost = {\n    useCaseSensitiveFileNames: true,\n    fileExists: fs.existsSync,\n    readDirectory: ts.sys.readDirectory,\n    readFile: ts.sys.readFile\n  };\n  const parsed = ts.parseJsonConfigFileContent(config, parseConfigHost, basePath, existingOptions);\n\n  check(basePath, parsed.errors);\n\n  // Default codegen goes to the current directory\n  // Parsed options are already converted to absolute paths\n  const ngOptions = config.angularCompilerOptions || {};\n  // Ignore the genDir option\n  ngOptions.genDir = basePath;\n\n  return {parsed, ngOptions};\n}\n\nfunction getProjectDirectory(project: string): string {\n  let isFile: boolean;\n  try {\n    isFile = fs.lstatSync(project).isFile();\n  } catch (e) {\n    // Project doesn't exist. Assume it is a file has an extension. This case happens\n    // when the project file is passed to set basePath but no tsconfig.json file exists.\n    // It is used in tests to ensure that the options can be passed in without there being\n    // an actual config file.\n    isFile = path.extname(project) !== '';\n  }\n\n  // If project refers to a file, the project directory is the file's parent directory\n  // otherwise project is the project directory.\n  return isFile ? path.dirname(project) : project;\n}\n\nexport function performCompilation(\n    basePath: string, files: string[], options: ts.CompilerOptions, ngOptions: any,\n    consoleError: (s: string) => void = console.error, tsCompilerHost?: ts.CompilerHost) {\n  try {\n    ngOptions.basePath = basePath;\n    ngOptions.genDir = basePath;\n\n    let host = tsCompilerHost || ts.createCompilerHost(options, true);\n    host.realpath = p => p;\n\n    const rootFileNames = files.map(f => path.normalize(f));\n\n    const addGeneratedFileName = (fileName: string) => {\n      if (fileName.startsWith(basePath) && TS_EXT.exec(fileName)) {\n        rootFileNames.push(fileName);\n      }\n    };\n\n    if (ngOptions.flatModuleOutFile && !ngOptions.skipMetadataEmit) {\n      const {host: bundleHost, indexName, errors} =\n          createBundleIndexHost(ngOptions, rootFileNames, host);\n      if (errors) check(basePath, errors);\n      if (indexName) addGeneratedFileName(indexName);\n      host = bundleHost;\n    }\n\n    const ngHostOptions = {...options, ...ngOptions};\n    const ngHost = ng.createHost({tsHost: host, options: ngHostOptions});\n\n    const ngProgram =\n        ng.createProgram({rootNames: rootFileNames, host: ngHost, options: ngHostOptions});\n\n    // Check parameter diagnostics\n    check(basePath, ngProgram.getTsOptionDiagnostics(), ngProgram.getNgOptionDiagnostics());\n\n    // Check syntactic diagnostics\n    check(basePath, ngProgram.getTsSyntacticDiagnostics());\n\n    // Check TypeScript semantic and Angular structure diagnostics\n    check(basePath, ngProgram.getTsSemanticDiagnostics(), ngProgram.getNgStructuralDiagnostics());\n\n    // Check Angular semantic diagnostics\n    check(basePath, ngProgram.getNgSemanticDiagnostics());\n\n    ngProgram.emit({\n      emitFlags: api.EmitFlags.Default |\n          ((ngOptions.skipMetadataEmit || ngOptions.flatModuleOutFile) ? 0 : api.EmitFlags.Metadata)\n    });\n  } catch (e) {\n    if (isSyntaxError(e)) {\n      console.error(e.message);\n      consoleError(e.message);\n      return 1;\n    }\n  }\n\n  return 0;\n}\n\n\nexport function main(args: string[], consoleError: (s: string) => void = console.error): number {\n  try {\n    const parsedArgs = require('minimist')(args);\n    const project = parsedArgs.p || parsedArgs.project || '.';\n\n    const projectDir = fs.lstatSync(project).isFile() ? path.dirname(project) : project;\n\n    // file names in tsconfig are resolved relative to this absolute path\n    const basePath = path.resolve(process.cwd(), projectDir);\n    const {parsed, ngOptions} = readConfiguration(project, basePath);\n    return performCompilation(basePath, parsed.fileNames, parsed.options, ngOptions, consoleError);\n  } catch (e) {\n    consoleError(e.stack);\n    consoleError('Compilation failed');\n    return 2;\n  }\n}\n\n// CLI entry point\nif (require.main === module) {\n  process.exit(main(process.argv.slice(2), s => console.error(s)));\n}\n"]}
(18-18/30)