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.
		
		
		
		
		
			
		
			
				
					118 lines
				
				3.1 KiB
			
		
		
			
		
	
	
					118 lines
				
				3.1 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.ExplorerSync = void 0; | ||
|  | 
 | ||
|  | var _path = _interopRequireDefault(require("path")); | ||
|  | 
 | ||
|  | var _ExplorerBase = require("./ExplorerBase"); | ||
|  | 
 | ||
|  | var _readFile = require("./readFile"); | ||
|  | 
 | ||
|  | var _cacheWrapper = require("./cacheWrapper"); | ||
|  | 
 | ||
|  | var _getDirectory = require("./getDirectory"); | ||
|  | 
 | ||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|  | 
 | ||
|  | class ExplorerSync extends _ExplorerBase.ExplorerBase { | ||
|  |   constructor(options) { | ||
|  |     super(options); | ||
|  |   } | ||
|  | 
 | ||
|  |   searchSync(searchFrom = process.cwd()) { | ||
|  |     const startDirectory = (0, _getDirectory.getDirectorySync)(searchFrom); | ||
|  |     const result = this.searchFromDirectorySync(startDirectory); | ||
|  |     return result; | ||
|  |   } | ||
|  | 
 | ||
|  |   searchFromDirectorySync(dir) { | ||
|  |     const absoluteDir = _path.default.resolve(process.cwd(), dir); | ||
|  | 
 | ||
|  |     const run = () => { | ||
|  |       const result = this.searchDirectorySync(absoluteDir); | ||
|  |       const nextDir = this.nextDirectoryToSearch(absoluteDir, result); | ||
|  | 
 | ||
|  |       if (nextDir) { | ||
|  |         return this.searchFromDirectorySync(nextDir); | ||
|  |       } | ||
|  | 
 | ||
|  |       const transformResult = this.config.transform(result); | ||
|  |       return transformResult; | ||
|  |     }; | ||
|  | 
 | ||
|  |     if (this.searchCache) { | ||
|  |       return (0, _cacheWrapper.cacheWrapperSync)(this.searchCache, absoluteDir, run); | ||
|  |     } | ||
|  | 
 | ||
|  |     return run(); | ||
|  |   } | ||
|  | 
 | ||
|  |   searchDirectorySync(dir) { | ||
|  |     for (const place of this.config.searchPlaces) { | ||
|  |       const placeResult = this.loadSearchPlaceSync(dir, place); | ||
|  | 
 | ||
|  |       if (this.shouldSearchStopWithResult(placeResult) === true) { | ||
|  |         return placeResult; | ||
|  |       } | ||
|  |     } // config not found
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     return null; | ||
|  |   } | ||
|  | 
 | ||
|  |   loadSearchPlaceSync(dir, place) { | ||
|  |     const filepath = _path.default.join(dir, place); | ||
|  | 
 | ||
|  |     const content = (0, _readFile.readFileSync)(filepath); | ||
|  |     const result = this.createCosmiconfigResultSync(filepath, content); | ||
|  |     return result; | ||
|  |   } | ||
|  | 
 | ||
|  |   loadFileContentSync(filepath, content) { | ||
|  |     if (content === null) { | ||
|  |       return null; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (content.trim() === '') { | ||
|  |       return undefined; | ||
|  |     } | ||
|  | 
 | ||
|  |     const loader = this.getLoaderEntryForFile(filepath); | ||
|  |     const loaderResult = loader(filepath, content); | ||
|  |     return loaderResult; | ||
|  |   } | ||
|  | 
 | ||
|  |   createCosmiconfigResultSync(filepath, content) { | ||
|  |     const fileContent = this.loadFileContentSync(filepath, content); | ||
|  |     const result = this.loadedContentToCosmiconfigResult(filepath, fileContent); | ||
|  |     return result; | ||
|  |   } | ||
|  | 
 | ||
|  |   loadSync(filepath) { | ||
|  |     this.validateFilePath(filepath); | ||
|  | 
 | ||
|  |     const absoluteFilePath = _path.default.resolve(process.cwd(), filepath); | ||
|  | 
 | ||
|  |     const runLoadSync = () => { | ||
|  |       const content = (0, _readFile.readFileSync)(absoluteFilePath, { | ||
|  |         throwNotFound: true | ||
|  |       }); | ||
|  |       const cosmiconfigResult = this.createCosmiconfigResultSync(absoluteFilePath, content); | ||
|  |       const transformResult = this.config.transform(cosmiconfigResult); | ||
|  |       return transformResult; | ||
|  |     }; | ||
|  | 
 | ||
|  |     if (this.loadCache) { | ||
|  |       return (0, _cacheWrapper.cacheWrapperSync)(this.loadCache, absoluteFilePath, runLoadSync); | ||
|  |     } | ||
|  | 
 | ||
|  |     return runLoadSync(); | ||
|  |   } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | exports.ExplorerSync = ExplorerSync; | ||
|  | //# sourceMappingURL=ExplorerSync.js.map
 |