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