Socket
Socket
Sign inDemoInstall

jest-environment-jsdom

Package Overview
Dependencies
150
Maintainers
3
Versions
271
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 30.0.0-alpha.2 to 30.0.0-alpha.3

35

build/index.d.ts

@@ -8,29 +8,7 @@ /**

/// <reference types="node" />
import {EnvironmentContext, JestEnvironmentConfig} from '@jest/environment';
import BaseEnv from '@jest/environment-jsdom-abstract';
import {Context} from 'vm';
import {JSDOM} from 'jsdom';
import {
EnvironmentContext,
JestEnvironment,
JestEnvironmentConfig,
} from '@jest/environment';
import {LegacyFakeTimers, ModernFakeTimers} from '@jest/fake-timers';
import {Global as Global_2} from '@jest/types';
import {ModuleMocker} from 'jest-mock';
declare class JSDOMEnvironment implements JestEnvironment<number> {
dom: JSDOM | null;
fakeTimers: LegacyFakeTimers<number> | null;
fakeTimersModern: ModernFakeTimers | null;
global: Win;
private errorEventListener;
moduleMocker: ModuleMocker | null;
customExportConditions: Array<string>;
private readonly _configuredExportConditions?;
declare class JSDOMEnvironment extends BaseEnv {
constructor(config: JestEnvironmentConfig, context: EnvironmentContext);
setup(): Promise<void>;
teardown(): Promise<void>;
exportConditions(): Array<string>;
getVmContext(): Context | null;
}

@@ -41,9 +19,2 @@ export default JSDOMEnvironment;

declare type Win = Window &
Global_2.Global & {
Error: {
stackTraceLimit: number;
};
};
export {};

@@ -21,5 +21,5 @@ /*!

exports["default"] = exports.TestEnvironment = void 0;
function _jsdom() {
const data = require("jsdom");
_jsdom = function () {
function JSDOM() {
const data = _interopRequireWildcard(require("jsdom"));
JSDOM = function () {
return data;

@@ -29,5 +29,5 @@ };

}
function _fakeTimers() {
const data = require("@jest/fake-timers");
_fakeTimers = function () {
function _environmentJsdomAbstract() {
const data = _interopRequireDefault(require("@jest/environment-jsdom-abstract"));
_environmentJsdomAbstract = function () {
return data;

@@ -37,16 +37,5 @@ };

}
function _jestMock() {
const data = require("jest-mock");
_jestMock = function () {
return data;
};
return data;
}
function _jestUtil() {
const data = require("jest-util");
_jestUtil = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**

@@ -59,135 +48,6 @@ * Copyright (c) Meta Platforms, Inc. and affiliates.

// The `Window` interface does not have an `Error.stackTraceLimit` property, but
// `JSDOMEnvironment` assumes it is there.
function isString(value) {
return typeof value === 'string';
}
class JSDOMEnvironment {
dom;
fakeTimers;
fakeTimersModern;
global;
errorEventListener;
moduleMocker;
customExportConditions = ['browser'];
_configuredExportConditions;
class JSDOMEnvironment extends _environmentJsdomAbstract().default {
constructor(config, context) {
const {
projectConfig
} = config;
const virtualConsole = new (_jsdom().VirtualConsole)();
virtualConsole.sendTo(context.console, {
omitJSDOMErrors: true
});
virtualConsole.on('jsdomError', error => {
context.console.error(error);
});
this.dom = new (_jsdom().JSDOM)(typeof projectConfig.testEnvironmentOptions.html === 'string' ? projectConfig.testEnvironmentOptions.html : '<!DOCTYPE html>', {
pretendToBeVisual: true,
resources: typeof projectConfig.testEnvironmentOptions.userAgent === 'string' ? new (_jsdom().ResourceLoader)({
userAgent: projectConfig.testEnvironmentOptions.userAgent
}) : undefined,
runScripts: 'dangerously',
url: 'http://localhost/',
virtualConsole,
...projectConfig.testEnvironmentOptions
});
const global = this.global = this.dom.window;
if (global == null) {
throw new Error('JSDOM did not return a Window object');
}
// TODO: remove at some point - for "universal" code (code should use `globalThis`)
global.global = global;
// Node's error-message stack size is limited at 10, but it's pretty useful
// to see more than that when a test fails.
this.global.Error.stackTraceLimit = 100;
(0, _jestUtil().installCommonGlobals)(global, projectConfig.globals);
// TODO: remove this ASAP, but it currently causes tests to run really slow
global.Buffer = Buffer;
// Report uncaught errors.
this.errorEventListener = event => {
if (userErrorListenerCount === 0 && event.error != null) {
process.emit('uncaughtException', event.error);
}
};
global.addEventListener('error', this.errorEventListener);
// However, don't report them as uncaught if the user listens to 'error' event.
// In that case, we assume the might have custom error handling logic.
const originalAddListener = global.addEventListener.bind(global);
const originalRemoveListener = global.removeEventListener.bind(global);
let userErrorListenerCount = 0;
global.addEventListener = function (...args) {
if (args[0] === 'error') {
userErrorListenerCount++;
}
return originalAddListener.apply(this, args);
};
global.removeEventListener = function (...args) {
if (args[0] === 'error') {
userErrorListenerCount--;
}
return originalRemoveListener.apply(this, args);
};
if ('customExportConditions' in projectConfig.testEnvironmentOptions) {
const {
customExportConditions
} = projectConfig.testEnvironmentOptions;
if (Array.isArray(customExportConditions) && customExportConditions.every(isString)) {
this._configuredExportConditions = customExportConditions;
} else {
throw new Error('Custom export conditions specified but they are not an array of strings');
}
}
this.moduleMocker = new (_jestMock().ModuleMocker)(global);
this.fakeTimers = new (_fakeTimers().LegacyFakeTimers)({
config: projectConfig,
global: global,
moduleMocker: this.moduleMocker,
timerConfig: {
idToRef: id => id,
refToId: ref => ref
}
});
this.fakeTimersModern = new (_fakeTimers().ModernFakeTimers)({
config: projectConfig,
global: global
});
super(config, context, JSDOM());
}
// eslint-disable-next-line @typescript-eslint/no-empty-function
async setup() {}
async teardown() {
if (this.fakeTimers) {
this.fakeTimers.dispose();
}
if (this.fakeTimersModern) {
this.fakeTimersModern.dispose();
}
if (this.global != null) {
if (this.errorEventListener) {
this.global.removeEventListener('error', this.errorEventListener);
}
this.global.close();
}
this.errorEventListener = null;
// @ts-expect-error: this.global not allowed to be `null`
this.global = null;
this.dom = null;
this.fakeTimers = null;
this.fakeTimersModern = null;
}
exportConditions() {
return this._configuredExportConditions ?? this.customExportConditions;
}
getVmContext() {
if (this.dom) {
return this.dom.getInternalVMContext();
}
return null;
}
}

@@ -194,0 +54,0 @@ exports["default"] = JSDOMEnvironment;

13

package.json
{
"name": "jest-environment-jsdom",
"version": "30.0.0-alpha.2",
"version": "30.0.0-alpha.3",
"repository": {

@@ -22,13 +22,10 @@ "type": "git",

"dependencies": {
"@jest/environment": "30.0.0-alpha.2",
"@jest/fake-timers": "30.0.0-alpha.2",
"@jest/types": "30.0.0-alpha.2",
"@jest/environment": "30.0.0-alpha.3",
"@jest/environment-jsdom-abstract": "30.0.0-alpha.3",
"@types/jsdom": "^21.1.1",
"@types/node": "*",
"jest-mock": "30.0.0-alpha.2",
"jest-util": "30.0.0-alpha.2",
"jsdom": "^22.0.0"
},
"devDependencies": {
"@jest/test-utils": "30.0.0-alpha.2"
"@jest/test-utils": "30.0.0-alpha.3"
},

@@ -49,3 +46,3 @@ "peerDependencies": {

},
"gitHead": "c04d13d7abd22e47b0997f6027886aed225c9ce4"
"gitHead": "e267aff33d105399f2134bad7c8f82285104f3da"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc