You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					159 lines
				
				4.5 KiB
			
		
		
			
		
	
	
					159 lines
				
				4.5 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								var fs = require("fs");
							 | 
						||
| 
								 | 
							
								var path = require("path");
							 | 
						||
| 
								 | 
							
								var stripBom = require("strip-bom");
							 | 
						||
| 
								 | 
							
								var stripComments = require("strip-json-comments");
							 | 
						||
| 
								 | 
							
								var CONFIG_FILENAME = 'tsconfig.json';
							 | 
						||
| 
								 | 
							
								function resolve(cwd, filename) {
							 | 
						||
| 
								 | 
							
								    if (!filename) {
							 | 
						||
| 
								 | 
							
								        return find(cwd);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    var fullPath = path.resolve(cwd, filename);
							 | 
						||
| 
								 | 
							
								    return stat(fullPath)
							 | 
						||
| 
								 | 
							
								        .then(function (stats) {
							 | 
						||
| 
								 | 
							
								        if (isFile(stats)) {
							 | 
						||
| 
								 | 
							
								            return fullPath;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if (isDirectory(stats)) {
							 | 
						||
| 
								 | 
							
								            var configFile_1 = path.join(fullPath, CONFIG_FILENAME);
							 | 
						||
| 
								 | 
							
								            return stat(configFile_1)
							 | 
						||
| 
								 | 
							
								                .then(function (stats) {
							 | 
						||
| 
								 | 
							
								                if (isFile(stats)) {
							 | 
						||
| 
								 | 
							
								                    return configFile_1;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                throw new TypeError("Cannot find a " + CONFIG_FILENAME + " file at the specified directory: " + filename);
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        throw new TypeError("The specified path does not exist: " + filename);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.resolve = resolve;
							 | 
						||
| 
								 | 
							
								function resolveSync(cwd, filename) {
							 | 
						||
| 
								 | 
							
								    if (!filename) {
							 | 
						||
| 
								 | 
							
								        return findSync(cwd);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    var fullPath = path.resolve(cwd, filename);
							 | 
						||
| 
								 | 
							
								    var stats = statSync(fullPath);
							 | 
						||
| 
								 | 
							
								    if (isFile(stats)) {
							 | 
						||
| 
								 | 
							
								        return fullPath;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    if (isDirectory(stats)) {
							 | 
						||
| 
								 | 
							
								        var configFile = path.join(fullPath, CONFIG_FILENAME);
							 | 
						||
| 
								 | 
							
								        var stats_1 = statSync(configFile);
							 | 
						||
| 
								 | 
							
								        if (isFile(stats_1)) {
							 | 
						||
| 
								 | 
							
								            return configFile;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        throw new TypeError("Cannot find a " + CONFIG_FILENAME + " file at the specified directory: " + filename);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    throw new TypeError("The specified path does not exist: " + filename);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.resolveSync = resolveSync;
							 | 
						||
| 
								 | 
							
								function find(dir) {
							 | 
						||
| 
								 | 
							
								    var configFile = path.resolve(dir, CONFIG_FILENAME);
							 | 
						||
| 
								 | 
							
								    return stat(configFile)
							 | 
						||
| 
								 | 
							
								        .then(function (stats) {
							 | 
						||
| 
								 | 
							
								        if (isFile(stats)) {
							 | 
						||
| 
								 | 
							
								            return configFile;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        var parentDir = path.dirname(dir);
							 | 
						||
| 
								 | 
							
								        if (dir === parentDir) {
							 | 
						||
| 
								 | 
							
								            return;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return find(parentDir);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.find = find;
							 | 
						||
| 
								 | 
							
								function findSync(dir) {
							 | 
						||
| 
								 | 
							
								    var configFile = path.resolve(dir, CONFIG_FILENAME);
							 | 
						||
| 
								 | 
							
								    var stats = statSync(configFile);
							 | 
						||
| 
								 | 
							
								    if (isFile(stats)) {
							 | 
						||
| 
								 | 
							
								        return configFile;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    var parentDir = path.dirname(dir);
							 | 
						||
| 
								 | 
							
								    if (dir === parentDir) {
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return findSync(parentDir);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.findSync = findSync;
							 | 
						||
| 
								 | 
							
								function load(cwd, filename) {
							 | 
						||
| 
								 | 
							
								    return resolve(cwd, filename)
							 | 
						||
| 
								 | 
							
								        .then(function (path) {
							 | 
						||
| 
								 | 
							
								        if (path == null) {
							 | 
						||
| 
								 | 
							
								            return Promise.resolve({
							 | 
						||
| 
								 | 
							
								                config: {
							 | 
						||
| 
								 | 
							
								                    files: [],
							 | 
						||
| 
								 | 
							
								                    compilerOptions: {}
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            });
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return readFile(path).then(function (config) { return ({ path: path, config: config }); });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.load = load;
							 | 
						||
| 
								 | 
							
								function loadSync(cwd, filename) {
							 | 
						||
| 
								 | 
							
								    var path = resolveSync(cwd, filename);
							 | 
						||
| 
								 | 
							
								    if (path == null) {
							 | 
						||
| 
								 | 
							
								        return {
							 | 
						||
| 
								 | 
							
								            config: {
							 | 
						||
| 
								 | 
							
								                files: [],
							 | 
						||
| 
								 | 
							
								                compilerOptions: {}
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    var config = readFileSync(path);
							 | 
						||
| 
								 | 
							
								    return { path: path, config: config };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.loadSync = loadSync;
							 | 
						||
| 
								 | 
							
								function readFile(filename) {
							 | 
						||
| 
								 | 
							
								    return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								        fs.readFile(filename, 'utf8', function (err, contents) {
							 | 
						||
| 
								 | 
							
								            if (err) {
							 | 
						||
| 
								 | 
							
								                return reject(err);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            try {
							 | 
						||
| 
								 | 
							
								                return resolve(parse(contents, filename));
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            catch (err) {
							 | 
						||
| 
								 | 
							
								                return reject(err);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.readFile = readFile;
							 | 
						||
| 
								 | 
							
								function readFileSync(filename) {
							 | 
						||
| 
								 | 
							
								    var contents = fs.readFileSync(filename, 'utf8');
							 | 
						||
| 
								 | 
							
								    return parse(contents, filename);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.readFileSync = readFileSync;
							 | 
						||
| 
								 | 
							
								function parse(contents, filename) {
							 | 
						||
| 
								 | 
							
								    var data = stripComments(stripBom(contents));
							 | 
						||
| 
								 | 
							
								    if (/^\s*$/.test(data)) {
							 | 
						||
| 
								 | 
							
								        return {};
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return JSON.parse(data);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.parse = parse;
							 | 
						||
| 
								 | 
							
								function stat(filename) {
							 | 
						||
| 
								 | 
							
								    return new Promise(function (resolve, reject) {
							 | 
						||
| 
								 | 
							
								        fs.stat(filename, function (err, stats) {
							 | 
						||
| 
								 | 
							
								            return err ? resolve(undefined) : resolve(stats);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function statSync(filename) {
							 | 
						||
| 
								 | 
							
								    try {
							 | 
						||
| 
								 | 
							
								        return fs.statSync(filename);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    catch (e) {
							 | 
						||
| 
								 | 
							
								        return;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function isFile(stats) {
							 | 
						||
| 
								 | 
							
								    return stats ? stats.isFile() || stats.isFIFO() : false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function isDirectory(stats) {
							 | 
						||
| 
								 | 
							
								    return stats ? stats.isDirectory() : false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=tsconfig.js.map
							 |