chore: use @swc/jest vs ts-jest (#1457)

* chore: use @swc/jest vs ts-jest

* chore: fix esm default import issue in tests
This commit is contained in:
Artem Zakharchenko
2022-11-14 17:14:23 +01:00
committed by GitHub
parent 12b8df0a03
commit fd5176f5ed
10 changed files with 307 additions and 243 deletions
+3 -1
View File
@@ -3,6 +3,8 @@ import * as path from 'path'
import chalk from 'chalk'
import { until } from '@open-draft/until'
const { cyan } = chalk
/**
* Copies the given Service Worker source file into the destination.
* Injects the integrity checksum into the destination file.
@@ -46,5 +48,5 @@ export default async function copyServiceWorker(
throw new Error(`Failed to write file.\n${writeFileError.message}`)
}
console.log('Service Worker copied to: %s', chalk.cyan(destFilePath))
console.log('Service Worker copied to: %s', cyan(destFilePath))
}
+1 -1
View File
@@ -2,7 +2,7 @@ module.exports = {
bail: true,
roots: ['<rootDir>/src', '<rootDir>/cli'],
transform: {
'^.+\\.tsx?$': 'ts-jest',
'^.+\\.tsx?$': '@swc/jest',
},
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(j|t)sx?$',
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
+2 -1
View File
@@ -114,6 +114,8 @@
"@commitlint/config-conventional": "^16.0.0",
"@open-draft/test-server": "^0.2.3",
"@ossjs/release": "^0.4.0",
"@swc/core": "^1.3.15",
"@swc/jest": "^0.2.23",
"@types/fs-extra": "^9.0.13",
"@types/jest": "26",
"@types/json-bigint": "^1.0.1",
@@ -142,7 +144,6 @@
"rimraf": "^3.0.2",
"simple-git-hooks": "^2.8.0",
"statuses": "^2.0.0",
"ts-jest": "26",
"ts-loader": "^9.2.6",
"ts-node": "^10.1.0",
"tsup": "^5.12.8",
+4 -2
View File
@@ -1,6 +1,8 @@
module.exports = {
preset: 'ts-jest',
testTimeout: 15000,
transform: {
'^.+\\.tsx?$': '@swc/jest',
},
testTimeout: 10000,
moduleNameMapper: {
'^msw(.*)': '<rootDir>/..$1',
},
@@ -1,10 +1,14 @@
import * as https from 'https'
/**
* @jest-environment node
*/
import https from 'https'
import { rest } from 'msw'
import { setupServer, SetupServerApi } from 'msw/node'
import { setupServer } from 'msw/node'
import { ServerApi, createServer } from '@open-draft/test-server'
import { waitForClientRequest } from '../../../support/utils'
let httpServer: ServerApi
let server: SetupServerApi
const server = setupServer()
beforeAll(async () => {
httpServer = await createServer((app) => {
@@ -13,12 +17,6 @@ beforeAll(async () => {
})
})
server = setupServer(
rest.get(httpServer.https.makeUrl('/user'), (req, res, ctx) => {
return res(ctx.json({ cookies: req.cookies }))
}),
)
server.listen()
})
@@ -27,34 +25,24 @@ afterAll(async () => {
await httpServer.close()
})
test('has access to request cookies', (done) => {
let responseBody = ''
test('has access to request cookies', async () => {
server.use(
rest.get(httpServer.https.makeUrl('/user'), (req, res, ctx) => {
return res(ctx.json({ cookies: req.cookies }))
}),
)
const url = new URL(httpServer.https.makeUrl('/user'))
https.get(
{
method: 'GET',
protocol: url.protocol,
host: url.host,
path: url.pathname,
headers: {
Cookie: 'auth-token=abc-123',
},
const request = https.get({
protocol: url.protocol,
host: url.host,
path: url.pathname,
headers: {
Cookie: 'auth-token=abc-123',
},
(res) => {
res.setEncoding('utf8')
res.on('error', done)
res.on('data', (chunk) => (responseBody += chunk))
res.on('end', () => {
const json = JSON.parse(responseBody)
expect(json).toEqual({
cookies: {
'auth-token': 'abc-123',
},
})
})
const { responseText } = await waitForClientRequest(request)
done()
})
},
)
expect(responseText).toBe('{"cookies":{"auth-token":"abc-123"}}')
})
@@ -1,84 +1,75 @@
/**
* @jest-environment node
*/
import * as http from 'http'
/**
* @note Do not import as wildcard lest the ESM gods be displeased.
* Make sure "allowSyntheticDefaultImports" is true in tsconfig.json.
*/
import http from 'http'
import { ServerApi, createServer } from '@open-draft/test-server'
import { rest } from 'msw'
import { setupServer } from 'msw/node'
import { waitForClientRequest } from '../../../support/utils'
describe('setupServer / http', () => {
const server = setupServer(
rest.get('http://test.mswjs.io', (req, res, ctx) => {
return res(
ctx.status(401),
ctx.set('x-header', 'yes'),
ctx.json({
firstName: 'John',
}),
)
}),
)
let httpServer: ServerApi
const server = setupServer()
beforeAll(() => {
server.listen()
})
beforeAll(async () => {
server.listen()
afterAll(() => {
server.close()
})
describe('given I perform a request using http.get', () => {
let res: http.IncomingMessage
let resBody = ''
beforeAll((done) => {
http.get('http://test.mswjs.io', (message) => {
res = message
res.setEncoding('utf8')
res.on('data', (chunk) => (resBody += chunk))
res.on('end', done)
})
})
test('should return mocked status code', () => {
expect(res.statusCode).toEqual(401)
})
test('should return mocked headers', () => {
expect(res.headers).toHaveProperty('content-type', 'application/json')
expect(res.headers).toHaveProperty('x-header', 'yes')
})
test('should return mocked body', () => {
expect(resBody).toEqual('{"firstName":"John"}')
})
})
describe('given I perform a request using http.request', () => {
let res: http.IncomingMessage
let resBody = ''
beforeAll((done) => {
const req = http.request('http://test.mswjs.io', (message) => {
res = message
res.setEncoding('utf8')
res.on('data', (chunk) => (resBody += chunk))
res.on('end', done)
})
req.end()
})
test('should return mocked status code', () => {
expect(res.statusCode).toEqual(401)
})
test('should return mocked headers', () => {
expect(res.headers).toHaveProperty('content-type', 'application/json')
expect(res.headers).toHaveProperty('x-header', 'yes')
})
test('should return mocked body', () => {
expect(resBody).toEqual('{"firstName":"John"}')
httpServer = await createServer((app) => {
app.get('/resource', (_, res) => {
return res.status(500).send('original-response')
})
})
})
beforeEach(() => {
server.use(
rest.get(httpServer.http.makeUrl('/resource'), (req, res, ctx) => {
return res(
ctx.status(401),
ctx.set('x-header', 'yes'),
ctx.json({ firstName: 'John' }),
)
}),
)
})
afterEach(() => {
server.resetHandlers()
})
afterAll(async () => {
server.close()
await httpServer.close()
})
it('returns a mocked response to an "http.get" request', async () => {
const request = http.get(httpServer.http.makeUrl('/resource'))
const { response, responseText } = await waitForClientRequest(request)
expect(response.statusCode).toBe(401)
expect(response.headers).toEqual(
expect.objectContaining({
'content-type': 'application/json',
'x-header': 'yes',
}),
)
expect(responseText).toBe('{"firstName":"John"}')
})
it('returns a mocked response to an "http.request" request', async () => {
const request = http.request(httpServer.http.makeUrl('/resource'))
request.end()
const { response, responseText } = await waitForClientRequest(request)
expect(response.statusCode).toBe(401)
expect(response.headers).toEqual(
expect.objectContaining({
'content-type': 'application/json',
'x-header': 'yes',
}),
)
expect(responseText).toBe('{"firstName":"John"}')
})
@@ -1,85 +1,71 @@
/**
* @jest-environment node
*/
import * as https from 'https'
import { IncomingMessage } from 'http'
import https from 'https'
import { ServerApi, createServer } from '@open-draft/test-server'
import { rest } from 'msw'
import { setupServer } from 'msw/node'
import { waitForClientRequest } from '../../../support/utils'
describe('setupServer / https', () => {
const server = setupServer(
rest.get('https://test.mswjs.io', (req, res, ctx) => {
return res(
ctx.status(401),
ctx.set('x-header', 'yes'),
ctx.json({
firstName: 'John',
}),
)
}),
)
let httpServer: ServerApi
const server = setupServer()
beforeAll(() => {
server.listen()
})
beforeAll(async () => {
server.listen()
afterAll(() => {
server.close()
})
describe('given I perform a request using https.get', () => {
let res: IncomingMessage
let resBody = ''
beforeAll((done) => {
https.get('https://test.mswjs.io', (message) => {
res = message
res.setEncoding('utf8')
res.on('data', (chunk) => (resBody += chunk))
res.on('end', done)
})
})
test('should return mocked status code', () => {
expect(res.statusCode).toEqual(401)
})
test('should return mocked headers', () => {
expect(res.headers).toHaveProperty('content-type', 'application/json')
expect(res.headers).toHaveProperty('x-header', 'yes')
})
test('should return mocked body', () => {
expect(resBody).toEqual('{"firstName":"John"}')
})
})
describe('given I perform a request using https.request', () => {
let res: IncomingMessage
let resBody = ''
beforeAll((done) => {
const req = https.request('https://test.mswjs.io', (message) => {
res = message
res.setEncoding('utf8')
res.on('data', (chunk) => (resBody += chunk))
res.on('end', done)
})
req.end()
})
test('should return mocked status code', () => {
expect(res.statusCode).toEqual(401)
})
test('should return mocked headers', () => {
expect(res.headers).toHaveProperty('content-type', 'application/json')
expect(res.headers).toHaveProperty('x-header', 'yes')
})
test('should return mocked body', () => {
expect(resBody).toEqual('{"firstName":"John"}')
httpServer = await createServer((app) => {
app.get('/resource', (_, res) => {
return res.status(500).send('original-response')
})
})
})
beforeEach(() => {
server.use(
rest.get(httpServer.https.makeUrl('/resource'), (req, res, ctx) => {
return res(
ctx.status(401),
ctx.set('x-header', 'yes'),
ctx.json({ firstName: 'John' }),
)
}),
)
})
afterEach(() => {
server.resetHandlers()
})
afterAll(async () => {
server.close()
await httpServer.close()
})
it('returns a mocked response to an "https.get" request', async () => {
const request = https.get(httpServer.https.makeUrl('/resource'))
const { response, responseText } = await waitForClientRequest(request)
expect(response.statusCode).toBe(401)
expect(response.headers).toEqual(
expect.objectContaining({
'content-type': 'application/json',
'x-header': 'yes',
}),
)
expect(responseText).toBe('{"firstName":"John"}')
})
it('returns a mocked response to an "https.request" request', async () => {
const request = https.request(httpServer.https.makeUrl('/resource'))
request.end()
const { response, responseText } = await waitForClientRequest(request)
expect(response.statusCode).toBe(401)
expect(response.headers).toEqual(
expect.objectContaining({
'content-type': 'application/json',
'x-header': 'yes',
}),
)
expect(responseText).toBe('{"firstName":"John"}')
})
+27
View File
@@ -1,5 +1,6 @@
import * as path from 'path'
import { ChildProcess } from 'child_process'
import { ClientRequest, IncomingMessage } from 'http'
export function sleep(duration: number) {
return new Promise((resolve) => {
@@ -43,3 +44,29 @@ export function clearCookies(): void {
.replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`)
})
}
export async function waitForClientRequest(request: ClientRequest): Promise<{
response: IncomingMessage
responseText: string
}> {
return new Promise((resolve, reject) => {
request.once('error', reject)
request.once('abort', () => reject(new Error('Request was aborted')))
request.on('response', (response) => {
response.once('error', reject)
const responseChunks: Array<Buffer> = []
response.on('data', (chunk) => {
responseChunks.push(Buffer.from(chunk))
})
response.once('end', () => {
resolve({
response,
responseText: Buffer.concat(responseChunks).toString('utf8'),
})
})
})
})
}
+2 -1
View File
@@ -1,9 +1,10 @@
{
"compilerOptions": {
"strict": true,
"target": "ES2015",
"moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"declaration": false,
"noEmit": true,
+121 -55
View File
@@ -1541,6 +1541,13 @@
slash "^3.0.0"
strip-ansi "^6.0.0"
"@jest/create-cache-key-function@^27.4.2":
version "27.5.1"
resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31"
integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==
dependencies:
"@jest/types" "^27.5.1"
"@jest/environment@^26.6.2":
version "26.6.2"
resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c"
@@ -1666,6 +1673,17 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
"@jest/types@^27.5.1":
version "27.5.1"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==
dependencies:
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
"@types/node" "*"
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
"@jridgewell/gen-mapping@^0.3.0":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
@@ -1820,6 +1838,80 @@
dependencies:
"@sinonjs/commons" "^1.7.0"
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.15.tgz#889e4c2aba1641df6ba8f3255f8923a4d764fdcd"
integrity sha512-XDa4jtf+LsL7/cFPhlfeAfkLgwFufKQZ+0SmhRSKL8clA5Me1TU4zxmFoHNyDQZ0el8Q9dCDWOWn3e0Q32lHdQ==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.15.tgz#5c7cb29d44ba0fbdf149df7a1629869328ff7a66"
integrity sha512-f3Dn3s6tx9JyZVWtftOkcO67IUkFHFTRRoJKXlbCxeut6ogudZSJdc42rYomjAiwWkSS8kNpsOic+cDw8EgksQ==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.15.tgz#f4d31f321428b6fa32cdcadf5f9963961def2cf3"
integrity sha512-bjZByu6FKXGhF+z0EwrdC3hDGt/vQnEc1BF9lettEeCSMbOUdAjz8afbnYEu25p6Un8qgEj5xyQgsnLOzLFJ8g==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.15.tgz#6f93caf14e10ca07d90dee87be585f93b8354108"
integrity sha512-/rm4+ck3oLC7qKi7q7IyqnPRg51HVVvpmcRPBbLrYPnD2m+FnL2uAPhOemAwM+GDv3eS+f5f8ye2Yz3hy99AtA==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.15.tgz#cc699b525fe1bcb7d404d03f56dec6cb55e532fe"
integrity sha512-TRJcHyBsW/empMTaHEPmVnIKAThI43lTG7xANwtsB8/31ZSIDUEosZ3fEqmLSBqwvCoQfp93++2MFNQGTwMwpQ==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.15.tgz#ad181324f97ed0d4519bd23a14a8104cba157d94"
integrity sha512-Xktb1uP4P9qNvyQ2nVPX2s+pAthWuTPmNeLO2NlS2jumzq01v4r3F64wLK7t31lvTEXyuiZSdfhE0yILcGmEqg==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.15.tgz#4841c4f2435d848cc0d1fd50bf09c7c974fbae92"
integrity sha512-XUppG2CUE8guxKNpfhnbm2ukKdn0/hh+/t6tkQkbNm95CQqe0yiNMSZxUWIyf4wFcw1lymb15oiG8r34T+7iwQ==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.15.tgz#1a8c7d068bc9a39663ab3339c0271a7b2a047169"
integrity sha512-gU1HFMrVAiLZaLmgN7LlsdWY5deIFjAvB84/kQzQNvPbnaDJbA9FXN7b0Wi9rn4WCmWmbZBj5H8O3UkCQV7WYw==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.15.tgz#b0bbaa8b3b25953f5a3980f9bc9e83609912bdba"
integrity sha512-LmKqV6Vv455NaI7kv8P1xTbPCm8S1dNzI7EXb0A87Tm4Tzd5z6KnhDFCbvhMQjHixlq09V1szTdtN5YkIhMXEg==
"@swc/[email protected]":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.15.tgz#1b092b2eac1cf8c131945ae2ce4b816a37af8a10"
integrity sha512-hikhDyJCNyf0C9+b62MXywmTx72+T3cbVBJa9q7vgBV/cKA9z0qbiVMmozAGraIv/gSq9HLHR9Q2nWWWeJl7yg==
"@swc/core@^1.3.15":
version "1.3.15"
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.15.tgz#f2ebac4b4d03e1085358fd4cb48a8030a6341a3d"
integrity sha512-x5PYlmn2qFp8j0sl5vZHEdyA7SfjiqS7KgXSZfXydYiV1yFOaWQo2LvDjZ73fx3zhIR7oR96myDorglVpWdfhw==
optionalDependencies:
"@swc/core-darwin-arm64" "1.3.15"
"@swc/core-darwin-x64" "1.3.15"
"@swc/core-linux-arm-gnueabihf" "1.3.15"
"@swc/core-linux-arm64-gnu" "1.3.15"
"@swc/core-linux-arm64-musl" "1.3.15"
"@swc/core-linux-x64-gnu" "1.3.15"
"@swc/core-linux-x64-musl" "1.3.15"
"@swc/core-win32-arm64-msvc" "1.3.15"
"@swc/core-win32-ia32-msvc" "1.3.15"
"@swc/core-win32-x64-msvc" "1.3.15"
"@swc/jest@^0.2.23":
version "0.2.23"
resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.23.tgz#0b7499d5927faaa090c5b7a4a0e35122968fef30"
integrity sha512-ZLj17XjHbPtNsgqjm83qizENw05emLkKGu3WuPUttcy9hkngl0/kcc7fDbcSBpADS0GUtsO+iKPjZFWVAtJSlA==
dependencies:
"@jest/create-cache-key-function" "^27.4.2"
jsonc-parser "^3.2.0"
"@tootallnate/once@1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
@@ -2204,6 +2296,13 @@
dependencies:
"@types/yargs-parser" "*"
"@types/yargs@^16.0.0":
version "16.0.4"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977"
integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==
dependencies:
"@types/yargs-parser" "*"
"@types/yargs@^17.0.10":
version "17.0.10"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a"
@@ -3229,13 +3328,6 @@ browserslist@^4.19.1:
node-releases "^2.0.1"
picocolors "^1.0.0"
[email protected]:
version "0.2.6"
resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
dependencies:
fast-json-stable-stringify "2.x"
[email protected]:
version "2.1.1"
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
@@ -3248,11 +3340,6 @@ buffer-crc32@~0.2.3:
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
[email protected]:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -4907,7 +4994,7 @@ fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
[email protected], fast-json-stable-stringify@^2.0.0:
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -6569,7 +6656,7 @@ jest-snapshot@^26.6.2:
pretty-format "^26.6.2"
semver "^7.3.2"
jest-util@^26.1.0, jest-util@^26.6.2:
jest-util@^26.6.2:
version "26.6.2"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1"
integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==
@@ -6741,13 +6828,6 @@ json3@^3.3.3:
resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
[email protected], json5@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
dependencies:
minimist "^1.2.5"
json5@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
@@ -6755,6 +6835,18 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
json5@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
dependencies:
minimist "^1.2.5"
jsonc-parser@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
jsonfile@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
@@ -6984,7 +7076,7 @@ lodash.uniqby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302"
integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=
[email protected], lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -7031,7 +7123,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
dependencies:
semver "^6.0.0"
[email protected], make-error@^1.1.1:
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
@@ -7251,11 +7343,6 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
[email protected]:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mkdirp@^0.5.1, mkdirp@^0.5.5:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@@ -8688,18 +8775,18 @@ [email protected], semver@^7.3.5:
dependencies:
lru-cache "^6.0.0"
semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
version "7.3.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
dependencies:
lru-cache "^6.0.0"
semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.3.7:
version "7.3.7"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
@@ -9613,22 +9700,6 @@ ts-interface-checker@^0.1.9:
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
ts-jest@26:
version "26.5.6"
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35"
integrity sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==
dependencies:
bs-logger "0.x"
buffer-from "1.x"
fast-json-stable-stringify "2.x"
jest-util "^26.1.0"
json5 "2.x"
lodash "4.x"
make-error "1.x"
mkdirp "1.x"
semver "7.x"
yargs-parser "20.x"
ts-loader@^9.2.6:
version "9.2.6"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.6.tgz#9937c4dd0a1e3dbbb5e433f8102a6601c6615d74"
@@ -10423,11 +10494,6 @@ yaml@^2.1.1:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec"
integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw==
[email protected]:
version "20.2.5"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.5.tgz#5d37729146d3f894f39fc94b6796f5b239513186"
integrity sha512-jYRGS3zWy20NtDtK2kBgo/TlAoy5YUuhD9/LZ7z7W4j1Fdw2cqD0xEEclf8fxc8xjD6X5Qr+qQQwCEsP8iRiYg==
yargs-parser@^10.0.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"