diff --git a/.eslintignore b/.eslintignore
index 339061a4..c81502cc 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,5 +1,6 @@
# config
.eslintrc.js
+jest-setup.js
**/*config.js
# git
@@ -13,3 +14,4 @@
# testing
__tests__/e2e/cli.js
+__tests__/e2e/out
diff --git a/.eslintrc.js b/.eslintrc.js
index 4acc0480..b26f0a37 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -4,7 +4,7 @@ module.exports = {
node: true,
'jest/globals': true,
},
- extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:jest-dom/recommended', 'prettier'],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 2021,
@@ -45,4 +45,10 @@ module.exports = {
'no-restricted-syntax': 'off',
'no-console': ['error', { allow: ['warn', 'error'] }],
},
+ overrides: [
+ {
+ files: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[jt]s?(x)'],
+ extends: ['plugin:testing-library/react', 'plugin:jest-dom/recommended'],
+ },
+ ],
}
diff --git a/.gitignore b/.gitignore
index 81a67351..b17ce996 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,7 +16,6 @@ dist
/__tests__/cli/external-images/fixtures
/__tests__/components/image/manifest/manifest.json
/__tests__/components/image/external-images/manifest.json
-/__tests__/e2e/out
# benchmark
/bench/fixtures/results
diff --git a/__tests__/components/image/config/index.test.tsx b/__tests__/components/image/config/index.test.tsx
index 75f4cc17..5a098247 100644
--- a/__tests__/components/image/config/index.test.tsx
+++ b/__tests__/components/image/config/index.test.tsx
@@ -12,6 +12,6 @@ describe('Apply config', () => {
test('Set `imageDir` and `filenameGenerator` and `convetFormat`', () => {
render()
- expect(screen.getByRole('img').getAttribute('src')).toBe('/base-path/_custom-optimize/images-img.3840.75.webp')
+ expect(screen.getByRole('img')).toHaveAttribute('src', '/base-path/_custom-optimize/images-img.3840.75.webp')
})
})
diff --git a/__tests__/components/image/external-images/index.test.tsx b/__tests__/components/image/external-images/index.test.tsx
index c78f1ab0..d0826ba5 100644
--- a/__tests__/components/image/external-images/index.test.tsx
+++ b/__tests__/components/image/external-images/index.test.tsx
@@ -6,7 +6,7 @@ process.env['TEST_JSON_PATH'] = '__tests__/components/image/external-images/mani
import path from 'path'
-import { cleanup, render, screen } from '@testing-library/react'
+import { render, screen } from '@testing-library/react'
import fs from 'fs-extra'
import React from 'react'
@@ -16,13 +16,11 @@ import processManifest from '../../../../src/utils/processManifest'
const manifestPath = path.resolve(__dirname, 'manifest.json')
+beforeAll(async () => {
+ await fs.remove(manifestPath)
+})
describe('External images', () => {
- beforeAll(async () => {
- await fs.remove(manifestPath)
- })
-
- beforeEach(() => {
- cleanup()
+ test('Manifest.json is output correctly', () => {
render(
{
priority
/>
)
- })
- test('Manifest.json is output correctly', () => {
const manifest = uniqueItems(processManifest(fs.readFileSync(manifestPath, 'utf-8')))
expect(manifest).toEqual([
{
@@ -56,10 +52,21 @@ describe('External images', () => {
})
test('URLs of external images are set correctly', () => {
- expect(screen.getByRole('img').getAttribute('src')).toBe(
+ render(
+
+ )
+
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'src',
'/base-path/_next/static/chunks/images/sub-path/og_3840_75.webp'
)
- expect(screen.getByRole('img').getAttribute('srcset')).toBe(
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'srcset',
'/base-path/_next/static/chunks/images/sub-path/og_1920_75.webp 1x, /base-path/_next/static/chunks/images/sub-path/og_3840_75.webp 2x'
)
})
diff --git a/__tests__/components/image/index.test.tsx b/__tests__/components/image/index.test.tsx
index e03436b6..932e6598 100644
--- a/__tests__/components/image/index.test.tsx
+++ b/__tests__/components/image/index.test.tsx
@@ -1,7 +1,7 @@
/**
* @jest-environment jsdom
*/
-import { render, screen, cleanup } from '@testing-library/react'
+import { render, screen } from '@testing-library/react'
import React from 'react'
import CustomImage from '../../../src/image'
@@ -22,15 +22,12 @@ const staticRequireSrc = {
describe('CustomImage', () => {
describe('String src', () => {
- beforeEach(() => {
- cleanup()
- })
-
test('Src and srcset are set correctly', () => {
render()
- expect(screen.getByRole('img').getAttribute('src')).toBe('/_next/static/chunks/images/img_3840_75.png')
- expect(screen.getByRole('img').getAttribute('srcSet')).toBe(
+ expect(screen.getByRole('img')).toHaveAttribute('src', '/_next/static/chunks/images/img_3840_75.png')
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'srcset',
'/_next/static/chunks/images/img_1920_75.png 1x, /_next/static/chunks/images/img_3840_75.png 2x'
)
})
@@ -38,22 +35,20 @@ describe('CustomImage', () => {
test('BlurDataURL is set correctly', () => {
render()
- expect(screen.getByRole('img').style.backgroundImage).toBe('url(/_next/static/chunks/images/img_8_10.png)')
+ expect(screen.getByRole('img')).toHaveStyle({ backgroundImage: 'url(/_next/static/chunks/images/img_8_10.png)' })
})
})
describe('StaticRequire src', () => {
- beforeEach(() => {
- cleanup()
- })
-
test('Src and srcset are set correctly', () => {
render()
- expect(screen.getByRole('img').getAttribute('src')).toBe(
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'src',
'/_next/static/chunks/images/_next/static/media/image.819f8209_3840_75.png'
)
- expect(screen.getByRole('img').getAttribute('srcset')).toBe(
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'srcset',
'/_next/static/chunks/images/_next/static/media/image.819f8209_1920_75.png 1x, /_next/static/chunks/images/_next/static/media/image.819f8209_3840_75.png 2x'
)
})
@@ -61,22 +56,20 @@ describe('CustomImage', () => {
test('BlurDataURL is set correctly', () => {
render()
- expect(screen.getByRole('img').style.backgroundImage).toBe(`url(${blurDataURL})`)
+ expect(screen.getByRole('img')).toHaveStyle({ backgroundImage: `url(${blurDataURL})` })
})
})
describe('StaticImageData src', () => {
- beforeEach(() => {
- cleanup()
- })
-
test('Src and srcset are set correctly', () => {
render()
- expect(screen.getByRole('img').getAttribute('src')).toBe(
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'src',
'/_next/static/chunks/images/_next/static/media/image.819f8209_3840_75.png'
)
- expect(screen.getByRole('img').getAttribute('srcset')).toBe(
+ expect(screen.getByRole('img')).toHaveAttribute(
+ 'srcset',
'/_next/static/chunks/images/_next/static/media/image.819f8209_1920_75.png 1x, /_next/static/chunks/images/_next/static/media/image.819f8209_3840_75.png 2x'
)
})
@@ -84,15 +77,11 @@ describe('CustomImage', () => {
test('BlurDataURL is set correctly', () => {
render()
- expect(screen.getByRole('img').style.backgroundImage).toBe(`url(${blurDataURL})`)
+ expect(screen.getByRole('img')).toHaveStyle({ backgroundImage: `url(${blurDataURL})` })
})
})
describe('Override props.', () => {
- beforeEach(() => {
- cleanup()
- })
-
test('Loader is set correctly', () => {
render(
{
/>
)
- expect(screen.getByRole('img').getAttribute('src')).toBe('/_next/static/media/image.819f8209.png?w=3840&q=75')
+ expect(screen.getByRole('img')).toHaveAttribute('src', '/_next/static/media/image.819f8209.png?w=3840&q=75')
})
test('BlurDataURL is set correctly', () => {
render()
- expect(screen.getByRole('img').style.backgroundImage).toBe('url(customBlurDataURL)')
+ expect(screen.getByRole('img')).toHaveStyle({ backgroundImage: 'url(customBlurDataURL)' })
})
})
})
diff --git a/__tests__/e2e/next-env.d.ts b/__tests__/e2e/next-env.d.ts
new file mode 100644
index 00000000..4f11a03d
--- /dev/null
+++ b/__tests__/e2e/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/__tests__/e2e/pages/_app.jsx b/__tests__/e2e/pages/_app.jsx
index 3ac920de..f499df8b 100644
--- a/__tests__/e2e/pages/_app.jsx
+++ b/__tests__/e2e/pages/_app.jsx
@@ -1,3 +1,9 @@
+import React from 'react'
+
+/**
+ * @param {import('next/app').AppProps} param0
+ * @returns
+ */
function MyApp({ Component, pageProps }) {
return
}
diff --git a/__tests__/e2e/pages/index.jsx b/__tests__/e2e/pages/index.jsx
index 21859b85..87f9d49c 100644
--- a/__tests__/e2e/pages/index.jsx
+++ b/__tests__/e2e/pages/index.jsx
@@ -1,8 +1,8 @@
-import Image from '../../../dist/image'
+import React, { useEffect, useState } from 'react'
-import imgSrc from '../images/img.png'
+import Image from '../../../dist/image'
import clientOnlySrc from '../images/client-only.png'
-import { useEffect, useState } from 'react'
+import imgSrc from '../images/img.png'
const IndexPage = () => {
const [isClient, setIsClient] = useState(false)
diff --git a/changelog.config.js b/changelog.config.js
index b9c40cc7..540f43ac 100644
--- a/changelog.config.js
+++ b/changelog.config.js
@@ -23,11 +23,11 @@ module.exports = {
/**
* コミットメッセージ最大文字数
*/
- // maxMessageLength: 64,
+ maxMessageLength: 64,
/**
* コミットメッセージ最小文字数
*/
- // minMessageLength: 3,
+ minMessageLength: 3,
/**
* コミット時に入力する項目
*/
diff --git a/jest-setup.ts b/jest-setup.ts
new file mode 100644
index 00000000..c44951a6
--- /dev/null
+++ b/jest-setup.ts
@@ -0,0 +1 @@
+import '@testing-library/jest-dom'
diff --git a/jest.config.js b/jest.config.js
index 4d37cf28..1cf78e2b 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -2,4 +2,5 @@
module.exports = {
preset: 'ts-jest',
testMatch: ['**/__tests__/**/*.test.[jt]s?(x)'],
+ setupFilesAfterEnv: ['/jest-setup.ts']
}
diff --git a/package.json b/package.json
index 42ff7c28..a664ecdb 100644
--- a/package.json
+++ b/package.json
@@ -30,6 +30,7 @@
"prebuild": "rimraf dist",
"build": "swc src -d dist && tsc --project ./tsconfig.build.json",
"commitmsg": "commitlint -e $GIT_PARAMS",
+ "lint": "eslint {src,__tests__} --cache",
"lint-staged": "lint-staged",
"prepare": "husky install",
"pretest": "rimraf {__tests__/e2e/.next,__tests__/e2e/out} && swc src -d dist && cross-env TEST_JSON_PATH=__tests__/e2e/.next/custom-optimized-images.nd.json next build __tests__/e2e && next export __tests__/e2e && node __tests__/e2e/cli.js",
@@ -66,10 +67,11 @@
"@swc/cli": "0.1.57",
"@swc/core": "1.2.203",
"@testing-library/react": "13.3.0",
+ "@testing-library/jest-dom": "5.16.4",
"@tsconfig/strictest": "1.0.1",
"@types/benchmark": "2.1.1",
"@types/cli-progress": "3.11.0",
- "@types/fs-extra": "^9.0.13",
+ "@types/fs-extra": "9.0.13",
"@types/jest": "27.5.2",
"@types/lodash.uniqwith": "4.5.7",
"@types/node": "16.11.41",
@@ -85,6 +87,8 @@
"eslint-config-prettier": "8.5.0",
"eslint-plugin-import": "2.26.0",
"eslint-plugin-jest": "26.5.3",
+ "eslint-plugin-jest-dom": "^4.0.2",
+ "eslint-plugin-testing-library": "5.5.1",
"git-cz": "4.9.0",
"husky": "8.0.1",
"jest": "28.1.1",
diff --git a/tsconfig.json b/tsconfig.json
index d2c0be6b..d94cb101 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,10 @@
{
"extends": "@tsconfig/strictest/tsconfig.json",
"compilerOptions": {
- "jsx": "react"
+ "allowJs": true,
+ "jsx": "react",
+ "baseUrl": "./",
+ "noEmit": true
},
- "include": ["./src/**/*.ts", "./src/**/*.tsx", "./__tests__/**/*.test.ts", "./__tests__/**/*.test.tsx", "bench/index.ts"]
+ "include": ["src/**/*", "__tests__/**/*", "bench/index.ts", "jest-setup.ts"]
}
diff --git a/yarn.lock b/yarn.lock
index 24c11976..170bedce 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -351,6 +351,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.16.3", "@babel/runtime@^7.9.2":
+ version "7.18.3"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4"
+ integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.16.7", "@babel/template@^7.3.3":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
@@ -1465,7 +1472,7 @@
dependencies:
defer-to-connect "^2.0.0"
-"@testing-library/dom@^8.5.0":
+"@testing-library/dom@^8.11.1", "@testing-library/dom@^8.5.0":
version "8.13.0"
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5"
integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==
@@ -1479,6 +1486,21 @@
lz-string "^1.4.4"
pretty-format "^27.0.2"
+"@testing-library/jest-dom@5.16.4":
+ version "5.16.4"
+ resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd"
+ integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+ "@types/testing-library__jest-dom" "^5.9.1"
+ aria-query "^5.0.0"
+ chalk "^3.0.0"
+ css "^3.0.0"
+ css.escape "^1.5.1"
+ dom-accessibility-api "^0.5.6"
+ lodash "^4.17.15"
+ redent "^3.0.0"
+
"@testing-library/react@13.3.0":
version "13.3.0"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.3.0.tgz#bf298bfbc5589326bbcc8052b211f3bb097a97c5"
@@ -1583,7 +1605,7 @@
dependencies:
"@types/node" "*"
-"@types/fs-extra@^9.0.13":
+"@types/fs-extra@9.0.13":
version "9.0.13"
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45"
integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==
@@ -1621,6 +1643,14 @@
dependencies:
"@types/istanbul-lib-report" "*"
+"@types/jest@*":
+ version "28.1.2"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.2.tgz#c678569bb2d8e5474dd88f0851613611aeed9809"
+ integrity sha512-5dNM7mMuIrCtNJsFfvUO/5xCrG8swuT2c7ND+sl3XwlwxJf3k7e7o+PRvcFN/iIm8XhCqHqxLOj9yutDDOJoRg==
+ dependencies:
+ jest-matcher-utils "^28.0.0"
+ pretty-format "^28.0.0"
+
"@types/jest@27.5.2":
version "27.5.2"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c"
@@ -1771,6 +1801,13 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
+"@types/testing-library__jest-dom@^5.9.1":
+ version "5.14.4"
+ resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.4.tgz#21567ec845f4efee55923842c79728dc49c1650b"
+ integrity sha512-EUCs9PTBOEyfRtLKkKd31YrRCx/9Wxjy2Uqb6IH/KAOr7/vP0i8iClOyxQqjm/UxMGU5r5s2vOBM7vSPQVmabg==
+ dependencies:
+ "@types/jest" "*"
+
"@types/tough-cookie@*":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397"
@@ -1829,6 +1866,14 @@
"@typescript-eslint/types" "5.27.1"
"@typescript-eslint/visitor-keys" "5.27.1"
+"@typescript-eslint/scope-manager@5.28.0":
+ version "5.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9"
+ integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w==
+ dependencies:
+ "@typescript-eslint/types" "5.28.0"
+ "@typescript-eslint/visitor-keys" "5.28.0"
+
"@typescript-eslint/type-utils@5.27.1":
version "5.27.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz#369f695199f74c1876e395ebea202582eb1d4166"
@@ -1848,6 +1893,11 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.1.tgz#34e3e629501349d38be6ae97841298c03a6ffbf1"
integrity sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==
+"@typescript-eslint/types@5.28.0":
+ version "5.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d"
+ integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA==
+
"@typescript-eslint/typescript-estree@5.10.2":
version "5.10.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz#810906056cd3ddcb35aa333fdbbef3713b0fe4a7"
@@ -1874,6 +1924,19 @@
semver "^7.3.7"
tsutils "^3.21.0"
+"@typescript-eslint/typescript-estree@5.28.0":
+ version "5.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863"
+ integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA==
+ dependencies:
+ "@typescript-eslint/types" "5.28.0"
+ "@typescript-eslint/visitor-keys" "5.28.0"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ semver "^7.3.7"
+ tsutils "^3.21.0"
+
"@typescript-eslint/utils@5.27.1":
version "5.27.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.1.tgz#b4678b68a94bc3b85bf08f243812a6868ac5128f"
@@ -1898,6 +1961,18 @@
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
+"@typescript-eslint/utils@^5.13.0":
+ version "5.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99"
+ integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ "@typescript-eslint/scope-manager" "5.28.0"
+ "@typescript-eslint/types" "5.28.0"
+ "@typescript-eslint/typescript-estree" "5.28.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^3.0.0"
+
"@typescript-eslint/visitor-keys@5.10.2":
version "5.10.2"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz#fdbf272d8e61c045d865bd6c8b41bea73d222f3d"
@@ -1914,6 +1989,14 @@
"@typescript-eslint/types" "5.27.1"
eslint-visitor-keys "^3.3.0"
+"@typescript-eslint/visitor-keys@5.28.0":
+ version "5.28.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f"
+ integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA==
+ dependencies:
+ "@typescript-eslint/types" "5.28.0"
+ eslint-visitor-keys "^3.3.0"
+
JSONStream@^1.0.4:
version "1.3.5"
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -2193,6 +2276,11 @@ at-least-node@^1.0.0:
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
babel-jest@^28.1.1:
version "28.1.1"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.1.tgz#2a3a4ae50964695b2d694ccffe4bec537c5a3586"
@@ -2515,6 +2603,14 @@ chalk@^2.0.0, chalk@^2.3.2, chalk@^2.4.1:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
@@ -2901,6 +2997,20 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+css.escape@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
+ integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==
+
+css@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d"
+ integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==
+ dependencies:
+ inherits "^2.0.4"
+ source-map "^0.6.1"
+ source-map-resolve "^0.6.0"
+
cssom@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36"
@@ -2993,6 +3103,11 @@ decimal.js@^10.3.1:
resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783"
integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==
+
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
@@ -3137,7 +3252,7 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
-dom-accessibility-api@^0.5.9:
+dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
version "0.5.14"
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56"
integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==
@@ -3340,6 +3455,15 @@ eslint-plugin-import@2.26.0:
resolve "^1.22.0"
tsconfig-paths "^3.14.1"
+eslint-plugin-jest-dom@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-4.0.2.tgz#9d3e2f51055f74c74e745d89c4b1a9781e0ec7a9"
+ integrity sha512-Jo51Atwyo2TdcUncjmU+UQeSTKh3sc2LF/M5i/R3nTU0Djw9V65KGJisdm/RtuKhy2KH/r7eQ1n6kwYFPNdHlA==
+ dependencies:
+ "@babel/runtime" "^7.16.3"
+ "@testing-library/dom" "^8.11.1"
+ requireindex "^1.2.0"
+
eslint-plugin-jest@26.5.3:
version "26.5.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.5.3.tgz#a3ceeaf4a757878342b8b00eca92379b246e5505"
@@ -3347,6 +3471,13 @@ eslint-plugin-jest@26.5.3:
dependencies:
"@typescript-eslint/utils" "^5.10.0"
+eslint-plugin-testing-library@5.5.1:
+ version "5.5.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.5.1.tgz#6fe602f9082a421b471bbae8aed692e26fe981b3"
+ integrity sha512-plLEkkbAKBjPxsLj7x4jNapcHAg2ernkQlKKrN2I8NrQwPISZHyCUNvg5Hv3EDqOQReToQb5bnqXYbkijJPE/g==
+ dependencies:
+ "@typescript-eslint/utils" "^5.13.0"
+
eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
@@ -4660,7 +4791,7 @@ jest-matcher-utils@^27.0.0:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
-jest-matcher-utils@^28.1.1:
+jest-matcher-utils@^28.0.0, jest-matcher-utils@^28.1.1:
version "28.1.1"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.1.tgz#a7c4653c2b782ec96796eb3088060720f1e29304"
integrity sha512-NPJPRWrbmR2nAJ+1nmnfcKKzSwgfaciCCrYZzVnNoxVoyusYWIjkBMNvu0RHJe7dNj4hH3uZOPZsQA+xAYWqsw==
@@ -6472,7 +6603,7 @@ pretty-format@^27.0.2, pretty-format@^27.5.1:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-pretty-format@^28.1.1:
+pretty-format@^28.0.0, pretty-format@^28.1.1:
version "28.1.1"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.1.tgz#f731530394e0f7fcd95aba6b43c50e02d86b95cb"
integrity sha512-wwJbVTGFHeucr5Jw2bQ9P+VYHyLdAqedFLEkdQUVaBF/eiidDwH5OpilINq4mEfhbCjLnirt6HTTDhv1HaTIQw==
@@ -6742,6 +6873,11 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+requireindex@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef"
+ integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==
+
resolve-alpn@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
@@ -7110,6 +7246,14 @@ source-map-js@^1.0.1:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+source-map-resolve@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
+ integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+
source-map-support@0.5.13:
version "0.5.13"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"