mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
[eprh] Try to fix tests
Summary: Test Plan: Reviewers: Subscribers: Tasks: Tags:
This commit is contained in:
@@ -9,6 +9,8 @@ import {ErrorSeverity} from 'babel-plugin-react-compiler/src';
|
||||
import {RuleTester as ESLintTester} from 'eslint';
|
||||
import ReactCompilerRule from '../src/rules/ReactCompilerRule';
|
||||
|
||||
const ESLintTesterV8 = require('eslint-v8').RuleTester;
|
||||
|
||||
/**
|
||||
* A string template tag that removes padding from the left side of multi-line strings
|
||||
* @param {Array} strings array of code strings (only one expected)
|
||||
@@ -309,7 +311,7 @@ const tests: CompilerTestCases = {
|
||||
],
|
||||
};
|
||||
|
||||
const eslintTester = new ESLintTester({
|
||||
const eslintTester = new ESLintTesterV8({
|
||||
parser: require.resolve('hermes-eslint'),
|
||||
parserOptions: {
|
||||
ecmaVersion: 2015,
|
||||
|
||||
+3
-1
@@ -8,6 +8,8 @@
|
||||
import {RuleTester} from 'eslint';
|
||||
import ReactCompilerRule from '../src/rules/ReactCompilerRule';
|
||||
|
||||
const ESLintTesterV8 = require('eslint-v8').RuleTester;
|
||||
|
||||
/**
|
||||
* A string template tag that removes padding from the left side of multi-line strings
|
||||
* @param {Array} strings array of code strings (only one expected)
|
||||
@@ -70,7 +72,7 @@ const tests: CompilerTestCases = {
|
||||
],
|
||||
};
|
||||
|
||||
const eslintTester = new RuleTester({
|
||||
const eslintTester = new ESLintTesterV8({
|
||||
parser: require.resolve('@typescript-eslint/parser'),
|
||||
});
|
||||
eslintTester.run('react-compiler', ReactCompilerRule, tests);
|
||||
|
||||
+63
-64
@@ -7675,61 +7675,60 @@ const tests = {
|
||||
],
|
||||
};
|
||||
|
||||
if (__EXPERIMENTAL__) {
|
||||
tests.valid = [
|
||||
...tests.valid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onStuff = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onStuff();
|
||||
}, []);
|
||||
}
|
||||
`,
|
||||
},
|
||||
];
|
||||
tests.valid = [
|
||||
...tests.valid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onStuff = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onStuff();
|
||||
}, []);
|
||||
}
|
||||
`,
|
||||
},
|
||||
];
|
||||
|
||||
tests.invalid = [
|
||||
...tests.invalid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onStuff = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onStuff();
|
||||
}, [onStuff]);
|
||||
}
|
||||
`,
|
||||
errors: [
|
||||
{
|
||||
message:
|
||||
'Functions returned from `useEffectEvent` must not be included in the dependency array. ' +
|
||||
'Remove `onStuff` from the list.',
|
||||
suggestions: [
|
||||
{
|
||||
desc: 'Remove the dependency `onStuff`',
|
||||
output: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onStuff = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onStuff();
|
||||
}, []);
|
||||
}
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
// useEffectEvent
|
||||
tests.invalid = [
|
||||
...tests.invalid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onStuff = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onStuff();
|
||||
}, [onStuff]);
|
||||
}
|
||||
`,
|
||||
errors: [
|
||||
{
|
||||
message:
|
||||
'Functions returned from `useEffectEvent` must not be included in the dependency array. ' +
|
||||
'Remove `onStuff` from the list.',
|
||||
suggestions: [
|
||||
{
|
||||
desc: 'Remove the dependency `onStuff`',
|
||||
output: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onStuff = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onStuff();
|
||||
}, []);
|
||||
}
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
// Tests that are only valid/invalid across parsers supporting Flow
|
||||
const testsFlow = {
|
||||
@@ -8370,16 +8369,16 @@ describe('rules-of-hooks/exhaustive-deps', () => {
|
||||
testsTypescriptEslintParser
|
||||
);
|
||||
|
||||
new ESLintTesterV9({
|
||||
languageOptions: {
|
||||
...languageOptionsV9,
|
||||
parser: require('@typescript-eslint/parser-v3'),
|
||||
},
|
||||
}).run(
|
||||
'eslint: v9, parser: @typescript-eslint/parser@3.x',
|
||||
ReactHooksESLintRule,
|
||||
testsTypescriptEslintParser
|
||||
);
|
||||
// new ESLintTesterV9({
|
||||
// languageOptions: {
|
||||
// ...languageOptionsV9,
|
||||
// parser: require('@typescript-eslint/parser-v3'),
|
||||
// },
|
||||
// }).run(
|
||||
// 'eslint: v9, parser: @typescript-eslint/parser@3.x',
|
||||
// ReactHooksESLintRule,
|
||||
// testsTypescriptEslintParser
|
||||
// );
|
||||
|
||||
new ESLintTesterV7({
|
||||
parser: require.resolve('@typescript-eslint/parser-v4'),
|
||||
|
||||
+184
-183
@@ -1286,180 +1286,181 @@ const tests = {
|
||||
],
|
||||
};
|
||||
|
||||
if (__EXPERIMENTAL__) {
|
||||
tests.valid = [
|
||||
...tests.valid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be called in a useEffect.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onClick();
|
||||
});
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be called in closures.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={() => onClick()}></Child>;
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be called in closures.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
const onClick2 = () => { onClick() };
|
||||
const onClick3 = useCallback(() => onClick(), []);
|
||||
return <>
|
||||
<Child onClick={onClick2}></Child>
|
||||
<Child onClick={onClick3}></Child>
|
||||
</>;
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be passed by reference in useEffect
|
||||
// and useEffectEvent.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
const onClick2 = useEffectEvent(() => {
|
||||
debounce(onClick);
|
||||
});
|
||||
useEffect(() => {
|
||||
let id = setInterval(onClick, 100);
|
||||
return () => clearInterval(onClick);
|
||||
}, []);
|
||||
return <Child onClick={() => onClick2()} />
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
const MyComponent = ({theme}) => {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={() => onClick()}></Child>;
|
||||
};
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const notificationService = useNotifications();
|
||||
const showNotification = useEffectEvent((text) => {
|
||||
notificationService.notify(theme, text);
|
||||
});
|
||||
const onClick = useEffectEvent((text) => {
|
||||
showNotification(text);
|
||||
});
|
||||
return <Child onClick={(text) => onClick(text)} />
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
useEffect(() => {
|
||||
onClick();
|
||||
});
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
}
|
||||
`,
|
||||
},
|
||||
];
|
||||
tests.invalid = [
|
||||
...tests.invalid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={onClick}></Child>;
|
||||
}
|
||||
`,
|
||||
errors: [useEffectEventError('onClick')],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// This should error even though it shares an identifier name with the below
|
||||
function MyComponent({theme}) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme)
|
||||
});
|
||||
return <Child onClick={onClick} />
|
||||
}
|
||||
// useEffectEvent
|
||||
tests.valid = [
|
||||
...tests.valid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be called in a useEffect.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
useEffect(() => {
|
||||
onClick();
|
||||
});
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be called in closures.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={() => onClick()}></Child>;
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be called in closures.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
const onClick2 = () => { onClick() };
|
||||
const onClick3 = useCallback(() => onClick(), []);
|
||||
return <>
|
||||
<Child onClick={onClick2}></Child>
|
||||
<Child onClick={onClick3}></Child>
|
||||
</>;
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Valid because functions created with useEffectEvent can be passed by reference in useEffect
|
||||
// and useEffectEvent.
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
const onClick2 = useEffectEvent(() => {
|
||||
debounce(onClick);
|
||||
});
|
||||
useEffect(() => {
|
||||
let id = setInterval(onClick, 100);
|
||||
return () => clearInterval(onClick);
|
||||
}, []);
|
||||
return <Child onClick={() => onClick2()} />
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
const MyComponent = ({theme}) => {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={() => onClick()}></Child>;
|
||||
};
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const notificationService = useNotifications();
|
||||
const showNotification = useEffectEvent((text) => {
|
||||
notificationService.notify(theme, text);
|
||||
});
|
||||
const onClick = useEffectEvent((text) => {
|
||||
showNotification(text);
|
||||
});
|
||||
return <Child onClick={(text) => onClick(text)} />
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
useEffect(() => {
|
||||
onClick();
|
||||
});
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
}
|
||||
`,
|
||||
},
|
||||
];
|
||||
|
||||
// The useEffectEvent function shares an identifier name with the above
|
||||
function MyOtherComponent({theme}) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme)
|
||||
});
|
||||
return <Child onClick={() => onClick()} />
|
||||
}
|
||||
`,
|
||||
errors: [{...useEffectEventError('onClick'), line: 7}],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
const MyComponent = ({ theme }) => {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={onClick}></Child>;
|
||||
}
|
||||
`,
|
||||
errors: [useEffectEventError('onClick')],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Invalid because onClick is being aliased to foo but not invoked
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
let foo = onClick;
|
||||
return <Bar onClick={foo} />
|
||||
}
|
||||
`,
|
||||
errors: [{...useEffectEventError('onClick'), line: 7}],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Should error because it's being passed down to JSX, although it's been referenced once
|
||||
// in an effect
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(them);
|
||||
});
|
||||
useEffect(() => {
|
||||
setTimeout(onClick, 100);
|
||||
});
|
||||
return <Child onClick={onClick} />
|
||||
}
|
||||
`,
|
||||
errors: [useEffectEventError('onClick')],
|
||||
},
|
||||
];
|
||||
}
|
||||
// useEffectEvent
|
||||
tests.invalid = [
|
||||
...tests.invalid,
|
||||
{
|
||||
code: normalizeIndent`
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={onClick}></Child>;
|
||||
}
|
||||
`,
|
||||
errors: [useEffectEventError('onClick')],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// This should error even though it shares an identifier name with the below
|
||||
function MyComponent({theme}) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme)
|
||||
});
|
||||
return <Child onClick={onClick} />
|
||||
}
|
||||
|
||||
// The useEffectEvent function shares an identifier name with the above
|
||||
function MyOtherComponent({theme}) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme)
|
||||
});
|
||||
return <Child onClick={() => onClick()} />
|
||||
}
|
||||
`,
|
||||
errors: [{...useEffectEventError('onClick'), line: 7}],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
const MyComponent = ({ theme }) => {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
return <Child onClick={onClick}></Child>;
|
||||
}
|
||||
`,
|
||||
errors: [useEffectEventError('onClick')],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Invalid because onClick is being aliased to foo but not invoked
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(theme);
|
||||
});
|
||||
let foo = onClick;
|
||||
return <Bar onClick={foo} />
|
||||
}
|
||||
`,
|
||||
errors: [{...useEffectEventError('onClick'), line: 7}],
|
||||
},
|
||||
{
|
||||
code: normalizeIndent`
|
||||
// Should error because it's being passed down to JSX, although it's been referenced once
|
||||
// in an effect
|
||||
function MyComponent({ theme }) {
|
||||
const onClick = useEffectEvent(() => {
|
||||
showNotification(them);
|
||||
});
|
||||
useEffect(() => {
|
||||
setTimeout(onClick, 100);
|
||||
});
|
||||
return <Child onClick={onClick} />
|
||||
}
|
||||
`,
|
||||
errors: [useEffectEventError('onClick')],
|
||||
},
|
||||
];
|
||||
|
||||
function conditionalError(hook, hasPreviousFinalizer = false) {
|
||||
return {
|
||||
@@ -1623,16 +1624,16 @@ describe('rules-of-hooks/rules-of-hooks', () => {
|
||||
tests
|
||||
);
|
||||
|
||||
new ESLintTesterV9({
|
||||
languageOptions: {
|
||||
...languageOptionsV9,
|
||||
parser: require('@typescript-eslint/parser-v3'),
|
||||
},
|
||||
}).run(
|
||||
'eslint: v9, parser: @typescript-eslint/parser@3.x',
|
||||
ReactHooksESLintRule,
|
||||
tests
|
||||
);
|
||||
// new ESLintTesterV9({
|
||||
// languageOptions: {
|
||||
// ...languageOptionsV9,
|
||||
// parser: require('@typescript-eslint/parser-v3'),
|
||||
// },
|
||||
// }).run(
|
||||
// 'eslint: v9, parser: @typescript-eslint/parser@3.x',
|
||||
// ReactHooksESLintRule,
|
||||
// tests
|
||||
// );
|
||||
|
||||
new ESLintTesterV7({
|
||||
parser: require.resolve('@typescript-eslint/parser-v4'),
|
||||
|
||||
@@ -6,10 +6,16 @@
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
presets: ['@babel/preset-env', '@babel/preset-typescript'],
|
||||
presets: [
|
||||
['@babel/preset-env', {targets: {esmodules: false, node: 'current'}}],
|
||||
'@babel/preset-typescript',
|
||||
],
|
||||
plugins: [
|
||||
'@babel/plugin-syntax-jsx',
|
||||
'@babel/plugin-transform-flow-strip-types',
|
||||
['@babel/plugin-proposal-class-properties', {loose: true}],
|
||||
'@babel/plugin-transform-classes',
|
||||
['@babel/plugin-transform-private-property-in-object', {loose: true}],
|
||||
['@babel/plugin-transform-class-properties', {loose: true}],
|
||||
['@babel/plugin-transform-private-methods', {loose: true}],
|
||||
],
|
||||
};
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
/** @type {import('jest').Config} */
|
||||
const config = {
|
||||
transform: {
|
||||
'\\.[jt]sx?$': [
|
||||
'babel-jest',
|
||||
{configFile: require.resolve('./babel.config.js')},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
@@ -62,6 +62,7 @@
|
||||
"@types/estree-jsx": "^1.0.5",
|
||||
"@types/node": "^20.2.5",
|
||||
"babel-eslint": "^10.0.3",
|
||||
"babel-jest": "^29.7.0",
|
||||
"eslint-v7": "npm:eslint@^7.7.0",
|
||||
"eslint-v8": "npm:eslint@^8.57.1",
|
||||
"eslint-v9": "npm:eslint@^9.0.0",
|
||||
|
||||
+123
-1
@@ -2541,6 +2541,13 @@
|
||||
dependencies:
|
||||
"@sinclair/typebox" "^0.25.16"
|
||||
|
||||
"@jest/schemas@^29.6.3":
|
||||
version "29.6.3"
|
||||
resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
|
||||
integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
|
||||
dependencies:
|
||||
"@sinclair/typebox" "^0.27.8"
|
||||
|
||||
"@jest/source-map@^28.1.2":
|
||||
version "28.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24"
|
||||
@@ -2691,6 +2698,27 @@
|
||||
slash "^3.0.0"
|
||||
write-file-atomic "^4.0.2"
|
||||
|
||||
"@jest/transform@^29.7.0":
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c"
|
||||
integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
|
||||
dependencies:
|
||||
"@babel/core" "^7.11.6"
|
||||
"@jest/types" "^29.6.3"
|
||||
"@jridgewell/trace-mapping" "^0.3.18"
|
||||
babel-plugin-istanbul "^6.1.1"
|
||||
chalk "^4.0.0"
|
||||
convert-source-map "^2.0.0"
|
||||
fast-json-stable-stringify "^2.1.0"
|
||||
graceful-fs "^4.2.9"
|
||||
jest-haste-map "^29.7.0"
|
||||
jest-regex-util "^29.6.3"
|
||||
jest-util "^29.7.0"
|
||||
micromatch "^4.0.4"
|
||||
pirates "^4.0.4"
|
||||
slash "^3.0.0"
|
||||
write-file-atomic "^4.0.2"
|
||||
|
||||
"@jest/types@^24.9.0":
|
||||
version "24.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
|
||||
@@ -2736,6 +2764,18 @@
|
||||
"@types/yargs" "^17.0.8"
|
||||
chalk "^4.0.0"
|
||||
|
||||
"@jest/types@^29.6.3":
|
||||
version "29.6.3"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
|
||||
integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
|
||||
dependencies:
|
||||
"@jest/schemas" "^29.6.3"
|
||||
"@types/istanbul-lib-coverage" "^2.0.0"
|
||||
"@types/istanbul-reports" "^3.0.0"
|
||||
"@types/node" "*"
|
||||
"@types/yargs" "^17.0.8"
|
||||
chalk "^4.0.0"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.2":
|
||||
version "0.3.8"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
|
||||
@@ -2803,7 +2843,7 @@
|
||||
"@jridgewell/resolve-uri" "3.1.0"
|
||||
"@jridgewell/sourcemap-codec" "1.4.14"
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
|
||||
"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
|
||||
version "0.3.25"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
|
||||
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
|
||||
@@ -2976,6 +3016,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718"
|
||||
integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==
|
||||
|
||||
"@sinclair/typebox@^0.27.8":
|
||||
version "0.27.8"
|
||||
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
|
||||
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
|
||||
|
||||
"@sinonjs/commons@^1.7.0":
|
||||
version "1.8.3"
|
||||
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
|
||||
@@ -4033,6 +4078,19 @@ babel-jest@^29.5.0:
|
||||
graceful-fs "^4.2.9"
|
||||
slash "^3.0.0"
|
||||
|
||||
babel-jest@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
|
||||
integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
|
||||
dependencies:
|
||||
"@jest/transform" "^29.7.0"
|
||||
"@types/babel__core" "^7.1.14"
|
||||
babel-plugin-istanbul "^6.1.1"
|
||||
babel-preset-jest "^29.6.3"
|
||||
chalk "^4.0.0"
|
||||
graceful-fs "^4.2.9"
|
||||
slash "^3.0.0"
|
||||
|
||||
babel-plugin-dynamic-import-node@^2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
|
||||
@@ -4114,6 +4172,16 @@ babel-plugin-jest-hoist@^29.5.0:
|
||||
"@types/babel__core" "^7.1.14"
|
||||
"@types/babel__traverse" "^7.0.6"
|
||||
|
||||
babel-plugin-jest-hoist@^29.6.3:
|
||||
version "29.6.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626"
|
||||
integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
|
||||
dependencies:
|
||||
"@babel/template" "^7.3.3"
|
||||
"@babel/types" "^7.3.3"
|
||||
"@types/babel__core" "^7.1.14"
|
||||
"@types/babel__traverse" "^7.0.6"
|
||||
|
||||
babel-plugin-polyfill-corejs2@^0.4.3:
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.3.tgz#75044d90ba5043a5fb559ac98496f62f3eb668fd"
|
||||
@@ -4187,6 +4255,14 @@ babel-preset-jest@^29.5.0:
|
||||
babel-plugin-jest-hoist "^29.5.0"
|
||||
babel-preset-current-node-syntax "^1.0.0"
|
||||
|
||||
babel-preset-jest@^29.6.3:
|
||||
version "29.6.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c"
|
||||
integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
|
||||
dependencies:
|
||||
babel-plugin-jest-hoist "^29.6.3"
|
||||
babel-preset-current-node-syntax "^1.0.0"
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
@@ -6691,6 +6767,25 @@ jest-haste-map@^29.5.0:
|
||||
optionalDependencies:
|
||||
fsevents "^2.3.2"
|
||||
|
||||
jest-haste-map@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104"
|
||||
integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==
|
||||
dependencies:
|
||||
"@jest/types" "^29.6.3"
|
||||
"@types/graceful-fs" "^4.1.3"
|
||||
"@types/node" "*"
|
||||
anymatch "^3.0.3"
|
||||
fb-watchman "^2.0.0"
|
||||
graceful-fs "^4.2.9"
|
||||
jest-regex-util "^29.6.3"
|
||||
jest-util "^29.7.0"
|
||||
jest-worker "^29.7.0"
|
||||
micromatch "^4.0.4"
|
||||
walker "^1.0.8"
|
||||
optionalDependencies:
|
||||
fsevents "^2.3.2"
|
||||
|
||||
jest-leak-detector@^28.1.3:
|
||||
version "28.1.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d"
|
||||
@@ -6835,6 +6930,11 @@ jest-regex-util@^29.4.3:
|
||||
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8"
|
||||
integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==
|
||||
|
||||
jest-regex-util@^29.6.3:
|
||||
version "29.6.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
|
||||
integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
|
||||
|
||||
jest-resolve-dependencies@^28.1.3:
|
||||
version "28.1.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66"
|
||||
@@ -7193,6 +7293,18 @@ jest-util@^29.5.0:
|
||||
graceful-fs "^4.2.9"
|
||||
picomatch "^2.2.3"
|
||||
|
||||
jest-util@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc"
|
||||
integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
|
||||
dependencies:
|
||||
"@jest/types" "^29.6.3"
|
||||
"@types/node" "*"
|
||||
chalk "^4.0.0"
|
||||
ci-info "^3.2.0"
|
||||
graceful-fs "^4.2.9"
|
||||
picomatch "^2.2.3"
|
||||
|
||||
jest-validate@^28.1.3:
|
||||
version "28.1.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df"
|
||||
@@ -7299,6 +7411,16 @@ jest-worker@^29.5.0:
|
||||
merge-stream "^2.0.0"
|
||||
supports-color "^8.0.0"
|
||||
|
||||
jest-worker@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
|
||||
integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
jest-util "^29.7.0"
|
||||
merge-stream "^2.0.0"
|
||||
supports-color "^8.0.0"
|
||||
|
||||
jest@^28.1.3:
|
||||
version "28.1.3"
|
||||
resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b"
|
||||
|
||||
Reference in New Issue
Block a user