worker.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. exports.worker = worker;
  6. exports.getSha1 = getSha1;
  7. function _crypto() {
  8. const data = _interopRequireDefault(require('crypto'));
  9. _crypto = function _crypto() {
  10. return data;
  11. };
  12. return data;
  13. }
  14. function _path() {
  15. const data = _interopRequireDefault(require('path'));
  16. _path = function _path() {
  17. return data;
  18. };
  19. return data;
  20. }
  21. function _gracefulFs() {
  22. const data = _interopRequireDefault(require('graceful-fs'));
  23. _gracefulFs = function _gracefulFs() {
  24. return data;
  25. };
  26. return data;
  27. }
  28. var _blacklist = _interopRequireDefault(require('./blacklist'));
  29. var _constants = _interopRequireDefault(require('./constants'));
  30. var dependencyExtractor = _interopRequireWildcard(
  31. require('./lib/dependencyExtractor')
  32. );
  33. function _interopRequireWildcard(obj) {
  34. if (obj && obj.__esModule) {
  35. return obj;
  36. } else {
  37. var newObj = {};
  38. if (obj != null) {
  39. for (var key in obj) {
  40. if (Object.prototype.hasOwnProperty.call(obj, key)) {
  41. var desc =
  42. Object.defineProperty && Object.getOwnPropertyDescriptor
  43. ? Object.getOwnPropertyDescriptor(obj, key)
  44. : {};
  45. if (desc.get || desc.set) {
  46. Object.defineProperty(newObj, key, desc);
  47. } else {
  48. newObj[key] = obj[key];
  49. }
  50. }
  51. }
  52. }
  53. newObj.default = obj;
  54. return newObj;
  55. }
  56. }
  57. function _interopRequireDefault(obj) {
  58. return obj && obj.__esModule ? obj : {default: obj};
  59. }
  60. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  61. try {
  62. var info = gen[key](arg);
  63. var value = info.value;
  64. } catch (error) {
  65. reject(error);
  66. return;
  67. }
  68. if (info.done) {
  69. resolve(value);
  70. } else {
  71. Promise.resolve(value).then(_next, _throw);
  72. }
  73. }
  74. function _asyncToGenerator(fn) {
  75. return function() {
  76. var self = this,
  77. args = arguments;
  78. return new Promise(function(resolve, reject) {
  79. var gen = fn.apply(self, args);
  80. function _next(value) {
  81. asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
  82. }
  83. function _throw(err) {
  84. asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
  85. }
  86. _next(undefined);
  87. });
  88. };
  89. }
  90. const PACKAGE_JSON = _path().default.sep + 'package.json';
  91. let hasteImpl = null;
  92. let hasteImplModulePath = null;
  93. function sha1hex(content) {
  94. return _crypto()
  95. .default.createHash('sha1')
  96. .update(content)
  97. .digest('hex');
  98. }
  99. function worker(_x) {
  100. return _worker.apply(this, arguments);
  101. }
  102. function _worker() {
  103. _worker = _asyncToGenerator(function*(data) {
  104. if (
  105. data.hasteImplModulePath &&
  106. data.hasteImplModulePath !== hasteImplModulePath
  107. ) {
  108. if (hasteImpl) {
  109. throw new Error('jest-haste-map: hasteImplModulePath changed');
  110. }
  111. hasteImplModulePath = data.hasteImplModulePath;
  112. hasteImpl = require(hasteImplModulePath);
  113. }
  114. let content;
  115. let dependencies;
  116. let id;
  117. let module;
  118. let sha1;
  119. const computeDependencies = data.computeDependencies,
  120. computeSha1 = data.computeSha1,
  121. rootDir = data.rootDir,
  122. filePath = data.filePath;
  123. const getContent = () => {
  124. if (content === undefined) {
  125. content = _gracefulFs().default.readFileSync(filePath, 'utf8');
  126. }
  127. return content;
  128. };
  129. if (filePath.endsWith(PACKAGE_JSON)) {
  130. // Process a package.json that is returned as a PACKAGE type with its name.
  131. try {
  132. const fileData = JSON.parse(getContent());
  133. if (fileData.name) {
  134. const relativeFilePath = _path().default.relative(rootDir, filePath);
  135. id = fileData.name;
  136. module = [relativeFilePath, _constants.default.PACKAGE];
  137. }
  138. } catch (err) {
  139. throw new Error(`Cannot parse ${filePath} as JSON: ${err.message}`);
  140. }
  141. } else if (
  142. !_blacklist.default.has(filePath.substr(filePath.lastIndexOf('.')))
  143. ) {
  144. // Process a random file that is returned as a MODULE.
  145. if (hasteImpl) {
  146. id = hasteImpl.getHasteName(filePath);
  147. }
  148. if (computeDependencies) {
  149. const content = getContent();
  150. dependencies = Array.from(
  151. data.dependencyExtractor
  152. ? require(data.dependencyExtractor).extract(
  153. content,
  154. filePath,
  155. dependencyExtractor.extract
  156. )
  157. : dependencyExtractor.extract(content)
  158. );
  159. }
  160. if (id) {
  161. const relativeFilePath = _path().default.relative(rootDir, filePath);
  162. module = [relativeFilePath, _constants.default.MODULE];
  163. }
  164. } // If a SHA-1 is requested on update, compute it.
  165. if (computeSha1) {
  166. sha1 = sha1hex(
  167. getContent() || _gracefulFs().default.readFileSync(filePath)
  168. );
  169. }
  170. return {
  171. dependencies,
  172. id,
  173. module,
  174. sha1
  175. };
  176. });
  177. return _worker.apply(this, arguments);
  178. }
  179. function getSha1(_x2) {
  180. return _getSha.apply(this, arguments);
  181. }
  182. function _getSha() {
  183. _getSha = _asyncToGenerator(function*(data) {
  184. const sha1 = data.computeSha1
  185. ? sha1hex(_gracefulFs().default.readFileSync(data.filePath))
  186. : null;
  187. return {
  188. dependencies: undefined,
  189. id: undefined,
  190. module: undefined,
  191. sha1
  192. };
  193. });
  194. return _getSha.apply(this, arguments);
  195. }