Update the license headers throughout the repository to reference Google LLC rather than Google Inc, for the required license headers. PR Close #37205
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| 
 | |
| import * as path from 'path';
 | |
| 
 | |
| const EXT = /(\.ts|\.d\.ts|\.js|\.jsx|\.tsx)$/;
 | |
| 
 | |
| export interface TsConfigOptions {
 | |
|   defaultTsConfig: any;
 | |
|   outDir: string;
 | |
|   rootDir: string;
 | |
|   pathMapping: {[pattern: string]: string[]};
 | |
|   // e.g. //packages/core:core
 | |
|   target: string;
 | |
|   compilationTargetSrc: string[];
 | |
|   files: string[];
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Creates a tsconfig based on the default tsconfig
 | |
|  * to adjust paths, ...
 | |
|  *
 | |
|  * @param options
 | |
|  */
 | |
| export function createTsConfig(options: TsConfigOptions) {
 | |
|   const result = options.defaultTsConfig;
 | |
| 
 | |
|   return {
 | |
|     'compilerOptions': {
 | |
|       ...result.compilerOptions,
 | |
|       'outDir': options.outDir,
 | |
|       'rootDir': options.rootDir,
 | |
|       'rootDirs': [
 | |
|         options.rootDir,
 | |
|       ],
 | |
|       'baseUrl': options.rootDir,
 | |
|       'paths': {
 | |
|         '*': [
 | |
|           './*',
 | |
|         ],
 | |
|         ...options.pathMapping,
 | |
|       },
 | |
|       // we have to set this as the default tsconfig is made of es6 mode
 | |
|       'target': 'es5',
 | |
|       // we have to set this as the default tsconfig is made of es6 mode
 | |
|       'module': 'commonjs',
 | |
|       // if we specify declarationDir, we also have to specify
 | |
|       // declaration in the same tsconfig.json, otherwise ts will error.
 | |
|       'declaration': true,
 | |
|       'declarationDir': options.outDir,
 | |
|       'skipLibCheck': true,
 | |
|     },
 | |
|     'bazelOptions': {
 | |
|       ...result.bazelOptions,
 | |
|       'workspaceName': 'angular',
 | |
|       'target': options.target,
 | |
|       // we have to set this as the default tsconfig is made of es6 mode
 | |
|       'es5Mode': true,
 | |
|       'manifest': createManifestPath(options),
 | |
|       'compilationTargetSrc': options.compilationTargetSrc,
 | |
|       // Override this property from the real tsconfig we read
 | |
|       // Because we ask for :empty_tsconfig.json, we get the ES6 version which
 | |
|       // expects to write externs, yet that doesn't work under this fixture.
 | |
|       'tsickleExternsPath': '',
 | |
|       // we don't copy the node_modules into our tmp dir, so we should look in
 | |
|       // the original workspace directory for it
 | |
|       'nodeModulesPrefix':
 | |
|           path.join(require.resolve('npm/node_modules/typescript/package.json'), '../../'),
 | |
|     },
 | |
|     'files': options.files,
 | |
|     'angularCompilerOptions': {
 | |
|       ...result.angularCompilerOptions,
 | |
|       'expectedOut': [
 | |
|         ...options.compilationTargetSrc.map(src => srcToExpectedOut(src, 'js', options)),
 | |
|         ...options.compilationTargetSrc.map(src => srcToExpectedOut(src, 'd.ts', options)),
 | |
|         ...options.compilationTargetSrc.map(src => srcToExpectedOut(src, 'ngfactory.js', options)),
 | |
|         ...options.compilationTargetSrc.map(
 | |
|             src => srcToExpectedOut(src, 'ngfactory.d.ts', options)),
 | |
|         ...options.compilationTargetSrc.map(src => srcToExpectedOut(src, 'ngsummary.js', options)),
 | |
|         ...options.compilationTargetSrc.map(
 | |
|             src => srcToExpectedOut(src, 'ngsummary.d.ts', options)),
 | |
|         ...options.compilationTargetSrc.map(
 | |
|             src => srcToExpectedOut(src, 'ngsummary.json', options)),
 | |
|       ]
 | |
|     }
 | |
|   };
 | |
| }
 | |
| 
 | |
| function srcToExpectedOut(srcFile: string, suffix: string, options: TsConfigOptions): string {
 | |
|   const baseName = path.basename(srcFile).replace(EXT, '');
 | |
|   return path.join(
 | |
|              path.relative(options.rootDir, options.outDir),
 | |
|              path.relative(options.rootDir, path.dirname(srcFile)), baseName) +
 | |
|       '.' + suffix;
 | |
| }
 | |
| 
 | |
| function createManifestPath(options: TsConfigOptions): string {
 | |
|   return path.resolve(options.outDir, options.target.replace(/\/\/|@/g, '').replace(/:/g, '/')) +
 | |
|       '.es5.MF';
 | |
| }
 |