123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.getExtensionDescription = getExtensionDescription;
- exports.ExplorerBase = void 0;
- var _path = _interopRequireDefault(require("path"));
- var _loaders = require("./loaders");
- var _getPropertyByPath = require("./getPropertyByPath");
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- class ExplorerBase {
- constructor(options) {
- if (options.cache === true) {
- this.loadCache = new Map();
- this.searchCache = new Map();
- }
- this.config = options;
- this.validateConfig();
- }
- clearLoadCache() {
- if (this.loadCache) {
- this.loadCache.clear();
- }
- }
- clearSearchCache() {
- if (this.searchCache) {
- this.searchCache.clear();
- }
- }
- clearCaches() {
- this.clearLoadCache();
- this.clearSearchCache();
- }
- validateConfig() {
- const config = this.config;
- config.searchPlaces.forEach(place => {
- const loaderKey = _path.default.extname(place) || 'noExt';
- const loader = config.loaders[loaderKey];
- if (!loader) {
- throw new Error(`No loader specified for ${getExtensionDescription(place)}, so searchPlaces item "${place}" is invalid`);
- }
- if (typeof loader !== 'function') {
- throw new Error(`loader for ${getExtensionDescription(place)} is not a function (type provided: "${typeof loader}"), so searchPlaces item "${place}" is invalid`);
- }
- });
- }
- shouldSearchStopWithResult(result) {
- if (result === null) return false;
- if (result.isEmpty && this.config.ignoreEmptySearchPlaces) return false;
- return true;
- }
- nextDirectoryToSearch(currentDir, currentResult) {
- if (this.shouldSearchStopWithResult(currentResult)) {
- return null;
- }
- const nextDir = nextDirUp(currentDir);
- if (nextDir === currentDir || currentDir === this.config.stopDir) {
- return null;
- }
- return nextDir;
- }
- loadPackageProp(filepath, content) {
- const parsedContent = _loaders.loaders.loadJson(filepath, content);
- const packagePropValue = (0, _getPropertyByPath.getPropertyByPath)(parsedContent, this.config.packageProp);
- return packagePropValue || null;
- }
- getLoaderEntryForFile(filepath) {
- if (_path.default.basename(filepath) === 'package.json') {
- const loader = this.loadPackageProp.bind(this);
- return loader;
- }
- const loaderKey = _path.default.extname(filepath) || 'noExt';
- const loader = this.config.loaders[loaderKey];
- if (!loader) {
- throw new Error(`No loader specified for ${getExtensionDescription(filepath)}`);
- }
- return loader;
- }
- loadedContentToCosmiconfigResult(filepath, loadedContent) {
- if (loadedContent === null) {
- return null;
- }
- if (loadedContent === undefined) {
- return {
- filepath,
- config: undefined,
- isEmpty: true
- };
- }
- return {
- config: loadedContent,
- filepath
- };
- }
- validateFilePath(filepath) {
- if (!filepath) {
- throw new Error('load must pass a non-empty string');
- }
- }
- }
- exports.ExplorerBase = ExplorerBase;
- function nextDirUp(dir) {
- return _path.default.dirname(dir);
- }
- function getExtensionDescription(filepath) {
- const ext = _path.default.extname(filepath);
- return ext ? `extension "${ext}"` : 'files without extensions';
- }
|