diff options
Diffstat (limited to 'node_modules/jest-environment-jsdom')
-rw-r--r-- | node_modules/jest-environment-jsdom/LICENSE | 21 | ||||
-rw-r--r-- | node_modules/jest-environment-jsdom/build/index.d.ts | 30 | ||||
-rw-r--r-- | node_modules/jest-environment-jsdom/build/index.js | 195 | ||||
-rw-r--r-- | node_modules/jest-environment-jsdom/package.json | 39 |
4 files changed, 285 insertions, 0 deletions
diff --git a/node_modules/jest-environment-jsdom/LICENSE b/node_modules/jest-environment-jsdom/LICENSE new file mode 100644 index 0000000..b96dcb0 --- /dev/null +++ b/node_modules/jest-environment-jsdom/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/jest-environment-jsdom/build/index.d.ts b/node_modules/jest-environment-jsdom/build/index.d.ts new file mode 100644 index 0000000..9d8aba3 --- /dev/null +++ b/node_modules/jest-environment-jsdom/build/index.d.ts @@ -0,0 +1,30 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +/// <reference types="node" /> +import type { Context } from 'vm'; +import type { EnvironmentContext, JestEnvironment } from '@jest/environment'; +import { LegacyFakeTimers, ModernFakeTimers } from '@jest/fake-timers'; +import type { Config, Global } from '@jest/types'; +import { ModuleMocker } from 'jest-mock'; +declare type Win = Window & Global.Global & { + Error: { + stackTraceLimit: number; + }; +}; +declare class JSDOMEnvironment implements JestEnvironment<number> { + private dom; + fakeTimers: LegacyFakeTimers<number> | null; + fakeTimersModern: ModernFakeTimers | null; + global: Win; + private errorEventListener; + moduleMocker: ModuleMocker | null; + constructor(config: Config.ProjectConfig, options?: EnvironmentContext); + setup(): Promise<void>; + teardown(): Promise<void>; + getVmContext(): Context | null; +} +export = JSDOMEnvironment; diff --git a/node_modules/jest-environment-jsdom/build/index.js b/node_modules/jest-environment-jsdom/build/index.js new file mode 100644 index 0000000..77176ba --- /dev/null +++ b/node_modules/jest-environment-jsdom/build/index.js @@ -0,0 +1,195 @@ +'use strict'; + +function _jsdom() { + const data = require('jsdom'); + + _jsdom = function () { + return data; + }; + + return data; +} + +function _fakeTimers() { + const data = require('@jest/fake-timers'); + + _fakeTimers = function () { + return data; + }; + + return data; +} + +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 _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; +} + +class JSDOMEnvironment { + constructor(config, options) { + _defineProperty(this, 'dom', void 0); + + _defineProperty(this, 'fakeTimers', void 0); + + _defineProperty(this, 'fakeTimersModern', void 0); + + _defineProperty(this, 'global', void 0); + + _defineProperty(this, 'errorEventListener', void 0); + + _defineProperty(this, 'moduleMocker', void 0); + + this.dom = new (_jsdom().JSDOM)( + typeof config.testEnvironmentOptions.html === 'string' + ? config.testEnvironmentOptions.html + : '<!DOCTYPE html>', + { + pretendToBeVisual: true, + resources: + typeof config.testEnvironmentOptions.userAgent === 'string' + ? new (_jsdom().ResourceLoader)({ + userAgent: config.testEnvironmentOptions.userAgent + }) + : undefined, + runScripts: 'dangerously', + url: config.testURL, + virtualConsole: new (_jsdom().VirtualConsole)().sendTo( + (options === null || options === void 0 ? void 0 : options.console) || + console + ), + ...config.testEnvironmentOptions + } + ); + const global = (this.global = this.dom.window.document.defaultView); + + if (!global) { + throw new Error('JSDOM did not return a Window object'); + } // 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, config.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) { + 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; + const originalRemoveListener = global.removeEventListener; + 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); + }; + + this.moduleMocker = new (_jestMock().ModuleMocker)(global); + const timerConfig = { + idToRef: id => id, + refToId: ref => ref + }; + this.fakeTimers = new (_fakeTimers().LegacyFakeTimers)({ + config, + global: global, + moduleMocker: this.moduleMocker, + timerConfig + }); + this.fakeTimersModern = new (_fakeTimers().ModernFakeTimers)({ + config, + global: global + }); + } + + async setup() {} + + async teardown() { + if (this.fakeTimers) { + this.fakeTimers.dispose(); + } + + if (this.fakeTimersModern) { + this.fakeTimersModern.dispose(); + } + + if (this.global) { + if (this.errorEventListener) { + this.global.removeEventListener('error', this.errorEventListener); + } + + this.global.close(); // Dispose "document" to prevent "load" event from triggering. + // Note that this.global.close() will trigger the CustomElement::disconnectedCallback + // Do not reset the document before CustomElement disconnectedCallback function has finished running, + // document should be accessible within disconnectedCallback. + + Object.defineProperty(this.global, 'document', { + value: null + }); + } + + this.errorEventListener = null; // @ts-expect-error + + this.global = null; + this.dom = null; + this.fakeTimers = null; + this.fakeTimersModern = null; + } + + getVmContext() { + if (this.dom) { + return this.dom.getInternalVMContext(); + } + + return null; + } +} + +module.exports = JSDOMEnvironment; diff --git a/node_modules/jest-environment-jsdom/package.json b/node_modules/jest-environment-jsdom/package.json new file mode 100644 index 0000000..0a28a6a --- /dev/null +++ b/node_modules/jest-environment-jsdom/package.json @@ -0,0 +1,39 @@ +{ + "name": "jest-environment-jsdom", + "version": "27.5.1", + "repository": { + "type": "git", + "url": "https://github.com/facebook/jest.git", + "directory": "packages/jest-environment-jsdom" + }, + "license": "MIT", + "main": "./build/index.js", + "types": "./build/index.d.ts", + "exports": { + ".": { + "types": "./build/index.d.ts", + "default": "./build/index.js" + }, + "./package.json": "./package.json" + }, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" + }, + "devDependencies": { + "@jest/test-utils": "^27.5.1", + "@types/jsdom": "^16.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "67c1aa20c5fec31366d733e901fee2b981cb1850" +} |