250 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', {
 | |
|   value: true
 | |
| });
 | |
| exports.default = void 0;
 | |
| 
 | |
| function _micromatch() {
 | |
|   const data = _interopRequireDefault(require('micromatch'));
 | |
| 
 | |
|   _micromatch = function _micromatch() {
 | |
|     return data;
 | |
|   };
 | |
| 
 | |
|   return data;
 | |
| }
 | |
| 
 | |
| function _jestUtil() {
 | |
|   const data = require('jest-util');
 | |
| 
 | |
|   _jestUtil = function _jestUtil() {
 | |
|     return data;
 | |
|   };
 | |
| 
 | |
|   return data;
 | |
| }
 | |
| 
 | |
| var fastPath = _interopRequireWildcard(require('./lib/fast_path'));
 | |
| 
 | |
| var _constants = _interopRequireDefault(require('./constants'));
 | |
| 
 | |
| function _interopRequireWildcard(obj) {
 | |
|   if (obj && obj.__esModule) {
 | |
|     return obj;
 | |
|   } else {
 | |
|     var newObj = {};
 | |
|     if (obj != null) {
 | |
|       for (var key in obj) {
 | |
|         if (Object.prototype.hasOwnProperty.call(obj, key)) {
 | |
|           var desc =
 | |
|             Object.defineProperty && Object.getOwnPropertyDescriptor
 | |
|               ? Object.getOwnPropertyDescriptor(obj, key)
 | |
|               : {};
 | |
|           if (desc.get || desc.set) {
 | |
|             Object.defineProperty(newObj, key, desc);
 | |
|           } else {
 | |
|             newObj[key] = obj[key];
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|     newObj.default = obj;
 | |
|     return newObj;
 | |
|   }
 | |
| }
 | |
| 
 | |
| function _interopRequireDefault(obj) {
 | |
|   return obj && obj.__esModule ? obj : {default: obj};
 | |
| }
 | |
| 
 | |
| function _defineProperty(obj, key, value) {
 | |
|   if (key in obj) {
 | |
|     Object.defineProperty(obj, key, {
 | |
|       value: value,
 | |
|       enumerable: true,
 | |
|       configurable: true,
 | |
|       writable: true
 | |
|     });
 | |
|   } else {
 | |
|     obj[key] = value;
 | |
|   }
 | |
|   return obj;
 | |
| }
 | |
| 
 | |
| class HasteFS {
 | |
|   constructor({rootDir, files}) {
 | |
|     _defineProperty(this, '_rootDir', void 0);
 | |
| 
 | |
|     _defineProperty(this, '_files', void 0);
 | |
| 
 | |
|     this._rootDir = rootDir;
 | |
|     this._files = files;
 | |
|   }
 | |
| 
 | |
|   getModuleName(file) {
 | |
|     const fileMetadata = this._getFileData(file);
 | |
| 
 | |
|     return (fileMetadata && fileMetadata[_constants.default.ID]) || null;
 | |
|   }
 | |
| 
 | |
|   getSize(file) {
 | |
|     const fileMetadata = this._getFileData(file);
 | |
| 
 | |
|     return (fileMetadata && fileMetadata[_constants.default.SIZE]) || null;
 | |
|   }
 | |
| 
 | |
|   getDependencies(file) {
 | |
|     const fileMetadata = this._getFileData(file);
 | |
| 
 | |
|     if (fileMetadata) {
 | |
|       return fileMetadata[_constants.default.DEPENDENCIES]
 | |
|         ? fileMetadata[_constants.default.DEPENDENCIES].split(
 | |
|             _constants.default.DEPENDENCY_DELIM
 | |
|           )
 | |
|         : [];
 | |
|     } else {
 | |
|       return null;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   getSha1(file) {
 | |
|     const fileMetadata = this._getFileData(file);
 | |
| 
 | |
|     return (fileMetadata && fileMetadata[_constants.default.SHA1]) || null;
 | |
|   }
 | |
| 
 | |
|   exists(file) {
 | |
|     return this._getFileData(file) != null;
 | |
|   }
 | |
| 
 | |
|   getAllFiles() {
 | |
|     return Array.from(this.getAbsoluteFileIterator());
 | |
|   }
 | |
| 
 | |
|   getFileIterator() {
 | |
|     return this._files.keys();
 | |
|   }
 | |
| 
 | |
|   *getAbsoluteFileIterator() {
 | |
|     var _iteratorNormalCompletion = true;
 | |
|     var _didIteratorError = false;
 | |
|     var _iteratorError = undefined;
 | |
| 
 | |
|     try {
 | |
|       for (
 | |
|         var _iterator = this.getFileIterator()[Symbol.iterator](), _step;
 | |
|         !(_iteratorNormalCompletion = (_step = _iterator.next()).done);
 | |
|         _iteratorNormalCompletion = true
 | |
|       ) {
 | |
|         const file = _step.value;
 | |
|         yield fastPath.resolve(this._rootDir, file);
 | |
|       }
 | |
|     } catch (err) {
 | |
|       _didIteratorError = true;
 | |
|       _iteratorError = err;
 | |
|     } finally {
 | |
|       try {
 | |
|         if (!_iteratorNormalCompletion && _iterator.return != null) {
 | |
|           _iterator.return();
 | |
|         }
 | |
|       } finally {
 | |
|         if (_didIteratorError) {
 | |
|           throw _iteratorError;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   matchFiles(pattern) {
 | |
|     if (!(pattern instanceof RegExp)) {
 | |
|       pattern = new RegExp(pattern);
 | |
|     }
 | |
| 
 | |
|     const files = [];
 | |
|     var _iteratorNormalCompletion2 = true;
 | |
|     var _didIteratorError2 = false;
 | |
|     var _iteratorError2 = undefined;
 | |
| 
 | |
|     try {
 | |
|       for (
 | |
|         var _iterator2 = this.getAbsoluteFileIterator()[Symbol.iterator](),
 | |
|           _step2;
 | |
|         !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done);
 | |
|         _iteratorNormalCompletion2 = true
 | |
|       ) {
 | |
|         const file = _step2.value;
 | |
| 
 | |
|         if (pattern.test(file)) {
 | |
|           files.push(file);
 | |
|         }
 | |
|       }
 | |
|     } catch (err) {
 | |
|       _didIteratorError2 = true;
 | |
|       _iteratorError2 = err;
 | |
|     } finally {
 | |
|       try {
 | |
|         if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
 | |
|           _iterator2.return();
 | |
|         }
 | |
|       } finally {
 | |
|         if (_didIteratorError2) {
 | |
|           throw _iteratorError2;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return files;
 | |
|   }
 | |
| 
 | |
|   matchFilesWithGlob(globs, root) {
 | |
|     const files = new Set();
 | |
|     var _iteratorNormalCompletion3 = true;
 | |
|     var _didIteratorError3 = false;
 | |
|     var _iteratorError3 = undefined;
 | |
| 
 | |
|     try {
 | |
|       for (
 | |
|         var _iterator3 = this.getAbsoluteFileIterator()[Symbol.iterator](),
 | |
|           _step3;
 | |
|         !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done);
 | |
|         _iteratorNormalCompletion3 = true
 | |
|       ) {
 | |
|         const file = _step3.value;
 | |
|         const filePath = root ? fastPath.relative(root, file) : file;
 | |
| 
 | |
|         if (
 | |
|           _micromatch().default.some(
 | |
|             (0, _jestUtil().replacePathSepForGlob)(filePath),
 | |
|             globs
 | |
|           )
 | |
|         ) {
 | |
|           files.add(file);
 | |
|         }
 | |
|       }
 | |
|     } catch (err) {
 | |
|       _didIteratorError3 = true;
 | |
|       _iteratorError3 = err;
 | |
|     } finally {
 | |
|       try {
 | |
|         if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
 | |
|           _iterator3.return();
 | |
|         }
 | |
|       } finally {
 | |
|         if (_didIteratorError3) {
 | |
|           throw _iteratorError3;
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     return files;
 | |
|   }
 | |
| 
 | |
|   _getFileData(file) {
 | |
|     const relativePath = fastPath.relative(this._rootDir, file);
 | |
|     return this._files.get(relativePath);
 | |
|   }
 | |
| }
 | |
| 
 | |
| exports.default = HasteFS;
 |