feat: createRequire option and disable esm for jest (#7476)

This commit is contained in:
Xin Du (Clark) 2020-06-11 14:59:13 +01:00 committed by GitHub
parent 87f1a8d144
commit db65c2eb6b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 116 additions and 76 deletions

View File

@ -50,6 +50,7 @@
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-jest": "^26.0.1", "babel-jest": "^26.0.1",
"consola": "^2.12.2", "consola": "^2.12.2",
"create-require": "^1.0.1",
"cross-spawn": "^7.0.3", "cross-spawn": "^7.0.3",
"eslint": "^7.2.0", "eslint": "^7.2.0",
"eslint-multiplexer": "^2.0.0", "eslint-multiplexer": "^2.0.0",
@ -64,6 +65,7 @@
"improved-yarn-audit": "^2.1.0", "improved-yarn-audit": "^2.1.0",
"is-wsl": "^2.2.0", "is-wsl": "^2.2.0",
"jest": "^26.0.1", "jest": "^26.0.1",
"jiti": "^0.1.3",
"jsdom": "^16.2.2", "jsdom": "^16.2.2",
"klaw-sync": "^6.0.0", "klaw-sync": "^6.0.0",
"lerna": "^3.22.1", "lerna": "^3.22.1",

View File

@ -12,10 +12,12 @@
"dependencies": { "dependencies": {
"@nuxt/utils": "2.12.1", "@nuxt/utils": "2.12.1",
"consola": "^2.12.2", "consola": "^2.12.2",
"create-require": "^1.0.1",
"defu": "^2.0.4", "defu": "^2.0.4",
"destr": "^0.1.9", "destr": "^0.1.9",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"esm": "^3.2.25", "esm": "^3.2.25",
"jiti": "^0.1.3",
"rc9": "^0.0.7", "rc9": "^0.0.7",
"std-env": "^2.2.1" "std-env": "^2.2.1"
}, },

View File

@ -9,6 +9,8 @@ export default () => ({
debug: undefined, // = dev debug: undefined, // = dev
env: {}, env: {},
createRequire: undefined,
// Target // Target
target: TARGETS.server, target: TARGETS.server,

View File

@ -5,16 +5,20 @@ import consola from 'consola'
import dotenv from 'dotenv' import dotenv from 'dotenv'
import { clearRequireCache, scanRequireTree } from '@nuxt/utils' import { clearRequireCache, scanRequireTree } from '@nuxt/utils'
import esm from 'esm' import esm from 'esm'
import _createRequire from 'create-require'
import destr from 'destr' import destr from 'destr'
import * as rc from 'rc9' import * as rc from 'rc9'
import { defaultNuxtConfigFile } from './config' import { defaultNuxtConfigFile } from './config'
const isJest = typeof jest !== 'undefined'
export async function loadNuxtConfig ({ export async function loadNuxtConfig ({
rootDir = '.', rootDir = '.',
envConfig = {}, envConfig = {},
configFile = defaultNuxtConfigFile, configFile = defaultNuxtConfigFile,
configContext = {}, configContext = {},
configOverrides = {} configOverrides = {},
createRequire = module => isJest ? _createRequire(module.filename) : esm(module)
} = {}) { } = {}) {
rootDir = path.resolve(rootDir) rootDir = path.resolve(rootDir)
@ -52,9 +56,8 @@ export async function loadNuxtConfig ({
if (configFile) { if (configFile) {
// Clear cache // Clear cache
clearRequireCache(configFile) clearRequireCache(configFile)
const _require = createRequire(module)
options = esm(module)(configFile) || {} options = _require(configFile) || {}
if (options.default) { if (options.default) {
options = options.default options = options.default
} }

View File

@ -454,6 +454,22 @@ export function getNuxtConfig (_options) {
staticAssets.versionBase = urlJoin(staticAssets.base, staticAssets.version) staticAssets.versionBase = urlJoin(staticAssets.base, staticAssets.version)
} }
// createRequire factory
if (options.createRequire === undefined) {
const isJest = typeof jest !== 'undefined'
options.createRequire = isJest ? false : 'esm'
}
if (options.createRequire === 'esm') {
const esm = require('esm')
options.createRequire = module => esm(module)
} else if (options.createRequire === 'jiti') {
const jiti = require('jiti')
options.createRequire = module => jiti(module.filename)
} else if (typeof options.createRequire !== 'function') {
const createRequire = require('create-require')
options.createRequire = module => createRequire(module.filename)
}
// ----- Builtin modules ----- // ----- Builtin modules -----
// Loading screen // Loading screen

View File

@ -152,6 +152,7 @@ Object {
"badgeMessages": Array [], "badgeMessages": Array [],
"bannerColor": "green", "bannerColor": "green",
}, },
"createRequire": [MockFunction],
"css": Array [], "css": Array [],
"debug": false, "debug": false,
"dev": false, "dev": false,

View File

@ -134,6 +134,7 @@ Object {
"badgeMessages": Array [], "badgeMessages": Array [],
"bannerColor": "green", "bannerColor": "green",
}, },
"createRequire": undefined,
"css": Array [], "css": Array [],
"debug": undefined, "debug": undefined,
"dev": false, "dev": false,
@ -503,6 +504,7 @@ Object {
"badgeMessages": Array [], "badgeMessages": Array [],
"bannerColor": "green", "bannerColor": "green",
}, },
"createRequire": undefined,
"css": Array [], "css": Array [],
"debug": undefined, "debug": undefined,
"dev": false, "dev": false,

View File

@ -26,7 +26,14 @@ describe('config: options', () => {
jest.spyOn(path, 'resolve').mockImplementation((...args) => args.join('/').replace(/\\+/, '/')) jest.spyOn(path, 'resolve').mockImplementation((...args) => args.join('/').replace(/\\+/, '/'))
jest.spyOn(path, 'join').mockImplementation((...args) => args.join('/').replace(/\\+/, '/')) jest.spyOn(path, 'join').mockImplementation((...args) => args.join('/').replace(/\\+/, '/'))
expect(getNuxtConfig({ generate: { staticAssets: { version: 'x' } } })).toMatchSnapshot() expect(getNuxtConfig({
createRequire: jest.fn(),
generate: {
staticAssets: {
version: 'x'
}
}
})).toMatchSnapshot()
process.cwd.mockRestore() process.cwd.mockRestore()
path.resolve.mockRestore() path.resolve.mockRestore()

View File

@ -1,7 +1,6 @@
import { resolve, join } from 'path' import { resolve, join } from 'path'
import fs from 'fs-extra' import fs from 'fs-extra'
import consola from 'consola' import consola from 'consola'
import esm from 'esm'
import { import {
startsWithRootAlias, startsWithRootAlias,
@ -21,8 +20,8 @@ export default class Resolver {
this.resolveModule = this.resolveModule.bind(this) this.resolveModule = this.resolveModule.bind(this)
this.requireModule = this.requireModule.bind(this) this.requireModule = this.requireModule.bind(this)
// ESM Loader const { createRequire } = this.options
this.esm = esm(module) this._require = createRequire ? createRequire(module) : module.require
this._resolve = require.resolve this._resolve = require.resolve
} }
@ -160,7 +159,7 @@ export default class Resolver {
// Try to require // Try to require
try { try {
if (useESM) { if (useESM) {
requiredModule = this.esm(resolvedPath) requiredModule = this._require(resolvedPath)
} else { } else {
requiredModule = require(resolvedPath) requiredModule = require(resolvedPath)
} }

View File

@ -1,5 +1,4 @@
import path from 'path' import path from 'path'
import esm from 'esm'
import fs from 'fs-extra' import fs from 'fs-extra'
import consola from 'consola' import consola from 'consola'
import { startsWithRootAlias, startsWithSrcAlias } from '@nuxt/utils' import { startsWithRootAlias, startsWithSrcAlias } from '@nuxt/utils'
@ -29,8 +28,7 @@ describe.posix('core: resolver', () => {
expect(resolver.resolveAlias).toBeInstanceOf(Function) expect(resolver.resolveAlias).toBeInstanceOf(Function)
expect(resolver.resolveModule).toBeInstanceOf(Function) expect(resolver.resolveModule).toBeInstanceOf(Function)
expect(resolver.requireModule).toBeInstanceOf(Function) expect(resolver.requireModule).toBeInstanceOf(Function)
expect(resolver.esm).toEqual(expect.any(Function)) expect(resolver._require).toEqual(expect.any(Function))
expect(esm).toBeCalledTimes(1)
}) })
test('should call require.resolve in resolveModule', () => { test('should call require.resolve in resolveModule', () => {
@ -351,7 +349,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = x => x resolver.resolvePath = x => x
resolver.esm = jest.fn(() => ({ default: 'resolved module' })) resolver._require = jest.fn(() => ({ default: 'resolved module' }))
const resolvedModule = resolver.requireModule('/var/nuxt/resolver/module.js') const resolvedModule = resolver.requireModule('/var/nuxt/resolver/module.js')
@ -363,7 +361,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = x => x resolver.resolvePath = x => x
resolver.esm = jest.fn(() => 'resolved module') resolver._require = jest.fn(() => 'resolved module')
const resolvedModule = resolver.requireModule('/var/nuxt/resolver/module.js') const resolvedModule = resolver.requireModule('/var/nuxt/resolver/module.js')
@ -375,7 +373,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = x => x resolver.resolvePath = x => x
resolver.esm = jest.fn(() => ({ default: 'resolved module' })) resolver._require = jest.fn(() => ({ default: 'resolved module' }))
const resolvedModule = resolver.requireModule('/var/nuxt/resolver/module.js', { interopDefault: false }) const resolvedModule = resolver.requireModule('/var/nuxt/resolver/module.js', { interopDefault: false })
@ -387,7 +385,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = jest.fn(() => 'path') resolver.resolvePath = jest.fn(() => 'path')
resolver.esm = jest.fn(() => ({ default: 'resolved module' })) resolver._require = jest.fn(() => ({ default: 'resolved module' }))
const resolvedModule = resolver.requireModule('path', { useESM: false }) const resolvedModule = resolver.requireModule('path', { useESM: false })
@ -399,7 +397,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = jest.fn(() => { throw new Error('resolve failed') }) resolver.resolvePath = jest.fn(() => { throw new Error('resolve failed') })
resolver.esm = jest.fn(() => undefined) resolver._require = jest.fn(() => undefined)
expect(() => resolver.requireModule('/var/nuxt/resolver/module.js')).toThrow('resolve failed') expect(() => resolver.requireModule('/var/nuxt/resolver/module.js')).toThrow('resolve failed')
}) })
@ -409,7 +407,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = jest.fn(() => { throw new Error('resolve failed') }) resolver.resolvePath = jest.fn(() => { throw new Error('resolve failed') })
resolver.esm = jest.fn(() => { throw new Error('resolve esm failed') }) resolver._require = jest.fn(() => { throw new Error('resolve esm failed') })
expect(() => resolver.requireModule('/var/nuxt/resolver/module.js')).toThrow('resolve esm failed') expect(() => resolver.requireModule('/var/nuxt/resolver/module.js')).toThrow('resolve esm failed')
}) })
@ -419,7 +417,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = x => x resolver.resolvePath = x => x
resolver.esm = jest.fn() resolver._require = jest.fn()
resolver.requireModule('/var/nuxt/resolver/file.js', { intropDefault: true }) resolver.requireModule('/var/nuxt/resolver/file.js', { intropDefault: true })
const warnMsg = 'Using intropDefault is deprecated and will be removed in Nuxt 3. Use `interopDefault` instead.' const warnMsg = 'Using intropDefault is deprecated and will be removed in Nuxt 3. Use `interopDefault` instead.'
@ -432,7 +430,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = x => x resolver.resolvePath = x => x
resolver.esm = jest.fn() resolver._require = jest.fn()
resolver.requireModule('/var/nuxt/resolver/file.js', { alias: true }) resolver.requireModule('/var/nuxt/resolver/file.js', { alias: true })
const warnMsg = 'Using alias is deprecated and will be removed in Nuxt 3. Use `isAlias` instead.' const warnMsg = 'Using alias is deprecated and will be removed in Nuxt 3. Use `isAlias` instead.'
@ -445,7 +443,7 @@ describe.posix('core: resolver', () => {
options: {} options: {}
}) })
resolver.resolvePath = jest.fn().mockReturnValue('/var/nuxt/resolver/file.js') resolver.resolvePath = jest.fn().mockReturnValue('/var/nuxt/resolver/file.js')
resolver.esm = jest.fn() resolver._require = jest.fn()
resolver.requireModule('/var/nuxt/resolver/file.js', { esm: true }) resolver.requireModule('/var/nuxt/resolver/file.js', { esm: true })
const warnMsg = 'Using esm is deprecated and will be removed in Nuxt 3. Use `useESM` instead.' const warnMsg = 'Using esm is deprecated and will be removed in Nuxt 3. Use `useESM` instead.'

View File

@ -11,9 +11,7 @@ const useCjs = [
const stub = { const stub = {
es: 'export * from \'../src/index\'', es: 'export * from \'../src/index\'',
cjs: `const esm = require('esm') cjs: `const _require = typeof jest === 'undefined' ? require('esm')(module) : require
const _require = esm(module)
const execa = require('execa') const execa = require('execa')

View File

@ -15,8 +15,6 @@ chalk.level = 0
jest.setTimeout(60000) jest.setTimeout(60000)
jest.mock('esm', () => () => require)
consola.mockTypes(() => jest.fn()) consola.mockTypes(() => jest.fn())
function errorTrap (error) { function errorTrap (error) {

112
yarn.lock
View File

@ -1931,18 +1931,18 @@
stack-trace "0.0.10" stack-trace "0.0.10"
"@octokit/auth-token@^2.4.0": "@octokit/auth-token@^2.4.0":
version "2.4.1" version "2.4.2"
resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.1.tgz#375d79eebd03750e6a9b0299e80b8167c7c85655" resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz#10d0ae979b100fa6b72fa0e8e63e27e6d0dbff8a"
integrity sha512-NB81O5h39KfHYGtgfWr2booRxp2bWOJoqbWwbyUg2hw6h35ArWYlAST5B3XwAkbdcx13yt84hFXyFP5X0QToWA== integrity sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==
dependencies: dependencies:
"@octokit/types" "^4.0.1" "@octokit/types" "^5.0.0"
"@octokit/endpoint@^6.0.1": "@octokit/endpoint@^6.0.1":
version "6.0.2" version "6.0.3"
resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.2.tgz#e876aafe68d7f9b6c6d80bf29458403f9afe7b2b" resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.3.tgz#dd09b599662d7e1b66374a177ab620d8cdf73487"
integrity sha512-xs1mmCEZ2y4shXCpFjNq3UbmNR+bLzxtZim2L0zfEtj9R6O6kc4qLDvYw66hvO6lUsYzPTM5hMkltbuNAbRAcQ== integrity sha512-Y900+r0gIz+cWp6ytnkibbD95ucEzDSKzlEnaWS52hbCDNcCJYO5mRmWW7HRAnDc7am+N/5Lnd8MppSaTYx1Yg==
dependencies: dependencies:
"@octokit/types" "^4.0.1" "@octokit/types" "^5.0.0"
is-plain-object "^3.0.0" is-plain-object "^3.0.0"
universal-user-agent "^5.0.0" universal-user-agent "^5.0.0"
@ -1990,13 +1990,13 @@
once "^1.4.0" once "^1.4.0"
"@octokit/request@^5.2.0": "@octokit/request@^5.2.0":
version "5.4.4" version "5.4.5"
resolved "https://registry.npmjs.org/@octokit/request/-/request-5.4.4.tgz#dc57e85e86284fa016d0c1a2701a70a10cec4ff2" resolved "https://registry.npmjs.org/@octokit/request/-/request-5.4.5.tgz#8df65bd812047521f7e9db6ff118c06ba84ac10b"
integrity sha512-vqv1lz41c6VTxUvF9nM+a6U+vvP3vGk7drDpr0DVQg4zyqlOiKVrY17DLD6de5okj+YLHKcoqaUZTBtlNZ1BtQ== integrity sha512-atAs5GAGbZedvJXXdjtKljin+e2SltEs48B3naJjqWupYl2IUBbB/CJisyjbNHcKpHzb3E+OYEZ46G8eakXgQg==
dependencies: dependencies:
"@octokit/endpoint" "^6.0.1" "@octokit/endpoint" "^6.0.1"
"@octokit/request-error" "^2.0.0" "@octokit/request-error" "^2.0.0"
"@octokit/types" "^4.0.1" "@octokit/types" "^5.0.0"
deprecation "^2.0.0" deprecation "^2.0.0"
is-plain-object "^3.0.0" is-plain-object "^3.0.0"
node-fetch "^2.3.0" node-fetch "^2.3.0"
@ -2033,9 +2033,16 @@
"@types/node" ">= 8" "@types/node" ">= 8"
"@octokit/types@^4.0.1": "@octokit/types@^4.0.1":
version "4.1.9" version "4.1.10"
resolved "https://registry.npmjs.org/@octokit/types/-/types-4.1.9.tgz#a3e1ff1a15637ab830fbab0268c2d7ca824bc969" resolved "https://registry.npmjs.org/@octokit/types/-/types-4.1.10.tgz#e4029c11e2cc1335051775bc1600e7e740e4aca4"
integrity sha512-hinM/BA2c1vebN2HSR3JtVdYtrSbmvn/doUBZXXuQuh/9o60hYwitQQAGTpJu+k6pjtjURskDHQxUFvqLvYCeA== integrity sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==
dependencies:
"@types/node" ">= 8"
"@octokit/types@^5.0.0":
version "5.0.0"
resolved "https://registry.npmjs.org/@octokit/types/-/types-5.0.0.tgz#cbdf3c060f6c0436c004ec402c5082c32de72511"
integrity sha512-3LVS+MbeqwSd5G4KS8123cZz+hWomsiGeMnQ/QJIBFDwL/YHX8kkr0FZXrgWEMO7Fgi2/VOrhbiFnk9sZ+s4qA==
dependencies: dependencies:
"@types/node" ">= 8" "@types/node" ">= 8"
@ -2302,9 +2309,9 @@
integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
version "2.0.2" version "2.0.3"
resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
"@types/istanbul-lib-report@*": "@types/istanbul-lib-report@*":
version "3.0.0" version "3.0.0"
@ -2322,9 +2329,9 @@
"@types/istanbul-lib-report" "*" "@types/istanbul-lib-report" "*"
"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4": "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4":
version "7.0.4" version "7.0.5"
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==
"@types/keyv@*": "@types/keyv@*":
version "3.1.1" version "3.1.1"
@ -2368,9 +2375,9 @@
"@types/node" "*" "@types/node" "*"
"@types/node@*", "@types/node@>= 8": "@types/node@*", "@types/node@>= 8":
version "14.0.11" version "14.0.13"
resolved "https://registry.npmjs.org/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3" resolved "https://registry.npmjs.org/@types/node/-/node-14.0.13.tgz#ee1128e881b874c371374c1f72201893616417c9"
integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg== integrity sha512-rouEWBImiRaSJsVA+ITTFM6ZxibuAlTuNOCyxVbwreu6k6+ujs7DfnU9o+PShFhET78pMBl3eH+AGSI5eOTkPA==
"@types/node@^12.12.47": "@types/node@^12.12.47":
version "12.12.47" version "12.12.47"
@ -2870,9 +2877,9 @@ acorn@^6.4.1:
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
acorn@^7.1.1, acorn@^7.2.0: acorn@^7.1.1, acorn@^7.2.0:
version "7.2.0" version "7.3.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" resolved "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd"
integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==
agent-base@4, agent-base@^4.3.0: agent-base@4, agent-base@^4.3.0:
version "4.3.0" version "4.3.0"
@ -3881,12 +3888,7 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2" lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0" lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061, caniuse-lite@^1.0.30001081:
version "1.0.30001079"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001079.tgz#ed3e5225cd9a6850984fdd88bf24ce45d69b9c22"
integrity sha512-2KaYheg0iOY+CMmDuAB3DHehrXhhb4OZU4KBVGDr/YKyYAcpudaiUQ9PJ9rxrPlKEoJ3ATasQ5AN48MqpwS43Q==
caniuse-lite@^1.0.30001081:
version "1.0.30001081" version "1.0.30001081"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001081.tgz#40615a3c416a047c5a4d45673e5257bf128eb3b5" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001081.tgz#40615a3c416a047c5a4d45673e5257bf128eb3b5"
integrity sha512-iZdh3lu09jsUtLE6Bp8NAbJskco4Y3UDtkR3GTCJGsbMowBU5IWDFF79sV2ws7lSqTzWyKazxam2thasHymENQ== integrity sha512-iZdh3lu09jsUtLE6Bp8NAbJskco4Y3UDtkR3GTCJGsbMowBU5IWDFF79sV2ws7lSqTzWyKazxam2thasHymENQ==
@ -3932,9 +3934,9 @@ chalk@^3.0.0:
supports-color "^7.1.0" supports-color "^7.1.0"
chalk@^4.0.0: chalk@^4.0.0:
version "4.0.0" version "4.1.0"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
dependencies: dependencies:
ansi-styles "^4.1.0" ansi-styles "^4.1.0"
supports-color "^7.1.0" supports-color "^7.1.0"
@ -4539,6 +4541,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
sha.js "^2.4.8" sha.js "^2.4.8"
create-require@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/create-require/-/create-require-1.0.1.tgz#ae71385b65c41ca68f72ab45e10d9ebba1e408a2"
integrity sha512-ZyXIimEIcq8CWcgMpQ4RxHKSIZN/47eeExkXG5NyA9bGRYqbkCMPvjvwvD74vCPHqAAuCougLTj+jYlpMucXgg==
cross-spawn@^3.0.0: cross-spawn@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
@ -5252,9 +5259,9 @@ ejs@^2.6.1:
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.413: electron-to-chromium@^1.3.413:
version "1.3.464" version "1.3.467"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.464.tgz#fe13feaa08f6f865d3c89d5d72e54c194f463aa5" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.467.tgz#84eeb332134d49f0e49b88588824e56b20af9e27"
integrity sha512-Oo+0+CN9d2z6FToQW6Hwvi9ez09Y/usKwr0tsDsyg43a871zVJCi1nR0v03djLbRNcaCKjtrnVf2XJhTxEpPCg== integrity sha512-U+QgsL8TZDU/n+rDnYDa3hY5uy3C4iry9mrJS0PNBBGwnocuQ+aHSfgY44mdlaK9744X5YqrrGUvD9PxCLY1HA==
elliptic@^6.0.0, elliptic@^6.5.2: elliptic@^6.0.0, elliptic@^6.5.2:
version "6.5.2" version "6.5.2"
@ -5894,9 +5901,9 @@ extract-from-css@^0.4.4:
css "^2.1.0" css "^2.1.0"
extract-zip@^2.0.0: extract-zip@^2.0.0:
version "2.0.0" version "2.0.1"
resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.0.tgz#f53b71d44f4ff5a4527a2259ade000fb8b303492" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
integrity sha512-i42GQ498yibjdvIhivUsRslx608whtGoFIhF26Z7O4MYncBxp8CwalOs1lnHy21A9sIohWO2+uiE4SRtC9JXDg== integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
dependencies: dependencies:
debug "^4.1.1" debug "^4.1.1"
get-stream "^5.1.0" get-stream "^5.1.0"
@ -6514,12 +6521,12 @@ globby@^9.2.0:
slash "^2.0.0" slash "^2.0.0"
globule@^1.0.0: globule@^1.0.0:
version "1.3.1" version "1.3.2"
resolved "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" resolved "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4"
integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==
dependencies: dependencies:
glob "~7.1.1" glob "~7.1.1"
lodash "~4.17.12" lodash "~4.17.10"
minimatch "~3.0.2" minimatch "~3.0.2"
got@^11.3.0: got@^11.3.0:
@ -7959,6 +7966,11 @@ jest@^26.0.1:
import-local "^3.0.2" import-local "^3.0.2"
jest-cli "^26.0.1" jest-cli "^26.0.1"
jiti@^0.1.3:
version "0.1.3"
resolved "https://registry.npmjs.org/jiti/-/jiti-0.1.3.tgz#7d3722f542b7ea1678e2ea96af633fabdc92a31b"
integrity sha512-tsWnOUChON4mJwhIii0W6NvJm1E4soSGW8ImzqQwPwt6rRih0AERBRSEF3QCaShkJuuI6IPNsE9MHtVEWGNqrQ==
js-base64@^2.1.8: js-base64@^2.1.8:
version "2.5.2" version "2.5.2"
resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209"
@ -8391,7 +8403,7 @@ lodash.zip@^4.2.0:
resolved "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" resolved "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020"
integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=
lodash@4.17.15, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.12: lodash@4.17.15, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5, lodash@^4.2.1, lodash@~4.17.10:
version "4.17.15" version "4.17.15"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@ -13483,9 +13495,9 @@ widest-line@^3.1.0:
string-width "^4.0.0" string-width "^4.0.0"
windows-release@^3.1.0: windows-release@^3.1.0:
version "3.3.0" version "3.3.1"
resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" resolved "https://registry.npmjs.org/windows-release/-/windows-release-3.3.1.tgz#cb4e80385f8550f709727287bf71035e209c4ace"
integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== integrity sha512-Pngk/RDCaI/DkuHPlGTdIkDiTAnAkyMjoQMZqRsxydNl1qGXNIoZrB7RK8g53F2tEgQBMqQJHQdYZuQEEAu54A==
dependencies: dependencies:
execa "^1.0.0" execa "^1.0.0"