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"