worker.js 5.5 KB

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