installCommonGlobals.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. exports.default = _default;
  6. function _fs() {
  7. const data = _interopRequireDefault(require('fs'));
  8. _fs = function _fs() {
  9. return data;
  10. };
  11. return data;
  12. }
  13. var _createProcessObject = _interopRequireDefault(
  14. require('./createProcessObject')
  15. );
  16. var _deepCyclicCopy = _interopRequireDefault(require('./deepCyclicCopy'));
  17. function _interopRequireDefault(obj) {
  18. return obj && obj.__esModule ? obj : {default: obj};
  19. }
  20. /**
  21. * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
  22. *
  23. * This source code is licensed under the MIT license found in the
  24. * LICENSE file in the root directory of this source tree.
  25. */
  26. const DTRACE = Object.keys(global).filter(key => key.startsWith('DTRACE'));
  27. function _default(globalObject, globals) {
  28. globalObject.process = (0, _createProcessObject.default)();
  29. const symbol = globalObject.Symbol; // Keep a reference to some globals that Jest needs
  30. Object.defineProperties(globalObject, {
  31. [symbol.for('jest-native-promise')]: {
  32. enumerable: false,
  33. value: Promise,
  34. writable: false
  35. },
  36. [symbol.for('jest-native-now')]: {
  37. enumerable: false,
  38. value: globalObject.Date.now.bind(globalObject.Date),
  39. writable: false
  40. },
  41. [symbol.for('jest-native-read-file')]: {
  42. enumerable: false,
  43. value: _fs().default.readFileSync.bind(_fs().default),
  44. writable: false
  45. },
  46. [symbol.for('jest-native-write-file')]: {
  47. enumerable: false,
  48. value: _fs().default.writeFileSync.bind(_fs().default),
  49. writable: false
  50. },
  51. [symbol.for('jest-native-exists-file')]: {
  52. enumerable: false,
  53. value: _fs().default.existsSync.bind(_fs().default),
  54. writable: false
  55. },
  56. 'jest-symbol-do-not-touch': {
  57. enumerable: false,
  58. value: symbol,
  59. writable: false
  60. }
  61. }); // Forward some APIs.
  62. DTRACE.forEach(dtrace => {
  63. // @ts-ignore: no index
  64. globalObject[dtrace] = function(...args) {
  65. // @ts-ignore: no index
  66. return global[dtrace].apply(this, args);
  67. };
  68. }); // Forward some others (this breaks the sandbox but for now it's OK).
  69. globalObject.Buffer = global.Buffer;
  70. globalObject.setImmediate = global.setImmediate;
  71. globalObject.clearImmediate = global.clearImmediate;
  72. return Object.assign(globalObject, (0, _deepCyclicCopy.default)(globals));
  73. }