UNPKG

materialuiupgraded

Version:

Material-UI's workspace package

37 lines (32 loc) 1.06 kB
const { JSDOM } = require('jsdom'); const Node = require('jsdom/lib/jsdom/living/node-document-position'); // We can use jsdom-global at some point if maintaining these lists is a burden. const whitelist = ['HTMLElement', 'Performance']; const blacklist = ['sessionStorage', 'localStorage']; function createDOM() { const dom = new JSDOM('', { pretendToBeVisual: true }); global.window = dom.window; global.Node = Node; global.document = dom.window.document; // Not yet supported: https://github.com/jsdom/jsdom/issues/317 global.document.createRange = () => ({ setStart: () => {}, setEnd: () => {}, commonAncestorContainer: { nodeName: 'BODY', ownerDocument: document, }, }); global.navigator = { userAgent: 'node.js', }; Object.keys(dom.window) .filter(key => !blacklist.includes(key)) .concat(whitelist) .forEach(key => { if (typeof global[key] === 'undefined') { global[key] = dom.window[key]; } }); } module.exports = createDOM;