aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-util/build/installCommonGlobals.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jest-util/build/installCommonGlobals.js')
-rw-r--r--node_modules/jest-util/build/installCommonGlobals.js58
1 files changed, 58 insertions, 0 deletions
diff --git a/node_modules/jest-util/build/installCommonGlobals.js b/node_modules/jest-util/build/installCommonGlobals.js
new file mode 100644
index 000000000..33e58e3ab
--- /dev/null
+++ b/node_modules/jest-util/build/installCommonGlobals.js
@@ -0,0 +1,58 @@
+/**
+* Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
+*
+* This source code is licensed under the BSD-style license found in the
+* LICENSE file in the root directory of this source tree. An additional grant
+* of patent rights can be found in the PATENTS file in the same directory.
+*
+*
+*/
+'use strict';
+
+
+
+
+function deepCopy(obj) {
+ const newObj = {};
+ let value;
+ for (const key in obj) {
+ value = obj[key];
+ if (typeof value === 'object' && value !== null) {
+ value = deepCopy(value);
+ }
+ newObj[key] = value;
+ }
+ return newObj;
+}
+
+module.exports = (global, globals) => {
+ // Forward some APIs
+ global.Buffer = Buffer;
+
+ // `global.process` is mutated by FakeTimers. Make a copy of the
+ // object for the jsdom environment to prevent memory leaks.
+ // Overwrite toString to make it look like the real process object
+ let toStringOverwrite;
+ if (Symbol && Symbol.toStringTag) {
+ // $FlowFixMe
+ toStringOverwrite = {
+ [Symbol.toStringTag]: 'process' };
+
+ }
+ global.process = Object.assign({}, process, toStringOverwrite);
+ global.process.setMaxListeners = process.setMaxListeners.bind(process);
+ global.process.getMaxListeners = process.getMaxListeners.bind(process);
+ global.process.emit = process.emit.bind(process);
+ global.process.addListener = process.addListener.bind(process);
+ global.process.on = process.on.bind(process);
+ global.process.once = process.once.bind(process);
+ global.process.removeListener = process.removeListener.bind(process);
+ global.process.removeAllListeners = process.removeAllListeners.bind(process);
+ global.process.listeners = process.listeners.bind(process);
+ global.process.listenerCount = process.listenerCount.bind(process);
+
+ global.setImmediate = setImmediate;
+ global.clearImmediate = clearImmediate;
+
+ Object.assign(global, deepCopy(globals));
+}; \ No newline at end of file