diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 7151330e720d..7659014655ba 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -385,7 +385,7 @@ module.exports = {
parserOptions: {
sourceType: 'module',
},
- plugins: ['import', 'jsdoc'],
+ plugins: ['import', 'jsdoc', 'unicorn'],
rules: {
'accessor-pairs': ['warn', {setWithoutGet: true}],
'block-scoped-var': 'off',
@@ -590,6 +590,8 @@ module.exports = {
'wrap-iife': 'off',
'wrap-regex': 'off',
yoda: 'off',
+
+ 'unicorn/template-indent': 'error',
},
settings: {
'import/ignore': ['react-native'],
diff --git a/docs/Configuration.md b/docs/Configuration.md
index acb52e2746a7..4a95c468b3f5 100644
--- a/docs/Configuration.md
+++ b/docs/Configuration.md
@@ -1739,14 +1739,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/docs/SnapshotTesting.md b/docs/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/docs/SnapshotTesting.md
+++ b/docs/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/e2e/resolve/__tests__/resolve.test.js b/e2e/resolve/__tests__/resolve.test.js
index 7e6297a631c0..ec03a86fa673 100644
--- a/e2e/resolve/__tests__/resolve.test.js
+++ b/e2e/resolve/__tests__/resolve.test.js
@@ -112,7 +112,7 @@ test('should throw module not found error if the module has dependencies that ca
requiresUnexistingModule.js
Test7.js
__tests__/resolve.test.js\n
- `,
+ `,
}),
);
});
diff --git a/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js b/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js
index 56938c7b28bd..3763d9914bcf 100644
--- a/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js
+++ b/e2e/snapshot-formatting-changes/__tests__/snapshot.test.js
@@ -13,14 +13,14 @@ describe('snapshot serializer', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
- {
- "hello": "Danger",
- },
- ],
-}
-`);
+ {
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
it('uses 8 chars for indent, and shows no prototypes for object and array in a snapshot', () => {
diff --git a/package.json b/package.json
index 0754a8516b56..9ed8d76b57cf 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
"eslint-plugin-local": "link:./.eslintplugin",
"eslint-plugin-markdown": "^3.0.0",
"eslint-plugin-prettier": "^4.0.0",
+ "eslint-plugin-unicorn": "^46.0.0",
"execa": "^5.0.0",
"find-process": "^1.4.1",
"glob": "^10.0.0",
diff --git a/packages/jest-circus/src/utils.ts b/packages/jest-circus/src/utils.ts
index fa45f4fbb744..931f28adb64d 100644
--- a/packages/jest-circus/src/utils.ts
+++ b/packages/jest-circus/src/utils.ts
@@ -236,9 +236,9 @@ export const callAsyncCircusFn = (
Promise.resolve().then(() => {
if (returnedValue !== undefined) {
asyncError.message = dedent`
- Test functions cannot both take a 'done' callback and return something. Either use a 'done' callback, or return a promise.
- Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
- `;
+ Test functions cannot both take a 'done' callback and return something. Either use a 'done' callback, or return a promise.
+ Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
+ `;
return reject(asyncError);
}
@@ -289,9 +289,9 @@ export const callAsyncCircusFn = (
reject(
new Error(
dedent`
- test functions can only return Promise or undefined.
- Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
- `,
+ test functions can only return Promise or undefined.
+ Returned value: ${prettyFormat(returnedValue, {maxDepth: 3})}
+ `,
),
);
return;
diff --git a/scripts/verifyPnP.mjs b/scripts/verifyPnP.mjs
index 6ee16cc3db03..31ace2088a11 100644
--- a/scripts/verifyPnP.mjs
+++ b/scripts/verifyPnP.mjs
@@ -52,21 +52,21 @@ try {
fs.writeFileSync(
path.join(cwd, 'jsdom.test.js'),
dedent`
- /*
- * @jest-environment jsdom
- */
+ /*
+ * @jest-environment jsdom
+ */
- test('dummy', () => {
- expect(window).toBeDefined();
- });
+ test('dummy', () => {
+ expect(window).toBeDefined();
+ });
`,
);
fs.writeFileSync(
path.join(cwd, 'node.test.js'),
dedent`
- test('dummy', () => {
- expect(typeof window).toBe('undefined');
- });
+ test('dummy', () => {
+ expect(typeof window).toBe('undefined');
+ });
`,
);
execa.sync('yarn', ['link', '--private', '--all', rootDirectory], {
diff --git a/website/versioned_docs/version-29.4/Configuration.md b/website/versioned_docs/version-29.4/Configuration.md
index eee704668bda..74387886377f 100644
--- a/website/versioned_docs/version-29.4/Configuration.md
+++ b/website/versioned_docs/version-29.4/Configuration.md
@@ -1668,14 +1668,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.4/SnapshotTesting.md b/website/versioned_docs/version-29.4/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.4/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.4/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/website/versioned_docs/version-29.5/Configuration.md b/website/versioned_docs/version-29.5/Configuration.md
index fcd772627605..632fe800cd5a 100644
--- a/website/versioned_docs/version-29.5/Configuration.md
+++ b/website/versioned_docs/version-29.5/Configuration.md
@@ -1703,14 +1703,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.5/SnapshotTesting.md b/website/versioned_docs/version-29.5/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.5/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.5/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/website/versioned_docs/version-29.6/Configuration.md b/website/versioned_docs/version-29.6/Configuration.md
index acb52e2746a7..4a95c468b3f5 100644
--- a/website/versioned_docs/version-29.6/Configuration.md
+++ b/website/versioned_docs/version-29.6/Configuration.md
@@ -1739,14 +1739,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.6/SnapshotTesting.md b/website/versioned_docs/version-29.6/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.6/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.6/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/website/versioned_docs/version-29.7/Configuration.md b/website/versioned_docs/version-29.7/Configuration.md
index acb52e2746a7..4a95c468b3f5 100644
--- a/website/versioned_docs/version-29.7/Configuration.md
+++ b/website/versioned_docs/version-29.7/Configuration.md
@@ -1739,14 +1739,14 @@ test('does not show prototypes for object and array inline', () => {
array: [{hello: 'Danger'}],
};
expect(object).toMatchInlineSnapshot(`
-{
- "array": [
{
- "hello": "Danger",
- },
- ],
-}
- `);
+ "array": [
+ {
+ "hello": "Danger",
+ },
+ ],
+ }
+ `);
});
```
diff --git a/website/versioned_docs/version-29.7/SnapshotTesting.md b/website/versioned_docs/version-29.7/SnapshotTesting.md
index 3a58dbc0a347..c21da98103a7 100644
--- a/website/versioned_docs/version-29.7/SnapshotTesting.md
+++ b/website/versioned_docs/version-29.7/SnapshotTesting.md
@@ -127,15 +127,15 @@ it('renders correctly', () => {
.create(Example Site)
.toJSON();
expect(tree).toMatchInlineSnapshot(`
-
- Example Site
-
-`);
+
+ Example Site
+
+ `);
});
```
diff --git a/yarn.lock b/yarn.lock
index 789ffa949202..dbb9374ca8d0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -544,10 +544,10 @@ __metadata:
languageName: node
linkType: hard
-"@babel/helper-validator-identifier@npm:^7.22.5":
- version: 7.22.5
- resolution: "@babel/helper-validator-identifier@npm:7.22.5"
- checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea
+"@babel/helper-validator-identifier@npm:^7.19.1, @babel/helper-validator-identifier@npm:^7.22.5":
+ version: 7.22.15
+ resolution: "@babel/helper-validator-identifier@npm:7.22.15"
+ checksum: eb0bee4bda664c0959924bc1ad5611eacfce806f46612202dd164fef1df8fef1a11682a1e7615288987100e9fb304982b6e2a4ff07ffe842ab8765b95ed1118c
languageName: node
linkType: hard
@@ -2632,7 +2632,7 @@ __metadata:
languageName: node
linkType: hard
-"@eslint-community/eslint-utils@npm:^4.2.0":
+"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0":
version: 4.4.0
resolution: "@eslint-community/eslint-utils@npm:4.4.0"
dependencies:
@@ -2961,6 +2961,7 @@ __metadata:
eslint-plugin-local: "link:./.eslintplugin"
eslint-plugin-markdown: ^3.0.0
eslint-plugin-prettier: ^4.0.0
+ eslint-plugin-unicorn: ^46.0.0
execa: ^5.0.0
find-process: ^1.4.1
glob: ^10.0.0
@@ -7270,6 +7271,15 @@ __metadata:
languageName: node
linkType: hard
+"clean-regexp@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "clean-regexp@npm:1.0.0"
+ dependencies:
+ escape-string-regexp: ^1.0.5
+ checksum: 0b1ce281b07da2463c6882ea2e8409119b6cabbd9f687cdbdcee942c45b2b9049a2084f7b5f228c63ef9f21e722963ae0bfe56a735dbdbdd92512867625a7e40
+ languageName: node
+ linkType: hard
+
"clean-stack@npm:^2.0.0":
version: 2.2.0
resolution: "clean-stack@npm:2.2.0"
@@ -9338,6 +9348,32 @@ __metadata:
languageName: node
linkType: hard
+"eslint-plugin-unicorn@npm:^46.0.0":
+ version: 46.0.1
+ resolution: "eslint-plugin-unicorn@npm:46.0.1"
+ dependencies:
+ "@babel/helper-validator-identifier": ^7.19.1
+ "@eslint-community/eslint-utils": ^4.1.2
+ ci-info: ^3.6.1
+ clean-regexp: ^1.0.0
+ esquery: ^1.4.0
+ indent-string: ^4.0.0
+ is-builtin-module: ^3.2.0
+ jsesc: ^3.0.2
+ lodash: ^4.17.21
+ pluralize: ^8.0.0
+ read-pkg-up: ^7.0.1
+ regexp-tree: ^0.1.24
+ regjsparser: ^0.9.1
+ safe-regex: ^2.1.1
+ semver: ^7.3.8
+ strip-indent: ^3.0.0
+ peerDependencies:
+ eslint: ">=8.28.0"
+ checksum: 2059aee095a00eedcda8c5407fdb91075549dd468bc26e1e5ca585c0c5c5daf621bc7eaab6159b56ca6d65653705ac139caf8a2a667f777efb425eae6abae61e
+ languageName: node
+ linkType: hard
+
"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1":
version: 5.1.1
resolution: "eslint-scope@npm:5.1.1"
@@ -9433,7 +9469,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.4.2, esquery@npm:^1.5.0":
+"esquery@npm:^1.4.0, esquery@npm:^1.4.2, esquery@npm:^1.5.0":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
dependencies:
@@ -11794,7 +11830,7 @@ __metadata:
languageName: node
linkType: hard
-"is-builtin-module@npm:^3.2.1":
+"is-builtin-module@npm:^3.2.0, is-builtin-module@npm:^3.2.1":
version: 3.2.1
resolution: "is-builtin-module@npm:3.2.1"
dependencies:
@@ -13278,6 +13314,15 @@ __metadata:
languageName: node
linkType: hard
+"jsesc@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "jsesc@npm:3.0.2"
+ bin:
+ jsesc: bin/jsesc
+ checksum: a36d3ca40574a974d9c2063bf68c2b6141c20da8f2a36bd3279fc802563f35f0527a6c828801295bdfb2803952cf2cf387786c2c90ed564f88d5782475abfe3c
+ languageName: node
+ linkType: hard
+
"jsesc@npm:~0.5.0":
version: 0.5.0
resolution: "jsesc@npm:0.5.0"
@@ -16601,6 +16646,13 @@ __metadata:
languageName: node
linkType: hard
+"pluralize@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "pluralize@npm:8.0.0"
+ checksum: 08931d4a6a4a5561a7f94f67a31c17e6632cb21e459ab3ff4f6f629d9a822984cf8afef2311d2005fbea5d7ef26016ebb090db008e2d8bce39d0a9a9d218736e
+ languageName: node
+ linkType: hard
+
"postcss-calc@npm:^8.2.3":
version: 8.2.4
resolution: "postcss-calc@npm:8.2.4"
@@ -18018,6 +18070,15 @@ __metadata:
languageName: node
linkType: hard
+"regexp-tree@npm:^0.1.24, regexp-tree@npm:~0.1.1":
+ version: 0.1.27
+ resolution: "regexp-tree@npm:0.1.27"
+ bin:
+ regexp-tree: bin/regexp-tree
+ checksum: 129aebb34dae22d6694ab2ac328be3f99105143737528ab072ef624d599afecbcfae1f5c96a166fa9e5f64fa1ecf30b411c4691e7924c3e11bbaf1712c260c54
+ languageName: node
+ linkType: hard
+
"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0":
version: 1.5.0
resolution: "regexp.prototype.flags@npm:1.5.0"
@@ -18510,6 +18571,15 @@ __metadata:
languageName: node
linkType: hard
+"safe-regex@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "safe-regex@npm:2.1.1"
+ dependencies:
+ regexp-tree: ~0.1.1
+ checksum: 5d734e2193c63ef0cb00f60c0244e0f8a30ecb31923633cd34636808d6a7c4c206d650017953ae1db8bc33967c2f06af33488dea6f038f4e38212beb7bed77b4
+ languageName: node
+ linkType: hard
+
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"