231 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', {
 | |
|   value: true
 | |
| });
 | |
| exports.worker = worker;
 | |
| exports.getSha1 = getSha1;
 | |
| 
 | |
| function _crypto() {
 | |
|   const data = _interopRequireDefault(require('crypto'));
 | |
| 
 | |
|   _crypto = function _crypto() {
 | |
|     return data;
 | |
|   };
 | |
| 
 | |
|   return data;
 | |
| }
 | |
| 
 | |
| function _path() {
 | |
|   const data = _interopRequireDefault(require('path'));
 | |
| 
 | |
|   _path = function _path() {
 | |
|     return data;
 | |
|   };
 | |
| 
 | |
|   return data;
 | |
| }
 | |
| 
 | |
| function _gracefulFs() {
 | |
|   const data = _interopRequireDefault(require('graceful-fs'));
 | |
| 
 | |
|   _gracefulFs = function _gracefulFs() {
 | |
|     return data;
 | |
|   };
 | |
| 
 | |
|   return data;
 | |
| }
 | |
| 
 | |
| var _blacklist = _interopRequireDefault(require('./blacklist'));
 | |
| 
 | |
| var _constants = _interopRequireDefault(require('./constants'));
 | |
| 
 | |
| var dependencyExtractor = _interopRequireWildcard(
 | |
|   require('./lib/dependencyExtractor')
 | |
| );
 | |
| 
 | |
| 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 asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
 | |
|   try {
 | |
|     var info = gen[key](arg);
 | |
|     var value = info.value;
 | |
|   } catch (error) {
 | |
|     reject(error);
 | |
|     return;
 | |
|   }
 | |
|   if (info.done) {
 | |
|     resolve(value);
 | |
|   } else {
 | |
|     Promise.resolve(value).then(_next, _throw);
 | |
|   }
 | |
| }
 | |
| 
 | |
| function _asyncToGenerator(fn) {
 | |
|   return function() {
 | |
|     var self = this,
 | |
|       args = arguments;
 | |
|     return new Promise(function(resolve, reject) {
 | |
|       var gen = fn.apply(self, args);
 | |
|       function _next(value) {
 | |
|         asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
 | |
|       }
 | |
|       function _throw(err) {
 | |
|         asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
 | |
|       }
 | |
|       _next(undefined);
 | |
|     });
 | |
|   };
 | |
| }
 | |
| 
 | |
| const PACKAGE_JSON = _path().default.sep + 'package.json';
 | |
| let hasteImpl = null;
 | |
| let hasteImplModulePath = null;
 | |
| 
 | |
| function sha1hex(content) {
 | |
|   return _crypto()
 | |
|     .default.createHash('sha1')
 | |
|     .update(content)
 | |
|     .digest('hex');
 | |
| }
 | |
| 
 | |
| function worker(_x) {
 | |
|   return _worker.apply(this, arguments);
 | |
| }
 | |
| 
 | |
| function _worker() {
 | |
|   _worker = _asyncToGenerator(function*(data) {
 | |
|     if (
 | |
|       data.hasteImplModulePath &&
 | |
|       data.hasteImplModulePath !== hasteImplModulePath
 | |
|     ) {
 | |
|       if (hasteImpl) {
 | |
|         throw new Error('jest-haste-map: hasteImplModulePath changed');
 | |
|       }
 | |
| 
 | |
|       hasteImplModulePath = data.hasteImplModulePath;
 | |
|       hasteImpl = require(hasteImplModulePath);
 | |
|     }
 | |
| 
 | |
|     let content;
 | |
|     let dependencies;
 | |
|     let id;
 | |
|     let module;
 | |
|     let sha1;
 | |
|     const computeDependencies = data.computeDependencies,
 | |
|       computeSha1 = data.computeSha1,
 | |
|       rootDir = data.rootDir,
 | |
|       filePath = data.filePath;
 | |
| 
 | |
|     const getContent = () => {
 | |
|       if (content === undefined) {
 | |
|         content = _gracefulFs().default.readFileSync(filePath, 'utf8');
 | |
|       }
 | |
| 
 | |
|       return content;
 | |
|     };
 | |
| 
 | |
|     if (filePath.endsWith(PACKAGE_JSON)) {
 | |
|       // Process a package.json that is returned as a PACKAGE type with its name.
 | |
|       try {
 | |
|         const fileData = JSON.parse(getContent());
 | |
| 
 | |
|         if (fileData.name) {
 | |
|           const relativeFilePath = _path().default.relative(rootDir, filePath);
 | |
| 
 | |
|           id = fileData.name;
 | |
|           module = [relativeFilePath, _constants.default.PACKAGE];
 | |
|         }
 | |
|       } catch (err) {
 | |
|         throw new Error(`Cannot parse ${filePath} as JSON: ${err.message}`);
 | |
|       }
 | |
|     } else if (
 | |
|       !_blacklist.default.has(filePath.substr(filePath.lastIndexOf('.')))
 | |
|     ) {
 | |
|       // Process a random file that is returned as a MODULE.
 | |
|       if (hasteImpl) {
 | |
|         id = hasteImpl.getHasteName(filePath);
 | |
|       }
 | |
| 
 | |
|       if (computeDependencies) {
 | |
|         const content = getContent();
 | |
|         dependencies = Array.from(
 | |
|           data.dependencyExtractor
 | |
|             ? require(data.dependencyExtractor).extract(
 | |
|                 content,
 | |
|                 filePath,
 | |
|                 dependencyExtractor.extract
 | |
|               )
 | |
|             : dependencyExtractor.extract(content)
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       if (id) {
 | |
|         const relativeFilePath = _path().default.relative(rootDir, filePath);
 | |
| 
 | |
|         module = [relativeFilePath, _constants.default.MODULE];
 | |
|       }
 | |
|     } // If a SHA-1 is requested on update, compute it.
 | |
| 
 | |
|     if (computeSha1) {
 | |
|       sha1 = sha1hex(
 | |
|         getContent() || _gracefulFs().default.readFileSync(filePath)
 | |
|       );
 | |
|     }
 | |
| 
 | |
|     return {
 | |
|       dependencies,
 | |
|       id,
 | |
|       module,
 | |
|       sha1
 | |
|     };
 | |
|   });
 | |
|   return _worker.apply(this, arguments);
 | |
| }
 | |
| 
 | |
| function getSha1(_x2) {
 | |
|   return _getSha.apply(this, arguments);
 | |
| }
 | |
| 
 | |
| function _getSha() {
 | |
|   _getSha = _asyncToGenerator(function*(data) {
 | |
|     const sha1 = data.computeSha1
 | |
|       ? sha1hex(_gracefulFs().default.readFileSync(data.filePath))
 | |
|       : null;
 | |
|     return {
 | |
|       dependencies: undefined,
 | |
|       id: undefined,
 | |
|       module: undefined,
 | |
|       sha1
 | |
|     };
 | |
|   });
 | |
|   return _getSha.apply(this, arguments);
 | |
| }
 |